当前位置:首页 >> 学科竞赛 >>

信息学pascal版


计算机是什么
? 计算机是一种工具。它按照人的要求工作。

? 计算机具有运算速度快、计算精度高、超强的 记忆存贮能力、可靠性高、高度自动化等特点 ? 计算机是通过一条一条的指令来完成一定的工 作的。指令的序列叫程序,编制程序的工作就 是程序设计。

计算机语言
? 计算机能够接受、识别的语言。 ? 计算机语言由一些简

单的单词符号、数字和严 谨的语法组成。 ? 计算机语言分机器语言、汇编语言和高级语言。 ? 计算机能直接识别的只有机器语言。高级语言 要通过翻译软件的翻译成机器语言。Pascal就是

一种高级语言。

Pascal语言
? 高级语言:True basic、Virtual Basic(VB)、C、 C++、VC、FoxPro、Delphi、PASCAL等 ? Pascal语言国际奥林匹克信息学竞赛(IOI)唯 一提倡的程序设计语言。 ? 常用的Pascal:Turbo Pascal 7.0和Free Pascal2.0 ? Free Pascal2.0软件是一种翻译软件,它把高级语 言编写的程序翻译成机器语言程序,计算机才能

直接识别执行。这种翻译软件也叫编译软件。

Free Pascal2.0软件
? 安装、打开、关闭、设置

? C:\FPC\2.0.4\bin\i386-win32\fp.exe

? 界面认识:Free Pascal2.0系统集成环境由操作 菜单、编辑区、功能键提示行三部分组成

Free Pascal2.0简单使用
? 鼠标操作

? 键盘操作按键:ALT键、回车键、←、↑、→、↓
? 输入P4练习LX1程序,保存为1.pas,运行查看 结果。

? 输入P11练习EXP2程序,保存为CX1.pas,运行
查看结果。 ? Command shell到DOS状态,exit命令返回。

Pascal程序结构
程序首部 ←———————— Program ex1; ←——可省略 说明部分←—— var b,s:integer; ←—有时可省 Begin

Write(‘Input b:’);
程序体 执行部分 Readln(b); S:=b*b; Writeln(‘s=’,s); Readln; 必 不 可



End.

Pascal程序结构

?PASCAL程序中的空格。 ?程序书写应节省篇幅,应以程序结构清晰、易

读为目的。

?程序中一对大括号间的文字称为注释。执行程 序时计算机对注释不予理睬。

练 习 1. 计算机能直接识别的语言是: A.汇编语言 B.高级语言 C.机器语言 D.Pascal语言 2.一个完整的PASCAL程序一般是由以下哪几部分组成的? A.程序首部、变量说明部分和执行部分 B.标号说明部分、说明部分和执行部分 C.程序首部、说明部分和类型定义部分 D.程序首部、说明部分和执行部分

3.每个程序必须有: a.程序标题 b.变量说明部分 c.执行部分
4.PASCAL程序的执行部分是: a.语句体 b.说明部分和语句体 c.语句 d.整个程序

Pascal常用保留字和标准标识符
PROGRAM VAR INTEGER REAL BEGIN END AND NOT OR DO WHILE 程序 变量 整数 实数 开始 结束 与、并且 非、否 或者 做 当……时

保留字:

IF ELSE THEN FOR TO DOWNTO REPEAT UNTIL MOD DIV USES

如果 否则 那么 对于 到 递减到 重复 直到 取余 整除 引用

标准标识符:

READ WRITE CRT CLRSCR

读取 写出 显示器 清除屏幕

READLN WRITELN

读取并换行 写出并换行

程序语句
? 程序的执行部分是由一个个语句组成

简单的输出语句
? 功能:将程序的执行结果输出到屏幕上。
? 两种:wirte和writeln。 wirte语句格式: write(输出项1,输出项2,……); writeln语句格式有2种: 1:writeln(输出项1,输出项2,……); 2:writeln;

简单的输出语句
? 先计算每个输出项的值,再将每个输出项的值 逐个输出到屏幕。如: write(3+5,4,2+1);输出843 ? write语句输出完最后一项后不换行;writeln语 句但输出完最后一项后自动换行。如: write(1,2,3,4);write(5,6);输出为: 123456 writeln(1,2,3,4);write(5,6);输出为: 1234 56

简单的输出语句
? write语句至少有一个输出项; writeln语句则允 许没有输出项,此时该语句不输出任何内容, 只起换行作用。 如下两段程序结果相同: write(‘U’); writeln; write(‘F’); writeln; write(‘O’); writeln; U F O

writeln(‘U’); writeln(‘F’); writeln(‘O’);

简单的输出语句
? 当一个write(或writeln)语句中有多个输出项

时,各项之间必须用逗号隔开,但最后一个没
有逗号。 writeln(1,3,5,7,9); writeln(1,3,5,7,9,); √ ×

简单的输出语句
? 当输出项为一串用单引号引起的字符(称为字

符串)时,则原样输出单引号中的内容。
writeln(‘Sheng Li you tian di er xiao xue’); 输出: Sheng Li you tian di er xiao xue

