循环结构程序设计教案.docx
- 文档编号:8160507
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:17
- 大小:142.81KB
循环结构程序设计教案.docx
《循环结构程序设计教案.docx》由会员分享,可在线阅读,更多相关《循环结构程序设计教案.docx(17页珍藏版)》请在冰豆网上搜索。
循环结构程序设计教案
第6章循环结构程序设计
第一讲for循环语句、while循环语句、do…while循环、循环的嵌套、跳转语句
教学目标
1. 掌握使用循环结构设计程序的方法。
2. 掌握for、while、do…while语句的使用。
3.掌握循环嵌套的执行过程以及循环嵌套在程序中的应用。
4.掌握几种跳转语句的使用方法。
教学过程
预备知识
在编写程序过程中,往往出现相同类型操作需要重复出现,如实现1+2+…+100,则需要做99次加法,这类问题使用循环语句解决,可以使问题变得简单。
即循环语句用于实现语句块的重复执行。
根据问题的具体情况,C#中提供了四种不同的循环机制:
for循环、while循环、do…while循环和foreach循环。
这里介绍前三种循环机制,foreach循环将在数组中介绍。
6.1for循环语句
for循环常常用于已知循环次数的情况,使用该循环时,测试是否满足某个条件,如果满足条件,则进入下一次循环,否则,退出该循环。
6.1.1for语句的语法格式
for循环语句格式为:
for(表达式1;表达式2;表达式3)
{循环语句序列;}
其中表达式1用于参与循环条件变量的初始化,该表达式仅执行一次;表达式2为条件判断表达式,即每次循环体开始之前,判断该表达式是否成立,如果成立,进入下一次循环,否则,循环结束;表达式3用于参与循环条件变量的运算,一般为递增或递减的循环计数器。
循环语句序列用于描述重复执行的语句,当语句序列中仅含有一条语句时,花括号可以省略。
流程图如图6-1所示。
该结构中,表达式1、表达式2、表达式3是可选的,但应该注意死循环的发生。
如表达式2省略,并且不采用转移语句,会导致死循环的发生。
可以在循环体中的任何位置放置break语句来强制终止for循环——随时跳出for循环。
break语句通常包含于if语句中。
6.1.2for循环语句的使用
根据下面的实例,了解for语句的工作流程及实现方法。
【例6-1】计算1+2+3+…100。
使用for语句实现。
分析:
该问题属于重复执行加法的问题,并且参与运算的两个操作数不断的按规律增加。
该类问题可以通过循环进行解决。
(1)建立项目
(2)设计窗体
(3)设计代码
在窗体设计图上,双击按钮button1编写【计算】按钮的Click(单击)事件代码为:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
intsum;
sum=0;
for(intk=1;k<=100;k=k+1)
{
sum=sum+k;
}
label1.Text="从1加到100值为"+sum.ToString();}
程序的运行结果如图6-2所示的左图,单击“计算”按钮,将在标签上显示运行结果。
【例6-2】计算n!
,假设n=10。
分析:
该例实现阶乘的运算,可以使用改变乘数的值进行实现,使用循环可以方便的实现该类问题。
程序的运行结果如图6-3左图所示。
编写【计算】按钮的Click(单击)事件代码为:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
intsum,k;
sum=1;
for(k=1;k<=10;k++)
{
sum=sum*k;
}
textBox1.Text=sum.ToString();
}
6.2while循环语句
与for循环语句比较,while语句使用的频率要低一些,它可以用于不知道循环次数的情况;用于在循环时判断是否满足某个条件。
每一次在循环的顶部进行检测循环是否继续,当循环的条件为假时,退出循环。
6.2.1while循环语句的语法格式
while循环语句的格式为:
while(布尔条件表达式)
{语句序列;}
布尔条件表达式是每次循环开始前进行判断的条件,当条件表达式的值为真时,执行循环;否则,退出循环。
该语句结构的流程图如图6-4所示。
说明如下:
①布尔条件表达式是一个具有boolean值的条件表达式,为循环的条件。
②作为循环体的语句序列可以是简单语句、复合语句和其他结构语句。
③while循环的执行过程:
首先计算条件表达式的值,如果为真(True),则执行后面的循环体,执行完后,再开始一个新的循环;如果为假(False),则终止循环,执行循环体后面的语句。
④可以在循环体中的任何位置放置break语句来强制终止while循环——随时跳出while循环。
break语句通常包含于if语句中。
⑤可以在循环体中的任何位置放置continue语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。
continue语句通常包含于if语句中。
6.2.2while循环语句的使用
【例6-3】设有一张厚为xmm,面积足够大的纸,将它不断地对折。
试问对折多少次后,其厚度可达珠穆朗玛峰的高度(8844.43m)。
设对折后纸的厚度为hmm,计数器为n。
在没有对折时,纸厚为xmm,每对折一次,其厚度是上一次的2倍,在未到达8844.43m时,重复对折。
在程序中,纸的厚度就是对折后纸的厚度,所以用一个变量h。
建立应用程序用户界面与设置对象属性,如图6-5所示。
【计算】按钮的Click(单击)事件代码为:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
intn=0;
floath;
h=float.Parse(textBox1.Text);
while(h<8844430)
{
n=n+1;
h=2*h;
}
textBox2.Text=n.ToString();
}
程序运行结果如图6-5所示。
6.3do…while循环
do…while循环非常类似于while循环。
一般情况下,可以相互转换使用。
它们之间的差别在于while循环的测试条件在每一次循环开始时执行,而do…while循环的测试条件在每一次循环体结束时进行判断。
同样的,do…while可以解决一些循环问题,但使用的频率较少。
6.3.1do…while的语法格式
do…while语法的一般格式为:
do
{语句序列;}
while(布尔条件表达式)
6.3.2do…while的使用
【例6-4】使用do…while语句实现1+2+3+…100。
窗体及控件的属性设计见【例6-1】。
【计算】按钮的Click(单击)事件代码为:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
intsum;
sum=0;
intk=1;
do
{
sum=sum+k;
k=k+1;
}
while(k<=100);
label1.Text="从1加到100值为"+sum.ToString();//将sum显式转换为字符串
}
6.4循环的嵌套
当一个循环(称为“外循环”)的循环语句序列内包含另一个循环(称为“内循环”),称为循环的嵌套,这种语句结构称为多重循环结构。
内循环中还以包含循环,形成多层循环(循环嵌套的层数理论上无限制)。
三种循环(while循环、do…while循环、for循环)可以互相嵌套。
在多重循环中,需要注意的是循环语句所在循环的层数。
如以下代码:
intsum=0;
for(inti=1;i<=10;i=i+1)
for(intk=1;k<=i;k=k+1)
sum=sum+k;
【例6-6】编程实现九九乘法表。
分析:
本例中实现每一个一位数i显示从1乘到i,对于i的取值要从1取到9,所以可以使用两重循环实现,程序设计如图6-8所示。
使用label1控件实现乘法表的显示。
实现每一个一位数i显示从1乘到i,即:
i=11*i
i=21*i;2*i;
i=31*i;2*i;3*i;
…..
i=91*i;2*i;3*i;….9*I
每一步中又进行了重复的乘法运算,k*I
k=1k<=i
本例的界面设计如图6-8右图,使用label1控件实现乘法表的显示。
本例使用两重循环实现,其中外层循环实现乘法表中第二乘数i取值范围为1到9,内层循环在外层循环的基础上计算第一个乘数k的取值范围为1到i,其乘积以及表达式在label控件中显示。
运行结果如图6-8左图所示。
【九九乘法表】按钮的Click(单击)事件代码为:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
label1.Text="";
strings="";
intsum;
for(inti=1;i<10;i=i+1)
{
s="";
for(intk=1;k<=i;k=k+1)
{
sum=k*i;
s=s+k.ToString()+"×"+i.ToString()+"="+sum.ToString()+";";
}
label1.Text+=s+"\n";//显示并换行
}
}
6.5跳转语句
使用跳转语句,可以使程序执行跳转到程序中其它部分。
C#中提供四种转移语句:
goto语句、break语句、continue语句、return语句。
1.goto语句
goto语句可以将程序控制直接转移给标签制定的语句。
但由于goto语句改变了程序的正常流程,使得程序特别容易出错,所以尽量不要用。
而且,用goto语句实现的循环完全可以用循环语句实现,因此,goto语句很少使用。
2.break语句
在第5章中介绍了break在switch中的用法,break语句也可以用于退出所在的最近循环,使用break语句时,将结束循环,执行后面的语句。
break不能放在循环语句或switch语句后,否则发生错误。
3.continue语句
continue语句用于循环语句中,类似于break语句,但仅从当前的循环迭代中退出,然后执行下一次迭代循环。
【例6-10】使用计数器循环语句了解continue语句的使用,要求输出大于5的数
本例使用控制台程序实现。
【计算】按钮的Click(单击)事件代码为:
staticvoidMain(string[]args)
{
for(inti=1;i<=10;i=i+1)
{
if(i<5)
continue;
Console.WriteLine(i);
}
Console.ReadLine();
}
本程序的运行结果为
5
6
7
8
9
10
该例中当i<5时通过continue退出本次循环,所以运行结果中不显示1、2、3、4数字。
操作任务任务认识计算机
一、任务要求
设计程序,输出所有的“水仙花数“。
程序运行结果如下:
二、操作步骤
1.创建项目。
2.设计应用程序界面。
3.设置对象的属性。
4.编写事件代码。
“求水仙花数”的Click事件代码:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
inti=100,a,b,c;
while(i<=999)
{a=i/100;
b=(i-a*100)/10;
c=i-a*100-b*10;
if(a*a*a+b*b*b+c*c*c==i)
label1.Text+=i.ToString()+"是水仙花数"+"\n";
i=i+1;
}
经验与技巧
注意:
“水仙花数”是指一个三位数,其余各位数的立方和等于该数,如:
153=13+53+33.
&巩固拓展
练习题:
课后练习第106页4、5、6、7题
课程小结
本次课主要介绍了用于循环结构中的多种循环语句以及循环语句的嵌套方法和跳转语句的使用,通过学习能够设计循环结构的应用程序。
第二讲列表框和组合框、使用计时器控件
教学目标
1. 掌握使列表框和组合框的常用属性、方法、事件及使用。
2. 掌握计时器的使用。
教学过程
预备知识
6.5列表框和组合框
6.5.1列表框(ListBox)
ListBox控件为用户提供了选项的列表,用户可以从列表中进行选择输入。
如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条,它是一种规范输入的好工具。
1.列表框的常用属性、方法和事件
2.列表框应用实例
【例6-11】计算并输出从sum=1+…+(k-1)+k。
满足sum>1000是退出循环。
分析:
该例属于循环中语句转移的情况,本例中使用listBox控件用于显示sum的值,使用button控件实现该事件。
程序设计如图6-12所示。
【计算】按钮的Click(单击)事件代码为:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
intk=1;
intsum=0;
while(k<100)
{
sum=sum+k;
listBox1.Items.Add("0+…"+k.ToString()+"="+sum.ToString());
k=k+1;
if(sum>1000)
break;
}
6.5.2组合框(ComboBox)
组合框是一个文本框和一个列表框的组合。
与列表框不同的是列表框只能在给定的列表项中选择,而组合框除了可在给定的列表项中选择还可以直接在文本框中输入(DropDownStyle属性被设置DropDownList时除外)。
1.ComboBox常用属性和事件
2.ComboBox应用实例
【例6-12】要求单击【开始】按钮,将两个组合框中指定的年份范围内的所有闰年输出到列表框中。
图6-14为显示1955~2005年之间的所有闰年的结果。
(1)设计程序界面。
(2)设置对象属性。
(3)编写程序代码。
privatevoidbtnStart_Click(objectsender,System.EventArgse)
{//如果任一组合框中没有选定年份,则不执行任何操作
if(cboStart.SelectedIndex==-1||cboEnd.SelectedIndex==-1)
{return;}
intyearStart=int.Parse(cboStart.SelectedItem.ToString());
intyearEnd=int.Parse(cboEnd.SelectedItem.ToString());
if(yearStart>yearEnd)
return;
lstOut.Items.Clear();//清除上次判断显示的内容
for(inti=yearStart;i<=yearEnd;i=i+1)if(i%4==0&&i%100!
=0||i%400==0)lstOut.Items.Add(i);//将闰年的年份追加到列表框
}
【清除】按钮被单击时执行的事件代码如下:
privatevoidbtnClear_Click(objectsender,System.EventArgse)
{
lstOut.Items.Clear();//清空列表
}
6.6使用计时器控件(Timer)
计时器(Timer)控件在工具箱的图标为,它是一种无需用户干预,按一定时间间隔周期性地自动触发事件的控件。
一般用来检查系统时间,判断是否该执行某项任务,也可以用于后台处理。
Timer控件在程序运行时是不可见的,所以将其添加到窗体后显示在窗体设计器下方的组件窗格中。
6.6.1计时器控件的属性、方法和事件
Timer控件的主要属性、方法和事件见表6-4。
Timer1.Enabled=true;
Timer1.Start();\\计时器开始工作
Timer1.Enabled=false;
Timer1.Stop();\\计时器停止工作
在计时器的Tick事件中设计的程序代码,会在该事件不断被触发的过程中,重复执行,从这一点看,计时器具有循环语句的功能。
(2)设置对象属性。
添加代码以保证窗口被激活时txtNumber控件获得焦点,代码如下:
privatevoidForm1_Activated(objectsender,System.EventArgse)
{
txtNumber.Focus();//输入文本框获得焦点
}
用上面同样方法,选中txtNumber(textBox3)控件,在如图6-24所示的窗口中双击KeyPress,为控件txtNumber添加KeyPress(键盘事件)代码如下:
privatevoidtxtNumber_KeyPress(objectsender,System.Windows.Forms.KeyPressEventArgse)
{
if(e.KeyChar=='\r')//按〈Enter〉键则执行下面的代码(开始倒计时)
{
if(txtNumber.Text=="")
return;
remainder=Convert.ToUInt32(txtNumber.Text)*60;//将分钟换算为秒
timer2.Enabled=false;//第2个计时器终止工作
timer1.Enabled=true;//第1个计时器开始工作
lblTimeEnd.Visible=true;//显示控件
txtTimeEnd.Visible=true;//显示控件
lblTimeStart.Text="开始时间:
";//更换标签标题
}
}
双击控件timer2添加事件代码如下:
privatevoidtimer2_Tick(objectsender,System.EventArgse)
{//在txtTimeStart文本框中显示时间
txtTimeStart.Text=DateTime.Now.Hour.ToString()+":
"
+DateTime.Now.Minute.ToString()+":
"
+DateTime.Now.Second.ToString();
}
双击控件timer1添加代码如下:
privatevoidtimer1_Tick(objectsender,System.EventArgse)
{在txtTimeEnd文本框中显示时间
txtTimeEnd.Text=DateTime.Now.Hour.ToString()+":
"
+DateTime.Now.Minute.ToString()+":
"
+DateTime.Now.Second.ToString();
remainder--;//总秒数减1
minute=remainder/60;//求出总秒数折合的分钟数
second=remainder%60;//折合分钟后剩余的秒数
if(second<10)
msg="剩余时间:
"+minute+"分0"+second+"秒";
else
msg="剩余时间:
"+minute+"分"+second+"秒";
lblRemainder.Text=msg;if(remainder==0)//如果剩余总秒数为0
{
timer1.Enabled=false;lblRemainder.Text+="--时间到!
";}
}
【重新开始】按钮被单击时执行的事件代码如下:
privatevoidbtnReset_Click(objectsender,System.EventArgse)
{
lblRemainder.Text="";//清空lblRemainder标签
txtNumber.Text="";//清空输入文本框
txtNumber.Focus();//输入文本框获得焦点
timer2.Enabled=true;//计时器2开始工作
lblTimeEnd.Visible=false;txtTimeEnd.Visible=false;}
操作任务任务认识计算机
一、任务要求
使用Timer控件设计一个电子表程序。
程序运行结果如下:
二、操作步骤
1.创建项目。
2.设计应用程序界面。
3.设置对象的属性。
4.编写事件代码。
窗体的加载事件代码是:
privatevoidForm1_Load(objectsender,System.EventArgse)
{
timer1.Enabled=true;
timer2.Start();
}
Timer1的Tick事件代码是:
privatevoidtimer1_Tick(objectsender,System.EventArgse)
{
label1.Text="今天的日期是:
"+DateTime.Now.Year+"年"
+DateTime.Now.Month+"月"
+DateTime.Now.Day+"日";
}
Timer2的Tick事件代码是:
privatevoidtimer2_Tick(objectsender,System.EventArgse)
{
label2.Text="现在的时间是:
"+DateTime.Now.Hour+"时"
+DateTime.Now.Minute+"分"
+DateTime.Now.Second+"秒";
}
经验与技巧
注意:
使Timer开始工作或停止工作的方法有两种:
第一种:
timer1.Enabled=true;//开始工作
timer1.Enabled=false;//停止工作
第二种:
timer1.Start();//开始工作
timer1.Stop();//停止工作
&巩固拓展
练习题:
课后练习第106页12、13题
课程小结
本次课主要介绍了列表框、组合框和分组框的使用,通过学习能够设计有关几种控件的Windows应用程序。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 程序设计 教案