C/C++‎ > ‎

簡介&安裝

2012/10/26 謝碧景(c)編製更新 

 學習目標

  • 瞭解何謂程式語言、程式語言的種類、為何要學程式設計。
  • 學會Dev-C++ 軟體之下載與安裝、如何中文化、及如何預設程式碼與顯示行號。

一、C / C++ 語言歷史

(一)電腦能處利不同的問題,需依靠電腦軟體來達成,而電腦軟體的開發須使用電腦能接受與理解的語言即程式語言,程式語言為有順序的指令來處理資料,此指令稱為程式碼。

(二)程式語言的種類:
  • 一般用途:Java、C、C++、(Visual)Basic
  • 工程、計算用途:Fortran
  • 商業用途:COBOL
  • 統計用途:SAS、SPSS
  • 人工智慧:PROLOG、LISP
  • 全球資訊網:JAVA Scrpit、Perl、PHP
(三)程式語言是程式設計師與電腦溝通的管道:

C++ 語言 是最常使用的程式語言之一,目前許多系統及應用軟體都是使用C++ 語言撰寫。C語言是貝爾實驗室的Dennis Ritchie 及Ken Thompson在1972年設計UNIX系統時發展出來的,其兼具高階語言與低階語言特色,可為高階電腦應用及低階控制電腦基本功能;後來Bjamc Stroustrup將物件導向的程式概念加入C 語言 中,而產生C++ 語言 ,使C++ 融合物件導向及傳統程式設計機制,亦讓程式更易於修改與重複使用。

【圖:C / C++ 語言歷史與影響】 

*註:美國  TIOBE 針對程式語言的調查。

(四)為何要學程式設計:
  • 培養問題解決與邏輯思考能力,1974年Gries指出程式課程讓學生可在以實做問題解決過程,;美國電腦科學教師協會(CSTA)於2005提出,程式設計著重在分析與設計的過程,藉此培養學生問題解決與演算法式思考的能力。
  • 對將來的知識與生涯發展會有幫助:藉此培養對軟體的基本認識,對程式有直覺性的瞭解,進而有能力自行使用不同軟體。
  • 初學者的其他選擇:Alice(2000)、Scratch(2007)...

二、C++ 語言的特色

(一)移植性高:在不同作業系統上開發程式,程式碼需編譯後執行,C++程式幾乎不需變更,其前端處理器即可解決此問題,沒有作業系統限制的程式語言,程式碼可攜性很高的程式語言。

(二)強大類別庫:C++內建函式庫及類別庫,可供基本及進階程式設計功能上的需求。

(三)結構化:大程式由許多小程式(模組 )組合而成,可模組化,設計者除可使用系統提供的標準函式庫外,亦可自定函式或模組,使用者可在標頭檔引入即可應用。

(四)空間及速度最佳化:原始程式經編譯後佔主記憶體空間小且執行速度快 ,且兼具高低階語言能力。


三、程式語言的編譯

電腦認識的語言為『機器碼』,而機器碼是由許多的『0』與『1』數字所組成(即二進位),故人類撰寫 C++、BASIC等程式語言需藉由編譯器(Compiler)將程式語言翻譯成機器碼,後即可在電腦上執行。若要將程式語言使用在不同平台上,只要使用該平台上的編譯器重新編譯,程式碼即可在不同平台的電腦中執行,非常方便。 如下圖示,編譯程式流程圖。

 


四、C++ 開發環境的安裝

Windows 環境內可使用以下的C/C++語言編輯/編譯軟體進行程式編譯:Turbo C、Dev-C++、Vistual C++、Code::Blocks,本單元課程範例採 Dev-C++

(一)安裝C++整合開發環境軟體

