惠阳中山中学计算机奥赛培训讲义文档格式.doc
《惠阳中山中学计算机奥赛培训讲义文档格式.doc》由会员分享,可在线阅读,更多相关《惠阳中山中学计算机奥赛培训讲义文档格式.doc(76页珍藏版)》请在冰豆网上搜索。
编程序(软件)给别人用;
国际信息学(计算机)奥林匹克竞赛——全国中学生信息学奥赛——广东省中学生信息学奥赛;
比赛的内容就是编程比赛;
这也是我们的学习目的和内容;
计算机程序设计语言:
人类语言——>
用程序设计语言(如Pascal语言)表示——>
再翻译成机器语言;
二、计算机解决问题的步骤
做任何一件事都要有一定的的步骤,如求1+2+3+4+5+6+7+8+9+10;
计算机解题步骤:
分析问题
——>
确定解决问题的方法和步骤(即算法)
——>
选择一种计算机语言,根据算法编写计算机程序
——>
让计算机执行这个程序获得结果
三、算法的概念
1、为解决某一个问题而采取的方法和步骤,称为算法。
或者说算法是解决一个问题的方法的精确描述。
如:
已知半径,计算圆的面积的算法。
算法读入半径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;