信息学奥林匹克竞赛培训教案(校本课程)

信息学奥林匹克竞赛培训教案(校本课程)

2023年7月28日发(作者:)

信息学奥林匹克竞赛培训教案

第1章 计算机的发展与应用

1.1 计算机发展简史

1.1.1 第一台电子计算机的诞生

1946年,世界上第一台数字式电子计算机由美国宾夕法尼亚大学的物理学家约翰·莫克利(John Mauchly)和工程师普雷斯伯·埃克特(PresperEckert)领导研制成功,取名为ENIAC(Electronic Numerical Integrator And Calculator)。它可以在1秒进行5000次加减运算,3毫秒便可以进行一次乘法运算,能存储20个字长为10位的十进制数。

1.1.2 计算机发展的几个阶段

主要电子器件

内存

外存储器

第一代

(1946~1958)

电子管

汞延迟线

第二代

(1958~1964)

晶体管

磁芯存储器

第三代

(1964~1975)

第四代

(1975~至今)

中小规模集成电大规模/超大规模路 集成电路

半导体存储器

磁带、磁盘

几千万条

半导体存储器

磁盘、光盘等大容量存储器

数亿条以上

穿孔卡片、纸带 磁带

几百万条 处理速度(指令数几千条

/秒)

第四代计算机以大规模集成电路VLSI为计算机的主要功能部件,用16K、64K或集成度更高的半导体存储器作为主存储器。

新机器要继承原有机器指令系统中的全部指令,使得同一系列计算机的指令系统越来越复杂,这些计算机被称为“复杂指令系统计算机”,简称CISC。

日趋庞大的指令系统降低了系统性能,而机器中最常常的是一些简单指令,这些指令仅占指令系统中指令总数的20%,1975年提出了精简指令系统,简称RISC。

冯·诺依曼型计算机是采用存储程序方式进行工作。

研制中的第五代计算机,是一种智能计算机,具有自动识别自然语言、图形、图像有能力,具有理解和推理能力,具有知识获取、知识更新能力。研制朝两个方向努力:①创建非冯·诺依曼式语言,LISP、PROLOG、F.P.;②创建以人脑神经系统处理信息的原理为基础的非冯·诺依曼式的计算机模型,生物计算机、光子计算机、量子计算机。

1.2 计算机对现代社会的影响

1.2.1 计算机应用概述

1、科学计算:利用计算机解决科学研究和工程技术中所提出的复杂的数学问题。

2、数据处理:利用计算机对所获取的信息进行记录、整理、加工、存储和传输等。

3、人工智能:利用计算机来模仿人类的智力活动。

4、自动控制:利用计算机对动态的过程进行控制、指挥和协调。

5、计算机辅助设计和制造:利用计算机来辅助工程师们设计和制造产品。

1.2.2 由信息高速公路热引发的全球信息化浪潮

在现代,能源、材料与信息是社会发展的三大支柱。

以蒸汽机为中心的动力革命,使人类的体力劳动大大得到了解放;以电子信息技术为先导、以计算机和现代通信产业为代表的信息革命使人类的脑力劳动得到解放。

社会发展到每一阶段,都需要有相应的基础设施作支持。在农业社会,田地是社会的基础设施;19世纪进行的工业革命时代,很多国家通过建设高速公路和铁路等交通运输方面的基础设施取得了经济飞速发展;而在信息化时代,信息高速公路就自然成为国家重要的基础设施。 1993年美国国家信息基础设施计划提出了一个具有大容量、高速度的电子数据传递系统。该系统由通信网络、信息设备、信息资源和信息环境组成。

语言是交流的工具,人与人交流要用语言,其它动物之间交流也有特定的动物的语言,人与计算机交流就要用到一些符号,这些符号的集合形成了计算机的语言。

计算机语言有一个发展过程,从机器语言开始,然后是汇编语言,现在则使用高级语言.机器语言和汇编语言属于低级语言,计算机容易懂,但人理解起来困难.高级语言人比较容易理解,因此使得计算机得以普及,当然这是指60年代.实际上,随着应用软件的发展,现在人们连语言也不用学了,也可以使用计算机,而且使用的很好.

