




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章程序设计初步概述本章前三节将通过一些具体的pascal程序实例来帮助学生了解pascal程序的基本结构,掌握程序的三种基本结构:顺序结构、 选择结构、 循环结构, 了解使用用户自定义数据类型:枚举类型、 子界类型及数组类型进行数据定义的方法。第四节, 介绍了函数和过程的有关知识,包括函数和过程的递归调用以及其它一些基本算法,通过阅读程序和尝试编写简单程序让学生能够掌握定义、编写和调用函数和过程的方法。最后, 在本章第五节中介绍了面向对象的程序设计, 要求学生在前几节的内容上,进一步体会编写大型程序或复杂程序的困难性,从中领会面向对象设计思想的精髓所在。本章的主要内容节名教学内容顺序结构程
2、序设计通过一些具体的pascal程序来介绍顺序结构程序设计的编程思想,其中着重介绍了赋值语句、输入语句、输出语句、复合语句的使用方法。选择结构程序设计通过一些具体的pascal程序来介绍选择 (分支) 结构程序设计的编程思想,其中还针对if 语句、 case语句作了较为深入详细的介绍和比较。循环结构程序设计通过一些具体的pascal程序来介绍循环 (重复) 结构程序设计的编程思想,其中详细介绍了三种循环语句:for 语句、 while 语句、 repeat 语句, 本节后半部分还详细介绍了有关循环嵌套的知识及三种用户自定义数据类型:枚举类型、子界类型和数组类型。函数和过程通过一些具体的pasc
3、al程序来对函数和过程作了较为详细深入的介绍,其中包括函数或过程调用时的形式参数、实际参数、 和标示符的作用域等相关知识,最后,介绍了函数或过程的递归调用的使用方法。面向对象程序设计能够熟悉与面向对象方法有关的六个重要概念,能够了解当今比较流行的几种面向对象语言;学习程序示例是如何编写面向对象程序的。第一节顺序结构程序设计一、教材分析教学目标目标实现知识掌握顺序结构程序设计的思想方法。贯穿于整个教学活动过程中掌握四种语句: 赋值语句、输入语句、输出语句、复合语句。上机实践:学生练习为主,教师辅导为辅,结合上机实践。技能进一步了解并掌握编写pascal 程序的全过程,并能独立运行 pascal程
4、序,得出运行结果。贯穿于整个上机实践的过程之中独立分析、灵活运用所学知识解决实际问题的能力贯穿于整个教学活动过程中情感态度价值观培养严谨的程序编写的风格的习惯,体验编写pascal程序的过程,激发学生学习编写程序的兴趣和学习热情贯穿于上机实践的整个过程之中养成独立分析、善于归纳总结的习惯贯穿于整个教学活动过程中。教学重点与难点本节主要是学习顺序结构程序设计的编程思想以及四种最基本的语句:赋值语句、 输入语句、 输出语句和复合语句。本节的重点在于输入和输出语句的学习,输入语句和输出语句不仅各有两种形式,而且有多种组合,比较复杂, 学生要能灵活运用这两种语句需要一定的理解能力并要多加练习才能体会,
5、相较而言,输出语句更为复杂一些,变化更多一些, 这也是本节的难点。 除了输入输出语句之外,学生还要掌握赋值语句的作用和使用方法及相关的一些注意事项, 比如赋值号两边应赋值相容的概念,此外,通过本节的学习,学生还应能了解复合语句的作用及如何在程序中使用复合语句。二、教学建议课时安排建议本节内容建议用1 课时完成。教学准备1机房准备编写 pascal程序对机房的软硬件配置要求不高,操作系统选择windows 98、windows 2000 或 windows xp 均可, cpu 为 pentium 以上即可,内存为32m(windows 98)以上,每位学生一台计算机。2教师准备熟练掌握 tur
6、bo pascal 7.0 和一些基本的常用算法。搜集整理一些常用的算法分析题例放在教师机上;提供一些专业的算法分析和pascal程序设计网站的索引供学生学习使用。3学生准备具备基本的信息技术操作技能,包括鼠标、键盘使用,文字输入等。教学过程安排建议1导入新课,提出问题通过设计一些练习帮助学生复习前面一个章节中的相关知识,尤其是关于算法和pascal编程环境的内容,然后演示其中一个算法的程序,激发学生的学习兴趣,导入新课如何编写一个pascal 程序。而程序是由语句组成的,解剖刚才那个程序,可以找到pascal 程序的最基本的语句:赋值语句、输入语句、输出语句和复合语句。2教师介绍赋值语句赋值
7、语句是pascal 中较为简单的语句,在讲解赋值语句时,教师可以从以下几方面来讲解: 赋值语句的格式、赋值语句的作用、赋值号左边的变量应与赋值号右边表达式的结果值赋值相容。教师可在介绍过程中辅以相应的具体语句,让学生来判断语句的正确性(重点可从赋值相容性作考虑) ,也可让学生写出最终结果,以此让学生掌握赋值语句,提高学生的学习兴趣。3上机实践(1)教师简要介绍输入语句在讲授这部分知识时,教师可简要介绍输入语句的格式、作用,重点是让学生通过上机实践真正掌握输入语句是如何在程序中使用的。(2)上机实践使用输入语句教师提供程序代码(亦可用课后练习)让学生上机实践体会输入语句的使用方法,read语句和
8、 readln 语句的异同点。此过程是学生将知识从理论转化为实践的过程,教师在此过程中应关注每一位学生知识的具体掌握情况, 要有针对性地加以个别辅导,务必使每一位学生能真正掌握输入语句的使用方法,在程序中做到灵活使用输入语句。同时可以发挥出个别优秀学生充当小老师的角色,发扬学生之间互帮互助的精神,达到共同进步的目的。(3)学习使用输出语句在学生完全掌握输入语句的基础上,教师可让学生自学输出语句的使用方法和作用,同时教师提供一些程序代码,让学生结合输入语句来学习输出语句的使用方法,包括write 语句和 writeln 语句的异同、输出域宽的作用和设置方法等。通过表格列举对比等各种方式,将输入输
9、出语句进行并列对比的学习,加深理解。(4)学习使用复合语句对于复合语句,此处教师只需作简要介绍,主要强调复合语句的格式、作用(类似于把多句语句作为一句语句来使用)。4总结本节课的重点在于让学生在编写程序的过程的学会使用赋值语句、输入和输出语句, 了解复合语句的格式和作用。5作业:结合上机练习题让学生自己动手编写完整的turbo pascal 程序。教学参考练习题:1写出下列语句的输出结果:(1)writeln (a=,12:5); writeln ( b= ,20:5); writeln ( a*b= ,12*20:5); writeln ( a/b= ,12/20:5:1); 输出:a=12
10、 b=20 a*b= 240 a/b= 0.6 (2)x:=10;i:=1;writeln ( x=,x:4) ;writeln ( i= ,i:4) ;x:=-x;i:=i+1;writeln ( x=,x:4) ;writeln ( i= ,i:4) ;输出:x= 10 i=1 x= -10 i=2 2写出执行结果:(1)输入数据为:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 若执行语句为:read(a,b, c)read(d,e, f,g,h)read(i,j,k)执行结果a= 1 b= 2 c= 3 d= 4 e= 5 f= 6 g= 7 h= 8 i
11、= 9 j= 10 k= 11 (2)输入数据为:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 若执行语句为:readln(a,b,c)readln(d,e,f,g,h)readln(i,j,k)执行结果a= 1 b= 2 c= 3 d= 5 e= 6 f= 7 g= 8 h= 9 i= 13 j= 14 k= 15 思考题:1. read与 readln,这两句语句有何区别?解答: readln 语句和 read 语句不同之处在于读取数据并赋值给各个变量之后,readln 会自动换行,从下一行开始再读取数据,而read 语句执行完后,不会自动换行,原数据行中多
12、余的未读数据可以被下一个输入语句读取。此外,readln 语句中也可以不包含变量名表。2. write 与 writeln ,这两句语句有何区别?解答: write 和 writeln 的区别在于: write 语句在输出 后不换行,光标停留在最后一项的后一列,而writeln 语句按项输出后会自动换行,光标停留在下一行的第一列。此外, writeln 语句还允许不含有输出项,即writeln; 表示不输出任何内容直接换行。上机练习题:1.输入两个数,输出它们的和、差、积、商。参考程序:program ex5101; var a,b:real; begin write(a=); readln(
13、a); write(b=); readln(b); writeln(a+b=,a+b:8:2); writeln(a-b=,a-b:8:2); writeln(a*b=,a*b:8:2); if b0 then writeln(a/b=,a/b:8:2) else writeln(b:8:2, can not be devided by ,a:8:2); end. 2.输入梯形的高、上底、下底的长,输出梯形的面积。参考程序:program ex5102; var a,b,h,s:real; begin write(a=); readln(a); write(b=); readln(b); wr
14、ite(h=); readln(h); s:=(a+b)*h/2; writeln(s=,s:8:2); end. 3.输入三角形的三条边的长,输出三角形的面积。参考程序:program ex5103; var a,b,c,p,s:real; begin write(a=); readln(a); write(b=); readln(b); write(c=); readln(c); if (a+bc) and (a+cb) and (b+ca0 then begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c); writeln(s=,s:8:2); e
15、nd else writeln(input error!); end. 4.输入球的半径,输出球的表面积及球的体积。参考程序:program ex5104; const pi=3.14; var r,s,v:real; begin write(r=); readln(r); s:=4*pi*r*r; v:=4*pi*r*r*r/3; writeln(s=,s:8:2); writeln(v=,v:8:2); end. 第二节选择结构程序设计一、教材分析教学目标目标实现知识掌握选择结构程序设计的思想方法。贯穿于整个教学活动过程中掌握两种语句: if 语句(单分支结构、 双分支结构、 if语句的嵌
16、套多分支结构)、 case语句 (多分支结构) ,嵌套 if 语句改称为case语句。上机实践:学生练习为主,教师辅导为辅,结合上机实践。技能进一步了解并掌握编写pascal程序的全过程, 并能独立运行 pascal程序,得出运行结果。贯穿于整个上机实践的过程之中独立分析、灵活运用所学知识解决实际问题的能力贯穿于整个教学活动过程中情感态度价值观培养严谨的程序编写的风格的习惯,体验编写pascal程序的过程,激发学生学习编写程序的兴趣和学习热情贯穿于上机实践的整个过程之中养成独立分析、善于归纳总结的习惯贯穿于整个教学活动过程中。教学重点与难点本节主要是学习选择结构程序设计的编程思想以及if 语句
17、和 case语句。本节的重点在于 if 语句, if 语句形式较多,有单分支形式,有双分支形式,if 语句嵌套的形式,且嵌套也有多种形式, 比较复杂, 这也是本节的难点所在。但学生只要能够理解选择结构的编程思想,对于如何在具体的编程中灵活运用if 语句也不是难事,相较而言,case输出语句格式要稍微较为简单一些,变化也少一些。二、教学建议课时安排建议本节内容建议用1 课时完成。教学准备1机房准备编写 pascal 程序对机房的软硬件配置要求不高,操作系统选择windows 98、windows 2000 或 windows xp 均可, cpu 为 pentium 以上即可,内存为32m(wi
18、ndows 98)以上,每位学生一台计算机。2教师准备熟练掌握 turbo pascal 7.0 和一些基本的常用算法。搜集整理一些常用的算法分析题例放在教师机上;提供一些专业的算法分析和pascal 程序设计网站的索引供学生学习使用。3学生准备具备基本的信息技术操作技能,包括鼠标、键盘使用,文字输入等。教学过程安排建议1导入新课,提出问题教师可以将一个程序按语句进行分割,然后让学生对这些语句的名称、功能、 格式等知识进行分析, 然后让学生将这些语句拼接成一个完整的程序,通过这个活动复习上一节的内容,巩固顺序结构和四种基本的语句。然后,要求学生根据程序画出流程图。对比流程图和程序了解两者之间的
19、关系。最后,教师提出判断的要求,让学生思考如何修改流程图和程序。(参考: 问题描述, 初始: 求两个整数的差,引入判断要求: 求两个整数的差的绝对值)2教师介绍if 语句教师将问题进行简化,帮助学生思考,提出问题(教材例1) :编写一个程序,要求输入一个数, 输出这个数的绝对值。由此问题引出选择结构程序设计的思想方法,要求学生画出流程图。然后,开始介绍与判断结构流程图相对应的if 语句。教师将具体程序代码展示给学生看,让学生了解if 语句是如何来实现选择结构的,具体代码编写时的语法格式是怎样的,此处亦可将流程图和程序代码相对应,让学生更容易了解if 语句的语法格式。注意:对于此处的学习,教师应
20、强调让学生掌握if 语句的语法书写格式。3上机实践(1)回到引入新课时的问题,要求编制程序解决问题:输入两个整数,求两数的差的绝对值。让学生通过画流程图和编制程序来描述解题方法。(2)上机实践:在上机调试程序的过程中,要求学生根据题目先设计出测试数据,思考, 如何尽可能地提高测试的全面性。同时,要求学生详细记录测试过程,培养学生进行上机试验的规范。(3)单分支结构、复合语句在选择结构中的应用:教师给出上机练习的程序代码(教材例2) ,让学生对比自己所编写的代码,寻找异同点,发现自己编写代码过程中存在的问题,重点关注if 语句的格式有何不同,引出if 语句的单分支结构的代码编写格式。此外,注意:
21、在turbo pascal 语言中, if 语句里面被构造的语句只能是一条语句,当某个分支的计算要用到多个语句时,就必须使用复合语句来描述。(4)多分支结构if 语句的嵌套教师给出具体题目(教材例3) :根据学生的成绩给予相应的等低,对应关系如下:以下对于此题,分支情况已超出2 个,而 if 语句只能表示两种情况,要表示多种情况时,则需用到if 语句的嵌套,即将if 语句放在另一个if 语句的 then 分支或 else分支中,教师给出具体的if 语句的嵌套的语法格式,让学生自己尝试参照if 语句嵌套的语法格式来编写程序代码。(5)case语句除了 if 语句之外, turbo pascal
22、中还提供了另一种语句:case语句来实现选择结构的程序设计,对于此处的教学,教师只需让学生掌握case语句的语法书写格式,教师可给出具体的 case语句的语法书写格式,让学会将上题中的if 语句改写成case语句。4总结本节课的重点在于让学生用if 语句和 case语句来实现选择结构的程序代码编写。通过上机实践让学生掌握if 语句的语法格式及多分支的嵌套的语法格式,case语句的语法格式,并进行程序代码的改写。5作业:结合上机练习题让学生自己动手编写完整的turbo pascal 程序。教学参考思考题:1if 语句和 case语句之间有什么相同和不同的地方?解答: if 语句和case 语句之
23、间相同的地方:都可以用来表示选择结构。它们的不同之处在于:一句if 语句只能用来表示两种情况,要用if 语句表示多种分支情况时,必须要用if 语句的嵌套才能实现;而一句case语句可以用来表示多种分支的情况。2case语句能不能和if 语句一样进行嵌套?解答: case语句不能和if 语句一样进行嵌套3if 语句描述的程序能不能用case语句来改写?举个例子说明之。解答: if语句描述的程序能用case 语句来改写。例:根据学生的成绩给予相应的等低,对应关系如下:以下program scores; var s:real;ch:char; begin write(input the score:
24、 ); readln(s); if (s=0) and (s=90 then ch:=a else if s=80 then ch:=b else if s=60 then ch=c else ch:=d; writeln(s,-,ch); end. 程序代码可改写为:program scores; var s:real; ch:char; begin write(input the score: ); readln(s); if(s=0)and(s,ch); end. 上机练习:1输入三个数,输出最大数。参考程序:program ex5201; var a,b,c:real; begin w
25、rite(a=); readln(a); write(b=); readln(b); write(c=); readln(c); if ab then if ac then writeln(the max number is :,a:8:2) else writeln(the max number is :,c:8:2) else if bc then writeln(the max number is :,b:8:2) else writeln(the max number is :,c:8:2); end. 2输入年份,判断并输出该年份是否闰年。参考程序:program ex5202; v
26、ar year:integer; begin write(please input year:); readln(year); if (year mod 400=0) or (year mod 4=0) and (year mod 1000) then writeln(yes!) else writeln(no!) end. 3解方程:02cbxax, (a,b,c 由键盘输入)参考程序:program ex5203; var a,b,c,d:integer; x1,x2:real; begin write(a=); readln(a); write(b=); readln(b); write
27、(c=); readln(c); if a=0 then if (b=0) then if c=0 then writeln(there are unlimitedless answer!) else writeln(no answer) else writeln(the answer is :,-c/b:8:2) else begin d:=b*b-4*a*c; if d0 then begin x1:=(-b+sqrt(d)/2/a; x2:=(-b-sqrt(d)/2/a; writeln(there are two different answer :,x1:8:2,x2:8:2);
28、end else if d=0 then begin x1:=-b/2/a; writeln(there are two same answer :,x1:8:2); end else writeln(no answer); end; end. 4分段函数:)0(4)0(0)0(15323xxxxxxy参考程序:program ex5204; var x,y:real; begin write(x=); readln(x); if x0 then begin y:=3*x*x*x+5*x-1; writeln(y= ,y:8:2); end else if x=0 then begin y:=
29、0; writeln(y= ,y:8:2); end else begin y:=sqr(x)-4; writeln(y= ,y:8:2); end; end. 5输入年、月,输出该月有多少天?参考程序:program ex5205; var year,month,day:integer; begin write(input year: ); readln(year); write(input month: ); readln(month); case month of 1,3,5,7,8,10,12:day:=31; 4,6,9,11:day:=30; 2:if (year mod 400=
30、0) or (year mod 1000) and (year mod 4=0) then day:=29 else day:=28; end; writeln(day, days); end. 6输入三角形的三个边,判断它是何类型的三角形(等边三角形?等腰三角形?一般三角形?)参考程序:program ex5206; var a,b,c:integer; begin write(a=); readln(a); write(b=); readln(b); write(c=); readln(c); if (a+bc) and (a+cb) and (b+ca) then if (a=b) an
31、d (a=c) then writeln(deng bian san jiao xing) else if (a=b) or (a=c) or (b=c) then writeln(deng yao san jiao xing) else writeln(bu deng bian san jiao xing) else writeln(bu shi san jiao xing); end. 7计算 1901 年 2099 年之间的某月某日是星期几。参考程序:program ex5207; var y,m,d,i:integer; con:array1.12of integer; dis:lon
32、gint; procedure error(s:string); begin writeln(s); halt; end; function run(y:integer):boolean; begin if (y mod 4 =0)and(y mod 100 0)or (y mod 400=0) then run:=true else run:=false; end; begin repeat writeln(input year,month,day); readln(y,m,d); until (y = 1901)and(y29)then error(error); if (m=2) and
33、 (not run(y)and(d28)then error(error); if (m in 4,6,9,11)and (d30) then error(error); con1:=(31);con2:=(28);con3:=(31);con4:=(30); con5:=(31);con6:=(30);con7:=(31);con8:=(31); con9:=(30);con10:=(31);con11:=(30);con12:=(31); if run(y)then con2:=29; dis:=0; for i:=y+1 to 2099 do if run(i)then inc(dis,
34、366) else inc(dis,365); for i:=12 downto m+1 do inc(dis,coni); inc(dis,conm-d); case dis mod 7 of 0:writeln(thursday); 1:writeln(wednesday); 2:writeln(tuesday); 3:writeln(monday); 4:writeln(sunday); 5:writeln(saturday); 6:writeln(friday); end; end. 8输入三个数,按由大到小顺序打印出来。参考程序:program ex5208; var a,b,c,t
35、emp:real; begin writeln(input a,b,c); readln(a,b,c); if ab then begin temp:=a; a:=b; b:=temp; end; if bc then begin temp:=b; b:=c; c:=temp; end; if a,b:8:2,c:8:2); end. 第三节循环结构程序设计一、教材分析教学目标目标实现知识掌握循环结构程序设计的思想方法。贯穿于整个教学活动过程中掌握并能灵活运用三种循环语句:for 语句、 while 语句和 repeat语句。上机实践:学生练习为主,教师辅导为辅,结合上机实践。了解 goto
36、语句的使用方法掌握运用循环语句编写多重循环的方法掌握枚举类型、 字界类型和数组, 并能运用这些类型编写程序代码技能能够运用循环语句编写pascal程序。贯穿于整个上机实践的过程之中独立分析、灵活运用循环结构解决实际问题的能力贯穿于整个教学活动过程中情感态度价值观培养严谨的程序编写的风格的习惯,体验编写pascal程序的过程,激发学生学习编写程序的兴趣和学习热情贯穿于上机实践的整个过程之中养成独立分析、善于归纳总结的习惯贯穿于整个教学活动过程中。教学重点与难点循环结构程序设计的思想方法是程序设计的三种结构中最为复杂最难掌握的一种编程思想,在 turbo pascal 中,共提供了四种循环语句来实
37、现循环结构,分别是: for 语句、while语句、 repeat语句和 goto 语句。在这四种语句中,前三种语句在具体的编程中运用得较为广泛,也是学生必须掌握并能灵活运用的,所以这部分内容是本节的教学重点。而goto 语句则破坏了程序的整体结构,使程序看上去显得比较混乱,造成程序阅读和差错不易,在具体的编程中一般很少使用,因而在本节的学习中不把它作为教学的重点。难点则是循环变量和循环条件的配合使用对控制循环的作用。二、教学建议课时安排建议本节内容建议用3 课时完成。 第 1 课时学习循环结构的基础知识和语句;第 2 课时用循环结构解决实际问题(程序实例的分析和调试);第 3 课时学习got
38、o 语句、枚举类型、字界类型和数组。教学准备1机房准备编写 pascal 程序对机房的软硬件配置要求不高,操作系统选择windows 98、windows 2000 或 windows xp 均可, cpu 为 pentium 以上即可,内存为32m(windows 98)以上,每位学生一台计算机。2教师准备熟练掌握 turbo pascal 7.0 和一些基本的常用算法。搜集整理一些常用的算法分析题例放在教师机上;提供一些专业的算法分析和pascal 程序设计网站的索引供学生学习使用。3学生准备具备基本的信息技术操作技能,包括鼠标、键盘使用,文字输入等。教学过程安排建议1导入新课,提出问题提
39、出问题:编写程序计算1+2+3+ +99+100 的和。教师可以要求学生使用先前学过的顺序结构和选择结构来解决这个问题,通过尝试, 学生会发现以上两种结构是不能很好地解决这个问题的。如果用顺序结构的话,虽然可以解决问题, 但在程序代码中会有一个很长的表达式,表达式过长编写时容易遗漏或出错,人工检查时非常麻烦,不易检查出错误,不是一个好的解决之道。而选择结构更不能解决问题了。那么, 既然用现有的算法不能解题,就不妨先用数学方法来尝试解题,尽量将此表达式进行简化,让学生进行充分的讨论,寻找到数学方法(可以一题多解)。在学生解题的过程中,教师可以有意识地要求学生寻找表达式里的规律(即重复相加) 。从
40、而引出循环结构,并对循环结构使用的条件、基本概念进行讲解。2介绍循环语句for 语句教师对for 语句的格式,循环变量、初值、终值、for 语句的功能作介绍,并使用for语句编写解决上面问题的程序。循环变量指的就是每一项的值,初值就是第一项的值,即 1,终值就是最后一项的值,即100,而 do 后面的语句中要做的就是将和加上后一项(即循环变量)得到一个新的和。for 语句中每执行一次循环,循环变量的值自动加一,正好符合表达式中相邻两项中,后一项的值等于前一项的值加1 这个规律。 因此可以用for 语句来计算这个表达式的值。最终,只要循环结束后输出和的值即可。教师将具体程序代码展示给学生:pro
41、gram qiuhe; var i,sum:integer; begin sum:=0; for i:=1 to 100 do sum:=sum+i; writeln(sum); end. 同时可结合程序代码进行提问:在程序代码中,i 表示什么, sum又表示什么,为什么在循环计算前要将sum的值变为0(引出求和累加前首先要将和置位0)。3上机实践(1)学生模仿教师所展示的代码编写程序,计算1+2+3+99+100 的和。(2)上机实践:在学生已能模仿教师的代码编写程序的基础上,教师可以给出如下的题目,以达到使学生完全掌握for 语句的目的。计算1+2+3+300 的和,计算100+101+2
42、00 的和。此过程的目的就是通过练习让学生能灵活应用循环初值、循环终值进行程序的编写,也是学生将知识从理论转化为实践的过程,教师在此过程中应关注每一位学生知识的具体掌握情况,要有针对性地加以个别辅导,务必使每一位学生读能真正掌握for 语句的语法格式,循环变量、初值和终值的作用和具体使用的方法,在具体的编程过程中做到灵活使用for语句。(3)要求编程逆序输出26 个大写英文字母。for 语句的另一种格式:for 循环变量:初值downto 终值do 语句;教师分析讲解这个for 语句的作用, 与另一种格式作比较,列表分析异同点。学生自己试着编写程序代码,教师可提示学生也可用字符作为循环的初值和
43、终值。(4)上机实践:学生上机编写程序代码(5)小结: for 语句一般用于循环次数已知的情况,循环次数由初值、终值决定。4学习 while 语句(1)要求编程求正整数m 和 n 的最大公约数。分析:求两个正整数的最大公约数可采用辗转相除法进行求解。教师给出辗转相除的算法:用变量 m,n,temp 分别表示被除数、除数、余数。求 m 除以 n 的余数 temp。若 temp=0,则 n 就是最大公约数;若temp0,则执行第步。将 n 的值放在m 中,将 temp 的值放在n 中。返回重新执行第步。在这个算法中,循环次数是无法事先计算的,因此显然不能用for 语句来编写程序。在turbo pa
44、scal 中提供了另外一种语句来实现循环结构的程序设计while 语句。while 语句的语法格式是:while 布尔表达式do 语句;其功能是: 执行 while 语句时,首先要计算作为循环条件的布尔表达式的值,若值为真,则执行循环体(循环体可以是一个单独的语句,也可以是一个复合语句),在通常情况下,循环体中都包含有改变布尔表达式值的语句,每执行完一次循环体,都会再次计算布尔表达式的值,若值仍然为真,则再次执行循环体,否则,循环结束,执行while 语句后的下一句语句。教师将具体程序代码展示给学生:program gcd; var m,n,temp:integer; begin read(m
45、,n); writeln(m=,m,n=,n); while n0 do begin temp:=m mod n; m:=n; n:=temp; end; writeln(gcd=,m); end. (2)上机实践:学生上机实践体会while 语句在具体程序中的使用,并尝试将计算1+2+3+ +99+100的和由 for 语句循环改为用while 语句编写程序。(3)小结:对于 while 语句,循环结束条件在进入循环体之前测试,若最初的测试值为false ,则根本不进入循环体,也就是说while 循环是属于当型循环。为了能使while 重复能终止, 循环体中一定要有影响布尔表达式的操作,否则
46、该循环就是一个死循环。5学习 repeat 语句(1)教师讲解repeat 语句的格式、功能。除了 while 语句外, turbo pascal 还提供 repeat 语句来实现循环次数未知的循环。其语法格式是:repeat 语句 1; 语句 2; ; 语句 n; until 布尔表达式;其功能是:执行repeat 语句时,先执行循环体,后判断布尔表达式的值是否前为真,若值为真,则退出循环,执行repeat 语句后面的语句。若值为假,则再次执行循环体,然后再判断布尔表达式的值。(2)上机实践:通常情况下,while 语句和 repeat 语句可以相互转化,让学生试着将求正整数m 和 n的最大
47、公约数由while 语句改为repeat语句来实现。(3)小结:while 语句与 repeat 语句的不同:1和 while 语句一样, repeat 语句中的循环体必须包含有改变布尔表达式值的语句,否则将不能退出循环。2和 while 语句不同的是,当布尔表达式的值为真的时候while 语句继续执行循环,而 repeat语句是当布尔表达式的值为真的时候就退出循环。3和 while 语句不同的是,在repeat 语句的结构中,先执行循环体,后判断布尔表达式的值;而while 语句中,先判断布尔表达式的值,后执行循环体,也就是说使用repeat语句至少要执行一次循环体,而使用while 语句可
48、能一次循环也不执行。6学习多重循环解决实际问题的方法(1)教师提出问题:求100300 之间的所有素数。分析:对于任意正整数n,根据素数定义,从2 开始,到n寻找 n 的约数。若能找到约数,则 n 必然不是素数, 否则 n 为素数。在这里,素数的判断需要做的循环次数为2 到n次,而对于n,n 的范围从100 到 300。因而,需要有两重循环来实现,判断数n 是否为素数为内循环, n 从 100到 300 为外循环。教师给出参考程序代码:program prime ;var i,x:integer; begin for i:=100 to 300 do begin x:=2; while (x=
49、trunc(sqrt(i)and(i mod x0)do x:=x+1; if xtrunc(sqrt(i) then write(i:8); end; end. 提问:在这里, 内外循环分别使用的是什么循环语句?它们的循环变量分别是什么?循环变量名可以互换吗?循环变量名可以相同吗?(2)上机实践:要求:将上述程序代码用另外的循环语句进行改写并进行优化。注:此过程是学生将所学知识能否真正进行内化为自己知识的过程,教师在此过程中应不断巡视,当学生有问题应及时进行个别的辅导,给与及时的帮助。(3)上机实践:教师结合课后的上机练习题让学生进行编程,以达到强化和巩固学生知识的目的。7学习 goto 语
50、句教师简要介绍一下第四种循环语句:无条件转向语句goto 语句。对于goto 语句的学习,学生应能掌握其语法格式,及如何在具体的程序中使用goto 语句,但不提倡多用,在具体的编程中, 应尽量不用goto 语句, 因为 goto 语句会使程序出现一种比较混乱的局面,而且,在调试运行时,会对程序代码的纠错带来不便。8学习枚举类型和子界类型(1)教师讲解:turbo pascal 语言,除了提供integer、real、char 、boolean 这四种标准数据类型之外,还可以让用户自定义新的数据类型。其中,用得比较多的就是枚举类型和子界类型。两者的语法格式都是一样的:type =;=; ; =;
51、(2)上机实践:教师演示具体程序代码中如何定义和使用枚举块类型和子界类型的变量。学生上机调试体会具体这两个类型在具体编程中的用法。(3)小结:每一个枚举元素都是标识符,但不能将作为枚举元素的标识符视作为变量名,枚举元素不能被赋值。枚举类型中的第一个元素没有前趋,最后一个元素没有后继。turbo pascal不允许直接读写枚举值,枚举值的输出常用case 语句间接输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。 对于子界类型,常量1 和常量 2 必须是同一种顺序类型(整型、字符型、布尔类型、枚举类型)且常量 1 小于常量 2。9学习数组(1)教
52、师讲解数组的定义:数组是程序中最为常用的数据类型,通常用来描述由固定数目的相同类型的元素组成的数据结构。 数组的每个元素和数组下标相关联,通过数组下标可以找到数组的任意一个数组元素。数组定义的一般形式:type 数组类型标识符: array, of 元素类型;var 数组变量表:数组类型标识符;其中 n 称为数组的维数,每维的下标类型必须是一个顺序类型,其作用是指定数组下标的取值范围。(2)教师介绍数组的操作当数组的元素类型为简单类型时,其下标变量和简单类型变量一样使用。相同类型的数组可以对数组进行整体赋值。(3)上机实践:输入一串字符,以“?”结束,分别统计其中每个数字的0,1,2, 9 出
53、现的次数。分析:可定义一个有10 个元素的一位数组,分别用来记录0,1,2, 9 出现的次数。10课后上机练习结合课后的上机练习题多加练习,巩固所学。教学参考上机练习:1. 算下列式子的值:( 1)1+3+99( 2)1-2+3-4+ +99-100 ( 3)1+2+4+8+ +1 024+2048 参考程序:program ex530101; var i,s:integer; begin s:=0; i:=1; while i=99 do begin s:=s+i; i:=i+2; end; writeln(1+3+.+99= ,s); end. program ex530102; var
54、i,s:integer; begin s:=0; i:=1; while i=100 do begin s:=s+i; i:=abs(i)+1; if i mod 2 =0 then i:=-i; end; writeln(1-2+3+.+99-100= ,s); end. program ex530103; var i:integer; s:longint; begin s:=0; i:=1; while i=100) and (n=999); a:=n mod 10; b:=(n div 10) mod 10; c:=n div 100; s:=a+b+c; writeln(s); end
55、. 3. 输入 10 个数,输出它们的最大值,最小值,平均值。参考程序:program ex5302; var i:integer; n,s,aver,max,min:real; begin s:=0; max:=-1000000; min:=1000000; for i:=1 to 10 do begin write(ipnut the number: ); readln(n); s:=s+n; if maxn then min:=n; end; writeln(the largest number is: ,max:8:2); writeln(the smallest number is:
56、 ,min:8:2); aver:=s/i; writeln(the average is: ,aver:8:2); end. 4. 输出 1000 以内所有能被3 整除,且至少有一个数字是7 的所有正整数。参考程序:program ex5304; var i,n:integer; begin n:=0; i:=1; while i=999 do begin if (i mod 10=7) or (i div 100=7) or (i div 10 mod 10=7) then if i mod 3=0 then begin n:=n+1; write(i:5); if (n mod 5=0)
57、 then writeln; end; i:=i+1; end; end. 5输入一串字符,以“?”结束。统计并输出字母、数字、其它符号的个数。参考程序:program ex5305; var a,b,c:integer; ch:char; begin write(input chars: ); read(ch); a:=0; b:=0; c:=0; while ch? do begin if (ord(ch)=65) and (ord(ch)=97) and (ord(ch)=48) and (ord(ch)=57) then b:=b+1 else c:=c+1; read(ch); en
58、d; writeln(you input letters :,a); writeln(you input numbers :,b); writeln(you input other chars :,c); end. 6输出 100 以内的所有素数。参考程序:program ex5306; var i,j,n:integer; flag:boolean; begin n:=0; for i:=2 to 100 do begin flag:=true; for j:=2 to trunc(sqrt(i) do if (i mod j =0) then flag:=false; if flag th
59、en begin write(i:3); n:=n+1; if (n mod 5=0) then writeln; end; end; end. 7求两个数的最小公倍数(提示:两个数的最小公倍数等于这两个数的乘积除以这两个数的最大公约数的商)参考程序:program ex5307; var m,n,gcd,lcm:integer; begin write(m= ); readln(m); write(n= ); readln(n); if mn then gcd:=m else gcd:=n; while (m mod gcd0) or (n mod gcd0) do gcd:=gcd-1;
60、lcm:=m*n div gcd; writeln(lcm= ,lcm); end. 8编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1 代替字母a ,数字 2 代替字母 b, , 26 代替字母 z, 如遇空格则打印一个星号*, 英文句子以 . 结束。参考程序:program ex5308; var s :array1.1000of integer; i,j:integer; t:char; begin i:=1; read(t); while t.do begin case t of a.z:si:=ord(t)-96; a.z:si:=ord(t)-64; :si:=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不同行业保安技术设备比较计划
- 向学习型组织转型的路径计划
- 2024年贵州省自然资源厅下属事业单位真题
- 软件设计师选拔标准2025年试题及答案
- 2024年甘肃省教育厅下属事业单位真题
- 2025年战略目标与运营风险的交互影响试题及答案
- 山东省青岛十五中学2025届七年级数学第二学期期末教学质量检测试题含解析
- 法学概论摸索与前行试题及答案
- 财务风险对公司战略的影响试题及答案
- 2025届河南省汤阴县七下数学期末预测试题含解析
- 第六单元 资本主义制度的初步确立 复习课件 2024-2025学年统编版九年级历史上册
- 卡西欧手表5213(PRG-550)中文说明书
- 老妈是个菜贩子(2022年海南中考语文试卷记叙文阅读题及答案)
- 2023-2024学年山西省卓越联盟高一下学期5月联考物理试题(解析版)
- 高考英语688高频词汇excel版
- 连栋简易温室结构计算书
- 正餐服务业连锁经营模式研究
- 2023年山东济南先行投资集团有限责任公司招聘考试真题
- 预制混凝土盖板合同范本
- 核磁共振硅谱分析方法
- (高清版)JTGT 3222-2020 公路工程物探规程
评论
0/150
提交评论