[第3课]赋值输入和输出语句

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

NOI辅导之赋值语句和输入语句输出语句评讲上次习题一、赋值语句PASCAL有两个语句可以改变变量的值。赋值语句是其中之一(另一个是读语句)。赋值,顾名思义,就是把一个值赋予某个量。可以这理解:变量相当于装东西的容器,赋值的过程就是把东西放进容器的过程。1.格式:变量:=表达式;2.功能:先计算后存储数据到变量单元3.注意事项:3.1赋值号“:=”3.2变量要先说明3.3表达式必须要有确定的值3.4赋值号两边的数据类型必须相同或相容一、赋值语句3.1赋值号“:=”A:=3X:=1S:=b*c+12*Int(d)Y:=y+1S:=s*aX:=x+yS:=t:=1X+2:=4Z=3在实际编程中,我们经常使用a:=a+1;作为计数器,用s:=s+x;作为累加器,用t:=t*n;作为累乘器。3.注意事项:3.1赋值号“:=”3.2变量要先说明3.3表达式必须要有确定的值3.4赋值号两边的数据类型必须相同或相容一、赋值语句3.2变量要先说明vara,b:integer;//定义a,b,为整数型begina:=5;b:=8;//给a、b两个变量赋值c:=9;//变量c未经说明就赋值,编译时不能通过,会提示出错。End.3.注意事项:3.1赋值号“:=”3.2变量要先说明3.3表达式必须要有确定的值3.4赋值号两边的数据类型必须相同或相容一、赋值语句3.4赋值号两边的数据类型必须相同或相容PASCAL中的量不管是变量还是常量都有一个属性称为“数据类型”。数据类型相同的或相容的才可以相互赋值。当一种数据类型的取值范围包含着另一种数据类型的取值范围时,就可能出现类型相容的情况。例:有程序如下:vara,b,d:integer;c:real;begina:=100;b:=a{-------------以上是相同数据类型进行赋值}d:=101;c:=d;c:=b;{-------------以上是相容数据类型进行赋值a:=c;{-------------这条赋值语句出现溢出,编译时提示出错}end.练习Programq32;VarI,j,k:integer;R:real;S:string;BeginI:=123.456;R:=146;R:=trunc(1231.54346);K:=6/3;S:=123;S:=’aasd’+1234;End.说明I,J,K三个变量是整数型;R是实数型;S是字符串型;程序开始错误:因为I是整数型变量,不能把一个实数型数值赋给它;正确:146也是一个实数;正确:trunc这个函数的返回值是整数型的,可以赋给实数型变量;错误:6/3虽然得到的值是2,但这个2是实型,而不整型;错误:S是字符串型变量,而123是数值型值;错误:表达式中不能把字符串与数值相加。程序结束Varx,y:integer;Beginx:=1;y:=2;x:=3;x:=y;End.重复赋值Varx,y:integer;Beginx:=5;y:=8;x:=x+y;y:=x+y;End.辗转赋值例:有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果?分析:这个问题中我们关心的是在游戏过程中每个小朋友的糖果个数,且他们所拥有的的糖果数是在变化的。因此可用a,b,c三个变量分别存放甲乙丙三个小朋友在某一时刻所拥有的糖果数。对于每人,分糖后,他的糖果数一定为原来的糖果数div3(因为分糖过程糖果的数目不一定都刚好分完,用整除恰恰可以表示多余的糖自己吃掉)。而其他两人则增加与这个小朋友现在拥有的一样的糖果。程序可写如下:programex2;varA,B,C:integer;beginA:=50;B:=43;C:=13;{初始时每个小朋友所拥有的糖果数}A:=Adiv3;B:=B+A;C:=C+A;{甲小朋友分糖果后,每个人拥有的糖果数变化情况}B:=Bdiv3;A:=A+B;C:=C+B;{乙小朋友分糖果后,每个人拥有的糖果数变化情况}C:=Cdiv3;A:=A+C;B:=B+C;{丙小朋友分糖果后,每个人拥有的糖果数变化情况}writeln(’A=’,A,’B=’,B,’C=’,C);{输出结果}readln;end.二、读语句(read语句)与赋值语句不同,读语句从键盘或文件接收值赋予变量,而赋值语句则直接由程序语句获得。读语句格式如下:read(变量名表);readln(变量名表);readln;注意:1、变量需要事先说明。变量与变量之间,以“,”分隔;例:vara,b:integer;beginread(a,b);2、从键盘接收数据时,要注意各种不同数据类型数据的分隔符不同。所谓分隔符就是两个完整的数值之间的标记,当计算机从键盘读入数据时,一旦碰到分隔符,就认为当前的数据读入已完成,可以把它赋给相应的变量了。各种数据类型的分隔符如下:数值型(包括整型、实型以及它们的子界类型)以空格或回车符作为分隔符;字符型不需分隔符(因为字符型数据的长度固定,只有一个);字符串以回车符作为分隔符。注意:3、注意read与readln的区别假设READ或READLN要求输入X个数据,而我们输入时也输入了X个数据,这时READ与READLN的功能是完全一样的。但是,如果要求输入X个数据,而我们输入了多于X个数据时(如X+N个),这时READ与READLN都是把前X个数据赋给X个变量,而剩下的多输入的N个数据就有如下情况:如果是READ,则这N个数据被保存下来,到下一个READ/READLN语句时再赋给剩下的变量;而用的是READLN的话,这些数据将被放弃,不会留至下一个READ/READLN。语句read只管接收数据,语句readln接收完数据后,还把同行的其它数据全部宣布作废。4、“readln;”语句从键盘接收一个回车符。这个语句通常用在需要暂停的地方。如输出时用来等待程序员看清结果。总结:变量类型与输入的数据类型必须一致。输入顺序与变量顺序要一致。注意数据个数与变量个数的关系。例:交换a,b两个变量的值。(1)利用中间变量c,实现交换。ProgramT2_1_1;Vara,b,c:integer;Beginwrite(‘pleaseinputa,b=?’);read(a,b);write(‘before:’,’a=‘,a,’b=‘,b);c:=a;a:=b;b:=c;writeln(‘after:’,’a=‘,a:8,’b=‘,b:8);End.(2)不用中间变量,也可实现交换。ProgramT2_1_2;Vara,b:integer;Beginwrite(‘pleaseinputa,b=?’);read(a,b);write(‘before:’,’a=‘,a,’b=‘,b);a:=a+b;b:=a-b;a:=a-b;writeln(‘after:’,’a=‘,a:8,’b=‘,b:8);End.注意:为了避免可能出现的错误,建议在程序中按下列原则使用读语句:(A)如果没有特殊需要,在一个程序中尽量避免混合使用read语句和readln语句;(B)尽量用readln语句来输入数据,一个数据行对应一个readln语句;(C)由于执行read或readln语句时,系统不会提供任何提示信息,因此,编程时最好在readln语句之前加以适当提示,例如:write('Inputa,b,c:');readln(a,b,c);在执行时,屏幕上显示:Inputa,b,c:■(其中,“■”为光标。执行readln语句后,系统处于待待输入状态,只有输入了所需数据后才继续往下执行。)三、输出(write,writeln)语句输出语句就是将计算机内存中的数据送到外部设备(屏幕或键盘文件)的过程。即将运算结果送出,按适当的形式显示在屏幕上。1.格式:write(输出量1,输出量2,……);{输出后不换行}writeln(输出量1,输出量2,……);{输出后换行}writeln;{输出一个回车符}2.功能:变量:输出变量的值.表达式:先计算,后输出表达式的值.常量:直接输出常量值.例:a:=5;b:=6;c:=7write('a=',a);writeln(b,b+1,c);write(abs(-5))Write/writeln+屏幕显示:a=56775Write与writeln的区别1.使用write语句,执行后光标置于同一行末项后;使用writeln语句,执行后自动换行,光标停留在下一行的开始位置.例:Write('a');Writeln('b');Write('c')2.writeln语句允许不含有输出项,仅writeln;表示换行abc屏幕显示:练习:以下两个程序段的输出分别为:①write(1,2,3,4);write(5,6);②writeln(1,2,3,4);write(5,6);123456123456练习11.输出如下图形###############2.输出如下图形@@@@@@@@@练习2某仓库5月1日有粮食100吨,5月2日又调进20吨,5月3日卖出库存的3分之二,5月4日又调进库存的3倍粮食,问该仓库从5月1日到5月4日期间每天的粮食分别是多少吨?(输出每天的库存量)分析:在这个问题中,主要要描述从5月1日到5月4日期间仓库的粮食库存量,且易知它是不断变化的。因此我们可以用一个变量A来描述仓库的粮食库存量。Programex2;VarA:integer;BeginA:=100;Writeln(‘5/1:’,A);A:=A+20;Writeln(‘5/2:’,A);A:=Adiv3;writeln(‘5/3:’,A);A:=A*4;writeln(‘5/4:’,A);Readln;End.自定义输出格式——输出域宽Pascal语言把输出项的数据显示占用的屏幕宽度称为域宽,可以根据输出格式的要求在输出语句中自动定义每个输出项的宽度,定义宽度时分为单域宽和双域宽用户可为每个输出项指定输出的宽度.标准场宽数据类型TurboPascalFreePascalWRITELN(2.367)integer实际长度实际长度real1725□2.3670000000000000E+0001布尔型4或54或5字符串串长串长自定义场宽(1)单场宽。用来控制整型、字符型、布尔型数据的输出格式,不能用于实数型。格式:输出项:nWrite(x:n)说明:n(正整数)表示输出时所占的列数。单场宽一律向右靠齐,左留空格例如:write(1234:8);write('abcdef':12)输出结果:□□□□1234□□□□□□abcdef(2)双场宽。用来控制实数的输出格式。格式:输出项:n1:n2Write(x:n:m)说明:①n1表示输出总占列数,包括符号位、整数部分、小数点和小数部分;n2表示小数部分的列数。②当数据突破场宽时,首先保证整数部分的有效性,小数部分按n2场宽进行四舍五入显示,但内存中仍是原来的精确度。③单场宽右对齐,双场宽向小数点看齐,多余的小数位数补零。例如:write(sqrt(75):9:4);输出:□□□8.66028.6602(满足小数位数,保证最低限度,舍弃超过场宽的数据,坚持四舍五入原则)例:t:=63.123;Writeln(t);Writeln(t:6:2);Writeln(t:6:5);write(sqrt(75):5:4)输出结果:6.312300000000E+0163.1263.12300应用举例programex;consts='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,r

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功