第三课赋值和输入输出语句课件_第1页
第三课赋值和输入输出语句课件_第2页
第三课赋值和输入输出语句课件_第3页
第三课赋值和输入输出语句课件_第4页
第三课赋值和输入输出语句课件_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

08信息奥赛暑假集训8.9上午08信息奥赛暑假集训8.9上午1复习第一环节

复习

1、基本知识(保留字、标识符、函数、运算符)

2、基本语句(输入、输入出、赋值)

3、分支(多路分支)

4、循环第二环节新课(数组)复习第一环节

复习

1、基本知识(保留字、标识符、函数2freepascal界面与基本操作freepascal界面与基本操作3Freepascal调试软件界面介绍光标所在行列滚动块关闭当前文件当前文件名称Freepascal调试软件界面介绍光标所在行列滚动块关闭当4新建文件:

方法1:单击菜单“File-New”。

方法2:组合键:Alt+F,然后用方向键移动到New,再按回车键。保存文件。方法1:F2方法2:菜单“File-Save”运行:方法1:Ctrl+F9方法2:菜单“Run-Run”查看操作结果:方法1:Alt+F5方法

方法2:菜单“Debug-Userscreen”。退出:方法1:Alt+X

方法2:菜单“File-Open”打开文件:方法1:F3方法2:菜单“File-Open…”基本操作1、新建2、保存3、Ctrl+F9运行4、Alt+F5切换到用界面看运行结果新建文件:

方法1:单击菜单“File-New”。

方法2:5编辑操作光标的移动:方向键←→↑↓进行左右上下移动。Home:移动到行首End:移动到行尾。删除:Delete:删除光标所在位置字符←Backspace删除光标左侧的一个字符Ctrl+Y:删除光标所在行。断行:1、前空一行:将光标移动到行首回车2、后空一行:将光标移动到行末回车3、一行分两行:将光标移动至行中回车接行:将两行内容连接成一行(利用删除键接行)1、将光标移至第1行末,按Delete键2、将光标移至第2行首,按←Backspace编辑操作光标的移动:方向键←→↑↓进行左右上下移动。Hom6相关概念相关概念7

保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。

我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是标识符的定义:以字母或下划线开头的字母、数字、下划线序列,有效长度为63个字符,并且大小写等效。可以用来表示常量、变量、程序、函数等。保留字是PASCAL选定的,具有固8标准Pascal语言中的保留字一共有36个可以分为六种类型:1、程序、函数、过程的符号:program程序function函数procedure过程2、说明部分的专用定义符号array定义数组const常量说明file文件类型lable标号说明packed指令(记录)var变量说明record记录类型set集合类型type类型说明3、语句专用符号case分情况语句dodownto(见for)else(见if、case)for计数循环语句goto语句ifthenelserepeat直到型循环语句untilwhile当循环语句forward函数指令4、运算符号and与div整除in集体运算符,判断一个元素是否在集合中mod求余not非or或xor异或5、分隔符号begin块标记,开始

end块标记,结束6、空指针符号nil空指针标准Pascal语言中的保留字一共有36个9常用的标准标识符有:标准常量:falsetruemaxintmaxlongint标准类型:integerbooleanrealchartext标准文件:inputoutput标准函数:absactanchrcoseofelonexplnodd

ordpredroundsinsqrsqrtsucctrunc标准过程:assigngetnewdisposepackputreadreadlnresetrewriteunpackwritewriteln

Maxint的值为32767标识符的分类:⑴标准标识符:指Pascal语言预先定义的标识符,具有特殊含义。⑵用户字定义标识符:由用户根据需要定义常用的标准标识符有:Maxint的值为32767标识符的分类10标准函数1. abs(x)求x的绝对值(|x|);Abs(-2)=2Abs(-2.0)=2.0000000000E+002. exp(x)求ex的值;(e为无理数2.71828…)3. frac(x)求x的小数部分;4. int(x)求x的整数部分(不舍入,函数值为实型);int(3.6)=3.05. ln(x)求以e为底的x的对数(logex);6. odd(x)判断x的奇偶数(当x为奇数时odd(x)值为true,否则为false);7. piπ值(3.1415926535897932…);8.

pred(x)求x(有序类型)的前趋值;9. succ(x)求x(有序类型)的后继值;10. random随机函数,产生0~1的随机值;[0,1)11. random(n)产生[0,x)的随机数(n为word类型,先执行randomize,才能得到随机整数);12. round(x)求x的四舍五入结果为整数;如:Round(2.8)=3Round(-2.8)=-313. trunc(x)求x的整数部分(截掉小数部分,结果为整型);如:Trunc(3.85)=314. sqr(x)求x的平方值(x2);标准函数1. abs(x)求x的绝对值(|x|);Abs(1115. sqrt(x)求x的开平方根值();Sqr(4.0)=1.6000000000E+01Sqr(4)=1616. sin(x)求x的正弦函数(x为弧度);17. cox(x)求x的余弦函数(x为弧度);18. arctan(x)正切的反三角函数(x为数值);19. Ln(X)对数函数即求x的自然对数logex20. 幂运算∵xy=eylnx,∴xy=Exp(y*ln(x)21. Ord(‘x’)序数函数:,函数结果为整型,求字符对应的ASCII码如:Ord(‘A’)=6522. Chr(x)字符函数,x为整型,函数结果为字符型,,求ASCII码对应得字符如:Chr(65)=’A’23. Upcase(‘x’)小写字母转为大写字母,如:Upcase(‘a’)=’A’24. LPcase(‘X’)大写字母转为小写字母,如:Upcase(‘A’)=’a’25. val函数将字符串转换为整型值,如val(‘123’)=12315. sqrt(x)求x的开平方根值();Sqr(4.12a的b次幂可表示为exp(b*ln(a))还可能用power函数,使用此函数前,要打开数学库,方法如下a的b次幂可表示为exp(b*ln(a))13Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。Randomize过程用于初始化随机种子,其初始值取决于当前的系统时钟。Random函数用于获取随机数,它有两种调用形式:Random,返回一个0到1之间(不包括1)的随机实数;Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。可以试一下,随机产生几个一定范围内的数Pascal的System单元提供了两个与随机数有关的子程序14变量常见类型整型integer、实型real、字符型char、布尔型boolean、字符串型string整型短整型Shortint-128~1271

整形Integer-32768~327672

长整型Longint-2147483648~21474836474

字节型Byte0~2551

字型Word0~655352实型单精度实型Single1.5e-45~3.4e+3847~8

实型Real2.9e-39~1.7e+38611~12

双精度实型Double5.0e-324~1.7e+308815~16变量常见类型整型integer、实型real、字符型char15Pascal的运算符表达式是用运算符号或小括号将常量、变量、函数连接成的式子。Pascal表达式中只有小括号。运算符也称为算符,算符的操作对象称为操作数。运算符按带操作数的个数分为两类:单目运算符:对一个操作数操作。-(负号),+(正号)双目运算符:对两个操作数操作。根据运算符运算的意义不同分为算术运算、布尔运算、逻辑运算、关系运算。根据运算符的优先级可以将运算符分为单目运算、“乘”的关系运算、“和”的关系运算、关系运算。Pascal的运算符表达式是用运算符号或小括号将常量、变量、16算术运算符一共有8个。操作数都是数值型,结果也是数值型。单目运算符有(+)取正、(-)取负。双目运算符有(+)加、(-)减、(*)乘、(/)除、(DIV)取商、(Mod)取模。“/”左右的操作数是数值型,结果是实型数。Div左右的操作数是整型,结果是整型(两数之商)。Mod左右的操作数是整型数,结果是整型数(两数相除之余)。在PASCAL只有上面8种数学运算。其它的就只能利用这8种运算的组合通过语句来实现。如a^2(a的平方)可以化成a*a。XY可写成exp(y*ln(X))算术运算符一共有8个。操作数都是数值型,结果也是数值型。单目17例:/(实数除)得到结果为实型.如5.0/2.0=2.5,5/2=2.5,4/2=2.0而不等于2。DIV(整除)DIV它要求除数和被除数均为整型,结果也为整型。如10DIV2=5,10DIV3=3,5DIV10=0.-15DIV4=-3。DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。mod(求余),也只能用于整数运算,结果为整数。例如:10mod4=2,-17mod4=-1,4mod(-3)=1,-4mod3=-1,即amodb=a-(adivb)*b。例:/(实数除)得到结果为实型.如5.0/2.0=2.5,18关系运算符关系运算是指同一类型的两个数据进行比较,结果是一个布尔类型值。用小括号、>、<、>=、<=、=、<>将两个算术表达式连接起来的式子就称为关系表达式(比较式)。

如:3+7>8,x+y<10,2*7<=13等都是关系表达式。关系表达式的值true,false2<387.5>=100‘A’<‘a’False<true关系运算符关系运算是指同一类型的两个数据进行比较,结果是一个19逻辑运算

逻辑运算又叫布尔运算,这是根据英国数学家BOOLE的名字得来的,因为是他首先建立了逻辑运算代数。逻辑运算简单的说就是判断运算。比如说:你是高中生吗?、今天上课吗?等等这样的一般疑问句。逻辑运算的显著特征就是运算结果只有两种,对或错,是或者不是。

例如:A>BC<=DE=‘A’对于这样的表达式结果只有两种——对或错。这样的表达式就叫做逻辑表达式布尔常量只有两个:TRUE(真)、FALSE(假)逻辑运算逻辑运算又叫布尔运算,这是根据英国数学家B20布尔运算符布尔运算是对布尔型数据进行运算,即操作数都是布尔型数据,结果是布尔型。布尔型运算符共有4个:not(取反)and(与)or(或)xor(异或)not:结果是与操作数相反的布尔值and:两个操作数都为真,结果为真,否则为假or:两个操作有一个为真,结果为真,否则为假Xor:两个操作数不一样为真,否则为假1xor1=00xor0=01xor0=10xor1=1布尔运算符布尔运算是对布尔型数据进行运算,即操作数都是布尔型21运算符的优先级1、内层小括号先计算2、函数先求值3、单目运算符(+,-,not)4、乘的关系双目运算符(*,/,div,mod,and)5、加的关系双目运算符(+,-,or)6、关系运算符(<,<=,>,>=,=,<>)在同级运算中,按从左到右的顺序计算。(a>=0)and(a<100)imodj=0运算符的优先级1、内层小括号先计算(a>=0)and22基本语句复习基本语句复习23赋值语句X:=a+b计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。变量a注意:赋值语句在使用时,要注意赋值号两边的数据类型必须赋值兼容,即类型相一致或相容。Vara:integer;数据类型相容的,我们也可以用一个例子来帮助理解。我们都喝过功夫茶,也喝过大杯茶。把功夫茶倒在大茶杯里,一般不会出什么问题;但如果把大杯里的茶倒在功夫茶杯里呢?可能小茶杯装不下大茶杯里的茶,茶“溢出”了。在PASCAL中也会出现这种情况。当一种数据类型的取值范围包含着另一种数据类型的取值范围时,就可能出现类型相容的情况。如实型与整型,整型、字符型与它们各自的子界类型……如果把整型值赋给实型变量,把整型子界值赋给整型变量,不会出错;但如果反过来,就会出现“溢出”,出错了。

赋值语句X:=a+b变量a注意:赋值语句在使用时,要注意赋值24read与readln的区别变量说明

vara,b,c,d:integer;执行结果

a

b

c

d

程序段一

read(a);readln(b,c);read(d);

1

2

3

6

程序段二

readln(a);read(b,c);read(d)1

6

7

8

输入数据

12345678输入语句read与readln的区别变量说明vara,b,c,25write(输出量表);{输出后不换行}writeln(输出量表);{输出后换行}writeln;{输出一个回车符}输出量可以是:

变量。输出变量的值。write(x,y);

表达式。输出的是表达式的值。Write(1+3*a)

常量。直接输出常量值。输出语句Write(‘Iamastudent!’)Write(3.56)write(输出量表);{输出后不换行}输出语句Write(26例题回顾已知某梯形的上底A,下底B,高H,求它的面积S定义变量输入已知计算面积输出面积Vara,b,h,s:real;read(a,b,h);S:=(a+b)*h/2;Write(‘s=’,s);Programzhlt;beginEnd.逻辑结构为顺序、选择和重复(或循环)例题回顾已知某梯形的上底A,下底B,高H,求它的面积S定义27简单的分支结构程序设计简单的分支结构程序设计28简单的IF语句

一、格式

IF<布尔表达式>THEN语句;

IF<布尔表达式>THEN语句1ELSE语句2;布尔表达式语句二语句一then语句布尔表达式thenelse简单的IF语句一、格式

IF<布尔表达29实例回顾输入一个整数a,判断是否为偶数。

(如果是偶数输出"yes"否则输出"no")。

programex_fz1;

Vara:integer;

begin

Write('a=');readln(a);

Ifamod2=0thenwriteln(‘yes’)

Elsewriteln(‘no’);

end.

实例回顾输入一个整数a,判断是否为偶数。

(如果是偶数输出"30给出三角形的三个边长A,B,C,求三角形面积.programexec2(input,output);

vara,b,c,s,area:real;

begin

readln(a,b,c);

if(a+b>c)and(b+c>a)and(c+a>b)then

begins:=(a+b+c)/2;

area:=sqrt(s*(s-a)*(s-b)*(s-c));

writeln(‘area=’,area:6:2);

end

else

begin

writeln(a:6:2,b:6:2,c:6:2);

writeln('inputdataerror');

end;

end.

提示:要判断是否能构成一个三角形如果s为三边和的一半,那么面积为sqrt(s*(s-a)*(s-b)*(s-c))给出三角形的三个边长A,B,C,求三角形面积.pr31IF语句的嵌套

在if语句中,如果then子句或else子句仍是一个if语句,则称为if语句的嵌套。

IF语句的嵌套

在if语句中,如果th32IF语句有三种嵌套形式:(1)、在THEN部分嵌套IF语句,格式是:IF表达式1THENIF表达式2THENIF表达式3THEN语句3ELSE语句3ELSE语句2ELSE语句1第三层第二层第一层IF语句有三种嵌套形式:第三层第二层第一33(2)、在ELSE部分嵌套IF语句,格式是:IF表达式1THEN语句1ELSEIF表达式2THENIF表达式3THEN语句3ELSE语句3ELSE语句2

第三层第二层第一层(2)、在ELSE部分嵌套IF语句,格34(3)、前面两种的综合,即在THEN和ELSE部分都嵌套IF语句,格式是:IF表达式1THENIF表达式2THEN语句2ELSE语句2ELSEIF表达式3THEN语句3ELSE语句3(3)、前面两种的综合,即在THEN和E35必须要注意的一个问题是:因为IF结构的语句可以省略ELSE语句,这个时候就有可能出现ELSE个数少于IF语句的嵌套个数的情况,当出现这种情况的时候只要记住一个规则就可以了:ELSE总是与它最近的THEN语句配对!!通过下面的这个简单的程序来理解这个规则:Y:=0;IFX>=0THENIFX>0THENY:=1;ELSEY:=-1;上面的程序有两个IF语句,而且嵌套,但只有一个ELSE,属于谁呢?必须要注意的一个问题是:因为IF结构的语句可以省略EL36写程序,根据输入的值,输出1、-1和零。根据输入的x值,先分成x>0与x≤0两种情况,然后对于情况x≤0,再区分x是小于0,还是等于0programex;varx:real;y:integer;beginwrtie('Inputx:');readln(x);

ifx>0theny:=1else{x≤0时}

ifx=0theny:=0elsey:=-1;writeln('x=',x:6:2,'y=',y);end.X>0X=0Y:=1Y:=-1Y:=0输入x开始结束YY输出x、y写程序,根据输入的值,输出1、-1和零。根据输入的x值,先分37输入年月求天数当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句实现。输入年月求天数当多分支选择的各个条件由同一个表达式的不同结果38programday_case;varyear,month,days:integer;

begin

readln(year,month);

case

monthof

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

4,6,9,11:days:=30;2:if(yearmod400=0)or(yearmod100<>0)and(yearmod4=0)thendays:=29elsedays:=28;

end;

writeln('day=',day);

readln;

end.用case语句来写31302928programday_case;用case语句来写313039case语句当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句来实现。它的选择过程,很象一个多路开关,即由case语句的选择表达式的值,决定切换至哪一语句去工作。在实现多分支控制时,用case对某些问题的处理和设计,比用if语句写程序更简洁、更清晰。

casemonthofcase语句当多分支选择的各个条件由同一40Case表达式of

常量表1:语句1;

……

常量表n:语句n;

[else语句n+1];

end;格式说明:常量表为有序类型数据。表达式要与常量类型一致。常量后的语句为一条语句。如果要完成多条语句功能,要将这些语句写成复合语句。Case语句Case表达式of

常量表1:语句1;

41输入两个实数,再输入+、-、*或/号,根据运算符输出这两个数的和、差、积或商。Programxx;vara,b,s:real;operator:char;beginreadln(a,b);read(operator);

caseoperatorof

'+’:s:=a+b;'-’:s:=a-b;'*’:s:=a*b;'/’:s:=a/b;

end;

writeln(a,operator,b,'=’,s:5:4)end.

输入两个实数,再输入+、-、*或/号,根据运算符输出这42注意事项Case语句执行表达式值相匹配的case常量所指向的那条语句,如果没有相匹配的值,则执行else后的语句n+1或什么也不做(无else语句)。Case常量必须惟一确定且必须与表达式同类型,每一个常量只能在常量表中出现一次且仅出现一次。表达式只能是序数类型。序数类型包括整型、字符型、布尔型、枚举型、子界型。注意事项Case语句执行表达式值相匹配43根据学生的成绩给予相应的等低,对应关系如下:

90——100A

80——89B

60——79C

60以下D

析:利用case语句进行程序设计,关键在于巧妙地构造情况表达式根据学生的成绩给予相应的等低,对应关系如下:

90——144programchengji;

varn:integer;ch:char;

begin

write(‘inputthescore:’);

readln(s);

casendiv10of

10,9:ch:=‘A’;

8:ch:=‘B’;

7,6:ch:='C';

elsech:='D';

end;

writeln(n,'--',ch);

end.n值是整型n值是实型programchengji;

varn:i45表达式的值是子界型表达式的值是子界型46表达式的值是子界型判断输入的字符是大写、小写、数字还是其它表达式的值是子界型判断输入的字符是大写、小写、数字还是其它47思考题例2根据x的值,求函数Y的值:

分析:利用case语句进行程序设计,关键在于巧妙地构造情况表达式。本例中三种情况可用一个表达式区分出来:Trunc(x/100)。因为x在(0~100)之间时表达式值为0;x在[100,200)时表达式值为1;其余部分可用else子句表示

思考题例2根据x的值,求函数Y的值:

48拓展题期未来临了,班长小Q决定将剩余班费X元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。

分析:对于以上的实际问题,要买尽量多的笔,易知都买4元的笔肯定可以买最多支笔。因此最多可买的笔为xdiv4支。由于小q要把钱用完,故我们可以按以下方法将钱用完:若买完xdiv4支4元钱的笔,还剩1元,则4元钱的笔少买1支,换成一支5元笔即可;若买完xdiv4支4元钱的笔,还剩2元,则4元钱的笔少买1支,换成一支6元笔即可;若买完xdiv4支4元钱的笔,还剩3元,则4元钱的笔少买2支,换成一支5元笔和一支6元笔即可。拓展题期未来临了,班长小Q决定将剩余班费X元49programpen;vara,b,c:integer;x,y:integer;beginwrite('x=');readln(x){输入x}c:=xdiv4;{4元笔最多买的数目}y:=xmod4;{求买完c支4元笔后剩余的钱数y}

caseyof0:begina:=0;b:=0;end;1:begina:=0;b:=1;c:=c-1;end;2:begina:=1;b:=0;c:=c-1;end;3:begina:=1;b:=1;c:=c-2;end;end;writeln('a=',a,'b=',b,'c=',c);end.{a,b,c分别表示在买笔方案中,6元、5元和4元钱笔的数目}{x,y分别表示剩余班费和买完最多的4元笔后剩的钱}programpen;{a,b,c分别表示在买笔方案中,650循环语句(For)循环语句(For)51前言在Pascal语言中,循环结构程序通常由三种的循环语句来实现。FOR循环、当循环和直到循环。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。因此,重复语句是由循环体及重复终止条件两部分组成。前言在Pascal语言中,循环结构程序通常由三种的循环语句来52for语句的一般格式for<控制变量>:=<表达式1>to<表达式2>do<语句>;

递增for<控制变量>:=<表达式1>downto<表达式2>do<语句>;递减

其中for、to、downto和do是Pascal保留字。表达式1与表达式2的值也称为初值和终值。对于for循环有时也称为计数循环,因为我们用循环控制变量来控制循环体执行的次数。循环体执行的次数是(初值和终值之差的绝对值+1),for循环的特点是我们明确知道循环体执行的次数for语句的一般格式for<控制变量>:=<表达式1>t53想一想:

如果想输出6个*号,下一行输出5个#,以上动作反复3次程序应当如何改动Programfort1;Vari:integer;Begin

fori:=1to10do

writeln(‘******’);End.Programfort1_2;Vari:integer;Begin

fori:=1to3do

beginwriteln(‘******’);writeln(‘#####’);end;End.观察一下i的变化情况想一想:

如果想输出6个*号,下一行输出5个#,以上动作反复54再想一想:

如果想1到100之间的所有整数,应当如何改动Programfort2;Vari:integer;Begin

fori:=1to?do

write(?);End.反复做的事:输出整数做的次数:100如果想’a’到’z’之间的所有字符呢,应当如何改动?再想一想:

如果想1到100之间的所有整数,应当如何改动Pr55想一想:

以下程序改动后对循环体有什么影响Programfort1;Vari:integer;Begin

fori:=1to10do

writeln(‘******’);End.Programfort1;Vari:integer;Begin

fori:=10downto

1do

writeln(‘******’);End.想一想:

以下程序改动后对循环体有什么影响Programf56Num:=0;Fori:=1to100doNum:=num+I;I<=100I:=1NUM:=NUM+IYNNUM:=0I:=i+1循环结构流程图求:1+2+…+100的和Num:=0;I<=100I:=1NUM:=NUM+IYNN57应用举例一

输出1-100之间的所有偶数。

Programoushu(input,output);vari:integer;

begin

fori:=1to100do{用记数形循环来实现穷举1~100之间的偶数}

ifimod2=0thenwrite(i:5);

writeln;end.

思考:我们还有什么方法来实现这个题目;输出100-999中所有能被3或被5整除的数字;应用举例一输出1-100之间的所有偶数。

Progr58应用举例二求N!=1*2*3*…*N,这里N不大于10。分析:程序要先输入N,然后从1累乘到N。

程序如下:

var

n,i:integer;{i为循环变量}

S:longint;{s作为累乘器}//思考:为什么要把S设置成longint类型

begin

write('Entern=');readln(n);{输入n}

s:=1;//赋初值

fori:=2tondo{从2到n累乘到s中}

s:=s*i;

writeln(n,'!=',s);{输出n!的值}

end.应用举例二求N!=1*2*3*…*N,这里N不大于10。分59练习题1.编程找出四位整数abcd中满足下述关系的数

(ab+cd)(ab+cd)=abcd提醒:这题属于搜索问题,四位数,范围从1000到9999,还要考虑到如何将四位数高两位与低两位分开。2.有一种Fibonaccl数列0,1,1,2,4,7...其规律为第一、二、三个数为0,1,1,从第四个数起,各数为其前面3个数之和,要求输出此数列中前60个数。练习题1.编程找出四位整数abcd中满足下述关系的数

(ab60第三课赋值和输入输出语句课件61forj:=1to50dowrite('*');writeln;beginend;fori:=1to10doProgramex_forsc;Vari,j:integer;beginEnd.forj:=1to50dowrite('*');w62思考输出如下图形。12345行数13579个数思考输出如下图形。12345行数13579个数63WHILE循环格式:while<布尔表达式>do<语句>;

其意义为:当布尔表达式的值为true时,执行do后面的语句。

Whilei<=100dobeginnum:=num+i;

i:=i+1;End;WHILE循环格式:Whilei<=100do64直到循环(REPEAT-until语句)用while语句可以实现"当型循环",用repeat-until语句可以实现"直到型循环"。repeat-until语句的含义是:"重复执行循环,直到指定的条件为真时为止"。

直到循环语句的一般形式:

Repeat

<语句1>;

:

<语句n>;

until<布尔表达式>;

其中Repeat、until是Pascal保留字,repeat与until之间的所有语句称为循环体。

repeat

num:=num+i;i:=i+1;untili>100;直到循环(REPEAT-until语句)用whil65求100(包括)以内所有数之和whilei<=100dobeginnum:=num+i;

i:=i+1;end;fori:=1to100donum:=num+i;repeatnum:=num+i;i:=i+1;

untili>100;思考:

从键盘输入若干数字,对它们求和,直到从键盘读入的数是#时结束Whilea<>‘#’dountila=‘#’求100(包括)以内所有数之和whilei<=100d66三种循环结构的比较以上我们已介绍了三种循环语句。一般说来,用for循环比较简明,只要能用for循环,就尽量作用for循环。只在无法使用for循环时才用while循环和repeat-until循环,而且while循环和repeat-until循环是可以互相替代的。for循环在大多数场合也能用while和repeat-until循环来代替。一般for循环用于有确定次数循环,而while和repeat-until循环用于未确定循环次数的循环。当一个循环的循环体中又包含循环结构程序时,我们就称之为循环嵌套三种循环结构的比较以上我们已介绍了三种循环语句。一般说来,用67补充(1)inc(x)等同x:=x+1;(2)inc(x,n)等同x:=x+n;(3)dec(x)等同x:=x-1;(4)dec(x,n)等同x:=x-n;补充(1)inc(x)等同x68题一编写程序,求100~1000之间能被7整除的数,每行输出10个。题一编写程序,求100~1000之间能被7整除的数69Programex34;BeginForx:=10to99doBegina:=xdiv10;b:=xmod10;y:=b*10+a;ify-x=36thenwriteln(x);End;End.解:①用for循环列举出所有的两位数,x为循环变量;②用公式a:=xdiv10分离出x的十位数字;③用公式b:=xmod10分离出x的个位数字;④用公式y:=b*10+a合成新数y;⑤用式子y-x=36筛选出符合条件的数x并输出。有个两位数x,将它的个位数字与十位数字对调后得到一个新数y,此时y恰好比x大36,请编程求出所有这样的两位数。题二有个两位数x,将它的个位数字与十位数字对调后得到70把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,(30+25)2=3025计算结果又等于原数。求所有符合这样条件的四位数。解:设符合条件的四位数为N,它应当是一个完全平方数,用(a*a)表示。

①为了确保N=(a*a)在四位数(1000~9999)范围内,可确定a在32~99循环;

②计算N=a*a;将四位数N拆分为两个数n1和n2;

③若满足条件(n1+n2)*(n1+n2)=N就输出N把整数3025从中剪开分为30和25两个数,此时再将71programexam35;varn,a,x,n1,n2:integer;beginfora:=32to99dobeginn:=a*a;n1:=ndiv100;{拆取四位数的前两位数}n2:=n-n1*100;{拆取四位数的后两位数}x:=n1+n2;ifx*x=nthenwriteln(n);end;readlnend.第三课赋值和输入输出语句课件72百钱买百鸡:今有钱100元,要买100只鸡,公鸡5元一只,母鸡1元一只,小鸡1元3只,若公鸡、母鸡和小鸡都至少要买1只,请编程求出恰好用完100元钱的所有的买鸡方案。这是一个标准的枚举算法,分别用三个变量表示公鸡、母鸡、小鸡的只数,对各种鸡可能的只数进行检测,如果它们的总数为100只,并且总钱数是100就符合条件。题三百钱买百鸡:今有钱100元,要买10073求1-100之间的所有素数分析:我们可对1-100之间的每一整数进行判断,判断它是否为素数,是则输出。而对于任意整数i,根据素数定义,我们从2开始,到,找i的第一个约数。若找到第一个约数,则i必然不是素数。否则i为素数。

求1-100之间的所有素数分析:我们可对1-100之间的每74program

dasf;

var

n,m,i:integer;f:boolean;

begin

f:=true

for

n:=2

to

100

do

begin

for

m:=2

to

n-1

do

if

n

mod

m=0

then

f:=false;

if

f=true

then

write(n);

end;

end.

除了1与本身外再没有其它约数program

dasf;

var

n,m,i:in75var

n,m,i:integer;

f:boolean;

begin

f:=true

for

n:=2

to

100

do

begin

for

m:=2

to

trunk(sqrt(n))

do

begin

if

n

mod

m=0

then

f:=false;

break;end;if

f=true

then

write(n);

end;

end.改进var

n,m,i:integer;

f:boole76参考程序vari,x:integer;begin

fori:=1to100do

begin

x:=2;

while(x<=trunc(sqrt(i)))and(imodx<>0)do

x:=x+1;

ifx>=trunc(sqrt(i))thenwrite(i:8);

end;end.参考程序vari,x:integer;77求两个整数a与b的最大公约数

Vara,b,i,t:integer;beginreadln(a,b);ifa<bthenbegin{比较A,B的大小,如果a<b那么交换两个数字} t:=a; a:=b; b:=t; end;fori:=bdownto1do{从B开始判断,每次减少一个,直到找到为止} if(amodi=0)and(bmodi=0)then begin writeln(i); break;{找到了最大公约数,强行退出循环} end;end.穷举法求两个整数a与b的最大公约数

Vara,b,i,t:int78programexam4;varm,n,a,b,t,r:integer;beginreadln(m,n);ifm<nthenbegint:=m;m:=n;n:=tend;(使m放大数,n放小数)r:=amodb;

whiler<>0dobeginm:=n;n:=r;r:=mmodn;end;writeln('Thegreatestcommondivideis:',n:8);end.辗转相除判余法分别用m,n,r表示被除数、除数、余数。①求m/n的余数r.②若r=0,则n为最大公约数.若r≠0,执行第③步.③将n的值放在m中,将r的值放在n中.④返回重新执行第①步。programexam4;辗转相除判余法79第三课赋值和输入输出语句课件8008信息奥赛暑假集训8.9上午08信息奥赛暑假集训8.9上午81复习第一环节

复习

1、基本知识(保留字、标识符、函数、运算符)

2、基本语句(输入、输入出、赋值)

3、分支(多路分支)

4、循环第二环节新课(数组)复习第一环节

复习

1、基本知识(保留字、标识符、函数82freepascal界面与基本操作freepascal界面与基本操作83Freepascal调试软件界面介绍光标所在行列滚动块关闭当前文件当前文件名称Freepascal调试软件界面介绍光标所在行列滚动块关闭当84新建文件:

方法1:单击菜单“File-New”。

方法2:组合键:Alt+F,然后用方向键移动到New,再按回车键。保存文件。方法1:F2方法2:菜单“File-Save”运行:方法1:Ctrl+F9方法2:菜单“Run-Run”查看操作结果:方法1:Alt+F5方法

方法2:菜单“Debug-Userscreen”。退出:方法1:Alt+X

方法2:菜单“File-Open”打开文件:方法1:F3方法2:菜单“File-Open…”基本操作1、新建2、保存3、Ctrl+F9运行4、Alt+F5切换到用界面看运行结果新建文件:

方法1:单击菜单“File-New”。

方法2:85编辑操作光标的移动:方向键←→↑↓进行左右上下移动。Home:移动到行首End:移动到行尾。删除:Delete:删除光标所在位置字符←Backspace删除光标左侧的一个字符Ctrl+Y:删除光标所在行。断行:1、前空一行:将光标移动到行首回车2、后空一行:将光标移动到行末回车3、一行分两行:将光标移动至行中回车接行:将两行内容连接成一行(利用删除键接行)1、将光标移至第1行末,按Delete键2、将光标移至第2行首,按←Backspace编辑操作光标的移动:方向键←→↑↓进行左右上下移动。Hom86相关概念相关概念87

保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。

我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是标识符的定义:以字母或下划线开头的字母、数字、下划线序列,有效长度为63个字符,并且大小写等效。可以用来表示常量、变量、程序、函数等。保留字是PASCAL选定的,具有固88标准Pascal语言中的保留字一共有36个可以分为六种类型:1、程序、函数、过程的符号:program程序function函数procedure过程2、说明部分的专用定义符号array定义数组const常量说明file文件类型lable标号说明packed指令(记录)var变量说明record记录类型set集合类型type类型说明3、语句专用符号case分情况语句dodownto(见for)else(见if、case)for计数循环语句goto语句ifthenelserepeat直到型循环语句untilwhile当循环语句forward函数指令4、运算符号and与div整除in集体运算符,判断一个元素是否在集合中mod求余not非or或xor异或5、分隔符号begin块标记,开始

end块标记,结束6、空指针符号nil空指针标准Pascal语言中的保留字一共有36个89常用的标准标识符有:标准常量:falsetruemaxintmaxlongint标准类型:integerbooleanrealchartext标准文件:inputoutput标准函数:absactanchrcoseofelonexplnodd

ordpredroundsinsqrsqrtsucctrunc标准过程:assigngetnewdisposepackputreadreadlnresetrewriteunpackwritewriteln

Maxint的值为32767标识符的分类:⑴标准标识符:指Pascal语言预先定义的标识符,具有特殊含义。⑵用户字定义标识符:由用户根据需要定义常用的标准标识符有:Maxint的值为32767标识符的分类90标准函数1. abs(x)求x的绝对值(|x|);Abs(-2)=2Abs(-2.0)=2.0000000000E+002. exp(x)求ex的值;(e为无理数2.71828…)3. frac(x)求x的小数部分;4. int(x)求x的整数部分(不舍入,函数值为实型);int(3.6)=3.05. ln(x)求以e为底的x的对数(logex);6. odd(x)判断x的奇偶数(当x为奇数时odd(x)值为true,否则为false);7. piπ值(3.1415926535897932…);8.

pred(x)求x(有序类型)的前趋值;9. succ(x)求x(有序类型)的后继值;10. random随机函数,产生0~1的随机值;[0,1)11. random(n)产生[0,x)的随机数(n为word类型,先执行randomize,才能得到随机整数);12. round(x)求x的四舍五入结果为整数;如:Round(2.8)=3Round(-2.8)=-313. trunc(x)求x的整数部分(截掉小数部分,结果为整型);如:Trunc(3.85)=314. sqr(x)求x的平方值(x2);标准函数1. abs(x)求x的绝对值(|x|);Abs(9115. sqrt(x)求x的开平方根值();Sqr(4.0)=1.6000000000E+01Sqr(4)=1616. sin(x)求x的正弦函数(x为弧度);17. cox(x)求x的余弦函数(x为弧度);18. arctan(x)正切的反三角函数(x为数值);19. Ln(X)对数函数即求x的自然对数logex20. 幂运算∵xy=eylnx,∴xy=Exp(y*ln(x)21. Ord(‘x’)序数函数:,函数结果为整型,求字符对应的ASCII码如:Ord(‘A’)=6522. Chr(x)字符函数,x为整型,函数结果为字符型,,求ASCII码对应得字符如:Chr(65)=’A’23. Upcase(‘x’)小写字母转为大写字母,如:Upcase(‘a’)=’A’24. LPcase(‘X’)大写字母转为小写字母,如:Upcase(‘A’)=’a’25. val函数将字符串转换为整型值,如val(‘123’)=12315. sqrt(x)求x的开平方根值();Sqr(4.92a的b次幂可表示为exp(b*ln(a))还可能用power函数,使用此函数前,要打开数学库,方法如下a的b次幂可表示为exp(b*ln(a))93Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。Randomize过程用于初始化随机种子,其初始值取决于当前的系统时钟。Random函数用于获取随机数,它有两种调用形式:Random,返回一个0到1之间(不包括1)的随机实数;Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。可以试一下,随机产生几个一定范围内的数Pascal的System单元提供了两个与随机数有关的子程序94变量常见类型整型integer、实型real、字符型char、布尔型boolean、字符串型string整型短整型Shortint-128~1271

整形Integer-32768~327672

长整型Longint-2147483648~21474836474

字节型Byte0~2551

字型Word0~655352实型单精度实型Single1.5e-45~3.4e+3847~8

实型Real2.9e-39~1.7e+38611~12

双精度实型Double5.0e-324~1.7e+308815~16变量常见类型整型integer、实型real、字符型char95Pascal的运算符表达式是用运算符号或小括号将常量、变量、函数连接成的式子。Pascal表达式中只有小括号。运算符也称为算符,算符的操作对象称为操作数。运算符按带操作数的个数分为两类:单目运算符:对一个操作数操作。-(负号),+(正号)双目运算符:对两个操作数操作。根据运算符运算的意义不同分为算术运算、布尔运算、逻辑运算、关系运算。根据运算符的优先级可以将运算符分为单目运算、“乘”的关系运算、“和”的关系运算、关系运算。Pascal的运算符表达式是用运算符号或小括号将常量、变量、96算术运算符一共有8个。操作数都是数值型,结果也是数值型。单目运算符有(+)取正、(-)取负。双目运算符有(+)加、(-)减、(*)乘、(/)除、(DIV)取商、(Mod)取模。“/”左右的操作数是数值型,结果是实型数。Div左右的操作数是整型,结果是整型(两数之商)。Mod左右的操作数是整型数,结果是整型数(两数相除之余)。在PASCAL只有上面8种数学运算。其它的就只能利用这8种运算的组合通过语句来实现。如a^2(a的平方)可以化成a*a。XY可写成exp(y*ln(X))算术运算符一共有8个。操作数都是数值型,结果也是数值型。单目97例:/(实数除)得到结果为实型.如5.0/2.0=2.5,5/2=2.5,4/2=2.0而不等于2。DIV(整除)DIV它要求除数和被除数均为整型,结果也为整型。如10DIV2=5,10DIV3=3,5DIV10=0.-15DIV4=-3。DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。mod(求余),也只能用于整数运算,结果为整数。例如:10mod4=2,-17mod4=-1,4mod(-3)=1,-4mod3=-1,即amodb=a-(adivb)*b。例:/(实数除)得到结果为实型.如5.0/2.0=2.5,98关系运算符关系运算是指同一类型的两个数据进行比较,结果是一个布尔类型值。用小括号、>、<、>=、<=、=、<>将两个算术表达式连接起来的式子就称为关系表达式(比较式)。

如:3+7>8,x+y<10,2*7<=13等都是关系表达式。关系表达式的值true,false2<387.5>=100‘A’<‘a’False<true关系运算符关系运算是指同一类型的两个数据进行比较,结果是一个99逻辑运算

逻辑运算又叫布尔运算,这是根据英国数学家BOOLE的名字得来的,因为是他首先建立了逻辑运算代数。逻辑运算简单的说就是判断运算。比如说:你是高中生吗?、今天上课吗?等等这样的一般疑问句。逻辑运算的显著特征就是运算结果只有两种,对或错,是或者不是。

例如:A>BC<=DE=‘A’对于这样的表达式结果只有两种——对或错。这样的表达式就叫做逻辑表达式布尔常量只有两个:TRUE(真)、FALSE(假)逻辑运算逻辑运算又叫布尔运算,这是根据英国数学家B100布尔运算符布尔运算是对布尔型数据进行运算,即操作数都是布尔型数据,结果是布尔型。布尔型运算符共有4个:not(取反)and(与)or(或)xor(异或)not:结果是与操作数相反的布尔值and:两个操作数都为真,结果为真,否则为假or:两个操作有一个为真,结果为真,否则为假Xor:两个操作数不一样为真,否则为假1xor1=00xor0=01xor0=10xor1=1布尔运算符布尔运算是对布尔型数据进行运算,即操作数都是布尔型101运算符的优先级1、内层小括号先计算2、函数先求值3、单目运算符(+,-,not)4、乘的关系双目运算符(*,/,div,mod,and)5、加的关系双目运算符(+,-,or)6、关系运算符(<,<=,>,>=,=,<>)在同级运算中,按从左到右的顺序计算。(a>=0)and(a<100)imodj=0运算符的优先级1、内层小括号先计算(a>=0)and102基本语句复习基本语句复习103赋值语句X:=a+b计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。变量a注意:赋值语句在使用时,要注意赋值号两边的数据类型必须赋值兼容,即类型相一致或相容。Vara:integer;数据类型相容的,我们也可以用一个例子来帮助理解。我们都喝过功夫茶,也喝过大杯茶。把功夫茶倒在大茶杯里,一般不会出什么问题;但如果把大杯里的茶倒在功夫茶杯里呢?可能小茶杯装不下大茶杯里的茶,茶“溢出”了。在PASCAL中也会出现这种情况。当一种数据类型的取值范围包含着另一种数据类型的取值范围时,就可能出现类型相容的情况。如实型与整型,整型、字符型与它们各自的子界类型……如果把整型值赋给实型变量,把整型子界值赋给整型变量,不会出错;但如果反过来,就会出现“溢出”,出错了。

赋值语句X:=a+b变量a注意:赋值语句在使用时,要注意赋值104read与readln的区别变量说明

vara,b,c,d:integer;执行结果

a

b

c

d

程序段一

read(a);readln(b,c);read(d);

1

2

3

6

程序段二

readln(a);read(b,c);read(d)1

6

7

8

输入数据

12345678输入语句read与readln的区别变量说明vara,b,c,105write(输出量表);{输出后不换行}writeln(输出量表);{输出后换行}writeln;{输出一个回车符}输出量可以是:

变量。输出变量的值。write(x,y);

表达式。输出的是表达式的值。Write(1+3*a)

常量。直接输出常量值。输出语句Write(‘Iamastudent!’)Write(3.56)write(输出量表);{输出后不换行}输出语句Write(106例题回顾已知某梯形的上底A,下底B,高H,求它的面积S定义变量输入已知计算面积输出面积Vara,b,h,s:real;read(a,b,h);S:=(a+b)*h/2;Write(‘s=’,s);Programzhlt;beginEnd.逻辑结构为顺序、选择和重复(或循环)例题回顾已知某梯形的上底A,下底B,高H,求它的面积S定义107简单的分支结构程序设计简单的分支结构程序设计108简单的IF语句

一、格式

IF<布尔表达式>THEN语句;

IF<布尔表达式>THEN语句1ELSE语句2;布尔表达式语句二语句一then语句布尔表达式thenelse简单的IF语句一、格式

IF<布尔表达109实例回顾输入一个整数a,判断是否为偶数。

(如果是偶数输出"yes"否则输出"no")。

programex_fz1;

Vara:integer;

begin

Write('a=');readln(a);

Ifamod2=0thenwriteln(‘yes’)

Elsewriteln(‘no’);

end.

实例回顾输入一个整数a,判断是否为偶数。

(如果是偶数输出"110给出三角形的三个边长A,B,C,求三角形面积.programexec2(input,output);

vara,b,c,s,area:real;

begin

readln(a,b,c);

if(a+b>c)and(b+c>a)and(c+a>b)then

begins:=(a+b+c)/2;

area:=sqrt(s*(s-a)*(s-b)*(s-c));

writeln(‘area=’,area:6:2);

end

else

begin

writeln(a:6:2,b:6:2,c:6:2);

writeln('inputdataerror');

end;

end.

提示:要判断是否能构成一个三角形如果s为三边和的一半,那么面积为sqrt(s*(s-a)*(s-b)*(s-c))给出三角形的三个边长A,B,C,求三角形面积.pr111IF语句的嵌套

在if语句中,如果then子句或else子句仍是一个if语句,则称为if语句的嵌套。

IF语句的嵌套

在if语句中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论