简单的输出语句
? 整数的输出

整数的概念:由正(或负)号和一系列数字组成,
不含有小数点。正整数和零前面的正号可省略。

当整数范围在-2147483647-2147483647时,按实际 大小输出;超过此范围,则不能正确输出。

简单的输出语句

? 语句writeln(123)和语句writeln(‘123’)表示的意 义相同吗?

简单的输出语句
例3:编程输出如下图形: * ** * * ****** program exp3; begin writeln(‘ *’); writeln(‘ * *’); writeln(‘ * *’); writeln(‘*******’); end. program exp3; Uses crt; Begin clrscr; writeln(‘ *’); writeln(‘ * *’); writeln(‘ * *’); writeln(‘*******’); readln(); end.

简单的输出语句
? 下面给出的哪些是有效整数? 75 √ -2.31 × 28. × 3,000,000 ×

45 000 × +0026 √
00 √ -00 √

34.0 ×

+0 √

11;123;234 ×

简单的输出语句
(1) program Lx1; begin

write(123);
write(456); write(789); end.

简单的输出语句
(2) program Lx2; begin

writeln(123);
writeln(456); writeln(789); end.

简单的输出语句
(3) program Lx3; begin

writeln(‘78+87=’,78+87);
writeln(’87-78=’,87-78); writeln(‘78*87=’,78*87); end.

简单的输出语句
(4) program Lx4; begin

write(‘a’); writeln;
write(‘a’,’a’); writeln; writeln(‘aaa’); write(‘aaaa’); writeln; end.

带格式的输出语句
? 下列程序段的输出结果是什么: Writeln(123);

Writeln(12.3);
Writeln(-12.3);

123
1.2300000000E+01 - 1.2300000000E+01

带格式的输出语句
? 实数 在Pascal系统中,带小数点的数称为实数。 12.3 -12.3

? 实数包括正实数、负实数和实数零。 ? Pascal实数有两种形式: 十进制表示法、科学计数法

带格式的输出语句
? 十进制表示法 即带小数点的表示方法。必须有小数点, 且小数点前后必须有数字,正号可省略。

-12.3 +0.5
0. × .37 ×

0.0

00.8

12.030

? 12和12.0意义相同吗?

带格式的输出语句
? 科学计数法 即指数形式的表示方法,如实数1.25×105可表示 成1.25E+05。

1.25×105 → 1.25E+05
字母"E"表示10这个底数 E之前为一个十进制表示的小数,称为尾数 E之后必须为一个整数,称为指数。

带格式的输出语句
? 合法实数表示形式
-1234.56E+26 +0.268E-5 1E5 00E-00

? 不合法的实数表示形式
实数形式 .34E+12 2.E5 E5 E 1.2E+0.5 不合法的原因 小数点前必须有数字 小数点后必须有数字 E 前面的数字 1 不能省略 E 前后必须有数字 E 后面的数字必须为正 (或负) 整数

带格式的输出语句
? 哪些是有效实数
+3.14 √ 12. × 3.7E5 √ 47.0 √ -.75 × 3.7E-5 √ -3.14 √ .003 × -3.7E5 √ 26.75 √ -00.000 √ 5E2 √

3.7E12 √

3.14E1 √

3.7E4.5 ×

3.14E0 √

带格式的输出语句
? 场宽和标准场宽
每一种类型的数据在输出时所占据的列数称为场宽。若输出 数据时不规定场宽,则系统默认为标准场宽。
数据类型 标准场宽 整数 实数 字符串 整数的实际宽度 17 包含的字符个数 实例 Write(1234); Write(-123.4); Write(‘aaa’); 输出结果 1234 按科学记数法输出: -1.23400000E+02 aaa

带格式的输出语句
? 指定场宽:单场宽和双场宽

⑴指定单场宽. 格式: write(输出项:N); 或writeln(输出项:N); 其中N为正整数。

带格式的输出语句
? 指定单场宽后,所有数据不再按标准场宽输出,而按指定场
宽输出。如: write('abcdef':12); 输出 □□□□□□abcdef

? 若数据实际长度小于指定场宽时,则一律“向右靠齐,左留
空格”。如 write(1234:8); 输出 □□□□1234

? 若数据实际长度大于指定场宽时,则按实际长度输出,此时 指定场宽无效。如 writeln(1234:1); 输出 1234

writeln(‘abcdef’:2); 输出 abcdef

带格式的输出语句
? 指定双场宽
如果希望输出的实数不用科学记数法输出,而用小数形式 输出,可以指定双场宽。

格式:write(实数:m:n);或writeln(实数:m:n);

其中m和n都是正整数,m指整个实数所占的宽度(包括符 号位、整数部分、小数点和小数部分),n指定实数的小数位数。 如 : write(-123.454:8:2); 输出:□-123.45

带格式的输出语句
? 如果双场宽不能满足输出数据的最低要求, 则按实际长度输出,
场宽不起作用。如: write(1.4567:5:4); 要使小数点后有4位数字,而总场宽为

