Pascal语言程序设计概述.doc_第1页
Pascal语言程序设计概述.doc_第2页
Pascal语言程序设计概述.doc_第3页
Pascal语言程序设计概述.doc_第4页
Pascal语言程序设计概述.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1 程序设计概述(见Pascal1.ppt演示文稿)一、 教学目的1、 让学生了解算法的概念、程序设计思想和方法2、 让学生了解计算机语言的发展3、让学生了解Pascal的基础知识3、 教学内容(1) 问题的算法表示(2) 算法的程序实现(3) 程序设计思想和方法二、教学内容程序:是完成某项工作的步骤。是电脑用来执行并完成一项工作的序列指令。程序设计语言(计算机语言):是人类和电脑进行交流的工具。电脑的程序是由专门的程序设计语言写成的。用Pascal语言写的源程序称Pascal程序。设计程序的过程通常叫做编程。一、计算机语言的发展1 、机器语言2、汇编语言3、 高级语言 Basic 、Pascal、 logo、 cobal、 c Visual Basic(可视化集成开发编程环境) 例:Z=X+Yif a mod 2=0 then writeln(Yes!) else writeln(No!);第一节 算法与程序1.1 解题步骤与算法算法的概念:解决问题的方法与步骤、规则或公式。1.2 简单算法举例(1)求S=1+2+3+4+5+100(2)交换两个变量A、B的值(3)从十个数中找出最大的数三种基本的程序结构(见Pascal1.ppt演示文稿)一、顺序结构 例1:求圆的面积Pascal 语言程序设计基础第一节 Pascal语言与程序设计概述第二节PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。1975年,对PASCAL语言进行了修改,作为标准PASCAL语言。一、 Pascal语言概述二、二、Pascal语言的特点它是结构化的语言。有丰富的数据类型。能适用于数值运算和非数值运算领域。 PASCAL的功能较强,能广泛应用于各种领域 。PASCAL程序的书写格式比较自由三、Pascal语言程序的基本结构任何程序设计语言都有着一组自己的记号和规则。PASCAL语言同样必须采用其本身所规定的记号和规则来编写程序program ex_1; 程序首部 const pi=3.14159; 说明部分 常量说明 var r,c,s:real; 说明部分 变量说明 begin r:=3; 圆的半径 c:=2*pi*r ; 求周长C s:=pi*r*r ; 求面积S writeln(r=,r, c=,c, s=,s); 输出周长面积 readln; end.其中 r、c、s 称为变量从这个简单的程序解释PASCAL程序的构成.四、pascal的基本语法单位 1、基本符号 AZ;az;09;+,-,*,/,=,=,(,),:=,;,.,:,., 注意:pascal语言除了能使用以上规定的基本符号外,不得使用任何其它符号。 五、Pascal语言中的关键字和标识符P6-P7六、Pascal语言中的常量与变量(一)、常量在程序运行过程中,其值不能被改变的量称为常量。如123,145.88,abc,true等。(1)整型常量 (integer)范围 -32768-32767(2)实型常量实型常量包括正实数、负实数和实数零。pascal中表示实型常量的形式有两种。十进制表示法这是人们日常使用的带小数点的表示方法。如0.0,-0.0,+5.61,-8.0,-6.050等都是实型常量,而0.,.37都不是合法的实数形式。科学记数法科学记数法是采用指数形式的表示方法,如1.25105可表示成1.25E+05。在科学记数法中,字母“E”表示10这个“底数”,而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为“指数”。如-1234.56E+26 , +0.268E-5 , 1E5是合法形式,而.34E12 , 2.E5 , E5 ,E,1.2E+0.5都不是合法形式的实数。(3)字符常量字符常量是由单个字符组成,如:a,A,0等。特殊地,对于单引号字符,则要表示成。对于ASCII字符集中,按每个字符在字符集中的位置,将每个字符编号为0255,编号称为对应字符的序号。(4)布尔常量布尔型常量仅有两个值,真和假,分别用标准常量名true和false表示。它们的序号分别为1和0。(5)符号常量:一个常量即可以直接用字面形式表示(称为直接常量, 如 124,156.8),也可以用一个标识符来代表一个常量,称为“符号常量”。但符号常量必须在程序中的说明部分定义,也就是说先定义,后使用。定义符号常量的一般格式:CONST=说明:常量说明部分以关键字const开头, 后面的标识符为常量标识符,其中“=”号后的常量为整数、实数、字符、 字符串(字符、字符串常量在后面章节中将作介绍)。而且,在常量说明部分可以将几个常量说明成符号常量,共用一个关键字“const”。关于符号常量,应注意下列几点:符号常量一经定义,在程序的执行部分就只能使用该常量标识符,而不能修改其值。使用符号常量比直接用数值更能体现“见名知义”的原则,也便于修改参数,故一个较好的程序中,应尽量使用符号常量,在执行部分基本上不出现直接常量。(二)变量:变量代表了一个存储单元,其中的值是可变的,故称为变量。变量有三个要素是:变量名、变量类型、变量值。1变量名用一个合法的标识符代表一个变量。如n,m,rot,total 等都是合法变量名。在程序中用到的变量必须在说明部分加以说明,变量名应遵循自定义标识符的命名规则,并注意“见名知义”的原则,即用一些有意义的单词作为变量名。2变量的类型常量是有类型的数据,变量在某一固定时刻用来存放一个常量,因此也应有相应的类型。如整型变量用来存放整数,实型变量用来存放实数。3变量说明在程序中若要使用变量,变量的名称及类型在程序的变量说明部分加以定义,变量的值则在程序的执行部分中才能赋给。变量说明的一般格式:VAR,:;(中括号内部分表示可省,下同)其中VAR是pascal保留字,表示开始一个变量说明段, 每个变量标识符或由逗号隔开的多个变量标识, 必须在它的冒号后面说明成同一类型。一个程序中,可以说明许多不同类型的变量,每种类型变量之间用分号隔开,共用一个VAR符号。例如:varage,day:integer;amount,average:real;其中,Integer(整型)、Real(实型)是标准标识符, 它们是“类型标识符”,代表了确定的类型,如age和 day 被定义为整型变量,amount和average被定义为实型变量。一旦定义了变量,就确定了它的类型,也就是说,就确定了该变量的取值范围和对该变量所能进行的运算。六、Pascal语言中的表达式 a+b/(c+d) 1/(1+1/(2*3.14159) a*a*a七、Pascal语言中的数据类型P11P121、整型(integer) 正、负整数和零 maxint=32767范围:-3276832767运算:+、*、div(整除) mod(求余)2、实型(real) 小数表示法、指数表示法范围:2.9E-391.7E38运算:+、*、/(实数除)算术运算符的运算次序: ( ) 函数 *、/、div、mod + 、八、常量和变量的定义常量的定义:CONSTpi=3.14159;变量的定义:VAR r,l,s:real; a:integer; a是一个两位数,求个位数和十位数 a mod 10 (个位) a div 10 (十位)*PASCAL 语言系统的启动 (1)开机启动WINDOWS98 (2)双击桌面上PASCAL图标即可启动PASCAL系统* 程序的输入、保存 (1)文件的存盘: 拉下file菜单(按Alt+F),选择save 或 save as (2)输入文件名:ex1,点击OK* PASCAL程序的运行 拉下run菜单(按Alt+R),选择run 查看运行结果:Alt+F5* PASCAL 语言系统的退出 拉下file菜单( 按Alt+F) ,选择exit 退出PASCAL 系统。 输入下列几个程序并保存程序、运行程序,观察程序的运行结果。program ex_1; const pi=3.14159; var r,c,s:real; begin r:=10; c:=2*pi*r; s:=pi*r*r; writeln(r,c,s); writeln(r=,r, c=,c, s=,s); writeln(r:8:2,c:8:2,s:8:2); writeln(r=,r:5:2, c=,c:8:2, s=,s:8:2); readln; gram Ex1; 输入程序 var i,j:integer; 保存程序 begin 运行程序 for i:=1 to 9 do 输错了如何修改? begin write( :30); for j:=1 to i do write(*); writeln; end;program Ex3; var i,j:integer; begin for i:=1 to 9 do begin write( :30-i); for j:=1 to i*2-1 do write(*); writeln; end; readln; end. readln; end. program Ex2; var i,j:integer; begin for i:=1 to 9 do begin for j:=1 to 9 do write(i,*,j,=,i*j:2, ); writeln; end; readln; end.第二章 简单程序设计一、教学目的1、让学生进一步了解算法的概念、程序设计思想和方法。2、让学生掌握顺序结构的程序设计。4、 让学生学会用Pascal语言设计简单的程序。二、教学内容一个完整的程序应该由输入、处理、输出三部分组成。上述求圆的面积、周长的程序中以下三个语句叫做赋值语句。r:=3;c:=2*pi*r;s:=pi*r*r;赋值语句 P13 格式:=功能:计算表达式的值,并赋值给变量注意事项: “=”赋值号与数学中的等号意义不同。如:语句X=X+1表示将变量X的值加1后的结果值再赋给变量X,而不表示等号两边的值相等。 赋值号左边只能是变量,不能是数值或表达式。下面的写法是错误的:4=X+Y A+B/2=6一次只能给一个变量赋值,如果要给多个变量赋相同的值,只能使用多个赋值语句。将一个变量的值赋给另一个变量,前一个变量的值保持不变(变量的这种特性可概括为“取之不尽,后入为主”)。例如:SUM0I0 不能写成:SUMI0变量名的类型应与表达式的类型相容。所谓相容是指变量名能够正确存取赋值号右边的表达式的值。program Ex3; var a,b,c:integer; begin a:=3;b:=5; c:=a; a:=b; b:=c; end. 执行上面程序后,变量a,b的最终值各是多少? program Ex3; var a,b:integer; begin a:=3;b:=5; a:=a+b; b:= a-b; a:=a-b; end. 执行上面程序后,变量a,b的最终值各是多少?输出语句(write语句) p14格式: :write(); writeln();功能:按指定的格式将输出项的内容输出例:writeln(r,c,s); writeln(r=,r, c=,c, s=,s); writeln(A+B=,A+B); 注:对real或integer限定场宽(自定义场宽) 向右靠齐,左留空格1.单场宽 writeln(a:5) ;a为整型2.双场宽 writeln(s:6:2) ;s为实型writeln(r,c,s); writeln(r:8:2,c:8:2,s:8:2);writeln(r=,r:5:2, c=,c:8:2, s=,s:8:2); program ex_1; const pi=3.14159; var r,c,s:real; begin r:=3; c:=2*pi*r; s:=pi*r*r; writeln(r=,r, c=,c, s=,s); writeln(r,c,s); writeln(r:8:2,c:8:2,s:8:2); writeln(r=,r:5:2, c=,c:8:2, s=,s:8:2); readln; end.输入上述程序,观察程序的远行结果。从中体会write语句的格式及功能,并讲解。练习:1、.a=123,b=46,打印输出a+b的横式与竖式。 a+b=123+46=169 123 + 46- 169 输入语句(read语句) 格式: :read(); readln();功能:从键盘上输入数据,将其值赋给输入项中的变量。例:readln(a,b,c);输入数据时,数据间用空格键分隔,最后一定要回车,表示输入结束。例:已知三角形的三条边a,b,c,求三角形面积(输入的三个数能构成三角形)。已知三角形的三条边a,b,c,其三角形面积S可用海伦公式进行计算。算法:(1)输入三角形的三条边a,b,c(2)求p=(a+b+c)/2(3)求s=sqr(p*(p-a)*(p-b)*(p-c)(4)输出三角形面积s练习:1、输入一个三位自然数,把这个数的百位与个位数对调,输出对调后的数。2、把输入的秒数转换成几小时几分几秒? m second = s hour f minute x second 例:8000 second =2 hour13 minute20 second 第三章 分支结构的程序设计一、教学目的5、 让学生进一步了解算法的概念、程序设计思想和方法。6、 让学生掌握分支结构的程序设计。3、让学生学会用Pascal语言设计简单的程序。学习任务:简单if语句、逻辑运算、分支结构的程序设计二、教学内容1、逻辑运算要判断“XY”是否成立,其结果不是一个数值,而是“成立”或“不成立”,也可以用“真”表示“成立”,用“假”表示“不成立”,也就是说,它的结果是一个逻辑值(“真”或者“假”),其实这种逻辑判断在日常生活中是经常遇到的,例如:人家问你“你是高中生吗?”,回答只能是“是”或“否”。实现逻辑运算是计算机的一个非常重要的功能,逻辑判断又叫布尔运算,是英国数学家布尔(Bool)提出的。最基本的逻辑运算按次序运算分为:Not(逻辑非)and(逻辑与)or(或)1) not逻辑非: 对逻辑值取反。2) and逻辑与: 只有两个表达式同为真时,值为真,否则都为假。3) or逻辑或: 只有两个表达式同为假时,值为假,否则为真。要表示 1x1 and x10 或者x10 or x0 then writeln(a0)program ex9; var a:real; begin write(a=);readln(a); if a0 then writeln(a0) else writeln(a0); readln; end. else writeln(a0);这个语句就叫条件判断句。2、 选择结构语句N Y条件?一 if语句(条件判断句)简单if语句格式:格式一、IF THEN 语句格式二、IF THEN 语句组1语句组2 语句组 END IF格式三、IF THEN 语句组1 ELSE 语句组2 END IF条件:由=、=、=、这些比较符将两个算术表达式连接起来的式子,如:x=0、 x mod 2=0 、a+b=c、b*b-4*a*b=0 等,这样的式子称为关系表达式。program ex9;判断a是否偶数? var a:real; begin write(a=);readln(a); if a mod 2=0 then writeln(Yes!) else writeln(No!); readln; gram ex9; var a,b:integer; begin write(a,b=);readln(a,b); if ab then writeln(a) else writeln(b); readln; end.三个数中找出最大的数的程序:program ex9; var a,b,c,m:integer; begin write(a,b,c=);readln(a,b,c); if ab then m:=a else m:=b; if mc then m:=c; writeln(max=,m); readln; end.课堂练习:1、行李托运p22X10 运费y=2.5+(x-10)*1.52、三个数中找出最大的数,画框图并写程序(注重讲解算法)。逻辑表达式多条件用AND、OR、not将关系表达式连接起来的式子(称为逻辑表达式)来表示。如:(a+bc) and (a+cb) and (b+ca)构成三角形的充分必要条件、(a=b) and (b=c)等边三角形的条件、(a=b) or (b=c) or (a=c) 等腰三角形的条件 (A mod 400=0) or (a mod 4=0) and (a mod 1000)判断a是否闰年等,这样的式子称为逻辑表达式。二、块结构条件语句格式:if thenelse if thenelse if thenelseend if问题:如何求解一元二次方程的根?分析:要求解一元二次方程的根,需要已知a,b,c的值(a0)。编程思路如右边的框图所示。根据数学知识一元二次方程是否存在实数根应看判别式是否大于等于零。例1:已知三角形的三条边a,b,c,判断能否构成三角形?若能,求三角形面积并判断是什么三角形(等边、等腰、直角、一般的三角形)?否则输出不能构成三角形的信息。算法:1、输入三角形的三条边a,b,c2、判断能否构成三角形,若能,则 (1)求p=(a+b+c)/2(2)求s=sqr(p*(p-a)*(p-b)*(p-c)(3)输出三角形面积s(4)判断是什么三角形?(等边、等腰、直角、一般的三角形)否则输出不能构成三角形的信息。先画框图,再写程序并讲解。program Ex_9; var a,b,c,d:integer; p,s:real; begin write(Enter a,b,c=);readln(a,b,c); if (a+bc) and (a+cb) and (b+ca) then begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c); writeln(s=,s:5:2); if (a=b) and (a=c) and (b=c) then writeln(It is Denbian) else if (a=b) or (a=c) or (b=c) then writeln(It is Denyao) else writeln(It is Yiban); end else writeln(That is wrong!);end.练习1、月收入t的所得税税率r如下:t rT800 0800=t1000 5%1000=t1500 10%1500=t=3000 20%编写一个程序,输入某人的月收入,输出所得税税率、应缴所得税款以及扣除所得税后的实际收入(分别用if语句、if语句嵌套)。练习2、输入一个年号,判断它是否是闰年。三、case语句上面我们知道可以用嵌套的if语句实现多分支的选择结构。但是如果分支越来越多时,用嵌套的if语句实现多分支就显得繁杂。当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句实现。它的选择过程,很象一个多路开关,即由case语句的选择表达式的值,决定切换至哪一语句去工作。因此在分支结构程序设计中,它是一种强有力的手段。在实现多路径分支控制时,用case对某些问题的处理和设计,比用if语句写程序具有更简洁、清晰之感。(一)、情况语句的一般形式:case of:语句1;:语句2;::语句nend;其中case、of、end是Pascal的保留字, 表达式的值必须是顺序类型,它可以是整型、布尔型及以后学习的字符型、枚举型和子界型。情况标号表是一串用逗号隔开的与表达式类型一致的常量序列。语句可以是任何语句,包括复合语句和空语句。(二)、case语句的执行过程先计算表达式(称为情况表达式)的值,如果它的值等于某一个常量(称为情况常量,也称情况标号),则执行该情况常量后面的语句,在执行完语句后,跳到case语句的末尾end处。(三)、说明情况表达式必须是顺序类型的;情况常量是情况表达式可能具有的值,因而应与情况表达式具有相同的类型;情况常量出现的次序可以是任意的;同一情况常量不能在同一个case语句中出现两次或两次以上;每个分语句前可以有一个或若干个用逗号隔开的情况常量;如果情况表达式的值不落在情况常的范围内,则认为本case语句无效,执行case语句的下一个语句。turbo pascal中增加了一个“否则”的情况,即增加一个else子句,但也是可省的。每个常量后面只能是一个语句或一个复合语句。练习1、编写一个程序,输入某人的月收入,输出所得税税率、应缴所得税款以及扣除所得税后的实际收入(分别用case语句)练习2、输入两个正整数a,b。b最大不超过三位数,a不大于31。使a在左,b在右,拼接成一个新的数c。例如:a2,b16,则c216;若a18,b476,则c18476。提示:求c的公式为:caKb其中: 10 当B为一位数时(0b10)K 100 当B为二位数时(10b100)1000 当B为三位数时(100b1000)第四章 循环结构程序设计一、教学目的1、让学生进一步了解算法的概念、程序设计思想和方法。2、让学生掌握循环结构的程序设计。3、让学生学会用Pascal语言设计较复杂的程序。二、教学内容FOR循环语句输出1100之间的整数在实际应用中,会经常遇到许多有规律性的重复运算,这就需要掌握本章所介绍的循环结构的程序设计。一、for语句的一般格式 for := to do ; for := downto do ;其中for、to、downto和do是Pascal保留字。表达式1 与表达式2的值也称为初值和终值。二、For语句执行过程先将初值赋给左边的变量(称为循环控制变量);判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤;如果末超过终值,则执行do后面的那个语句(称为循环体);循环变量递增(对to)或递减(对downt o);返回步骤;循环结束,执行循环下面的一个语句。三、说明循环控制变量必须是顺序类型。例如,可以是整型、字符型等,但不能为实型。循环控制变量的值递增或递减的规律是:选用to则为递增;选用downto则递减。所谓循环控制变量的值“超过”终值,对递增型循环,“超过”指大于,对递减型循环,“超过”指小于。循环体可以是一个基本语句,也可以是一个复合语句。循环控制变量的初值和终值一经确定,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。for语句中的初值、终值都可以是顺序类型的常量、变量、表达式。例2、求S=1+2+3+4+100的值program Ex_9; var S,i:integer; begin writeln; S:=0; for i:=1 to 100 do S:=S+I; writeLN(S=,S); readln; end.三、 应用举例例1、输出1100之间的整数For i := 1 To 100 do begin write( I:5);, IF I MOD 10=0 THEN writeln;end;例3、求S=1*2*3*4* *10的值。program ex_6; var s,i,a:integer; begin writeln; s:=1; for i:=1 to 10 do s:=s*i; writeln(s=(1*2*3*4*5.*10)=,s); readln; end.练习:1、输出1100之间的整数2、输出1100之间的偶数3、求S=1+2+3+4+100的值。4、求S=1*2*3*4* *10的值。5、求S=1+3+5+99的值。6、求S=2+4+6+100的值。7、S=12+22+32+502 8、S=1*2+2*3+3*4+ +49*509、S=1-2+3-4+5-6+ +99-10010、s=1-1/2+1/3-1/4+1/99-1/100 11、s=20+21+22+23+26312 s=1+(1+2)+(1+2+3)+(1+2+3+4+5+10) 11、 打印一列数的前30项 1,1,2,3,5,8,13,2113、编写一个评分程序,接受用户输入10个选手的得分(0-10分),然后去掉一个最高分和一个最低分,求出某选手的最后得分(平均分)。14、一张一元票换1分、2分和5分的硬币,每种至少一枚, 问有哪几种换法(各几枚)?15、 1997个2相乘所得的乘积的末两位数。(72) for199716、找出10个数当中最大的和最小的数。A:exfordx ex2217、紧接1989后面写一串数字,每数字是其前面的两个数字积的个位数字,问从左边1数起第1998个数字是几?(8 ) exfor1718、从1,2,3,一直写到200,一共写了多少个数码3?(40个) ex41 exfor3dg19、等式3()*8256=()3*6528 中,()填上那一个数字才能使等式成立?20、.某班共有五十名学生,已知他们的期中考试的数学成绩。现需要统计100分、90-99、70-89、60-69、60分以下各有多少人?21、 紧接1989后面写一串数字,每数字是其前面的两个数字积的个位数字,问从左边1数起第1998个数字是几?(8 ) exfor17随机函数:Random如 Random(256) 产生0255 之间的一个随机整数。Random 产生01 之间的一个随机小数。用法: x:=random(100) x 为099之间的一个随机整数。 程序开始加一个语句 randomize;可使每次运行产生的随机数不同。编程模拟抛硬币试验。else begin write(B); c:=c+1; end; end; writeln; writeln(the a has,b:3, the b has,c:3); readln;end.模拟抛硬币试验program zjr36;var a,b,c,i:integer;begin b:=0;c:=0; randomize; for i:=1 to 10000 do begin a:=random(2); if a=1 then begin write(A); b:=b+1; end WHILE循环与REPEATUNTIL循环一、WHILE循环对于for循环有时也称为计数循环,当循环次数未知,只能根据某一条件来决定是否进行循环时,用while 语句或repeat语句实现循环要更方便。while语句的形式为:while do ;其意义为:当布尔表达式的值为true时,执行do后面的语句。while语句的执行过程为:判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;执行循环体语句(do后面的语句);返回步骤1;结束循环,执行while的下一个语句。说明:这里while和do为保留字,while语句的特点是先判断,后执行。 当布尔表达式成立时,重复执行do后面的语句(循环体)。例1:求一批正数之和。exfor18(while 循环)program Ex_9; var x,s:real; begin s:=0; write(x=); readln(x); while x0 do begin s:=s+x; write(x=); readln(x) end; writeln; writeln(s=,s:8:2); readln; end.例2、求恰好使s=1+1/2+1/3+1/n的值大于10时n的值。分析:“恰好使s的值大于10”意思是当表达式s的前n-1项的和小于或等于10,而加上了第n项后s的值大于10。从数学角度,我们很难计算这个n的值。故从第一项开始,当s的值小于或等于10时,就继续将下一项值累加起来。当s的值超过10时,最后一项的项数即为要求的n。程序如下:var s : real; n : integer;n表示项数begin s:=0.0;n:=0; while s=10 do当s的值还未超过10时 begin n:=n+1;项数加1 s:=s+1/n;将下一项值累加到s end; writlen(n=,n);输出结果end.例3、求两个正整数m和n的最大公约数。分析:求两个正整数的最大公约数采用的辗转相除法求解。以下是辗转的算法:分别用m,n,r表示被除数、除数、余数。求m/n的余数r.若r=0,则n为最大公约数.若r0,执行第步.将n的值放在m中,将r的值放在n中.返回重新执行第步。程序如下:program ex4_4;var m,n,a,b,r:integer;beginwrite(Input m,n:);readln(m,n);a:=m;b:=n;r:=a mod b;while r0 dobegina:=b;b:=r;r:=a mod b;end;writeln(The greatest common divide is:,b:8);end.例4、 求一个整数的各位数字之和。exfor19program Ex_9; var x,s,t:integer; begin s:=0; write(x=); readln(x); while x0 do begin t:=x mod 10; s:=s+t; x:=x div 10; end; writeln; writeln(s=,s); readln; end.二、直到循环(REPEATuntil语句)用while语句可以实现“当型循环”,用repeat-until 语句可以实现“直到型循环”。repeat-until语句的含义是:“重复执行循环,直到指定的条件为真时为止”。直到循环语句的一般形式:Repeat;:;until ;其中Repeat、until是Pascal保留字,repeat与until之间的所有语句称为循环体。说明:repeat语句的特点是:先执行循环,后判断结束条件,因而至少要执行一次循环体。repeat-until是一个整体,它是一个(构造型)语句,不要误认为repeat是一个语句,until是另一个语句。repeat语句在布尔表达式的值为真时不再执行循环体,且循环体可以是若干个语句,不需用begin和end把它们包起来, repeat 和until已经起了begin和end的作用。while循环和repeat循环是可以相互转化的。对于例3中求两个正整数的最大公约数,程序可用repeat-until循环实现如下:var m,n,a,b,r:integer;beginwrite(Input m,n=);readln(m,n);a:=m;b:=n;repeatr:=a mod b;a:=b;b:=r;until r=0;writeln(The greatest common divide is,b);end.以上我们已介绍了三种循环语句。一般说来,用for 循环比较简明,只要能用for循环,就尽量使用for循环。只在无法使用for循环时才用while循环和repeat-until循环, 而且 while 循环和repeat-until循环是可以互相替代的。for 循环在大多数场合也能用whiel和repeat-until循环来代替。一般for循环用于有确定次数循环,而while和repeat-until循环用于未确定循环次数的循环。当一个循环的循环体中又包含循环结构程序时,我们就称之为循环嵌套。三、循环的嵌套例1:如何编程打印如下的三个图形?打印长方形图形的程序如下:For i = 1 To 5 do Writeln( *);只需单重循环即可实现。循环变量I用来控制打印的行数。如果把一行打印十个“*”号的 writeln(*)语句换成如下的几个语句,也同样完成(一次只打印一个“*”),for j=1 to 10 do write( “*”);writeln;这样就构成了二重循环For i = 1 To 5 dofor j=1 to 10 do write (“*”);writeln;打印直角三角形的程序如下:For i = 1 To 5 dofor j=1 to I do write (“*”);writeln; 打印正三角形的程序如下:For i = 1 To 5 dowrite(“ “:20-i); 控制每行打印的起始位置for j=1 to 2*i-1 do 打印每行*号的个数 write( “*”);writeln;请同学们思考:如何打印九九乘法表。四、循环结构程序设计例3 求1!+2!+10!的值。分析:这个问题是求10自然数的阶乘之和,可以用

温馨提示

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

评论

0/150

提交评论