第5章 条件语句、循环语句
C语言 第五章-循环结构程序设计

执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
[工学]第05章 循环结构程序设计 (2)
![[工学]第05章 循环结构程序设计 (2)](https://img.taocdn.com/s3/m/90d7833fff00bed5b9f31d37.png)
22
i=i+c
2019/2/17
例:#include<stdio.h> 例:#include<stdio.h> main( ) main( ) { int i=0; { int i=0; for(;i<10;i++) for(i=0;i<10;i++) putchar(‘a’+i); putchar(‘a’+i); } } 运行结果:abcdefghij
2019/2/17
21
(7)表达式2一般是关系表达式(如 for语句说明4 i<=100)或逻辑 表达式(如a<b&&x<y),但也可以是数值表达式 或字符表达式,只要其值为非零,就执行循环体。分 析下面两个例子: ①for ( i=0;(c=getchar( ))!=‘\n’;i+ =c); i=0 此 for语句的执行过程见图 ,它的作 用是不断输入字符,将它们的ASCII 取一个字 码相加,直到输入一个“换行”符为 符=>c 止。 F ② for( ;(c=getchar( ))!=‘ \ n’;) C≠换行符 printf(“%c”,c);
15
思考:该程序是什么功能?
2019/2/17
5.3 for语句
for循环语句是C语言中功能最强的循环语句,它有
多个变化形式,并且可以很方便的代替其它的循环语
16
句。 for语句的一般形式
for(表达式1;表达式2;表达式3)循环体语句
2019/2/17
17
for执行流程
①先计算初值表达式1,它主要 用于循环开始前设置变量初值; ②接着计算循环控制逻辑表达式 2,它控制循环条件,决定循环 次数; ③如果表达式2为真,则执行循 环体语句,否则结束for循环; ④求解表达式3,它主要是对循 环控制变量进行修改。 ⑤转步骤②执行。
第5章-循环结构程序设计PPT优秀课件

5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
18
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
条件表达式 值为真?
格式:
Do <语句块> [Exit Do] <语句块>
Loop [While | Until <条件表达式>]
23
5.3.1 后测型Do…Loop循环语句
说明:
后测型Do…Loop循环语句与前测型Do…Loop循环语句的主 要区别在于:
后测型要先执行一次循环体,再判断条件;而前测型要 先判断条件,然后根据判断结果决定是否执行循环体。因此 对于后测型,不管条件是否满足,循环体至少有一次执行机 会。
16
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。Do…Loop循环的应 用具有很强的灵活性,主要体现在:它既能指定循环 开始条件,又能指定循环结束条件;既能构成前测型 Do…Loop循环语句,又能构成后测型Do…Loop循 环语句。
25
5.3.1 后测型Do…Loop循环语句 【例5-10】将400~600间能够被3整除的数 输出(上机练习)
【例5-11】(略)
26
5.4 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。
C语言程序设计:第5章 循环结构

12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
C语言程序设计:第5章-循环结构-课件教案

C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
单元五:循环结构

while循环
Java的循环语句有while、do-while、for循环, 这些语句实现了通常所称的循环。
一个循环重复执行同一套指令直到一个结束条 件出现
5
while循环格式
while语句是Java最基本的循环语句。当它的控 制表达式是真时,while语句重复执行一个语句 或语句块
7
示例
能把j++去掉吗?
//不再重复劳动 int i = 3,j=0; while( j<5){ //条件
//要做的事
System.out.println(++i);
j++; //变化 }
8
循环四要素
起点 终点 做什么事 起点到终点如何变化
int i = 3,j=0;//起点 while( j<5){ //条件
2
本章目标
理解循环四要素 掌握while循环 掌握do-while循环 掌握for循环
3
为什么要使用循环
问题:打印某个数字后的5个数字
int i = 3; System.out.println(++i); System.out.println(++i); System.out.println(++i); System.out.println(++i); System.out.println(++i);
Java 初学者
第5章:循环结构
上节回顾
if-else语句根据判定条件的真假来执行两种操 作中的一种
嵌套if语句是指该if语句为另一个if或者else 语句的对象
第5章for循环程序设计(0909NITL)

ch5_5_4.c 14
例5.5 计算输入一行字符串的字符个数.
#include<stdio.h> int main( ) { int n=0;
char cha1; printf("输入一行字符串: \n");
for(; (cha1=getchar( )) !=‘\n’ ; n++) ;
printf("共有字符%d个.\n",n); return 0; }
ch5_5_5.c 15
对于for语句的进一步说明:
(1). 表达式1可以是设置变量初值的赋值表达式,也可是与 循环变量 无关的其它表达式.
如:
for(sum=0; i<100; i++) sum=sum+i;
(2). 表达式2一般是关系表达式或逻辑表达式,但也可以是 其它类型表达式,只要其值为非零,就执行循环体.
for(; i<=5; i++) {
do { i++; a++;
} while(i<3);
i++; }
printf(“a=%d,i=%d\n”,a,i);
}
21
例5.6: 打印一张九九乘法表.
#include<stdio.h>
int main() { int i,j;
外循环控制行数.
for(i=1; i<10; i++)
#include “stdio.h” main( )
①. 外层for循环执行二次. 每次外循环时,内循环要执行4次.
{ int i,j,x=0;
②. 每次内循环时,当j=1,或j=3时,
Python语言程序设计课件下载

Python语言程序设计课件教案教学内容:本节课的教学内容来自于Python语言程序设计教材的第五章节,主要内容包括:条件语句、循环语句和函数。
1. 条件语句:if语句、elif语句和else语句的使用方法和应用场景。
2. 循环语句:for循环和while循环的语法规则、执行过程以及应用案例。
3. 函数:函数的定义、调用、参数传递以及返回值。
教学目标:1. 学生能够理解条件语句的概念和作用,并能够熟练使用if语句、elif语句和else语句来判断不同的情况。
2. 学生能够掌握循环语句的语法规则和执行过程,并能够运用for循环和while循环来解决实际问题。
3. 学生能够理解函数的定义和调用方式,并能够掌握参数传递和返回值的概念。
教学难点与重点:1. 教学难点:条件语句的嵌套使用和循环语句的嵌套使用。
2. 教学重点:函数的定义和调用、参数传递和返回值。
教具与学具准备:1. 教具:电脑、投影仪、黑板。
2. 学具:课本、练习本、铅笔、橡皮。
教学过程:一、实践情景引入(5分钟)让学生打开电脑,登录Python编程环境,然后运行一个简单的程序,例如输出"Hello, World!",以此来引入本节课的主题——Python 语言程序设计。
二、条件语句讲解(10分钟)1. 讲解if语句的语法规则和应用场景,通过举例来说明如何使用if语句来判断一个数的正负。
2. 讲解elif语句的语法规则和应用场景,通过举例来说明如何使用elif语句来判断一个数的范围。
3. 讲解else语句的语法规则和应用场景,通过举例来说明如何使用else语句来处理默认情况。
三、条件语句练习(10分钟)让学生根据教师给出的条件,使用if语句、elif语句和else语句来编写程序,例如:判断一个数是正数、负数还是零;判断一个数是否是偶数。
四、循环语句讲解(10分钟)1. 讲解for循环的语法规则和执行过程,通过举例来说明如何使用for循环来输出一个数的平方。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
begin if(q==4'b1000) begin q<=q+1'b1; c<=1'b1; end else if (q==4'b1001) begin q<=4'b0000; c<=1'b0; end else begin q<=q+1'b1; c<=1'b0; end end end endmodule
17
module exb5_1; reg[1:2] select; reg[3:0] result; always @(select) begin case ( select[1:2] ) 2 'b00: result = 0; 2 'b01: result = 4'b0001; 2 'b0x, 2 'b0z: result = 4'b0x0z; 2 'b10: result = 4'b0010; 2 'bx0, 2 'bz0: result = 4'bx0z0; default: result = 4'bxxxx; endcase end
5
if(index>0) for(scani=0;scani<index;scani=scani+1) if(memory[scani]>0) begin $display("..."); memory[scani]=0; end else /*WRONG*/ $display("error-indexiszero"); 尽管程序设计者把else写在与第一个if(外层if)同一列上,希 望与第一个if对应,但实际上else是与第二个if对应,因为它 们相距最近。
14
(1)case括弧内的表达式称为控制表达式,case分支项中的表 达式称为分支表达式。控制表达式通常表示为控制信号的 某些位,分支表达式则用这些控制信号的具体状态值来表 示,因此分支表达式又可以称为常量表达式。 (2) 当控制表达式的值与分支表达式的值相等时,就执行分 支表达式后面的语句。如果所有的分支表达式的值都没有 与控制表达式的值相匹配的,就执行default后面的语句 。 (3)default项可有可无,一个case语句里只准有一个default 项。 (4) case语句各分支表达式间未必是并列互斥关系,允许出 现多个分支取值同时满足case表达式的情况。这种情况下 将执行最先满足表达式的分支项,然后跳出case语句,不 再检测其余分支项目。
6
正确的写法应当是这样的: if(index>0) begin for(scani=0;scani<index;scani=scani+1) if(memory[scani]>0) begin $display("..."); memory[scani]=0; end end else /*WRONG*/ $display("error-indexiszero");
19
case语句与if_else_if语句的区别主要有两点: 1) 与case语句中的控制表达式和多分支表达式这种比较结构相 比,if_else_if结构中的条件表达式更为直观一些。 2) 对于那些分支表达式中存在不定值x和高阻值z位时,case语 句提供了处理这种情况的手段 Verilog HDL针对电路的特性提供了case语句的其它两种形式用 来处理case语句比较过程中的不必考虑的情况( don't care condition )。其中casez语句用来处理不考虑高阻值z的比较过 程,casex语句则将高阻值z和不定值都视为不必关心的情况。 所谓不必关心的情况,即在表达式进行比较时,不将该位的状 态考虑在内。这样在case语句表达式进行比较时,就可以灵活 地设置以对信号的某些位进行比较。
23
initial begin select=2'b00; #100; select=2'b01; #100; select=2'bzx; #100 select=2'b1x; end endmodule
24
module mux4_to_1b(out, i0, i1, i2, i3, s1, s0); output[1:0] out; input[1:0] i0, i1, i2, i3; input s1, s0; reg[1:0] out; always @(s1 or s0 or i0 or i1 or i2 or i3) begin case ({s1, s0}) 2'b00: out = i0; 2'b01: out = i1; 2'b10: out = i2; 2'b11: out = i3; default: out = 2'bxx; endcase end endmodule
第5章 条件语句、循环语句、块语 句与生成语句
1
5.1 条件语句(if_else语句)
if语句是用来判定所给定的条件是否满足,根据 判定的结果(真或假)决定执行给出的两种操作 之一。 Verilog HDL语言提供了三种形式的if语句。
2
(1)if(表达式)语句 例如: if ( a > b ) out1 <= int1; (2)if(表达式) 语句1 else 语句2 例如: if(a>b) out1<=int1; else out1<=int2;
9
module counter10b(q,clk,clr); output[3:0] q; input clk,clr; reg[3:0] q=4'b0000;//ModelSim仿真用,QuartusII不用初值 always @(posedge clk or posedge clr) begin if(clr) q<=4'b0000; else begin if (q==4'b1001) q<=4'b0000; else q<=q+1'b1; end end 10 endmodule
3
(3) if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ........ else if(表达式m) 语句m; else 语句n;
4
注意(书上6点): 在if和else后面可以包含一个内嵌的操作语句(如上例),也可 以有多个操作语句,此时用begin和end这两个关键词将几个语 句包含起来成为一个复合块语句。 if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。 应当注意if与else的配对关系,else总是与它上面的最近的if 配对。如果if与else的数目不一样,为了实现程序设计者的企图, 可以用begin_end块语句来确定配对关系。
18
initial begin select=2'b00; #100; select=2'b01; #100; select=2'b00; #100; select=2'b0x; #100; select=2'b00; #100; select=2'b0z; #100; select=2'bx0; #100; select=2'b11; end endmodule
7
一位16进制计数器
module counter16(q,clk); output[3:0] q; input clk; reg[3:0] q; always @(posedge clk) q<=q+1'b1; endmodule
8
一位16进制计数器,增加清零端 module counter16b(q,clk,clr); output[3:0] q; input clk,clr; reg[3:0] q=4'b0000;//ModelSim仿真用,QuartusII不用初 值 always @(posedge clk or posedge clr) begin if(clr) q<=4'b0000; else q<=q+1'b1; end endmodule
13
case语句 case语句是一种多分支选择语句,if语句只有两个分支可供 选择,而实际问题中常常需要用到多分支选择,Verilog语 言提供的case语句直接处理多分支选择。 它的一般形式如下: 1) case(表达式) <case分支项> endcase 2) casez(表达式) <case分支项> endcase 3) casex(表达式) <case分支项> endcase case分支项的一般格式如下: 分支表达式: 语句 缺省项(default项): 语句
module counter10c(q,c,clk,clr); output[3:0] q; output c; input clk,clr; reg[3:0] q=4'b0000;//ModelSim仿真用,QuartusII不用初值 reg c=1'b0;
11
always @(posedge clk or posedge clr) begin if(clr) begin q<=4'b0000; c<=1'b0; end else
16
module test_case; reg[1:0] select; initial begin select=2'b01; case (select) 2'b01:$display("second 2b01..."); 2'b01:$display("third 2b01..."); 2'b01,2'b00:$display("2b01"); 2'b11:$display("2b11"); default:$display("default..."); endcase end endmodule