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(实型表达式:mn),其中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';
var
 i:integer;
 r:real;
 c:char;b:boolean;
begin
 i:=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□□□abcdefgabcdefg
TRUE□TRUETRUE
3.应用例析
例2:
  已知A=253,B=43,输出A*B的运算式子。即输出如下:
253*43=10879
253
* 43
759
+1012
10879
分析:
  对于该问题,我们只要控制好输出时右靠齐即可。即前四行的总宽度一样(例如为12),第五行总宽度比前面少1。第六、七行总宽度与前四行一样。
参与程序如下:
var a,b:integer;
begin
 a:=253;b:=43;
 write (a:10,'*',b,'=',a*b);    253*43=765765253
 writeln(a);
 write('*':8);writeln(b:4);
 writeln('--------':12);
 writeln(a*3:12);
字符串常量1234的长度是多少 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)102030←┘
  (b)1020←┘
    30←┘
  (c)10←┘
    2030←┘
  (d)10←┘
    20←┘
    30←┘
  其中"←┘"表示回车键。下同。
  ④read语句与readln语句的第一个区别是:
  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语句中变量所需数据后,一定要读到一个回车,否则多余的数据无用。
例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);
  其中,所有变量均为整型。再设输入的数据如下:
  12←┘
  345678←┘
  910←┘
  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语句之前加以适当提示,例如:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。