5,是不可能的(因为还有一个小数点, 小数点前面还有一个数
字)。它最低限度要有6列,即输出为:1.4567

带格式的输出语句
Program exp4_1;
Begin writeln(1234,1234:6,1234:3);

writeln(1234.5678:12:5,1234.5678:8:5);
writeln(‘#’,’#’:5); writeln(‘abcdefg’,’abcdefg’:10,’abcdefg’:6); end.

1234 □ □12341234 □ □1234.567801234.56780 #□□□□# abcdefg□□□abcdefgabcdefg

带格式的输出语句
?将1,12,123这三个数分三行右齐输出。

Program exp_2;

Begin
Writeln(1:6); Writeln(12:6); Writeln(123:6); End.

带格式的输出语句
?将1.23, 12.345, 1234.5678这三个数按小数点对齐输出。

Program exp4_3;

Begin
Writeln(1.23:10:4); Writeln(12.345:10:4); Writeln(1234.5667:10:4); End.

带格式的输出语句
?在屏幕上显示253+34的竖式加法。

Program exp4_4;

Begin
Writeln(253:5); Writeln(‘+’,34:4); Writeln(‘------‘); Writeln(253+34:5);

End.

?写出下列程序段的运行结果。 writeln; write(2); write(4,6,8); writeln(10); write(2:5,4:4,6:3);

(输出穿行)
2468 10 □□ □ □ 2 □ □ □ 4 □ □ 6 □810□□□ 12□ 14 a=2b=4 □□□c=6□□□d=8 e=10f=□□12 (输出空行) 14

writeln;
write(8:2,10:1); writeln(12:5,14:3); writeln(‘a=’,2,’b=’,4); writeln(‘c=’:5,6:1,’d=’:5,8); writeln(‘e=’,10:2,’f=’,12:4); writeln;

writeln(14:1);

?利用带格式的输出语句编程显示下面的图形。 * ** *** **** ####### ##### ### #

9876543210 98765432 987654 9876

常量
? 在程序运行过程中,其值不能被改变的量称为

常量。如123,145.88,‘abc’等。
整型常量 数值常量 实型常量 常量 字符常量 非数值常量 字符串常量

布尔常量

常量
?整型常量

就是前面所说的整数,由正号(或负号)和
一系列数字组成,正号可省略。如138,0,-512等。 18.或18.0都不是整型常量。

?实型常量
实型常量就是前面所说的实数,包括正实数、 负实数和实数零。

常量
?字符串常量 是指用单引号引起的一串字符,如

’asdf ’ ’a’

’12 67’

字符串的长度就是引号中字符的个数。
字符串常量 ‘a’ ‘abcd’ ‘ab cd’ ‘123’ 对应的长度 1 4 6 (含有两个空格) 3

常量

常量‘123’和123表示的意义相同吗?

变量
?变量是指在程序运行中值可能会变化的量,它代表 了一个内存单元。 ?变量三要素:变量名、变量类型、变量值。 程序中要用到多个变量,为了区别不同的变量,

必须给每个变量取一个名,称为变量名。
变量中存放的值称为变量的值。 变量中能够存放值的类型为变量的类型。

Pascal程序结构
程序首部 ←———————— Program ex1; ←——可省略 说明部分←—— var b,s:integer; ←—有时可省 Begin

Write(‘Input b:’);
程序体 执行部分 Readln(b); S:=b*b; Writeln(‘s=’,s); Readln; 必 不 可



End.

Pascal常用保留字和标准标识符
PROGRAM VAR INTEGER REAL BEGIN END AND NOT OR DO WHILE 程序 变量 整数 实数 开始 结束 与、并且 非、否 或者 做 当……时

保留字:

IF ELSE THEN FOR TO DOWNTO REPEAT UNTIL MOD DIV USES

如果 否则 那么 对于 到 递减到 重复 直到 取余 整除 引用

标准标识符:

READ WRITE CRT CLRSCR

读取 写出 显示器 清除屏幕

READLN WRITELN

读取并换行 写出并换行

简单的输出语句
? 功能:将程序的执行结果输出到屏幕上。
? 两种:wirte和writeln。 wirte语句格式: write(输出项1,输出项2,……); writeln语句格式有2种: 1:writeln(输出项1,输出项2,……); 2:writeln;

带格式的输出语句
? 指定单场宽.
格式: write(输出项:N); 或writeln(输出项:N); ? 指定双场宽 格式:write(实数:m:n); 或writeln(实数:m:n);

P63问题求解
?只有一人正确, 是冠军。

甲:冠军不是A就是B

乙:冠军绝不是C
丙:D,E,F都不可能是冠军 丁:冠军可能是D,E,F中的一个 ?方法:逐个假设某人是冠军进行验证。

P70问题求解
1.老师出了两道题,全班40人中,第一题有30人对,第2题有12 人未做对,两题都做对的有20人。 (1)第2题对第1题不对的有几个人? (2)两题都不对的有几个?

第一题有30人对

第二题有28人对

P70问题求解
1.老师出了两道题,全班40人中,第一题有30人对,第2题有12 人未做对,两题都做对的有20人。 (1)第2题对第1题不对的有几个人? (2)两题都不对的有几个?

10人 第1题对 第2题不对

8人

两题都对20人

第2题对
第1题 不对

2人 两题 都不对

第一题有30人对

第二题有28人对

P70问题求解
2.小王、小张、小李三人工作后分别当了医生、教师和战士。

小李比战士年纪大

小王

医生

小王和教师不同岁

小张

教师

教师比小张年龄小

小李

战士

P70问题求解
2.小王、小张、小李三人工作后分别当了医生、教师和战士。

教师 小李比战士年纪大

小王

医生

小王和教师不同岁

小张

教师

教师比小张年龄小

小李

战士

P76问题求解
1、观察下列数的规律,然后填空。

0,1,2,5,12,29,_________

第1个数0 第2个数1 第3个数2:0+1×2=2 第4个数5:1+2×2=5 第5个数12:2+5×2=12 第6个数29:5+12×2=12 第7个数?:?+?×2=?

常量
?常量:在程序运行过程中,其值不能被改变的量称为常量。 整型常量就是前面所讲整数, 它由正号(或负号)和一系列 数字组成,正号可省略。 实型常量就是前面所说的实数, 包括正实数、负实数和实数零。

整型常量 数值常量 实型常量

常量 字符常量
非数值常量 字符串常量

字符常量是指用单引号引起的 一串字符,字符串的长度就是 引号中字符的个数。一个空格 也算一个字符。

布尔常量

常量
?字符串常量长度

字符串常量

对应的长度

‘a’ ‘abcd’ ‘ab cd’ ‘123’

1 4 6 (含两空格) 3

常量

? 常量‘123’和123表示的意义相同吗?

变量
?变量:程序运行过程中,值会发生变化的量就是变量。

?变量有三个要素:变量名、变量类型、变量值。

?变量名:一个程序中可能要使用到若干个变量,为了区别不 同的变量,必须给每个变量取一个名,称为变量名。如 X Y A1

?变量值:变量存放的值称为变量的值。
?变量类型:变量中能够存放值的类型为变量的类型。如整型、 实型

变量
?变量说明: 在程序中若要使用变量,变量的名称及类型在程 序的说明部分说明,变量的值则在程序的执行部分中才能 赋给。

变量
Program ex1; var x,y:integer;

?变量说明的一般格式: VAR
变量名1,变量名2,…:数据类型;

←说明两个变量,变量名是x和y,变量类型是整型

a1:real;
Begin

←说明1个变量,变量名是a1,变量类型是实型

x:=1;y:=5;A1:=7.5; ←让X变量的值是1,让y变量的值是5,让a1变量的值是7.5 writeln(x); writeln(y); writeln(a1:4:1); X:=3; writeln(x); Readln; End. ←再让X变量的值是3。X的值发生了变化
?赋值语句的格式:
变量名:=表达式;

?标准数据类型包括
整数类型:integer 实数类型:real 字符类型:char 布尔类型:boolean (用于存放整数) (用来存放实数) (用于存放一个字符) (用于存放布尔值)

?整型、实型的取值范围和适合的运算
数据类型 取值范围 适合的算术运算 + (加) 整型integer -32768~32767

-(减)
*(乘) div (整除) mod (求余数)

实型real



+ (加)
- (减) * (乘) / (除)

算术表达式
?算术表达式定义:相当于数学运算式。如2+3和6.7-4.5 ?算术运算符:+ * / DIV MOD

①:+ (加) ②:- (减) ③: * (乘) ④:/ (实数除),结果为实型。 如: 5.0/2.0=2.5, 5/2= 2.5, 4/2=2.0而不等于2。 ⑤:DIV (整数除),除数和被除数必须为整型, 结果也为整型。DIV运算只取商的 整数部分。如: 10 DIV 3=3 5 DIV 10=0 -15 DIV 4= -3 ⑥ :MOD (求余),也只能用于整数运算,结果为整数,符号与被除数相同。如: 10 MOD 4=2 10 MOD –4=2 -10 MOD 4=-2 -10 MOD –4=-2

算术表达式的书写规则
数学运算式:

23 ? 567 ?

12 ? c?d 3 ? (a ? b)

对应的Pascal表达式为:

23 * 567 ? 12 /(3 * (a ? b )) ? c * d
23 * 567 ? 12 / 3 * a ? b ? c * d

×

· 所有的字符必须写在同一行上。

· 乘号必须用“*”,不能用“×”或“ · ”,也不能省略。
· 除号必须写成“/”,不能写成“÷”,也不能写成分数的形式。 · 只能用小括号,小括号里可以再套小括号,但小括号必须成对出现。 数学式子中所有的中括号和大括号都用小括号代替。 · 必要时要添加小括号,以保持数学式子的原意。

运算优先顺序
? 例:设a,b,c,d,e都是整型变量,它们的值分别为6,6,5,3,2,计算表达式 e+a*b DIV c MOD d的值。 解:该表达式是一个整型表达式,运算顺序为

e+a*b DIV
6*6=36

c

MOD

d =3

36 DIV 5=7

7 DIV 3=1

2+1=3

运算优先顺序
? 例:设a,b,c,d,e都是整型变量,它们的值分别为6,6,5,3,2,计算表达式 e+a*b/(c MOD d)的值。 解:该表达式是一个实型表达式,运算顺序为

e+a*b/(c MOD

d) =20.0

5 MOD 3=2
?运算优先顺序:
? 相同优先级的运算符,按从左到右顺序计算; ? 不同优先级的运算符,按从高到低顺序计算;

6*6=36

36/2=18.0

? 括号优先级最高,从内到外逐层降低; ? 先乘除后加减,MOD、DIV运算优先级与*、/相同。

2+18.0=20.0

运算优先顺序练习

? 练习P22页2、3

变量



?变量的命名规则:同标识符的命名规则。所谓标识 符就是用来标识处理对象(如变量名、程序名、文件

名等)的符号。
①以字母开头,后面可以跟字母、数字和一些符号

(如下划线“_”)
②不得使用Pascal保留字。 ③最好不要使用Pascal的标准标识符,以免引起混淆。

变量
?合法的变量名 Sum exp_1 p001 date i

?错误的变量名
错误例子 2a a+b a x if integer 原 因 以数字开头 出现了非字母和数字外的字符 标识符中有空格 与保留字同名 与标准标识符同名

变量
注意: 标识符中字母不分大小写,如a1和A1是同一个。

变量
?下列符号哪些能作为标识符

Ai

Wang
x1

4D4g ×
N

If×

max
a+b× X1

pi
Lx_1

begin×
end × 316×

1abc×

birth 2saber× false×

False × program× Algorithml OK Pascal× a-b× a_b

N.writh ×

x/y × Ada no.two ×

a*b×

赋值语句
? 赋值语句的格式
变量名:=表达式; 其中“:= ”称为赋值号。

? 执行过程 先计算赋值号右边表达式的值,然后将计算结果赋给变量名代表的 变量。如: A:=(9*8)-(2-1); A:=A+1; 第一条语句先计算出表达式(9*8)-(2-1)的值是71,再把71赋给 变量A。 第二条语句先计算出表达式A+1的值是72,再把72赋给变量A。

最后变量A的值是72。

赋值语句
?说明:

1. 任何一个变量都必须先赋值,后使用。
2.赋值号“:=”具有方向性,只能将赋值号右边的值赋给左边的变量。 8:=a; ×

3.一个赋值语句只能给一个变量赋值。 a=b:=12; ×
4.赋值号右边的表达式最终必须是一个能计算出来的值。 5.整数可以赋给实型变量,但实数不能赋给整型变量。 var i:integer; x,y:real; i:=3; X:=2.5; X:=(i+x)/(i-x); Y:=i+5; y:=3; X:=y; i:=y; ×



赋值语句
例1:下列赋值语句哪些有效?哪些无效?为什么? (1) x=y+z;× x:=y+z; (3) x:=y; √ (2) x:=x+1; √ (4) x+y:=z; × z:=x+y;

(5)x=y:=1; × x:=1;y:=1;

(6) x=y=z × x:=z;y:=z;

赋值语句
例2.已知长方形的长L=100,宽h=60,求该长方形的周长和 面积。编程完成。 分析:长方形的周长用t 表示,面积用s表示,则

t ? 2( L ? h)

s ? L?h

program exp2; var L,h,t,s:integer; begin L:=100; h:=60; t:=2*(L+h); s:=L*h; writeln(‘Zhou chang=’,t); writeln(‘Mian ji=’,s); end.

输入语句(读语句)

P24页练习

输入语句(读语句)
? 读语句是在程序运行时由用户从键盘给变量提供数据。 读:指计算机“读” 从键盘输入的数据。

? read语句 格式:read(变量名1,变量名2,…); 或readln; 功能:从键盘读入数据,并依次赋给相应的变量。

输入语句(读语句)
例1:设a、b、c为整型变量,需将它们的值分别赋以10,20,30,写出对 应语句read(a,b,c);的数据输入格式。

Program ex1; Var a,b,c:integer: Begin read(a,b,c); End.
(a) 10□20□30←┘ (b) 10□20←┘ 30←┘ (c) 10←┘ 20□30←┘ (d) 10←┘ 20←┘ 30←┘

说明: ① read是标准标识符。 ② 执行到read语句时,等待用户从键盘上输入数据, 输入整型或实型数据时,数据间要用空格或回车分隔开 各个数据,最后一定要有回车表示输入结束。 ③ 从键盘输入的数据必须是常量,输入的数据要与 变量类型一致。 ④ 一个read语句可以从一个或多个输入数据行中按 顺序读数据,赋给语句中的变量;而一个输入数据行可 以被一个或多个 read语句连续读数据。若输入的数据少 于变量数,则系统等待继续输入;若输入的数据多于变 量数,则多余的数据被略去。

输入语句(读语句)
? readln语句 格式:read(变量名1,变量名2,…); 功能:从键盘读入数据,并依次赋给相应的变量。 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。

Readln:在读完本Readln语句中变量所 需的数据,一定要读到一个回车。

readln(a,b);readln(c); 如果输入数据行如下: 1□2□3←┘ 4□5□6←┘ 则a,b,c的值分别为1,2,4。

输入语句(读语句)
Read: 后一定要有变量名。 Readln:可以不带变量名,只是等待读入一个换行符(回车)。 ←连接读3个数依次赋给变量a,b,c ←连接读2个数依次赋给变量d,e,然后读1个回车

read(a,b,c);

readln(d,e);
readln; readln(f,g);

←读1个回车
←连接读2个数依次赋给变量f,g,然后读1个回车

如果输入的数据如下: 1□2←┘ 3□4□5□6□7□8←┘ 9□10←┘ 11←┘ 12□13←┘

变量名 值

a 1

b 2

c 3

d 4

e 5

f

g

11 12

输入语句(读语句)
编程时最好在读语句之前加以适当提示。 例如: write('Input a,b,c:'); readln(a,b,c); 在执行时,屏幕上显示: Input a,b,c:■ 其中,“■”为光标。执行readln语句后,系统处于待待输入状态, 只有 输入了所需数据后才继续往下执行。

练习READ和READLN语句。练习P27、28、29

顺序结构程序设计
例1 :试编一程序,输入一梯形的上底、下底、高, 求该梯形的面积。

? 分析: 整个程序分为 三段:输入、计算、 输出。用a,b,h三个变 量分别存放梯形的上、 下底与高,S存放面 积。变量要先说明, 程序的执行过程中先 输入上、下底与高,

program Tixing; {程序首部}
var a,b,h,s:real; {程序说明部分} begin write('Input a,b,h:'); {显示提示信息} readln(a,b,h); s:=(a+b)*h/2; {从键盘读取上底、下底和高的值} {求梯形的面积,并存入变量S} {在屏幕上显示所求的面积}

write('s=',s:10:3); end.

接着求面积S,最后输
出结果S。

顺序结构程序设计
例2:从键盘上输入两个正整数,输出它们的加法横式。如输入的两个数 为123和45,则输出为: 123+45=168

program L2;

var a,b:integer;
begin write(‘Input a,b:’); ?思考: 语句writeln(a,’+’,b,’=’,a+b)为 什么不写成: writeln(‘a+b=’,a+b) ?

readln(a,b);
writeln(a,’+’,b,’=’,a+b); readln; end.

顺序结构程序设计
例3. 某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己 的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果,现在他们做 一个分糖果游戏。从1号小朋友开始,将他的糖果均分三份(如果有多余 的,则他将多余的糖果吃掉),自己留一份,其余两份分给他的相邻的 两个小朋友。接着2号、3号、4号、5号小朋友也这如果做。问一轮后, 每个小朋友手上分别有多少糖果。
分析: 1.开始时五各小朋友的糖果数目不确定,因此由键盘输入他们的初始值。 2. 每个小朋友的糖果个数是在变化的,因此可用a,b,c,d,e五个变量分别 存放五个小朋友的糖果数。 3. 每人分糖1次,共分糖5次,每个小朋友分糖后的糖果数为:原来的糖 果数 div 3,与他相邻的两人则增加与这个小朋友现在拥有的一样多的糖

果数。

20150206

例3. 有5个小朋友编号为1,2,3,4,5,顺序围坐圆桌旁,都有若干糖果,做分糖果游戏。从1号小朋友开始,将 他糖果均分三份(多余的吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友 也这样做。一轮后,每个小朋友手上分别有多少糖果。

1.开始各小朋友的糖果数目不确定,因此由键盘输入初始值。 2. 每个小朋友的糖果个数是在变化的,因此可用a,b,c,d,e五个变量分别存放五个小朋友的糖果数。

3. 每人分糖1次,共分糖5次,每个小朋友分糖后自己的糖果数为:原来的糖果数 div 3,与他相邻的
两人则增加与这个小朋友现在拥有的一样多的糖果数。

var a,b,c,d,e:integer; begin write('Please Enter init numbers '); readln(a,b,c,d,e); {从键盘读入5位小朋友的初始糖果数} a:=a div 3;b:=b+a;e:=e+a; {1号均分后,1、2、5号的糖果数变化情况} b:=b div 3;c:=c+b;a:=a+b; {2号均分后,1、2、3号的糖果数变化情况} c:=c div 3;b:=b+c;d:=d+c; {3号均分后,2、3、4号的糖果数变化情况} d:=d div 3;c:=c+d;e:=e+d; {4号均分后,3、4、5号的糖果数变化情况} e:=e div 3;d:=d+e;a:=a+e; {5号均分后,4、5、1号的糖果数变化情况} writeln('a=',a); writeln('b=',b); writeln('c=',c); {输出结果} writeln('d=',d); writeln('e=',e); {输出结果} readln;{暂停} end.

顺序结构程序设计
例:从键盘上输入两个正整
数,输出它们的加法竖式。 如输入的两个数为123和45, 则输出为: 123 + 45 -------168

program LI;
var a,b:integer; begin write('Input a,b:'); readln(a,b); writeln(a:6); writeln('+',b:5); writeln('------'); writeln(a+b:6); readln;

end.

顺序结构程序设计
练习4

顺序结构程序设计
例:编程:从键盘输入两个整数分别存放在变量a和b
中,交换a、b的值,再输出a、b的值。

program LI; var a,b:integer; begin

a盒子 8 9

b盒子 9

write('Input a,b:'); readln(a,b); a:=b; b:=a;

writeln(‘a=‘, a, ’b=‘ , b); readln; end.

×

a:=b; b:=a;

顺序结构程序设计
例:编程:从键盘输入两个整数分别存放在变量a和b
中,交换a、b的值,再输出a、b的值。

a盒子 program LI; var a,b,t:integer; begin write('Input a,b:'); readln(a,b); t:=a; a:=b: b:=t; writeln(‘a=‘, a, ’b=‘ , b); readln; end. t:=a; a:=b; b:=t; 9 8

b盒子 9 8

8

t盒子

顺序结构程序设计
例4:某仓库5月1日有粮食100吨,5月2日又调进20吨,5月3日卖出库存的3分 之二,5月4日又调进库存的3倍粮食,问该仓库从5月1日到5月4日期间每天的粮食 分别是多少吨?(输出每天的库存量) 分析:从5月1日到5月4日期间仓库的粮食库存量,是不断变化的,可用一变量A来

描述仓库的粮食库存量。

program L4;

Var A : integer;
Begin A:=100; Writeln('May 1:',A);

A:=A+20; Writeln(‘May 2:',A);
A:=A div 3; writeln('May 3:',A); A:=A *4; writeln('May 4:',A); Readln; End.

分支结构程序设计

?

也叫选择结构程序设计。程序并不按语句顺序执行,而是根据条件选择执

行某些语句,或跳过某些语句。

布尔类型、布尔常量、布尔变量
?经常使用的数据类型有整型(integer)、实型(real) ?布尔型(boolean)

布尔常量:布尔类型的值只有:FALSE和TRUE。

TRUE表示真的,FALSE表示假的。

布尔变量:用来存放布尔值的变量。在程序中布尔变量的说明:
Var p,q:boolean;

布尔表达式
?关系表达式:是由一个关系运算符将两个算术表达式连接起来形成的式子。 ?关系表达式的值一定是布尔值,也就是只有两种: FALSE和TRUE 。

关系运算符:共有以下6个。

=

>

<

>=

<=

<>

等于

大于

小于

大于等于

小于等于

不等于

关系表达式:

5>‘4’

125>4
3*2<>3+2 100<=10.0

值为TRUE
值为TRUE 值为FALSE

注:只有同一种数据类型才可以
比较。如数值和数值比较,字符 和字符比较。

布尔表达式
?布尔表达式:由一个逻辑运算符将两个关系表达式连接起来形成的。
逻辑运算符有三个:NOT(否), AND(与), OR(或) (3>0) AND (4<0) 表达式的值为False(假) (3>0) OR (4<0) NOT (3>0) 表达式的值为True(真) 表达式的值为False(假)

A True True False False

B True False True False

NOT A False False True True

A AND B True False False False

A OR B True True True False

逻辑运算符的运算次序为: NOT → AND → OR

布尔表达式
?布尔表达式的运算优先级 一个既包括有逻辑运算,又包括关系运算的表达式,运算次序是

括号→函数→ NOT → *,/,DIV,MOD,AND → +,-,OR → >,=,<,>=,<=,<>

(2+1<3) AND NOT (2=1) OR (2<>3)
2+1=3 3<3为F 2=1为F NOT F为T 2<>3为T

=Ture

F AND T为F

F OR T为T

布尔表达式
?布尔型数据的输入和输出: 输入:只能通过赋值语句给布尔变量赋值,不能用read语句。 输出:可通过write或writeln语句输出。

PROGRAM lt; VAR a,b,c:boolean; BEGIN a:=true; b:=false; a:=(1+1>2); b:=5>4;

运行结果:

FALSE□□□□□□TRUE□□□□□FALSE

c:=a AND b;
writeln(a,b:10,c:10); END.

分支结构

?练习五

简单条件语句
?简单条件语句(IF语句)的格式:

格式一: IF <布尔表达式> THEN

<语句>;
执行过程:若布尔表达式的值为True,则执行THEN后面的语句,否则就跳 过这个语句。

简单条件语句
?例1:输入一个整数,如果这个数能被2整除,就输出“ou shu”。

PROGRAM lt1; VAR a:integer; BEGIN write('a='); readln(a); IF a MOD 2=0 THEN

运行结果:

a=4 ou shu a=5

writeln('ou shu');
END.

简单条件语句
?例2:输入两个整数a,b,如果b不等于0 ,输出a除以b的商。

PROGRAM lt2; VAR a,b:integer;

BEGIN
write('a,b='); readln(a,b); IF b<>0 THEN writeln(a/b:0:2); END.

简单条件语句
?计算机上编程完成38页1、2题

简单条件语句
?简单条件语句(IF语句)的格式:

格式二: IF <布尔表达式> THEN

<语句1>
ELSE <语句2>; 执行过程:若布尔表达式的值为True,则执行THEN后面的语句1,否则就r 执行ELSE后面的语句2。

简单条件语句
?例3:输入一个成绩判别是否及格,若及格则输出“Pass”,否则输出“fail”。

PROGRAM lt3; VAR kf:real; BEGIN 运行结果:

write('kf='); readln(kf);
IF kf>=60 THEN write('pass') ELSE write('fail'); writeln; END.

kf=65 pass kf=50 fail

简单条件语句
?自学例4例5。

?打印练习六

复合语句
?在简单结构的条件语句中,THEN和ELSE后只允许写一个语句,当一个问题较复杂, 用一个语句不能解决时,需要将多个语句组成一个复合语句。

复合语句的格式为

BEGIN

<语句1>;
<语句2>; ……

<语句n>;
END;

复合语句
?例1:输入整数a、b,如果a<b,交换a、b 的值。

PROGRAM lt1; VAR a,b,c:integer; BEGIN writeln('input a,b:'); readln(a,b); IF a<b THEN BEGIN c:=a; a:=b; b:=c; END; writeln('a=',a,',','b=',b); readln; END.

复合语句

?打印练习七

循环结构程序设计·计数循环

?预习第四章第一节· 计数循环,编写45页1、2程序书写在作业本上。


相关文章:
全国信息学奥赛NOI培训教程(Pascal 2016)
全国信息学奥赛 NOI 培训教程 全国信息学奥赛 NOI 培训教程 (Pascal 2016) 目录计算机基础知识 ---6 第一章 计算机基础常识 第二章 操作系统简介 第三章 计算机...
信息学奥赛数据结构教程PASCAL版
信息学奥赛数据结构教程PASCAL版_其它技巧_PPT制作技巧_实用文档。信息学奥赛数据结构教程PASCAL版 信息学奥赛数据结构教程 PASCAL 版 第二课 堆栈和队列一、堆栈 1...
2016年-第二十二届全国青少年信息学奥林匹克联赛初赛普及组Pascal
2016年-第二十二届全国青少年信息学奥林匹克联赛初赛普及组Pascal_电脑基础知识_IT/计算机_专业资料。2016年-第二十二届全国青少年信息学奥林匹克联赛初赛普及组...
初中信息学竞赛pascal语言试卷
初中信息学竞赛试题(Pascal 语言) 第Ⅰ卷一、选择题:(本大题共 15 小题,每小题 2 分,共 30 分,每小题给出 的四个选项中,只有一项是符合要求的) 1 、...
信息学奥赛算法教程_Pascal
信息学奥赛算法教程_Pascal_初中教育_教育专区。信息学奥赛辅导教程第3章 算法与程序设计模块 3.1 算法 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其...
2012信息学奥林匹克程序设计普及组初赛试卷及答案pascal版
2012信息学奥林匹克程序设计普及组初赛试卷及答案pascal版_军事/政治_人文社科_专业资料。第十八届全国青少年信息学奥林匹克联赛初赛普及组 Pascal 语言试题竞赛时间:20...
信息学奥赛数据结构教程pascal版
信息学奥赛数据结构教程 PASCAL 版 第三课 链表存储方式的分类:顺序存储结构和链式存储结构; 顺序存储结构:在(子)程序的说明部分就必须加以说明,以便分配固定大小的...
Pascal基本教程(2014学生版)
Pascal基本教程(2014学生版)_数学_初中教育_教育专区。名师文件辅导,效果明显,配...IOI(国际奥林 匹克信息学竞赛)把 Pascal 语言作为三种程序设计语言之一, NOI(...
noip2014年第二十届全国青少年信息学奥林匹克联赛初赛提高组题目(pascal版)参考答案
noip2014年第二十届全国青少年信息学奥林匹克联赛初赛提高组题目(pascal版)参考答案_学科竞赛_高中教育_教育专区。noip2014年第二十届全国青少年信息学奥林匹克联赛...
第八届全国青少年信息学奥赛初赛试题普及组PASCAL语言
第八届全国青少年信息学奥赛初赛试题普及组 PASCAL 语言一.选择一个正确答案代码(A/B/C/D,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1)微型...
更多相关标签:
pascal语言教程整理版 | free pascal中文版 | pascal程序设计 第2版 | pascal语言小学版下载 | pascal整理版 | pascal语言整理版 | pascal语言小学版 | pascal中文版 |