Pascal语言1-3(Tp与Fp的区别、程序设计初步).ppt_第1页
Pascal语言1-3(Tp与Fp的区别、程序设计初步).ppt_第2页
Pascal语言1-3(Tp与Fp的区别、程序设计初步).ppt_第3页
Pascal语言1-3(Tp与Fp的区别、程序设计初步).ppt_第4页
Pascal语言1-3(Tp与Fp的区别、程序设计初步).ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Pascal语言程序设计,寿光现代中学王桐林,【第一、二、三章】,本章要点,FreePascal与TurboPascal的区别Pascal的程序结构基本符号、保留字、标识符数据类型、常量、变量及说明方法函数与表达式三种基本的程序结构顺序结构分支结构循环结构,第一章FreePascal概述,一、Pascal简介PASCAL语言是瑞士苏黎世联邦工业大学的N沃思(NiklausWirth)教授于1968年设计完成的,1971年正式发表,它的命名是为了纪念法国数学家Pascal。在Pascal问世以来的三十余年里,先后产生了适合于不同机型的各种版本,其中,影响最大的莫过于TurboPascal系列软件。TurboPascal是由美国Borland公司设计、研制的一种微机的Pascal语言应用开发集成环境。该产品由1983年推出的1.0版本发展到1992年推出的7.0版本,随着版本的不断更新,功能也更趋完善,TurboPascal是NOIP在2004年以前使用的主要软件之一。从NOIP2004开始,中国计算机协会要求联赛使用freepascal,停止使用turbopascal。Freepascal分为Windows和linux两个版本,NOIP大多使用Windows版,它提供了Windows环境下兼容TurboPascal的Pascal编译器,同时也提供了类似TurboPascal的集成开发环境FreepascalIDE。软件下载地址:01/noip/env.html,FreePascal与TurboPascal的区别,1、从主办方的角度上说,TP有版权,FP没有版权限制,TP已经12年没有更新,而FP一直在更新,IOI、NOI使用的都是FP。2、FreePascal理论上可以使用4GB的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。这是FreePascal由于32位的编译器。但是对于TurboPascal来说,由于是16位的编译器,因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。3、FreePascal是一个跨平台的编译器,而TurboPascal只在dos/windows上使用。4、FP函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在FreePascal中添加了函数重载功能。所以可以用相同的名字定义不同的函数,只要这些函数的参数不同,就是不同的函数5、FP布尔表达式不一定要全部进行计算。只要最终结果已经能够确定,就不再计算其它还没有计算的部分了。比如布尔表达式exp1ANDexp2ANDexp3,如果已知exp1的结果是false,那么怎么表达式的结果肯定是false,exp2和exp3就不用进行计算了。6、在FreePascal中,集合中的元素都是4个字节长的。7、FP表达式执行的顺序不确定。如表达式a:=g(2)+f(3);不保证g(2)一定在f(3)之前执行。,补充,8、在FP中,如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。9、FP在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确的写入。10、FreePascal在windows95及其以上的windows版本上支持长文件名。对于文件名,由于windows系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。但是对于其它大小写敏感的系统,比如linux,程序中用到的文件名必须和系统中的文件名完全一致。但是由于信息学竞赛的评测系统一般是linux,因此要求程序中的文件名和系统中的文件名一样。11、FreePascal和TP语法兼容,但是最不同的就是调试过程。FP中对于数据类型的范围有一定改动,而且语法要求更苛刻。FP的帮助系统比较不好,尤其是和TP比,基本上没法用。FP调试系统分编译调试和执行时调试两种。编译调试在Compiler框内显示,基本上会给出错误的行和列,但是其定位效率却没有TP好,有的时候仅仅是少了一个分号,可能会因此给你五六个错误提示,而其原因就是那个分号。执行时错误就更惨。TP会给你诸如“Stackoverflowerror等大家能看懂的,但是FP给的是“Exitcode。而且这个Exitcode现在还找不到一个完整的解释资料。我现在仅仅知道Exitcode2是找不到输入文件,其他的还看不懂呢。有一个好办法就是把程序弄回TP找错,再到FP中执行。,第二章Pascal程序设计语言基础,一、概述1.Pascal是结构化的语言Pascal语言全面清晰地体现结构化思想。不仅提供了直接实现“顺序结构”、“选择结构”和“循环结构”的语句,而且还可以定义子程序(“函数”和“过程”)。在编程时可以完全不使用转向语句“goto”,使程序的执行顺序与行文顺序保持一致,便于理解;2.Pascal的数据类型丰富Pascal语言不仅提供了整型、实型、字符型、布尔型等标准数据类型,而且还允许用户按照语法规则自定义枚举型、子界型、数组型、集合型、记录型、指针类型和文件类型,便于数值计算和非数值信息处理;3.Pascal语言可以实现模块的独立化要求Pascal语言允许在函数和过程内部定义局部变量,允许在主程序和子程序之间传递参数,使得每一个子程序模块都能反映一个相对独立的性质,模块之间的联系简单清晰,便于修改;由于Pascal语言精确地表达了程序设计的基本概念,结构性好,表达能力强,因此成为学校程序设计课程的教学语言,计算机会考和奥林匹克信息学竞赛的规定语言。,1、程序结构,Pascal语言具有严谨的程序结构【例】已知圆的半径,求它的周长和面积。,从这个简单的程序可以看到:一个PASCAL程序分为两个部分:程序首部和程序体。程序首部程序首部是程序的开头部分,有保留字program后接程序名及程序参数表组成,由分号结束。程序名是用户自己定义的标识符,参数表一般是文件变量名,用于该程序与外界的数据交流。最常用的参数为input和output。在turbopascal语言中,首部中的参数表可以省略,首部也可省略。程序体程序体是程序的主体部分,由说明部分和执行部分两部分组成。说明部分:用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中第二行是变量说明,用来定义变量的名称、类型。PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称说明)。也就是说,不允许未说明先使用。执行部分:以begin开始,以end结束,其间有若干个语句,语句之间以分号隔开。一条语句执行一定的功能,所有语句完成程序设计的任务。允许一行写多个语句,也允许一个语句写几行,最后一行的end后加一.号表示结束。,2、完整的pascal程序框架:,program程序名(程序参数表);label标号说明;const常量说明;type类型说明;var变量说明;function函数说明;procedure过程说明;begin程序语句1;程序语句n;end.,程序首部,程序体,说明部分,执行部分,二、基本符号、保留字、标识符:,1基本符号:是ASCII字符集,主要有:26个英文字母(不分大小写,字符串中的字母例外。十个数字符号。特殊符号+-*/=():=.,;:.,2保留字:保留字是指pascal语言中一些有特殊含义的英文单词,它们已被pascal语言自己使用,都有专门的用途。Pascal语言中保留字有36个,可分为以下六种类型:程序、函数、过程的符号:program,function,procedure说明部分的专用定义符号: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新增保留字),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,reset,rewrite,unpack,write,writeln自定义标识符由用户自己在程序首部或说明部分进行定义,但要注意以下几点:不能与保留字同名;避免与标准标识符同名;最好有一定的含义,增加程序的可读性。例如:在程序中如用到数学中的,则在定义该常量时可用PI表示。,三、数据类型、常量、变量及说明方法,数据类型确定了该类型数据项的表示、取值范围以及所能参与的运算。在pascal语言中,无论常量还是变量都必须属于一个确定的数据类型。Pascal提供了丰富的数据类型,可以分为三大类:简单类型:分为标准类型(整型、实型、字符型和布尔型)和自定义类型(枚举型和子界型)构造类型:分为数组类型、集合类型、记录类型和文件类型指针类型这些数据类型中除了指针类型是动态数据类型外,其他的都是静态数据类型。另外,我们把整型、字符型、布尔型、枚举型和子界型称为顺序类型。,1标准数据类型:整数类型:,整数类型包括正整数、负整数和零。整数只能由正负号和数字组成,不允许出现其他字符,“+”号可以省略。,名称类型数值范围占字节数字节型Byte0.2551字型Word0.655352短整型Shortint-128.1271整型Integer-32768.32767;2长整型Longint-2147483648.2147483647(9位)4长字型Longword0.42949672954整数INT64Int64-9223372036854775808.92233720368547758078Q字型QWord0.184467440737095516158(整数部分19位),TurboPascal规定了两个预定义整型常量表识符maxint和maxlonint,他们各表示确定的常数值,maxint为32767,longint为2147483647,他们的类型分别是integer和longint。整数的运算符有+、-、*、div、mod,后三种运算符的优先级高于前两种,整数运算的结果也为整数。当两个整数用/相除时,结果为实型,只能赋给实型变量。,实数类型包括正实数、负实数和实数零。它的标识符是real。有两种表示实数的方法:十进制表示法;科学记数法:3.4E3表示3.4*103实数的绝对值在1E-38到1E38之间。,实数类型:,实数的运算有+、-、*、/、结果也为实型。整数参与实数运算,系统自动将整数转化为实数再运算,结果为实数。,2)实数名称TypeRangeSignificantdigitsSize实型Realplatformdependant?4or8单精度型Single1.5E-45.3.4E387-84双精度型Double5.0E-324.1.7E30815-168扩展型Extended1.9E-4951.1.1E493219-2010装配十进制型Comp-2E64+1.2E63-119-208,字符类型:目前微机上广泛使用的ASCII码字符集满足PASCAL对字符集的要求。字符型用char作为标识符。字符型必须用单引号括起来,字母作为字符型时,大小写是不等价的,并且字符型只允许单引号中有一个字符,否则就是字符串string。布尔类型:一个布尔型数据用来存放逻辑值(布尔值)。布尔型的值只有两个:false和true,并且false的序号是0,true的序号是1。false和true都是预定义常数表识符,分别表示逻辑假和逻辑真。并且truefalse。boolean是布尔型的标识符。布尔类型的运算符有not(非)、and(与)、or(或)。参与布尔型运算的是布尔类型的数据,其结果也是布尔类型的数据。,2常量,常量:在程序执行过程中其值不能被改变的量。pascal除了maxint,true,false三个标准常量外,用户还可以使用常量定义语句定义新的常量。它的语法格式是:const=;.=;常量表识符的类型由定义它的常量的类型决定。例如:consta=12隐含说明a是整型;constr=3.21隐含说明r是实型。常量的定义具有单一性和不可改变性。,3变量,变量:在程序执行过程中可以改变值的数据。它的语法格式是:var:;.:;其中,保留字var表示开始一个变量说明部分。变量标识符列表是一个用逗号隔开的标识符序列,冒号后面的类型是类型标识符。每个变量说明均以分号结束。例如:vara,b,c:integer;m,n:real;,1标准函数:算术函数:函数标识符自变量类型意义结果类型Abs整型、实型绝对值同自变量Arctan整型、实型反正切实型Cos整型、实型余弦实型Exp整型、实型指数实型Int整型、实型整数部分实型Ln整型、实型自然对数实型Sin整型、实型正弦实型Sqr整型、实型平方同自变量Sqrt整型、实型平方根实型Power(a,b)表示a的b次方,也可以写成a*b,兼容所有数结构,四、函数与表达式,2运算符和表达式,运算符和优先级算术运算符:,表达式,表达式:是指由常量、变量、函数、括号、集合及运算符联结起来的式子。表达式中各运算符的优先级:,表达式有以下几种,a.算术表达式:例如:写出一个整数能被3整除所得余数的表达式b.关系表达式:例如:写出一个能表示正数的表达式c.逻辑表达式:例如:写出一个数既能被3整除又能被5整除的表达式,习题,1.ax2+bx+c的PASCAL的表达式是_2.一元二次方程的根的PASCAL的表达式是_3.表达式2/4*5的值是_,表达式10*4mod5*22/4*5的值是_4.i是j的整数倍的布尔表达式是_,m是偶数的布尔表达式是_,y在-2至-1之间的布尔表达式是_,y是闰年的布尔表达式是_。5.有一编码规则如下:原码:ABCXYZ密码:ZYXCBA已知原码变量x,则密码的表达式是_。,第三章程序设计初步,前言:什么是程序设计?程序设计的步骤是什么?结构化程序设计的特点是什么?,什么是顺序结构:【例1】:键盘输入两个变量的值,交换值后输出。方法:间接交换法算法分析:(“自顶向下,逐步求精”的编程思想)s1:通过键盘给a,b两个变量赋值;s2:交换a,b的值;s2-1:引入中间变量c;s2-2:在c中存放的a值;s2-3:在a中存放的b值;s2-4:在b中存放的c值;s3:输出变量a,b的值。程序代码:programex1(input,output);vara,b,c:integer;beginwrite(pleaseinputa,b:);read(a,b);writeln(a=,a,b=,b);c:=a;a:=b;b:=c;writeln(a=,a,b=,b)end.,第一节顺序结构程序设计,Pascal语言的语句分为简单语句(也称基本语句)和复合语句(也称构造语句),二:几个简单语句:1赋值语句:格式:变量标识符:=表达式;功能:计算和赋值双重功能:【例2】写出程序执行后,变量的值。程序代码:programex2(input,output);vara,b:integer;c:real;ch:char;bool:boolean;begina:=3;b:=a;b:=a+1;a:=a+1;c:=a+b;ch:=h;bool:=true;bool:=notbool;end.说明:1)“:=”赋值号不同于“=”号,具有方向性,具有计算功能。2)赋值号两边的类型应该相同,但有一个例外。3)一个赋值语句只能给一个变量赋值,可以多次给一个变量赋值。4)被赋值的变量可以作为因子参与运算。,2输入语句(read,readln):格式:read(变量名表);readlnread(a1,a2,a3);等价于read(a1);read(a2);read(a3);readln(a1,a2,a3);等价于read(a1);read(a2);read(a3);readln;功能:通过键盘,给指定的变量赋值。【例3】:写出程序运行后,变量的值。程序代码:programex3(input,output);vara,b,c:integer;i,j,k:real;ch1,ch2,ch3:char;beginread(a,b,c);readln(i,j,k);read(ch1,ch2,ch3);writeln(a=,a,b=,b,c=,c);writeln(i=,i,j=,j,k=,k);writeln(ch1=,ch1,ch2=,ch2,ch3=,ch3);end.程序运行后,输入数据:123456.17890dos,说明:1)变量名表中的变量可以是一个变量,也可以是多个变量,多个变量之间用逗号隔开。2)程序运行后,执行到该语句时,系统处于等待状态,等待用户从键盘输入数据。输入数值型数据(整型和实型),数据间用空格分隔;输入字符型数据,数据间不须分隔。3)输入数据一定为常量,且与变量保持类型一致。4)输入数据个数不能少于变量个数,否则,系统继续等待输入。,read语句与readln语句区别,(1)read语句是一个接一个地读数据,在执行完本Read语句(读完本语句中变量所需的数据)后,下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。如:Read(a,b);Read(c,d);Read(e);如果输入数据行如下:123456则a,b,c,d,e的值分别为1,2,3,4,5,如果后面无读语句则数据6是多余的,这是允许的。,Readln则不同,在读完本Readln语句中变量所需的数据后,该数据行中剩余的数据多余无用,或者说,在读完本Readln语句中变量所需数据后,一定要读到一个回车,否则多余的数据无用。设有下列语句:read(a,b,c);readln(d,e);readln;readln(f,g);其中,所有变量均为整型。再设输入的数据如下:1234567891011,(2)readln语句与read语句的第二个区别是:,read后一定要有参数表,readln可以不带参数表,即可以没有任何输入项,只是等待读入一个换行符(回车)。经常用于暂停程序的运行,直到输入一个回车,3输出语句(write,writeln):格式:write(输出项);writeln;功能:按指定的格式将输出项的内容输出。【例4】:写出程序运行后的结果。程序代码:programex4(input,output);consta=10;b=20;beginwriteln(50);writeln(a);writeln(a+b);writeln(a+b=,a+b)end.说明:1)输出项的内容可以是一项,也可以是若干项,各项之间用逗号分隔。2)当输出项为常量,直接输出常量的值;当输出项为变量时,输出该变量存储单元内的内容,变量允许属于任何一种标准数据类型;当输出项为表达式时,先计算后输出;当输出项为字符串时,原样输出单引号括起来的内容。,Write语句与writeln语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于:write语句将其后括号中的表达式一个接一个输出后,没有换行。而writeln语句则在输出各个表达式的值后换行。例如以下两个程序段的输出分别为:write(1,2,3,4);write(5,6);输出为:123456writeln(1,2,3,4);write(5,6);输出为:123456,实数的输出格式,实数(real)以浮点型格式输出。例如805.67对应的浮点数为8.056700000000E+02。这种实数表达方式很不方便。我们可以通过下述形式强迫实数以定点型格式输出:实数表达式:域宽:小数位数例如,t的值设为63.123。下面三条输出语句分别有它们右边所示的输出格式:write(t);6.312300000000E+01write(t:6:2);63.12write(t:10:5);63.12300write(t:0:2);63.12,输出语句的输出格式:,什么是场宽(或域宽)?pascal中将输出项的数据显示占用的宽度称为场宽场宽的分类:标准场宽和自定义场宽。自定义场宽又分为单场宽和双场宽。标准场宽:writeln(x),x直接输出,如x为实数,按科学计数法死的形式输出。单场宽的形式:x:n;如:writeln(x:n)可以输出的项目有整型、字符型、布尔型,不允许实型。双场宽的形式:x:n1:n2;如:writeln(x:m:n)控制实型数据的输出。自定义场宽的注意事项a.优先级高于标准场宽。b.单场宽输出格式一律是左留空、右对齐。实型的双场宽输出时是向小数点看齐,多余的小数为数补零。c.突破场宽时,扩展到所需位数.d.n2小于实际位数,显示时舍去多余位数,但内存中该数的精度保持不变。,【例5】:写出程序的运行结果:programex5(input,output);vara:integer;b:real;c:char;d:boolean;begina:=1357;b:=1234.5678;c:=%;d:=true;writeln(a,a:5);writeln(b,b:12:5);writeln(c,c:5);writeln(d,d:5);writeln(end:5)end.,定义:复合语句是由若干条语句组成的语句序列。形式:begin语句1;语句2;语句nend;用保留字begin和end括起来,构成一条逻辑上的语句,语法上充当一条语句。,三:复合语句:,四:综合应用:【例6】:随机产生一个三位自然数,分离出它的百位、十位与个位上的数字。算法分析:s1:随机产生一个三位自然数;s2:分离出该自然数的百位、十位、个位上的数字;s3:输出百位、十位、个位上的数字。程序代码:programex6(input,output);varx,ge,shi,bai:integer;beginrandomize;x:=trunc(random*900)+100;writeln(x=,x);bai:=xdiv100;shi:=(x-bai*100)div10;ge:=xmod10;writeln(bai=,bai);writeln(shi=,shi);writeln(ge=,ge)end.,上机练习题,1.上机调试出例6。2.试编一程序,输入一梯形的上底、下底、高,求该梯形的面积。3.某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果,现在他们做一个分糖果游戏。从1号小朋友开始,将他的糖果均分三份(如果有多余的,则他将多余的糖果吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友也这如果做。问一轮后,每个小朋友手上分别有多少糖果。,第二节选择结构程序设计一:什么是选择结构?选择结构的特点?二:选择结构的几种语句:1if语句:功能:执行过程说明:1)该语句为一个语句;2)条件是一个布尔表达式或一个布尔变量,then和else后的语句可以是单个语句,当需要多条语句时,用begin和end括起来构成复合语句。3)当布尔表达式的值为真,则执行then后面的语句,值为假时有两种情况:要么什么也不做,要么执行else后面的语句。注意:else前面没有分号.,格式一:ifthen;,格式二:ifthenelse;,逻辑、算术、关系运算符的运算次序:括号函数、not*、/、div、mod、and+、-、or、=、,补充,【例1】:将输入的两个非负实数中较大的放在max里,小的放在min里,并输出。算法分析:s1:输入两个数放在max,min中;s2:判断max,min的值,将大数放在max里,小数放在min里;s3:输出max,min的值。程序代码:programex1(input,output);varmax,min,t:real;beginwriteln(inputtwonum(0):);read(max,min);ifmax0与x0两种情况,然后对于情况x0,再区分x是小于0,还是等于0。,程序代码:programex;varx:real;y:integer;beginwrite(inputx:);readln(x);ifx0theny:=1elseifx=0theny:=0elsey:=-1;writeln(x=,x:6:2,y=,y);end.,但是对于本题,下面的程序是否正确。y:=0;ifx=0thenifx0theny:=1elsey:=-1;请同学们思考为什么?并在上机实践时验证?,程序代码:programex2(input,output):vara,b,c:integer;beginwrite(a,b,c(0):);readln(a,b,c);if(a+bc)and(a+cb)and(b+ca)thenif(a*a+b*b=c*c)or(a*a+c*c=b*b)or(b*b+c*c=a*a)thenwriteln(a=,a,b=:5,b,c=:5,c,isrttriangle.)elsewriteln(a=,a,b=:5,b,c=:5,c,isnotrttriangle.)elsewriteln(a=,a,b=:5,b,c=:5,c,isnottriangle.)end.,【例3】:输入三角形的三边,判断它是否是直角三角形。,3case语句:分情况语句(多分支语句)格式:case表达式of常数表1:语句1;常数表2:语句2;常数表n:语句n;else语句n+1end;功能:执行过程说明:1)end与case对应2)表达式的类型通常是整型、字符型3)常量表是常量,其类型与表达式的类型要一致。常量表中的常量不能重复。,【例4】:输入两个数(均不为零)及一个算术运算符,输出其运算的结果程序代码:programex3(input,output);varx,y,s:real;ch:char;beginwriteln(inputxwriteln(x,ch,y,=,s)end.,上机练习题1.求一元二次方程ax2+bx+c=0的根。算法分析:方程的系数a,b,c决定了方程有无根,是几个根,是实数根还是复根。2.打印某年某月有几天。算法分析:可分为以下3种情况:每年的1,3,5,7,8,10,12这七个月每月为31天;每年的4,6,9,11这四个月为30天;2月又分为两种情况:闰年为29天,否则为28天。判断闰年的条件:年数能被4整除,并且不能被100整除,或者年数能被400整除;(yearmod4=0)and(yearmod1000)or(yearmod400=0),第三节循环结构程序设计,一、什么是循环结构?其特点是什么?二、循环结构的三种形式:循环结构程序通常由三种的循环语句来实现。它们分别为FOR循环、当循环while、直到repeat循环。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。因此,重复语句是由循环体及重复终止条件两部分组成。,1for语句,1for语句:(“计数循环”):就是将规定循环体重复执行的次数。格式:for控制变量:=初值to终值do循环体语句;for控制变量:=初值downto终值do循环体语句;2、For语句执行过程先将初值赋给左边的变量(称为循环控制变量);判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤;如果末超过终值,则执行do后面的那个语句(称为循环体);循环变量递增(对to)或递减(对downto);返回步骤;循环结束,执行循环下面的一个语句。3、说明:1)初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须是整型、布尔型和字符型等顺序类型,不能为实型。2)递增按succ函数规律变化,递减按pred函数规律变化,整型按数值大小变化,如果为字符型量,按ASCII码表的顺序计算。3)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对控制变量进行赋值。4)当初值超过终值,不执行循环,循环次数为零。,【例1】:计算1+2+3+4+100之和。算法分析:对于求和,我们使用的是累加的办法。程序代码:programex1(input,output);vari,sum:integer;beginsum:=0;fori:=1to100dosum:=sum+I;writeln(sum=,sum)end.补充说明:类似sum迭加变量这样的功能称为“累加器”;类似i这样的变量称为“计数器”;“计数器”和“累加器”是在程序中经常使用的基本操作语句。,【例2】:对程序稍加改动,算出以下算式:请同学们思考怎样改动程序可以实现?s=2+4+6+100s=1+1/2+1/3+1/100s=12+22+32+1002,【例3】:键入一个自然数,输出其所有约数,计算出这些约数之和并输出。算法分析:解决这一问题的关键是找出约数,也就是判定一数能否被另一数整除。可以用xmody=0,来找出所有约数。程序代码:programex3(input,output);vari,x,y,sum:integer;beginwrite(x=);read(x);sum:=0;i:=0;fory:=1toxdoifxmody=0thenbeginwrite(y:8);i:=i+1;ifimod5=0thenwriteln;sum:=sum+yend;writeln(sum=,sum)end.,If语句,For语句,If语句作为For语句的循环体,【例4】:编程找出四位整数abcd中满足下述关系的数。(ab+cd)(ab+cd)=abcd算法分析:这道题属于搜索问题,因为是四位整数,其范围从10009999,所求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对每一个数,看它的高两位数与低两位数和的平方是否为该数。高两位数:abcddiv100=ab低两位数:abcdmod100=cd程序代码:programex4(input,output);vari,m,n,k:integer;beginfori:=1000to9999dobeginm:=idiv100;n:=imod100;k:=(m+n)*(m+N);Ifk=ithenwrite(I:8)endend.补充说明:以上用的方法也叫“枚举法”,又称“穷举法”。它是用计算机解题的一种常用的办法。它的基本思路是:一一枚举各种可能的情况,并判断哪一种可能是符合要求的解。方法虽然很笨,然而与计算机高速的处理能力相结合,也不失为一种较有用的方法,2while语句:对于for循环有时也称为计数循环。适合用于事先知道循环次数.当循环次数未知,只能根据某一条件来决定是否进行循环时,用while语句实现循环要更方便。(“当型循环”):当条件满足时反复执行循环体。格式:while布尔表达式do语句;执行过程:while语句的执行过程为:判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;执行循环体语句(do后面的语句);返回步骤1;结束循环,执行while的下一个语句。说明:1)为了是while循环能正常终止,布尔表达式中的变量必须在循环体中的某语句中有所改变,即有可能是布尔表达式的值为假,使循环结束,否则将出现死循环。2)循环体中的语句一般是多条语句,用begin和end使其成为一条复合语句。,【例5】:输出1100之间的奇数。程序代码:programex5(input,ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论