小学Pascal教程 2.docx
《小学Pascal教程 2.docx》由会员分享,可在线阅读,更多相关《小学Pascal教程 2.docx(115页珍藏版)》请在冰豆网上搜索。
小学Pascal教程2
目录
第一章程序设计初步………………………………………………
第一节程序设计基础…………………………………………
第二节Pascal语言简介………………………………………
第三节Pascal语言程序的基本结构………………………
第二章顺序结构的程序设计………………………………………
第一节简单输出语句…………………………………………
第二节带格式的输出语句……………………………………
第三节常量变量和算术表达式………………………………
第四节赋值语句………………………………………………
第五节输入语句………………………………………………
第六节顺序结构的程序设计…………………………………
第三章分支结构程序设计…………………………………………
第一节分支结构基本概念…………………………………
第二节简单条件语句(IF语句)……………………………
第二节复合语句………………………………………………
第四章循环结构程序设计…………………………………………
第一节计数循环(FOR循环)…………………………………
第二节当型循环(WHILE-DO循环)……………………………
第三节直到型循环(REPEAT-UNTIL循环)……………………
第四节综合应用………………………………………………
附录一:
保留字
附录二:
标准标识符
附录三:
标准函数
附录四:
小学信息学(奥林匹克)辅导纲要
附录五:
竞赛试题及参考答案
第一章程序设计初步
本章重点
·Pascal语言的基本结构
·熟悉Pascal的集成环境
·掌握编辑、运行一个Pascal程序的过程
第一节程序设计基础
一、什么是程序和程序设计
计算机具有运算速度快、计算精度高、超强的记忆存贮能力、可靠性高、高度自动化等特点,应用于科学计算、计算机辅助教学、计算机辅助管理、计算机网络与通信等诸多方面,但不论计算机的功能有多么强大,应用多么广泛,它都是在人工控制下进行的,无法完全自动地进行工作。
只有当操作者向计算机输入一定的计算机能接受的信息,它才能按照操作者的要求进行工作,并且得到所需的结果。
那么,人怎样让计算机工作呢?
一般地,人们将需要计算机完成的任务设计成一条一条的指令,并输入计算机,存放在计算机的内存,计算机再逐条地从内存中取出指令,然后再执行。
可见,计算机是通过一条一条的指令来完成一定的工作的。
指令的序列叫程序,编制程序的工作就是程序设计。
二、什么是计算机语言
设想:
要让计算机在屏幕上显示如下图形,该怎么办?
*
**
***********
**
*********
我们不能直接用语言告诉计算机:
“请你在屏幕上显示这个图形”,因为它不懂汉语、英语、法语等自然语言。
试想,一个完全不懂中文的外国人在中国如何顺利地开展工作?
显然可以依靠翻译。
同样,计算机与人之间进行通信也可以通过翻译,这个翻译就是计算机语言,它由一些简单的单词符号、数字和严谨的语法组成。
计算机语言可以分为机器语言、汇编语言和高级语言,但计算机能直接识别的只有机器语言,而高级语言要再通过翻译软件的翻译,计算机才能识别,Pascal就是一种高级语言。
第二节Pascal语言简介
Pascal语言是瑞士苏黎世联邦工业大学的N.沃思(NiklausWirth)教授于1968年设计完成。
它较好地体现了结构化程序设计的思想,结构严谨,概念简捷,数据结构丰富,有利于初学者形成良好的编程习惯和严谨清晰的程序设计风格,是公认的典范的程序设计教学语言。
越来越多的学校把Pascal语言作为学习程序设计的第一语言,全国奥林匹克信息学竞赛(NOI)、国际奥林匹克信息学竞赛(IOI)把Pascal语言定位唯一提倡的程序设计语言。
一、TurboPascal语言系统的使用
目前,常用的Pascal语言系统有TurboPascal7.0与BorlandPascal7.0,本书将学习TurboPascal7.0系统的使用。
简单的Pascal系统必须有以下几个文件:
TURBO.EXE(TurboPascal集成环境)
TURBO.TPL(TurboPascal标准单元库)
TURBO.TP(TurboPascal集成环境设置记录)
1.系统的启动
第一步:
启动计算机,进入到DOS操作环境。
第二步:
进入TurboPascal系统程序所在磁盘和目录,执行TURBO.EXE,屏幕上出现如图1所示的集成环境。
在这个环境中能完成程序的输入、编辑、运行、调试和编译等全部功能。
2.TurboPascal系统集成环境简介
功能键提示行
编辑区
操作菜单
Pascal的集成环境由操作菜单、编辑区和功能键提示行三部分组成。
(1)操作菜单:
完成Pascal系统提供的全部功能。
用键盘操作菜单的方法是:
第一步:
击F10键,激活菜单。
第二步:
用←键和→键在一级菜单的菜单项之间选择,在选中的菜单项上用↓键(或回车键)打开菜单,再用↑键和↓键选择二级菜单项,回车即可执行所选菜单。
(2)编辑区:
进行程序的输入和修改。
(3)功能键提示行:
显示键盘上已有定义的部分快捷键。
几个常用功能键的作用:
F1:
获得帮助系统使用指南
F2:
将当前编辑窗口的源程序存盘
F3:
打开一个磁盘上的源程序文件
Ctrl+F9:
运行当前编辑的程序
Alt+F5:
查看程序运行结果
3.输入、修改、运行一个程序的过程
第一步:
新建一个程序窗口
方法:
按F10键进入主菜单,选择File子菜单,执行其中的New命令(默认文件名为Noname00.pas或Noname01.pas等)。
第二步:
一行一行的输入程序,发现输入错误,可用光标移动键和Delete键(或退格键)进行修改。
第三步:
按Ctrl+F9运行该程序。
第四步:
按Alt+F5查看运行结果。
4.程序的保存与打开
按F2键(或执行File菜单中的Save命令)可将编辑窗口中的程序存入磁盘。
第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。
按F3(或执行File菜单中的Open命令)可将磁盘上的PASCAL程序调入进行编辑,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要的文件,按回车键即可打开文件。
5.退出TurboPascal系统
方法1:
选择File菜单中的Exit(或按Alt+x),可彻底退出TurboPascal系统,此时如果没有保存修改过的程序,系统将提示你在退出前是否保存。
方法2:
选择File菜单中的Dos,可暂时退出Turbopascal进入到DOS命令状态,此时TurboPascal系统仍然驻留内存,键入EXIT命令,可返回到TurboPascal集成环境,重现退出前的屏幕。
二.第一个程序
下面程序在运行时,会提示输入一个正方形的边长,然后计算机会求出这个正方形的面积并显示在屏幕上。
按回车键,程序结束回到程序窗口。
Programex1;
varb,s:
integer;
Begin
Write(‘Inputb:
’);
Readln(b);
S:
=b*b;
Writeln(‘s=’,s);
Readln;
End.
请输入上面的程序,并练习将其存盘、打开与运行上面程序。
练习
正确输入下面的程序(注意标点符号和空格),运行并写出结果。
1.programLx1;
usescrt;
vara,b,c:
integer;
begin
clrscr;
a:
=654;b:
=78;c:
=923;
writeln(a:
6);
writeln(b:
6);
writeln('+',c:
5);
writeln('-------');
writeln(a+b+c:
6);
readln;
end.
2.programLx2;
vara,b,s,d,e:
integer;
begin
a:
=37;b:
=3;s:
=a+b;
d:
=adivb;e:
=amodb;
writeln('s=',s);
writeln('d=',d);
writeln('e=',e);
readln;
end.
3.programLx3;
vara,b:
integer;
begin
a:
=92;b:
=28;
writeln(a,'+',b,'=',a+b);
writeln(a,'-',b,'=',a-b);
writeln(a,'*',b,'=',a*b);
writeln(a,'div',b,'=',adivb);
writeln(a,'mod',b,'=',amodb);
readln;
end.
4.programLx4;
vari,j:
integer;
begin
fori:
=1to8dobegin
forj:
=1toido
write(‘*’);
writeln;
end;
readln;
end.
5.programLx5;
vari,j:
integer;
begin
fori:
=1to8dobegin
write('':
40-i);
forj:
=1toidowrite('*');
writeln;
end;
end.
6.programLx6;
vari,j:
integer;
begin
fori:
=1to8dobegin
write('':
40-i);
forj:
=1to2*i-1dowrite('*');
writeln;
end;
end.
7.programLx7;
usescrt;
vari,j,k:
integer;
begin
clrscr;
k:
=20;
fori:
=1to8dobegin
write('':
k);
forj:
=1toidowrite(j);
forj:
=i-1downto1dowrite(j);
writeln;
k:
=k-1;
end;
end.
8.programlx8;
usescrt;
var
a:
array[1..8,1..8]ofinteger;
i,j:
integer;
begin
clrscr;
fillchar(a,sizeof(a),0);
fori:
=1to8do
forj:
=1to8dobegin
if(i-j>=-6)and(i-j<=-1)then
ifi+jin[3..8]then
a[i,j]:
=1
elseifi+j<>9thena[i,j]:
=4;
ifi-jin[1..6]then
ifi+jin[3..8]then
a[i,j]:
=2
elseifi+j<>9thena[i,j]:
=3;
end;
fori:
=1to8dobegin
forj:
=1to8do
write(a[i,j]:
2);
writeln;
end;
readln;
end.
第三节Pascal语言程序的基本结构
任何程序设计语言都有一组自己的记号和规则。
PASCAL语言也不例外。
尽管不同版本的PASCAL语言所采用的记号的数量、形式不尽相同,但其基本成分一般都符合标准PASCAL的规定,只是某些扩展功能各不相同罢了。
下面我们首先来了解Pascal语言程序的基本结构。
为了明显起见先举一个最简单的PASCAL程序例子:
从这个简单的程序可以看到:
⒈一个PASCAL程序分为两个部分:
程序首部和程序体。
⒉程序首部是程序的开头部分,它包括:
⑴程序标志。
用“program”来标识“这是一个PASCAL程序”。
⑵程序名称。
由程序设计者自己定义,如例中的exam1。
在写完程序首部之后,应有一个分号。
在turbopascal语言中,程序首部可省略。
⒊程序体是程序的主体。
程序体包括说明部分(也可省略)和执行部分。
⑴说明部分:
用来描述程序中用到的变量、常量、类型、过程与函数等。
本程序中第二行是"变量说明",用来定义变量的名称、类型。
PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称"说明")。
也就是说,不允许未说明先使用。
⑵执行部分的作用是通知计算机执行指定的操作。
如果一个程序中不写执行部分,在程序运行时计算机什么工作也不做。
因此,执行部分是一个PASCAL程序的核心部分,是比不可少的。
执行部分以"begin"开始,以"end"结束,其间有若干个语句,语句之间以分号隔开。
执行部分之后有一个句点,表示整个程序结束。
4.PASCAL程序的书写方法比较灵活。
当然,书写不应以节省篇幅为目的,而应以程序结构清晰、易读为目的。
在编写程序时尽量模仿本书中例题程序格式,即缩格形式。
5.在程序中,一对大括号间的文字称为注释。
注释的内容由人们根据需要书写,可以用英语或汉语表示。
注释可以放在任何空格可以出现的位置。
执行程序时计算机对注释不予理睬。
练习
选择题
1.计算机能直接识别的语言是:
A.汇编语言B.高级语言C.机器语言D.Pascal语言
2.一个完整的PASCAL程序一般是由以下哪几部分组成的?
A.程序首部、变量说明部分和执行部分
B.标号说明部分、说明部分和执行部分
C.程序首部、说明部分和类型定义部分
D.程序首部、说明部分和执行部分
3.每个程序必须有:
a.程序标题b.变量说明部分c.执行部分
4.PASCAL程序的执行部分是:
a.语句体b.说明部分和语句体c.语句d.整个程序
第二章顺序结构的程序设计
本章重点
·基本概念:
整数、实数、场宽、标准场宽、常量、变量、表达式
·write和writeln语句的用法
·整数和字符串的标准场宽
·掌握实数的双场宽输出方法
·标识符的命名
·赋值语句的用法
·read和readln语句的用法
·会写简单程序的输出结果
·会编制简单的程序。
第一节简单的输出语句
在一个程序中,所有的操作都由执行部分来完成,而执行部分又都是由一个个语句组成的。
因此,下面开始我们要学习pascal语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。
一、输出语句
输出语句的作用是将程序运算的结果输出到屏幕或打印机等输出设备。
这里通常是指输出到屏幕。
(一)输出语句的两种格式
1.write语句
格式:
Write(输出项1,输出项2,……);
如:
write(1,2,3,4);
write(1.2,3.4,5);
write('MynameisLiping');
2.writeln语句
格式:
Writeln(输出项1,输出项2,……)
或writeln
(二)输出语句的功能
计算机执行到write(或writeln)语句时,先计算出语句中的每个输出项的值,再将每一个输出项的值一个接一个地输出到屏幕上。
如writeln(3+5)的输出是8。
Write语句与writeln语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于:
①write语句是一项接一项地输出,输出完最后一项后不换行;
writeln语句也是一项接一项地输出,但输出完最后一项后自动换行。
例如:
程序段:
write(1,2,3,4);write(5,6);
输出为:
123456
即输出1、2、3、4后紧接着输出5和6。
程序段:
writeln(1,2,3,4);write(5,6);
输出为:
1234
56
即输出1、2、3、4后换行输出5和6。
②write语句至少有一个输出项;
writeln语句则允许没有输出项,此时该语句不输出任何内容,只起换行作用。
如:
程序段等价于程序段:
write(‘U’);writeln(‘U’);
writeln;writeln(‘F’);
write(‘F’);writeln(‘O’);
writeln;
write(‘O’);
writeln;
输出为:
U
F
O
(三)说明:
1.当一个write(或writeln)语句中有多个输出项时,各项之间必须用逗号隔开,但最后一个没有逗号。
如:
writeln(1,3,5,7,9);
不能写成:
writeln(1,3,5,7,9,);
2.当输出项为一串用单引号引起的字符(称为字符串)时,则原样输出单引号中的内容。
例如:
writeln(‘ShengLiyoutiandierxiaoxue’)
输出ShengLiyoutiandierxiaoxue
3.整数的输出
整数的概念:
由正(或负)号和一系列数字组成。
正整数和零前面的正号可省略。
当整数范围在-2147483647~2147483647时,按实际大小输出;超过此范围,则不能正确输出。
语句writeln(123)和语句writeln(‘123’)表示的意义
相同吗
二、简单的程序设计
例1:
在屏幕上输出“ZheshiwodediyigeTurboPascalchengxu.”
Programexp1;
Begin
Write(‘ZheshiwodediyigeTurboPascalchengxu.’);
End.
或
Programexp1;
Begin
Writeln(‘ZheshiwodediyigeTurboPascalchengxu.’);
End.
例2:
在屏幕上输出如下图形:
*
**
***
****
程序为:
programexp2;
begin
writeln(‘*’);
writeln(‘**’);
writeln(‘***’);
writeln(‘****’);
end.
例3:
输出如下图形:
*
**
**
*******
程序为:
programexp3;
begin
writeln(‘*’);
writeln(‘**’);
writeln(‘**’);
writeln(‘*******’);
end.
你想让你的程序在每次运行之前屏幕都保持干干净净吗?
那就赶快动手吧。
第一步:
在程序首部“program…;”之后输入“usescrt;”
第二步:
在程序的执行部分,需要屏幕干干净净的地方,就加上“clrscr;”
练习
1.下面给出的哪些是有效整数?
75-2.3128.3,000,00045000+002634.0-0011;123;234
2.写出下列两个程序段的运行结果:
a.WRITE('*');b.WRITELN('*');
WRITE('*');WRITELN('*');
WRITE('*');WRITELN('*');
WRITE('*');WRITELN('*');
3.编程在屏幕上分别输出如下图形:
********
***********
**************
*************
*
4.编程在屏幕上显示“中国”二字。
5.编程在屏幕上输出一个机器人头像。
6.写出下列程序的运行结果。
(1)programLx1;
begin
write(123);
write(456);
write(789);
end.
(2)programLx2;
begin
writeln(123);
writeln(456);
writeln(789);
end.
(3)programLx3;
begin
writeln(‘78+87=’,78+87);
writeln(’87-78=’,87-78);
writeln(‘78*87=’,78*87);
end.
(4)programLx4;
begin
write(‘a’);writeln;
write(‘a’,’a’);writeln;
writeln(‘aaa’);
write(‘aaaa’);writeln;
end.
第二节带格式的输出语句
尝试练习:
写出下列程序段的输出结果,并上机验证。
Writeln(123);
Writeln(12.3);
Writeln(-12.3);
问题:
writeln(12.3)的输出不是12.3,而是1.2300000000E+01;
writeln(-12.3)的输出不是-12.3,而是-1.2300000000E+01,
为什么?
一、实数
在TurboPascal系统中,带小数点的数称为实数。
如12.3,-12.3等。
实数包括正实数、负实数和实数零。
Pascal中表示实数的形式有两种。
⑴十进制表示法
即带小数点的表示方法。
必须有小数点,且小数点前后必须有数字,正号可省略。
如0.0,-0.23,+5.61,-8.0,-6.050等都是合法的实数形式,而0.和.37都不是合法的实数形式。
12和12.0表示的意义相同吗?
为什么?
⑵科学记数法
即指数形式的表示方法,如
可表示成1.25E+05。
在科学记数法中,字母"E"表示10这个"底数",而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为"指数"。
如-1234.56E+26,+0.268E-5,1E5是合法形式。
不合法的实数表示形式及原因见表2-1。
实数形式
不合法的原因
.34E+12
2.E5
E5
E
1.2E+0.5
小数点前必须有数字
小数点后必须有数字
E前面的数字1不能省略
E前后必须有数字
E后面的数字必须为正(或负)整数
表2-1
和整数相比,实数能表示的范围大得多,但实数的运算比整数的运算速度慢且无法像整数那样精确表示,只能近似表示。
二、带格式的输出语句
1.场宽和标准场宽
在pascal语言中,数据的输出格式是非常重要的。
我们将每一种类型的数据在输出时所占据的列数称为场宽。
若我们输出数据时不规定场宽,则系统默认为标准场宽。
表2-2列出了TurboPascal对几种常用数据规定的标准场宽。
数据类型
标准场宽
实例
输出结果
整数
整数的实际宽度
Write(1234);
1234
实数
17
Write