目前常用的軟體為:Dev-C++及Visual C++,皆功能強大且軟體免費,Dev-C++功能雖比不上Visual C++強大,但其系統檔案非常小(9MB),佔用資源很少,且支援中文,各種整合功能俱全、操作亦簡易。Dev-C++是Windows 作業系統下一個免費、開放原始碼並且容易上手的 C/C++ 整合型開發環境(IDE),有多國語言的使用介面。
  • Win7 以上,請下載Dev-C++ → http://orwelldevcpp.blogspot.tw/
  • 若有舊版本的 Dev-C++存在,將無法安裝,故須先移除舊版本,才能安裝新版本。安裝過程中先以英文版本安裝,安裝完成後再改為中文化,即可使用。

Visual C++ 2010 Express→http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express#webinstall

(二)開發程式需不斷的編輯程式(撰寫)、編譯程式、修改程式、重新編譯、執行程式、觀察執行結果,直到結果符合需求,其流程步驟如下:


五、C++程式基本架構

程式之執行是由 main() 函式(主程式)開始執行,main()函式區塊中的程式碼一列一列依序向下執行;函式中的程式碼需包含在一對大括號之中,即函式是以『{』開始,『}』結束。程式的所有敘述,請用『小寫』英文字母編寫,且敘述最後加分號表示敘述結束。例如 a=a+b;  

 #include <iostream>                     //標準輸出輸入函式,標頭檔之引用
 using namespace std;                    //以using指令宣告要使用的命名空間為std
 int main()                                    //主程式
 {

 
    return 0;                                   
//回傳整數值0給作業系統  
 }

說明:

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)                單列註解:     // 註解

                                          多列註解:     /* 註解一
                                                               
註解二 */

六、結構化程式設計

(一)結構化程式不允許無條件任意跳躍指令。

(二)程式執行流程,只允許三種邏輯結構:循序、選擇和重複。

(三)程式執行流程由上而下執行。

(四)可將特定功能設計為函式,函式可被重複使用。

(五)程式檢測系統時可縮小範圍至函式(函數)範圍進行檢測與維護。

七、中文化

執行【工具(Tools)→環境選項(Environment Options)→一般(General)→語言(Language:)Chinese(TW)→確定】功能列即可中文化。



八、Dev-C++整合環境各區域功能圖

版本 Dev-C++5.11 顯示如下
 版本 devcpp-4.9.9.2 顯示如下

(一)建立『預設程式碼:在Dev-C++中執行【工具→編輯器選項→插入程式碼→預設程式碼】,在對話方塊中輸入基本架構程式碼,後按【確定】鈕完成設定。

  版本 Dev-C++5.8.3 顯示如下:
  版本 devcpp-4.9.9.2 顯示如下:


(二)程式顯示行號:有行號可協助除錯,在Dev-C++中執行【工具→編輯器選項→顯示】,在對話方塊中勾選【顯示行號】,後按【確定】鈕完成設定。


 → 版本 devcpp-4.9.9.2 顯示如下:


十、編輯程式時常用按鍵 (Dev-C++5.8.3)

功能說明

按鍵

功能說明

按鍵

刪除整列

Ctrl+D

編譯

F9

復原

Ctrl+Z

執行

F10

重做

Ctrl+Y

編譯並執行

F11

複製

Ctrl+C

存檔

Ctrl+S

貼上

Ctrl+V

另存新檔

Ctrl+Alt+S


十一、標準函式庫

標準函式庫:含 C:\Dev-Cpp\include 資料夾中『*.h』之文字式標頭檔,及編譯過的二進位檔案『*.a』在編輯編譯軟體指定的lib目錄內。引用系統提供的標準函式庫,以<> 符號方式加入標準函式庫名稱;而引用自訂函式庫,以雙引號方式" " 加入自訂函式庫的位置與名稱。
    • 標準輸出輸入函數      <stdio.h>
    • 工具函數                <stdlib.h>
    • 字元檢查函數           <ctype.h>
    • 字串函數                <string.h>
    • 數學函數                <math.h>
    • 日期/時間函數          <time.h>