第一章PASCAL程序设计基础我们日常工作、学习和生活中,要做某件事,如果事先没有计划,只是想一步做一步,是达不到理想效果的。
要很好地、高效率地完成某件事,必须事先有一个计划,第一步做什么,下一步做什么,最后一步做什么。
即先考虑好做这件事的所有步骤,然后按部就班地完成它。
在计算机系统中,能完成某项任务的一系列指令或语句就是程序。
程序设计是设计、书写和调试程序的过程。
第一节程序设计语言及算法一、程序设计语言人们使用计算机,可以通过某种计算机语言与其交谈,用计算机语言描述所要完成的工作。
为了完成某项特定任务用计算机语言编写的一组指令序列就称之为程序。
编写程序和执行程序是利用计算机解决问题的主要方法和手段。
程序设计语言是用来书写计算机程序的语言。
程序设计语言经历了机器语言、汇编语言、高级语言到面向对象的程序设计语言等多个阶段。
1.机器语言机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。
机器语言具有灵活、直接执行和速度快等特点。
用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。
手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。
这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。
而且编出的程序全是些0和1的指令代码,直观性差,还容易出错。
现在,除了计算机生产厂家的专业人员外,绝大多数程序员已经不再去学习机器语言了。
2.汇编语言为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码(如用ADD表示运算符号“+”的机器代码),于是就产生了汇编语言。
汇编语言是一种用助记符表示的仍然面向机器的计算机语言。
汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。
汇编语言是低级语言。
3.高级语言20世纪50年代后期,在对低级语言的改进过程中,又研制出一种既接近于自然语言,又接近数学语言的程序设计语言。
使用这种语言编写程序快捷方便,便于修改和高度,大大提高了编程的效率,同时这种语言编写的程序不依赖具体的机器,能用性好,我们称之为高级语言。
用高级语言,不必考虑机器的结构和特点,可以集中精力考虑解决问题的算法,因此,高级语言也称为算法语言。
4.面向对象的程序设计语言面向对象程序设计方法成为今后软件发展的主流,面向对象程序设计方法直接映射到人们对问题的认识上,提供了一种有目的地把系统分解为模块的策略,并将设计决策与客观世界的认识相匹配。
面向对象的程序设计语言更加直观,更加人性化。
二、算法例1 写出你在家中烧开水的过程的一个算法。
我们用计算机模拟过程具体步骤可以表示为:步骤1:往壶内注水;步骤2:点火加热;步骤3:观察:如果水开,则停止烧火,否则继续烧火;步骤4:如果水未开,重复“3”直至水开。
这种对于解决问题的方法和步骤的描述就是算法。
算法可以理解为由基本运算及规定的运算顺序构成的完整的解题步骤,或看成按要求设计好的有限的、确切的计算序列,并且这样的步骤或序列能解决一类问题。
实际上,做任何事情都需要设计好工作的步骤和方法,例如,做广播体操、国家足球队的每一场比赛、举办奥运会、厨师炒菜,都是按一定的步骤进行的。
做广播操的每一节动作的图解就是“广播体操算法”,举办奥运会的流程也是一个“算法”。
一个菜谱也是一个“算法”,厨师炒菜就是实现这个算法。
三、算法描述描述算法的方式是多种多样的,可以用文字(例如烧水);也可以用图示(例如广播体操图解);还可以用别的一些符号系统(例如音乐的乐谱)。
例2已知两个整数a、b,计算这两个数的和的算法就可以用文字描述为:步骤1:输入整数a、b;步骤2:计算a+b的和;步骤3:输出a+b的和;用算法流程图来描述计算a+b的和的算法会更加直观。
如图1.1所示。
我们看到流程图是用一些框图来表示算法中的一些功能块,流程图常用的符号如下表:表1-1 常用流程图符号画流程图时,先画出代表程序中功能块的一些处理框和条件框,并在其中写上解释性的文字,然后用流程线把这些框连接在一起并标上箭头表示流程的顺序。
四、根据算法写出程序为了使算法在计算机上实现,需要使用计算机程序设计语言来编程,例如完成计算两个整数的和(两个数的和不大于32767)的过程,可以用PASCAL语言表示成如下形式;PROGRAM p1_1(INPUT,OUTPUT);V AR a,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元!主持人:低了!这个参与者的算法合理吗?如果你是参与者,你将怎么猜?请写出你的算法。
第二节 认识PASCAL 语言PASCAL 语言是1971瑞士苏黎世联邦工业大学的N .Wirth 教授开发的一种高级语言,历时三十余载,经久不衰,已成为世界上广泛流行的程序设计语言之一。
一、PASCAL 程序的基本组成在没有系统学习PASCAL 语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握PASCAL 程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。
例3 为了加强公民的节水意识,合理利用水资源,各地采用价格调控手段达到节约用水的目的,某市规定如下用水收费标准:每户每月的用水量不超过6立方米时,水费按每立方米2元收费,超过6立方米时,不超过的部分每立方米仍按2元收费,超过的部分每立方米按2.5元收费,请编写一个程序,输入一户人家的月用水量(整数),计算需交水费。
程序首部 PROGRAM p1_2(INPUT,OUTPUT);V AR x:INTEGER; { x 为月用水量}s:REAL; {s 为需要交的水费}BEGINWRITE(“请输入你家的本月用水量:”); READ(x);IF x<6 THEN s:=x*2ELSE s:=(x-6)*2.5+6*2;WRITE (“您本月需交水费”,s, “元”); END.标准Pascal 程序是由程序头(如例中第一行)和程序体两部分组成。
组成Pascal 程序的基本单位是语句,除最后一条语句“END ”以圆点“.”结束外,其它语句均以分号结尾(END 前一个语句可以不用分号)。
1.程序头程序头中的PROGRAM 是Pascal 源程序的标志,键入空格后输入程序名(自定)。
2.程序体程序体由说明部分和执行部分组成。
(1)说明部分说明部分必须写在程序体的开始,程序所用到的常量的值和变量的类型必须在这里说明,否则不能使用。
常量是指在程序执行过程中,值始终保持不变的量,经常用到的是数值型常量和字符型常量,常量的定义是以CONST 开头,语法格式为:说明部分执行部分程序体CONST<常量标识符> = <常量>;……<常量标识符> = <常量>;在一个程序中可以定义多个常量。
每个常量定义用分号“;”结束。
上面的程序说明了一个常量pi。
变量是程序在执行过程中其值可以发生变化的量,如在上面程序中radius,area就是变量。
变量名必须以字母开始,后面可跟字母、数字或下划线的组合,字母不分大小写,长度可任意,但仅前63个字符有效。
变量名由程序设计者定义,要尽量取有意义的名字且与所表示的数据有关,例如:number,name,x1,sum_3等都是合法的变量名,而如2a,x+y 是不合法的变量名。
Pascal中专用词汇,如BEGIN、VAR、INTEGER等,不能作为变量名,我们称它为保留字。
保留字也不分大小写,我们在例题中把它写成大写是便于初学者分析和学习。
Pascal 的保留字、程序名、变量名、常量名和以后学习的子程序名等,它们都是某种数据或用途的标志,我们统称它们为标识符。
Pascal在执行部分用到的每一个变量,都必须在说明部分加以说明,变量说明以VAR 开头,语法格式为:VAR<变量标识符表>:<类型>;……<变量标识符表>:<类型>;<变量标识符表>是一个或多个用逗号隔开的变量标识符,冒号后面的<类型>将在下面讲述。
(2)执行部分执行部分是程序的主体,实现程序的算法和操作全过程,也是以后几节讲授的内容。
二、Turbo Pascal 的基本数据类型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值不同,也不能互换。
4.STRING 字符串型STRING字符串型常量是用一对单引号括起来的两个或两个以上的字符,与CHAR型不同,在中学程序设计中经常用到。
如'JILIN' ,'3456' 等。