《第一讲语言基础知识.ppt》由会员分享,可在线阅读,更多相关《第一讲语言基础知识.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一讲语言基础知识第一讲语言基础知识现在学习的是第1页,共81页信息学奥赛的内容:信息学奥赛的内容:程序程序=计算机语言计算机语言+数据结构数据结构+算法算法FreePascal或或delphiC+等等现在学习的是第2页,共81页信息学奥林匹克竞赛属于智力与应用计算机解题能力的比赛,题目有相当信息学奥林匹克竞赛属于智力与应用计算机解题能力的比赛,题目有相当的难度,解好这类题目,需要具备很强的综合能力的难度,解好这类题目,需要具备很强的综合能力1、观察和分析问题的能力;、观察和分析问题的能力;2、将实际问题转化为数学模型的能力;、将实际问题转化为数学模型的能力;3、灵活地运用各种算法的能力;、灵
2、活地运用各种算法的能力;4、熟练编写程序并将其调试通过的能力;、熟练编写程序并将其调试通过的能力;5、根据题目的要求,自己设计测试数据,检查自己的解法是否正确、是否完备、根据题目的要求,自己设计测试数据,检查自己的解法是否正确、是否完备的能力的能力能够参加信息学竞赛的选手应该具有很强的自学能力,需要学习有关能够参加信息学竞赛的选手应该具有很强的自学能力,需要学习有关组合数学、图组合数学、图论、基本算法、数据结构、人工智能搜索算法及数学建模等知识论、基本算法、数据结构、人工智能搜索算法及数学建模等知识,还要学会高级语言,还要学会高级语言和编程技巧,要具备很强的上机操作能力和编程技巧,要具备很强的
3、上机操作能力考察的能力:考察的能力:现在学习的是第3页,共81页选手应具备的条件:选手应具备的条件:前提:综合成绩突出前提:综合成绩突出1、扎实的数学基础。、扎实的数学基础。2、很强很强的自学能力。的自学能力。3、与同学之间的密切友好的合作与交流。、与同学之间的密切友好的合作与交流。4、持之以恒,坚持不懈的学习。、持之以恒,坚持不懈的学习。5、耐得住枯燥与寂寞。、耐得住枯燥与寂寞。6、不能以参加竞赛为理由而耽误了其他文化课的学习。、不能以参加竞赛为理由而耽误了其他文化课的学习。现在学习的是第4页,共81页程序的基本结构程序的基本结构 程序的上机调试和运行程序的上机调试和运行语言基础一语言基础一
4、现在学习的是第5页,共81页例例1:要将一张要将一张100元的大钞票,换成等值的元的大钞票,换成等值的10元、元、5元、元、2元、元、1元一张的小钞票,每次换成元一张的小钞票,每次换成40张小张小钞票,每种至少钞票,每种至少1张。张。如,有一种换法:如,有一种换法:10元:元:9张张5元:元:1张张2元:元:2张张1元:元:1张张问:一共有多少种换法。问:一共有多少种换法。程序的上机调试和运行程序的上机调试和运行现在学习的是第6页,共81页programex1;varx1,x2,x3,x4,n:integer;beginn:=0;forx1:=1to10doforx2:=1to20doforx
5、3:=1to50doforx4:=1to100doif(10*x1+5*x2+2*x3+x4=100)and(x1+x2+x3+x4=40)thenn:=n+1;writeln(n);end.现在学习的是第7页,共81页例例2、已知:已知:s=1+1/2+1/3+1/n求:使求:使s的值大于的值大于10时最小的时最小的n。现在学习的是第8页,共81页vars:real;n:integer;begins:=0;n:=0;whiles=10dobeginn:=n+1;s:=s+1/n;end;writeln(n);end.现在学习的是第9页,共81页例例3、编一个程序,从键盘输入一个真分数、编一个
6、程序,从键盘输入一个真分数的分子和分母,输出它的小数形式,精确的分子和分母,输出它的小数形式,精确到小数点后到小数点后1000位。位。现在学习的是第10页,共81页varn,m,r,q,i:integer;beginread(n,m);r:=n;write(0.);i:=1;whilei=1000dobeginq:=10*rdivm;r:=10*rmodm;write(q);i:=i+1;end;end.现在学习的是第11页,共81页上机调试运行步骤:上机调试运行步骤:1、运行、运行:FreePascal2、filenew:新建文件新建文件3、compilemake:编译,找错误。编译,找错误
7、。4、runrun:运行:运行5、debugoutput:察看结果察看结果现在学习的是第12页,共81页program程序名;程序名;可以省略可以省略var变量说明;变量说明;begin语句;语句;语句;语句;语句语句;end.Pascal程序的基本结构程序的基本结构vars:real;n:integer;begins:=0;n:=0;whiles=10dobeginn:=n+1;s:=s+1/n;end;writeln(n);end.示例示例:程序的基本结构程序的基本结构 现在学习的是第13页,共81页 从这个简单的程序可以看到:一个一个PASCALPASCAL程序分为两个部分:程序分为两个
8、部分:程序首部和程序体程序首部和程序体。程序首部 程序首部是程序的开头部分,有保留字program后接程序名及程序参数表组成,由分号结束。程序名是用户自己定义的标识符,参数表一般是文件变量名,用于该程序与外界的数据交流。最常用的参数为input和output。在turbo pascal语言中,首部中的参数表可以省略,首部也可省略。程序体 程序体是程序的主体部分,由说明部分和执行部分两部分组成。说明部分:用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中第二行是变量说明,用来定义变量的名称、类型。PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据
9、都必须在说明部分进行定义(或称说明)。也就是说,不允许未说明先使用。执行部分:以begin开始,以end结束,其间有若干个语句,语句之间以分号隔开。一条语句执行一定的功能,所有语句完成程序设计的任务。允许一行写多个语句,也允许一个语句写几行,最后一行的end后加一.号表示结束。现在学习的是第14页,共81页2、完整的、完整的pascal程序框架:程序框架:program 程序名(程序参数表);程序名(程序参数表);label 标号说明;标号说明;const 常量说明;常量说明;type 类型说明;类型说明;var 变量说明;变量说明;function 函数说明;函数说明;procedure 过
10、程说明;过程说明;begin 程序语句程序语句1;程序语句程序语句n;end.程序首部程序体说明部分执行部分现在学习的是第15页,共81页知识预备知识预备基本符号、保留字、标识符基本符号、保留字、标识符一、变量的定义说明:一、变量的定义说明:二、二、Pascal数据类型(整型、实型)数据类型(整型、实型)三、基本语句三、基本语句(赋值语句、输入语句赋值语句、输入语句read、输出语句、输出语句write)四、算术运算符和算术表达式四、算术运算符和算术表达式五、标准函数(数值型函数)五、标准函数(数值型函数)语言基础一语言基础一现在学习的是第16页,共81页基本符号、保留字、标识符基本符号、保留
11、字、标识符1基本符号:是ASCII字符集,主要有:26个英文字母(不分大小写,字符串中的字母例外。十个数字符号。特殊符号+-*/=():=.,;:.现在学习的是第17页,共81页2保留字:保留字:保留字是指保留字是指pascal语言中一些有特殊含义的英文单词,它们已被语言中一些有特殊含义的英文单词,它们已被pascal语言自己使用,都有语言自己使用,都有专门的用途。专门的用途。Pascal 语言中保留字有语言中保留字有36个,可分为以下六种类型:个,可分为以下六种类型:程序、函数、过程的符号:程序、函数、过程的符号:program,function,procedure 说明部分的专用定义符号:
12、说明部分的专用定义符号:array,const,file,label,packed,var,record,set,type,of 语句专用符号:语句专用符号:case,do,downto,else,for,goto,if,repeat,then,to,until,while,with,forward 运算符号:运算符号:and,div,in,mod,not,or 分隔符号:分隔符号:begin,end 空指针常量:空指针常量:Nil7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE(fp新增新增保留字)保留字)现在学习的是第18页,共81
13、页3.标识符:标识符:标识符是以字母开头的字母数字序列(大小写等效,可跟下划线_),用来标识常量、变量、程序、函数等。Pascal中允许的标识符的有效长度为63。标识符分为两大类:标准标识符:标准常量:false,true,maxint(32767)标准类型:integer,real,char,boolean,text 标准文件:input,output 标准函数:abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,pred,round,sin,sqr,sqrt,succ,trunc 标准过程:get,new,pack,page,put,read,readln
14、,reset,rewrite,unpack,write,writeln 自定义标识符 由用户自己在程序首部或说明部分进行定义,但要注意以下几点:不能与保留字同名;避免与标准标识符同名;最好有一定的含义,增加程序的可读性。例如:在程序中如用到数学中的,则在定义该常量时可用PI表示。现在学习的是第19页,共81页一、变量的定义说明:一、变量的定义说明:在程序中用到的所有变量必须事先定义。在程序中用到的所有变量必须事先定义。格式:格式:Var:;:;如:输入如:输入3个整数,求这个整数,求这3个数的平均值。个数的平均值。Vara,b,c:integer;aver:real;说明:说明:1)、同一类型
15、的变量可以放在一起,也可分开写,不同类型的不能放在一起。)、同一类型的变量可以放在一起,也可分开写,不同类型的不能放在一起。2)、变量名:可以是一个字母,也可以是多个字母和数字的组合,但字母开头。)、变量名:可以是一个字母,也可以是多个字母和数字的组合,但字母开头。3)、不能重复定义变量。)、不能重复定义变量。现在学习的是第20页,共81页二、二、Pascal数据类型数据类型整型、实型整型、实型、(字符型和布尔型)、(字符型和布尔型)1、整型整型 类型数值范围 占字节数 Byte0.2551Word0.655352Shortint-128.1271Integer-32768.32767;2Lo
16、ngint-2147483648.21474836474Longword0.42949672954Int64-9223372036854775808.92233720368547758078QWord0.184467440737095516158现在学习的是第21页,共81页2、实数、实数 类型类型范围范围有效位数有效位数占用字节占用字节 Real 2.9e-39.1.7e3811.126Single 1.5E-45.3.4E38 7-8 4 Double 5.0E-324.1.7E308 15-16 8 Extended 1.9E-4951.1.1E4932 19-20 10 Comp -2
17、E64+1.2E63-1 19-20 8现在学习的是第22页,共81页Varbeginread(a,b);c:=a*b;d:=a/b;writeln(c);writeln(d);End.?例例:输入输入:两个整数两个整数a、b(=3000),输出它们的乘积,输出它们的乘积c,商,商d。实数的定点型格式输出实数的定点型格式输出:实数表达式:域宽:小数位数实数表达式:域宽:小数位数T=63.123write(t);6.312300000000E+01write(t:6:2);63.12write(t:6:5);63.12300如果要求小数点后精确如果要求小数点后精确2位小数位小数.Writeln(
18、x:0:2);a,b:integer;c:longint;d:real;现在学习的是第23页,共81页1、赋值语句、赋值语句赋值语句是最简单的语句赋值语句是最简单的语句.1)、赋值语句的格式、赋值语句的格式变量名变量名:=表达式;表达式;其中其中“:=”称为赋值号。称为赋值号。2)、执行过程、执行过程计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。代表的变量。如:如:A:=(9*8)-(2-1);A:=A+1三、基本语句三、基本语句现在学习的是第24页,共81页、输入语句、输入语句read和和readln功能:
19、功能:从键盘读入数据项,并把它存到变量中去,使该数据能在以从键盘读入数据项,并把它存到变量中去,使该数据能在以后的计算中使用。后的计算中使用。输入语句的一般形式为:输入语句的一般形式为:read(v1,v2,vn);readln(v1,v2,vn);从键盘逐次读入数据,分别赋给变量从键盘逐次读入数据,分别赋给变量v1,v2,vn,一行,一行输入多个变量值时,要求数据之间用空格分隔,输入多个变量值时,要求数据之间用空格分隔,readln语句要语句要求输入数据后必须回车,使得后继操作从下一行的头上开始。求输入数据后必须回车,使得后继操作从下一行的头上开始。现在学习的是第25页,共81页read语句
20、与语句与readln语句区别是:语句区别是:1)read语句是一个接一个地读数据,在执行完本语句是一个接一个地读数据,在执行完本Read语句语句(读完本语句中变量所需的数据读完本语句中变量所需的数据)后后,下一个读语句接着从该下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。如:数据输入行中继续读数据,也就是说,不换行。如:Read(a,b);Read(c,d);Read(e);如果输入数据行如下如果输入数据行如下:123456则则a,b,c,d,e的值分别为的值分别为1,2,3,4,5,如果后面无读语句则数据如果后面无读语句则数据6是多是多余的,这是允许的。余的,这是允许的。现在
21、学习的是第26页,共81页Readln则不同,在读完本则不同,在读完本Readln语句中变量所需的语句中变量所需的数据后数据后,该数据行中剩余的数据多余无用,或者说,在该数据行中剩余的数据多余无用,或者说,在读完本读完本Readln语句中变量所需数据后,一定要读到一个语句中变量所需数据后,一定要读到一个回车,否则多余的数据无用。回车,否则多余的数据无用。设有下列语句设有下列语句:read(a,b,c);readln(d,e);readln;readln(f,g);其中其中,所有变量均为整型。设输入的数据如下:所有变量均为整型。设输入的数据如下:12345678910111213Vara,b,c
22、,d,e,f,g:integer;beginread(a,b,c);readln(d,e);readln;readln(f,g);writeln(a,b,c,d,e,f,g);end.现在学习的是第27页,共81页2)readln语句与语句与read语句的第二个区别是语句的第二个区别是:read后一定要有参数表后一定要有参数表,readln可以不带参数表可以不带参数表,即可以没有任何输入项即可以没有任何输入项,只只是等待读入一个换行符是等待读入一个换行符(回车回车)。经常用于暂停程序的。经常用于暂停程序的运行,直到输入一个回车运行,直到输入一个回车现在学习的是第28页,共81页输出语句输出语句
23、write和和writeln功能:功能:把程序计算的结果,按适当的形式输出到屏幕。把程序计算的结果,按适当的形式输出到屏幕。1)、write语句语句格式格式Write(表达式表达式1,表达式,表达式2,);如如:write(x,5,a+b);write(MynameisLiping);2)、writeln语句语句格式格式:Write(表达式表达式1,表达式,表达式2,)或或writeln现在学习的是第29页,共81页Write语句与语句与writeln语句格式上都相似,但它们在功能上有语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于所不同,两个语句的区别在于:write语句将其后括
24、号中的表达式一个接一个输出后,没语句将其后括号中的表达式一个接一个输出后,没有换行。有换行。而而writeln语句则在输出各个表达式的值后换行。语句则在输出各个表达式的值后换行。例如以下两个程序段的输出分别为:例如以下两个程序段的输出分别为:write(1,2,3,4);write(5,6);输出为:输出为:123456writeln(1,2,3,4);write(5,6);输出为:输出为:123456现在学习的是第30页,共81页实数的输出格式实数的输出格式实数(实数(real)以浮点型格式输出。例如)以浮点型格式输出。例如805.67对应的浮点数为对应的浮点数为8.056700000000
25、E+02。这种实数表达方式很不方便。我们可。这种实数表达方式很不方便。我们可以通过下述形式强迫实数以定点型格式输出:以通过下述形式强迫实数以定点型格式输出:实数表达式:域宽:小数位数实数表达式:域宽:小数位数例如,例如,t的值设为的值设为63.123。下面三条输出语句分别有它们右边所示。下面三条输出语句分别有它们右边所示的输出格式:的输出格式:write(t);6.312300000000E+01write(t:6:2);63.12write(t:6:5);63.12300write(t:0:0);现在学习的是第31页,共81页vara,b,t:integer;beginread(a,b);t
26、:=a;a:=b;b:=t;writeln(a=,a,b=,b)end.例:输入两个整数例:输入两个整数a,b,交换他们的值,并输出,交换他们的值,并输出.如:输入:如:输入:3034输出:输出:3430现在学习的是第32页,共81页四、算术运算符和算术表达式四、算术运算符和算术表达式1.算术运算符算术运算符运算符运算运算对象结果类型运算符运算运算对象结果类型+加加整型、实型只要有一个运算对象是实型,结果就整型、实型只要有一个运算对象是实型,结果就-减减整型、实型是实型,如果全部的运算对象都是整整型、实型是实型,如果全部的运算对象都是整*乘乘整型、实型型并且运算不是除法,则结果为整型整型、实型
27、型并且运算不是除法,则结果为整型/除除整型、实型若运算是除法,则结果是实型。整型、实型若运算是除法,则结果是实型。div整除整型整型整除整型整型mod取余整型整型取余整型整型2、表达式、表达式是通过运算符把常量、变量、函数调用结合起来组成的。是通过运算符把常量、变量、函数调用结合起来组成的。3+x1+b现在学习的是第33页,共81页上机练习题目:上机练习题目:输入一个输入一个3位的正整数,输出他们的各位数字之和与乘积。位的正整数,输出他们的各位数字之和与乘积。如:如:输入:输入:436输出:输出:1372现在学习的是第34页,共81页五、标准函数五、标准函数+a-b现在学习的是第35页,共81
28、页算术函数算术函数函数标识符函数标识符自变量类型自变量类型意意义结果类型义结果类型abs整型、实型绝对值同自变量整型、实型绝对值同自变量sqrt整型、实型平方根实型整型、实型平方根实型int整型、实型整数部分实型整型、实型整数部分实型exp整型、实型指数实型整型、实型指数实型ln整型、实型自然对数实型整型、实型自然对数实型sqr整型、实型平方同自变量整型、实型平方同自变量cos整型、实型余弦实型整型、实型余弦实型sin整型、实型正弦实型整型、实型正弦实型arctan整型、实型反正切实型整型、实型反正切实型frac整型、实型小数部分实型整型、实型小数部分实型现在学习的是第36页,共81页abs(
29、-4)=4abs(-7.49)=7.49int(-3.71)=-3.0sqrt(4)=2Sqr(2)=4现在学习的是第37页,共81页正确的书写表达式:正确的书写表达式:1)、)、2)、)、xy3)、)、2现在学习的是第38页,共81页上机练习上机练习1、输入三角形的三条边、输入三角形的三条边a,b,c,输出三角形的面积。,输出三角形的面积。(a,b,c是正整数是正整数100,满足三角形条件),满足三角形条件)现在学习的是第39页,共81页上机练习2vara,b,t:integer;beginread(a,b);t:=a;a:=b;b:=t;writeln(a=,a,b=,b)end.例:输入
30、两个整数例:输入两个整数a,b,交换他们的值,并输出,交换他们的值,并输出.如:输入:如:输入:3034输出:输出:3430现在学习的是第40页,共81页上机练习上机练习3输入一个输入一个3位的正整数,输出他们的各位数字位的正整数,输出他们的各位数字之和与乘积。之和与乘积。如:如:输入:输入:436输出:输出:1372现在学习的是第41页,共81页程序的三种基本结构程序的三种基本结构一、顺序结构一、顺序结构 二、选择结构二、选择结构(if (if、case)case)三、循环结构三、循环结构(for(for、whilewhile、repeat)repeat)现在学习的是第42页,共81页例:输
31、入三角形的三条边例:输入三角形的三条边a,b,c,输出三角形的面积。,输出三角形的面积。(a,b,c是正整数是正整数c)and(a+cb)and(b+ca)thenbeginp:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c);writeln(s:0:2);endelsewriteln(Noanswer);end.无无“;”现在学习的是第48页,共81页二、二、选择结构选择结构1 1if if 语句:语句:功能:执行过程功能:执行过程说明:说明:1 1)该语句为一个语句;)该语句为一个语句;2 2)条件是一个布尔表达式或一个布尔变量,)条件是一个布尔表达式或一个布尔
32、变量,then then 和和elseelse后的语句可以后的语句可以是单个语句,当需要多条语句时,用是单个语句,当需要多条语句时,用beginbegin和和endend括起来构成复合语句。括起来构成复合语句。3 3)当布尔表达式的值为真,则执行当布尔表达式的值为真,则执行thenthen后面的语句,值为假时有两种情况:要么后面的语句,值为假时有两种情况:要么什么也不做,要么执行什么也不做,要么执行elseelse后面的语句。后面的语句。注意注意:else:else前面没有分号前面没有分号.格式一:格式一:ifthen;格式二:格式二:ifthenelse;现在学习的是第49页,共81页逻辑、
33、算术、关系运算符的运算次序:逻辑、算术、关系运算符的运算次序:1.函数、not2.括号3.*、/、div、mod、and4.+、-、or5.、=、=、=、补充补充现在学习的是第50页,共81页例例1:输入一个整数,判断他的奇偶性。输入一个整数,判断他的奇偶性。(是偶数输出(是偶数输出“”,奇数输出,奇数输出“”)。)。方法一:方法一:Vara:integer;Beginreadln(a);Ifamod2=0thenwriteln(yes);ifamod20thenwriteln(no);End.方法二:方法二:Vara:integer;Beginreadln(a);Ifamod2=0thenw
34、riteln(yes)elsewriteln(no);End.无无“;”现在学习的是第51页,共81页例例2:已知方程:已知方程:ax2+bx+c=0输入系数输入系数a,b,c,a0,输出方程的解输出方程的解(考虑各种情况考虑各种情况)。保留两位小数。保留两位小数。(1):如果无实数解输出:如果无实数解输出:noanswer;(2):相同的实数解:输出一个即可。相同的实数解:输出一个即可。(3):两个不同的实数解:分别输出。两个不同的实数解:分别输出。如:如:输入:输入:132输出:输出:X1=-1.00X2=-2.00输入输入:121输出输出:X=-1.00现在学习的是第52页,共81页va
35、ra,b,c:integer;d,x1,x2:real;beginreadln(a,b,c);d:=b*b-4*a*c;ifd0thenbeginx1:=(-b+sqrt(d)/(2*a);x2:=(-b-sqrt(d)/(2*a);writeln(x1=,x1:0:2);writeln(x2=,x2:0:2);end;end.现在学习的是第53页,共81页程序代码:程序代码:program ex2(input,output):program ex2(input,output):var var a,b,c:integer;a,b,c:integer;begin begin write(a,b,
36、c(0):);write(a,b,c(0):);readln(a,b,c);readln(a,b,c);if(a+bc)and(a+cb)and(b+ca)if(a+bc)and(a+cb)and(b+ca)then then if(a*a+b*b=c*c)or(a*a+c*c=b*b)or(b*b+c*c=a*a)if(a*a+b*b=c*c)or(a*a+c*c=b*b)or(b*b+c*c=a*a)then then writeln(a=,a,b=:5,b,c=:5,c,is rt triangle.)writeln(a=,a,b=:5,b,c=:5,c,is rt triangle.)
37、else else writeln(a=,a,b=:5,b,c=:5,c,is not rt triangle.)writeln(a=,a,b=:5,b,c=:5,c,is not rt triangle.)else else writeln(a=,a,b=:5,b,c=:5,c,is not triangle.)writeln(a=,a,b=:5,b,c=:5,c,is not triangle.)end.end.【例3】:输入三角形的三边,判断它是否是直角三角形。输入三角形的三边,判断它是否是直角三角形。现在学习的是第54页,共81页3case 语句:分情况语句(多分支语句)格式:case
38、 表达式 of 常数表1:语句1;常数表2:语句2;常数表n:语句n;else 语句n+1 end;功能:执行过程说明:1)end 与case 对应 2)表达式的类型通常是整型、字符型 3)常量表是常量,其类型与表达式的类型要一致。常量表中的常量不能重复。现在学习的是第55页,共81页【例例4】:输入两个数(均不为零)及一个算术运算符,输出其运算的结输入两个数(均不为零)及一个算术运算符,输出其运算的结果果程序代码:程序代码:program ex3(input,output);varx,y,s:real;ch:char;begin writeln(input x&y&ch:);readln(x
39、,y);readln(ch);case ch of +:s:=x+y;-:s:=x-y;*:s:=x*y;/:s:=x/y end;writeln(x,ch,y,=,s)end.现在学习的是第56页,共81页三、三、循环结构循环结构循环结构的三种形式:循环结构的三种形式:循环结构程序通常由三种的循环语句来实现。它们分别为循环结构程序通常由三种的循环语句来实现。它们分别为 FOR循环、当循环循环、当循环while、直到、直到repeat循环。循环。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。由重复终止
40、条件决定。因此,重复语句是由因此,重复语句是由循环体循环体及及重复终止条件重复终止条件两部分组成。两部分组成。现在学习的是第57页,共81页1for语句1 1forfor语句:(语句:(“计数循环计数循环”):就是将规定循环体重复执行的次数。):就是将规定循环体重复执行的次数。格式:格式:for for 控制变量:控制变量:=初值初值 to to 终值终值 dodo 循环体语句;循环体语句;for for 控制变量:控制变量:=初值初值 downto downto 终值终值 dodo 循环体语句;循环体语句;2 2、forfor语句执行过程语句执行过程 先将初值赋给左边的变量(称为循环控制变量
41、);先将初值赋给左边的变量(称为循环控制变量);判断循环控制变量的值是否已判断循环控制变量的值是否已“超过超过”终值,如已超过,则跳到步骤终值,如已超过,则跳到步骤;如果末超过终值,则执行如果末超过终值,则执行dodo后面的那个语句(称为循环体);后面的那个语句(称为循环体);循环变量递增(对循环变量递增(对toto)或递减(对)或递减(对downt o)downt o);返回步骤返回步骤;循环结束,执行循环结束,执行forfor循环下面的一个语句。循环下面的一个语句。3 3、说明:、说明:1)1)初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须是整型、布尔型和字初值和终值可以是
42、表达式,控制变量和初值、终值的类型相同,且必须是整型、布尔型和字符型等顺序类型,不能为实型。符型等顺序类型,不能为实型。2 2)递增按)递增按succsucc函数规律变化,递减按函数规律变化,递减按predpred函数规律变化,整型按数值大小变化,如果函数规律变化,整型按数值大小变化,如果为字符型量,按为字符型量,按ASCIIASCII码表的顺序计算。码表的顺序计算。3 3)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对控制变量进行赋值。控制变量进行赋值。4 4)当初值超过终值,不执行循环,循环次数
43、为零。)当初值超过终值,不执行循环,循环次数为零。现在学习的是第58页,共81页【例1】:计算1+2+3+4+100之和。算法分析:对于求和,我们使用的是累加的办法。程序代码:program ex1(input,output);var i,sum:integer;begin sum:=0;for i:=1 to 100 do sum:=sum+I;writeln(sum=,sum)end.补充说明:类似sum迭加变量这样的功能称为“累加器累加器”;类似i这样的变量称为“计数器”;“计数器”和“累加器”是在程序中经常使用的基本操作语句。现在学习的是第59页,共81页【例3】:键入一个自然数,输出
44、其所有约数,计算出这些约数之和并输出。算法分析:解决这一问题的关键是找出约数,也就是判定一数能否被另一数整除。可以用x mod y=0,来找出所有约数。程序代码:program ex3(input,output);program ex3(input,output);var var i,x,y,sum:integer;i,x,y,sum:integer;begin begin write(x=);read(x);write(x=);read(x);sum:=0;i:=0;sum:=0;i:=0;for y:=1 to x dofor y:=1 to x do if x mod y=0 if x
45、mod y=0 then begin then begin write(y:8);write(y:8);i:=i+1;i:=i+1;if i mod 5=0 then writeln;if i mod 5=0 then writeln;sum:=sum+y sum:=sum+y end;end;writeln(sum=,sum)writeln(sum=,sum)end.end.If语句For语句If语句作为For语句的循环体现在学习的是第60页,共81页【例4】:编程找出四位整数abcd中满足下述关系的数。(ab+cd)(ab+cd)=abcd算法分析:这道题属于搜索问题,因为是四位整数,其范
46、围从10009999,所求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对每一个数,看它的高两位数与低两位数和的平方是否为该数。高两位数:abcd div 100=ab低两位数:abcd mod 100=cd程序代码:program ex4(input,output);program ex4(input,output);var var i,m,n,k:integer;i,m,n,k:integer;begin begin for i:=1000 to 9999 do for i:=1000 to 9999 do begin begin m:=i div 100;m:=i
47、div 100;n:=i mod 100;n:=i mod 100;k:=(m+n)*(m+N);k:=(m+n)*(m+N);If k=i then write(I:8)If k=i then write(I:8)end end end.end.补充说明:以上用的方法也叫以上用的方法也叫“枚举法枚举法”,又称,又称“穷举法穷举法”。它是用计算机解题的一种常用的办法。它的基本。它是用计算机解题的一种常用的办法。它的基本思路是:一一枚举各种可能的情况,并判断哪一种可能是符合要求的解。方法虽然很笨,然而与计算机高思路是:一一枚举各种可能的情况,并判断哪一种可能是符合要求的解。方法虽然很笨,然而与计
48、算机高速的处理能力相结合,也不失为一种较有用的方法速的处理能力相结合,也不失为一种较有用的方法现在学习的是第61页,共81页 2while语句:语句:对于对于for循环有时也称为计数循环。循环有时也称为计数循环。适合用于事先知道循环次数适合用于事先知道循环次数.当循环次数未知,只能根据某一条件来决定是否进行循环时,用当循环次数未知,只能根据某一条件来决定是否进行循环时,用while 语语句实现循环要更方便。句实现循环要更方便。(“当型循环当型循环”):当条件满足时反复执行循环体。):当条件满足时反复执行循环体。格式:格式:while 布尔表达式布尔表达式 do 语句;语句;执行过程:执行过程:
49、while语句的执行过程为:语句的执行过程为:判断布尔表达式的值判断布尔表达式的值,如果其值为真如果其值为真,执行步骤执行步骤2,否则执行步骤否则执行步骤4;执行循环体语句执行循环体语句(do后面的语句后面的语句);返回步骤返回步骤1;结束循环结束循环,执行执行while的下一个语句。的下一个语句。说明:说明:1)为了是)为了是while循环能正常终止,布尔表达式中的变量必须在循环体中的某语句中有所循环能正常终止,布尔表达式中的变量必须在循环体中的某语句中有所改变,即有可能是布尔表达式的值为假,使循环结束,否则将出现死循环。改变,即有可能是布尔表达式的值为假,使循环结束,否则将出现死循环。2)
50、循环体中的语句一般是多条语句,用)循环体中的语句一般是多条语句,用begin和和end使其成为一条复合语句。使其成为一条复合语句。现在学习的是第62页,共81页【例5】:输出1100之间的奇数。程序代码:program ex5(input,output);var x:integer;begin x:=1;while x100 do begin write(x:5);x:=x+2 endend.现在学习的是第63页,共81页【例6】:输入若干个字符,它的终止符是#,计算输入的字符中a(A)出现的次数。算法分析:设计数器i,置初值为0;出入字符;当字符不为#时循环:如果字符为a或A,则计数器加1;