惠阳某中学计算机奥赛培训讲义_第1页
惠阳某中学计算机奥赛培训讲义_第2页
惠阳某中学计算机奥赛培训讲义_第3页
惠阳某中学计算机奥赛培训讲义_第4页
惠阳某中学计算机奥赛培训讲义_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

惠阳中山中学奥赛培训讲义

目录

01-算法和流程图1

02-PASCAL简介4

03-TP70的使用8

04-顺序结构19

05-顺序结构211

06一选择结构113

07-选择结构216

08一循环结构119

09一循环结构222

10一循环结构324

H-循环综合练习28

12-字符类型数据处理30

13-枚举类型34

14-子界类型38

15-一维数组的建立、输入输出、计算41

16-一维数组的移动、插入、删除44

17-一维数组的查找、排序47

18-二维数组的建立、输入输出、计算50

19-二维数组的应用、矩阵53

20-字符数组与字符串类型56

21-函数59

22一过程63

23一递归67

24-集合70

25-记录72

算法和流程图

一、学习目的和学习内容

学习各种软件的使用——>让计算机按照我们的意图去完成一件事——>编程序(软件)给别人用;

国际信息学(计算机)奥林匹克竞赛——全国中学生信息学奥赛——广东省中学生信息学奥赛;

比赛的内容就是编程比赛;这也是我们的学习目的和内容;

计算机程序设计语言:人类语言>用程序设计语言(如Pascal语言)表示——>再翻译成机器语言;

二、计算机解决问题的步骤

做任何一件事都要有一定的的步骤,如求1+2+3+4+5+6+7+8+9+10;

计算机解题步骤:分析问题

——>确定解决问题的方法和步骤(即算法)

——>选择一种计算机语言,根据算法编写计算机程序

——>让计算机执行这个程序获得结果

三、算法的概念

1、为解决某一个问题而采取的方法和步骤,称为算法。或者说算法是解决一个问题的方法的精确描述。

如:已知半径,计算圆的面积的算法。

算法读入半径R的值——>计算圆的面枳S=页*R*R——>输出圆的面积So

注意:算法不一定唯一,如求1+2+3+4+5+6+7+8+9+10的算法。

2、算法的特点:

①有穷性:必须在执行了有穷个计算步骤后终止;

②确定性:每个步骤必须是精确的、无二义性的:

③可行性:可以用计算机解决、能在有限步、有限时间内完成;

④有输入:

⑤有输出:

四、算法举例

例一:交换两个大小相同的杯子中的液体(A水、B酒)。

算法1:

1、再找一个大小与A相同的空杯子C;

2、A>C;

3、B>A;

4、C——>B;结束。

或(B——>C、A——>B、C——>A)

算法2

1、再找两个空杯子C和D;

2、A——>C、B——>D;

3、C——>B、D——>A;结束。

注意:•个算法往往具有代表性,能解决一类问题,如例-可以引申为:交换两个变量的值。

例二:输入1个数给计算机,若为正数则打印出来。

算法:①输入1个数——>X;

②判断X>0?;

③若X>0,则打印X;结束。

例三:分别输入10个数,打印出其中的正数。

算法1:设T为计数器。

①输入第一个数——>X,1——>T;

②判断X>0?;

③若XX),则打印输出;

④判断T>10?

⑤若T>10,则表示10个数已经处理完,结束。

否则,再输入下一个数——>X,且T+1——>T,然后转②继续执行。

例四:从10个数中挑选出最大的一个数,打印输出。

诱导:以从10个人中挑出最高的人为例,让学生发挥想象。

算法1:“打擂台”或“比武招亲”,设MAX为大力士,T为计数器。

①先输入1个数——>MAX,1——>T;(擂主)

②再输入下一个数——>X,T+1——>T;(上一个挑战者)

&比较X>MAX?;(比武)

④若X>MAX成立,X——>MAX;(打败擂主,即新的大力士产生)

否则,MAX仍然是最厉害,即值不变;(败下阵来)

⑤判断T=10?;(看看还有没有挑战者)

⑥若T=10成立,则说明10个数已比较玩,最大的数在MAX中,输出MAX即可;(颁奖)

否则,转②继续找下一个挑战者比武。(下一个)

