惠阳中山中学计算机奥赛培训讲义Word格式.doc
《惠阳中山中学计算机奥赛培训讲义Word格式.doc》由会员分享,可在线阅读,更多相关《惠阳中山中学计算机奥赛培训讲义Word格式.doc(76页珍藏版)》请在冰点文库上搜索。
如:
已知半径,计算圆的面积的算法。
算法读入半径R的值——>
计算圆的面积S=π*R*R——>
输出圆的面积S。
注意:
算法不一定唯一,如求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;
C、B——>
D;
3、C——>
B、D——>
注意:
一个算法往往具有代表性,能解决一类问题,如例一可以引申为:
交换两个变量的值。
例二:
输入1个数给计算机,若为正数则打印出来。
算法:
①输入1个数——>
X;
②判断X>
0?
;
③若X>
0,则打印X;
例三:
分别输入10个数,打印出其中的正数。
算法1:
设T为计数器。
①输入第一个数——>
X,1——>
T;
②判断X>
0?
;
③若X>
0,则打印输出;
④判断T>
10?
⑤若T>
10,则表示10个数已经处理完,结束。
否则,再输入下一个数——>
X,且T+1——>
T,然后转②继续执行。
例四:
从10个数中挑选出最大的一个数,打印输出。
诱导:
以从10个人中挑出最高的人为例,让学生发挥想象。
“打擂台”或“比武招亲”,设MAX为大力士,T为计数器。
①先输入1个数——>
MAX,1——>
(擂主)
②再输入下一个数——>
X,T+1——>
(上一个挑战者)
③比较X>
MAX?
(比武)
④若X>
MAX成立,X——>
MAX;
(打败擂主,即新的大力士产生)
否则,MAX仍然是最厉害,即值不变;
(败下阵来)
⑤判断T=10?
(看看还有没有挑战者)
⑥若T=10成立,则说明10个数已比较玩,最大的数在MAX中,输出MAX即可;
(颁奖)
否则,转②继续找下一个挑战者比武。
(下一个)
两个两个打(淘汰赛)。
2
3
4
5
7
6
1
10
9
8
例五:
计算1*2*3*4*5*6*7*8*9*10。
描述:
阶乘10!
找两个容器T和I;
T为累乘器,初值为1;
I为计数器,初值为1。
①1——>
T,1——>
I;
②T*I——>
③I+1——>
④判断I>
⑤成立,则输出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图:
条件
成立不成立
AB
当条件成立时做
A
直到条件成立时为止
B
C
一个算法往往需要几个简单结构复合在一起才能表示,即复合结构。
练习:
用N-S图画出以上5个例子的流程图,举例让学生模仿。
将第一个数—>
MAX,将1—>
T
将下一个数—>
X,T+1—>
直到T=10为止
输出MAX
1—>
T,1—>
I
直到I>
10为止
输出T
T*I—>
T+1—>
X>
MAX
YN
X——>
MAX
当型循环
例五
例四(算法一)
输入第一个数——>
T
当T<
=10做
X>
0
YN
打印X
输入下一个数——>
X
T+1——>
输入1个数——>
X>
YN
找一个C
A——>
B——>
C——>
例一(算法1)例二
例三
让学生将直到型循环和当型循环相互转换:
关键是条件的取反。
七、课后作业
1、求1+1/2+1/3+1/4+……+1/10。
2、求两个自然数的最大公约数。
要求:
写出算法,画出相应的N-S流程图。
0——>
S,1——>
当T<
=10做
输出S
S+1/T——>
S
T+1——>
输入M,N
当N<
>
0时做
输出M
M除以N的余数—>
R
N—>
M
R—>
N
第1题
第2题
Pascal程序设计语言简介
Pascal语言是学习计算机程序设计首选的语言,它的数据类型丰富、程序结构清晰,对培训逻辑思维能力和结构化程序设计思想很有益。
是国际、国内比赛的首选语言,也是大学计算机专业的必修课程。
Pascal种类、版本较多。
我们学习的是TurboPascal7.0,即TP7.0。
计算机程序是什么:
程序是一些计算机能够读懂的命令或指令的有序集合,它的作用是按照编写者的意图完成一定的功能,编写这样的程序叫程序设计。
如:
下面是一个最简单的Pascal程序,它的作用是在屏幕上显示“HOWDOYOUDO!
”
PROGRAMEX1(INPUT,OUTPUT);
BEGIN
WRITELN(‘HOWDOYOUDO!
’);
END.
下面我们就开始讲解Pascal程序设计的基础知识。
一、一个完整的PASCAL程序的组成
再看一个简单的例子:
constp=3.1415926;
varr:
integer;
s:
real;
BEGIN
Readln(r);
S:
=p*r*r;
Write(s);
END.
从上面两个简单例子,我们归纳出:
PROGRAM——表示一个程序的开始
空格——不能省,但可以有多个
程序首部程序名——任意,但一般要有意义
(可以省略)(INPUT,OUTPUT)——参数,表示需要从键盘输入数据,在显示器上显示结果
;
——不能省,表示一个语句结束
说明部分:
说明程序中用到的标识符(如符号常量、变量)。
标识符必须以字母开头,后跟字母或数字,不许有空格。
PASCAL程序组成如:
B,TWO,X1,MY_1是正确的;
3X,MYFUNCTION,ABC.123是错误的。
用const说明常量;
constp=3.1415926;
用var说明变量;
varr:
BEGIN
语句;
——一个语句一般表示一个动作,语句之间要用“;
”分割
程序体END
句号“.”——表示一个程序的结束,不能省。
例二、已知梯形的上底、下底和高,求梯形的面积。
PROGRAMAREA(INPUT,OUTPUT);
说明:
1、标识符要先定义后使用,并且先说明常量再说明变量;
2、数据类型:
相同类型可以一起定义,用逗号割开;
3、赋值号:
不是等于号,是“:
=”
4、乘号:
“*”,不能省略,如AB一定要写成A*B
5、除引号里面的字符外,程序中的字母不分大小写;
6、按造格式写,注意对齐。
VARR1,R2,H,S:
REAL;
BEGIN
R1:
=4.5;
R2:
=8.1;
H:
=6;
S:
=(R1+R2)*H/2;
WRITEIN(S);
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-38~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
科学计数法,如120000000,即1.2*108,应写成1.2E+8
—0.000000012,即—1.2*10—8,应写成—1.2E—8
3、字符常量:
ASCII码字符集,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;