pascal程序设计

pascal程序设计

ID:25497959

大小:280.50 KB

页数:46页

时间:2018-11-20

上传者:xinshengwencai
pascal程序设计_第1页
pascal程序设计_第2页
pascal程序设计_第3页
pascal程序设计_第4页
pascal程序设计_第5页
资源描述:

《pascal程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

东北师大附中内部教材第一章PASCAL程序设计基础我们日常工作、学习和生活中,要做某件事,如果事先没有计划,只是想一步做一步,是达不到理想效果的。要很好地、高效率地完成某件事,必须事先有一个计划,第一步做什么,下一步做什么,最后一步做什么。即先考虑好做这件事的所有步骤,然后按部就班地完成它。在计算机系统中,能完成某项任务的一系列指令或语句就是程序。程序设计是设计、书写和调试程序的过程。第一节程序设计语言及算法一、程序设计语言人们使用计算机,可以通过某种计算机语言与其交谈,用计算机语言描述所要完成的工作。为了完成某项特定任务用计算机语言编写的一组指令序列就称之为程序。编写程序和执行程序是利用计算机解决问题的主要方法和手段。程序设计语言是用来书写计算机程序的语言。程序设计语言经历了机器语言、汇编语言、高级语言到面向对象的程序设计语言等多个阶段。1.机器语言机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且编出的程序全是些0和1的指令代码,直观性差,还容易出错。现在,除了计算机生产厂家的专业人员外,绝大多数程序员已经不再去学习机器语言了。2.汇编语言  为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码(如用ADD表示运算符号“+”的机器代码),于是就产生了汇编语言。汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。汇编语言是低级语言。3.高级语言20世纪50年代后期,在对低级语言的改进过程中,又研制出一种既接近于自然语言,又接近数学语言的程序设计语言。使用这种语言编写程序快捷方便,便于修改和高度,大大提高了编程的效率,同时这种语言编写的程序不依赖具体的机器,能用性好,我们称之为高级语言。用高级语言,不必考虑机器的结构和特点,可以集中精力考虑解决问题的算法,因此,高级语言也称为算法语言。4.面向对象的程序设计语言王晓光friendi@163.com 东北师大附中内部教材面向对象程序设计方法成为今后软件发展的主流,面向对象程序设计方法直接映射到人们对问题的认识上,提供了一种有目的地把系统分解为模块的策略,并将设计决策与客观世界的认识相匹配。面向对象的程序设计语言更加直观,更加人性化。二、算法例1写出你在家中烧开水的过程的一个算法。我们用计算机模拟过程具体步骤可以表示为:步骤1:往壶内注水;步骤2:点火加热;步骤3:观察:如果水开,则停止烧火,否则继续烧火;步骤4:如果水未开,重复“3”直至水开。这种对于解决问题的方法和步骤的描述就是算法。算法可以理解为由基本运算及规定的运算顺序构成的完整的解题步骤,或看成按要求设计好的有限的、确切的计算序列,并且这样的步骤或序列能解决一类问题。实际上,做任何事情都需要设计好工作的步骤和方法,例如,做广播体操、国家足球队的每一场比赛、举办奥运会、厨师炒菜,都是按一定的步骤进行的。做广播操的每一节动作的图解就是“广播体操算法”,举办奥运会的流程也是一个“算法”。一个菜谱也是一个“算法”,厨师炒菜就是实现这个算法。三、算法描述描述算法的方式是多种多样的,可以用文字(例如烧水);也可以用图示(例如广播体操图解);还可以用别的一些符号系统(例如音乐的乐谱)。例2已知两个整数a、b,计算这两个数的和的算法就可以用文字描述为:步骤1:输入整数a、b;步骤2:计算a+b的和;步骤3:输出a+b的和;用算法流程图来描述计算a+b的和的算法会更加直观。如图1.1所示。开始根据S=a+b计算出S值输出S结束图1.1计算a、b两个数和的算法输入整数a,b王晓光friendi@163.com 东北师大附中内部教材我们看到流程图是用一些框图来表示算法中的一些功能块,流程图常用的符号如下表:表1-1常用流程图符号框图名称框图形状框图意义起始框/终止框表示开始和结束输入输出框表示输入或输出条件框表示条件判断处理框表示要完成某种处理功能连接点把流程图中的不同部分或几张流程图连接起来流程线表示走向画流程图时,先画出代表程序中功能块的一些处理框和条件框,并在其中写上解释性的文字,然后用流程线把这些框连接在一起并标上箭头表示流程的顺序。四、根据算法写出程序王晓光friendi@163.com 东北师大附中内部教材  为了使算法在计算机上实现,需要使用计算机程序设计语言来编程,例如完成计算两个整数的和(两个数的和不大于32767)的过程,可以用PASCAL语言表示成如下形式;  PROGRAMp1_1(INPUT,OUTPUT);VARa,b,s:INTEGER;BEGINREAD(a,b);S:=a+b;WRITE(S);END.五、程序设计的步骤  通常程序设计的步骤如下图1.2分析问题确定处理方案确定算法编写程序上机调试程序图1.2程序设计步骤步骤1:对问题进行细致的分析;步骤2:确定解决问题的处理方法;步骤3:确定解决问题的算法;步骤4:根据算法编写程序;步骤5:运行、调试程序,得到结果,问题解决。实践与交流在电视台的某个娱乐节目中,要求参与者快速猜出物品的价格。主持人出示某件物品,参与者每次估算出一个价格,主持人只能回答高了、低了或者正确。在某次节目中,主持人出示了一台价值在1000元以内的随身听,并开始了竞猜。下面是主持人和参与者的一段对话:参与者:800元!主持人:高了!参与者:400元!主持人:低了!参与者:600元!主持人:低了!这个参与者的算法合理吗?如果你是参与者,你将怎么猜?请写出你的算法。王晓光friendi@163.com 东北师大附中内部教材第二节认识PASCAL语言PASCAL语言是1971瑞士苏黎世联邦工业大学的N.Wirth教授开发的一种高级语言,历时三十余载,经久不衰,已成为世界上广泛流行的程序设计语言之一。一、PASCAL程序的基本组成在没有系统学习PASCAL语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握PASCAL程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。例3为了加强公民的节水意识,合理利用水资源,各地采用价格调控手段达到节约用水的目的,某市规定如下用水收费标准:每户每月的用水量不超过6立方米时,水费按每立方米2元收费,超过6立方米时,不超过的部分每立方米仍按2元收费,超过的部分每立方米按2.5元收费,请编写一个程序,输入一户人家的月用水量(整数),计算需交水费。PROGRAMp1_2(INPUT,OUTPUT);程序首部说明部分VARx:INTEGER;{x为月用水量}s:REAL;{s为需要交的水费}BEGINWRITE(“请输入你家的本月用水量:”);程序体执行部分READ(x);IFx<6THENs:=x*2ELSEs:=(x-6)*2.5+6*2;WRITE(“您本月需交水费”,s,“元”);END.标准Pascal程序是由程序头(如例中第一行)和程序体两部分组成。组成Pascal程序的基本单位是语句,除最后一条语句“END”以圆点“.”结束外,其它语句均以分号结尾(END前一个语句可以不用分号)。1.程序头程序头中的PROGRAM是Pascal源程序的标志,键入空格后输入程序名(自定)。2.程序体程序体由说明部分和执行部分组成。(1)说明部分说明部分必须写在程序体的开始,程序所用到的常量的值和变量的类型必须在这里说明,否则不能使用。常量是指在程序执行过程中,值始终保持不变的量,经常用到的是数值型常量和字符型常量,常量的定义是以CONST开头,语法格式为:王晓光friendi@163.com 东北师大附中内部教材CONST<常量标识符>=<常量>;……<常量标识符>=<常量>;在一个程序中可以定义多个常量。每个常量定义用分号“;”结束。上面的程序说明了一个常量pi。变量是程序在执行过程中其值可以发生变化的量,如在上面程序中radius,area就是变量。变量名必须以字母开始,后面可跟字母、数字或下划线的组合,字母不分大小写,长度可任意,但仅前63个字符有效。变量名由程序设计者定义,要尽量取有意义的名字且与所表示的数据有关,例如:number,name,x1,sum_3等都是合法的变量名,而如2a,x+y是不合法的变量名。Pascal中专用词汇,如BEGIN、VAR、INTEGER等,不能作为变量名,我们称它为保留字。保留字也不分大小写,我们在例题中把它写成大写是便于初学者分析和学习。Pascal的保留字、程序名、变量名、常量名和以后学习的子程序名等,它们都是某种数据或用途的标志,我们统称它们为标识符。Pascal在执行部分用到的每一个变量,都必须在说明部分加以说明,变量说明以VAR开头,语法格式为:VAR<变量标识符表>:<类型>;……<变量标识符表>:<类型>;<变量标识符表>是一个或多个用逗号隔开的变量标识符,冒号后面的<类型>将在下面讲述。(2)执行部分执行部分是程序的主体,实现程序的算法和操作全过程,也是以后几节讲授的内容。二、TurboPascal的基本数据类型1.INTEGER整型整数型数据的范围在–32768─32767之间。2.REAL实型实数型数据的绝对值范围在2.9×10-39─1.7×1038之间。实数的表示有两种方法:小数形式和指数形式(或称科学表示法)。小数形式如36.72,0.0等,指数形式如–6.32E+8(相当于–6.32×108),8.623E-4(相当于8.623×10-4)等。3.CHAR字符型CHAR字符型常量是用一对单引号括起来的单个字符,如:'a','','+','Y','3'等。说明:(1)一对单引号不分左引号和右引号,用同一键;(2)用引号括起来的字符与不用引号括起来的字符意义完全不同,如a可能代表变量而'a'只是一个字母,+是进行加法运算而'+'也只是一个符号;(3)连续键入两个单引号代表空字符,当键入一个引号后键入空格再键入另一引号代表的字符是空格,是有意义、有ASCII码值的;(4)对于英文字母,大小写代表的字符型常量是不同的,ASCII值不同,也不能互换。王晓光friendi@163.com 东北师大附中内部教材4.STRING字符串型STRING字符串型常量是用一对单引号括起来的两个或两个以上的字符,与CHAR型不同,在中学程序设计中经常用到。如'JILIN','3456'等。说明:例中的'3456'代表了一串数字字符,没有数学意义,不能参与算术运算。5.BOOLEAN布尔型布尔型数据属于逻辑代数,它只有两个值:FALSE(假)和TRUE(真)。TurboPascal的基本数据类型都是有序类型,而INTEGER、CHAR和BOOLEAN同时又是顺序类型,即每个数据都有确定的序号,并都有其后继值和前导值。关于其后继值和前导值,我们将以后讲述。三、Pascal的运算1.算术运算:算术运算是在整型和实型两种类型中进行的。表1—2算术运算符 +-*/DIVMOD 加减乘除 整型除整型取模参与运算的两个数如果都是整数,+、-、*的结果也是整数,整型数除法(DIV)运算结果是商的整数部分(属整型数)。例如:7DIV5=1(-17)DIV3=-53DIV7=0取模运算(MOD)是取两个整数相除的余数。例如:19MOD7=5(-17)MOD3=-23MOD7=3参与运算的两个数如果都是实数,+、-、*、/的结果也是实数,没有DIV和MOD运算,实型数可以与整型数混合参与运算,其结果是实型数。即使是两个整型数做“/”除法所得商是整数时,其结果也是实型。例如:12/3=4.0000000000E+002.比较运算:表1—3比较运算符  < <= = >= ><>小于小于等于等于大于等于大于不等于比较运算的结果只有两种可能:TRUE(真)或FALSE(假),它属于布尔型的常量。例如:当输出3>5的结果时,屏幕上会出现FALSE。3.布尔运算:布尔运算又称逻辑运算。表1—4逻辑运算符ANDORNOT逻辑与(乘)逻辑或(加)逻辑非(取反)这些运算的对象是布尔型的,结果也是布尔型的。下面是逻辑运算的真值表,其中a、b是布尔型数据,T表示TRUE,F表示FALSE。表1—5逻辑运算真值表abNOTaaANDbaORb王晓光friendi@163.com 东北师大附中内部教材TTFTTTFFFTFTTFTFFTFF四、Pascal标准函数和表达式1.TurboPascal标准函数TurboPascal提供了一个系统函数库,其中的函数称为标准函数,用户可以直接使用。在使用时需写出函数名和自变量,与数学不同,自变量一定用圆括号括起来,如数学中的sinx在Pascal语言中写成SIN(x),再如求a+b的算术平方根,要写成SQRT(a+b)。这些事先预定义的函数包括算术标准函数、字符串函数、图形函数和文件操作函数等等。表2—6TurboPascal部分标准函数表函数含义、功能自变量类型及说明函数值类型ABS(x)│x│整型或实型与x相同SQR(x)x2整型或实型与x相同SQRT(x)算术根≥0的整型或实型实型SIN(x)Sinx整型或实型、弧度制实型COS(x)Cosx整型或实型、弧度制实型ARCTAN(x)arctgx整型或实型实型EXP(x)ex整型或实型实型LN(x)自然对数lnx>0的整型或实型实型TRUNC(x)X的整数部分实型整型ROUND(x)最接近x的整数实型整型ODD(x)判断奇偶整型布尔型ORD(x)序号函数顺序类型整型说明:函数TRUNC(x)的作用是截去x的小数部分,然后将x的整数部分转换成整型值;ROUND(x)有四舍五入功能,其它同TRUNC(x);三角函数的自变量为弧度制;ORD(x)的自变量x是数字字符时,对应的是ASCII码值,而一个整型数的序号是其整数值。例如:ORD('5')=53,ORD(5)=5。对于BOOLEAN类型的两个值,也有确定的序号:ORD(FALSE)=0,ORD(TRUE)=1。  2.表达式表达式可以是常量、变量、函数和它们之间的算术运算、逻辑运算、关系运算等。注意表达式与数学式在写法上多数是不一样的。数学式          Pascal表达式         (a+b)/(a-b)     (-b+sqrt(b*b-4*a*c))/(2*a)注意:王晓光friendi@163.com 东北师大附中内部教材(1)只能使用合法的标识符。(2)乘号必须用符号“*”,不得省略,如a*b。(3)函数的自变量一定要写在圆括号中,如sin(2*x)。(4)为了指定运算的次序可以利用圆括号,不得使用中括号“[]”和大括号“{}”。(5)表达式运算的优先规则基本与数学相同,当几个布尔运算同时使用时,按下列规则进行:首先是NOT运算,然后是AND运算,最后是OR运算。当然,可以通过括号改变运算的先后次序。例4求下列表达式的值。(1)ORD(6)/3(5)NOT(2>3)(2)3*9MODSQR(2)(6)(5>7)OR(2>3)AND(5>2)(3)ABS(-25)DIV(3+4)(7)(3>2)ANDNOT(5>3)(4)513MOD100DIV10(8)(3>2)ORNOT(5>3)解:(1)值为2.0000000000E+00说明:ORD(6)的值为整数6,实型除2后得实型数值。(2)值为3说明:先计算3*9,积为27,第二步计算2的平方为4,最后求余数为3。(3)值为3(25除以7取整为3)。(4)值为1(513除以100的余数为13,13除以10取整为1)。(5)值为TRUE。(6)值为FALSE说明:按优先级,先计算(2>3)AND(5>2)的值为假,再与(5>7)进行OR运算。(7)值为FALSE(先计算NOT(5>3),再与(3>2)进行AND运算。(8)值为TRUE。实践与交流1.单项选择题(1)以下能作为标识符的是:(A)2X(B)a+b(C)A3(D)x<>y(2)以下能作为变量名的是:(A)4A(B)DIV(C)VAR(D)ABC(3)以下不是保留字的是:(A)NOT(B)CONST(C)VAR(D)ABC(4)当a=5,b=3,b>a的值是(A)TRUE(B)FALSE(C)-2(D)NOT2.指出下面的常量说明的对错:CONSTpi=3.1415927b=FALSE2A=9.22M='1995'3.指出下面的变量说明为什么是错的:(1)VARR=REAL(2)VARi,j,m:INTEGERj,k:REAL(3)VAR'a','b','c':CHAR4.把下面代数式或命题写成Pascal表达式:(1)b2-4ac(2)(3)A小于B或小于C;(4)A和B都大于C;(5)A是非正数;(6)B不能被A整除;王晓光friendi@163.com 东北师大附中内部教材(7)A同时能被B和C整除。5.求下列表达式的值:(1)513MOD10(2)(513MOD100)DIV10(3)513DIV100 (4)TRUNC(17/3)(5)ROUND(17/3)(6)3+SQR(9)(7)SIN(3.14/6)+1.5(8)1/ABS(5-7)(9)(5>3)AND(3>4)(10)ORD(3+5)(11)(5>3)OR(3>4)(12)SQRT(25)DIV2(13)(5>3)ANDNOT(3>4)(14)(5>3)ORNOT(3>4)王晓光friendi@163.com 东北师大附中内部教材第二章顺序结构程序设计无论做任何事情,都要有一定的方式方法与处理步骤。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。为了使计算机有效地解决某些问题,须将处理步骤编排好,用计算机语言组成“序列”,让计算机自动识别并执行这个用计算机语言组成的“序列”,完成预定的任务。将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。在PASCAL语言中,执行每条语句都是由计算机完成相应的操作。编写PASCAL程序,是利用PASCAL语句的功能来实现和达到预定的处理要求。顺序结构是结构化程序设计的三种基本结构之一,组成顺序结构的各语句是按照它们在程序中出现的先后顺序逐条执行的。“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写顺序结构程序。第一节赋值语句通过第一章的学习我们了解到,变量代表一个存储单元,其值是可变的,那么其中的值是怎么提供的,又是怎么改变的呢?这就需要用到我们这一节介绍的赋值语句。例5交换两个变量的值:将变量a值为5和变量b值为8中的值互换,编写程序完成这一交换过程。交换两个变量的值,可以想象成交换两个杯子中的水,可以按以下步骤处理,如图2.1.1:A水杯B水杯C空杯步骤1步骤2步骤3图2.3交换两个杯子中的水我们用计算机模拟这一过程也需找到一个空杯子c,具体步骤可以表示为:步骤1:拿一个空杯子c作为过渡,先将a杯中的水倒入c杯中;王晓光friendi@163.com 东北师大附中内部教材步骤2:再将b杯中的水倒至a杯中;步骤3:最后将c杯中的水倒至b杯中。这样操作,可达到题目要求。算法描述:1、初始化变量a,b2、将a的值赋值给c3、将b的值赋值给a4、将c的值赋值给b流程图如下:开始结束初始化a:=5;b:=8c:=0开始交换c:=a;a:=bb:=c图2.4交换两个变量的值流程图程序如下:PROGRAMp2_1(INPUT,OUTPUT);VARa,b,c:INTEGER;BEGINa:=5;b:=8;c:=0;c:=a;a:=b;b:=c;END.指点迷津1、赋值语句的格式变量名:=表达式;王晓光friendi@163.com 东北师大附中内部教材其中":="称为赋值号。赋值语句的作用是计算表达式的值,并赋给变量。对于任何一个变量必须首先赋值,然后才能引用,否则,未赋初值的变量将以一个随机值参与运算。另外,赋值号两边的类型必须相同,但表达式值为整数时,它可自动化为实型后赋给该实型变量,即符合赋值相容。2、执行过程在上面的任务中,在赋值号右边的只是一个简单的变量,更多的时候,赋值号的右边是一个表达式,这时计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。如:a:=2+3;b:=(3+5)*7;甚至可以在表达式中包含变量。如:a:=a+b;一个赋值语句中有多个赋值号,这时按照从右到左的顺序进行计算。如:a:=8+b:=3+2,此时a的值为13,b的值为5。实践与交流1.火车站和飞机场经常为旅客的行李提供“打包”服务,如果长、宽、高分别为a、b、c米的箱子按如图所示的方式“打包”至少需要多长的“打包”带?(图中粗线为“打包”带其中a=0.5米b=1米c=0.8米)2.某车棚存有自行车和三轮车共65辆,它们的轮子数合计为150个。求该棚内存有的自行车和三轮车各是多少辆?王晓光friendi@163.com 东北师大附中内部教材第二节输入/输出语句前面讲到的例子中,所用到的变量的值都是在程序执行之前就赋值给变量了,用这种方法给变量赋值固然可以,但是如果需要赋值的变量较多,或变量的值经常变化,在程序执行之前就通过赋值语句给变量赋值就很不方便,有的程序在执行之前很可能无法确定变量的值,比如给行李打包的例子中,每一个箱子的体积都不同,所以,没有输入语句,程序不具备通用性。没有输出语句,程序得到的结果不能输出出来,用户就得不到计算后的结果,这样程序就没有意义了。所以一个程序通常都会含有输入输出语句任务对于任意给定的半径,计算圆的周长和面积。(结果保留两位小数)任务分析计算圆的周长和面积,首先要了解计算公式圆周厂的计算公式可以表示为L=2*π*r,面积计算公式为S=π*r*r,其中π为常量,r为半径,是可变的,在程序的执行过程中由键盘输入。最后还要将结果输出出来。算法1、初始化给常量π赋值为3.14。2、从键盘读入数据并赋值给表示半径的变量r。3、根据公式计算圆的面积和周长4、输出半径及圆的面积和周长流程图王晓光friendi@163.com 东北师大附中内部教材开始结束初始化P:=3.14;s:=0;l:=0输入半径r开始计算s=P*r*r;l=2*P*r输出半径r,面积s,周长l程序PROGRAMp2_2(INPUT,OUTPUT);CONSTp=3.14;VARr,s,l:REAL;BEGINs:=0;l:=0;READ(r);s:=p*r*r;l:=2*p*r;WRITE(s:8:2,l:8:2);END.指点迷津通过计算机的外设把数据送到计算机内存的过程称为输入。输入语句的语法格式为:READ(<变量名表>);READLN(<变量名表>);READLN和READLN是标准过程名,它们是标准识符。<变量名表>王晓光friendi@163.com 东北师大附中内部教材是一个或几个由逗号隔开的变量标识符,他们必须在程序说明部分预先说明,他们可以是整型、实型或字符型,布尔型不可以直接读入。例如a,b,c为整型变量,READ(a,b,c)之后键盘输入:203040(表示回车)结果:a=20,b=30,c=40READLN语句和READ语句不同之处在于输入数据到各变量之后,READLN自动换行,从下一行开始再输入数据。一个READ语句执行完后,数据行中多余的未读数据可以被下一个输入语句读入;而一个READLN于执行完后,数据行中多余未读数据就没有用了。READLN语句中可以不包含变量名表。即有以下等价情况:READLN(a,b);READLN等价于READLN(a,b)输入语句输入的数据类型必须和变量一一对应。如果输入的是一串整数或实数,数据间用空格或回车分隔;若输入的是一串字符,则不用分隔。输出语句,也称写语句。用于将计算结果通过屏幕或打印机输出给人看。输出语句的语法格式为:WRITE(输出量表);WRITELN(输出量表);WRITE和WRITELN是标准过程名,它们是标准识符。输出量表是一串用逗号分隔的常数、常量、变量、函数、表达式或用单引号括起来的字符串。输出表是一些有逗号分开的输出项。输出项可以是变量或表达式,或用引号括起来的字符串(当然,变量或字符串本身也是表达式)。若为变量,则输出变量的值;若为表达式,则先计算表达式的值,然后将该值输出;若为字符串,则输出字符串本身(不包括引号)。WRITE与WRITELN语句的功能基本相同,但有下述两点区别;(1)WRITE语句是一个输出量接着一个输出量地输出,但不换行;WRITELN语句也是一个接着一个地输出,但输出完最后一个输出量后自动换行。(2)WRITE语句至少有一个输出量,而WRITELN语句允许不输出任何内容,只是起换行作用。标准输出格式是系统规定好的格式,它规定好了各种不同类型数据的输出宽度(也称域宽或场宽)。整型量按其数值实际宽度输出;实型量按17位宽度的科学计数法格式输出,而小数部分的小数点前只保留1位有效数字字符型按1位宽度输出;布尔型量按4位或5位宽度(大写形式)输出;字符串按串长度原样输出。自定义格式输出王晓光friendi@163.com 东北师大附中内部教材自定义格式就是在输出语句中自带宽度,用户可以根据需要定义各输出量的输出宽度。对一个输出量可带一个宽度参数(域宽),也可以带两个宽度参数,带一个域宽的可以是任意的标准数据类型,而带两个域宽的只能是实数类型。带一个域宽的输出语句格式:WRITE(e:m);或WRITELN(e:m);注意:在指定域宽后,所有数据不再按标准格式宽度输出,而按指定域宽输出;所有数据向右靠齐,左边补格;输出整型数据时,若定义域宽小于数据宽度,则自动改为所需宽度输出;输出实型数据时,若定义域宽小于数据宽度,则从小数点后截尾,但小数点前的一位有效数总是四舍五入地保留着的。带两个域宽的输出语句格式:WRITE(e:m:n);或WRITELN(e:m:n);双域宽是用来控制实型量数据的输出格式的。其中e为输出量,m表示要输出的总宽度(包括符号位、整数部分、小数点和小数部分);n则表示小数的保留位数。指定双域宽后,实数不再按科学记数法形式输出,而是以小数形式输出。实际小数位数不足域宽时,右边用0补足位数;若数据实际位数超过域宽时,以保证数据的正确输出为原则,小数点后截尾,小数点前按需分配。实践与交流1.我国是一个严重缺水的国家,珍惜水资源,杜绝水浪费,这是我们每个公民的应尽之责,据测试,拧不紧的水龙头每分钟会滴下2滴水,每滴水约0.05毫升,小明同学在洗手时,没有把水龙头拧紧,当小明离开x小时后水龙头滴了y毫升水,从键盘输入x和y的值,并计算小明同学浪费了多少水。2.输入一个三位的整数,将它反向输出。例如输入123,输出321。王晓光friendi@163.com 东北师大附中内部教材第三章选择结构程序设计通常,计算机按在程序中书写的顺序执行语句。然而,如果一个程序只由赋值语句和输入输出过程组成,那么它们只能顺序地执行一次,而且必然执行一次。但一个程序仅有这类顺序执行的语句显然是不够的,经常需要的是根据某个变量或表达式的值做出判定,以决定执行哪些语句和跳过哪些语句不执行。我们称这种程序结构为选择结构。为了实现选择结构程序设计,在PASCAL中引入了IF语句(条件语句)和CASE语句(情况语句),它们能从两个或多个语句中按一定的条件有选择的执行其中的一个。本章将介绍这两个语句及选择结构程序设计方法。第一节IF语句条件语句是用一个布尔表达式的值来决定程序的走向。即程序提供一个分支,由布尔表达式的值来决定程序究竟运行哪个分支。即程序已经不是顺序结构了,而是提供了一个分支结构。每次只可能运行其中的一个分支。简单IF语句可从两路语句中选择其一执行,从而实现双向分支。任务为了加强公民的节水意识,合理利用水资源,各地采用价格调控手段达到节约用水的目的,某市规定如下用水收费标准:每户每月的用水量不超过6立方米时,水费按每立方米2元收费,超过6立方米时,不超过的部分每立方米仍按2元收费,超过的部分每立方米按2.5元收费,请编写一个程序,输入一户人家的月用水量,计算需交水费。任务分析用计算机来完成这个计算,首先我们要对用户的用水量(用变量s记录)进行分析,然后选择不同的公式进行计算需交纳的水费(用变量m表示)。算法1、从键盘读入用水量,并赋值给变量s王晓光friendi@163.com 东北师大附中内部教材1、判断用水量在哪个等级,如果s<=6则m:=s*2,否则m:=(s-6)*2.5+122、输出计算结果流程图开始输入用水量s结束输出水费m计算m:=(s-6)*2.5+12对用水量判断s>6计算m:=s*2NY程序PROGRAMp3_1(INPUT,OUTPUT);VARs:INTEGER;m:REAL;BEGINWRITE(“请输入你家的本月用水量:”);READ(s);IFs>6THENm:=(s-6)*2.5+6*2ELSEm:=s*2;WRITE(“您本月需交水费”,m,“元”);END.指点迷津王晓光friendi@163.com 东北师大附中内部教材一、条件语句有两种格式:1、IF布尔表达式THEN语句;2、IF布尔表达式THEN语句1ELSE语句2;二、说明1、格式1的作用是:如果布尔表达式值为TRUE(即该条件满足),则运行语句,否则不运行任何语句。2、格式2的作用是:如果布尔表达式值为TRUE(即该条件满足),由运行语句1,否则(即布尔值为FALSE,亦即条件不满足)就运行语句2。3、如果条件语句中的分支语句不止一句,可用“BEGIN……END;”来框住,加以区别1、只有条件语句结束时才有分2、有的时候判断的条件可能不只一个,这是就需要用到布尔表达式的组合或者是IF语句的嵌套。即在ELSE语句中还包含IF语句,这种情况下要注意IF与ELSE的匹配问题,ELSE要与离它最近的IF相匹配。三、IF语句常见的错误在IF语句中常见的错误是,在THEN的语句和ELSE之间多加了一个分号。例如把语句:IFx>5THENy:=3*x+5ELSEy:=2*x+3错写成了:IFx>5THENy:=3*x+5;ELSEy:=2*x+3因为加分号以后,IF语句已经结束,而ELSE又不能作为另一个语句的开头,造成语法错误。另一个常见的错误是在THEN或ELSE包括几个语句时,未加BEGIN与END构成复合语句的形式。例如把语句:IFx>0THENBEGINY:=2*x;王晓光friendi@163.com 东北师大附中内部教材Z:=5*yEND错写成了IFx>0THENy:=2*x;z:=5*y他们两者的效果显然是不同的。前者当x>0时,要执行两个语句,计算y和z.。当x<=0时,什么也不执行。后者当x>0时,执行计算y语句.当x<=0时,不执行计算y的语句,但是无论x为何值,均要执行计算z的语句。实践与交流1.某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100套的,每套定价为50元,否则每套价格为80元。编程由键盘输入订购套数,输出应付款的金额数。2.某车间按工人加工零件的数量发放奖金,奖金分为五个等级:每月加工零件数N<100者奖金为10元;100<=N<110者奖金为30元;110<=N<120者奖金为50元;120<=N<130者奖金为70元;N>130者为80元。请编程,由键盘输入加工零件数量,显示应发奖金数。(用两种方法实现)3.假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按每公斤1.5元计算邮费,如果超过1公斤时,其超出部分每公斤加收0.8元。请编程序计算邮件收费。4.输入三个正整数,若能用这三个数作为边长组成三角形,就计算并输出该三角形的面积,否则输出Can't。(组成三角形的条件为:任意两边之和大于第三边)王晓光friendi@163.com 东北师大附中内部教材第二节CASE语句IF语句只能在两个分支中进行选择,当遇到需要有两个以上分支时,IF语句就很不适用了,这时我们可以用CASE语句,它能使程序有很多个分支。CASE语句是由一个表达式和众多可选择的操作序列组成。运行时,根据表达式的求值结果,在众多的分支中选取一个分支执行。当分支较多时采用CASE语句更为方便。任务用计算机编写一个程序,模拟计算器,要求能完成加减乘除计算。任务分析用计算机编写程序模拟计算机工作,主要的问题在于对不同的运算符号进行识别。可以用两个变量a和b表示两个运算数,用p表示运算符。从键盘输入第一个运算数、运算符及第二个运算数,最后用变量s记录最后的计算结果。算法1、初始化变量s:=0;a:=0;b:=02、从键盘读入运算数及运算符3、判断运算符的种类,选择不同的分支运算4、输出最后计算结果流程图王晓光friendi@163.com 东北师大附中内部教材开始初始化s:=0;a:=0;b:=0输入a,p,b结束输出计算结果s计算表达式的值NNNN*s:=a*bY/s:=a/bY-s:=a-bY+s:=a+bY程序PROGRAMp3_2(INPUT,OUTPUT);VARa,b:INTEGER;s:REAL;p:CHARBEGINWRITE(“请输入运算式:”);READ(a,p,b);CASEpOF‘+’:s:=a+b;‘-’:s:=a-b;‘*’:s:=a*b;‘/’:s:=a/b;END;王晓光friendi@163.com 东北师大附中内部教材WRITE(“结果是”,s);END.指点迷津CASE语句的形式为:CASE表达式OF常量1:语句序列1;常量2:语句序列2;……常量N:语句序列N;ELSE语句序列N+1;END;其中语句序列如果只有一句,可直接写在常量后的冒号后;如果语句序列有很多句,则应该用BEGIN……END加以框住。CASE语句的作用是,根据表达式,表达式可以有多个值,分别对应于常量1、2等值时,就运行该常量后所对应的语句。表达式只能是顺序类型(除了实型以外的简单类型),其值必须是唯一确定并且和表达式类型相同。CASE语句执行和表达式值相匹配的CASE常数所指向的那条语句,如果没有相匹配的值,则执行ELSE部分(如果有的话)或者什么也不做。在ELSE前面的语句末尾有分号,这是和IF语句不同的。在CASE语句的最后不要忘了写上END。实践与交流1.公司计算运费时,距离(S)越长,每公里运费越低,标准如下:如果S<250公里;运费为标准运价的100%如果250公里<=S<500公里,运费为标准运价的98%;如果500公里<=S<1000公里,运费为标准运价的95%;如果1000公里<=S<2000公里,运费为标准运价的92%;如果2000公里<=S<3000公里,运费为标准运价的90%;如果S=>3000公里,运费为标准运价的85%;。请编计算运费的程序。2.对某产品征收税金,在产值1万元以上征收税5%;在1万元以下但在5000元以上的征收税3%;在5000元以下但在1000元以上征收税2%;1000元以下的免收税。编程计算该产品的收税金额。王晓光friendi@163.com 东北师大附中内部教材第四章循环结构程序设计在实际应用中,会经常遇到许多有规律性的重复运算,这就是循环问题。在PASCAL语言中,可以用循环结构完成重复性的计算。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。在PASCAL语言中有三种循环语句,它们分别为FOR循环、当循环和直到循环。这三种基本循环方式,FOR循环对循环范围有明确规定,且循环变量只能是递增加1或递减1自动计数控制;而REPEAT--UNTIL循环和WHILE--DO循环比较灵活,只要对条件表达式的值能控制满足一定要求就能组成循环,但在循环体中必须有改变循环变量值的语句,使条件判断(逻辑值)最终为TRUE或FALSE,让循环能够终止。第一节FOR语句FOR循环是一种自动计数型循环,通常用于已知循环次数的问题。在循环开始时就设定循环初始变量和终止变量,在循环过程中循环变量自动变化,当达到循环次数后,循环结束。任务在我们学习珠算的时候,经常要求大家计算1加2加3一直加到100的和。现在我们的任务就是要用计算机来模拟这一过程。任务分析要用计算机完成这一过程,我们先来考察人是如何来完成这一任务的,将其分成一系列可操作的步骤,然后用计算机模拟人的操作过程,用计算机模拟这个问题。因为已知循环次数,可以用FOR循环来实现。可以用一个变量SUM来记录每次计算得到的和,用变量i表示从1到100的加数,依次将i与A做和,从1加到100之后A记录的数就是最终的结果。这个重复相加的过程就可以应用本节所介绍的循环结构程序设计。算法王晓光friendi@163.com 东北师大附中内部教材1、初始化变量sum:=02、循环计算从1到100的和①设置循环初始值为1循环终止值为100②计算循环控制变量与sum的和,并将和赋值给sum3、输出sum的结果流程图开始初始化sum:=0;结束输出计算结果s设置循环变量i:=1,终值100sum:=0;计算s:=s+i判断i>=100NYi:=i+1程序PROGRAMp4_1;VARsum,i:INTEGER;BEGINSum:=0;FORi:=1TO100DOSum:=Sum+i;WRITELN(‘Sum=’,Sum);READln;END.指点迷津王晓光friendi@163.com 东北师大附中内部教材一、FOR语句的一般格式FOR<控制变量>:=<表达式1>TO<表达式2>DO<语句>;FOR<控制变量>:=<表达式1>DOWNTO<表达式2>DO<语句>;其中FOR、TO、DOWNTO和DO是PASCAL保留字。表达式1与表达式2的值也称为初值和终值。二、FOR语句执行过程1、先将初值赋给左边的变量(称为循环控制变量);2、判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤⑥;3、如果末超过终值,则执行DO后面的那个语句(称为循环体);4、循环变量递增(对TO)或递减(对DOWNTO)1;5、返回步骤2;6、循环结束,执行FOR循环下面的一个语句。三、说明1、循环控制变量必须是顺序类型。例如,可以是整型、字符型等,但不能为实型。2、循环控制变量的值递增或递减的规律是:选用TO则为递增;选用DOWNTO则递减。3、所谓循环控制变量的值“超过”终值,对递增型循环,“超过”指大于,对递减型循环,“超过”指小于。4、循环体可以是一个基本语句,也可以是一个复合语句。5、循环控制变量的初值和终值一经确定,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。6、FOR语句中的初值、终值都可以是顺序类型的常量、变量、表达式。实践与交流1.宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?2.求1—999中能被3整除,且至少有一个数字是5的所有整数。3.数学上把除了1和它本身,没有别的数能够整除它的自然数叫做素数(或质数)。现在由键盘输入一个自然数N,编程判断N是否是素数,是则输出“Yes”,否则输出“No”。4.一辆快车和一辆慢车开往同一地点,快车票价为18元,慢车票价为13.王晓光friendi@163.com 东北师大附中内部教材5元,共售出400张,共计5940元,求快车票和慢车票各多少张?王晓光friendi@163.com 东北师大附中内部教材第二节WHILE语句当循环次数未知,只能根据某一条件来决定是否进行循环时,用WHILE语句或REPEAT语句实现循环要更方便。WHILE语句用于“当满足某一条件时进行循环”的情况。任务我校需刻录一批电脑光盘,若到电脑公司刻录,每张需8元(包括空白光盘费);若学校自刻,除租用刻录机需120元外,每张还需成本4元(包括空白光盘费),现在我们要计算一下学校至少一次刻录多少张光盘,自己租用刻录机更经济。任务分析在这个问题中,要求的就是至少要刻多少张光盘,我们可以采用WHILE语句来完成这个问题。从只刻一张光盘开始计算,送电脑公司刻录的成本及学校自己租用设备刻录的成本,并增加刻录数目,直到租用设备刻录的成本低于送到电脑公司刻录成本为止。用循环变量i来记录药可光盘的数目,用变量a表示到电脑公司刻录的价钱,变量b表示学校租用设备刻录的成本。算法1、初始化变量a:=0;b:=120;i:=0;2、计算送电脑公司刻录的成本及学校自己租用设备刻录的成本①判断电脑公司刻录的成本a是否小于学校自己租用设备刻录的成本b,如成立则执行循环体②,否则跳出循环,执行步骤3②增加刻录的光盘数i:=i+1③a:=i*8;b:=120+i*43、输出i的结果流程图王晓光friendi@163.com 东北师大附中内部教材结束开始初始化a:=0;b:=120;i:=0;输出计算结果i计算a:=a+8b:=b+4判断a<=bYNi:=i+1程序PROGRAMp4_2;VARa,b,i:INTEGER;BEGINa:=0;b:=120;i:=0;WHILEa<=bDOBEGINa:=a+8;b:=b+4;i:=i+1;END;WRITE(i);END.指点迷津WHILE语句的形式为:WHILE<布尔表达式>DO<语句>;王晓光friendi@163.com 东北师大附中内部教材其意义为:当布尔表达式的值为TRUE时,执行DO后面的语句。循环结束条件在进入循环体之前测试,若最初的测试值为FALSE,则根本不进入循环体,也就是说WHILE循环是是属于当型循环。为了能使WHILE重复能终止,循环体中一定要有影响布尔表达式的操作,否则该循就是一个死循环。WHILE语句的执行过程为:1、判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;2、执行循环体语句(DO后面的语句);3、返回步骤1;4、结束循环,执行WHILE的下一个语句。说明:这里WHILE和DO为保留字,WHILE语句的特点是先判断,后执行。当布尔表达式成立时,重复执行DO后面的语句(循环体)实践与交流1.某公司到果园基地购买某种优质水果,慰问医务工作者。果园基地对购买量在3000kg以上(含3000kg)的有两种销售方案,甲方案:每千克9元,由基地送货上门;乙方案:每千克8元,由顾客自己租车运回。已知该公司租车从基地到公司的运输费为5000元,求如果顾客自己租车,至少买多少水果才可以更经济?2.求S=1-1/2+1/3-1/4+1/5-1/6+……(求前N项的和)3.小球从100高处自由落下,着地后又弹回高度的一半再落下。求第20次着地时,小球共通过多少路程?4.某登山队员第一天登上山峰高度的一半又24米;第二天登上余下高度的一半又24米;每天均如此。到第七天,距山顶还剩91米。求此山峰的高度?5.出售金鱼者决定将缸里的金鱼全部卖出。第一次卖出全部金鱼的一半加二分之一条;第二次卖出剩余的三分之一加三分之一条金鱼;第三次卖出余下金鱼的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条金鱼。还剩下11条金鱼。当然,出售金鱼时都是整数条,不能有任何破损。求缸里原有的金鱼数?王晓光friendi@163.com 东北师大附中内部教材第三节REPEAT语句用WHILE语句可以实现“当型循环”,用REPEAT-UNTIL语句可以实现“直到型循环”。REPEAT-UNTIL语句的含义是:“重复执行循环,直到指定的条件为真时为止”。任务编写一个程序检测键盘输入的密码是否正确,如果正确,输出"Youarewelcome!",密码错误则输出"INPUTthepassword:"。为简单我们限定密码是长度为1的字符。任务分析判断密码的过程很简单,只要先设定密码的内容,然后即可从键盘中输入字符进行判断。因为不论输入是否正确都要至少输入一次,所以我们可以采用REPEAT语句完成。算法1、初始化,定义变量pw并赋值表示密码 2、开始循环,判断密码是否被猜中 ①输出提示语句 ②从键盘输入一个字符,赋值给变量try ③若try=pw则结束循环,否则跳转至步骤① 3、输出密码正确的提示。流程图王晓光friendi@163.com 东北师大附中内部教材N开始初始化pw:=’x’;结束输出正确提示判断pw=tryY读入try程序PROGRAMp4_3; VAR  pw,try:CHAR; BEGIN WRITELN('Inputthepassword!');  pw:='x'; REPEAT  READLN(try); UNTILtry=pw; WRITELN('Youarewelcome!'); END.指点迷津直到循环语句的一般形式:REPEAT<语句1>;……<语句n>;UNTIL<布尔表达式>;王晓光friendi@163.com 东北师大附中内部教材其中REPEAT、UNTIL是PASCAL保留字,REPEAT与UNTIL之间的所有语句称为循环体。说明:1、REPEAT语句的特点是:先执行循环,后判断结束条件,因而至少要执行一次循环体。2、REPEAT-UNTIL是一个整体,它是一个(构造型)语句,不要误认为REPEAT是一个语句,UNTIL是另一个语句。3、REPEAT语句在布尔表达式的值为真时不再执行循环体,且循环体可以是若干个语句,不需用BEGIN和END把它们包起来,REPEAT和UNTIL已经起了BEGIN和END的作用。WHILE循环和REPEAT循环是可以相互转化的。REPEAT重复基本上有和WHILE重复一样的描述循环计算的能力,但有一些不同:在REPEAT语句的结构中,布尔表达式求值在计算操作之后,而WHILE语句中,布尔表达式求值在计算操作之前,也就是说REPEAT至少执行一次循环体。WHILE语句的成分语句只能是一个语句。因此,当重复动作包含多个语句时,要用BEGIN和END,使它变成一个复合语句。而REPEAT语句的保留字REPEAT和UNTIL已经起语句括号作用,可以包含多个语句而无须BEGIN和END。REPEAT语句中,当布尔表达式为TRUE时结束循环,而WHILE语句中,是当表达式为FALSE时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用REPEAT语句描述。实践与交流1.编写程序统计全班同学的平均身高,由键盘输入每个同学的身高,当输入数字0时表示输入结束。2.校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人;分别按每行排4,5,6人,都多出1人;当排成每行7人时,正好不多。求校体操队至少是多少人?3.1600年前我国的一部经典数学著作中有题:“今有物,不知其数,三三数之,剩二;五五数之,剩三;七七数之,剩二,问物几何。”求最小解。王晓光friendi@163.com 东北师大附中内部教材第四节多重循环以上我们已介绍了三种循环语句。一般说来,用FOR循环比较简明,只要能用FOR循环,就尽量作用FOR循环。只在无法使用FOR循环时才用WHILE循环和REPEAT-UNTIL循环,而且WHILE循环和REPEAT-UNTIL循环是可以互相替代的。FOR循环在大多数场合也能用WHILE和REPEAT-UNTIL循环来代替。一般FOR循环用于有确定次数循环,而WHILE和REPEAT-UNTIL循环用于未确定循环次数的循环。有时候,以充循环不能解决实际问题,这就需要在一个循环的循环体中再包含其它循环结构程序,这时,我们就称之为循环嵌套。任务著名的百鸡问题,记载于中国古代约5—6世纪成书的《张邱建算经》中,是原书卷下第38题,也是全书的最后一题。百鸡问题原题为:“今有鸡翁一,直(通假字)钱五;鸡母一,直钱三;鸡雏三,直钱一。凡百钱,买鸡百只,问鸡翁、母、雏各几何。”此题相当于解不定方程5x+3y+z/3=100x+y+z=100任务分析百鸡问题是我国古代一个著名的数学问题,主要是关于不定方程式的解法的问题,由于计算机具有运算速度快的特点,我们可以采用穷举法解这个方程组,给出公鸡母鸡和小鸡的所有的可能情况,依次代入方程式,如成立则是方程式的解。我们可以先固定公鸡、母鸡的数目,然后根据第二个方程式确定小鸡的数目。依次改变母鸡和公鸡的数目,就可以穷举整个解空间。虽然公鸡母鸡及小鸡的可能取值都在1到100之间,但因为公鸡的价格为5钱,所以可能的取值范围是1到20,同理母鸡的取值范围为1到32,小鸡的可能个数为1到98。并且鸡的数目只能是整数。这里我们就可以用到多重循环。算法1、初始化,k:=02、第一重循环,i从1到20开始循环王晓光friendi@163.com 东北师大附中内部教材⑴、第二重循环,j从1到32开始循环①计算小鸡的数目k:=100-i-j②判断鸡的钱数是否为100钱若成立则输出各种鸡的数目③循环控制变量j加1,第二重循环结束⑵、循环控制变量i加1,第一重循环结束流程图NN结束i:=i+1j:=j+1开始循环初值i:=1;判断i<20循环初值j:=1;判断j<32YYi*5+j*3+k/3=100计算k:=100-i-j;输出i,j,kYN程序王晓光friendi@163.com 东北师大附中内部教材PROGRAMp4_4;VARk,i,j:INTEGER;BEGINK:=0;FORi:=1TO20DOFORj:=1TO32DOBEGINK:=100-i-j;IFi*5+j*3+k/3=100THENWRITELN(‘cock:’,i,’hen:’,j,’chicken:’,k)END;END.指点迷津一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。三种循环(WHILE循环,DO-WHILE循环和FOR循环)可以相互嵌套。但在使用时应该注意循环控制变量的设定和更改,而且循环结构不能相互交叉;外层循环不能跳进内层循环实践与交流1.输出如下图形:************************************************2.求100—999中的水仙花数(若三位数abc,a3+b3+c3=abc,则称abc为水仙花数。例如153,13+53+33)3.某动物饲养中心用1700元专款购买小狗(每只31元)和小猫(每只21元)两种小动物。要求专款专用,正好用完,应当如何购买?请输出所有方案。4.要将100元的大钞票,换成等值的10元、5元、2元、1元一张的小钞票。要求换成40张小钞票,每种至少一张。编程输出所有可能的换法。5.有三种明信片:第一种每套一张,售价2元;第二种每套一张,售价4元;王晓光friendi@163.com 东北师大附中内部教材第三种每套9张,售价2元。现用100元钱要买100张明信片,要求每种明信片至少要买一套,问三种明信片应各买几套?请输出全部购买方案。王晓光friendi@163.com 东北师大附中内部教材第五章综合实践前几章我们学习了PASCAL语言的一些基础知识和基本的程序结构,但在实际应用当中的一些复杂问题,往往不能用简单的单一结构来实现。这一章我们就来用PASCAL语言解决两个实际生活中的问题。第一节猜价格任务猜价格:中央电视台的“幸运52”栏目深受观众喜爱,其中的“猜商品价格”的节目更是脍炙人口,现在请你编一个程序模拟这一游戏:首先从键盘输入一个200至5000之间的一个整数,作为某件商品的价格,然后由你去猜是多少,若你猜的数大了,则计算机输出提示“Gao”,若你猜的数小了,则计算机输出提示“Di”,然后你根据提示继续猜,直到你猜对了,计算机会提示“OK”,并统计你猜的总次数。任务分析本题的游戏规则大家都清楚,在进行游戏的过程中可能多次猜测价格,这就需要用到循环结构,而且猜测的次数是不确定的,先给出猜测的价格在进行判断,不论是否猜对都至少要进行一次猜测,所以可以采用REAPEAT语句。对输入的价格判断它与正确价格的高低关系可以采用IF语句来完成。算法1、初始化,定义常量P并赋值表示价格,变量i:=0记录猜测的次数2、开始循环,判断价格是否被猜中①从键盘输入一个整数,赋值给变量x②记录猜测的次数i:=i+1③将x与P比较,若xP输出“Gao”,若x=P则输出“Ok”④若x=P则结束循环,否则跳转至步骤①3、输出所猜的总次数王晓光friendi@163.com 东北师大附中内部教材流程图N开始初始化P:=50;i:=0输入数字赋值给xP>xP=x记录猜测次数i:=i+1输出Gao输出OK输出DiNYYYN结束输出iP=x程序PROGRAMp5_1(INPUT,OUTPUT); VAR P,i,x:INTEGER; BEGIN P:=50; i:=0; REPEAT READLN(x); i:=i+1; 王晓光friendi@163.com 东北师大附中内部教材IFx

P则执行循环体,否则结束循环②记录猜测的次数i:=i+1③将x与P比较,若x0输出n,a,b,cYYNN王晓光friendi@163.com 东北师大附中内部教材程序PROGRAMp5_2;VARa,b,c,n,s:INTEGER;BEGINWRITELN('N':3,'A':3,'B':3,'C':3,'S':5);FORn:=8DOWNTO6DOFORa:=0TO4DOFORb:=0TO6DOBEGINc:=n-a-b;IFc>0THENBEGINs:=50*a+35*b+25*c;IFs=225THENWRITELN(n:3,a:3,b:3,c:3,s:5);ENDEND;READLNEND.指点迷津在这个问题中用WHILE语句或者REPEAT语句也可以实现,但用FOR语句程序结构更加清晰实践与交流1.图中由6个圆圈构成三角形,每条边上有三个圈,将自然数1--6不重复地填入各圆圈位置上,使每条边圆圈上的数字之和相等,请编程输出所有的填法。并编程显示出下面数字金字塔图形:2.分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?王晓光friendi@163.com 东北师大附中内部教材王晓光friendi@163.com

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