600 likes | 720 Views
第一章. 程式基本架構. 大綱. 1-1 程式架構 1-2 註解 1-3 識別字及變數 1-4 指定符號 1-5 程式敘述 1-6 資料型態 1-7 資料型態之變數宣告. 1-8 算術運算符號 1-9 型態轉換 1-10 關係運算符號 1-11 邏輯運算符號 1-12 運算符號優先順序 1-13 運算符號範例 習題. 1-1 程式架構. C++ 程式架構包含有三大部分 : (1) 宣告區 ; (2) 主程式區 ; (3) 函數定義區. 1-1-1 宣告區可容納.
E N D
第一章 程式基本架構
大綱 • 1-1 程式架構 • 1-2 註解 • 1-3 識別字及變數 • 1-4 指定符號 • 1-5 程式敘述 • 1-6 資料型態 • 1-7 資料型態之變數宣告 • 1-8 算術運算符號 • 1-9 型態轉換 • 1-10 關係運算符號 • 1-11 邏輯運算符號 • 1-12 運算符號優先順序 • 1-13 運算符號範例 • 習題
1-1 程式架構 • C++程式架構包含有三大部分: (1)宣告區; (2)主程式區; (3)函數定義區
1-1-1宣告區可容納 • 包含檔(或稱引入檔): 如 #include <iostream> • 巨集(Macro)定義: 如 #define PI 3.14159 • 類別(Class)定義: 如 class name { ……}; • 結構(Structure)定義: 如 struct record { ……}; • 函數原型(Function prototype)宣告: 如 void fun( ); • 全域(Global)或整體變數宣告: 如 float G=9.18; • 函數定義(Function definition): 如 int sum(int a,int b) { return a+b;} • 編譯條件指令: 如 #ifdef…
1-1-2 程式頭 • void main( ) 或main(void){ …… } • int main( )或main(char *arc, char *arv) { …… return 0; } ※main( )內小括號內, 因需要會有參數 ※void main( )不需要return 0;
1-1-3 主程式區 • 私有(Local)或區域變數之宣告: 如 int degree=0; • 函數之呼叫(Function call): 如 x = sin(180/3.14159*60); • 運算處理: 如 b = a + b * c / d + 6; • 條件(if)之控制: 如 if (a<n) { c=d;…} • 迴圈(Loop)之敘述: 如for (i=0; i<5; i++) { s+=i; …} • 物件(Object)與結構(Structure)之處理 • 檔案(File)之處理……等等
1-1-4 函數定義區 用於函數定義及寫函數主體: • 如:函數一 void fun1(int a, char ch) { 主體; } • 函數二 int fun2(int a, float r) { 主體; …; return n; }
1-2 註解 C++的註解方式有兩種:◎雙斜線(//)int degree=0; //設定初值為0 ◎斜線星號「/*」起首及星號斜線「*/」結尾/*本程式旨在求攝氏溫度轉為華氏溫度 */ 或 /*這是註解 … … *** */
1-3 識別字(Identifier)及變數 • 程式設計師在程式內自行定義的文字,如:變數(Variable)名稱函數(Function)名稱結構(Structure)名稱類別(Class)名稱
1-3-1 識別字(Identifier) • 識別字命名原則 • 第一字元需為英文字母(a…z,A…Z)或底線符號「_」 • 第二字元以後可為英文字母或數字(0…9)或底線符號「_」 • 保留字(Reserved word)不可作為識別字,但可當識別字之一部份,因保留字在C++中有其特殊意義 • 英文大小寫對識別字之命名是不同的 • 命名時應使識別字有其代表之意義 • 最長最好不得超過32字元
1-3-1 識別字(Identifier) C++之保留字一覽表
1-3-2 變數 • 暫時存放資料的一個符號名稱,宛如數學裏常用x,y代表一些數值,其內容是隨時可以改變。 • 變數佔用電腦記憶體的一部份,大小因資料型態而異。
1-4 指定符號“=” • 變數內容可因需要而改變,而促成其改變之符號稱為指定符號 (Assignment),即「=」。 • x=3在數學上為令x之值為3;在C++上即令 x在記憶體之內容為3。 • x=x+5在數學上為無意義;在C++上之意即把原來x之內容取出來與5相加後之結果8 再放回原來記憶體位置。
1-5 程式敘述(Statement) • 程式之執行步驟係一列一列往下,每一列皆為一敘述,敘述可為變數、函數、結構、類別之宣告、迴圈、條件或算數運算…等;而結束一列敘述之符號則為分號「;」 • x=3; //指定x之內容為3 • x=x+5; //將x之內容取出與5相加後再放回x內 • 敘述可對不同之變數連續設定相同之值 a = b = c = d = 0;//對a,b,c,d等四變數給以初值為0 a = b = c = d++ * 2;//對a,b,c給予d++*2之運算結果
1-5 程式敘述(Statement) • 程式敘述對數學運算式
1-6 資料型態(Data type) • 電腦並不能處理無限制的任何資料 • 在C++內基本上有字元資料整數資料浮點數資料等三種資料型態 • 亦可含布林(Boolean)寬位元(Wide character)型態
1-6-1 字元(Character)資料型態 • 字元(char)是一種文數字資料, 資料範圍為ASCII碼256個。 • 字元資料之表示: 1. 單引號:‘a’, ‘b’, ‘0’… 2. 跳脫序列(Escape sequence) :’\n’... 3. 十六進位(\xdd):‘\xa2’... 4. 八進位(\ddd) :’\211’… 如’A’之內碼為65可以’\x41’之16進位表示或’\101’之八進位表示之。
1-6-1 字元(Character)資料型態 • 跳脫字元之意義
1-6-1 字元(Character)資料型態 • 字串(String)與字元(char): • 字元是字串(String)的組成基本元素 • 字元資料時必須用單引號「‘」 • 字串(String)則須用雙引號「”」 如:“This is a Borland C++ language.”為字串 “蒙娜麗莎的微笑” 為字串 “A”為字串 ‘A’為字元
1-6-2 整數(Integer)資料型態 • 整數資料分:有號(正負號signed)整數無號(無正負號unsigned)整數 • signed及unsigned兩字為保留字 • 有號數整數: short、int、long • 無號數整數: unsigned short 、unsigned int、unsigned long • 在一常數後面加上L或l將使該常數代表long型態long a = 123L; 表123為長整數。 • 加上U或u則代表unsigned型態unsigned int a=123u; 表123為無號數。
1-6-3 浮點數(Floating point)資料型態 • 具有整數及小數點之位數,如234.1234,有下列三種: 1. float(浮點數) 2. double(倍精度) 3. long double(雙倍精度)
1-6-3 浮點數(Floating point)資料型態 • 浮點數常數例 科學記號(Scientific exponent)以e 或E表示
1-6-4 布林型態(Boolean) false=0 true=1
1-7 資料型態之變數宣告 • 宣告格式為:資料型態名稱 變數1,變數2,…;如:int x,y; • 變數宣告範例: • float radius, area;宣告radius(半徑)及area(面積)兩變數為浮點數資料型態 • char ch, alpha, letter;宣告ch, alpha, letter三變數為字元資料型態 • long meter,feet;宣告meter, feet 為長整數資料型態
1-7 資料型態之變數宣告 • 變數之初值 • 變數在宣告之同時亦可設定其初值(Initialization)或常數值(Constants) 。 • 如:int i=1, sum=0;令整數變數 i 之初值為1, sum之初值為0。char ch=’A’, str[]=”A Book”;令字元變數ch之初值為’A’,字串變數str初值為”A Book”。
宣告不同資料型態並設定初值後列印出結果(使用Visual C++ 編譯,發現錯誤並試著改正你的程式) //type_dec.cpp 檔案名稱 #include <iostream.h> //cout #include <conio> //getch( ) void main( ) { int x=4,y=5; //整數變數宣告並設初值 char ch=’A’,letter=’0’; //字元變數宣告並設初值 float radius =11.2, area=0; //浮點數變數宣告並設初值 cout << “x=” << x << “,y=” <<y << endl;//輸出各變數資料 cout << “ch=” << ch << “,letter=” << letter << endl; cout << “radius=” << radius << “,area=” << area << endl; int unknown; //宣告未設初值之變數 cout << “unknown=” << unknown << endl; //輸出結果將未定 getch( ); //暫停 }
宣告不同資料型態並設定初值後列印出結果(紅字為修改部分)宣告不同資料型態並設定初值後列印出結果(紅字為修改部分) //type_dec.cpp 檔案名稱 #include <iostream> //cout // #include <conio> //getch( ) void main( ) { int x=4,y=5; //整數變數宣告並設初值 char ch=’A’,letter=’0’; //字元變數宣告並設初值 float radius =11.2, area=0; //浮點數變數宣告並設初值 cout << “x=” << x << “,y=” <<y << endl;//輸出各變數資料 cout << “ch=” << ch << “,letter=” << letter << endl; cout << “radius=” << radius << “,area=” << area << endl; int unknown=1; //宣告未設初值之變數 cout << “unknown=” << unknown << endl; //輸出結果將未定 // getch( ); //暫停 }
設定不同之進位常數值後以十進位輸出 //hexoct.cpp #include <iostream> //cout using namespace std; int main( ) { short chest = 42; //十進位常數 short waist = 0x42; //十六進位常數 short other = 042; //八進位常數 cout << "chest=" << chest << endl; //皆為10進輸出 cout << "waist=" << waist << endl; cout << “other=” << other << endl; return 0; }
宣告布林資料型態,並作一判斷列印出結果 //bool.cpp #include <iostream> using namespace std; int main( ){ bool judge; short a=4,b=12; judge = a <= b; //比較 cout << "judge=" << judge << endl; judge = false; //值為0 cout << "false=" << judge << endl; judge = true; //值為1 cout << "true=" << judge << endl; return 0; }
1-8-1 四則運算符號(+, -, *, /) • 若兩數均為整數資料型態則兩數相除為求其商(整數)。 • 設int a=10,b=15,c; • 如:c = b / a;其值c為1 • 或:c = a / 3;其值c為 3 • 若兩數有一浮點數或兩數均為浮點數則其值為浮點數。 • 設float area,radius=10; • 如:area = radius / 4;其值area為2.5
例題:四則運算 #include <iostream> //cout using namespace std; int main( ){ int a = 13, b = 10; cout << a+b << endl; cout << a-b << endl; cout << a*b << endl; cout << a/b << endl; //整數除以整數為整數 return 0; }
1-8-2 餘數 「﹪」 • 兩數相除求餘數,此運算符號係針對整數資料型態才有效,若為浮點數須作型態轉換(Type Casting)。如:設int a=10,b=15,c;則c = a % b; 其值c為10又如:float a=12.3,b=7.62;int c;則c = int(a) % int(b); 其值c為5因 int (a)12,int (b)7
例題:兩整數相除,求商及餘數 #include <iostream> //cout using namespace std; int main( ){ int a=345, b= 7, c; c = a / b; //整數相除得商 cout << "商=" << c << endl; c = a % b; //利用餘數運算符號 cout << "餘數=" << c << endl; return 0; }
1-8-3 遞增 「++」 • 對某一變數加一 • 設int a=10; • 前置(Prefix)遞增,稱前加,如: ++a; • 後置(Postfix)遞增,稱後加,如: a++; • 值a均為11,事實上等於a = a + 1; • 不論前加或後加對該變數本身均加一,但在一運算式內對運算結果會有影響
例題: 運算式與前置遞增 • int a=10, b=15, c; • c = ++a + b; // 最後值 c 為 26, a 變為 11 • 事實上c = ++a + b;可以以下兩運算式表示 a = a + 1; //a=10+1=>11 c = a + b; //c=11+15=>26 先遞增再相加
例題: 運算式與後置遞增 • int a=10, b=15, c; • c = a++ + b; // 最後值 c 為 25, a 變為 11 • 事實上c = a++ + b;可以以下兩運算式表示 c = a + b; //c=10+15=>25先遞增再相加 a = a + 1; //a=10+1=>11 • 遞增若與其它運算符號在一起如”+” ,中間應加一空白,如c=a++ + ++b;
例題:前加與後加對運算式之影響 #include <iostream> //cout using namespace std; int main( ){ int a=5, b=7, c; cout <<"a b c\n"; c = a++ + b++; cout << a <<' '<< b <<' '<< c <<endl; c = ++a + ++b; cout << a <<' '<< b <<' '<< c <<endl; c = ++a + b++; cout << a <<' '<< b <<' '<< c <<endl; return 0; }
例題:前加與後加對運算式之影響(分析) • c=a++ + b++;等於下面三運算式: • c=a+b; //c=5+7→12 • a=a+1; //a=5+1→6 • b=b+1; //b=7+1→8 • c=++a + ++b;等於下面三運算式: • a=a+1; //a=6+1→7 • b=b+1; //b=8+1→9 • c=a+b; //c=7+9→16 • c=++a + b++;等於下面三運算式: • a=a+1; //a=7+1→8 • c=a+b; //c=8+9→17 • b=b+1; //b=9+1→10
1-8-4 遞減 「- -」 • 對某一變數減一 • 設int a=10; • 前置(Prefix)遞減,稱前減,如: --a; • 後置(Postfix)遞減,稱後減,如: a--; • 值a均為9,事實上等於a = a – 1; • 不論前減或後減對該變數本身均減一,但在一運算式內對運算結果會有影響。
例題:加加減減對運算式之綜合影響 #include <iostream> //cout using namespace std; int main( ){ int a=5,b=7,c; cout <<"a, b, c\n"; c = a-- - b-- * 2; cout << a <<‘, '<< b <<‘, '<< c <<endl; c = --a * --b ; cout << a <<‘, '<< b <<' ,'<< c <<endl; c = --a + b-- / a; cout << a <<‘, '<< b <<‘, '<< c <<endl; c = a++ + --b / a++; cout << a <<‘,'<< b <<‘, '<< c <<endl; return 0; }
例題:加加減減對運算式之綜合影響(分析) • c =a-- - b-- * 2; 可以表為: c = a – b *2; //c=5 – 7 * 2→5 – 14 →-9 a = a –1; //a=5 –1 →4 b = b – 1; //b=7-1→6 • c = --a * -- b; 可以表為: a = a -1; //a=4-1 → 3 b = b -1; //b=6-1 → 5 c = a * b; //c=3*5 → 15 • c = --a + b-- /a;可以表為: a = a -1; //a=3-1→2 c = a + b/a; //c=2 + 5 / 2→2 + 2→4 b = b-1; //b=5-1→4 • c = a++ + --b /a++;可以表為: b = b – 1; //b=4-1→3 c = a + b/a; //c=2+3/2→2+1→3 a = a + 1; //a=2+1→3 a = a + 1; //a=3+1→4
1-8-5算術指定運算符號(+=, -=, /=, …) • a = a + b; 可表為 a += b; • a = a – b; 可表為 a -= b; • a = a * b; 可表為 a *= b; • a = a / b; 可表為 a /= b; • a = a % b; 可表為 a %= b; • 只要指定運算符號「=」兩邊有相同之變數即可如此處理。
1-8-6 特殊運算符號「(e1)?e2:e3」 • (條件式)?敘述1;:敘述2; • 假如條件式為真則執行敘述1;否則執行敘述2。 • 例如:c = (a > b) ? a : b; • 若a大於b為真,就將a值設定給c;否則就將b值設定給c。 • If a > b then c=a. • If a ≦ b then c=b.
例題:找出三數內之最大與最小值 #include <iostream> //cout using namespace std; int main( ){ int a=10, b=20, c=15, max, min ; max = a ; max = (b > max) ? b : max ; max = (c > max) ? c : max ; cout <<"最大值="<<max<<endl ; min = a; min = (b < min) ? b : min ; min = (c < min) ? c : min ; cout<<"最小值=" <<min<<endl ; return 0; }
1-9 型態轉換(Type Casting) • 數值在運算時兩邊之運算元不一定相同,如整數與浮點數運算之結果可因須要而強制改變其型態,此之謂型態轉換。 • 若沒有經過型態轉換將以運算後設定符號(即 「=」)左邊之變數型態為其最後型態;右邊之運算式依型態作運算,經型態轉換後再運算之值可能會發生變化。
1-9 型態轉換(Type Casting) • 型態轉換之格式: (型態名稱) 變數; 或 型態名稱 (變數); • 如:float y = 123.56; • short c; • c = (int) y; //將y轉為整數型態,得c為123 • 或 c = int (y); • 或 c= (short int) y; • 或 c = short (y); 或 c = (short int) (y);
1-10 關係運算符號 • C++兩資料經關係符號比較後只有兩種結果。若關係式成立則傳回之值為1,否則傳回之值為0。 • 運算符號有==, >=, <=, > , < , !=等六種。 • 例如: a = 12 > 8;// 得a值為1 b = (12 – 8 ) != (8 – 4); //得b值為0
1-10 關係運算符號 關係符號表