已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四课 顺序结构程序设计4.1 赋值语句4.2 读语句4.3 写语句4.4 文件操作4.5练习与作业4.1 赋值语句PASCAL有两个语句可以改变变量的值。赋值语句是其中之一(另一个是读语句)。赋值,顾名思义,就是把一个值赋予某个量。可以这理解:变量相当于装东西的容器,赋值的过程就是把东西放进容器的过程。赋值语句语法格式如下: 变量:=表达式;语法说明:1、 赋值号“:=” 赋值号由两个字符构成,是一个运算符。如果把这两个字符拆开,那么这两个字符就是别的意思了:“:”是分隔符而“=”是关系运算符,判定两个对象是否相等。刚刚写程序的同学要特别注意这一点。例:a,b:integer;是一个说明语句。“:”是变量表和变量类型的分隔符 a=b是一个表达式。它的值是一个布尔类型的量:TRUE或FALSE a:=3;是一个语句。把整型常量值3赋给整型变量a2、变量要先说明 在赋值号左边出现的变量,要在程序头的说明部分先加以说明(即先向内存申请相应的存储单元),否则编译时出错。3、 表达式必须要有确定的值赋值号右边出现的表达式,可以是一个常量、常量标识符、一个变量、一个函数或一个带运算符的运算式。当是一个变量时必须是已经赋过值的变量。当是一个运算式时必须是可以求值的运算式。也就是说,经过运算之后,能得出一个具体的、确定的值出来。大家想一想,如果连表达式自己都不知道自己的值是多少,怎么还能把值“赋予”别人呢?4、 一个赋值语句只能给一个变量赋值。有多少个变量需要赋值,就要写多少个赋值语句。以下书写形式是错误的:a:=b:=1;a,b,c:=2;2:=a;但是 a:=b 是否正确要看你的程序目的,当是把b的值转赋给a时,是正确的,当你是要把a的值转赋给b时,就是错误的。5、 一个变量可以在程序的不同地方(程序运行的不同时刻)对同一个变量赋不同的值(即变量可以反复、重复赋值),但一个时刻只能保存一个值。因此,当需要对一个变量重新赋值时,必须保证该变量中原来保存的值已经不需要了,否则,一定要另使用其它变量或者将该变量中原来的值进行转存。6、 累加器、累乘器、计数器变量需要先赋初值。7、 赋值号两边的数据类型必须相同或相容我们知道,PASCAL中的量不管是变量还是常量都有一个属性称为“数据类型”。数据类型相同的或相容的才可以相互赋值。先理解数据类型相同:打个比方,我们沏茶用的是茶杯,装饭时用饭碗。如果用饭碗来泡功夫茶,用小茶杯来装饭,那是不可行的。回到PASCAL中来,赋值号左边变量如果是整型,右边表达式的值的类型也要是整型;赋值号左边变量如果是字符型,右边表达式的值的类型也要是字符型否则的话,也要出错了。这是数据类型相同的情况。对于数据类型相容的,我们也可以用一个例子来帮助理解。我们都喝过茶,也喝过大杯茶。把小茶杯茶倒在大茶杯里,一般不会出什么问题;但如果把大杯里的茶倒在小茶杯里呢?可能小茶杯装不下大茶杯里的茶,茶“溢出”了。在PASCAL中也会出现这种情况。当一种数据类型的取值范围包含着另一种数据类型的取值范围时,就可能出现类型相容的情况。如:整型与长整型、短整型和整型、字符型和字符串型等,后者可以包容前者。即把前者的值赋给后者的变量是可以的,但是,如果把后者的值赋给前者的变量就会溢出。另注意:整型的值赋给实型的变量是相容的,反之把实型的值赋给整型的变量就不相容,编译时会通不过而报错。因些,我们在写赋值语句时,要注意两边的类型是否匹配。这一点初学者经常会犯错误。例:有程序如下:var a,b:integer;c:real; d: longint;begin a:=100; b:=a; -以上是相同数据类型进行赋值 d:=100; d:=b;c: =d; c:=b; -以上是相容数据类型进行赋值 b:=d; a:=c;d: =c; -以上两个赋值语句都出现溢出,编译时出错end.练习:1、编写一个程序,将a,b两个变量中保存的值相互交换。4.2读语句读语句(read语句)和赋值语句一样,能够改变变量的值。与赋值语句不同,读语句从键盘或文件接收值赋予变量,而赋值语句则直接由程序语句获得。读语句是编程中用得最多的语句之一。读语句语法格式如下: read(变量名表); I型 readln(变量名表); II型 readln; III型语法说明:1、read是关键字,是读语句语句定义符,和赋值语句没有语句定义符不同。2、和赋值语句不同,一条read语句中,可以多个变量一起获得值。3、读语句一般处于程序的开始部分,用于获得程序运行需要的原始数据。4、变量名表:(a,b,c,)(1)写在括号中的变量,都要在变量说明中先预以说明。(2)变量与变量之间,以“,”分隔。(3)变量表只能出现已说明的各类型变量的变量名,不能出现表达式、常量等其它形式的东西。例:var a,b:integer;beginread(a,b); end. var a,b:integer; c,d:real; t:boolean; s:char; begin readln(a,b,t,s,c,d);; end.以上形式的读语句使用都是合法的。找出以下读语句中的错误:(1) read(a;b;c);(2) read(a,a+b,c);(3) read(a,b,2);(4) read(a,ab,c);5、读语句执行过程:(1)当程序执行到一条读语句时,程序暂停。(2)自动打开数据输入设备。(默认为键盘,也可以通过配合其它语句和命令指向磁盘文件)(3)从数据输入设备中按顺序读入各个常量,再按顺序转赋给变量表中的各个变量。(注意:1、如果输入设备读入的常量类型顺序与变量表中变量类型顺序不相同或相容,程序将拒绝运行并报错。2、 如果输入设备读入的常量个数少于变量表中变量个数,程序将继续处于暂停状态,等待数据的继续输入)(4)当键盘作为输入设备时,每一行数据(一行可以一个,也可以多个)输好后必须按回车键才能将数据送入程序。(5)当程序接收到足够的常量并转赋给相应变量后,程序继续运行。6、从键盘输入数据时,因为一行可以输入多个常量,要注意各种不同数据类型常量的分隔符不同。所谓分隔符就是两个完整的数值之间的标记,也可以这样理解,当计算机从键盘读入数据时,一旦碰到分隔符,就认为当前的数据读入已完成,接下来读入的将是下一个常量。各种数据类型的分隔符如下:数值型(包括整型、实型):以空格或回车符作为分隔符;字符型:不需分隔符(因为字符型数据的长度固定,只有一个);字符串:以回车符作为分隔符。 7、键盘或文件输入值时,只能是各种类型的常量,绝不能是表达式。如:read(a); 输入时的值是:1+2、1/2、b等都是非法的。8、read与readln的区别当程序从输入设备读入数据时,会自动建立一个读入数据指针。程序一开始时,读入数据指针默认初始位置为第一行的行首,读语句将读入指针所指向的数据,并随着数据的读入操作,数据读入指针移动。读入数据指针默认的移动方式:读入指针当前指向的数据,然后指针自动向后移动一个位置,指向下一个数据。如果当前数据所在行后面已经没有数据,则指针移动到下一行行首,指向下一行的第一个数据。Read语句:除了变量表中的数据读入后指针按默认方式移动,读完变量表中最后一个变量的数据后,仍然按默认方式移动指针,即最后一个数据读完后,指针仍移动到指向下一个数据,程序中如果再遇到read语句,将自动从下一个开始读入。Readln语句:在读入变量表所需的数据时,指针按默认方式移动,但是最后一个所需数据读入后,不论本行后面有没有其它数据,指针都移动到下一行行首。例:有两段程序有相同的变量说明如下,不同的读语句,我们可以通过比较它们执行结果的异同来理解read与readln的区别。变量说明 var a,b,c,d:integer;执行结果 a b c d 程序段一 read(a);readln(b,c);read(d);1 2 3 6 程序段二 readln(a);read(b,c);read(d)1 6 7 8 输入数据 1 2 3 4 56 7 84.3写语句写(write)语句是Pascal中唯一能将运算结果送出到数据输出设备上(默认是显示器屏幕,和read语句相同,也可以向磁盘文件中写入数据)的语句。语法格式:write(输出列表); 输出后不换行writeln(输出列表); 输出后换行writeln; 输出一个回车符语法说明:1、输出列表由一个或若干个输出项组成,如果是多个输出项,每个输出项之间用“,”隔开。例如:(a+b=,a+b,c,c+10) 输出时,如果输出项是常量,则直接输出常量本身。 如果输出项是变量,则输出变量的值(不是变量标识符本身)。 如果输出项是表达式,则先计算表达式的值,再输出其值。 如果输出项是字符型常量或变量,则输出字符本身或字符型变量的值。 如果输出项是用一对单引号括起来的字符串,则输出字符串本身(不含单引号)。3、 输出项由一个表达式或一个表达式加上格式符号组成:表达式:可以是一个常量,也可以是一个变量,也可以是由常量、变量、运算符、括号组成。格式符号:控制输出内容的宽度(即所占字符位置数),又称为场宽。场宽分为标准场宽和自定义场宽,如果输出项中没有格式符号,则按照标准场宽输出,如果有格式符号,按格式符号规定的自定义场宽输出。标准场宽:系统规定的默认场宽。标准如下:整型:实际所占宽度。即该整数有几位数,就分配给几个位置例如:write(123); 输出:123 Write(123,456); 输出:123456 实型:24位科学计数法形式输出。 例如:write(111.2); 输出:1.1120000000000000E+0002上式输出意思:1.112102字符型:1个位置字符串:有多少个字符分配多少个位置布尔型:true给4个位置,false给5个位置。 (注:上例中write(123,456)可以用write(123, ,456)方式分开)自定义场宽:人为规定输出内容所占宽度,如果所规定的宽度大于实际需要的宽度,则向右看齐输出,即空格留在输出内容的左边;如果所规定的宽度小于实际输出所需要的宽度,则按实际所需要宽度输出。整型:表达式:表达式。 前面表达式是需要输出的内容,后面表达式是规定输出结果所占宽度的。123例如:write(123:5); 结果:123 write(123:2); 结果:实型:表达式:表达式:表达式 第一个表达式是需要输出的内容,第二个表达式是输出结果一共占几个位置,第三个表达式是其中小数位所占的位置宽度。例如:write(1234.5678:12:5)1234.56780结果:write(1234.5678:10:2)1234.57 结果:特点:(1)向右看齐 (2)小数点占一位 (3)小数部分位数不足补零 (4)小数部分位数过多四舍五入。例1:输出多个空格。write(:n);句子的意思是以n个字符宽度输出冒号前数据项,如果数据项长度不足n,则前面以空格补齐;如果数据项长度大于n,则以实际长度输出。如上语句句输出n个空格。例2:数据项间隔。输出最多四位的数据:write(x:5)。则数据间至少分隔一个空格。例3:分别输出整型变量a,b的值,两个值之间空一个空格。 write(a, ,b)例4:输出61.8的四舍五入结果4.4 文件操作:读语句和写语句都可以将输入设备或输出设备定向到磁盘文件中去,信息学竞赛由于采用机器自动阅卷,因此,我们的程序必须能打开试题指定的磁盘文件作为输入设备,并从中读取程序运行所需的初始数据,程序运行结束时,创建另一磁盘文件作为输出设备,并向文件中写入程序运行结果。1、 文件变量:程序中用来代替磁盘文件名的自定义标识符。必须先说明,后使用。var inf,outf:text; text是文件变量的类型名。2、 文件变量与磁盘文件名的链接assign(inf,试题名.in); assign(outf,试题名.out)3、 文件的打开:(1)读方式打开:reset(inf); 读方式打开的磁盘文件只能从中读取数据,不能向其中写入数据,即只能作为数据读入设备。Inf所链接的文件打开后,数据读入指针指向第一行的第一个数据项。(2)写方式打开:rewrite(outf);写方式打开的磁盘文件只能向其中写入数据,不能从中读取数据,即只能作为数据输出设备使用,outf所链接的文件打开后,写入数据指针指向文件的第一行第一列。想一想:为什么一个程序中对一个文件只能用rewrite方式打开一次? 以写方式打开时还有另一个功能,如果磁盘中没有outf所链接的磁盘文件,程序将自动新创建一个该文件并打开。 4、文件关闭:close(inf); close(outf);文件被关闭时,输入文件的数据读入指针清零;输出文件的磁盘缓冲区中数据写入磁盘文件。同时,除非程序再次打开文件,否则程序不能再从文件中读入数据或写入数据。注意:输出文件在程序结束前必须关闭,否则,写语句写入的数据仍暂存在磁盘缓冲区内而没有真正进入磁盘文件(这是计算机的工作原理),磁盘文件仍然是空的。5、从文件中读入数据:在保证inf文件已被打开的前提下,在read语句中加入设备名(即文件变量名)。例如:read(inf,n); 程序将以inf所链接的磁盘文件作为输入设备,从磁盘文件中读取变量n的数据。而不再需要用键盘输入数据并回车了。6、向文件中写入数据:在保证outf文件已被打开的前提下,在write语句中加入设备名(文件变量名)。 例如:write(outf,m); 程序向outf所链接的磁盘文件中写入m的值。 writeln(outf); 程序向outf所链接的磁盘文件中输出一个换行。7、 文件操作标程:program abc;var i,j,k,l,m,n:integer;a,b,c:real;s:string;s1,s2:char;inf,outf:text;/说明两个文件变量,(一般程序只需两个)beginassign(inf,abc.in);assign(outf,abc.out);/将变量inf与磁盘文件abc.in进行链接/将变量outf与磁盘文件abc.out进行链接reset(inf);rewrite(outf); /读方式打开inf文件,写方式创建outf文件read(inf,m,n);/从inf文件中读入变量m和n的值;write(outf,a);/将a的值写入到outf文件中close(outf);/关闭outf文件,即关闭输出文件(outf文件必须关闭,inf文件一般不用关闭)end.以上粗体字部分是我们今后编写程序里必不可少的内容,相当于公式。8、 创建、修改和查看磁盘文件内容:(1) 输入文件的创建:1)菜单file new Text OK建立一个文本文件,并在编辑窗口打开(新文件编辑窗口和程序编辑窗口公用一个窗口,使用窗口上方的标签进行切换)2)保证编辑窗口切换到新文件,输入所需数据(按题目规定的格式要求)3)菜单file Save 或 Ctrl_S或 点击图标,在弹出的对话框中输入要求的文件名,例如:abc.in,保存该文件。4)切换编辑窗口到程序文件,运行程序。(2)输入文件的修改:1)切换编辑窗口到输入文件,在编辑窗口修改数据。2)再次保存文件。3)切换编辑窗口回到程序文件,运行程序。(3)查看输出文件内容:1)保证程序至少已运行一次,即输出文件已创建。2) 菜单 file Open 在弹出的列表窗口中选择对应文件,例如:abc.out3)点击打开,即可在编辑窗口中打开输出文件,同样与程序文件窗口共用一个窗口,用窗口上面的标签进行切换。4)输出文件窗口一旦打开,再次运行程序时,会弹出对话框,大意是屏幕上显示的输出文件已经改变,询问是否从磁盘中重新读取并显示,点击reload from disk(从磁盘重新载入)即可。4.5 家庭练习:1、找出下面程序中的错误:const pi:3.14a:=4;b=6;c:=A;var a,b,c,d,e,f:real;begina+1:=3;b=6e,f:=7;g:=true;c:=d;2、设有下列语句:read(a,b,c);readln(d,e);readln;readln(f,g); 其中,所有变量均为整型。再设输入的数据如下:12345678910111213 写出该程序段运行后,各变量的值(“”表示空格)3、用不少于10种方法,输出123456。4、 分别写出下列程序的运行结果(不上机完成)(1)var a:integer; b:real; begin a:=2; b:=2; writeln(b/a); end. (2)var a:integer; b:real; begin a:=2; b:=2; writeln(a/a); end. (3)var a:integer; b:real; begin a:=2; b:=2; writeln(a div a); end. 5、如果 a,b,c的值分别是 2, 4, 6。执行下列语句后, a,b,c的值各是多少? a:=b;b:=c;c:=a; a=_ b=_ c=_b:=c;c:=a;a:=b; a=_ b=_ c=_c:=a;a:=b;b:=c; a=_ b=_ c=_t:=a;a:=b;b:=c;c:=t; a=_ b=_ c=_6、写出下列每小段程序的运行结果(只是程序的一部分): A.write( * );write( * );write( * );write( * ); B.writeln( * );writeln( * );writeln( * );writeln( * ); C.write( * );writeln;write( * );writeln;write( * );writeln;write( * );writeln; D.write( );writeln( * );write( );writeln( * );write( );writeln( * );write( );writeln( * ); 以下程序设计习题必须使用文件操作,程序文件名规则:shunxu+题号.扩展名例如:第一题shunxu1.pas/shunxu1.in/shunxu1.out1、 用字符输出如下图形:(本题不需要输入文件).+-+-+./ / /|.+-+-+ |./ /| | +-+ | |/| | +-+ | |/| | +-+ | |/| | +-+ | |/ /| +-+-+ |/.| | | +.| | |/.+-+-+.2、输出下面算式:(本题不需要输入文件) 253*43=10879 253 * 43- 759 +1012- 108793、分别读入一位数、二位数、三位数、四位数,把它们按向左对齐、向右对齐的方式输出出来。每行输出一中方式。4、输入一个四位整数,把它的各位数字倒序输出。(提示:用MOD和DIV运算完成)5、读入一个实数,利用ROUND()和TRUNC()函数,输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快递安检机操作安全规程
- 2026年农业种植技术员实操技能考核试卷及答案
- CRRT局部枸橼酸抗凝突发低钙急救共识
- 湿式除尘器安全操作规程
- PCB开料岗位技能考核试题(含详细答案)
- 职业性哮喘脱离接触后随访规范共识
- 2026年安全环保知识竞赛考试试题(附答案)
- 2026年广播电视播音员主持人资格(广播电视基础知识)自测试题及答案
- 全员安全生产责任清单落地方案
- NSATP网络安全从业人员能力测评模拟试题(含详细答案解析)
- 2025年中国农业银行校园招聘考试笔试题试卷真题附答案
- NIST AI RMF 1.0中文版 人工智能风险管理框架
- 2026年科普竞赛初赛试题附答案
- 安徽省江南十校2027届高三9月综合素质检测语文试卷(含答案)
- 2026中共广东省委党校(广东行政学院)招聘教研人员16人备考试题含答案
- 山东青岛市2026-2027学年高三期初调研检测数学试题(含答案)
- 2026秋新教材人教版四年级上册数学全册教案(教学设计)
- 起重机电气控制系统操作与检修维护手册
- 2026年大模型解决方案架构师招聘笔试试(附答案)
- 2023年军事理论考试知识点大全
- 部编版七年级语文上册古诗文理解性默写
评论
0/150
提交评论