第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院.

Slides:



Advertisements
Similar presentations
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Advertisements

10.2.switch语句.
計算機程式及實習 期末報告 題目:商店結帳系統
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
C#程序设计案例教程 第3章 程 序 结 构.
第 5 章 流程控制 (一): 條件分支.
《ASP.NET数据库网站设计教程(C#版)》
第二章 JAVA语言基础.
《计算机网络技术》 asp.net 程序设计 文本类控件 笪静.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
第三章 控制结构.
程式設計實作.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第4章 选择结构程序设计.
C#程序设计基础 $5 流程控制.
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
第二章 C# 基础知识.
C++Primer 3rd edition 中文版 Chap 5
程式語言 -Visual Basic 變數、常數與資料型態.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
PHP 程式流程控制結構.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院.
第二章 Java语言基础.
第二讲 C#程序设计基础(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第三章 C# 基础知识.
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第二章 Java基本语法 讲师:复凡.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
《计算机应用基础》 第9章 程序设计基础(二).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
3.16 枚举算法及其程序实现 ——数组的作用.
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
3.13 选择结构程序设计初步.
第3章 Java语句及其控制结构 主要任务 了解Java程序的结构,学习使用各种语句结构来控制程序的流程,完成程序的功能任务。
第二章 Java基本语法 讲师:复凡.
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
多重條件選擇敘述
鸡兔同笼(续) ——选择结构.
1.2.2条件语句.
C#快速導讀 流程控制.
判斷(選擇性敘述) if if else else if 條件運算子.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
考察点:switch\while\for System.in\Scanner char vs int
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院

第3章 选择结构与循环结构 3.1 一个简单的选择结构程序 3.2 if语句——二分支选择语句 3.3 switch语句——多分支选择语句 3.4 一个简单的循环结构程序 3.5 while语句和do…while语句 3.6 for语句和foreach语句 3.7 跳转语句

【例3.1】 构造一个C#控制台应用程序,使之实现下列分段函数的功能: 3.1一个简单的选择结构程序 ——分段函数的实现 【例3.1】 构造一个C#控制台应用程序,使之实现下列分段函数的功能:

创建一个控制台应用程序PiecewiseFunction: 3.1一个简单的选择结构程序 ——分段函数的实现 3.1.1 创建C#控制台应用程序 创建一个控制台应用程序PiecewiseFunction: 运行该程序,从键盘上输入一个数值数据,如-3.14:

如果x>0,则f=1 选择 结构 如果x=0,则f=0 如果x<0,则f=-1 3.1.2 选择结构解析 3.1一个简单的选择结构程序 ——分段函数的实现 3.1.2 选择结构解析 选择 结构 如果x>0,则f=1 如果x=0,则f=0 如果x<0,则f=-1

选择结构主要有: 3.1.2 选择结构解析(续) 单入口双分支 单入口三分支(如上面的if语句实现的选择结构) 3.1一个简单的选择结构程序 ——分段函数的实现 3.1.2 选择结构解析(续) 选择结构主要有: 单入口双分支 单入口三分支(如上面的if语句实现的选择结构) 单入口多分支(三个或三个以上的分支) 对于这些选择结构,除了可以利用if语句来实现以外,还可以用 switch语句来完成。

3.2 if语句——二分支选择语句 将if语句分为三种类型: if…语句 if…else…语句 if…else if…else…语句

3.2 if语句——二分支选择语句 3.2.1 if…语句 3.2.2 if…else…语句 3.2.3 if…else if…else…语句

if…语句是最简单的一种if语句,其语法格式如下: 说明: 该语句的作用是:如果括号中布尔表达式的值为true,则 执行后面的语句块(语句块是指放在大括号“{”和“}”之间 的语句序列),否则什么都不做。 如果语句块仅由一条语句组成,那么大括号“{”和“}”可以省略。 “if (布尔表达式)”和“语句块”可以放在一行上,也可以分在两行上。 “if”后面括号中的表达式的返回值必须为布尔类型,即返回true或 false,这一点与C/C++不同;此外,关键字“if”后面没有“then”。

3.2 if语句——二分支选择语句 3.2.1 if…语句(续) if…语句的流程图如下图所示。

【例3.2】 从键盘上输入两个整数,然后输出较大的整数。 3.2 if语句——二分支选择语句 3.2.1 if…语句(续) 【例3.2】 从键盘上输入两个整数,然后输出较大的整数。 经过该语句后x总是保存了它们当中的最大者

if…else…语句是一种二分支选择语句,其语法格式如下: 语句块1 else 语句块2 说明: 该语句的作用是:如果括号中布尔表达式的值为true,则执行后面的语句块1,否则执行语句块2。也就是说,不管布尔表达式的值为true还是为false,语句块1和语句块2必有其中之一被执行。

示例PasswordBox 编程PasswordBox判断从文本框输入的口令是否合法?效果如 下图! 文本框的PasswordChar属性可以隐蔽用户通过键盘输入的字符,常用 来编写检查用户口令的程序。使用选择语句实现该操作 程序预设口令为“abc”

控件 属性 属性值 Form1 Text 使用基本控件实现口令判断 label1 请输入口令: label2 button1 验证 textBox1 PasswordChar *

private void button1_Click(object sender, System.EventArgs e) { if(textBox1.Text=="abc") //设口令为“abc” label2.Text="欢迎使用本系统!"; //如果输入正确,显示"欢迎使用本系统!" else //如果输入不正确 label2.Text=“对不起,您的口令有误,您无权使用该系统!"; }

if…else语句也可以用于多种分支的选择结构,这种情况也就是 if语句嵌套结构 if语句可以嵌套,但应注意if…else的配对问题

语法格式如下: 3.2.3 if…else if…else…语句 if (布尔表达式1) 语句块1 else if (布尔表达式2) 语句块2 … else if (布尔表达式n) 语句块n else 语句块n+1

一旦有语句块被执行,执行后程序都跳出整个if语句。 默认情况下,else总是与前面最近的if相匹配。 3.2.3 if…else if…else…语句(续) 该语句的作用是:先计算布尔表达式1,如果其值为true, 则执行语句块1;否则计算布尔表达式2,如果布尔表达式2 的值为true,则执行语句块2;…;否则计算布尔表达式n, 如果布尔表达式n的值为true,则执行语句块n;否则(所有 布尔表达式的值均为false)执行语句块n+1。 一旦有语句块被执行,执行后程序都跳出整个if语句。 默认情况下,else总是与前面最近的if相匹配。 最后面的“else”和“语句块n+1”可以省略,要根据实际需 要取舍。

【例3.4】 编写一个控制台应用程序,使之能够将学生成绩从百分制转化为等级制。创建控制台应用程序Grade: 3.2 if语句——二分支选择语句 3.2.3 if…else if…else…语句(续) 【例3.4】 编写一个控制台应用程序,使之能够将学生成绩从百分制转化为等级制。创建控制台应用程序Grade: static void Main(string[] args) { Console.Write("请输入分数: "); double score = Convert.ToDouble(Console.ReadLine()); string grade; if (score > 100 || score < 0) Console.Write("输入的分数不合法,请核查!"); Console.ReadLine(); return; } //判断合法的分数输入

Console.Write("成绩等级为: {0} !",grade); Console.ReadLine( ); if (score >= 90) grade = "优秀"; else if (score >= 80) grade = "良好"; else if (score >= 70) grade = "中等"; else if (score >= 60) grade = "及格"; else grade = "不及格"; Console.Write("成绩等级为: {0} !",grade); Console.ReadLine( ); } 利用了if…else if…else…语句来实现成绩从百分制到等级制的转化

3.3 switch语句——多分支选择语句 1. break语句 2. default标签

多分支选择结构 if语句每次判断只能有两个分支,如果在多重分支的情况下, 使用if语句实现比较复杂 使用开关语句即switch语句可以方便地解决这种问题 switch语句有一个控制表达式,其分支语句根据控制表达式的 值的不同执行不同的程序段

格式为: switch (控制表达式) { case 常量表达式1: 内嵌语句1; break; case 常量表达式2: 内嵌语句2; default: 内嵌语句; } 控制表达式所允许的数据类型为:整数类型、字符类型、字符串类型,或者枚举类型 常量表达式的数据类型与控制表达式的类型相同

switch语句 switch语句按以下顺序执行: ① 控制表达式求值 ② 若常量表达式等于控制表达式所求出的值,则执行case后的内嵌语句 ③ 若没有常量表达式等于控制表达式的值,则执行default后的内嵌语句 ④ 若控制表达式的值不满足case,也没有default,则转向switch语句段 的结束端 注意:在switch语句结束之前(即“}”之前),必须在case、default 后的内嵌语句中使用break语句,以便跳出switch语句,否则将会产生 编译错误

