信息学初级教程

2019-01-19 17:21

广铁一中

信息学竞赛初级教材

前言:信息学奥赛是全国5大奥赛之一,初中拿省赛一等奖能上重点中学(一般是华附、省十、六中、二中、铁一和执信),高中拿省赛一等奖能保送重点大学。但凡是只想拿奖而又不努力的基本上是无功而返,除非是天才。一般来说,只有数学基础中上等水平才能进入信息学奥赛小组,所以你能开始学习首先这就是你的优势,你现在要做得就是将你的优势变成你的胜势,注意以下方法,非常的重要;

1、时间:时间是你成功的关键,因为都是初学,学完一个巩固一个又要学习下一个。保证你学习的时间和效率,最好是每次连续2个小时,尤其是以后学习高级算法时。一周一般最少要保证3次,最好是5、6次(包括双休)

2、方法:不同的学生适合不同的方法,你要找到最适合你的方法,下面的每一章结构都是2个(没有将总结写上去),基本知识和练习。环节包括:自己看,做练习,老师讲解重难点,自己总结体会。每个环节基本上都不能省略,尤其是练习和总结体会分类。

能将上面两个方面记住并落实到实处,成功就在等你。老师在你学习的环节中就像教你功夫的师傅,如果你全部跟着老师的步伐,只能做一个平庸的武林人士;你要想成为武林高手,一定要走在别人前面,努力刻苦专心时刻伴随着你。

这是一个被保送清华的oier也是我以前的学生说的话:许多事情之所以半途而废,往往不是因为难度太大,而是觉得成功离我们太远。确切的说,我们不是因为失败而放弃,而是因为放弃而失败。大家以此自勉,请记住:保证你的时间,做好每一个环节尤其是练习和总结体会分类。

第一章

一、知识点拨

抄写 你人生中的第一个pascal程序:

程序结果输出You are welcome to the PASCAL world ! 1、 begin writeln(’You are welcome to the PASCAL world ! ’); end.

2、以下程序是求正方形的面积

var a,s:integer; {声明a,s为整数类型} begin{程序开始} readln(a);{从键盘读入a的值} s:=a*a;{把a*a的值存入s中} writeln(s);{把s输出到屏幕} end.{程序结束}

二、竞赛练习

根据例题,请编写一个程序,求一个正方的周长。程序名字为:zhc.pas。

根据例题,请编写一个程序,求一个长方形的周长 程序名字为:cc.pas。

根据例题,请编写一个程序,求一个三角形的周长 程序名:san.pas

请编写一个程序,从键盘输入两个整数,要求求和然后输出和 程序名:he.pas 例如: 输入 1 4 输出 5

在编写过程中注意的就是结构和方法,包括每一个符号。在学习中你应该感觉到了数学在里面的作用。很多时候你可以和数学练习。

1、除BEGIN外,每一句PASCAL语句后均有分号或句号,只有程序的最后一个END后才用句号,而其它任何行未都是分号!!!每一行一般只写一个句子 2、下面开始进行基础知识的补充及相关的说明,你可以先简单看看,再接着学习;也可以先学习然后再回过头看看。

1

PASCAL语言程序基本概念 补充知识,就算看也不要花多的时间

1、PASCAL程序的组成,以第一章例题二为例。

每一个PASCAL程序都由程序头部和程序主体组成,最后以“end.”作为整个程序的结束。VAR为开始的部分是说明程序中要用到的变量,说明其名称及类型,相当于数学中的未知数。var a,s:integer; a,s是名称,integer为整数类型。 2、PASCAL的数据类型

整数类型(没有小数部分)

INTEGER:取值范围[-32768,32767]。占用内存2个字节(16位)。 WORD:取值范围[0,65535]。占用内存2个字节(16位)。 BYTE:取值范围[0,255]。占用内存1个字节(8位)。

LONGINT:取值范围[-2147483648,2147483647]。占用内存4个字节(32位)。 SHORTINT:取值范围[-128,127]。占用内存1个字节(8位)。 实数类型

REAL:取值范围[2.9E-39,1.7E+38]。占用内存6个字节(48位)。

实数的表示法有两种:1、直接表示,如:-0.4576, 123.567, -234, 0 2、科学计数法,如:1.234E-4, -3.546E12

表示1.234乘10的负4次.方;-3.546乘10的12次方。

字符类型

CHAR:单字符型,即取1个字符,如‘A’, ‘1’。

STRING:字符串型,即多个字符,如‘ABCD!123’,‘%¥#DS12’。

如果一个常/变量只要用到1个字符,则可把它定义成CHAR型;如果是多个字符,但不知确切多少个,则定义成STRING型,字符串在PASCAL中使用都是加上单引号。

布尔型

BOOLEAN:布尔型即为逻辑型,取值为TRUE、FALSE, 即真、假。

最开始你知道integer和real就可以了。

3、常量、变量、标准函数和表达式

