第一篇:while循环结构例题
引子
#include “stdio.h” main(){ int i=1;for(i=1;i<=10000;i++)printf(“%dt”,i);}
题型1 输入输出多个数据
eg1、输出1~10000之间所有的整数 #include “stdio.h” main(){ int i=1;while(i<=1000){printf(“%dt”,i);
i++;} } 拓展:
1、换成所有的奇数
2、换成所有的偶数
题型2 有限个数连加和连乘 eg2.1、求1+2+3+4+………+100的值 #include “stdio.h” main(){ int i=1,s=0;while(i<=100){s=s+i;i++;} printf(“%dn”,s);} 拓展:
1、求1+2+3+4+………+n的值
2、求12+22+32+………+n2的值
3、求1+1/2+1/3+………+1/n的值 eg2.2、求n!的值 #include “stdio.h” main(){ int i=1,n,p=1;scanf(“%d”,&n);while(i<=n){p=p*i;i++;} printf(“%dn”,p);} 拓展:求1!+2!+3!+………+n!的值 #include “stdio.h” main(){ int i=1,n,p=1,s;scanf(“%d”,&n);while(i<=n){p=p*i;
s=s+p;i++;} printf(“%dn”,s);}
题型3 无限个数连加
eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-#include “stdio.h” #include “math.h” main(){ float n=1,s=0,f=1,t=1;
while(fabs(t)>=1e-4)
{t=f/(2*n-1);
s=s+t;f=-f;n++;} printf(“%fn”,s);}
拓展:求1-1/2+1/4-1/6+………的近似值,要求精度要达到10-4
题型4 统计
eg4.1、输入20个数,统计其中正数、负数和零的个数。#include “stdio.h” main(){ int i=1,n,p,z;float x;
p=n=z=0;while(i<=20)
{ scanf(“%f”,&x);if(x>0)p++;
else
if(x<0)
n++;else
z++;
i++;} printf(“%dt%dt %dn”,p,n,z);} 拓展:统计各类字符的个数
eg4.2 个位为6且能被3整除的五位数有多少? 方法1 #include “stdio.h” main(){ long i=10000,c=0;while(i<=99999)
{
if((i%3==0)&&(i%10==6))c++;i++;} printf(“%d n”,c);}
方法2 #include “stdio.h” main(){ long i=10006,c=0;while(i<=99999)
{
if(i%3==0)c++;i=i+10;} printf(“%d n”,c);} 题型5 数列
eg5 输出fibo数列的第20位数字 #include “stdio.h” main(){ int f1=1,f2=1, f3,i=3;while(i<=20)
{ f3=f1+f2;f1=f2;f2=f3;i++;} printf(“%d n”,f3);} 拓展:输出fibo数列前20位数字 #include “stdio.h” main(){ int f1=1,f2=1, f3,i=3;printf(“%d t%d t”,f1,f2);while(i<=20)
{ f3=f1+f2;f1=f2;f2=f3;
printf(“%d t”,f3);i++;} }
题型6 数据的逆序输出
eg6 任意给定一个正整数,个位数字逆序输出。
#include “stdio.h” main(){ long x,t;
scanf(“%ld”,&x);while(x!=0)
{ t=x%10;x=x/10;printf(“%d”,t);} }
题型7 公约数与公倍数
eg7 任意输入两个正整数,求其最大公约数和最小公倍数。#include “stdio.h” main(){ int m,n,a,b,r,t;
scanf(“%d%d”,&m, &n);
if(m>n){a=m;b=n;}
else {a=n;b=m;} while(b!=0)
{ r=a%b;a=b;b=r;} printf(“zuida gongyushu shi:%dn”,a);printf(“zuixiao gongbeishu shi:%dn”,m*n/a);}
题型8 素数问题
eg8 从键盘上任意输入一个正整数,判断其是否为素数。#include “stdio.h” main(){ int x,i=2;
scanf(“%d”,&x);while(x%i!=0)i++;if(x==i)printf(“shi!”);else printf(“fou!”);} 题型9 高次方程的根
eg9.1 用二分迭代法求解方程32y=2x-4x+3x-6=0在(-10,10)之间的根,要求-5精度10
#include “stdio.h” #include “math.h” main(){ float x1=10,x2=-10,x, y ,y1;x=(x1+x2)/2;y=2*x*x*x-4*x*x+3*x-6;while(fabs(y)>1e-5){ y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
if(y*y1>0)
x1=x;
else
x2=x;
x=(x1+x2)/2;
y=2*x*x*x-4*x*x+3*x-6;
} printf(“the root is %fn”,x);} eg9.2 用牛顿迭代法求解方程2x3+ 2-54x-7x-6=0在x=1.5附近的根,要求精度10 #include “stdio.h” #include “math.h” main(){ float x,x0, y ,y1;x=1.5;while(fabs(x-x0)>1e-5){ x0=x;y=2*x0*x0*x0+4*x0*x0-7*x0-6;y1=6*x0*x0+8*x0-7;x=x0-y/y1;} printf(“the root is %fn”,x);}
牛顿迭代公式:xn+1=xn-f(xn)/f’(xn)
do-while循环结构举例 #include “stdio.h” main(){ int i=1,s=0;do {s=s+i;i++;} while(i<=100);printf(“%dn”,s);} for循环结构举例 f1 #include “stdio.h” main(){ int i=1,s=0;for(i=1;i<=100;i++)s=s+i;printf(“%dn”,s);} f2 #include “stdio.h” main(){ int i,f1,f2,f3;f1=1;f2=1;printf(“%d,%d”,f1,f2);for(i=3;i<=20;i++)
{ f3=f1+f2;
f1=f2;
f2=f3;
printf(“,%d”,f3);} } f3 #include “stdio.h” main(){ int i;float a,max;scanf(“%f ”,&a);max=a;for(i=1;i<=9;i++)
{ scanf(“%f ”,&a);
if(max max=a;} printf(“%fn”,max);} f4 #include “stdio.h” main(){ int i,s=1;for(i=9;i<=1;i--)s=2*(s+1);printf(“%dn”,s);} #include “stdio.h” main(){ int x,n=0,s=0; while(n<10){ scanf(“%d”,&x); if(x<0)break; s+=x; n++; } printf(“s=%dn”,s); } #include “stdio.h” main(){ int x,n=0,s=0;while(n<10) { scanf(“%d”,&x); if(x<0)continue; s+=x; n++; } printf(“s=%dn”,s);} #include “stdio.h” main(){ int x,n=0,s=0;while(n<10) { scanf(“%d”,&x);n++; if(x<0)continue; s+=x; } printf(“s=%dn”,s);} #include “stdio.h” main(){ int i=2,m; scanf(“%d”,&m);while(m%i!=0)i++;if(i==m) printf(“%d shi sushu!n”,m); else printf(“%d bu shi sushu!n”,m);} #include “stdio.h” main(){ int i,m;scanf(“%d”,&m);for(i=2;m%i!=0;i++);if(i==m) printf(“%d shi sushu!n”,m);else printf(“%d bu shi sushu!n”,m);} #include “stdio.h” main(){ int i,m; scanf(“%d”,&m); for(i=2;i<=m;i++) if(m%i==0)break; if(i==m) printf(“%d shi sushu!n”,m); else printf(“%d bu shi sushu!n”,m);} #include “stdio.h” #include “math.h” main(){ int i,m,s; scanf(“%d”,&m); s=sqrt(m); for(i=2;i<=s;i++) if(m%i==0)break; if(i==s+1) printf(“%d shi sushu!n”,m); else printf(“%d bu shi sushu!n”,m);} #include “stdio.h” #include “math.h” main(){ int i,j; for(i=100;i<=200;i++) { for(j=2;j<=i;j++) if(i%j==0)break; if(j==i) printf(“%-10d”,i);} } #include “stdio.h” #include “math.h” main(){ int i,j,s; for(i=100;i<=200;i++) { s=sqrt(i); for(j=2;j<=s;j++) if(i%j==0)break; if(j==s+1) printf(“%-10d”,i);} } #include for(i=2;i<=10000;i++) { s=0; for(j=1;j if(i%j==0) s+=j; if(i==s) printf(“%6dn”,s); } } #include “stdio.h” main(){ int i,j,k;for(i=0;i<=35;i++) for(j=0;j<=35;j++) if((i+j==35)&&(2*i+4*j==94)) printf(“ni=%-10dj=%-10d”,i,j);} #include “stdio.h” main(){ int i,j,k; for(i=0;i<=19;i++) for(j=0;j<=33;j++) for(k=0;k<=100;k++) if((i+j+k==100)&&(5*i+3*j+k/3==300)) printf(“ni=%-10dj=%-10dk=%-10d”,i,j,k);} #include “stdio.h” main(){ int i,j,k;for(i=0;i<=19;i++)for(j=0;j<=33;j++) { k=100-i-j; if(15*i+9*j+k==300) printf(“ni=%-10dj=%-10dk=%-10d”,i,j,k); } } #include “stdio.h” main() { int i,j,k; for(i=0;i<=19;i++) for(j=0;j<=33;j++) {k=100-i-j; if(5*i+3*j+k/3==100)printf(“ni=%-10dj=%-10dk=%-10d”,i,j,k);} } #include “stdio.h” main(){ int m,n,k; for(m=1;m<=9;m++) { for(n=1;n<=m;n++) printf(“%d*%d=%-5d”,n,m,n*m); printf(“n”); } } #include “stdio.h” main(){ int i; for(i=1;i<=5;i++)printf(“********n”);} #include “stdio.h” main(){ int i,j; for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++) printf(“ ”); printf(“********n”);} } #include “stdio.h” main() { int i,j; for(i=1;i<=5;i++) { for(j=1;j<=20-i;j++) printf(“ ”); for(j=1;j<=i;j++) printf(“*”); printf(“n”); } } #include “stdio.h” main() {int i,j; for(i=1;i<=5;i++) { for(j=1;j<=20-i;j++) printf(“ ”); for(j=1;j<=2*i-1;j++) printf(“*”); printf(“n”); } } #include “stdio.h” main(){ int i,j; for(i=1;i<=5;i++) { for(j=1;j<=i-1;j++) printf(“ ”); for(j=1;j<=11-2*i;j++) printf(“*”); printf(“n”); } } #include “stdio.h” main(){ int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(“ ”); for(j=1;j<=2*i-1;j++) printf(“*”); printf(“n”); } for(i=1;i<=3;i++) { for(j=1;j<=i;j++) printf(“ ”); for(j=1;j<=7-2*i;j++) printf(“*”); printf(“n”); } } #include “stdio.h” main(){int i,j,k,m,n,s=0;for(i=0;i<=2;i++) for(j=0;j<=9;j++) for(k=1;k<=9;k++) {m=100*i+10*j+k; n=100*k+10*j+i; if((n>2*m)&&(n<3*m)) { s++; printf(“%d ”,m); if(s%8==0) printf(“n”);} } } 程序的循环结构-For循环语句 教材分析 本课使用的教材为《算法与程序设计》(浙江教育出版社),本节内容为第四章“VB程序设计初步”中一个重要的知识点。这是对之前学习的赋值语句、选择语句的知识和能力的提升,也是以后学习过程、函数以及利用VB编写综合应用程序的基础和前提,起着重要的承前启后的作用。 循环结构是程序设计的三种基本结构之一,是程序设计的基础。VB中用For„Next和Do„Loop语句来构造循环,并能相互代替。For循环这部分内容分两次课完成,教学目标 (1)知识与技能: a.理解循环的概念,掌握FOR循环语句的常见格式和作用; b.理解For循环语句执行过程的几个步骤,了解各种条件缺省时循环的执行情况; c.学会分析问题,画出循环结构流程框图,并能根据流程图编写程序。(2)过程与方法: a.通过顺序结构和循环结构程序对照,体会循环语句的特点和优越性; b.通过立即窗口测试代码,理解循环控制变量初值、终值、步长与循环次数的关系; c.通过对流程图的分析,理解循环语句的执行过程。(3)情感态度与价值观: a.通过对具体问题的解决,使学生获得成就感,为今后自主学习打下基础; b.通过逐层推进的教学设计,培养学生研究探索的精神,激发学习的兴趣; c.通过交流评价、教师引导,培养学生养成良好的编程习惯。 1.教学重点、难点 重点:FOR循环语句的语句格式及循环执行过程。 难点:根据实际问题,设计算法,画出流程图并编写程序。 一. 教法 教学方法:讲解法、演示法:多媒体课件讲授、配合板书; 任务驱动法:从实例入手,先实际后理论。 教学环境:多媒体电子网络教室 二. 教学过程 (一)复习提问、衔接导入(5’) 1、屏幕显示:例1:输出1到10之间的自然数。 得出:题目中若出现许多有规律性重复运算,这就需要掌握循环结构程序设计方法。 2、明确目标,引入课题。循环结构程序的特点是:程序中的一组语句(称为循环体)在一定条件下可多次被重复执行,今天就一起来研究第三种程序设计结构---循环程序设计中的FOR-NEXT语句。 (一)启发引导、获取新知(15’) 1、多媒体大屏幕展示课题For循环的语法格式和流程图。 For-Next循环语句的格式: 说明:步长值可以为正数或者负数。 1、教师指导学生分析For-Next循环语句在例1程序中的执行过程。 ② 分析For-Next循环语句在实例1程序中的执行过程:(如流程图1) ③ 讲解For-Next循环语句的执行过程:(如流程图2) 3、分析程序2,程序如下所示: 该题中运用到了累加器,教师在这里可对累加器的原理进行分析。 1、教师归纳 ① 循环语句的功能: 利用循环语句,可以实现循环体内的语句反复执行。② 循环结构: 如果程序中含有循环语句,这种程序结构称为循环结构。③ 思考:在For-Next循环语句中,循环次数由什么决定? 循环的次数由初值,终值和步长值共同决定。 ④ 关于For-Next语句,利用立即窗口测试代码,并补充说明以下几点: 1)关键字For、to、Next 和“=”不能省略不写。2)初值、终值、步长可以是数值型常量、变量或表达式。 3)步长可以是正数,也可以是负数,当步长为1时,可省略“step 1”。 (二)实践体验、形成技能(10’) 学生的智力能力是在练习中得到发展和提高的。设计练习时,遵循由浅入深的原则,按照分层次的要求,精选习题, 使学生加深对本节课知识的理解,根据本节的重难点,及时发现问题,并加以改进。在例 1、例2的基础上,为更好地理解本课内容,激发学生的创造性思维,设计了以下几个例题。 1、屏幕显示:例3 :编程求1-100之间3的倍数的和。 该题重点要求学生能根据实际情况,确定循环变量的初值和改变量,启发学生该题循环变量的初值为 3、变化值为3,得出循环体、循环条件。引导学生画出程序流程图后编程,切换到VB,运行并调试程序。该题会有学生用另一种方法解答,可以引导学生比较两种方法的优劣性,并引出例4。方法1: 2、屏幕显示:例4 :编程求1-100之间是3的倍数或是5的倍数的和。 该题重点要求学生能根据实际情况,确定循环体的编程情况。经过例3两种方法的讲解,部分学生可能会落入原有的思维模式,他们会利用两个for循环,先求出3的倍数的和,然后再求出5的倍数的和,最后把两个和相加。这样做,问题是解决了吗?如果某个数既是3的倍数又是5的倍数(譬如15),就重复 加了两次。怎么解决这个问题?启发学生在例3第2种方法的基础稍做改动,利用if语句、逻辑或(or)以及求余运算符(mod)完成循环体。 具体操作时,先引导学生画出程序流程图再编程,切换到VB环境,运行并调试程序。 本环节要达到的目的:一是巩固For语句在头脑中的印象;二是利用For语句解决实际问题。 (一)拓展延伸、解答疑难(10’) 这部分的安排主要是给学有余力的学生提供一个更高学习的平台,同时对那些学习困难的学生进行个别辅导教学,也是对教学难点的深化,体现了分层教学的教学原理。 1、屏幕显示:例5 :包装1200个变形金刚,要求是: (1)包装的规格分别是:小盒(每盒5个)和大盒(每盒12个);(2)每种规格的盒数可任意,但每盒都必须装满。 现在有盒子170个,请设计一个算法,输出大、小盒子分别有多少个。算法: 设1200个变形金刚分别装入X和小盒和Y个大盒,它们必须满足下面等式: X+Y=170 5*X+12*Y=1200 考虑X、Y值可能的变化范围:由要求(2)可知一个包装方案中每种规格的盒数是任意的,因此,X、Y的最小值都是0;当Y取最小值0时,此时的方程5*X+12*Y=1200 等价于5*X =1200,因此X可取的最大值是240。因此可以指定X为循环控制变化,其变化范围是[0,240],Y=170-X,当X、Y 满足等式5*X+12*Y=1200时,Y、X即为所求的大、小盒子数。 这个题目主要是给学习能力强的学生安排的,因此教师可以先要学生独立思考,适当时候给予提示。对这个题目进行分析时,教师可以引出枚举算法的概念,并将其实践到这个题目中去。 2、这个环节中,教师到学生中进行个别辅导,可利用广播教学或者投影仪对学生中普遍存在的问题进行集体解答。 (一)交流评价、课堂小结(5’) 开展交流评价,对学生有激励、诊断和促进作用。学生通过相互参照比较,能发现自己的不足和长处,取长补短;教师给学生交流表达的机会,能培养学生的表达能力。课堂小结能在较短的时间内帮助学生回顾本堂课的内容,巩固已学过的知识。因此,这部分教学环节是必要的,也是非常重要的。 1、选择两到三位学生代表,给大家展示自己的程序,教师可以趁此对程序有问题的学生进行全班解答。 2、有些学生可能对程序界面进行了美化,每个学生的程序可能有所不同,3、教师对学生程序中存在的问题进行总结性评价并提出意见。 4、给出课外练习,旨在培养学生的逻辑思维和独立思考并解决问题的能力。请同学们开展互评和自评并选出完成得最好的同学。 课外练习题:例5中,如果大、小盒子总数不确定,要求输出所有可能的包装方案,并输出该包装方案中对应的盒子总数,如何修改并完善这个程序? 高一数学(必修3) 第四课时 循环结构 【教学目标】 1)知识与技能 学生能理解循环结构的概念;把握循环结构的三要素;能识别和理解循环结构的框图以及功能;能运用循环结构设计程序框图以解决简单的问题。 2)过程与方法 通过实例探究与应用循环结构,培养学生的观察类比,归纳抽象能力;参与运用算法思想解决问题的过程,培养学生严密精确的逻辑思维能力。 3)情感与态度 通过师生、生生互动的活动过程,培养学生主动探究、勇于发现的科学精神,提高数学学习的兴趣,体验成功的喜悦。 【教学重点】 循环结构的概念、功能、要素、框图及应用。 【教学难点】 描述和应用循环结构时,三要素的准确把握和正确表达。 【教学方法】 探究启发式教学方法 【教具】 采用多媒体辅助教学 【教 学 过 程】 复习:请同学们回顾已学算法的基本结构有哪些?并画出结构示意图。 情景:1.视频(邢慧娜2004万米长跑金牌) 2.在学校的万米长跑测试中,你每跑1圈(400米),会想是否跑完了全程。如果没有跑完全程,那么又会想离终点还有多远。 学生活动:1)引导分析情景2中关键词 2)学生小组讨论,然后黑板板书(情景2算法及流程图)3)教师点评:引出循环类型、循环三要素。(建构知识) 建构知识:循环结构 1.定义: 注:1)循环体 2)循环结构不能是永无止境的“死循环”,因此,循环结构中_____________。高一数学(必修3) 2.分类: 注: 典型例题 写出1+2+3+4+5+…+100的算法并画出流程图。 变式训练 变1:步骤B更改为: i←i+2 ;则流程图表示一个什么样的算法? 变2:步骤A和步骤B交换位置会怎样?要达到预期结果,应做怎样的修改? 变3:若表示算法1×2×3×···×100,则流程图应如何修改? 练习:写出求1×3×5×···×99的一个算法,并画出流程图。 1变4:步骤A更改为:ss ;则流程图表示一个什么样的算法? i 思考 若表示算法1 课堂小结 作业 11111,如何画流程图? 23499100 P14:练习1(至少两种形式作答),2 《循环结构》说课稿 《循环结构》说课稿 1 一、说教材 1、教学分析:《神奇的输出方法——PRINT》,是新版高中信息技术教科书必修模块第六章《用程序解决实际问题》中的内容。高中阶段的程序设计的学习不是为了培养程序设计人员,而是希望通过程序设计的平台让学生进一步了解电脑解决各种问题的方法,激发学生更深入学习电脑基本特性的兴趣;是学生解决问题的思维锻炼的途径;同时让年轻一代理解我们真正应该如何利用电脑。 2、教学目标:学习PRINT方法的基本语法,能够灵活运用循环结构实现PRINT输出的多样化,学习循环结构的嵌套组合。 认知目标:理解循环结构解决问题的思考方式;体验PRINT方法与LABEL控件输出的区别,了解循环变量在双重循环中的变化规律。 能力目标:激发学生对程序的学习兴趣;培养学生的基本电脑应用能力;提高学生对电脑所起作用的认识。 3、教学重点:Print方法中换行语句的使用;循环变量在循环体中的引用。 4、教学难点:循环结构的嵌套使用;循环变量在双重循环中的变化规律。 5、教学准备:PowerPoint课件、多媒体教室。 6、课时:1课时。 二、说教法 教学方法:演示法、任务驱动法和巡堂辅导法 “教必有法,而教无定法”,只要方法适当,必定有效。信息技术是一门实践性很强的学科,对很多学生来说,信息技术课就是操作电脑课,要听教师讲理论课,没兴趣,坐不住,所以我首先采用对比法、提问法,对学生学习过的输出控件的分析,提出该控件的不足,且提问有没有其他输出的办法。让学生一上课就集中注意力。另外,在讲授本章的内容过程中,精心安排了层层递进的例题,通过连贯的提问法逐步深入讲解PRINT方法和复杂循环结构的使用。最后通过多个程序任务的驱动和教师巡堂辅导下,使学生进一步练习和强化PRINT方法和循环结构的语法和实际运用,进而培养学生的自学能力与动手实践能力。 三、说学法 在新课程理念下,课堂是学生的,学生为主体,教师为主导。在课堂上通过问题的提出引导学生思考如何运用循环解决问题,学生在课堂上应积极主动,自主、探究,发现问题,解决问题,体验电脑解决问题的思路和方法。 四、说教学过程 1、课前准备 (1)为了能顺利导入新课,通过对原有知识的再提高,设置新的问题导入由于Label控件的灵活性不够,所以我们学习VB程序中另外一种截然不同的输出方法。 (2)为了能让学生顺利进行操作练习,必须确保所有学生机正常使用; (3)为了使演示能顺利进行,确保教师机正常运作。 2、课堂教学 (1)导入新课。一个完整的程序作品包括“数据输入”部分,“数据处理”部分和“数据输出”部分。在VB程序中我们经常使用Label控件来实现数据的输出,Label控件能很方便的对输出的文字的外观进行美化,但是如果想用Label控件输出各种符号、文字组成的图案时,我们可以发现Label控件的灵活性就远远不够了。所以今天我们学习VB程序中的另外一种截然不同的输出方式——Print方法。 (2)通过演示文稿中三个例题的讲解,配合板书与相关问题,让学生了解PRINT方法的语法特点,通过对例题的比较发现循环体和循环变量在循环结构中的作用。由此理解根据电脑特点解决问题的思路算法。 (3)设置程序任务 通过适当难度的.程序任务的提出,要求学生在了解学习循环结构解决问题的基础上,运用PRINT方法实现输出文字的有规律排列。可以给出一些提示,让学生独立或者同桌一组讨论设计相关程序。以此同时,老师要到课堂中进行巡堂辅导。 (4)老师的巡堂辅导 老师的巡堂辅导是非常重要的,在学生进行操作练习的过程中,肯定会碰到各种各样的问题,老师的巡堂辅导能及时的帮助他们解决;能及时掌握学生反馈的各种信息,为下一步的问题反馈做准备;还可以对不同程度的学生进行个性化辅导。 (5)反馈学生问题 反馈学生出现的各种问题,及时解决,使学生所学知识得到进一步的巩固。 (6)总结 提出程序学习的意义所在,进一步表明程序学习的重要意,提高学生学习的兴趣。 五、课后总结 Print方法作为VB中数据输出的重要方式之一,它能够灵活有效的控制输出字符的排列方式,这一点正是Label控件所欠缺的。 《循环结构》说课稿 2 一、教材分析 (一) 教材地位 《循环结构》是人民教育出版社课程教材研究所编著的普通高中课程标准试验教科书数学(必修3)中§1.1.2的内容. 循环结构是算法三大基本逻辑结构中最灵活,内涵最丰富的一种结构,广泛存在于许多著名算法设计中,比如二分法,欧几里德算法,秦九韶算法等,且循环结构是学习循环语句的基础,循环结构中蕴含的“递推”思想为必修五数列的学习奠定了基础,是整个算法教学的重点与难点,同时也是高考关注的重点. 本节课是在学习了顺序结构,条件结构的基础上进行的,安排1课时. (二) 教学目标 (1) 知识与技能 ①理解循环结构概念; ②把握循环三要素:循环变量赋初值、循环体、循环的终止条件; ③能识别和理解循环结构的框图以及功能; ④能运用循环结构设计程序框图解决一些问题. (2) 过程与方法 通过由实例对循环结构的探究与应用过程,培养学生的观察类比,归纳抽象能力;参与运用算法思想解决问题的过程,逐步形成算法分析,算法设计到算法表示的程序化算法思想. (3) 情感、态度与价值观 感受算法思想在解决具体问题中的意义,提高算法素养;经历体验发现、创造和运用的历程与乐趣,体验成功的喜悦;培养学生形式化的表达能力,构造性解决问题的能力,以及程序化的思想意识. (三) 重难点分析 由于循环变量赋初值、循环体、循环的终止条件是在顺序结构和条件结构未出现的概念,同时也是掌握循环结构的关键,由此确立节课的重难点是: 重点:循环结构的三要素. 难点:循环三要素的确定以及循环执行时变量的变化规律. 二、学情分析 学生已经学习了算法的概念、顺序结构、条件结构及简单的赋值问题.高一学生形象思维、感性认识较强,理性思维、抽象认识能力还很薄弱,因此教学中选择学生熟悉的,易懂的实例引入,通过对例子的分析,使学生逐步经历循环结构设计的全过程,学会有条理的思考问题,表达循环结构,并整理成程序框图. 三、教法分析 鉴于本节课抽象程度较高,难度较大.故遵循引导发现,循序渐进的思路,采用问题探究式教学.在教学过程中通过不断地提出问题,促进学生深入思考.贯穿本节课的主要问题是:你能在社会生活和学习中举出循环现象的例子吗?你能从循环现象抽象出循环结构概念吗?1n n s s n -=?中的S n 和S n-1能否用一个量表示?如何表达2,3,100n =?算法中s s i =?与1i i =+ “等号”与“变量”的涵义等同于数 学中的相应涵义吗?循环结构是通过哪些量和式将一个很长的顺序结构简化为一个精简的结构?当型循环结构与直到型循环结构框有何不同?如何转化?通过以上问题的解决使学生有效地掌握本节课的内容。 教学内容:循环结构程序设计 教学课时:2课时 【教学目的】 1、循环的基本思想 2、while、do-while和for 3、三种语句特点 4、孰能生巧 【教学重点】 三种循环语句的使用。【教学难点】 三种循环语句区别。【教学方法】 讲解、演示、练习 第一课时 一、循环的基本思想 1、循环就是找规律,学习分析问题和解决问题的能力 2、讲解案例灰太狼抓羊问题 3、分析抓羊规律,引出循环概念 二、while、do-while和for 1、分析灰太狼抓羊问题,提出解题思路 (一)设灰太狼每次抓羊i只 (二)设灰太狼一共抓到羊sum只 (三)设灰太狼每天抓羊后笼子里有羊sum + i只 其中:i为循环变量,sum + i为循环体 2、介绍while循环的一般形式 3、一边分析一边编程 (一)主函数 (二)定义变量 (三)运算过程 (四)输出结果 4、编写循环程序必须注意的几个问题 (一)循环控制变量必须有正确的初值 (二)在循环体内应有改变其值的语句 (三)其值的改变应使得表达式的值最终趋向于零(循环结束条件),否则将形成死循环 5、引出do-while循环 6、介绍do-while循环的一般形式 7、使用do-while循环解决灰太狼抓羊问题 8、说明:while与do-while相似点 9、引出for循环 10、介绍for循环的一般形式 11、使用for循环解决灰太狼抓羊问题 12、说明:for循环中三个表达式使用方法 第二课时 一、三种语句特点 1、while与do-while的区别 2、两语句与for的区别 二、孰能生巧 1、提出问题姜太公钓鱼 2、分析题目中可用循环解决的规律问题 3、分析姜太公钓鱼问题,提出解题思路 (一)设太公每次钓鱼数量n = n + 2条 (二)设一共钓到鱼的数量sum条 (三)设每天钓鱼后鱼的数量sum + n条 4、一边分析一边编程 (一)主函数 (二)定义变量 (三)运算过程 (四)输出结果 5、课程小结 课后练习 1、概述三种循环语句while、do-while和for之间的区别与联系。 2、计算无理数e的值,直到1/n!<10-5(P44,第4题)。 3、输入任意字符串,把字符串中小写字母转换成大写字母,并输出结果(P44, 第3题)。 4、输入5个整数,计算其中正数的和(P47,1) 5、编程显示100以内所有能被3和7整除的整数(P47,6、输出用户输入的两个整数之间的所有偶数。 7、编程求1!+2!+3!+…+n!的和。 2)。第二篇:FOR循环结构
第三篇:循环结构教案
第四篇:《循环结构》说课稿
第五篇:循环结构程序设计教案