簡介&安裝
2012/10/26 謝碧景(c)編製更新
學習目標
一、C / C++ 語言歷史
(一)發展歷史
電腦能透過電腦軟體處理不同的問題,而電腦軟體的開發是使用電腦能接受與理解的語言即程式語言,程式語言為有順序的指令處理資料,此指令稱為程式碼。
(二)程式語言的種類
一般用途:Java、C、C++、(Visual)Basic
工程、計算用途:Fortran
商業用途:COBOL
統計用途:SAS、SPSS
人工智慧:PROLOG、LISP
全球資訊網:JAVA Scrpit、Perl、PHP
(三)程式語言是程式設計師與電腦溝通的管道
C++ 語言是以C語言為基礎發展的物件導向程式語言OOP(object-oriented programming)。C語言是貝爾實驗室的Dennis Ritchie 及Ken Thompson在1972年設計UNIX系統時發展出來的,其兼具高階語言與低階語言特色,可為高階電腦應用及低階控制電腦基本功能;後來Bjamc Stroustrup將物件導向的程式概念加入C 語言中,而產生C++ 語言 ,使C++ 融合物件導向及傳統程式設計機制,亦讓程式更易於修改與重複使用。
(四)為何要學程式設計
培養問題解決與邏輯思考能力,1974年Gries指出程式課程讓學生在操作過程中解決問題,美國電腦科學教師協會(CSTA)於2005提出,程式設計著重在分析與設計的過程,藉此培養學生問題解決與演算法式思考的能力。
對將來的知識與生涯發展會有幫助:藉此培養對軟體的基本認識,對程式有直覺性的瞭解,進而有能力自行使用不同軟體。
二、C++ 語言的特色
(一)移植性高
在不同作業系統上開發程式,程式碼需編譯後執行,C++程式幾乎不需變更,其前端處理器即可解決此問題,沒有作業系統限制的程式語言,程式碼可攜性很高的程式語言。
(二)強大類別庫
C++內建函式庫及類別庫,可供基本及進階程式設計功能上的需求。C/C++可發展作業系統、網路程式、應用軟體、手機軟體、遊戲軟體、嵌入式系統、單晶片程式等。
(三)結構化
大程式由許多小程式(模組 )組合而成,可模組化,設計者除可使用系統提供的標準函式庫外,亦可自定函式或模組,使用者可在標頭檔引入即可應用。
(四)是多種程式語言的母語
原始程式經編譯後佔主記憶體空間小且執行速度快 ,C#(C sharp)、JAVA、Python、PHP、JavaScript、Perl等語言皆由C開發,故學會C/C++,再學習其他程式語言就更容易。
三、程式的編譯與直譯
電腦硬體僅認識『機器語言』(Machine Language)即機器碼(machine code),而機器碼是由許多的『0』與『1』數字所組成(即二進位),因此科學家開發『組合語言』(Assembly Language)使用簡單英文指令取代0與1。之後開發更接近人類語言的『高階語言』(High Level Language),讓程式開發速度大幅提升。如下圖:利用三種語言表示加法指令。
人類撰寫 C++、BASIC等程式語言需藉由編譯器(Compiler)將程式語言翻譯成機器碼,後即可在電腦上執行。若要將程式語言使用在不同平台上,只要使用該平台上的編譯器重新編譯,程式碼即可在不同平台的電腦中執行,非常方便。 如下圖示,編譯程式流程圖。
*註:電腦語言分高階語言、中階語言、低階語言,而機器語言屬低階語言,低階語言執行效率最快,C/C++可直接存取電腦的記憶體、CPU儲存器等硬體資源,屬中階語言,預設附檔名為『.cpp』。
直譯語言不需編譯即可執行高階語言,它透過直譯器(Interpreter)將程式碼一行一行即時轉換成機器語言執行,雖在修改程式碼後不需編譯,但每次一行一行直譯為機器語言執行,導致執行效率比事先編譯過的程式差。如:Python 為直譯語言(官網 https://www.python.org/),預設附檔名為『.py』。
四、C++ 開發環境的安裝
Windows 環境內可使用以下的C/C++語言編輯/編譯軟體進行程式編譯:Turbo C、Dev-C++、Vistual C++、Code::Blocks,本單元課程範例採 Dev-C++
編輯軟體:
(一)安裝 C++ 整合開發環境 (IDE)工具
目前常用的軟體為:Dev-C++及Visual C++,皆功能強大且軟體免費,Dev-C++功能雖比不上Visual C++強大,但其系統檔案非常小(9MB),佔用資源很少,且支援中文,各種整合功能俱全、操作亦簡易。Dev-C++是Windows 作業系統下一個免費、開放原始碼並且容易上手的 C/C++ 整合型開發環境 IDE ( integrated development environment),有多國語言的使用介面。
Code::Blocks 適用平台:Windows/Linux/Mac OS。
Dev-C++ 適用平台:Windows【win7 以上安裝<Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe (約49 MB】或 教學影片
Win7 以上,請下載Dev-C++ → http://orwelldevcpp.blogspot.tw/
若有舊版本的 Dev-C++存在,將無法安裝,故須先移除舊版本,才能安裝新版本。安裝過程中先以英文版本安裝,安裝完成後再改為中文化,即可使用。
(二)開發程式
需不斷的編撰程式、編譯程式、修改程式、重新編譯、執行程式、觀察執行結果,直到結果符合需求,其流程步驟如下:
五、C++程式基本架構
C++是由許多函數組成,程式之執行是由 main() 主函數(主程式)開始執行,main()主函數區塊內的程式碼一列一列依序向下執行。
main()函式中的程式碼需包含在一對大括號之中,即函數是以『{』開始,『}』結束。
原始碼的檔案副檔名為 .cpp (例如: ex1.cpp),一個程式僅一個main函數,是系統唯一自動呼叫的函數。
程式的所有敘述,請以『小寫』英文字母編輯(大小寫英文字母不同),且敘述最後加分號 ; 表示敘述結束(例如 a=a+b;)。
完整的函數(式)請參閱:C++標準函式庫 http://www.cplusplus.com/reference/
#include <iostream> //標準輸出輸入函式,標頭檔之引用
using namespace std; //以using指令宣告要使用的命名空間為std
int main() //主程式
{
return 0; //程式執行完,傳回整數0給main()函數
}
◆說明:
1.引入前置處理標頭檔 #include <iostream> //引用 C:\Dev-Cpp\include 資料夾中標準函式庫的標頭檔
#include "myfile.h" //自訂函式庫之標頭檔引用
2.命名空間 以using指令宣告要使用的命名空間為std,宣告後程式可使用輸入cin及輸出cout指令
3.主程式 main() 函式 main() 函數的傳回值必需是整數
4.函式模組 float avg() {…}
5.定義常數或公式 #define指引
6.暫停指令 system("PAUSE");
7.根據ISO C 標準,main()函數省略 return 0 敘述,等同傳回0,若省略該敘述,亦需省略 main() 前的 int。
8.註解(Comments) 單列註解: // 註解
多列註解: /* 註解一
註解二 */
預設程式碼
#include <iostream>
using namespace std;
int main()
{
return 0;
}
六、結構化程式設計(Structured Programming)
(一)結構化程式不允許無條件任意跳躍指令。
(二)常見的程式結構:循序結構、選擇結構、重複結構。
循序(Sequence)結構:電腦會依循程式碼的順序,由上而下、依序執行每一行程式碼。
選擇(Selection)結構:電腦會依據「條件」,決定要執行哪一區塊程式碼。
重複(Iteration)結構:電腦重複執行同一程式區塊程式碼,直到滿足停止的條件為止。
七、模組化與函數的概念
模組化:以功能為單位,將一個大程式分割成許多不同功能的小模組(Module),各模組可獨立開發與管理,亦可重複使用與測試,易閱讀與管理,可多人分工或共同開發程式。例如:函數。
函數:分兩種,有傳回值、無傳回值,其差別在於有無傳回結果。編撰程式時,可將特定功能設計為函數,即可重複使用該函數。例如:排序功能。
基本程式設計流程:
宣告變數→2.輸入變數(執行時才指定值)→3.運算、邏輯→4.輸出結果
八、Dev-C++整合環境
(一)各區域功能圖
◆版本 Dev-C++5.11 顯示如下:
◆版本 devcpp-4.9.9.2 顯示如下:
(二)中文化
執行【工具(Tools)→環境選項(Environment Options)→一般(General)→語言(Language:)→Chinese(TW)→確定】功能列即可中文化。
九、 編輯器選項功能
(一)建立『預設程式碼』
在Dev-C++中執行【工具→編輯器選項→插入程式碼→預設程式碼】,在對話方塊中輸入基本架構程式碼,後按【確定】鈕完成設定。
版本 Dev-C++5.8.3 顯示如下:
版本 devcpp-4.9.9.2 顯示如下:
(二)程式碼『顯示行號』
有行號可協助除錯,在Dev-C++中執行【工具→編輯器選項→顯示】,在對話方塊中勾選【顯示行號】,後按【確定】鈕完成設定。
顯示如下:
十、編輯程式時常用按鍵
(Dev-C++5.8.3)
十一、標準函式庫
標準函式庫:含 C:\Dev-Cpp\include 資料夾中『*.h』之文字式標頭檔,及編譯過的二進位檔案『*.a』在編輯編譯軟體指定的lib目錄內。引用系統提供的標準函式庫,以<> 符號方式加入標準函式庫名稱;而引用自訂函式庫,以雙引號方式" " 加入自訂函式庫的位置與名稱。
標準輸出輸入函數 <stdio.h>
工具函數 <stdlib.h>
字元檢查函數 <ctype.h>
字串函數 <string.h>
數學函數 <math.h>
日期/時間函數 <time.h>
*參閱:OpenEdu 中華開放教育平台→運算思維與程式語言 C++ → https://www.openedu.tw/course?id=1556