算法2:两个两个打(淘汰赛)。

例五:计算1*2*3*4*5*6*7*8*9*10。

描述:阶乘10!

算法1:找两个容器T和I;T为累乘器,初值为1;I为计数器,初值为1。

①1——>T,1——>1;

②T*I——>T;

(3)1+1>1;

④判断1>10?

⑤成立,则输出T,结束。

否则,转②继续乘。

提问:1、T的初值可不可以为0?不能

2、I的初值可不可以放0?不能

3、I的初值可不可以放2?可以

4、I可不可以放10?可以,怎么改算法?让学生完成。

5、可不可以先判断后执行?

6、现在要求1+2+3+4+5+6+7+8+9+10,如何办?让学生完成。

五、算法的表示形式

1、文字描述:二义性,如:甲叫乙把他的书拿来;小明连王刚都不认识;

2、伪代码:用符号,不直观;

3、流程图:简洁、直观、无二义性。有很多种,我们学N-S流程图。

六、结构化程序设计和N-S流程图

经过证明:任何一个算法都可以用以下3种基本结构表示:

1、顺序结构:例一;

2、分支结构:例二、例三中的②③、例四中的③④;

3、循环结构:例三中的④⑤、例四中的⑤⑥、例五;

两种循环:直到型和当型。

相应的N-S图:

让学生将直到型循环和当型循环相互转换:关键是条件的取反。

七、课后作业

1、求1+1/2+1/3+1/4++l/10o

2、求两个自然数的最大公约数。

要求:写出算法,画出相应的N-S流程图.

Pascal程序设计语言简介

Pascal语言是学习计算机程序设计首选的语言,它的数据类型丰富、程序结构清晰,对培训逻辑思维能力和结

构化程序设计思想很有益。是国际、国内比赛的首选语言,也是大学计算机专业的必修课程。

Pascal种类、版本较多。我们学习的是TurboPascal7.0,即TP7.0。

计算机程序是什么:程序是一些计算机能够读懂的命令或指令的有序集合,它的作用是按照编写者的意图完成

一定的功能,编写这样的程序叫程序设计。

如:下面是一个最简单的Pascal程序,它的作用是在屏幕上显示“HOWDOYOUDO!”

PROGRAMEXI(INPUT,OUTPUT);

BEGIN

