pascal-带格式的输出语句及输入语句
- 格式:doc
- 大小:48.50 KB
- 文档页数:7
第一课初识Pascal语言第二课赋值语句、输出语句第三课带格式的输出语句及输入语句第四课简单的分支结构程序设计第五课if嵌套与case语句第六课for循环语句第七课WHILE循环与REPEAT第八课一维数组第九课多维数组第十课字符与字符串处理第十一课枚举、子界、集合及记录类型第十二课过程与函数第十三章动态数据类型第十四课文件第一课初识Pascal语言一、Pascal 语言概述二、Pascal 语言的特点三、Pascal语言程序的基本结构四、Turbo Pascal语言系统的使用信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。
选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。
程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。
一、Pascal 语言概述PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。
1975年,对PASCAL语言进行了修改,作为"标准PASCAL语言"。
PASCAL语言是在ALGOL 60的基础上发展而成的。
它是一种结构化的程序设计语言,可以用来编写应用程序。
它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。
它的功能强、编译程序简单,是70年代影响最大一种算法语言。
二、Pascal 语言的特点从使用者的角度来看,PASCAL语言有以下几个主要的特点:⒈它是结构化的语言。
PASCAL语言提供了直接实现三种基本结构的语句以及定义"过程"和"函数"(子程序)的功能。
可以方便地书写出结构化程序。
在编写程序时可以完全不使用GOTO语句和标号。
这就易于保证程序的正确性和易读性。
顺序结构与基本数据类型一、程序的三种基本结构1、顺序结构:按照语句的书写顺序,依次执行。
2、选择结构(分支结构):根据给定的条件,判断成立与否,成立做一件事,不成立做另外一件事。
两件事必须做一件且只能做一件。
3、循环结构(重复结构):重复做某件事。
3种:①计数循环:重复执行的次数确定;②当型循环:当条件成立时,反复做某件事;③直到型循环:反复做某件事,直到条件成立时为止。
二、PASCAL标准数据类型及函数:1、实型(real)表示方法:小数表示法和指数表示法(科学表示法)。
如:1.25(1.25e0),132.67(1.3267e+2),0.0025(2.5e-3),-1.56(-1.56e0),0.0(0e0) 实型量运算:+(加)、-(减)、*(乘)、/(除)实型量标准函数:abs(绝对值),sqr(平方),sqrt(开方),sin(正弦),cos(余弦),arctan(反正切),exp(以e为底的指数),ln(自然对数),trunc(取整),round(舍入取整),int(取整)注:所有函数的自变量必须写在括号中。
例如:Sin2x 应写成sin(2*x) (a+b)2应写成sqr(a+b)Sin,cos函数的自变量应为弧度。
若是度,应转换为弧度。
例如:Sin32o15’应写成sin(32.15*3.14159/180)Tanx 应写成sin(x)/cos(x)e2.5应写成exp(2.5)lnx应写成ln(x) lgx 应写成ln(x) /ln(10)x y 应写成exp(y*ln(x))int直接取整数部分(其结果为实型)、trunc去掉小数部分,取其整数。
Round是将小数部分四舍五入后变为整数。
例如:trunc(1.2)=1 round(1.2)=1trunc(1.7)=1 round(1.7)=2trunc(-3.7)=-3 round(-3.7)=-42、整型(integer)正、负数和0.整型量运算:+(加)、-(减)、*(乘)、div(整除)、mod(取余)整型量标准函数:abs(绝对值),sqr(平方),pred(前导),succ(后继),odd(奇函数),chr(取字符)例如:pred(前导),取自变量前一个值。
说明语句PASCAL语言是一种强类型语言,不同类型间不能任意进行转换,不同类型的变量一般不允许作混合运算(除整型、实型外)。
为此,系统规定了程序中出现的所有常量、变量和用户自定义的数据类型必须预先说明后才能使用它。
1.常量说明语句功能:给程序中使用的每一个常量命名,使用命名的常量可以增强程序的可读性和可维护性。
常量说明语句有两种形式:⑴无类型常量的说明定义形式:const常量名=无类型常量;无类型常量是真正的常量,Turbo Pascal不允许改变其值。
例如const s=’text’;begins:=’AAAA’end.因为程序在运行过程中要改变无类型常量s的值,所以程序出错。
⑵有类型常量的说明定义形式:const常量名:类型=类型常量;对于有类型常量,可以重新被赋值。
例如const s:string[4]= ’text’;begins:=’AAAA’;end.s是一个长度为4的字串类型常量,初值为’text’。
由于它有类型,程序运行过程中可将其重新赋值为’AAAA’。
有类型常量的说明要比无类型常量的说明复杂一些。
各种类型常量,由于其类型不同,常量的性质、类型常量说明语句的书写格式也随之不同。
我们将在后面详细介绍。
在使用常量说明时需要注意以下几个问题:1.常量可以辗转赋值,即用已定义的常量去定义新的常量。
例如constbigint=1000;smallint=-bigint;2.true和false是布尔值常量constt=true;f=false;3.Pascal引入整数标准常量maxint,其值为标准整数(integer)的最大值215-1constbigint=maxint;smallint=-maxint;2.类型说明功能:在PASCAL语言中,用户可以根据需要自己定义合适的数据类型。
类型说明语句对每一个用户自定义的数据类型给予说明。
定义形式:type类型名=数据类型;例如typeindex=1..100;number=(one,two,three,four);类型index是用户自定义的子界类型,该类型的变量可取从1到100区间内的任一个整数值。
程序框架:一个完全的PASCAL程序结构框架如下:PROGRAM程序名(程序参数表); CONST常量声明;TYPE类型声明;VAR变量声明;FUNCTION函数名(参数表):函数类型;函数声明;PROCEDURE过程名(参数表);过程声明;BEGIN程序主体;END.变量定义:一、变量定义方法VAR变量名1:变量类型1;变量名2:变量类型2;变量名3,变量名4:变量类型3;二、变量命名规则1、首字符必须是英文2、只能由英文、数字和下划线组成。
三、变量类型常用的几个变量类型如下表:输入输出语句:一、输出语句格式Writeln(项目1,项目2,……,项目n); {输出内容后换行}Write(项目1,项目2 ,……,项目n); {输出内容后不换行}二、输入语句格式Read(变量1,变量2,……,变量n); {从键盘输入n个数据,以空格格开}Readln(变量1,变量2 ,……,变量n);{从键盘输入n个数据,以空格格开,读完后换行} 三、赋值语句用法变量名:=表达式; {把右边表达式的值计算出来,结果赋给左边的变量}举例:a:=3;a:=a+1;s:=(a+b)*(c+d);一、装配文件assign(input,’文件路径’); {文件路径一般为相对路径,相对程序的工作目录} reset(input);assign(output,’文件路径’);rewrite(output);二、输入输出方法read(x);write(x);三、关闭文件close(input);close(output); {输出文件必须关闭,否则可能不能正确保存}共四级(同一级优先级相同,按照从左到右的顺序执行)一、单目运算符:(最高优先级)@取变量或函数的地址(返回一个指针)not逻辑取反或按位取反二、乘除及按位运算符*相乘或集合交集/浮点相除div整数相除mod取模 (整数相除的余数)as程序运行阶段类型转换 (RTTI运算符)and逻辑或按位求和shl按位左移shr按位右移三、加减运算符+相加、集合并集、字符串连接或指针增加一个偏移量-相减、集合差集或指针减少一个偏移量or逻辑或按位或运算xor逻辑或按位异或运算四、关系及比较运算符(最低优先级)=判断是否相等<>判断是否不相等<判断是否小于>判断是否大于<=判断是否小于或等于,或是否是一个集合的子集>=判断是否大于或等于,或是否是一个集合的父集in判断是否是集合成员is判断对象是否类型兼容 (又一个RTTI运算符)一、顺序结构的程序按照书写顺序依次执行begin语句1;语句2;end;二、实例输入两个整数x,y,计算x,y的差并输出。
第一个程序Pascal语言的编译器有很多,我们这里以Dev-Pascal为主要编程工具。
该软件界面如下:我们输入如下代码后编译运行。
1 2 3 4 5 program my_program; {程序首部,程序名或简单说明} begin {程序开始的标志}write('Hello,World'); {屏幕上输出单引号下的内容}readln; {等待操作者按一次回车}end. {程序结束的标志}如果没有输入错误的话,计算机应能在黑色背景上显示“Hello,World”。
例:计算a+b的值。
1 2 3 4 5 program circle;vara,b,x:integer;{定义变量} begina:=100;1.点击New source file按钮新建一源文件2.输入代码并保存,保存路径不得有中文字符3.编译并运行6 7 8 9 10 b:=50;x:=a+b;writeln('a+b=',x);{输出并换行} readln;end.Pascal字符与符号1.标识符(1) 标识符的定义:标识符就是以字母开头的字母数字序列,有效长度为63个字符,并且大小写等效。
可以用来标示常量、变量、程序、函数等。
(2) 标识符的分类:a.保留字(关键字)所谓保留字是指在Pascal语言中具有特定的含义,你必须了解它的含义,以便于正确的使用,否则会造成错误。
下面是Pascal语言的保留字:AND ARRAY BEGIN CASE CONST DIV DO DOWNTOELSE END FILE FOR FUNTION GOTO IF INLABEL MOD NIL NOT OF OR PACKED PROCEDUREPROGRAM RECORD REPEAT SET THEN TO TYPEUNTIL VAR WHILE WITHb.标准标识符:指Pascal语言预先定义的标识符,具有特殊含义。
第七课:pascal专题-pascal语言语法大全及应用配套视频★qq语音课主讲内容★:1、pascal语法专用字符:a~z,a~z,0~9,+,-,*,/,=,<>,<=,>=,<,>,(,),[,],{,},:=,,,;,、,:,、、,’,^ ;ﻫ【解说】ﻫa~z:大写得26个英文字母;ﻫa~z:小写得26个英文字母;0~9:10个数字;ﻫ+: 加法运算符;-: 减法运算符;*: 乘法运算符;/: 除法运算符;ﻫ=:比较运算符:等于;ﻫ<>:比较运算符:不等于;<=: 比较运算符:小于等于;>=: 比较运算符:大于等于;ﻫ<: 比较运算符:小于;ﻫ>: 比较运算符:大于; (,):优先级与参数表达符:左右括号;ﻫ[,]: 索引号表达符:中括号;{,}: 段落屏蔽与备注符:大括号;:=:赋值运算符;ﻫ,: 排列式表达符:逗号;ﻫ;: 代码(功能)行结束符;ﻫ、: 主从代码分隔符:点号;ﻫ:: 变量定义分隔符:冒号;、、: 子界定义表达符;’: 字符串标识符:单引号;^ :指针定义符:尖号。
2、 pascal语法保留字:and,array,begin,case,const,div,do,downto,else,end,,function,goto,if,in,label,mod,nil,not,of,or,packed,procedure,program,record,repeat,set,then,to,type,until,var,while,with,exports,shr,string,asm,object,unit,constructor,implementation,destructor,uses,inhe rited,inline,interface,library,xor,shl ;ﻫ【解说】ﻫand:逻辑运算符:逻辑与;ﻫarray:数组定义符:array of …;ﻫbegin: 程序“块”得开始标识符;case: 多条件分支语句得开始标识符;const: 常量定义符;ﻫdiv: 算术运算符:除法取整数结果;ﻫdo: 执行命令;ﻫdownto:单步反循环语句中得命令;Else:分支语句中得命令,“否则”得意思;end:“结束”标识符;ﻫfile:类型文件标识符 ;ﻫfor: 单步循环语句得开始标识符;function:函数定义得命令符;ﻫgoto:跳转指令 :ﻫif:单条件分支语句得开始标识符;in: 集合运算符;ﻫlabel:定义标号 ;ﻫmod:算术运算符:除法取余数结果; nil: 一个表示“空值”得常量;ﻫnot: 逻辑运算符:逻辑非;of: 多种组合命令得辅助符,array of…,case of…等;ﻫor: 逻辑运算符:逻辑或;ﻫpacked: 用于压缩与打包得指令;ﻫprocedure: 过程定义符;ﻫpr ogram: delphi工程文件标识符;record: 记录类型标识符;repeat: 循环语句标识符;ﻫset: 集合定义符;ﻫthen:组合命令得辅助符,if…Then…Else…;to:组合命令得辅助符,for…To …Do…;type:类型定义符;ﻫuntil:循环语句中得辅助符,repeat…Until…;ﻫvar: 变量定义符;ﻫwhile:循环语句定义符;while …Do…;ﻫwith:组合命令得定义符:with …Do begin…End;ﻫexports:动态链接库输出项目定义符; shr: 二进制右移运算符;string: 字符串类型标识符;ﻫasm: 汇编语言标识符;object:对象标识符;unit: 单元标识符;ﻫconstructor:构造函数定义符;implementation: 单元中“实现部分开始”得标识符;destructor:析构函数定义符;uses: 单元引用标识符;inherited: 类继承指令;ﻫinline:过程与函数得调用指令;ﻫinterfac e:单元中“声明部分开始”得标识符;ﻫlibrary: dll工程定义符;xor:二进制位运算符:异或;shl:二进制位运算符:按位左移。
第二节 Pascal语言基本结构和输出语句教学目标:掌握Pascal语言的基本结构,学习使用标准过程write的用法教学内容:一.Pascal语言基本结构program 程序名; .......程序首部,可有可无;typeconst .......说明部分,可选;var自定义过程或函数begin .......执行部分,必须有;语句1;语句2;...end .注意标点符号的使用。
注意:(1)要求学生在写程序时,写出程序的完整结构。
(2)采用缩格形式。
(3)注意标点符号的使用。
二.简单的输出语句(写过程)1.一般形式:write(输出项1,输出项2,...,输出项n); {输出所有项目后不换行} writeln(输出项1,输出项2,..., 输出项n); {输出所有项目后换行}writeln; {输出一个回车符,换行作用}说明:(1)输出项可以是常量、变量、表达式或字符串。
变量:输出变量的值。
输出多个变量时,变量间用“,”分隔。
表达式:输出的是表达式的值。
常量:直接输出常量值。
字符串:原样输出用引号括起来的字符串的内容.2.区别a. write语句是一项接一项输出括号内的项目,输出完最后一项后不换行;writeln语句是一项接一项输出输出括号内的项目,输出完最后一项后自动换行.b. write必须有一个输出项;writeln可以没有输出项,只起换行作用.3.输出格式:(1)整型数据的输出 (I:表示一整型数据)write(I);write(I:n);(2)实型数据的输出 (R:表示一实型数据)write(R);write(R:n:m);(3)字符型数据的输出 (C:表示一字符型数据)write(C);write(C:n);备注:当场宽值小于实际数值的长度时,场宽不起作用。
例1.显示字符串'Pascal Language program'后换行.(方框内为屏幕输出结果) program l1;beginwriteln('Pascal Language program')例2.将'aaa','bbb','ccc'分三行显示. program l2;beginwriteln('aaa');writeln('bbb');writeln('ccc');end.例3. 计算10*45program l3;beginwrtieln('10*45=',10*45);end.例4. 计算 67/5program l4;beginwriteln('67/5=',67/5:5:2);end.四.编写下面几个简单的程序(程序命名***zy1_题号)1.编程序显示' Let's study Turbo Pascal.'2.编写程序将字符串 'C Language' 和' Pascal Language'分2行显示.3.编写程序在显示'C Language' 后隔行显示' Pascal Language '.4.编写程序显示数值12345.编写程序显示数值12.34(以小数形式输出)五.利用场宽,在屏幕中间输出下列图形:(每行显示80个字符)6. *7. A8. 88888** AAA 888*** AAAAA 8。
1.某班一次数学测验,参加考试的人数为20,请帮助统计全班的平均成绩以及每个人和平均成绩的差距。
2.给定一行整数,把这一行整数从小到大排序(整数个数小于1000)输入文件:px.in输出文件:px.out每两个整数用空格分开。
老方法:解:program maths;vara:array[1..20] of real;x,ave:real;i:integer;beginave:=0;for i:=1 to 20 dobeginread(a[i]);ave:=ave+a[i];end;ave:=ave/20;writeln(ave:0:2);for i:= 1 to 20 dobeginx:=ave-a[i];writeln(x:0:2);end;end.program maths;vara:array[1..20] of real;x,ave:real;i:integer;beginassign(input,'maths.in'); reset(input);assign(output,'maths.out'); rewrite(output);ave:=0;for i:=1 to 20 dobeginread(a[i]);ave:=ave+a[i];end;ave:=ave/20;writeln(ave:0:2);for i:= 1 to 20 dobeginx:=ave-a[i];writeln(x:0:2);end;close(input);close(output);end.program maths;vara:array[1..1000] of integer; t,i,j,n:integer;temp:integer;beginread(t);n:=0;while n<t dobegininc(n);read(a[n]);end;for i := 1 to n-1 dofor j:= i+1 to n doif a[i]>a[j] thenbegintemp:=a[i];a[i]:=a[j];a[j]:=temp;end;for i:= 1 to n-1 dowrite(a[i],' '); writeln(a[n]);end.program maths;vara:array[1..1000] of integer; i,j,n:integer;temp:integer;beginassign(input,'px.in'); reset(input);assign(output,'px.out'); rewrite(output);n:=0;while not eoln dobegininc(n);read(a[n]);end;for i := 1 to n-1 dofor j:= i+1 to n doif a[i]>a[j] thenbegintemp:=a[i];a[i]:=a[j];a[j]:=temp;end;for i:= 1 to n-1 dowrite(a[i],' '); writeln(a[n]);close(input);close(output);end.。
使用文件输入输出数据任何程序都需要产生一些输出,有时也需要接受若干个输入。
这些输入、输出实际上是可以用文件的方式来实现的,在Pascal中可以用标准文件“input”和“o utput”来实现,它们分别对应标准的输入设备和标准输出设备(可省略不写),这也就是一些程序的首部如下书写的原因:program ex(input,output);……对于大量数据的输入和输出都是用文件来实现的,因此,这就要求我们必须熟练掌握在程序中实现对文件的操作。
第1节产生随机数文件【问题描述】编写一个程序,产生500个1000以内的随机正整数,存放在data.out文件中,并同时统计从其中大于等于500的数据个数。
【问题分析】本题有两个问题需要解决,一要掌握随机数的生成原理,让计算机自动生成随机数;二是将计算机产生的随机数据存入文件中。
【程序实现】Program p4_1(input,output);const n=500; {n为控制随机数个数的变量}vari,a,s:integer; {i为循环变量、a为暂时存放随机数的变量、s为>=500的数的个数}f:text; {定义f为文本文件变量}beginassign(f,'data.out'); {关联文件变量f到一个外部文件data.out}rewrite(f); {以新建写文件的方式打开文件}randomize; {设置随机种子}s:=0; {统计变量清零}for i:=1 to n dobegina:=random(1001); {产生随机数}write(f,a:5); {将随机数写到文件里}if i mod 10 =0 then writeln(f);{每写10个数换一行}if a>=500 then s:=s+1;{统计>=500的数的个数} end;close(f); {关闭文件}write('>=500 :', s); {在屏幕上打印>=500的数的个数s } end.【相关知识】1.pascal程序中写文件的5个步骤在Pascal程序重创建文件并写入数据要经历5个步骤,即:定义文件变量、关联、写准备、写数据、关闭文件变量。
&3、Pascal语言输入语句、输出语句的应用。
【知识目标】1、理解和掌握PASCAL语言中输入语句用法及格式。
2、理解和掌握PASCAL语言中输出语句用法及格式。
3、简单程序的编写及典型实例。
一、【引课】:在编程中最重要的是能实现人机交互,即程序所需的数据输入和运算结果的输出方面上。
我们在前面的实例中已经接触到这类的操作。
现在我们将系统的学习它。
【读语句】:通过计算机的外部设备将数据输入到计算机内存,供程序使用,要用到输入语句。
PASCAL中的输入功能是由读语句(read 和 readln)来完成的。
[例1] 输出两个自然数相除的商和余数。
解:设被除数、除数、商和余数,分别为A,B,C,D,均为变量,且都是整数类型。
题中未给出具体的自然数A、B,可采用键盘输入方式。
①给出提示,从键盘输入a, b;②显示两数相除的数学形式;③求出a除以b的商c;④求出a除以b的余数d;⑤紧接等式后面输出显示商和余数。
Pascal程序:Program Ex14;Var a,b,c,d : integer;BeginWrite('INPUT A,B:');{给出提示信息}Readln(a,b);{输入a,b}Writeln;{输出一空行}Write(a,'/',b,'=');{输出等式之后不换行}c:=a div b;{整除运算,取商的整数部分}d:=a mod b;{相除求余运算,取商的余数部分}Writeln(C,'…',d);{输出后自动换行}Readln {等待输入回车键}End.执行本程序中第一个Write语句,输出其引号以内的一串提示信息,是给紧接着的输入语句提供明确的提示(要求),有“一目了然,人机对话”之效果。
Readln是一个特殊的输入语句,要求输入一个回车(换行)才能往下执行。
Readln是输入语句,它的一般格式为:①Read (变量1,变量2);②Readln (变量1,变量2);③Readln前两种格式均要从键盘给变量输入数据,输入时,所键入的数据之间以空格为分隔,以回车为输入结束。
信息学奥赛pascal文件输入输出精要beginassign(input,'xxx.in');{导入输入文件};{文件一般放在pascal的根目录下,文件名随题目改变}reset(input);{打开输入文件}assign(output,'xxx.out');{导入输出文件}rewrite(output);{打开输出文件}..................................{程序的主体部分}close(input);close(output);{关闭输入输出文件}end.ex:从文件中读入两个加数,把它们的和写入输出文件中。
program mm;var a,b,c:integer;beginassign(input,'data.in');{导入输入文件reset(input);assign(output,'data.out');{导入输出文件}rewrite(output);readln(a,b);{真正从输入文件中读出了a,b,也就是读出我们在程序中需要的数据,必须通过read语句实现}c:=a+b;write(c);{把运算结果写到输出文件中}close(input);close(output);一、文件的概念文件是按照其内在的逻辑联系分别组织在一起,构成不同的数据集合。
它的名字就是文件名。
使用文件有以下几点好处:(1)文件可以永久保存,其中的数据不会因为应用程序的结束或关机而消失。
(2)文件中的数据可以为多个应用程序所共享。
(3)文件中的数据可以多次重复使用。
(4)文件中的存放数据的数量在理论上没有限制。
在Turbo Pascal语言中,文件是由一系列基本数据元素排列而成的,这些数据元素的数据类型是相同的,但通常有不同的取值。
文件的基本数据元素的数据类型称为文件的基类型。
文件中所含的数据元素的个数称为文件的长度。
1.文件的打开与保存2.文件的输入与输出语句(结合常量与变量、数的科学记数法)3.类型:溢出的理解带格式的输出语句及输入语句一、写语句的输出格式在pascal语言中输出数据时是可以按照一定格式的,对整数隐含的输出形式为按十进制数形式。
对实数的输出,隐含的形式是科学记数法形式(如果不想用科学记数法输出而用小数形式输出,要自己另行定义)。
事实上,输出语句中的每个输出项中的表达式之后可以加上格式说明,若输出项后没有加格式说明,则数据按系统隐含的格式输出,还可加上一定格式符号按特定格式输出。
⒈隐含的输出格式pascal语言为整型量、实型量、布尔型量和字符串( 用一对单引号括起来的字符序列)规定了每种数据所占的宽度(即一个数据占几列) ,一个数据所占的宽度称为"场宽"或"字段宽"。
系统给出的隐含场宽称为标准场宽。
每一种pascal版本给定的标准场宽不尽相同。
下表给出标准pascal和pc机上两种pascal版所规定的标准场宽。
标准场宽━━━━━━━━━━━━━━━━━数据类型标准pascal Turbo pascal─────────────────integer 10 实际长度real 22 17布尔型10 4或5字符串串长串长━━━━━━━━━━━━━━━━━在Turbo Pascal系统中,对于整型字符串的输出都是按数据本身长度输出,对于布尔型数据(只有True和False两种值),TRUE为4列,FALSE为5列,一律采用大写输出。
而real 型数据的输出时,则按17列输出,其中第一列为符号位,正号不显示,后四位为"E±nn",中间的12列为尾数部分。
如:writeln(sqrt(75));则输出□8.6602540379E+00。
而writeln(sqrt(81));则输出□9.0000000000E+00。
有时,在程序中往往根据实际情况,需要自己定义场宽。
⒉指定场宽在写语句中输出项含有格式符号时,就是为了指定场宽。
⑴指定单场宽.格式:write(表达式:N)或writeln(表达式:N),其中N为自然数,指定单场宽后,所有数据不再按标准场宽输出,而按指定场宽输出。
若数据实际长度小于指定场宽时,则一律"向右靠齐,左留空格"。
如write(1234:6);write('abcdef':12)输出结果:□□□□1234□□□□□□abcdef对于标准实型数据指定单场宽时,如果场宽大于标准场宽时,右靠齐按标准场宽格式输出17位,左留空格。
若场宽小于标准场宽时,第一位仍为符号位,最后四位仍为"E±nn",中间部分为尾数显示部分。
如果指定的宽度小于8位,则数据按8位格式"*.*E±nn "输出。
⑵指定双场宽如果输出项是实数时,如果希望输出的实数不用科学记数法输出,而用小数形式输出,可以用指定双场宽方法输出。
双场宽输出格式为:write(实型表达式:m:n),其中m和n都是自然数,m 用以指定整个数据所占的宽度,n指定输出实数的小数位数。
如: write(sqrt(75):9:0);输出:□□□8.6602如果双场宽不能满足输出数据的最低要求, 系统自动突破指定的场宽限制,按实际长度输出。
如:write(sqrt(75):5:4); 要使小数点后有4位数字,而总场宽为5,是不可能的(因为还有一个小数点,小数点前面还有一个数字)。
它最低限度要有6列,即输出为:8.6602例1写出下列程序在turbo pascal下的输出结果.program ex;const s='abcdefg';vari:integer;r:real;c:char;b:boolean;begini:=1234;r:=1234.5678;c:='#';b:=true;writeln(i,i:6,i:3);writeln(r,r:12:5,r:8:5);writeln(c,c:5);writeln(s,s:10,s:5);writeln(b,b:5,b:3);end.运行结果如下:1234□□12341234□1.2345678000E+03□□1234.567801234.56780#□□□□#abcdefg□□□abcdefgabcdefgTRUE□TRUETRUE3.应用例析例2:已知A=253,B=43,输出A*B的运算式子。
即输出如下:253*43=10879253* 43759+101210879分析:对于该问题,我们只要控制好输出时右靠齐即可。
即前四行的总宽度一样(例如为12),第五行总宽度比前面少1。
第六、七行总宽度与前四行一样。
参与程序如下:var a,b:integer;begina:=253;b:=43;write (a:10,'*',b,'=',a*b); 253*43=765765253writeln(a);write('*':8);writeln(b:4);writeln('--------':12);writeln(a*3:12);write('+':6);writeln(a*4:5);writeln('--------':12);writeln(a*b:12);end.二、输入语句(读语句)在程序中变量获得一个确定的值,固然可以用赋值语句,但是如果需要赋值的变量较多,或变量的值经常变化,用Readln将更为方便,它的一般格式为:①Read (变量1,变量2);②Readln (变量1,变量2);③Readln前两种格式均要从键盘给变量输入数据,输入时,所键入的数据之间以空格为分隔,以回车为输入结束。
若多输入了数据(即数据个数超过变量个数),Read语句读完数据之后,能让后续的读语句接着读取多下来的数据;而Readln 语句对本行多输入的数据不能让后续语句接着读取多下来的数据。
为了防止多输入的数据影响下一个输入语句读取数据,建议尽量使用Readln语句输入数据。
第三种格式不需输入数据,只需按入一个回车键。
进一步说明:功能:从标准输入文件(即INPUT,一般对应着键盘)中读入数据,并依次赋给相应的变量。
①read和readln是标准过程名,它们是标准标识符。
②执行到read或readln语句时,系统处于等待状态,等待用户从键盘上输入数据,系统根据变量的数据类型的语法要求判断输入的字符是否合法。
如执行read(a)语句,a是整型变量,则输入的字符为数字字符时是合法的,当输入结束时,则自动将刚接受的一串数字字符转换为整数赋给变量a。
③在输入数值型(整型或实型)数据时,数据间要用空格或回车分隔开各个数据,输入足够个数的数据,否则仍要继续等待输入,但最后一定要有回车,表示该输入行结束,直到数据足够,该读语句执行结束,程序继续运行。
例3.设a、b、c为整型变量,需将它们的值分别赋以10,20,30,写出对应下列语句的所有可能输入格式。
Readln(a,b,c);解根据③,即可列出所有可能输入格式(a)10□20□30←┘(b)10□20←┘30←┘(c)10←┘20□30←┘(d)10←┘20←┘30←┘其中"←┘"表示回车键。
下同。
④read语句与readln语句的第一个区别是:read语句是一个接一个地读数据,在执行完本Read语句( 读完本语句中变量所需的数据)后,下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。
如:Read(a,b);Read(c,d);Read(e);如果输入数据行如下:1□2□3□4□5□6□←┘则a,b,c,d,e的值分别为1,2,3,4,5,如果后面无读语句则数据6是多余的,这是允许的。
Readln则不同,在读完本Readln语句中变量所需的数据后, 该数据行中剩余的数据多余无用,或者说,在读完本Readln语句中变量所需数据后,一定要读到一个回车,否则多余的数据无用。
例4设要达到例1同样的目的,但语句改为:readln(a,b);readln(c)则例3中的4种输入格式只有(b)(d)是有效的.⑤readln语句与read语句的第二个区别是:read 后一定要有参数表,而readln可以不带参数表,即可以没有任何输入项, 只是等待读入一个换行符(回车)。
经常用于暂停程序的运行,直到输入一个回车。
例5设有下列语句:read(a,b,c);readln(d,e);readln;readln(f,g);其中,所有变量均为整型。
再设输入的数据如下:1□2←┘3□4□5□6□7□8←┘9□10←┘11←┘12□13←┘列表给出每个变量的值.分析:可以假想有一"数据位置指针",每读一个数据后,指针后移到该数据之后,每执行一个readln语句后,指针移到下一个数据行的开头。
各变量的值如下表所示。
━━━━━━━━━━━━━━━━━━━━━━━━━━变量名a b c d e f g──────────────────────────值 1 2 3 4 5 11 12──────────────────────────⑥为了避免可能出现的错误,建议在程序中按下列原则使用读语句:(A)如果没有特殊需要,在一个程序中尽量避免混合使用read语句和readln语句;(B)尽量用readln语句来输入数据, 一个数据行对应一个readln语句;(C)由于执行read或readln语句时, 系统不会提供任何提示信息,因此,编程时最好在readln语句之前加以适当提示,例如:write('Input a,b,c:');readln(a,b,c);在执行时,屏幕上显示:Input a,b,c:■其中,"■"为光标。
执行readln语句后,系统处于待待输入状态, 只有输入了所需数据后才继续往下执行。
三、顺序结构程序设计到目前为止,我们可以用读、写语句和赋值语句编写一些简单的程序。
通过阅读这些程序,可以逐步熟悉pascal程序的编写方法和应遵循的规则,为以后各章的学习打基础。
例6试编一程序,输入一梯形的上底、下底、高, 求该梯形的面积。
分析:整个程序分为三段:输入、计算、输出。
程序中用a,b,h三个变量分别存放梯形的上、下底与高,S存放面积。
要而使用这些变量都要先说明,程序的执行部分中先输入上、下底与高,接着求面积S,最后输出结果S。
源程序如下:program Tixing; {程序首部}var a,b,h,s:real; {程序说明部分}beginwrite('Input a,b,h:');readln(a,b,h); {程序执行部分}s:=(a+b)*h/2;write('s=',s:10:3);end.例7某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。