C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班
本期課程大綱 C語言簡介 基本資料型態, 變數, 基本輸入輸出 控制敘述- 選擇控制與重複控制 陣列 函式 指標 字元與字串 結構 檔案處理
本次課程大綱 C語言結構化特性 C語言的條件控制敘述 C語言的重複控制敘述 C語言的巢狀結構
演算法 問題 演算法: 程式的控制流程 有系統化的去解決問題 演算法圖形化表示 每個問題都可以藉由一連串的行動來解決 定義哪些行動要被執行 定義行動執行的順序 程式的控制流程 決定每一個敘述執行的順序 有系統化的去解決問題 演算法圖形化表示 流程圖
選擇控制 if if – else switch - case
有條件選擇 if (1) if(條件運算式) { ………………… 條件為真的敘述; ……………......... } true false grade >= 60 print “Passed” if(條件運算式) { ………………… 條件為真的敘述; ……………......... }
舉例 例子1: 輸入一個整數, 若其值為正數, 則印出其為正整數. 例子2: 使用if敘述判斷m的值是否為1
多重條件選擇 if-else if(條件運算式) { 條件為真的敘述; } else 條件為假的敘述; if(a==1) xxx; true false print “Failed” print “Passed” grade >= 60 if(a==1) xxx; if(a>1) yyy; if(a<1) if(a==1) xxx; else yyy;
舉例 例子1: 比較兩個數m跟n, 若m>n則輸出 m>n; 反之,則輸出m<=n. 例子2: 判斷輸入之數為奇數或偶數
多重條件選擇 if-else (2) 同一條件下的一連串敘述必須利用 {} 包含 若沒有{ } 例子: if ( grade >= 60 ) printf( “過關.\n" ); else { printf( “當掉.\n" ); printf( “你必須重修.\n" ); } 若沒有{ } printf( “你必須重修.\n” );會自動被執行 A pair of braces
if-else 巢狀架構 If student’s grade is greater than or equal to 90 Print “A” else If student’s grade is greater than or equal to 80 Print “B” else If student’s grade is greater than or equal to 70 Print “C” else If student’s grade is greater than or equal to 60 Print “D” else Print “F”
練習時間 題目: 輸入一個年份, 測試其是否為閏年. 如果該年份可以被4整除, 又不可以被100整除,則為閏年. 如果該年份可以被400整除也是閏年. 否則就不是閏年.
多重條件選擇 switch-case (1) switch (expression) //expression要是整數或字元 { case 條件運算式 1 : 敘述1 ; break; case 條件運算式 2 : 敘述2 ; break; ………… default: 敘述n ; } break; 離開這個敘述條件 通常適用於一個運算元在多個不同值上有不同的表現Useful when a variable or expression is tested for all the values it can assume and different actions are taken
多重條件選擇 switch-case (2) 例子1: 例子2: true false . case a case a action(s) break case b case b action(s) case z case z action(s) default action(s) 例子1: 例子2:
重複控制 for while do - while
指定運算元
for 敘述 (1) 使用方式 例子: 將counter從1印到10 for (初始值; 判斷式; 遞增或遞減運算式){ 敘述 } for( int counter = 1; counter <= 10; counter++ ) printf( "%d\n", counter ); 將counter從1印到10 counter++ 指counter=counter+1; 最後一個式子不需要分號
for 敘述 (2) for (counter = 1; counter <= 10; counter++ ) { printf( "%d\n", counter ); } counter = 1 counter = 1 true counter <= 10 printf( "%d", counter ); counter++ false
舉例 例子1: 計算1累加至100的總和,並輸出其值. 例子2: 同時累加兩個整數 Note: for(;;)代表無窮迴圈
for的巢狀結構 for迴圈裡面又有for迴圈. for(...) { for(…) } 例子: 99乘法表
while 敘述 例子 while (條件運算式) { 條件為真的敘述 } int product = 2; while ( product <= 1000 ) product = 2 * product; product <= 1000 product = 2 * product true false
舉例 例子: 使用while去計算1累加至100的值, 並且輸出. Note: while(1)代表無窮迴圈
while的巢狀結構 while的巢狀結構跟for的巢狀結構相同,彼此可以互相使用. while (條件運算式) { ………. }
do – while 敘述 do { 敘述 } while(條件運算式) 例子:利用do-while去計算1累加至10之值. true false action(s) condition do { 敘述 } while(條件運算式) 例子:利用do-while去計算1累加至10之值. 和while的不同
練習時間 for的巢狀結構或是while的巢狀結構來設計一個九九乘法表.
break 敘述 break有兩種用法 中斷case敘述(switch) 中斷一般迴路敘述 (for, while, do-while) { if(…) break; } 例子: 任意輸入10個數, 若輸入之數字為0, 則結束執行該程式.
continue 敘述 continue敘述應用於迴圈,當在迴圈遇到continue時,便直接回到迴圈開始的地方. for(…) { if(…) continue; } 例子: 計算sum=1+3+…+999
1 2 3 4 Broke out of loop at x == 5 Copyright 1992-2004 by Deitel & Associates, Inc. and Pearson Edition Inc. All right Reserved.
1 2 3 4 6 7 8 9 10 Used continue to skip printing the value 5 Copyright 1992-2004 by Deitel & Associates, Inc. and Pearson Edition Inc. All right Reserved.
程式三部曲 由上往下步步重建 先決定解題步驟 分割成一件件小工作 初始化工作 : 輸入成績 逐步處理的程序: 計算成績 結束時的工作: 列印成績統計
Scan Check Add . Copyright 1992-2004 by Deitel & Associates, Inc. and Pearson Edition Inc. All right Reserved.
Rolling them up!! Scan Check Add Copyright 1992-2004 by Deitel & Associates, Inc. and Pearson Edition Inc. All right Reserved.
Program Output Enter grade, -1 to end: 75 Enter grade, -1 to end: 94 Class average is 82.50 Enter grade, -1 to end: -1 No grades were entered Program Output
想想看: for(…) Scan Check Add . Scan Check Add Scan Check Add Do…while While…do Scan Check break Add 想想看: for(…) While(1)
條件控制的結構性 if switch if…else T F statement (single selection) T F (multiple selection) break . T F if…else statement (double selection) Selection
巢狀結構
重複控制的結構性 while statement do … while statement for statement T F T F T
今天學到什麼… 什麼是C語言結構化特性 如何使用C語言的條件控制敘述 如何使用C語言的重複控制敘述 如何使用C語言的巢狀結構 if, if…else or switch 如何使用C語言的重複控制敘述 while, do…while or for 如何使用C語言的巢狀結構