[C++, CPP 教學 教程 教材 Tutorial] 基本程式架構 - 程式架構(Program Architecture)
YehYeh\'s Notepad yehyeh@gmail.com 

[C++, CPP] 基本程式架構

程式架構(Program Architecture)

  • 程式架構
  • 語法單元(token)
    • 獨立不可分割的元素
        1. int
        2. main
        3. (
        4. )
        5. cout
        6. return
      • 語法單元是編譯器剖析(Parsing)時的基本單位,通常可以空格、Tab、換行格開
    • 有些Token不可用空格格開
      • #include<iostream>
        
        #include<iostream> ,有#include、<、iostream、>等4個Token
        <iostream>中間不可以有任何間格。
    • Token是由編譯器決定
      • 大部份編譯器會把<iostream>當作3個Token,而有些會當作1個Token,這和編譯器的實作有關
      • 程式設計師只要注意不要在<iostream>中間插入分隔字元即可
  • 註解:說明文字,不會被執行
    • //:單行註解
    • /* */:多行註解
  • 前置處理指令
    • 載入指定的標頭檔
  • 名稱空間指令:告訴編譯器本程式檔中使用的cout物件是屬於std名稱空間。
    • 範例的寫法是一個物件一個物件指定其名稱空間
    • 也可將2行名稱空間指令寫成using namespace std;表示使用std名稱空間內的全部物件。
    • 也可以不寫名稱空間指令,每次使用物件時注明名稱空間
    • std::cout << "Hello " << std::endl << "C++";
      
  • 函式(function)函式是被設計有特定功能的程式區塊
    • 第一行的main是函式名稱,main函式是起始函式,即程式會由main函式開始執行
    • 一個程式只能有一個main函式
    函式
  • 敘述(Statstrongent)
    • 主要的程式碼稱作敘述,像範例中有3行敘述
    • 只有以分號;結尾的程式碼才叫敘述
  • 敘述區塊(Statstrongent Block)
    • 被大括號框住的程式碼通常稱為區塊或敘述區塊
  • 回傳值
    • 關鍵字return後面接的值
    • 回傳值會傳回給呼叫函式的地方
    • main( )函式是由作業系統所呼叫,所以程式最後傳回0告訴作業系統已成功執行完程式。
    • 當函式回傳值給呼叫者(Calling Function)後,便不再繼續執行,即使後面還有敘述,都不會被執行到。
  • 字元字串(Character String)
    • 以雙引號"括住的字
    • 又叫做訊息(message)字串字面(String Literal)字串字面值
    • Hello World!!!"
  • 左值(lvalue)
    • 放在運算子左邊的變數稱為左值
    • 如果放在等號左邊,會牽涉到記憶體的變動
  • 右值(rvalue)
    • 放在運算子右邊的值
  • <<串流插入運算子(StreamInsertion Operator),將右值插入到輸出串流中。
    • std::cout串流輸出物件,cout物件是ostream類別的實體。
      • 在螢幕上顯示Hello
        cout <<  "Hello";
        
    • std::cin串流輸入物件,cin物件是istream類別的實體。
      • 由鍵盤輸入數值,並存到整數變數int中
        int  num1=0;
        cin >> num1;
        
    • std::endl串流操作子(Stream Manipulator),換行後將輸出緩衝區(Output Buffer)的資料輸出。
      • 在螢幕上顯示Hello,並換行
        cout <<  "Hello" << endl;
        
    • std::setw( )串流操作子(Stream Manipulator),控制下一個輸出的欄位寬度。
      • 在螢幕上顯示寬度為10個字元的Hello
        cout << '[' <<setw(10) << "Hello" << ']';
        
      • 因為H、e、l、l、o有5個字元,所以前面會再插入5個空白,所以輸出[     Hello]

串流操作子說明

  • 可以想像cout代表螢幕字元字串"Hello"代表資料<<代表資料流動的方向
  • 看起來就變: 螢幕 ⇐ 資料,即把資料送給螢幕
  • 資料是可以串接的: 螢幕 ⇐ 資料1 + endl + 資料2