WRITELN(lHOWDOYOUDO!');

END.

下面我们就开始讲解Pascal程序设计的基础知识。

一、一个完整的PASCAL程序的组成

再看一个简单的例子:PROGRAMEXI(INPUT,OUTPUT);

constp=3.1415926;

varr:integer;

s:real;

BEGIN

Readln(r);

S:=p*r*r;

Write(s);

END.

从上面两个简单例子,我们归纳出:

Z(PROGRAM表示一个程序的开始

空格——不能省,但可以有多个

程序首部J程序名——任意,但一般要有意义

(可以省略)](INPUT,OUTPUT)——参数,表示需要从键盘输入数据,在显示

器上显示结果

I;——不能省,表示一个语句结束

说明部分:说明程序中用到的标识符(如符号常量、变量)。

y标识符必须以字母开头,后跟字母或数字,不许有空格。

PASCAL程序组成\如:B,TWO,XI,MY」是正确的;

3X,MYFUNCTION,ABC.123是麓误的。

用const说明常量;如:constp=3.1415926;

用var说明变量;如:varr:integer;

BEGIN

语句;个语句一般表示一个动作,语句之间要用“;”分割

END

{句号“”一表示一个程序的结束,不能省。

例二、已知梯形的上底、下底和高,求梯形的面积。

PROGRAMAREA(INPUT,OUTPUT);

VARRI,R2,H,S:REAL;说明:

BEGIN

1、标识符要先定义后使用,并且先说明常量再说明变量;

RI:=4.5;

2、数据类型:相同类型可以一起定义,用逗号割开:

:;

R2=8.13、赋值号:不是等于号,是“:=”

H:=6;4、乘号:“*”,不能省略,如AB-•定要写成A*B

S:=(R1+R2)*H/2;5、除引号里面的字符外,程序中的字母不分大小写;

WRITEIN(S);6、按造格式写,注意对齐。

END.

二、关键字

又称保留字,是指PASCAL中具有固定意义的一批英文单词或其缩写,有专门的用途,

用在固定的位置,不能作为它用。

1、程序的起始符号:PROGRAM>FUNCTION.PROCEDURE

2、说明部分的专用符号:CONST、VAR、ARRAY,FILE、LABEL、TYPE、SET、RECORD,PACKED

3、专用语句:CASE、DO、DOWNTO、ELSE、FOR、GOTO,IF、OF、REPEAT、THEN、TO,UNTIL,

WHILE.WITH

4、运算符号:AND、DIV、IN、MOD、NOT、OR

5、分隔符:BEGIN、END

6、空指针变量:NIL

注意:单词不要写错,不分大小写。

三、标识符

用来标识(表示)程序、符号常量、变量、过程、函数等的名字的符号。分为两类:

1、标准标识符:PASCAL已经预先定义好的,有特定含义。

常量名:FALSE,TRUE,MAXINT(系统中的最大整数,32767),

类型名:BOOLEAN,CHAR,INTEGER,REAL,TEXT

文件名:INPUT,OUTPUT

函数名:ABS,ARCTAN,CHR,COS,EOF,ELON,EXP,LN,ODD,

ORD,PRED,ROUND,SIN,SQR,SQRT,SUCC,TRUNC

过程名:DISPOSE,GET,NEW,PACK,PAGE,PUT,READ,READLN,

RESET,REWRITE,UNPACK,WRITE,WRITELN

注意:注意:单词不要写错,不分大小写。

2、自定义标识符:在程序中需要,由用户自己定义的,要注意以下几个问题:

①禁止使用关键字、标准标识符作标识符;

②尽量做到“见名知义”;

③标识符要先说明后使用。

四、数据类型

1、计算机处理的对象就是数据,数据的一个重要特征就是它的类型,类型决定了它可以进行的运算、它可能取值

的范围、它需要占用的计算机空间。

2、四种简单的标准数据类型:

①INTEGER:整形,一32768~32767;占用2个字节;

②REAL:实形,10°8~1038,1038~_10-38.关于“溢出”;占用4个字节;

③CHAR:字符型,能显示和打印输出的字符,如“A”,"=",“a”;

占用1个字节;

©BOOLEAN:布尔型(逻辑型),TRUE(真)、FALSE(假);占用1个字节;

五、常量

在程序运行过程中,其值不能被改变的量,称为“常量”。

如:MAXINT(32767),PI=3.1415926,“A”,TRUE,FALSE«

1、整形常量:MAXINT--MAXINT—1

2、实形常量:

表示方法:十进制表示法,如一123456.789,7.55,-0.012

科学计数法,ia120000000,即1.2*—应写成1.2E+8

—0.000000012,即一1.2*10—:应写成一1.2E—8

3、字符常量:ASCH码字符集,256个,记住几个关键的。

4、布尔常量:FALSE<TRUE

5、符号常量:CONST标识符=值;"先说明后使用”,“见名知义”;

六、变量

在程序的运行过程中,它的值可以改变的量。变量有“三要素”:

1、变量名:标识符,要正确、有意义;

2、变量的类型:INTEGER,REAL,CHAR,BOOLEAN:

3、变量的值:可变,在某一时刻是一个确定的值;

也要“先说明后使用”,说明方法:

VAR变量名:类型名;

注意1:一个程序只要一个VAR,相同类型的变量用逗号隔开一起定义。

2:变量在定义的同时就确定了类型,也就确定了取值范围和可以进行的运算,

同时计算机也会为它开辟一个存储空间存放值。解释T+1->T的含义。

七、标准函数

PASCAL预先写好的一些有用的小程序,供用户直接调用,称为标准函数。

函数的作用:得到一个值;

调用方法:函数名(参数);

函数的两个注意问题:自变量的类型,函数值的类型;

1、算术函数:8个

ABS(X):X可以为INTEGER或REAL,作用求X的绝对值;

SQR(X):X可以为INTEGER或REAL,作用求X的平方值;

SQRT(X):X可以为非负整数或非负实数,作用求X的绝对值;

SIN(X):正弦;

COS(X):余弦;

ARCTAN(X):反正切;

EXP(X):指数,X可以为INTEGER或REAL,作用求e的X次方;

e=2.71828

LN(X):自然对数,X为正整数或正实数,作用求X的自然对数;

2、转换函数:4个

TRUNC(X):截尾,X为REAL,作用去掉X的小数部分;

ROUND(X):舍入,X为REAL,作用为小数部分四舍五入;

ORD(X):序号,X为INTEGER、CHAR、BOOLEAN,作用求X的序号;

CHR(X):字符,X为INTEGER,作用求以X为序号的字符,是ORD函数的反函数;

ASCII码:见表

将字符转换为数字:ORD('X')—ORD('0');

记住“A”、"a”、“0”的ASCII码便行,其它可计算出。

3、顺序函数:2个

PRED(X):前驱,X为INTEGER、CHAR、BOOLEAN,作用取X的前一个数据。

SUCC(X):后继,X为INTEGER、CHAR、BOOLEAN,作用取X的后一个数据。

注意:第一个数没有前驱,最后一个数没有后继。

4、逻辑判断函数:3个

ODD(X):奇函数,X为INTEGER,判断X是奇数还是偶数,

若X为奇数则值为TRUE(1),否则值为FALSE(0);

OLN(X):行结束函数,判断一换是否结束;

EOF(X):文件结束函数,判断文件是否结束;

八、算术运算符

加(+)减(-)乘(*)除(/):运算数都可以是INTEGER或REAL:

结果为INTERGER或REAL("/”的结果必为REAL)

整数除DIV:运算数都是INTEGER,结果也是INTEGER;

如:16DIV3=5;-21DIV2=-10;

求余MOD:运算数都是INTEGER,结果也是INTEGER;

如:16MOD3=1;-21MOD2=-1;

九、表达式

1、数学表达式:

运算顺序:圆括号()一>函数一>*、/、DIV、MOD—>+、—;内层括号优先。

X+2Y(X+2*Y)/(3*X—5*Y)

3X-5Y

COSX+4

(COS(X)+4)/(X*X*X)

2

AX+BX+CA*X*X+B*X+C

VP(P-A)(P-B)(P-C)SQRT(P*(P-A)*(P-B)*(P-C))

X-Y

ABS((X—Y)/3)

2、关系表达式:两个数据的比较运算,其结果为布尔值(真或假)

关系运算符:大于(>)、等于(=)、小于(<)、大于等于(>=)、

小于等于(<=)、不等于(o)

如:15>6结果为真(TRUE);

7.6>8.9结果为假(FALSE);

'A'>B结果为假;

TRUE>FALSE结果为真;

注意:3.1415926=3.1415927?不一定,因为实数在计算机内是按照近似值存放的,所以是否相等取

决于题目(你)的要求。一般要比较两个实数X,Y是否相等,可假设一个很小的数MIN(根据题目

(自己)的要求定),如果ABS(X-Y)<MIN,则认为X,Y相等,否则不等。

3、逻辑运算:布尔运算,只有3个运算符:

逻辑与(AND)、逻辑或(OR)>逻辑非(NOT)

ABAANDBAORBNOTA

TRUETRUETRUETRUEFALSE

TRUEFALSEFALSETRUEFALSE

FALSETRUEFALSETRUETRUE

FALSEFALSEFALSEFALSETRUE

如:A>0;NOT(A>0):取反;

(X>0)AND(Y>0):而且;

(X>0)OR(Y>0):或者;

举例:已知X=4,Y=5,Z=6,B1=TRUE,B2=FALSE,B3=TRUE,

求下列表达式的值。

①X+3*Y>-6*Z:TRUE;

②(X<Y)ANDB3:TRUE;

③(X>6)OR(Y<3)ANDBl:FALSE;

@(B1=B2)ANDNOT(B2ORB3):FALSE:

⑤NOTB2ANDNOT(XoY):FALSE;

TURBOPASCAL7.0的使用

1、TP7.0的安装:

双击tp7.0>一直按"Y"+回车>就会出现Tp目录Tp目录>"右键单击"Turbo.exe图标

>选择“属性”——>再单击“程序”标签——>单击“高级”按扭一一>选择“必要时建议MS-DOS方式”——>还可以

修改“屏幕”的大小——>全部改好后按“确定”就可以用TP了。注意其它一些选项不要修改。

2、启动和退出:

双击C:——>双击TP子目录——>双击快捷方式图标TURBO——>进入TP;也可以在桌面上建立一个TURBO快

捷方式;退出时单击“FILE”——>“EXIT”——>关闭TP窗口;

3、TP的使用:

①输入源程序;

②存盘:单击“FILE”——>选择“SAVE”——>C:'文件名(或A:)——>回车(单击0K);

或按"F2”键。

③编译:检查程序有无语法和逻辑上的错误。

单击“COMPILE”——>“COMPILE”——>出现错误提示就修改光标附近的错误,直至出现“success”

的窗口,表示你的程序在语法和逻辑上完全正确,再次保存;但是否满足题目的要求,即功能上是否正确

还不知道。

或按“ALT”+“F6”。

④运行:单击"RUN">"RUN”>输入数据后回车确认;

或按“CTRL"+"F9"o

⑤看结果:单击“DEBUG”——>“USERSCREEN”,看结果是否正确——>按任意键返回TP窗口(有错误,则

修改源程序再编译、运行、保存,直至结果正确);

注意:一个输入数据得到的结果正确并不能说明你的程序对任何输入的数据都对,

所以要多用一些数据去测试程序的正确性。

⑥再编一个新程序:一定要单击“FILE”——>“NEW”;千万不能把儿个程序保存在一个文件中,一个程序就对

应着一个文件。或先关闭前程序(WINDOW——>CLOSE);

⑦打开已有程序:单击“FILE”>“OPEN”——>文件名(路径结合OPEN按钮);

⑧“CTRL”+“C”或“CTRL”+“BREAK”终止程序的运行(因为逻辑错误出现黑屏或死循环),退到编辑状

态。

⑨增加观察窗口:“DEBUG”——>“WATCH”;

增加输出屏幕窗口:“DEBUG——>OUTPUT”;

改变各个窗口的大小和位置:拖动鼠标(右下角、上端等);

⑩增加跟踪变量:先激活观察窗口(WATCH窗口):按“INSERT”键——>输入变量名或数组名等——>单步跟踪

(用F7或F8键,区别是F7连子程序也一起跟踪,而F8只跟踪主程序,把子程序当一个语句调用执行。)——>出现错

误,按F9键回到编辑窗口修改——>保存后再跟踪。

顺序结构(一)

一、程序:是由若干条语句组成的。一条语句完成一个动作或功能,若干条语句组合在一起便可以完成一个任务,

实现用户的意图。因此,能否正确利用语句的功能来达到预定的要求,是程序设计的关键。

二、程序的三种基本结构

1、顺序结构:按照语句的书写顺序,依次执行。

2、选择结构(分支结构):根据给定的条件,判断成立与否,成立做•件事,

不成立做另外一件事。两件事必须做一件且只能做一件。

3、循环结构(重复结构):重复做某件事。3利I

①计数循环:重复执行的次数确定;

②当型循环:当条件成立时,反复做某件事;

③直到型循环:反复做某件事,直到条件成立时为止。

三、补充介绍TP70系统的使用:以用WRITELN语句打印0K图形为例,也可以让学生自由发挥,调动学生的积极

性。

*******

****

****

******

****

****

*******

四、输出语句:写语句

1、命令:WRITE(输出项);

或WRITELN(输出项);

2、说明:①输出项可以是字符串:用单引号引起来的一串字符,如WRTIE(,***,):

数值常量:$11WRITE(8);

变量:输出变量的值,注意变量必须要先定义再赋值,然后才可以输出值,如

WRITE(A);

表达式:输出表达式的值,表达式必须正确,如WRITE(A+B);

②可以有多个不同类型的输出项,之间用逗号隔开。

如WRITE('A=',A);WRITE(X,X+2,Y,Z);

3、两者区别:①:WRITE连续输出;而WRITELN输出完后会自动换行;

②:WRITE至少有1个输出项;而WRITELN可以无,表示换一行;

③:WRITE(X,Y)=WRITE(X);WRITE(Y);

而WRITELN(X,Y)=WRITE(X);WRITELN(Y);

<>WRITELN(X);WRITELN(Y);

五、赋值语句

1、语句格式:变量名:=表达式;

2、语句作用:先计算右边表达式的值,然后赋给左边的变量;赋值号:=

3、变量要遵循“先说明后使用”的原则;

说明方法:VAR变量名:类型名;

注意:说明必须在VAR之前,一个程序中只要1个VAR,相同类型的变量可以一起说明,多个变量

之间用逗号隔开就行了;

4、右边表达式必须有确定的值,且类型必须与左边的变量一致;

例:已知梯形的上底、下底和高,编程求梯形的面积。

PROGRAMTIXINGMIANJI(INPUT,OUTPUT);

VARA,B,H,S:REAL;

BEGIN

A:=5;

B:=8;

H:二9;

S:=(A+B)*H/2;

WRITELN(4TIXINGMIANJIWEI:',S);

END.

屏幕显示为:TIXINGMIANJIWEI:5.8500000000E+01

为什么结果不是58.5呢?因为计算机内部以科学计数法表示实数,要想以小数形式表示,需要用到场宽。

场宽:数据输出时所占据的列数,称为场宽;

单场宽:对于INTEGER、CIIAR.BOOLEAN、字符串,一般用一个数值限定数据输出的场宽,如WRITELN(X:

N);N要不小于数据的长度。N大时左边补空格;

双场宽:用来控制REAL数据的输出格式,如WRITELN(X:Nl:N2);N1表示输出X的总列数(包括符号位、

整数部分、小数点、小数部分),N2表示小数部分的列数。输出时,先把小数位数右边补0,再在整个数的左

边补空格。

例:写出下面程序的运行结果

VARA:INTEGER;B:REAL;C:CHAR;D:BOOLEAN;

BEGIN

A:=1357;

B:=1234.5678;

C:='%';

D:=TRUE;

WRITELN(A,A:5,A:3);

WRITELN(B,B:12:5,B:10:2);

WRITELN(C,C:5);

WRITELN(D,D:5,D:2);

WRITELN('END.');

END.

屏幕显示为:

1357O13571357

□1.2345678000E+03Dni234.56780

%□□□□%

TRUEOTRUETRUE

END.

作业:1、J知一个学生的语文成绩为89,数学成绩为96,外语成绩为99,编程求他的总分和平均成绩。

2、已知直角三角形的两个直角边分别为10、15,编程计算它的面积。

顺序结构(二)

一、输入语句:读语句

引出:在程序中为了变量获得一个确切的值,可以用赋值语句。但有时候,程序中需要赋值的变量很多或变量

的值经常变化。这时,我们往往要修改源程序,这样的程序通用性就不好。一个好的程序应该是在程序运行需要的

时候,提示用户从键盘输入原始数据,然后程序继续运行求得结果,而不需要修改源程序。

1,语句格式:READ(输入项);

或READLN(输入项);

如:READ(A);

READ(A,B,C);

READLN(A);

2、语义:程序执行到这个语句时,就等待用户从键盘输入数据,并依次赋给相应的变量。

3、说明:①输入的数据个数要与需要的一致;(整型和实型数据之间用空格或回车键隔开,

最后要用回车表示数据输入完毕,让程序继续运行)

②输入的数据类型要与需要的相对应;(整数可以给实数)

③READ和READLN的区别:几个READ语句连续读,中间不换行,只有当一行数据个数不够时才换到下

一行继续读;而每个READLN语句读完后都自动换行。而且READ语句一定要有输入,而READLN可以没有输入,

表示读入一个回车换行符(换行)。

所以,建议用READLN,输入时一行对应个READLN语句。并且在READ或READLN语句前最好加上个WRITE

或WRITELN提示用户输入数据的名称、个数、类型。

4、举例:

例:设程序中有两个语句(ERAD(A,B,C);READ(D,E,F,G);),当从键盘分别输入以下两批数据时,各

变量的值分别为多少?

①6口7口8口9口10

5口4口3口2

②6口7

8D9D10

5口4口3口2口1

若语句改为READLN(A,B,C);READLN(D,E,F,G);呢?

例:设有下列语句:READ(A,B,C);

READLN(D,E);

READLN;

READLN(F,G);

其中变量都是INTEGER,输入数据如下:

1口2

3口4口5口6口7口8

9010

11

12Q13

问:各变量值为多少?

将上一节课的例题全部用读入语句改写:

1、已知梯形的上底、下底和高,编程求梯形的面积。

2、已知一个学生的语文成绩89,数学成绩96,外语成绩99,编程求他的总分和平均成绩。

注意:一定要强调分析题目,找出已知什么,输出什么,如何做,用什么语句,按什么程序。

例:读入一个四位数,分别求它的个位、十位、百位、千位。

VARA,G,S,B,Q:INTEGER;

BEGIN

WRITELN('PLEASEINPUTASIWEIINTEGER:');

READLN(A);

G:=AMOD10;

S:=((A-G)DIV10)MOD10;

Q:=ADIV1000;

B:=(A-1000*Q)DIV100;

WRITELN('G:',G,S',S,'B:',B,'Q:Q);

END.

(或者:在G,Q,B后面加上S:=(A-G-B*100-Q*1000)DIV10;也行)

例:输入一个三位自然数,把这个数的百位数与个位数对调,输出对调后的数。

分析:设输入的数为M,对调后的数为N,则:

A:=MDIV100;(百位)

B:=(MDIV10)MOD10;(十位)

C:二MMOD10;(个位)

N:=C*100+B*10+A;

作业:完成程序。

选择结构的程序设计(一)

引言:

在II常生活中,我们经常遇到根据具体情况的不同而去做具体的事,比如:若星期天下雨,我就在家看书,否

则我就去踢足球。我们可以画出这个语句的N-S图(见图I):

A>0

YN

在家踢足球打印A打印一A

看书

图1图2

在我们的程序设计过程中,我们也会经常遇到这种情况,即判断某一个条件是否成立,如果成立做一件事(执

行一个/些语句),如果条件不成立就做另一件事(执行另外一个/些语句)。

比如:若A为正数,则打印A,否则打印-A。

我们也可以模仿上个例子画出这件事的N-S图(见图2)。

再如:如果X>Y,则交换X,Y的值,让学生完成。

要完成这些程序就要用到选择结构。

下面先学习一些选择结构的基础知识:

一、布尔(逻辑)常量和变量

1、布尔(逻辑型)常量:真(TRUE)、假(FALSE);

也可:CONSTT=TRUE;F=FALSE;

2、布尔变量:变量的类型为布尔型,即存放布尔型数值的变量;

定义:VARA,B:BOOLEAN;

A:=ODD(3);

3、布尔型数据是顺序型数据:FALSE——0;TRUE——1,

可以使用函数ORD、PRED、SUCC;

二、关系表达式:比较大小

1、关系表达式是山一个关系运算符将两个相容(有序)类型的表达式联结起来的式子。

2、PASCAL中的运算符有6个:<、<=、>、>=、=、<>;举例判断真假。

3、数值型数据的比较按其大小、其它类型数据按照其序号大小进行比较。山于实型数据在计算机中是近似存储

的,所以比较大小时不能直接比。如:0.666666等不等于0.666667呢?不一定,若要求误差在0.001范围内则

等,若要求在0.00000001范围内则不相等。此时,应改用下列式子判断X是否等于Y:ABS(X-Y)<1e-3

4、关系表达式的值是一个布尔量(TRUE、FALSE)o

三、布尔(逻辑)运算符

1、运算符:NOT(逻辑非)、AND(逻辑与)、OR(逻辑或)

2、设A、B为布尔型数据,则“真值表”如下:

ABNOTAAANDBAORB

TTFTT

TFFFT

FTTFT

FFTFF

四、关系(逻辑)表达式:用逻辑运算符连接起来的式子

设X为整数,则

1、表示:正奇数:(X>0)AND(ODD(X))

1到10之间的整数:(X>=1)AND(X<=10)

大于100或小于10的整数:(X>100)OR(X<10)

2、运算符的运算次序(优先级)

从高到低如下:

括号(内层优先)>函数——>NOT——>*、/、DIV、MOD、AND——>+、-、OR——>关系(逻辑)运算

符;

运算规律:先高级后低级,同级自左向右运算。

3、例子:

©TRUEANDNOT(1<-1)值为TRUE;

②设X=6,1=4,J=6,贝ij:

TRUEANDNOT(X>5)AND(I>J+5)ORTRUE>FALSEANDFALSE值为TRUE。

③设X=5(6),求以下表达式的值:(X+5)*ODD(X)+XDIV2值为12(3)。

④已知X,Y,Z均为1,求值:

TRUEAND(X>0)AND(Y>0)OR(Z<0)值为TRUE。

4^布尔变量的输入、输出:

输入:只能用赋值语句(A:=TRUE),不能用读语句。

输出:WRITELN('A=',A);则输出A=TRUE

么,如何用计算机语言完成以上的例子呢?下面我们就学习PASCAL中的条件语句。

五、选择语句:IF语句

1、格式:1F条件表达式THEN语句1

{ELSE语句2);

比如:①若A为正数,则打印A,否则打印-A:

语句如下:IFA>0THENWRITELN(A)

ELSEWRITELN(-A);

改用ABS函数做:WRITELN(ABS(A))。

②若X>R,则输出X:

语句如下:IFX>=0THENWRITELN(X);

③学生练习:若X>0,则求X的平方根,否则求X的平方。

2、例题:

例一:将③编写成程序,学生练习自己编。

例二:超市购物:假设超市购物不超过100元时按九折付款,如超过100元,则超过部分按七折收费。编程帮助超

市完成这一转化工作。

VARW,X:REAL;

BEGIN

READLN(W);

IFW<=100THENX:=0.9*W

ELSEX:=0,9*100+0.7*(W-100);

WRITELN(X);

END.

例三:输入A,B两个数,若A>B则交换A,Bo

IFA>BTHENT:=B;B:=A:A:=T;对吗?上机测试!

结论:在条件成立的情况下应该做一件事(3条语句),而现在只做了1个语句。怎么办?

K、复合语句:

BEGIN语句组END;

例三应改为IFA>BTHEN

BEGIN

T:=B;

B:=A;

A:=T;

END.

例四:给出三角形的三个边长A,B,C,求三角形的面积。

1、面积公式:S=(A+B+C)/2;AREA=SQRT(S*(S-A)*(S-B)*(S-C))

2、构成三角形的条件:A+B>C且A+C>B且B+C>A

3、画出N-S流程图:

4、程序:

例五:从键盘输入两个数,按从小到大输出。

例六:从键盘输入3个数,按从小到大输出。

家庭作业:1、某运输公司的收费公式如下:

运费=里程(公里)*货重(吨)*单价(每公里每吨运费),

例外按以下方法打折:

货重WW<2W>=2且W<4W>=4且W<6W>=6

距离S>=3002%4%6%8%

距离S<30002%4%6%

请编制•个程序帮助算运费。

2、输入一个字符,输出它的ASCII码值和它的前驱、后继字符。

选择结构的程序设计(二)

一、IF语句的嵌套:有时一个IF语句解决不了问题,如:

'+1(X>0)

例一:计算符号函数的值。(已知Y={0(X=0))

.-I(X<0)

方法1:BEGIN

WRITE('INPUTX:');

READLN(X);

IFX>OTHENY:=1;

IFX=OTHENY:=0;

IFX<0THENY:=-l;

WRITE(Y);

END.

方法2:BEGIN①IF语句的第一种嵌套格式:套在ELSE语句后面;

WRITE(INPUTX:);②ELSE与最近的IF语句配对;

READLN(X);③尽量采用缩进格式,增强程序的可读性;

IFX>0THENY:=1

ELSEIFX=0THENY:=0

ELSEY:=-l;

WRITE(Y);

END.

方法3:BEGINIF语句的第二种嵌套格式:套在THEN

WRITE(INPUTX:);语句后面;少用为妙!

READLN(X);

Y:=-l;

IFX>=0THENIFX>0THENY:=1

ELSEY:=0;

WRITE(Y);

END.

例二、输入三角形的三边,判断它是否是直角三角形。

分析:先输入三边(a,b,c),

再判断是否能构成三角形(a+b>c且a+c>b且b+c>a),

温馨提示

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

评论

0/150

提交评论