当然,高级语言,人虽然容易懂,但计算机又不懂,因此需要翻译.所以高级语言都提供了编译系统或解释系统或集成的开发系统,对高级语言进行翻译,使得计算机能够识别并运行程序.高级语言还在发展,比如面向对象的语言,可视化的语言,网络开发语言等.

机器语言和汇编语言也可以称为低级语言.不要认为有了高级语言,低级语言就可以不用了.恰恰相反,在有些领域,低级语言更有用武之处,如控制领域,电子信息领域.因为这些领域对语言运行的速度和效率更感兴趣,这正是低级语言的特点.

上述语言都称为形式化的语言,与之相对应的是自然语言,也就是人使用的语言.人与计算机之间能否通过自然语言交流呢?这个恐怕很难.因为按照现在计算机的原理,计算机只有执行程序才能够工作,语言就是用于编出程序来,指挥计算机的工作,没有程序,计算机就不能工作.除非在人与计算机交流时,计算机能把人的语言翻译成程序,否则,人与计算机之间永远也不能实现用自然语言进行交流.而目前这是不太可能的.要么就是改变现在计算机的结构,改变现在计算机的运行模式,那样的话,计算机就要真正的实现更新换代了.

第1课 认识PASCAL语言

请参阅《全国信息学奥林匹克联赛培训教程(一)》P87

第5章 程序设计语言

5.1 程序设计语言基础

5.1.1 程序设计语言的组成

PASCAL语言是一种高级语言。

让我们先来看一个PASCAL程序,通过这个程序了解PASCAL的规则。

例L1_1 已知半径,求圆周长和面积的程序

PROGRAM circle(input,output); (* 第1行:程序首部 *)

{已知半径求圆周长和面积}(* 第2行:注释 *)

CONST(*第3行:常量说明*)

PI=3.14159;

VAR(*第5行:变量说明*)

r,l,s:real;

BEGIN(*第7行:语句部分*)

read(r); (*第8行:输入语句*)

l:=2*PI*r; (*第9行:赋值语句*)

s:=PI*r*r;

write(r,l,s); (*第11行:输出语句*)

END. (*第12行:语句部分以END.结束*)

程序的第一行为程序首部,每个PASCAL程序都必须以PROGRAM 开头;circle是本程序的名字,每个程序的名字可以不同;圆括号里的内容称为程序的参数,程序参数指明程序与外部联系的文件名,input是标准输入文件,例如键盘打字机,output是标准输出文件,指屏幕显示器或打印机,为了读入数据和输出结果,必须写上文件参数input和output。

从第三行到最后一行为程序的分程序。分程序一般由说明部分和语句部分构成。 说明部分可以包括多种类型的说明。此例包括以CONST开始的常量说明和以VAR开始的变量说明,常量说明必须以CONST开始,变量说明必须以VAR开始。

语句部分必须以BEGIN开始,以END.结束,特别注意其中的小圆点(.)不可缺少。中间是一些用分号分开的语句。

一个PASCAL程序由程序首部和分程序组成,分程序通常由说明部分和语句部分组成(在特殊情况下可以没有说明部分)。

PROGRAM circle(input,output);

CONST

PI=3.14159;

VAR

r,l,s:real;

BEGIN

read(r);

l:=2*PI*r;

s:=PI*r*r;

write(r,l,s);

END.

上例的第二行,大括号{ }中的内容,称为注释。被小括号及星号(* *)括起来的内容也是注释。注释除了给人看,以增加程序的可读性外,对编译和运行都不起作用,一个程序可以包含多个出现在不同地方的注释,也可以没有注释。

程序的书写格式:

1、PROGRAM写在最左边顶格;

