1 / 161

程式語言 C++

程式語言 C++. By :梁志堅. 什麼是程式. 程式語言的種類 認識記憶體 程式語言的兩項任務: 程式員藉以敘述處理事務的步驟。 提供程式員解決事務的思維觀點。 寫程式的基本概念 認識語言程式編輯環境 ( 使用 Dev C++) 第一個 C++ 語言程式 範例: 2_01. 寫程式的基本概念. 操弄記憶體 變數 “=“ 的意義 (a=a+1) 程式的執行邏輯 改變程式的執行方向 使用 if 、迴圈、呼叫副程式 ‧‧‧. 資料的型態.

noma
Download Presentation

程式語言 C++

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. 程式語言C++ By:梁志堅

  2. 什麼是程式 • 程式語言的種類 • 認識記憶體 • 程式語言的兩項任務: 程式員藉以敘述處理事務的步驟。 提供程式員解決事務的思維觀點。 • 寫程式的基本概念 • 認識語言程式編輯環境(使用Dev C++) • 第一個C++語言程式 範例:2_01

  3. 寫程式的基本概念 • 操弄記憶體 • 變數 • “=“ 的意義(a=a+1) • 程式的執行邏輯 • 改變程式的執行方向 使用 if、迴圈、呼叫副程式‧‧‧

  4. 資料的型態

  5. 資料的型態 • 整數型態(int 、long、unsigned) • 浮點數型態(float、 double) • Char字元型態(另有字串型態)

  6. 變數與常數 • 變數的意義 • 變數的名稱 • 變數的宣告:int a, long a, float a, char a… • 常數:const pi=3.14159 3_01

  7. 運算 • 運算式(expression):5+a*b-c • 運算子(operator) :+ - * / % • 運算元(operand) :(5、a、b、c‧‧‧)

  8. 運算子的種類 • 設定運算子:= • 算數運算子:+ - * / % 3_02、 3_03 • 比較運算子:> < == != >= <= 3_04 • 邏輯運算子:&&(and) ||(or) !(not) 3_05 • 位元邏輯運算子:>> (往右移動) << (往左移動) | (or) & (and) ~ (not) ^(xor) • 特殊運算子:++ -- sizeof() 3_06 • 其他:

  9. 其他運算符號 • &:變數指位元器運算符號 • *:指標運算符號 • [] :陣列 • , :分隔變數或運算式 • ->:存取指標結構體運算符號 • . :存取結構體運算符號

  10. C++的輸入與輸出

  11. C++的輸入與輸出 • Cout:4_12 • Cin:4_13 • 格式化的輸出與輸入(要使用時再查書) setw():預留輸出格數,向右靠齊。 4_14 precision() setprecision() 4_15 setf() setiosflags() 4_16

  12. 練習題 • 設計一個程式輸入攝氏溫度,輸出華氏溫度。

  13. 程式的流程 • 循序式結構 • 選擇式結構 • 迴圈式結構

  14. 循序結構 • 依照敘述的先後次序由上而下一次執行。 5_01

  15. 選擇式結構 • If • 多重if • if‧‧‧else 敘述(else…if ) • 巢狀 if …else 指令 • 敘述1?敘述2:敘述3 • Switch…case

  16. If‧‧‧(else) if(運算式) ※a==b 與a=b之分別 { 敘述群 } ‧‧‧ 5_02

  17. 多重if If(運算式1) { If(運算式2) { If(運算式3) { 敘述群 } } } 3個 if 條件都成立時,才執行敘述群

  18. if‧‧‧else 敘述(else if 5_05)(假的時後離開) (真的時後離開) If(運算式) { 敘述群 A } else { 敘述群 B { 5_03

  19. 巢狀 if …else 指令 If(運算式1){ If(運算式2){ If(運算式3) { 敘述群 A } else { 敘述群 B } else { 敘述群 C } } else { 敘述群 D } } 5_04

  20. 敘述1?敘述2:敘述3 當 敘述1 為真 ,則執行 敘述2, 否則,則執行 敘述3。 5_06

  21. 練習: • 輸入兩個整數a、b,如果a>=b則做a-b的運算,如果a<b則做a*b的運算。 • 輸入兩個正整數a、b,同時判別它們和0的關係,並輸出結果。 • 輸入2個整數a、b,輸出最大的數。(使用敘述1?敘述2:敘述3)

  22. Switch…case Switch(變數) { case 常數1; 敘述群 A break; case 常數2; 敘述群 B break; ‧ ‧ } 5_07

  23. 練習: • 輸入一個成績(0-100),判斷這個成績是在哪個等級(90-100→A等級、 80-89→B等級、 70-79→C等級、 60-69→D等級、 60以下則印出F等級

  24. 迴圈式結構 • For 迴圈 • 多重For 迴圈 • Do…while 迴圈 while 迴圈 多重 while 迴圈 do….while Break 與 continue

  25. For 迴圈(改寫5_09為1+2+‧‧‧) • For(運算式1;運算式2;運算式3)for(i=0;i<10;i++) { 敘述群 } 5_09 ; 5_10

  26. 練習 • 輸入→首項、公差、項數,輸出數列和。 • 輸入整數n,輸出1+1/2+1/3+1/4‧‧‧+1/n • 輸入整數n,將n開根號(含虛根)。 • 輸入整數n,輸出費伯納希數列,a0=0,a1=1

  27. 多重For 迴圈 For () { for() { 敘述群 } } 5_11

  28. 練習 • 改寫九九乘法表為墊板上的格式。 • 寫一程式找出三位數的Armstrong數。 • 輸入整數n,印出2n-1層圖,圖形如下: • * • * * • * * * • * * • *

  29. while 迴圈 與 do….while迴圈 While(運算式) { 敘述群 } 5_12 5_13 // do { 敘述群 } While(運算式); 5_14

  30. 練習 • 輸入x值,輸出1+ x + (x^2/2!) + (x^3/3!) + ‧‧‧ + (x^n/n!) 之和,當(x^n/n!)<0.000001 時輸出結果。 • 輸入兩個正整數,輸出這兩數的最大公因數。 • 輸入一個數,輸出這個數的每一位數的和。 • 輸入一個正整數,輸出此數的因數分解。 • 輸入一段正整數的範圍,輸出此範圍內所有整數的因數分解。

  31. Break 與 continue • Break 指令:把程式的執行點從迴圈中往外跳一層。 5_15 • Continue指令:將程式執行點拉回到迴圈的判斷式,並且略過continue到迴圈結束之間的所有敘述。 5_16 5_17

  32. 練習 • 輸入 n 個數,輸出這個數列中的最大暨最小值。 • 輸入一個正整數n,輸出 小於 n 的所有質數。

  33. 陣列與字串

  34. 陣列 • 由一群相同資料型態的資料變數所組成的有序集合(如圖)。 6_01 • 一維陣列宣告陣列: 資料型態 陣列名稱[陣列長度] 6_02 6_03

  35. 練習 • 輸入一個十進位的整數,改成二進位輸出。 • 由亂數產生 n 個數放到陣列內,並將此數列由小到大排序 • 模擬樂透電腦選號,可以選擇大樂透或小樂透 產生6個不同數字,並將產生的數字排序印出

  36. 二維陣列 • 二維陣列宣告陣列:資料型態 陣列名稱 [列的大小] [行的大小] 6_04 6_05

  37. 練習題: • 輸入一個n*m(n,m<=7)的二維矩陣,將此矩陣向右轉置,並輸出此矩陣內每一元素的和 • 用亂數產生18個小於100的數,分別放入A、B兩個3*3的矩陣, 1.輸出AB矩陣相加給C(印出ABC矩陣) 2.將C矩陣向右轉置 3.輸出AB矩陣相乘

  38. 練習 • 輸入n(n<=21)值,產生一個 n*n 的摩方陣,(n 為奇數)。 • 另(n 為偶數[n是四的倍數,n 是四的倍數+2])

  39. 字串 • 字串其實是一個一維的字元陣列,但字串是以\0結尾(系統自己會加上),所以字串就是字元陣列,但是字元陣列不一定是字串。 • 宣告二維的字串陣列時,可不需指定第一維的陣列長度,但第二維一定要宣告。 6_06 6_07

  40. 練習 • 大數運算,輸入兩個大數(20位數以上),輸出這兩數相加與相乘的結果 • 輸入一串文字,輸出每一個英文字母出現的次數(只輸入小寫)。

  41. 字串處理 • Gets(輸入字串變數):由輸入裝置讀取一串字(直到遇到\n,cin遇到空白就停止),存入到指定的陣列中,並自動在最後面加上\0。 6_08 • puts (輸出字串變數):把指定的資料以字串的格式印到輸出裝置上(直到碰到\0為止),並自動在結尾加上\n。 6_09

  42. 字串處理 • Strlen(string):傳回string的長度(不含\0)。6_10 • Strcat(str1,str2)、strncat(str1,str2,n) 6_11 6_12 • Strcpy(str1,str2)、strncpy(str1,str2,n) 6_13 6_14 • Strcmp(str1,str2)、strncmp(str1,str2,n) :做相等比較,相同傳回 0、不同且字元數較少傳回-1、不同且字元數較多傳回1 6_15 6_16

  43. 字串處理 • strtok():將字串依照某些分隔符號拆成一小段一小段的元素。 • 語法:strtok(string1,string2); • strtok會先把string2中所出現的所有字元當作分隔符號,並將string1依照這些分隔符號一一隔開,把原本完整得字串切成好幾個小元素,最後strtok()再回傳這些字串元素。 6_17

  44. 練習 • 設計一程式,輸入一字串,輸出字串內的每一筆資料的資料型態,(例如輸入字串為:”apple 12 52.12 1.23e+03‧‧‧”) • 設計一程式,執行時讓使用者輸入一段文章,輸出文章中總共有多少個英文單字(不包含. , / ” ’ & $ 等符號),並印出每個單字總共顯示的次數。

  45. 函數

  46. 函數 • 什麼是函數?使用函數的優點 • 函數的定義與宣告 • 函數的使用 • 傳址函數 • 遞迴函數

  47. 什麼是函數?使用函數的優點 • 函數可視為“一群敘述的集合”,使用函數把某些經常使用的敘述群,直接用一個函數名稱封裝起來,當需要使用時再呼叫函數,可以減少重複寫相似程式碼的麻煩。 7_01

  48. 函數的定義與宣告 • 函數的宣告: 函數回傳值型態 函數名稱(資料型態 參數1 資料型態 參數2…) ; • 函數的定義: 函數回傳值型態 函數名稱(資料型態 參數1 資料型態 參數2…) { 函數主體; }

  49. 函數的定義與宣告 • 要清楚的定義函數回傳的型態(int 可省略7_06) • 每一個參數都要清楚的說明他的資料型態,以及輸入參數在函數中所代表的變數名稱。

  50. 函數的使用(呼叫) • 透過函數的呼叫(function call),程式控制權跳到函數的起始點,執行完這個函數再交還原來呼叫的程式執行點。 7_02 7_03 7_04 7_05

More Related