信息学奥赛辅导讲座
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2分支结构程序设计
1.PASCAL中的布尔(逻辑)类型 (1)布尔型(Boolean)是一种数据的类型,这种类型只有两
种值,即"真"与"假"。 在Pasca"用false表示。布尔类型只有true与false两个常量。
注意:布尔类型变量不能直接用读语句输入。
号隔开。执行部分最后end 后面加一个句点,表示整个程序结束。 在程序中,用花括号(注释可以用{ }或(* *)来表示)括起来的内容是注释。
注释增加程序的可读性外,对程序编译和运行不起作用。一个程序可以包含多个 出现在不同处的注释,亦可无注释。注释的内容可根据需要书写。
1.常量 常量:在某个程序的整个过程中其值不变的量。 (1)常量定义:常量定义出现在说明部分。它的语法格式是: const <常量标识符>=<常量>; ... <常量标识符>=<常量>; 常量表识符的类型由定义它的常量的类型决定。
1. 程序首部 程序首部是程序的开头部分,它包括:⑴程序标志,用“program”来
标识“这是一个PASCAL 程序”。PASCAL规定任何一个PASCAL程序的首部 以此字开头。在Free pascal语言中,首部也可省略。⑵程序名称。由程 序设计者自己定义,如例中的ex_1。在写完程序首部之后,应有一个分号。
如write(1235:7);write('abcdeg':10) 输出结果: □□□1235□□□□abcdeg 对于标准实型数据指定单场宽时,如果场宽大于标准场宽时, 右靠齐按标准场宽格式输出17位,左留空格。若场宽小于标准 场宽时,第一位仍为符号位,最后四位仍为"E±nn",中间部 分为尾数显示部分。如果指定的宽度小于8位,则数据按8位格 式"*.*E±nn "输出。
(2)布尔运算及布尔表达式
Pascal还引入四种逻辑运算符:not、and、or、xor。它们分别相
当于数学上的"非"、"且"、"或"和“异或”的意义。
这四个运算符的运算对象为布尔量,其中not为单目运算,只有
一个运算对象,and、or和 xor为双目运算,有两个运算对象。它
们的运算真值表如下:
A:3>5 B:12<23
(3)赋值号右边出现的表达式,必须是可以求值的。 (4)赋值号两边的数据类型必须相同或相容。
2.输出语句 输出语句的作用是将程序运算的结果输出到屏幕或打印机等输 出设备。这里通常是指输出到屏幕。 输出语句的两种格式: (1)write语句 格式:write(表达式1,表达式2,……); 如:write(1,3,5); write('My name is wanghong'); (2)writeln语句 格式: writeln(表达式1,表达式2,……) 或writeln 输出语句的功能:
A
B
Not A A and B A or B A xor B
not A
false
false
true false
false
false
A and B
false
true
true false
ture
true
true
false
false false
true
true
A or B
true
true
false true
【例1】 计算半径为r的圆面积s
program ex_1(input,output); {程序首部}
const pi=3.14159; {说明部分}
var s,r:real;
begin
readln(r);
s:=pi*r*r;
{执行部分}
writeln('s=',s);
end.
{程序体}
一个PASCAL程序分为两个部分:程序首部和程序体。程序体包括说明 部分和执行部分两个部分。
计算机执行到某一输出语句时,先计算出输出语句中的每 个表达式的值,并将每一个表达式的值一个接一个地输出到屏 幕上。
3.带格式的输出语句 指定场宽,在写语句中输出项含有格式符号时,就是为了指定 场宽。 ⑴指定单场宽. 格式:write(表达式:n)或writeln(表达式:n) 其中n为自然数,指定单场宽后,所有数据不再按标准场宽输 出,而按指定场宽输出。若数据实际长度小于指定场宽时,则 一律"向右靠齐,左留空格"。
【例3-9】某一超市里卖某饮料,每瓶饮料1.8元钱,若数量超过10 瓶,则可打85折。
参考程序: program ex3_9;
var num:integer; price,t:real; begin write('num='); readln(num); price:=1.8; if num>10 then price:=price*0.85; t:=num*price; writeln('t=',t:0:2); end.
read(<变量名表>); readln(<变量名表>); 其中变量名表是用逗号隔开的若干个变量名组成的。 功能:键盘输入数据,并依次赋给相应的变量。
说明: ①read和readln是标准过程名,它们是标准标识符。 ②执行到read或readln语句时,系统处于等待状态,
等待用户从键盘上输入数据,系统根据变量的数据类型 的语法要求判断输入的字符是否合法。
分析:如三位数M=246 ; 百位上的数字可以用 m div 100来表 示,十位上的数字可以用 (m-a*100) div 10或 (m div 10) mod 10来表示,个位上的数字可以用 m mod 10来表示。
参考程序: program ex3_7(input,output);
var m,a,b,c:integer; begin readln(m); a:=m div 100; b:=(m-a*100) div 10; c:=m mod 10; writeln(‘a=’,a); writeln(‘b=’,b); writeln(‘c=’,c); end.
如果双场宽不能满足输出数据的最低要求, 系统自动突 破指定的场宽限制,按实际长度输出。
如: write(4.456719:0:4);输出为:4.4567
4. 输入语句(读语句) 在程序中变量获得一个确定的值,可以用赋值语句,但是 如果需要赋值的变量较多,或变量的值经常变化,则使用 本节介绍的输入语句──读语句,将更为方便。它有两种 格式。 读语句的一般格式:
3.1顺序结构程序设计
1.赋值语句 我们可以通过赋值语句给变量赋值。 赋值语句的格式: 变量名:=表达式; 其中":="称为赋值号。先计算赋值号右边表达式的值,然后将表 达式的值赋给赋值号左边的变量。如:a:=3+2; a:=a+2; 写赋值语句有以下几点要注意:
(1)赋值号“:=”由两个字符构成。刚刚写程序的同学要特别注 意这一点。 (2)在赋值号左边出现的变量,要在程序头的说明部先加以说明, 否则编译时出错。
2.变量 变量:在某个程序中的运行过程中其值可以发生改变的量; 变量说明:变量说明出现在说明部分。它的语法格式是: var <变量标识符列表>:<类型>; ... <变量标识符列表>:<类型>; 其中,保留字var表示开始一个变量说明部分。变量标识符列表是一 个用逗号隔开的标识符序列,冒号后面的类型是变量类型标识符。每 个变量说明都以分号结束。 例如: var r,s,q:integer; a,b:real; x1,x2:char;
3.IF语句的嵌套
在if语句中,如果then子句或else子句仍是一个if语句, 则称为if语句的嵌套。 (1)if语句嵌套在then子句中。 一般形式: if 条件1 then
if 条件2 then 语句2(1) else 语句2(2)
else 语句1(2);
pascal规定:else与它上面的距它最近的尚未与其它else配对的 if……then相匹配。所以内层的else子句不能省略。解决的办法 就是写一个空语句或者采用复合语句。即用语句括号 (begin……end)括起 。
⑤readln语句与read语句的第二个区别是:read 后一定要有参数表,而 readln可以不带参数表,即可以没有任何输入项, 只是等待读入一个换 行符(回车)。经常用于暂停程序的运行,直到输入一个回车。
练习: 编一程序,输入三角形的三边a、b、c(假设这三边可以构成 一个三角形),求三角形的面积S? (提示:可利用海伦公式
例如:const b=100 隐含说明b是整型;const pi=3.14159 隐含说明pi 是实型......
常量定义部分必须以保留字const开头,可以包含一个或几个常量定义,而 且每个常量都以分号结束。
(2) Pascal类型常量 类型常量,又称变量常数,类型常量定义的语法格式: const <简单类型常量标识符>:简单类型=常数; 例如: const counter:integer=0; flag:boolean=true; index:0..100=0;
Progam lx1(input,output); Var a,b,c,p,s:real; Begin Readln(a,b,c); P:=(a+b+c)/2; S:=sqrt(p*(p-a)*(p-b)*(p-c)); Writeln(‘s=’,s); End.
【例3-6】输入一个三位数,分离出这个数的百位数、十 位数和个位数,并单行输出各个数字。
read(a,b); read(x,y); 如果输入数据行如下: 1□2□3□4□5□←┘ 则a,b,x,y的值分别为1,2,3,4,如果后面无读语句则数据5是多余的,这 是允许的。(其中"←┘"表示回车键。下同。) readln则不同,在读完本readln语句中变量所需的数据后, 该数据 行中剩余的数据多余无用,或者说,在读完本readln语句中变量所需数 据后,一定要读到一个回车,否则多余的数据无用。
true
false
A xor B
运算的优先顺序为:括号——函数——not——*、/、div、mod、 and——+、-、or、xor——关系运算。
2.IF语句 IF语句有两种格式 格式一: if 条件 then 语句1; 功能: 若条件成立(为true)则执行then后面的语句1,否则执行 if语句的下一条语句。 格式二: if 条件 then 语句1 else 语句2; 功能:若条件成立(为true)则执行then后面的语句1,否则执行 else后面的语句2; 注意:格式二的then 语句1后无";"号。 其中if 、 then 、else是保留字。条件一般是布尔表达式、布尔变 量、关系表达式。
③在输入数值型(整型或实型)数据时,数据间要用 空格或回车分隔开各个数据,输入足够个数的数据,否 则仍要继续等待输入,但最后一定要有回车,表示该输 入行结束,直到数据足够,该读语句执行结束,程序继 续运行。
④read语句与readln语句的第一个区别是: read语句是一个接一个地读数据,在执行完本read语句后,下一个读语 句接着从该数据输入行中继续读数据,也就是说,不换行。如:
⑵指定双场宽 如果输出项是实数时,如果希望输出的实数不用科学记
数法输出,而用小数形式输出,可以用指定双场宽方法输出。 双场宽输出格式为:write(实型表达式:m:n)
其中m和n都是自然数,m 用以指定整个数据所占的宽度,n 指定输出实数的小数位数。 如 : write(4.456719:9:4); 输出:□□□4.4567
信息学奥赛辅导讲座
Pascal语言程序设计基础
PASCAL语言是一种结构化的程序设计语言,是信 息学奥林匹克竞赛规定的程序设计语言之一。
任何程序设计语言都有着一组自己的记号和规则。 PASCAL语言同样必须采用其本身所规定的记号和规则 来编写程序。
2.1 Pascal程序基本组成
下面我们首先来了解Pascal语言的程序基本结构。举一个简单的 PASCAL程序例子:
2. 说明部分 说明部分用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中
第三行是"变量说明",用来定义变量的名称、类型。 PASCAL规定,凡程序中用到的所有变量、符号常量、数组、标号、过程与函
数、记录、文件等都必须在说明部分进行定义(或称"说明")。也就是说,必须先 说明后使用。
3. 执行部分 执行部分以"begin"开始,以"end"结束,其间有若干个语句,语句之间以分