2、注释的大括号{、和CONST、VAR、BEGIN、END等语句上下对齐,且它们比PROGRAM向右移两个字符;

3、各个语句和程序语句也是上下对齐,它们比第2点中的各语句又向右移两个字符;

4、使用大写字母的语句:PROGRAM、CONST、VAR、BEGIN、END;

5、使用大写字母的标识符:常量标识符。

例 L0_001 输入三角形底边和高,求该三角形的面积。写出程序。

第二课 PASCAL的数据类型、标识符、表达式、语句

PASCAL的数据类型

数据对于一门程序语言是非常重要的,数据的一个非常重要的特征就是它的类型。PASCAL规定:程序中出现的变量必须先说明才能使用。

PASCAL的标准数据类型

数据类型

实型

类型标识符 适用的数据

real

举例

有小数表示法和指数表示1.25,132.67,0.0025,-1.56

法(科学表示法) 1.3267e+2(=1.3267×102=132.67)

包括正、负整数和零

单个的字符

25,-32,0

‘A’,’b’,’C’,’0’,’4’,’+’

整型

字符型

布尔型

integer

char

boolean 只有现个值,即true(真)

和false(假) 1、实型(real)实型是最常用的数据类型。

在PASCAL,实数有两种表示方法:小数表示法和指数表示法(或称科学表示法)。

1.25,132.67,0.0025,-1.56,0.0,100.0

以科学表示法表示这些数,可以写成

1.25e0,1.3267e+2,2.5e-3,-1.56e0,0e0,1e2

在科学表示法中,e后的数字代表10的幂。上列各数可以解释成:

1.25e0=1.25×100=1.25,1.3267e+2=1.3267×102=132.67,2.5e-3=2.5×10-3=0.0025,-1.56e0=-1.56×100=-1.56,0e0=0×100=0.0,1e2=1×102=100.0

2、整型(integer)

整型数包括正、负整数和零。例如:25,-32,0。在整数中不得包括不数点(.)。

3、字符型(char)

字符型数是括在两个单引号中的一个字符。例如:

‘A’,’b’,’C’,’0’,’4’,’+’,’*’,……

‘’代表空字符

‘’’’代表字符’

‘abc’不是字符型数,因为单引号中只能有一个字符。

所有字符都有一个序号与之对应。如‘0’对应48,‘1’对应49,‘A’对应65,‘B’对应66。

与字符有关的几个函数

函数

ord()

chr()

pred()

succ()

功能

返回与字符对应的序号

返回与数字对应的字符

返回前一字符

返回后一字符

举例

ord(‘A’)=65

chr(65)=’A’

pred(‘B’)=A

succ(‘A’)=B

用函数可取得对应的序号,用

4、布尔型(boolean)

布尔类型的值只有两个:false(假)和true(真)。且false的序号为0,true的序号为1。

用于布尔量的运算有布尔运算(或称逻辑运算),它们是:

AND(与),OR(或),NOT(非),基本运算规则如下:

运算

0 AND 0

0 AND 1

1 AND 0

1 AND 1

0 OR 0

0 OR 1

1 OR 0

1 OR 1

NOT 0

结果

假 AND 假 0

假 AND 真 0

真 AND 假 0

真 AND 真 1

假 OR 假

假 OR 真

真 OR 假

真 OR 真

NOT 假

0

1

1

1

1

false

false

false

true

false

true

true

true

true

真 NOT 1 NOT 真 0 false 假

例L0-002 写出下列PASCAL语句的执行结果

A0:=(1>5);

A1:=(1<5);

writeln(A0 AND A0);

writeln(A0 AND A1);

writeln(A1 AND A0);

writeln(A1 AND A1);

writeln(A0 or A0);

writeln(A0 or A1);

writeln(A1 or A0);

writeln(A1 or A1);

标识符

标识符是以字母开头的字母、数字组合,用来表示常量、变量、类型、文件、函数、过程或程序的名字。

x,y,max,min,sum,a15,a3b7都是合法的标识符。而

5x,x-y,α,π,ε,ex10.5都是非法的标识符。

标识符的长度一般不要超过8个字符。

标识符的选取最好有一定意义,这样便于记忆,也增加了程序的可读性。

表达式和运算符

运算符

+ , - , * , /

AND,OR,NOT

,,,,,,,,,,,,,,,,,,,

表达式就是将数据和运算符结合使用,组成一组有意义的运算式。

在PASCAL语言中规定,表达式按下列运算优先规则计算:

1、所有括起来的子表达式必须先计算,且子表达式必须从里到外计算;

2、在同一子表达式中的运算符按下列次序计算:

①函数;②NOT;③AND,*,/,DIV,MOD;④OR,+,-;⑤<,<=,=,>,>=,<>

3、在同一个子表达式中,同一优先级的运算按从左到右的次序进行。

下面是几个PASCAL表达式的例子:

例L0_003

数学表达式

b2-4ac

a2+bx+c

常用的函数

词汇 功能

PASCAL表达式

b*b-4*a*c

(a+b)/(c+d)

(a+b)/c+d

a*b/(c*d)或a*b/c/d

abs 绝对值

sqr 平方

sqrt 开方

ord 取序号 参数为字符型变量,结果为该字符的序号(整型)

chr 取字符 参数为整型变量,结果为以参数为序号的字符

pred 前导字符

succ 后继字符

odd 奇函数,判断是否为奇数 参数为整型变量,结果为布尔型

trunc 去掉小数部分,取其整数

round 四舍五入,取其整数

exp 以e为底的指数

ln 以e为底的自然对数

函数的格式

例:开方函数, 在PASCAL中可表示为sqrt(2)

语句

赋值语句(:=)

读语句(read,readln)

当实型数据和字符型数据一起读入时,要先读字符型数据。

例如a、b、c为实型变量,ch1、ch2、ch3为字符型变量,可以写如下语句:

read(ch1,ch2,ch3,a,b,c)

不能写成:

read(a,b,c,ch1,ch2,ch3)

写语句(write,writeln)

write语句是写语句(或称输出语句)。用于将计算结果通过屏幕或打字机输出给人看。

例如:

write(sum,ave)

将在屏幕或打字机上输出sum和ave的值。

它的一般形式是

write(<输出表>)

其中输出表是一些由逗号分开的输出项。例如:

write(x,y,x+y,x*y)

若x的值为2,y的值为3(整数类型),则输出结果为:

2 3 5 6

为了标记输出结果,可输出相应的字符串。例如将上面的语句改为:

write(‘x=’,x,’y=’,y,’x+y=’,x+y,’x*y=’,x*y)

则输出结果为:

x=2 y=3 x+y=5 x*y=6

显然,现在的输出结果,较前面清楚。

为了将输出结果打印在不同的行上,可以利用writeln语句。它的作用是在印出输出表的最后一个输出项后,结束当前输出行,使得下一个write(或writeln)语句从下一个新行的开头(左端)输出。例如:

writeln(‘x=’,x,’y=’,y);

writeln(x+y=’,x+y,’x*y=’,x*y)

输出结果为:

x=2 y=3 x+y=5 x*y=6

write语句可以输出实型、整型、字符型、布尔型值,也可以输出字符串。若在write语句中不加场宽说明,则按标准场宽输出。在这里,场宽是指输出值的位数。

数据类型

实型

整型

字符型

布尔型

场宽

以科学表示法输出,占16位

12位

1位

输出true或false,分别占5位和4位

当输出值不满规定场宽时,左面用空格代替。不同计算机系统的标准场宽规定可能不同。

-1.e+02 13257Afalse

实型16位整型12位字符型1位布尔型5位

例L2_2 已知三角形的两边及夹角,求第三边及面积。

设三角形的两边及夹角分别为a,b,α,第三边为c,面积为s。

则 ,

若α以角度值输入,在计算sin和cos时应转换为弧度。角度转弧度的公式为:

弧度=角度×

PROGRAM XT2_2;

CONST

PI=3.14159;

VAR

a,b,alfa,c,s:real;

BEGIN

read(a,b,alfa);

alfa:=alfa*PI/180;

c:=sqrt(a*a+b*b-2*a*b*cos(alfa));

s:=1/2*a*b*sin(alfa);

write(alfa,c,s);

END.

例L2_3 输入一个字符,求其序号、前导(即前一字符)、后继(即后一字符)。

PROGRAM L2_3;

VAR

ch,pch,sch:char;

num:integer;

BEGIN

writeln;

writeln;

write('Please input a character:');

readln(ch);

write('pch:',pred(ch),',sch:',succ(ch),',num:',ord(ch))

END.

例L2_4 输入x,y。若在圆环内,输出true,若在圆环外,;输出false。圆环如图所示。 讨论:如图所示,若下式

1≤x2+y2≤4

成立则在圆环内,否则在圆环外。

设布尔变量bool,当x,y在圆环内时,让它取值为true,否则取值为false。

Xy120

“(x,y)若在圆环内”的表达式:(x2+y2≥12)且(x2+y2≤22)

PROGRAM L2_4;

VAR

x,y:real;

bool:boolean;

BEGIN

writeln;

write('x=?');

readln(x);

write('y=?');

readln(y);

bool:=(x*x+y*y>=1) and (x*x+y*y<=4);

write(bool);

END.

习题

XT1_1 判断下列标识符,哪些是合法的?哪些是非法的?

x3,3x,a17,p5q,π,β,ε,abcd,x2,ex9.5

XT1_2 输入三个数,计算并输出它们的平均值以及三个数的乘积,写出程序。

XT1_3 已知地球半径为6371km,计算并输出地球的表面积和体积,写出程序。球表面积计算公式s=4πR2 ,球体积计算公式 (其中R指球半径)。

XT1_4 已知匀加速运动的初速度为10m/s,加速度为2m/s2,求20s以后的速度,20s内走过的路程及平均速度,写出程序。

设初速度为v0,加速度为a,时间为t,末速度为vt,路程为s,平均速度为vave,求末速度公式:vt=v0+at,路程的公式: ,平均速度为vave=

XT1_5 读入摄氏温度c,将它转换成华氏温度 输出,写出程序。转换公式:

XT2_1 下列数据哪些是整数?哪些是实数?哪些是非法的数?

256,2.50,1e+06,2.2e5,e10,-785,e-5,

.5,15.,15.0,0.12,0,0.0,25e,

XT2_2 确定下列各常数、表达式的类型和值,表达式类型是指表达式值(结果)的类型。

‘A’,’3’,3,true,false,

12/3,12 DIV 3,5>3,5<3,

105 MOD 10,round(17/3,trunc(17/3),

sqrt(ord(‘2’)-ord(‘0’)),

sqr(ord(‘2’)-ord(‘0’)),

(5>3) AND (5<3),chr(67) XT2_3 将下列数学表达式表示成PASCAL表达式

(1)-(a2+b2)·y4 (2)sin2(x+0.5)+3cos(2x+4)+tan-1x (3)u0(1+e-0.5t)

(4) (5) (6)

(7) (8)|3-exln(1+x)| (9) (10)

XT2_4 写一程序读入三角形的三个边a,b,c,计算并打印三角形的面积S。可利用下列公式计算。

XT2_6 输入二次方程的系数a,b,c(输入数据的选取应保证二次方程为实根),计算并输出二次方程的两个实根。二次方程为:

ax2+bx+c=0

XT2_7 求图形的表面积与体积。其中r,h1,h2的值由键盘读入。,,

XT2_8 输入三个字符,然后按输入字符次序输出这三个字符,再输出每个字符的序号,最后按与输入字符相反的次序输出这三个字符。

XT2_9 由键盘输入两组x,y值,由程序根据它们是否在示意图中的斜线区域内,输出不同的值。若在斜线区域内,输出true,否则输出false。

XT2_10 输入一个三位整数,将它们反向输出。例如输入127,输出应为721。

第3课 选择结构程序设计()

请参阅《全国信息学奥林匹克联赛培训教程(一)》P101

5.3.3 选择结构

3.1 引言

通常,计算机按在程序中书写的顺序执行语句。然而,在许多情况下,语句执行的顺序依赖于输入数据或中间运算结果。在这种情况下,必须根据某个变量或表达式的值作出判定,以决定执行哪些语句和跳过哪些语句不执行。我们称这种程序结构为选择结构(或称判定结构)。

PASCAL中有两个语句可实现选择结构:IF语句(条件语句)和CASE语句(情况语句)

3.2 IF语句

3.2.1 IF语句的两种形式

IF语句又称如果语句(或称条件语句)。它的一般形式是

IF (条件)

THEN (语句1)

ELSE (语句2)

其中“条件”实际上是一个布尔表达式,它的值可以是真(true)或假(false)。在条件为真时,执行语句1,否则(条件为假)执行语句2。

可以利用流程图来描述选择结构。

在流程图中用菱形框表示要执行的判定,其余步骤用矩形框表示,箭头表示执行的顺序。

例L3_1 火车托运行李,要根据行李的重量按不同标准收费。例如不超过50kg,按每公斤0.35元收费。若超过50kg,则其中50kg按每公斤0.35元收费,其余超过部分按每公斤0.50元收费。现输入托运行李重量,要求计算并输出托运费。

解:

讨论:设托运行李重量为weight,该问题要求根据weight是否超过50kg,按不同公式计算出托运费。设托运费为pay。weight和pay均为实型。

下面给出算法。

一级算法 1、读入weight的值。

2、根据weight的大小选择不同的公式计算pay。

3、输出pay。

其中第2步需求精。根据题意,可以写出计算pay的公式如下:weight≤50 weight>50

第2步 计算pay

2-1 如果weight≤50

2-2 则pay=weight×0.35

2-3 否则pay=50×0.35+(weight-50)×0.5

以上求精步骤要求首先判断weight是否小于等于50。如果小于等于50应执行算法步骤2-2,否则应执行算法步骤2-3。即算法步骤2-2和2-3不是同时执行的,需根据情况选择其一执行。

PROGRAM L3_1;

VAR

weight,pay:real;

BEGIN

write('weight=');

readln(weight);

IF weight<=50

THEN pay:=0.35*weight

ELSE pay:=0.35*50+0.5*(weight-50);

writeln('pay=',pay)

END.

除了上面给出的IF语句形式外,PASCAL中还有另外一种IF语句形式。即

IF (条件)

THEN (语句)

在条件为真时,执行THEN后的语句。在条件为假时,不执行THEN后的语句,在两种情况下的后继语句都是IF语句的下一个语句。

例L3_2 读入三个数,找出并打印其中的最大数。

解:

PROGRAM L3_2;

VAR

a,b,c:real;

BEGIN

write('a=?');

read(a);

write('b=?');

read(b);

write('c=?');

read(c);

IF a

THEN a:=b;

IF a

THEN a:=c;

writeln('ZuiDaShu:',a) END.

3.2.2 复合语句

在IF语句中,跟在THEN或ELSE后的语句可能不止一个,这时要用到复合语句的概念。

复合语句是一个以BEGIN开始,以END结束的语句。在BEGIN与END之间可以包括若干个语句,每个语句之间以分号分开。一般形式为:

BEGIN

(语句1);

(语句2);

(语句n)

END

一个复合语句从外部看来,相当于一个语句。

例L3_3 读两个数,将大数存于x,小数存于y。

解:

PROGRAM L3_3;

VAR

x,y,temp:real;

BEGIN

write('x=?');

readln(x);

write('y=?');

readln(y);

IF x

THEN BEGIN

temp:=x;

x:=y;

y:=temp

END;

writeln('x=',x:8:2,',y=',y:8:2)

END.

3.2.3 复合IF语句

在IF语句中,THEN或ELSE后的语句本身也可能是IF语句。此时称为IF语句的嵌套(或称为复合IF语句)。

例如语句

IF(条件1)

THEN(语句1)

ELSE IF(条件2)

THEN(语句2)

ELSE(语句3)

就是一个复合IF语句,在它的ELSE后又是一个IF语句。

例L3_4 输入某学生成绩,根据成绩的好坏输出相应评语。如果成绩在90分以上,输出评语:优秀(outstanding);如果成绩在60到90之间,输出评语:良好(satisfactory);如果成绩不足60分,输出评语:不及格(unsatisfactory)。

有时IF语句可能会有两种不同的理解。例如语句:

IF (条件1)

THEN IF (条件2) THEN (语句1)

ELSE (语句2)

我们可以认为ELSE与后一个THEN配对,其流程图如图3_8(1)所示。

但是,我们也可以认为ELSE与前一个THEN配对,其流程图如图3_8(2)所示。

为了避免产生不同的理解,PASCAL系统规定ELSE总是与同一层前面最靠近它的,还没有ELSE与之配对的THEN配对。因此,上面的语句肯定是按第一种理解,即ELSE与后一个THEN配对。

如果要求按第二种理解执行流程图,可以通过在IF语句中加BEGIN、END的办法来实现。写成

IF(条件1)

THEN BEGIN

IF(条件2)

THEN(语句1)

END

ELSE(语句2)

3.3 CASE语句

CASE语句是实现选择结构程序设计的另一种语句。它的使用有时比IF语句来得简单、直观。

CASE语句(或称情况语句)的一般形式是

CASE (表达式) OF

(值表1):(语句1);

(值表2):(语句2);

……

(值表n):(语句n)

END

在CASE语句头上的表达式必须是有序类型(整型、字符型、布尔型以及后面要介绍的枚举型、子界型)。值表是一些由逗号分开的常数。表达式所有可能的值必须在值表中出现,且每个值只能出现一次。

如果当前表达式的值在某个值表i中出现,则该程序只执行对应该值表i的语句,然后执行整个CASE语句后的下一语句。

例L3_5 输入年、月,输出该月有几天。

讨论:每年的1、3、5、7、8、10、12月,每月有31天;4、6、9、11月,每月有30天;2月闰年有29天,平年有28天。

年号能被4整除,但不能被100整除,或者年号能被400整除的年均是闰年。

用year、month、days分别表示年、月、每月天数。它们均为整数。

闰年的条件可以写成如下的布尔表达式:

(year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0)

PROGRAM L3_5;

VAR

year,month,days:integer;

BEGIN

write(‘year=?’);

readln(year);

write(‘month=?’);

readln(month);

CASE month OF 1,3,5,7,8,10,12:days:=31;

4,6,9,11:day:=30;

2:IF(year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0)

THEN days:=29

ELSE days:=28

END;

writeln(‘year=’,year,’,month=’,month,’,days=’days)

END.

例L3_6 输入两个运算量及一个运算符,输出运算结果。这相当于计算器计算。

讨论:设两个运算量为x和y,一个运算符为oper,运算结果为result。

现在假定运算符只可能是+、-、*、/,将oper说明为字符型。x、y和result说明为实型。

习题

XT3_1 编制程序,根据输入的x值,计算y与z并输出。

PROGRAM XT3_1;

CONST

PI=3.14159;

VAR

x,y,z:real;

BEGIN

write('x=?');

read(x);

IF x<=2.5

THEN y:=x*x+1

ELSE y:=x*x-1;

IF x<0

THEN z:=-PI/2*x+3

ELSE IF x=0

THEN z:=0

ELSE z:=PI/2*x-5;

writeln('x=',x:6:2,', y=',y:6:2,', z=',z:6:2)

END.

XT3_2 对一批货物征收税金,价格在1万元以上的货物征税5%,在5000元以上,1万元以下的货物征税3%,在1000元以上,5000元以下的货物征税2%,1000元以下的货物免税。编写一程序,读入货物价格,计算并输出税金。

XT3_3 输入某学生成绩,若成绩在85分以上,输出very good,若成绩在60分到85分之间,输出good,若成绩低于60分,输出no good。

XT3_4 输入3个数,将其中最小数输出。

XT3_5 输入3个字母,按字母表顺序从小到大输出这3个字母。

提示:PASCAL不能表示复数。若为复根,应分别计算并输出实、虚部,在输出时将+、-与i用字符形式输出。

XT3_7 输入x、y,根据所处象限,用相应公式计算z。

XT3_8 输入x、y及象限,计算z。z的计算公式同XT3_7题,要求用CASE语句编程序。 XT3_9 输入班号,输入该班学生人数。应用CASE语句编程序。

班号

人数

91

30

92

32

93

30

94

30

95

32

96

25

阅读学习《全国信息奥林匹克联赛培训教程(一)》(信息学奥林匹克科学委员会主编,清华大学出版社)及网上教案,阅读要求见下表:

阅读内容 页 码 要求

全看 5.2 Pascal程序的一《全国信息奥林匹克联赛培训教程(一)》P94

般结构和输入输出语句

5.3.2 顺序结构

5.3.2 选择结构

《全国信息奥林匹克联赛培训教程(一)》P100

《全国信息奥林匹克联赛培训教程(一)》P101

全看

看1、条件选择结构P101至P104

全看

全看

看1、整型;2、布尔类型;4、字符类型;6、实数类型

5.4.1 运算对象的显《全国信息奥林匹克联赛培训教程(一)》P116

式定义

5.4.2 表达式 《全国信息奥林匹克联赛培训教程(一)》P120

5.4.3 Pascal的简单《全国信息奥林匹克联赛培训教程(一)》P121

类型

CHH信息学奥赛培/TuoZhan/NOI/kwtz_ 全看

训教案()

阅读后完成下面题目

1、Pascal程序可以分为三个部分,请将这三个部分的名称填入下面括号中

PROGRAM circle(input,output);

CONST

PI=3.14159;

VAR

r,l,s:real;

BEGIN

read(r);

l:=2*PI*r;

s:=PI*r*r;

write(r,l,s);

END.

2、完成下面有关数据类型的表

数据类型

实型

字符型

小数表示法

类型标识符 举2个例子

integer

boolean

科学表示法

小数表示法 科学表示法

3、请将下列实型数据用另一种表示法表示 例:12.5

132.67

0.0025

-1.56

5982.37

0.84

-0.0071

1.25e+1

1e+2

-3.05e+1

-2.509e-4

5.201e-2

3.8e+2

3.7e-3

3.05e0

4、在Pascal中,

有六个算术运算符,它们是_。有六个关系运算符,它们是__。有三个逻辑运算符,它们是_。

6、填出下面Pascal词汇所属类别(在“语句、函数、运算符、数据类型、符号”中选择其一)

序号 词汇

1

2

3

4

:=

abs

AND

BEGIN

类别

功能

绝对值

逻辑运算符“与”

分程序开始

序号 词汇

30

31

32

33

sqr

sqrt

succ

THEN

类别

功能

平方

开方

后继字符

条件语句IF…THEN…ELSE的一部分

FOR循环语句的一部分

去掉小数部分,取其整数

说明变量

循环语句WHILE

5

6

7

8

9

10

11

boolean

CASE

char

chr

CONST

DIV

DO

分支结构语句

取字符

定义常量

整数商

34

35

36

37

38

39

TO

trunc

VAR

WHILE

sin

cos

arctan

WHILE DO语句的40

一部分

条件语句IF…THEN…ELSE41

的一部分

结束分程序

以e为底的指数

FOR循环语句

IF条件语句

42

43

44

45

46

47

12

13

14

15

16

17

18

19

20

21

22

ELSE

END

exp

FOR

GOTO

IF

integer

ln

MOD

NOT

odd

+

-

*

/

<

<=

=

>=

>

<>

write

以e为底的自然对48

取余,整除后的余49

逻辑运算符“非” 50

奇函数,判断是否51

为奇数 23

24

25

26

27

28

29

OF

OR

ord

pred

real

round

分支结构语句CASE…OF的一部52

逻辑运算符“或”

取序号

前导字符

程序首部

53

54

55

56

57

writeln

read

readln

:

'

;

PROGRAM

四舍五入,取其整

2、在第1题例中,语句write与writeln有何不同__________________。

3、在第1题例中,哪些词属于保留字__________________。

5、将下列代数式写成Pascal的表达式(1)4×[(13-4)÷6] (2)a-(m-d)×4÷b+3y=A2

6、下列符号中,能作标识符的是:AI, Wang, 4D4g, IF, MAX, ABS, PI, SIN, ABS_1, Begin

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690511285a361660.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信