Class 2 流程控制-選擇敘述與迴圈.

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
1.1 程序和程序设计 程 序:简单的说程序就是指令的集合。 计算机设计语言: 机器语言 :二进制 0 、 1 汇编语言:助记符(英语单词)。 高级语言: 人类自然语言(数学语言 + 英语) 如: C 语言、 Qbasic 、 VB 等 第一章:程序设计基本概念.
C语言程序设计 主讲教师 :张群燕 电话:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 C语言概述 计算机公共教学部.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
第三章 控制结构.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
程式設計實作.
C语言程序设计 第五章 选择结构程序设计.
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
第二章 C# 基础知识.
第5章 程序结构.
C++Primer 3rd edition 中文版 Chap 5
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
第3章 C 語言的基本知識.
適用於多選一 可減少if 與 else配對混淆的錯誤.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
C程序设计.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C 語言簡介 - 2.
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
Introduction to the C Programming Language
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
C语言 程序设计基础与试验 刘新国、2012年秋.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句
第三章 C# 基础知识.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C语言概述 第一章.
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
第二章 Java基本语法 讲师:复凡.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
程式的時間與空間 Time and Space in Programming
第3章 JavaScript基本语句.
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
第6章 PHP基本語法介紹.
多重條件選擇敘述
C#快速導讀 流程控制.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
C语言基本语句 判断循环.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

Class 2 流程控制-選擇敘述與迴圈

復習1 資料形態 printf(“%d %f %c”,int_num,float_num,char_num); scanf(“%d”,&int_num); 2

復習2 強制轉換 其他例子 int a=5,b=11; float c=a/b; printf(“%f”,c); //結果印出0.000000??? 改成 float c=(float)a/(float)b; 其他例子 float c=11.0011; printf(“%d”,(int)c);

何謂流程控制? 程式設計師自由控制程式的流向 某段程式碼在某些情況下跳過 選擇敘述 某段程式碼需要重複執行好幾次 迴圈

選擇敘述 單向選擇 if… 雙向選擇 if…else… 逐一過濾選擇 if…else if…else… 多重選擇 switch…case…

單向選擇 if… 語法 流程圖

條件式中的邏輯判斷式 邏輯判斷式可以使用的運算符號 運算符號 意義 > 大於 < 小於 >= 大於等於 <= 小於等於 = = 等於 != 不等於

範例練習 使用者輸入一個分數 如果該分數為60分以上 顯示”及格”

課堂練習 練習1 練習2 試寫一個程式,讓使用者由鍵盤輸入一個數字,如果大於1000,電腦會印出"大於1000" 偶數(奇數)確認 由使用者由鍵盤輸入數字,如果是偶數,電腦會印出"偶數" 利用%運算

條件式 條件式可以同時利用多個判斷式 連結邏輯判斷的符號 && 而且 || 或 if((score1>=60 )&& (score2>=60)) printf(“兩科都及格”); || 或 if((score1>=60 )|| (score2>=60)) printf(“至少一科及格”);

雙向選擇 if…else… 語法 流程圖

範例練習 使用者輸入一個分數 如果該分數為60分以上 顯示”及格” 否則 顯示”不及格”

課堂練習 練習1 試寫一個程式,讓使用者由鍵盤輸入一個數字,如果大於1000,電腦會印出“大於1000” ,否則印出”小於等於1000” 練習2 偶數(奇數)確認 由使用者由鍵盤輸入數字,如果是偶數,電腦會印出“偶數” ,否則印出”奇數”

課堂練習3 判斷閏年 提示並接受使用者輸入一個西元的年份,處理過後輸出該年是否為閏年 判斷規則 假如該年份可被4整除,又不可被100整除,則為閏年 假如該年份可被400整除則為閏年 否則皆不為閏年