1. break语句 break语句用于停止语句的执行,即在switch语句结构中, break语句用于中断选择分支的语句运行 如果case语句后有处理语句,需要break语句作为结束 在switch语句中,多个case语句可以使用同一个处理语句

2. default标签 在switch语句中,常常用到default标签来处理不满足case语句 的值

【例3.5】 对于例3.4中关于将学生成绩从百分制转化为等级制的问题,也可以使用switch语句来解决。创建控制台应用程序Grade2: static void Main(string[ ] args) { Console.Write("请输入分数: "); double score = Convert.ToDouble(Console.ReadLine()); string grade; if (score > 100 || score < 0) Console.Write("输入的分数不合法,请核查!"); Console.ReadLine( ); return; }

switch ((int)(score / 10)) { case 10: case 9: grade = "优秀"; break; default: grade = "不及格"; break; } Console.Write("成绩等级为: {0} !", grade); Console.ReadLine( ); switch语句

改进 例3.5(示例ScoreConversion) 用窗体应用程序实现,效果如下图:

private void button1_Click(object sender, System private void button1_Click(object sender, System.EventArgs e) // “转换(switch)”按钮 { int k=int.Parse(textBox1.Text); switch(k/10) { case 0: case 1: case 2: case 3: case 4: case 5: textBox2.Text="不及格"; break; case 6: textBox2.Text="及格"; break; case 7: textBox2.Text="中"; break; case 8: textBox2.Text="良"; break; case 9: case 10: textBox2.Text="优"; break; default: textBox2.Text=“非法数据,请重新输入"; break; }

private void button2_Click(object sender, System private void button2_Click(object sender, System.EventArgs e) // “退出”按钮 { this.Close(); //也可以Application.Exit( ); }

本讲小结 if语句——二分支选择语句 switch语句——多分支选择语句