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

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


信息学奥林匹克竞赛培训教案
第1章 计算机的发展与应用 1.1 计算机发展简史 1.1.1 第一台电子计算机的诞生 1946 年,世界上第一台数字式电子计算机由美国宾夕法尼亚大学的物理学家约翰 · 莫克利 (John Mauchly)和工程师普雷斯伯· 埃克特(PresperEckert)领导研制成功,取名为 ENIAC (Electronic Numerical In

tegrator 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 NOT 1 假 AND 假 假 AND 真 真 AND 假 真 AND 真 假 OR 假 假 OR 真 真 OR 假 真 OR 真 NOT 假 NOT 真 结果 0 0 0 1 0 1 1 1 1 0 false false false true false true true true true 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 PASCAL 表达式 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 ln

奇函数,判断是否为奇数 去掉小数部分,取其整数 四舍五入,取其整数 以 e 为底的指数 以 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.256734121e+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 课 选择结构程序设计(20071224) 请参阅《全国信息学奥林匹克联赛培训教程(一) 》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<b THEN a:=b; IF a<c 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<y 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 全看

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

5.4.2 表达式

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

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

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

CHH 信息学奥赛培 http://edu.jianlan.com.cn/TuoZhan/NOI/kwtz_NOIP.htm 全看 训教案(20071127) 阅读后完成下面题目 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、完成下面有关数据类型的表 数据类型 实型 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 类型标识符 举 2 个例子

4、在 Pascal 中, 有六个算术运算符,它们是_。有六个关系运算符,它们是__。有三个逻辑运算符,它们是_。 6、填出下面 Pascal 词汇所属类别(在“语句、函数、运算符、数据类型、符号”中选择其一) 序号 词汇 1 2 3 4 := abs AND BEGIN 绝对值 逻辑运算符“与” 分程序开始 类别 功能 序号 词汇 30 31 32 33 sqr sqrt succ THEN 类别 功能 平方 开方 后继字符 条 件 语 句 IF…THEN…ELSE

的一部分 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 FOR 循环语句的一 部分 去掉小数部分,取其 整数 说明变量 循环语句 WHILE

WHILE DO 语句的 40 一部分 条 件 语 句 IF…THEN…ELSE 41 的一部分 结束分程序 以 e 为底的指数 FOR 循环语句 IF 条件语句 42 43 44 45 46 47 以 e 为底的自然对 48 数 取余,整除后的余 49 数 逻辑运算符“非” 50 奇函数,判断是否 51 为奇数 分 支 结 构 语 句 CASE…OF 的一部 52 分 逻辑运算符“或” 取序号 前导字符 程序首部 四舍五入,取其整 数 53 54 55 56 57

12 13 14 15 16 17 18 19 20 21 22

ELSE END exp FOR GOTO IF integer ln MOD NOT odd

+ * / < <= = >= > <> write

23 24 25 26 27 28 29

OF OR ord pred PROGRAM real round

writeln read readln : ' ;

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


相关文章:
信息学奥林匹克竞赛培训教案(校本课程)
信息学奥林匹克竞赛培训教案(校本课程)_学科竞赛_高中教育_教育专区。信息学奥林匹克竞赛培训教案第1章 计算机的发展与应用 1.1 计算机发展简史 1.1.1 第一台...
信息学奥林匹克竞赛培训教案
信息学奥林匹克竞赛培训教案 (PASCAL 语言) 第 1 章 计算机的发展与应用 1.1 计算机发展简史 1.1.1 第一台电子计算机的诞生 1946 年,世界上第一台数字式...
信息学奥林匹克竞赛培训教案
信息学奥林匹克竞赛培训教案 (PASCAL 语言) 授课: Email:hao_ch@yahoo.com 第 1 章 计算机的发展与应用 1.1 计算机发展简史 QQ:651764546 1.1.1 第一台电...
信息学奥林匹克竞赛培训说明
信息学奥林匹克竞赛培训说明信息学奥林匹克竞赛培训说明隐藏>> 信息学奥林匹克竞赛培训说明: 信息学奥林匹克竞赛培训说明: 1、教材:可两本选一本 、教材: 建议...
学校信息学奥林匹克竞赛培训计划
为了体现学校信息技术教育特色,丰富学生第二课堂活动,向中学生普及计算机基础知 识,培养学生学习计算机的兴趣,信息科组计划举办信息学奥林匹克竞赛培训班,组织培训 ...
选修课《信息学竞赛》
信息学竞赛辅导 45页 1下载券 信息学竞赛模拟题 2...如何开展信息学奥林匹克... 29页 免费 朱全民-组合...广州外国语学校第二课堂校本课程《信息学竞赛》讲义 ...
霍山中学2013年信息学奥林匹克竞赛培训
6页 免费 信息学奥林匹克竞赛培训说... 2页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...
CHH信息学奥赛培训教案
信息学奥赛培训证 1页 免费喜欢此文档的还喜欢 信息学奥林匹克竞赛培训... 80...(信息学奥林匹克科学委员会主编,清华 》 大学出版社)及网上教案,阅读要求见下...
pascal竞赛辅导教案
赵宗昌校本课程教案(PASCA... 51页 5财富值 pascal_教案 177页 免费 [教案]...16 信息学奥林匹克竞赛辅导讲稿 上机作业: 习题集 p19 15、16 题 补充题: ...
更多相关标签:
初中数学校本课程教案 | 二年级校本课程教案 | 校本课程教案 | 三年级校本课程教案 | 一年级校本课程教案 | 小学校本课程教案 | 初中校本课程教案 | 四年级校本课程教案 |