判斷閏年 if (x%4==0) { if ((x%100!=0)||(x%400==0)) { printf(“是閏年\n”); } else { printf(“不是閏年\n”);

判斷閏年 if ((x%400==0) || (x%4==0 && x%100 !=0)) { printf(“是閏年\n”); } else { printf(“不是閏年\n”);

逐一過濾選擇 if…else if…else… 語法 流程圖

課堂練習 請設計一個可以讓使用者輸入分數,並依照分數輸出等級A(90~100)、B(80~89)、C(70~79)、D(60~69)、E(0~59)的程式。 小提示:可以在if的條件式中,利用&&連結兩個邏輯判斷式

多重選擇 switch…case… 資料或運算式用來比對下面每一個case的常數值 跳至第一個比對成功(數值相等)的地方繼續執行 遇見 break; 敘述,結束整個switch敘述 若沒有比對成功,則會執行 default: 後的敘述區塊 語法

範例練習 利用switch改寫剛才課堂練習程式 讓使用者輸入分數,依照分數輸出等級 A(90~100)、 B(80~89)、 D(60~69)、 E(0~59)的程式。

課堂練習 修改上面的範例,以防止使用者輸入不合理的分數(大於100、小於0) if ((points>100)||(points<0)) { printf(“請輸入一個正確的分數:0~100”); return 0; }

補充 (判斷式 ? x : y); 判斷式成立,則執行x,反之執行y 以下兩種寫法是相同結果 (score>=60 ? printf("及格!\n") : printf("不及格!\n"));

作業二 請利用課堂學到的if…else if…else…敘述和switch分別撰寫計算機程式 使用者可以選擇一種運算(+、-、×、/),並輸入兩個數字,程式將計算並輸出結果。(HW2_1_if.cpp、HW2_1_switch.cpp )

過重:24≦BMI<27 輕度肥胖:27≦BMI<30 中度肥胖:30≦BMI<35 重度肥胖:BMI≧35 作業二-2 身體質量指數(BMI) (kg/m2) 體重過輕 BMI < 18.5 正常範圍 18.5≦BMI<24 異常範圍   過重:24≦BMI<27 輕度肥胖:27≦BMI<30 中度肥胖:30≦BMI<35 重度肥胖:BMI≧35  請利用所附左表,修改上一個作業,使之成為附有評語的BMI計算器 (HW2_2.cpp)

複習 If(條件判斷1){ //滿足條件判斷1 } else if(條件判斷2){ //不滿足條件判斷1, 滿足條件判斷2 //不滿足條件判斷1, 不滿足條件判斷2 ,滿足條件判斷3 else{ //不滿足條件判斷1, 不滿足條件判斷2 ,不滿足條件判斷3

複習 switch(要判斷的變數){ case 變數值1: //變數==變數值1 時要做什麼 break; case 變數值2: //變數==變數值2 時要做什麼 default: //變數== 其他數值 時要做什麼 }

複習 If(條件判斷1){ if(條件判斷2){ //滿足條件判斷1和條件判斷2會執行 } else{ //滿足條件判斷1但不滿足條件判斷2會執行 //滿足條件判斷1就會執行 //不滿足條件判斷1 會執行

補充 什麼時候要用fflush(stdin);//清除輸入緩衝區 讀取字元 or 字串之前 Why??? scanf(“%d”,&int_num); fflush(stdin); scanf(“%c”,&char_num); 讀取字元 or 字串之前 Why??? 輸入數字時,除了數字外還輸入了一個enter enter=‘\n’ (可視為一個char)

迴圈 當程式需要來回重複執行某一段程式碼時, 就可以使用迴圈 迴圈又可以分為以下三種: while迴圈 do…while迴圈 for迴圈

while迴圈 語法 流程圖 while(條件判斷) while之後的敘述 敘述 成立 不成立

範例練習 利用while敘述 計算1+2+3+…+100的數值 進階題 計算2+4+6+…+100的數值

增減變數值 運算子 運算 x=val 將值val指定到變數x(基本指定) x += val 等同於x=x+val x -= val

課堂練習 練習1 讓使用者輸入數字,若輸入-1則結束輸入,否則一直輸入直到-1為止 當使用者輸入-1後,將使用者輸入的錯誤數字加總並計算平均輸出 Int input=0,sum=0,num=0; While(input!=-1){ //目前為止的加總+使用者輸入的值 //讓使用者輸入數字到input //輸入的次數+1 } //算平均時,要避免除以0的情況

課堂練習 練習2 有一個聚寶盆,一開始裡面只有一塊錢,但每隔一天會多一倍(總錢數=2天數) 請讓使用者選擇1或2 1 使用者輸入放置天數,系統輸出聚寶盆最後的錢數 2 使用者輸入想賺到的錢數,系統輸出需要多少天 Int day=0,money=1; While(day<day_input){ //錢 * 2 //天數加一 } 34

do…while迴圈 和while的作用相同,只是判斷的先後不同 至少執行一次 語法 流程圖 do{ 進入do迴圈 敘述區塊 成立 } 不成立 離開迴圈

課堂練習 請改寫剛剛的程式,利用do…while敘述計算1+2+3+…+100的數值 進階題

for迴圈 確定想要重複執行的次數 語法 初始運算式 條件式 運算式 設定計次變數的初始值,只在進入迴圈時會執行 計次變數的限制條件式,每次進入迴圈前檢查 運算式 執行完敘述區塊後,利用運算式更新計次變數

流程圖 範例練習 1+2+3+…+100 敘述區塊 條件式 for迴圈 初始運算式 for迴圈之後的敘述區塊 不成立 成立 計次運算式 更新 計次變數

課堂練習 練習1 練習2 請設計可以由使用者輸入 n, 然後計算出由 1+3+5+……+ n = ? for(i=1;i<=n;i+=3){ // 計算加總 } 練習2 請印出 10、8、6、 …、0、-2、-4 (每行一個數字)

巢狀迴圈(雙重迴圈) for(a=1;a<10;a=a+1) { 程式碼; ... for(b=1;b<8;b=b+1) {   {    程式碼;    ...    for(b=1;b<8;b=b+1)    {     程式碼;     ...    }   } /*這種觀念叫雙重迴圈*/

範例練習 請印出下面的形狀 * ** *** ****

課堂練習 練習1 :請印出下面的形狀   ****   ***   **   * 練習2 : 請印出下面的形狀

作業三 請利用for迴圈輸出九九乘法表。 1*1=1 1*2=2 … 9*8=72 9*9=81 提示:可以利用雙層迴圈來計次兩個變數。 (HW3_1.cpp)

作業三-2 (HW3_tree.cpp) (回家自己練習,寫出來有加分) ** **** ****** ******** bonus 使用者輸入欲建樹的字元 使用者決定幾層 提示: 空白的數目=總層數-目前的層數 星星的數目=目前的層數*2

改變迴圈結構流程 要讓迴圈結束有規則的和不規則的方式 規則的方式 不規則的迴圈結束方法 讓反覆執行的迴圈藉由適當的條件測試而自然結束 條件變成false 不規則的迴圈結束方法 在不可預期的執行狀況下,強制迴圈中斷,以避免可能發生的程式錯誤 一旦在迴圈自然結束前,已經得到想要的運算結果,同樣可以運用強制中斷的方式結束迴圈 可以提高程式執行的效率

break敘述 提供從 for、while、do – while 間提早離開的方法 break 只離開最內層迴圈 回想一下剛教過的switch,break用來做什麼事情?

範例練習 占卜系統設計 用到哪些教過的語法? 利用while迴圈讓使用者可以抽籤直到按0離開系統 if…else, switch, while, break

課堂練習 撰寫一個程式,使用者輸入一數,程式會找出大於此數的數字中,最小的17的倍數 //輸入數字 While(1){ //數字+1 //判斷數字可不可以被17整除,可以則跳出 }

continue敘述 不離開迴圈 立即停止這一次的迴圈 跳到測試迴圈的地方決定是否進行下一次迴圈 在 for 迴圈中是跳到運算式 只能用在迴圈,不適用 switch 寫在 switch 中,效果是對包著 switch 的迴圈,即包著 switch 的迴圈進入下一次迴圈

範例練習 有棟公寓沒有四樓這個樓層 請寫程式模擬坐電梯從一樓到十樓,電梯顯示樓層的情形

作業三 請撰寫一個程式,使用者輸入兩個數字範圍 在這範圍中的數字,除了3的倍數之外都印出 HW3_2.cpp) //要注意輸入的兩個數字誰比較大 If(input1>input2){ } else{