信息学奥林匹克竞赛培训教案.docx
- 文档编号:12657063
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:114
- 大小:400.26KB
信息学奥林匹克竞赛培训教案.docx
《信息学奥林匹克竞赛培训教案.docx》由会员分享,可在线阅读,更多相关《信息学奥林匹克竞赛培训教案.docx(114页珍藏版)》请在冰豆网上搜索。
信息学奥林匹克竞赛培训教案
信息学奥林匹克竞赛培训教案
(PASCAL语言)
第1章计算机的发展与应用
1.1计算机发展简史
1.1.1第一台电子计算机的诞生
1946年,世界上第一台数字式电子计算机由美国宾夕法尼亚大学的物理学家约翰·莫克利(JohnMauchly)和工程师普雷斯伯·埃克特(PresperEckert)领导研制成功,取名为ENIAC(ElectronicNumericalIntegratorAndCalculator)。
它可以在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年美国国家信息基础设施计划提出了一个具有大容量、高速度的电子数据传递系统。
该系统由通信网络、信息设备、信息资源和信息环境组成。
1.2.3我国的“三金”工程
1、金桥工程
即国家公用经济信息通信网络工程,是我国信息化建设的基础设施之一。
2、金关工程
是金桥工程的起步工程之一。
3、金卡工程
即电子货币工程,是金融电子化和商业流通现代化的重要组成部分。
语言是交流的工具,人与人交流要用语言,其它动物之间交流也有特定的动物的语言,人与计算机交流就要用到一些符号,这些符号的集合形成了计算机的语言。
计算机语言有一个发展过程,从机器语言开始,然后是汇编语言,现在则使用高级语言.机器语言和汇编语言属于低级语言,计算机容易懂,但人理解起来困难.高级语言人比较容易理解,因此使得计算机得以普及,当然这是指60年代.实际上,随着应用软件的发展,现在人们连语言也不用学了,也可以使用计算机,而且使用的很好.
当然,高级语言,人虽然容易懂,但计算机又不懂,因此需要翻译.所以高级语言都提供了编译系统或解释系统或集成的开发系统,对高级语言进行翻译,使得计算机能够识别并运行程序.高级语言还在发展,比如面向对象的语言,可视化的语言,网络开发语言等.
机器语言和汇编语言也可以称为低级语言.不要认为有了高级语言,低级语言就可以不用了.恰恰相反,在有些领域,低级语言更有用武之处,如控制领域,电子信息领域.因为这些领域对语言运行的速度和效率更感兴趣,这正是低级语言的特点.
上述语言都称为形式化的语言,与之相对应的是自然语言,也就是人使用的语言.人与计算机之间能否通过自然语言交流呢?
这个恐怕很难.因为按照现在计算机的原理,计算机只有执行程序才能够工作,语言就是用于编出程序来,指挥计算机的工作,没有程序,计算机就不能工作.除非在人与计算机交流时,计算机能把人的语言翻译成程序,否则,人与计算机之间永远也不能实现用自然语言进行交流.而目前这是不太可能的.要么就是改变现在计算机的结构,改变现在计算机的运行模式,那样的话,计算机就要真正的实现更新换代了.
第1课认识PASCAL语言
请参阅《全国信息学奥林匹克联赛培训教程
(一)》P87
第5章程序设计语言
5.1程序设计语言基础
5.1.1程序设计语言的组成
PASCAL语言是一种高级语言。
让我们先来看一个PASCAL程序,通过这个程序了解PASCAL的规则。
例L1_1已知半径,求圆周长和面积的程序
PROGRAMcircle(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程序由程序首部和分程序组成,分程序通常由说明部分和语句部分组成(在特殊情况下可以没有说明部分)。
上例的第二行,大括号{}中的内容,称为注释。
被小括号及星号(**)括起来的内容也是注释。
注释除了给人看,以增加程序的可读性外,对编译和运行都不起作用,一个程序可以包含多个出现在不同地方的注释,也可以没有注释。
程序的书写格式:
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)
整型
integer
包括正、负整数和零
25,-32,0
字符型
char
单个的字符
‘A’,’b’,’C’,’0’,’4’,’+’
布尔型
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()
返回与字符对应的序号
ord(‘A’)=65
chr()
返回与数字对应的字符
chr(65)=’A’
pred()
返回前一字符
pred(‘B’)=A
succ()
返回后一字符
succ(‘A’)=B
用函数可取得对应的序号,用
4、布尔型(boolean)
布尔类型的值只有两个:
false(假)和true(真)。
且false的序号为0,true的序号为1。
用于布尔量的运算有布尔运算(或称逻辑运算),它们是:
AND(与),OR(或),NOT(非),基本运算规则如下:
运算
结果
0AND0
假AND假
0
false
假
0AND1
假AND真
0
false
假
1AND0
真AND假
0
false
假
1AND1
真AND真
1
true
真
0OR0
假OR假
0
false
假
0OR1
假OR真
1
true
真
1OR0
真OR假
1
true
真
1OR1
真OR真
1
true
真
NOT0
NOT假
1
true
真
NOT1
NOT真
0
false
假
例L0-002写出下列PASCAL语句的执行结果
A0:
=(1>5);
A1:
=(1<5);
writeln(A0ANDA0);
writeln(A0ANDA1);
writeln(A1ANDA0);
writeln(A1ANDA1);
writeln(A0orA0);
writeln(A0orA1);
writeln(A1orA0);
writeln(A1orA1);
标识符
标识符是以字母开头的字母、数字组合,用来表示常量、变量、类型、文件、函数、过程或程序的名字。
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
数学表达式
PASCAL表达式
b2-4ac
b*b-4*a*c
(a+b)/(c+d)
(a+b)/c+d
a*b/(c*d)或a*b/c/d
a2+bx+c
常用的函数
词汇
功能
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(整数类型),则输出结果为:
2356
为了标记输出结果,可输出相应的字符串。
例如将上面的语句改为:
write(‘x=’,x,’y=’,y,’x+y=’,x+y,’x*y=’,x*y)
则输出结果为:
x=2y=3x+y=5x*y=6
显然,现在的输出结果,较前面清楚。
为了将输出结果打印在不同的行上,可以利用writeln语句。
它的作用是在印出输出表的最后一个输出项后,结束当前输出行,使得下一个write(或writeln)语句从下一个新行的开头(左端)输出。
例如:
writeln(‘x=’,x,’y=’,y);
writeln(x+y=’,x+y,’x*y=’,x*y)
输出结果为:
x=2y=3
x+y=5x*y=6
write语句可以输出实型、整型、字符型、布尔型值,也可以输出字符串。
若在write语句中不加场宽说明,则按标准场宽输出。
在这里,场宽是指输出值的位数。
数据类型
场宽
实型
以科学表示法输出,占16位
整型
12位
字符型
1位
布尔型
输出true或false,分别占5位和4位
当输出值不满规定场宽时,左面用空格代替。
不同计算机系统的标准场宽规定可能不同。
-1.256734121e+0213257Afalse
例L2_2已知三角形的两边及夹角,求第三边及面积。
设三角形的两边及夹角分别为a,b,α,第三边为c,面积为s。
则
,
若α以角度值输入,在计算sin和cos时应转换为弧度。
角度转弧度的公式为:
弧度=角度×
PROGRAMXT2_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输入一个字符,求其序号、前导(即前一字符)、后继(即后一字符)。
PROGRAML2_3;
VAR
ch,pch,sch:
char;
num:
integer;
BEGIN
writeln;
writeln;
write('Pleaseinputacharacter:
');
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。
“(x,y)若在圆环内”的表达式:
(x2+y2≥12)且(x2+y2≤22)
PROGRAML2_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,12DIV3,5>3,5<3,
105MOD10,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_5按下列公式计算和打印y值
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。
XT2_11输出你的中文(或英文)名字。
每个汉字(或字母用7行5列字符描述。
例如王平输出如图所示。
第3课选择结构程序设计(20071224)
请参阅《全国信息学奥林匹克联赛培训教程
(一)》P101
5.3.3选择结构
3.1引言
通常,计算机按在程序中书写的顺序执行语句。
然而,在许多情况下,语句执行的顺序依赖于输入数据或中间运算结果。
在这种情况下,必须根据某个变量或表达式的值作出判定,以决定执行哪些语句和跳过哪些语句不执行。
我们称这种程序结构为选择结构(或称判定结构)。
PASCAL中有两个语句可实现选择结构:
IF语句(条件语句)和CASE语句(情况语句)
3.2IF语句
3.2.1IF语句的两种形式
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的公式如下:
二级求精
第2步计算pay
2-1如果weight≤50
2-2则pay=weight×0.35
2-3否则pa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息学 奥林匹克 竞赛 培训 教案