1 / 60

第一章

第一章. 程式基本架構. 大綱. 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 宣告區可容納.

hogan
Download Presentation

第一章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第一章 程式基本架構

  2. 大綱 • 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 運算符號範例 • 習題

  3. 1-1 程式架構 • C++程式架構包含有三大部分: (1)宣告區; (2)主程式區; (3)函數定義區

  4. 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…

  5. 1-1-2 程式頭 • void main( ) 或main(void){ …… } • int main( )或main(char *arc, char *arv) { …… return 0; } ※main( )內小括號內, 因需要會有參數 ※void main( )不需要return 0;

  6. 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)之處理……等等

  7. 1-1-4 函數定義區 用於函數定義及寫函數主體: • 如:函數一 void fun1(int a, char ch) { 主體; } • 函數二 int fun2(int a, float r) { 主體; …; return n; }

  8. 1-2 註解 C++的註解方式有兩種:◎雙斜線(//)int degree=0; //設定初值為0 ◎斜線星號「/*」起首及星號斜線「*/」結尾/*本程式旨在求攝氏溫度轉為華氏溫度 */ 或 /*這是註解 … … *** */

  9. 1-3 識別字(Identifier)及變數 • 程式設計師在程式內自行定義的文字,如:變數(Variable)名稱函數(Function)名稱結構(Structure)名稱類別(Class)名稱

  10. 1-3-1 識別字(Identifier) • 識別字命名原則 • 第一字元需為英文字母(a…z,A…Z)或底線符號「_」 • 第二字元以後可為英文字母或數字(0…9)或底線符號「_」 • 保留字(Reserved word)不可作為識別字,但可當識別字之一部份,因保留字在C++中有其特殊意義 • 英文大小寫對識別字之命名是不同的 • 命名時應使識別字有其代表之意義 • 最長最好不得超過32字元

  11. 1-3-1 識別字(Identifier) C++之保留字一覽表

  12. 1-3-2 變數 • 暫時存放資料的一個符號名稱,宛如數學裏常用x,y代表一些數值,其內容是隨時可以改變。 • 變數佔用電腦記憶體的一部份,大小因資料型態而異。

  13. 1-4 指定符號“=” • 變數內容可因需要而改變,而促成其改變之符號稱為指定符號 (Assignment),即「=」。 • x=3在數學上為令x之值為3;在C++上即令 x在記憶體之內容為3。 • x=x+5在數學上為無意義;在C++上之意即把原來x之內容取出來與5相加後之結果8 再放回原來記憶體位置。

  14. 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之運算結果

  15. 1-5 程式敘述(Statement) • 程式敘述對數學運算式

  16. 1-6 資料型態(Data type) • 電腦並不能處理無限制的任何資料 • 在C++內基本上有字元資料整數資料浮點數資料等三種資料型態 • 亦可含布林(Boolean)寬位元(Wide character)型態

  17. 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’之八進位表示之。

  18. 1-6-1 字元(Character)資料型態 • 跳脫字元之意義

  19. 1-6-1 字元(Character)資料型態 • 字串(String)與字元(char): • 字元是字串(String)的組成基本元素 • 字元資料時必須用單引號「‘」 • 字串(String)則須用雙引號「”」 如:“This is a Borland C++ language.”為字串 “蒙娜麗莎的微笑” 為字串 “A”為字串 ‘A’為字元

  20. 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為無號數。

  21. 1-6-3 浮點數(Floating point)資料型態 • 具有整數及小數點之位數,如234.1234,有下列三種: 1. float(浮點數) 2. double(倍精度) 3. long double(雙倍精度)

  22. 1-6-3 浮點數(Floating point)資料型態 • 浮點數常數例 科學記號(Scientific exponent)以e 或E表示

  23. 1-6-4 布林型態(Boolean) false=0 true=1

  24. 1-7 資料型態之變數宣告 • 宣告格式為:資料型態名稱 變數1,變數2,…;如:int x,y; • 變數宣告範例: • float radius, area;宣告radius(半徑)及area(面積)兩變數為浮點數資料型態 • char ch, alpha, letter;宣告ch, alpha, letter三變數為字元資料型態 • long meter,feet;宣告meter, feet 為長整數資料型態

  25. 1-7 資料型態之變數宣告 • 變數之初值 • 變數在宣告之同時亦可設定其初值(Initialization)或常數值(Constants) 。 • 如:int i=1, sum=0;令整數變數 i 之初值為1, sum之初值為0。char ch=’A’, str[]=”A Book”;令字元變數ch之初值為’A’,字串變數str初值為”A Book”。

  26. 宣告不同資料型態並設定初值後列印出結果(使用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( ); //暫停 }

  27. 宣告不同資料型態並設定初值後列印出結果(紅字為修改部分)宣告不同資料型態並設定初值後列印出結果(紅字為修改部分) //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( ); //暫停 }

  28. 設定不同之進位常數值後以十進位輸出 //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; }

  29. 宣告布林資料型態,並作一判斷列印出結果 //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; }

  30. 1-8 算術運算符號

  31. 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

  32. 例題:四則運算 #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; }

  33. 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

  34. 例題:兩整數相除,求商及餘數 #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; }

  35. 1-8-3 遞增 「++」 • 對某一變數加一 • 設int a=10; • 前置(Prefix)遞增,稱前加,如: ++a; • 後置(Postfix)遞增,稱後加,如: a++; • 值a均為11,事實上等於a = a + 1; • 不論前加或後加對該變數本身均加一,但在一運算式內對運算結果會有影響

  36. 例題: 運算式與前置遞增 • 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 先遞增再相加

  37. 例題: 運算式與後置遞增 • 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;

  38. 例題:前加與後加對運算式之影響 #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; }

  39. 例題:前加與後加對運算式之影響(分析) • 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

  40. 1-8-4 遞減 「- -」 • 對某一變數減一 • 設int a=10; • 前置(Prefix)遞減,稱前減,如: --a; • 後置(Postfix)遞減,稱後減,如: a--; • 值a均為9,事實上等於a = a – 1; • 不論前減或後減對該變數本身均減一,但在一運算式內對運算結果會有影響。

  41. 例題:加加減減對運算式之綜合影響 #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; }

  42. 例題:加加減減對運算式之綜合影響(分析) • 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

  43. 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; • 只要指定運算符號「=」兩邊有相同之變數即可如此處理。

  44. 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.

  45. 例題:找出三數內之最大與最小值 #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; }

  46. 1-9 型態轉換(Type Casting) • 數值在運算時兩邊之運算元不一定相同,如整數與浮點數運算之結果可因須要而強制改變其型態,此之謂型態轉換。 • 若沒有經過型態轉換將以運算後設定符號(即 「=」)左邊之變數型態為其最後型態;右邊之運算式依型態作運算,經型態轉換後再運算之值可能會發生變化。

  47. 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);

  48. 1-9 型態轉換(Type Casting)

  49. 1-10 關係運算符號 • C++兩資料經關係符號比較後只有兩種結果。若關係式成立則傳回之值為1,否則傳回之值為0。 • 運算符號有==, >=, <=, > , < , !=等六種。 • 例如: a = 12 > 8;// 得a值為1 b = (12 – 8 ) != (8 – 4); //得b值為0

  50. 1-10 關係運算符號 關係符號表

More Related