常量:程序运行过程中,其值不会改变的量,称为常量。在程序头部中说明,以CONST引导。圆周率不会变,因此可以定义 const pi=3.1415926; 这个pi就是常量。

变量:程序运行过程中,其值可改变的量,称为变量。在程序头部中加以说明,以VAR引导。如a、s

标准函数(简单看看,以后用到再回过头来看看) 函数名 Abs Chr Copy Cos Exp Int Length

语法 Abs(r:real/integer):real/integer chr(i:integer):char Copy(s:string;n,m:integer):string Cos(r:real):real Exp(r:real):real Int(r:real):real Length(s:string):integer 2

说明 返回参数R的绝对值,类型与参数相同 返回参数所对应的ASCII码值,类型为CHAR 返回字串S的第N个字符开始的M个字符 返回参数R的余弦值 返回参数R的以e为底的幂 返回参数R的整数部分,返回的值是实数类型 返回字串S的长度 Ln odd ord random round sin sqrt trunc 过程名 Delay (CRT单元) Delete Exit Gotoxy (CRT单元) halt nosound Sound (CRT单元) str val Ln(r:real):real Odd(I:integer):boolean Ord(s:scalar):integer Random Round(r:real):longint Sin(r:real):real sqrt(r:real):real Trunc(r:real):integer 语法 Delay(ms:word) 返回参数R的自然对数 判断参数I是否奇数,如是,则返回TRUE 返回任意有序量的序值 返回0至于间的任意一个小数(随机数) 返回参数R的四舍五入取整值 返回参数R的正弦值 返回参数R的平方根 返回参数R的整数部分,返回的值是整数类型 标准过程 说明 延迟发声MS毫秒 Delete(s:string;n,m:integer) Exit Gotoxy(x,y:integer) Halt Nosound Sound(f:word) Str(I:integer;var s:string) Val(s:string;var r:real;var c:word) 把串S中的第N个字符开始的M个字符删除 从当前执行的程序中退出 把光标定位到第X列Y行处 中断程序的运行 关闭机器喇叭 让机器喇叭发出频率为F的声音,直到nosound 把数值I转换为字符串S 把字符串S转换为数值R,并返回错误代码C 表达式

由算术运算符(+,—,*,/)及数字、常量、变量、标准函数所组成的式子中心表达

式。如:5+9; A*B-34*ABS(-34)/INT(B)。另外,PASCAL中有两个很有用的运算符,DIV:求商的整数值;MOD:求余数。如:记住这两个运算及用法,非常有用 8 DIV 3 的值是2, 10 DIV 3 的值是3;

8 MOD 3的值是2, 10 MOD 3的值是1;

在PASCAL的表达式中,不允许出现我们日常生活中的那种分式或根号等式子,我们必须按照PASCAL的语法把它们改写成PASCAL表达式。在PASCAL的表达式中,运算顺序是:

()? 函数 ? *,/,DIV,MOD ,and? +,-,or

如:把下列算式改写成PASCAL表达式:

改写为PASCAL表达式为:(x*x+3*y-5*(z-2))/(x-y*y)

从上例中可以看出:

1、 PASCAL表达式中没有分式,只能以除号“/”来隔开; 2、 PASCAL表达式中的分子与分母应该用括号括开;

3、 PASCAL表达式中只有小括号,不能有中括号或大括号,小括号可以有很多层; 4、 PASCAL表达式中没有乘幂,内能用乘法来表达;

5、 PASCAL*表达式中任意两个常量、变量、数值、括号、函数之间都必须不能缺省

运算符,即乘号必不可少;

这些要求希望大家记熟,这是我们编写PASCAL程序的必要基础。

x?3y?5(z?2)x?y22

3

第二章

一、知识点拨

运算符div mod

div 是一个数除以另外一个数的整数部分: 5 div 2 =2 (也就是商) mod 是一个数除以另外一个数的余数部分: 5 mod 2=1 (也就是余数) 试说出以下结果是多少?

31 div (5 mod 2) 31 div 5 mod 2 31 /5 div 2

以下程序是求从键盘输入一个两位数,要求交换个位和十位然后输出: var a,b,s:integer;{说明a,b,s都是整数} begin

readln(s);{从键盘输入一个两位数给s} a:=s div 10;{把s的十位给a} b:=s mod 10;{把s的个位给b} s:=b*10+a;{交换之后又给s} writeln(s);{输出交换后的值} end.{程序结束}

二、竞赛练习

一、根据例题,要求从键盘输入一个三位数,要求百位变十位,十位变个位,个位变百位(程序名:ji.pas) 例如 输入:123 输出 312

二、输入一个四位数要求输入各位数字的和。ghe.pas 例如 输入 4567 输出 22

四、编一程序,键盘输入整数A,B的值,然后打印A除以B的商的整数部分及余数。zen.pas

4


信息学初级教程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宁波市紧固件重点企业名录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: