for 循环学习.docx
- 文档编号:26404719
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:24
- 大小:113.57KB
for 循环学习.docx
《for 循环学习.docx》由会员分享,可在线阅读,更多相关《for 循环学习.docx(24页珍藏版)》请在冰豆网上搜索。
for循环学习
1、求1+2!
+3!
+...+10!
的和
1.程序分析:
此程序只是把累加变成了累乘。
#include
voidmain()
{
inti,s=0,n=1;
for(i=1;i<=20;i++)
{
n=n*i;//计算各个数的阶乘
s=s+n;//将所有数的阶乘累加起来。
}
printf("%d",s);
}
2、输入一个数判断它是否一个质数(只能被1和他本身整除的数)
//提示:
查找在2到比这个数小1的数之间是否存在能被他整除的数。
#include
voidmain()
{
inti,j,c=0;
scanf("%d",&i);
for(j=2;j
{
if(i%j==0)//用来判断2到i-1中,是否有数能被i整除。
有c=c+1.
{
c++;
break;
}
}
if(c==0)//当c=0,说明2到i-1中,不存在能被i整除的数。
printf("该数是质数!
");
else
printf("该数不是质数!
");
}
3、问题描述:
打印输出100至200之间的全部素数。
分析:
素数是指只能被1和它本身整除的数。
算法比较简单,先将这个数被2除,如果能整除,且该数又不等于2,则该数不是素数。
如果该数不能被2整除,再看则是否能被3整除。
如果被3整除,并且该数不等于3,则该数不是素数,否则再判断是否被4整除,依此类推,该数只要是能被小于本身的某个数整除时,就不是素数。
#include
voidmain()
{
inti,c;
for(i=100;i<=200;i++)//循环限制数的范围100—200中。
{
for(c=2;i%c!
=0;c++);//从2到i之间找一个可以被整除的数。
if(i==c)//如果第一个被整除的数是本身,说明它是素数。
printf("%d\n",c);
}
}
或
#include
voidmain()
{
inti,j,c;//打印输出100至200之间的全部素数。
for(i=100;i<=200;i++)
{
for(c=0,j=2;j
{if(i%j==0)
{c++;
break;
}
}
if(c==0)
printf("%d\n",i);
}
}
4、题目:
输出9*9口诀。
1.程序分析:
分行与列考虑,共9行9列,i控制行,j控制列。
#include
voidmain()
{
inti,j,s;
for(i=1;i<10;i++)//i控制打印的行数。
{
for(j=1;j<=i;j++)//j控制打印的列数
{
s=j*i;
printf("%d*%d=%d\t",j,i,s);//控制打印的格式
}
printf("\n");//每打印完一行,换行。
}
}
5、打印如下图案
(1)算法分析:
从图案中找出行数,空格数,星号数间的关系如下:
行数空格数星号数
行数
空格数
星号数
1
3
1
2
2
3
3
1
5
4
0
7
i
4-i
2*i-1
131
223
315
407
i4-i2*i-1
可用双重循环控制整个图案的输出。
若用循环变量i,j分别控制外层,内层循环,则
i的取值从1到4,表示行数,在每行中要确定前面空格个数和星号个数,空格个数是4-i,
星号个数是2*i-1。
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)//控制打印的行数。
{
for(j=1;j<=4-i;j++)//先打印空格,观察空格数的规律为4-i
printf("");
for(j=1;j<=2*i-1;j++)//打印星号,观察星号数的规律为2*i-1
printf("*");
printf("\n");//打印完一行,打印换行。
}
}
6、
#include
voidmain()
{
inti,j;
for(i=1;i<=4;i++)//控制打印1到4等边三角形的行数。
{
for(j=1;j<=4-i;j++)//先打印空格,观察1到4等边三角空格数的规律为4-i
printf("");
for(j=1;j<=2*i-1;j++)//打印星号,观察1到4等边三角星号数的规律为2*i-1
printf("*");
printf("\n");//打印完一行,打印换行。
}
for(i=1;i<=3;i++)//控制打印5到7等边三角形的行数。
{
for(j=1;j<=i;j++)//先打印空格,观察5到7等边三角空格数的规律为行数i
printf("");
for(j=1;j<=7-2*i;j++)//打印星号,观察5到7等边三角星号数的规律为7-2*i
printf("*");
printf("\n");//打印完一行,打印换行。
}
}
7、题目:
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:
请抓住分子与分母的变化规律。
#include
voidmain()
{
intn,t,number=20;
floata=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf("sumis%9.6f\n",s);
}
8、题目:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
#include
voidmain()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("thetotalis%d\n",x1);
}
算法与程序设计第四单元循环语句
——《for语句》教学设计
一.教材分析
(1)本课在教材中的地位
循环语句在三种语句中是学生最难理解和掌握的,同时循环结构在程序设计中是出现频率最高的一种结构。
因此循环语句在《算法与程序设计》中占据重要的位置,而循环语句中以for语句尤为重要。
(2)教学内容的分析
本节课的教学内容主要是for语句的理解和认识。
从中学生需要分析并找出循环变量的范围以及循环过程中重复操作的部分,从而解决相应的问题。
(3)教材将循环结构安排在顺序结构和选择结构之后,一是因为较其他两种结构更难掌握和理解,二是因为循环语句中会应用到前面的两种结构,因此不仅可以对已学知识温故知新,也让学生学习循环结构有更丰富的内容,解决更多的问题。
二。
学情分析
新课程下的学生活泼好动,思想天马行空,富有想象力,而且喜欢新鲜,有探究未知的热情。
但是对于高一的学生而言,其缺少一定的分析能力和动手能力。
所有需要从培养学生分析能力和动手能力入手,使之学在其中,乐在其中。
重点中学的学生基本上都有其良好的学习习惯和一定的逻辑思维能力。
所以可以从如何在过程中提高和发展学生观察、分析并认识事务的思维品质。
三.设计思想
基于上述对教材意图与受体分析,本节教学安排从学生日常生活经验出发,采用启发式教学,激发学生学习循环语句的兴趣,提高他们的分析能力、逻辑思维能力和动手能力是本单元的宗旨。
教学安排从一个破解密码,解救人质的故事性题材入手,让学生“想”-体验逻辑推理的思维过程、“说”-外显思维活动过程、“做”-体验编写程序的乐趣、“听”-接受新的知识,完成教材规定的教学要求。
四.教学目标
(1)知识与技能
学生能理解循环结构概念;把握循环结构的三要素:
循环的初始状态、循环体、循环的终止条件;能识别和理解循环结构的框图以及功能;能运用循环结构解决简单的问题。
(2)过程与方法
通过由实例对循环结构的探究与应用过程,培养学生的观察类比,归纳抽象能力;参与运用算法思想解决问题的过程,逐步形成算法分析,算法设计,算法表示,程序编写到算法实现的程序化算法思想;培养学生严密精确的逻辑思维能力;掌握循环结构的一般意义及应用方法;培养由特殊到一般,再到特殊,及具体,抽象,具体的螺旋上升式的认识事物的能力并发现解决问题的方法。
(3)情感、态度与价值观
通过师生、生生互动的活动过程,培养学生主动探究、勇于发现的科学精神,提高数学学习的兴趣,体验成功的喜悦。
通过实例,培养学生发现、提出问题的意识,积极思考,分析类比,归纳提升,并能创造性地解决问题;感受和体会算法思想在解决具体问题中的意义,提高算法素养;经历体验发现、创造和运用的历程与乐趣,形成在继承中提高、发展,在思辩中观察、分析并认识客观事物的思维品质;培养学生的逻辑思维能力,形式化的表达能力,构造性解决问题的能力,培养学生程序化的思想意识,为学生的未来和个性发展及进一步学习做好准备。
五.重点难点
(1)重点
循环结构的概念、功能、要素、框图及应用
(2)难点
描述和应用循环结构时,三要素的准确把握和正确表达
(3)关键点
跟踪变量变化,理解程序的执行过程
六.教学策略与方法
(1)以教师为桥梁,通过创设情境引入课题,引导学生提出问题—分析问题—解决问题这一模式进行螺旋式教学,以突破教学重点,并调动学生探究的积极性。
(2)以多媒体作为教学的辅助手段,增强课堂密度和授课内容的直观性。
(3)采用“启发—讨论”式教学方法。
七.教学过程
导入:
大屏幕投影柯南的图片,让学生产生兴趣,从而更快投入。
[投影资料,并播放相关声音制造一定的效果]
柯南图片:
附加一段文字说明。
师:
大家都看过名侦探柯南吧!
那么大家一定知道柯南是个破解密码的高手,那么今天让我们也来作一次侦探,破解密码来解救被困的人质!
生:
全都兴致勃勃,蠢蠢欲动。
资料如下:
007主角詹姆斯.邦德被锁在了一个放有定时炸弹的密室,炸弹5分钟后将要爆炸,打开密室的门需要密码,密码共有五位,而邦德已经猜出了其中的三位1ƙƙ17,提示该密码能被33和61整除,谁能在5分钟内把邦德解救出来?
【学生活动】开始埋头苦算。
当5分钟时间过去后,学生还是不肯罢休。
师:
今天老师教大家在5分钟内破解密码!
【过渡】首先我们来分析刚刚的资料,我们可以得到:
如果我们光凭猜测,只能一个个去试,如果我们运气好一点,可能几次即可以算出答案,然而如果运气差的话,可能要猜到最后一个才能找出正确答案。
这里讲到猜,我们会从10017,10117,10217直到19917。
共需要猜100次。
但是从中我们可以看出每次都需要判断数据能否被57和67整除。
这是不是就是我们所说的:
重复判断呢?
师:
请大家思考一下,如果我们想通过编写程序来解决这个重复操作的问题,是否可以?
我们已学过的知识:
顺序结构和选择结构,描述这个重复操作,可能很麻烦,所以今天我们学习一种算法中的第三种结构:
循环结构。
【过渡】下面我们来看看循环语句的格式,同时展示循环结构流程图:
【展示】右图为步长为正的情况
•For循环变量=初值to终值step步长
•语句块
•Next循环变量
讲解:
循环变量、初值、终值、步长和语句块。
通过例子:
计算1+2+3+4+……+100的值。
如果采取顺序结构,则可以得到以下语句:
s=0
s=s+1结果:
s=1
s=s+2结果:
s=3
s=s+3结果:
s=6
…
s=s+100结果:
s=5050
我们可以看到单纯用赋值语句需要100个语句才能描述从1加到100。
如果用for语句,则可以只用以下几个语句即可解决这个问题:
s=0
fori=1to100
s=s+i
nexti
师:
如果对照for语句的格式,则可以得到i为循环变量,1为初值,100为终值,s=s+i为循环语句的语句块(即每次都需要执行的语句)。
生:
那step怎么没有出现?
师:
step即步长,例如1+2+3……+100,每次循环变量的改变为+1,所以步长step即为1。
但是我们需要注意:
1、步长可以为正也可以为负,但是不能为0。
一般情况下,步长应该是整数
2、步长为1时可以省略
师:
接下来便是循环语句的重要之处,如何确定重复的执行的语句。
例题中,我们通过顺序结构的形式,可以得到s=s+i。
i是循环变量,一直在变化。
【练习1】采用循环for语句,求1到n之间的奇数之和。
【生】学生动手在练习本上书写循环语句(1分钟)。
给出答案,详细讲解,并且点明不同之处(step)。
•S=0
•Fori=1tonstep2
•s=s+i
•Nexti
【设疑】前提:
若n=5
1、则循环了几次?
(观察学生对循环次数的计算是否掌握)
2、程序结束之后,i的值是多少?
(学生对当循环变量大于终值时停止的理解)
3、最后s的结果是多少?
(学生对循环语句执行过程是否掌握)
【学生】从循环性质分析,循环了3次,i分别等于1,3,5。
程序结束之后,i的值为7。
最后s的结果是9。
【练习2】采用循环for语句,求1到n的乘积(即1*2*3*……*n)。
【学生】
•S=0
•Fori=1ton
•s=s*i
•Nexti
【设疑】如果s=0,结果s的值为多少?
【学生】:
0
师:
所以我们可以得到,这里s一开始应设为s=1。
其实很多程序都有设初值的过程。
一般初值可以是0,1,或者其他值,需要考虑仔细。
初值会影响整个程序的结果。
【过渡】再回到我们的侦探角色中,在资料中,我们要得到正确的密码,我们应该怎么操作。
提示:
1、循环变量的初值和终值?
2、重复的语句是甚么?
3、如果表示所猜测到的数值?
【学生活动】两个人一个小组,共同思考,探索密码,解救邦德。
(5分钟)
(可能有些学生不能在5分钟完成,教师可走到学生中间,仔细观察个别困难学生并给予帮助和提示。
)
师:
时间到,不知道有多少同学能够在规定时间内解决邦德呢?
让我们来看一下正确答案:
18117。
程序讲解:
DimiAsInteger,sAsLong
Fori=0To99
s=10017+i*100
IfsMod33=0AndsMod61=0Then
Txt_passwd.text=str(s)
EndIf
Nexti
【学生活动】
在教师讲解之后,学生再进行动手操作。
【提高练习】
有能力的学生可以考虑如何将程序转化为do语句,为后面一节课作铺垫。
【总结】
利用练习题,对for语句格式进行总结。
【结束语】其实在大家身边,我们会发现很多问题,尤其是一些数学问题,均可以用循环语句来解决。
利用它,我们可以得到很多意想不到的结果。
FOR循环语句教学设计
教学案例基本信息表
设计者
冯爱香
单位
山东省潍坊第七中学
案例名称
FOR循环语句
适应范围(标明年级和模块)
高二年级选修一
课时
1
一、教材分析:
使用教材:
教育科学出版社出版的《算法与程序设计》(选修)。
循环结构是程序设计的三种基本结构之一,是程序设计的基础。
这节课是循环语句的第一部分内容,教材只是通过一个应用题引出了循环结构,并应用for循环结构实现了程序和编写,没有给出其语句格式和执行过程。
我认为这样会导致一些学生进行简单模仿,而不是真正的掌握和理解。
学生只有熟练掌握了FOR循环语句的语句格式,理解循环执行过程,才能在实际应用中游刃有余。
因此本部分内容分二节课完成,这节课主要讲for循环语句的语句格式及其执行过程,下节课再讲实际应用。
二、学生分析:
教学对象为高二的学生,在高一下学期数学课上学过程序设计三种方法及流程图的画法,但没有上机实践。
通过前面的学习对VB程序设计已有了一定的认知并且刚学习了顺序结构和分支结构。
三、教学目标及确立依据:
根据本节课教学内容以及学生的特点,结合学生现有知识水平,确定本节课教学目标如下:
1、知识目标:
:
1)掌握FOR循环语句的基本格式;
2)理解FOR循环语句的执行过程;
3)能根据实际问题确定程序中的循环变量、循环条件和循环体;
4)能用for循环结构编写简单的程序。
2、能力目标:
培养学生分析问题,解决问题的能力。
3、情感目标:
使学生积极参与,发挥他们的主动性,激发他们的求知欲。
四、教学重点、难点及确立依据:
学生只有掌握了for循环语句的语句格式,理解了其执行过程,才能在实际应用中得心应手。
教学重点:
1、掌握FOR循环语句的基本格式;
2、理解FOR循环语句的执行过程;
教学难点:
根据实际问题,确定程序中的循环变量、循环条件和循环体。
教材处理:
教材上没有讲for循环语句格式,也没讲它的执行过程,直接讲了它的应用。
若直接按教材上的来讲,学生不容易接受。
很容易造成学生的简单模仿,而不是真正的掌握。
所以先用一节课的时间讲for循环语句的语句格式,执行过程。
下一节再讲其实际应用。
五、教学环境:
多媒体教室(无网络)
六、教学过程:
教学环节
教师活动
学生活动
设计意图
复习引入
课前播放flash动画。
同学们,请看屏幕上的实例1
屏幕显示:
实例1、编程求1+2+3+…+10的和(这个例子在讲顺序结构的时候用过)想想在前面的学习中是如何来编写这个程序的。
提出问题:
用这种方法能不能编程求出1+2+3……+100的和,1+2+3……+1000的和?
那么有没有一种更好的方法来解决这类问题呢?
教师提示:
观察上面的10赋值语句有什么共同点、不同点
教师进一步引导:
实际这10条赋值语句在重复着同一个操作,都是将s加一个数和赋给s,如果用变量x表示每一个加数,那么这10条语句就可以用一条表示:
s=s+x,然后让x的取值分别为1到10这10个自然数,重复执行这条语句,就可以实现该程序的编写。
这就要用到循环结构。
循环结构的作用:
在一定条件重复执行一条或多条程序代码。
今天我们来学习其中的一种,for循环语句。
学生稍后给出:
学生积极思考
学生稍后找出共同点:
都是将s加上一个数的和赋给s;不同点:
s所加的数不同。
唤起学生对已学知识的回忆
通过学生熟悉的例题,进一步提出问题,引导学生思考,逐步引导学生观察分析,寻求解决问题的最佳方法,从而引入课题。
For循环语句的语句格式
1、用for循环语句给出实例1程序代码,并说出其功能以及各部分的名称。
2、提出问题:
是否可以实现求1+2+3……+100的和,1+2+3……+1000的和?
根据学生的回答将程序稍做修改,解决以上问题,让学生对循环结构的功能有感性的认识,引发学习兴趣。
3、进一步提出问题:
根据刚才的学习,能不能总结出for循环语句的语句格式。
师生共同总结出for循环语句的语句格式:
For循环变量=初值To终值Step步长
循环体
Next循环变量
4、针对for循环语句的语句格式,设置如下练习:
指出下面程序中的错误
1、求1+2+3+4+5的和
s=0
fori=1to5step1
s=s+i
nextj
prints
2、在VB窗体界面上输出1~10这10个自然数
fori=1to10
printi
3、求5+4+3+2+1和
s=0
forI=5to1
s=s+I
nextI
prints
4、求7+5+3+1的和:
S=0
ForI=7to1Step2
S=S+I
NextI
PrintS
根据练习可以得出:
1)For语句与Next语句必须成对出现,而且循环变量的名称要相同。
2)当初值小于终值时,步长为正数;当初值大于终值时,步长为负数;只步长为1时,才可以省略step1。
教师补充:
3)循环变量必须为数值型, 初值、终值:
都是数值型,可以是数值表达式。
4)循环体:
在For语句和Next语句之间的语句序列。
可以是一条语句,也可以是多条语句。
学生接受新知识
学生积极思考,并回答问题
学生通过观察或上机调试找出每个程序中存在的问题
归纳、总结
让学生多思考充分调动其学习积极性
由个别到一般,训练学生总结问题、归纳问题的能力
强化语句格式,找出注意点
通过实践,更容易理解、掌握
For循环语句的执行过程
掌握了for循环语句的语句格式,我们再来看其执行过程:
1、幻灯片动态演示实例1的执行过程,给出循环变量x、累加变量s的变化,并画出其流程图(图1)提醒学生注意观察当循环变量的等于终值时,还执不执行循环体。
2、由个别到一般,师生共同归纳出for循环语句的执行过程并画出流程图(图2)
图1
图2
3、阅读(调试)程序,完成以下问题
S=0
fori=1to10step2
s=s+i
Nexti
prints
问题1、该程序的功能是:
问题2、程序运行后,s的值为:
问题3、程序运行后,i的值为:
问题4、循环次数为:
问题5、退出循环的条件是什么:
学生观看实例1的执行过程,并注意x、s的变化
学生积极思考和教师一起归纳出for循环语句的执行过程
学生根据自己对for循环语句执行过程的理解,通过上机调试和与同学讨论完成任务
让学生对for循环语句的执行过程有一个感性的认识
培养学生归纳问题的能力
通过学生自主分析for循环语句的执行过程,加深对循环语句的理解
尝试编程
1、用for循环语句编程求1+1/2+1/3+1/4+1/5的和
2、在教室巡回及时发现学生出现问题
3、指出现比较普遍的错误,并分析错误的原因
找出循环变量、循环条件、循环体
通过教师对常见错误的分析,加深对for循环语句的理解
检查学生能不能根据实际问题写出循环变量、循环条件、循环体
课堂小结
回顾本节课的内容,巩固已学过的知识。
多媒体课件给出FOR循环语句的基本格式、流程框图,进一步强调如何确定循环变量、循环条件、循环体
反馈课堂所学内容
帮助学生形成知识体系
课外探究
1、循环变量的步长能否为0,如果为0,将会出现什么情况?
2、循环变量是不是一定要出现在循环体中,参与运算?
3、对于循环变量的值超过终值,你是如何理解的?
(结合步长为正,为负两种情况)
4、循环体被执行的次数由什么决定?
5、for循环语句可以解决数学上的那些问题?
课下可通过多种途径探究问题
培养学生发现问题、分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- for 循环学习 循环 学习