




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青少年信息学竞赛简要介绍青少年信息学(计算机)奥林匹克竞赛(早期称为青少年计算机程序设计竞赛)是旨在广大青少年中普及计算机教育,推广计算机应用的一项学科性竞赛活动。全国从1984年开始举办全国性竞赛。而自从1989年我国参加第一届国际信息学奥林匹克(International Olympiad in Informatics, 简称IOI)以来,全国青少年计算机程序设计竞赛也更名为全国青少年信息学(计算机)奥林匹克(National Olympiad in Informatics, 简称NOI)。全国信息学奥林匹克竞赛是经国家教委批准,中国科协具体领导,由中国计算机学会主办的。浙江省信息学奥林匹
2、克竞赛活动从84年参加全国赛开始,由省科学技术协会、省教育厅和省计算机学会联合组织。 为促进计算机普及并兼顾提高,从95年开始全国举办信息学奥林匹克竞赛分区联赛,根据浙江实际情况,我省将分区联赛初、复赛作为省信息学奥赛的初赛和复赛。浙江省开始几年初赛试题自己命题,现在采用全国卷。一 信息学奥林匹克竞赛的内容和考核方式:对学生学习计算机理论知识和实践能力有一个整体性的全面要求,也即整个信息学(计算机)竞赛已成为智力和应用计算机能力的竞赛,涉及到有关计算机基础知识、计算机软件知识、程序设计知识、组合数学和运筹学的知识、人工智能初步知识以及计算机应用知识等,同时要求学生有较强的编程和上机调试的实践能
3、力。 1 NOI全国分区联赛初赛 (每年10月左右)对象:在校中学生, 分初中、高中组考试形式:笔试 性质: 普及确定获初级选手证书名单及进入复赛名单,在各地市举行。2NOI全国分区联赛复赛 (每年12月左右)对象:初赛优胜者 分初中、高中组考试形式:上机试 性质:普及兼顾提高确定全国分区联赛一、二等奖,省各等奖及全国各级证书获得者名单,在杭州进行,省派评委协助测评。信息学奥林匹克竞赛复赛的考核方式是采用封闭式(连续34小时)上机编程解题的形式,编程语言基本限于BASIC与 PASCAL,竞赛难度较大。程序完成后要通过严格的数据测试,这就对同学们编程能力有更高的要求:不但要能编程,编好的程序能
4、运行,而且所设计的程序还要能通过在各种边界条件下和各种环境下设置的测试数据。二 全国青少年信息学奥林匹克联赛大纲竞赛大纲一、初赛内容与要求:(表示普及组可不涉及,以下同)计基算本机常的识*诞生与发展 *特点 *在现代社会中的应用 *计算机系统的基本组成 *计算机中的数的表示 *计算机的工作原理# *计算机信息安全基础知识 *计算机网络 计 基算 本机 操的 作*常见操作系统的使用基础*常用输入/输出设备的种类、功能、使用*汉字输入/输出方法 *常用计算机屏示信息程序设计基本知识程序的表示*自然语言的描述 *PASCAL或BASIC语言数据结构*简单数据的类型 *构造类型:数组、字符串*了解基本
5、数据结构(线性表、队列与栈)程序设计*结构化程序的基本概念 *阅读理解程序的基本能力*具有完成下列过程的能力:现实世界(指知识范畴的问题)信息世界(表达解法)计算机世界(将解法用计算机能实现的数据结构和算法描述出来)基本算法处 理*简单搜索 *字串处理 *排序 *查找 *统计 *分类 *合并 *简单的回溯算法 *简单的递归算法二、复赛内容与要求: 在初赛的内容上增加以下内容:计算机软 件*操作系统的使用知识 *编程语言的使用 数据结构*结构类型中的记录类型 *指针类型 *文件(提高组必须会使用文本文件输入)*链表 *树 *图#程序设计*程序设计能力 *设计测试数据的能力*运行时间和占用空间的估
6、算能力#算法处理*排列组合的应用 *进一步加深回溯算法、递归算法*分治法 *搜索算法:宽度、深度优先算法*表达式处理:计算、展开、化简等# *动态规划#三、初赛试题类型:注:试题语言两者选一、高中学生必须参加提高组联赛。 ( 程序设计语言:基本BASIC或TURBO PASCAL) *判断 *填空 *完善程序 *读程序写运行结果 *问答四、推荐读物: *分区联赛辅导丛书 *学生计算机世界报三 Pascal语言一、 结构化程序设计结构化程序设计实际上就是为了使程序具有合理的结构,以便保证和验证程序的正确性而规定的一套进行结构程序设计的方法。用结构化程序设计的方法设计出来的程序称为结构化程序。结构
7、化程序设计语言就是反映了结构化程序设计的要求和限制,便于用来书写结构化程序的语言。用这种语言书写的程序易于保证正确性。 二、 PASCAL语言的特色 从使用者的角度看,PASCAL语言有以下几个主要特点: 1、它是结构化语言 PASCAL语言是结构化的程序设计语言。PASCAL语言提供了直接实现3种基本结构的语句心以及定义子程序(“过程”和“函数”)的功能。可以方便的书写出结构化的程序。在编写程序时可以完全不使用转向语句。这就易于保证程序的正确性和易读性。PASCAL语言强调的是可靠性、易读性和概念性的清晰性。 2、有丰富的数据类型 PASCAL语言提供了整型、实型、字符型、布尔型、枚举型、子
8、域型以及由以上类型构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了指针类型。PASCAL语言所提供的丰富的数据结构和上述的结构化性质,使得它可以被方便地用来描述复杂的算法,得到质量较高的程序。 3、能适应于数值计算和非数值信息处理领域 在PASCAL语言出现之前,FORTRAN语言主要处理科学计算,而COBOL语言则主要用于非数值信息处理。PASCAL语言则兼顾了这两个不同领域的应用。PASCAL语言可广泛应用于各种领域,还可以用于计算机辅助教育、计算机绘图等应用领域。 4、PASCAL程序的书写格式比较自由 PASCAL允许一行写多个语句,一个语句可以分写在多行上,这样就可以使P
9、ASCAL程序写得像讲诗歌格式一样优美,便于阅读。 除了以上优点外,PASCAL语言还具有简单易学的特点,许多学校把PASCAL作为程序设计课程的第一种程序设计语言。 PASCA:L语言的主要缺点:不够灵活,书写较麻烦。四 数据结构 数据结构是计算机专业基础课程之一,是十分重要的核心课程。计算机的所有系统软件和应用软件都要用到各种类型的数据结构。要想更好地运用计算机来解决实际问题,仅仅学习计算机语言而缺乏数据结构知识是远远不够的,而打好“数据结构”这门课程的扎实基础,对于学习计算机专业的其他课程都是十分重要的。随着计算机应用领域不断扩大,非数值计算问题占据了当今计算机应用的绝大多数,简单的数据
10、类型已经远远不能满足需要,各数据元素之间的复杂联系已经不是普通数学方程所能表达的。因此,掌握好数据结构方面的知识,对于提高我们解决实际问题的能力将会有莫大的帮助。实际上一个好的程序无非是选择一个合适的数据结构和好的算法,而好的算法的选择很大程度上取决于描述实际问题的数据结构的选取。所以,学好数据结构,将是进一步提高我们程序设计的关键之一。五 算法例子1称小球重量:有6个小球分别用16编号, 其中5个重量相同。现在有一架台称,一次能称出放在上面的若干物体的总重,要求编一个程序,让计算机找出一种称法,只要称3次就可以知道每个小球的重量。具体操作时由操作者默想6个物体的重量,然后由计算机用编号提问若
11、干物体的重量,如此3次后程序应能输出每个物体的重量。PROGRAM EX02;VARS1, S2, S3, p: integer;BEGINP:=0;write(请输入1号+2号+3号+4号的重量总和:); read(s1);write(请输入1号+2号+5号的重量总和:'); read(S2);IF 3*s1<>4*s2 THENBEGINwrite('请输入1号+3号的重量总和:); read(s3);IF S1+S3=2*S2 THEN BEGIN P:=1; Writeln(第1号重, S3+S2-S1,其余重,S2-S3);END;IF S3+2*S2 =
12、2*S1 THENBEGIN p:=1; writen(第2号重, 3*S2-2*S1, ,其余重,S1-S2); END;IF 2*S2+3*S33*S1 THENBEGIN p:=1; writeln(第3号重,S3-(S2 div 3),其余重,S2 div 3); END;IF 2*S23*S3 THEN BEGIN p:=1; writeln(第4号重,S1-3*(S3 div 2),其余重,S3 div 2); END;IF S1 =2*S3 THENBEGIN p:=1; writeln(第5号重,s2-2*(s3 div 2),其余重, s3 div 2), END;IF p:
13、=0 THEN writeln('输入的数据不正确!');ENDELSE IF 3*s1 = 4*s2 THENBEGIN write('请输入6号的重量:'); read(s3);writeln('第6号重',s3, '其余重' ,s2 div 3);END;Writeln;END.2打印奇数阶幻方: 方法:M×M 阶奇数幻方,在最后一行(第 M行)的中间(M+1)/2处填上1,左下方向填2, .,若前方已经有数,在原数的上方填入。 三阶: 2 9 4 7 5 3程序如下: 6 1 8program huafang;
14、var i,j,k,n :integer; a: array1.20,1.20 of integer; 五阶:9 2 25 18 11 begin 3 21 19 12 10 for i:= 1 to 20 do 22 20 13 6 4 for j:= 1 to 20 do ai,j:=0; 16 14 7 5 23 write('Input n:'); readln(n); 15 8 1 24 17 while (n mod 2=1) and (n<=19) do begin i:=n; j:=(n div 2)+1; ai,j:=1; for k:= 2 to n*
15、n do begin i:=i+1; j:=j-1; if i=n+1 then i:=1; if j=0 then j:=n; if ai,j=0 then ai,j:=k else begin i:=i-2; j:=j+1; if i<0 then i:=i+n; if j=n+1 then j:=1; ai,j:=k; end; end; for i:= 1 to n do begin for j:= 1 to n do write(ai,j:4); writeln; end; exit; end; write('Error!'); end.313个人编号围成一圈,
16、从1开始,4个一数,数到者出列,打印出列的顺序。(方法一:) Program EX1301; Const m=13;t=4; Var i,k,p :integer; A:array1.m of integer; Begin For i:= 1 to m do ai:=1; I:=0; k:=0; p:=0; Repeat I:=i+1;if i=m+1 then i:=1; K:=k+ai; If k=t then Begin Write(i:4);ai:=0; p:=p+1; k:=0; End; Until p=m; Writeln; End. (方法二:链接表) Program EX13
17、02; Const m=13;t=4; Var i,j,k,p :integer; A:array1.m of integer; Begin For i:= 1 to m-1 do ai:=i+1; Am:=1; i:=m; k:=1; p:=0; Repeat i:=ai; k:=k+1; If k=t then Begin Write(ai:4); ai:=aai; p:=p+1; k:=1; End; Until p=m; writeln; End.出列顺序: 4 8 12 3 9 1 7 2 11 10 13 6 5计算机的数制、码制及其运算1 计算机是智能化的电器设备计算机就其本身来
18、说是一个电器设备,为了能够快速存储、处理、传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断,电压高和低,这两种状态最容易实现,最稳定;也最容易实现对电路本身的控制。我们将计算机所能表示这样的状态,用0,1来表示,就形成了用二进制数表示计算机内部的所有运算和操作。计算机内部是以二进制形式表示数据的(指令、被处理的数据)。二进制数的运算规则:00=0 01=1 10=1 11=10;0×0=0 0×1=0 1×0=0 1×1=12 进位基数和位权值数的进制与基数计数的进制不同,则它们的基数也不相同,用到的数码也不一样。如表1-1所示。进制
19、基数数码二进制201三进制3012四进制40123八进制801234567十进制100123456789十六进制160123456789ABCDEF进制基数:指的是该进位记数制中可能用到的数码个数。对于任意计数进制:每一位计满这个基数后,都应向高位进位。二进制,逢二进一;八进制,逢八进一;十进制,逢十进一;十六进制,逢十六进一;R进制(R为任意正整数):数码个数为R个,分别为0R-1,每一位数当计满R后,应向高位进位。数的权不同进制的数,基数不同,其每位上所代表的值的大小也不相同,我们称之为“权”。如:(219)10=2×1021×1019×100 (按权展开式)
20、2在百位上代表2个100即200;1在十位上代表1个10即10;9在个位上代表9个1即9。注:以后我们用下标来注明圆括号内数的进制。 (11010)2=1×241×230×221×210×20(273)8=2×827×813×80(27B)16=2×1627×16111×160任意R进制S:S=knkn-1k0.k-1k-2k-m = kn×Rnkn-1×Rn-1k0×R0.k-1×R-1k-2×R-2k-m×R-mR为进位基
21、数,Ri是对应的权值。3 任意进制的数转换成十进制整数将任意进制数转换成十进制数的基本方法是按权展开,然后求和按权相加法。因为在上式中基数我们已经转换成了相应的十进制数,所以展开式即是一个十进制数的表达式。(11010)2=1×241×230×221×210×20=(26)10(123)8=1×822×813×80=(83)10 (1AB)16=(427)104 十进制整数转换成任意进制数将十进制整数转换成任意进制数的基本方法是:将十进制数除以所给定的进制的基数,再反向取余。例如:将十进制数39用二进制数表示,用除
22、二反向取余法。 (39)10=(100111)2(245)10=(365)8减权定位法:把十进制数展开成所指定进制的基数的整数次幂之和,然后找到对应位上取值。例如:将十进制数123用二进制数表示。(123)10=64+32+16+8+0+2+1=1×26+1×25+1×24+1×23+0×22+1×21+1×20 =(1111011)25 十进制小数转换成任意进制数常用把给定的十进制小数乘以给定进制数的基数,取积的整数部分,得到给定进制小数的小数点的第1位;乘积的小数部分再乘以基数,积的整数部分为小数点后的第2位;一直重复做
23、下去,就可以得到希望的进制小数。例如:将十进制小数0.75转换成二进制小数。0.75×2=1.50.5×2=1 (0.75)10=(0.11)2(0.315)10=(0.0101)2不是所有的十进制小数都可以用一个精确的二进制小数表示。6 二进制与八进制之间的转换三位二进制,正好能完全表示八进制的8个数码。二进制000001010011100101110111八进制01234567二进制数转换成八进制数的方法是:从小数点开始,分别向左向右,每3位二进制数为一组,用八进制来书写。若左侧位数不是3的倍数,则最左侧用0补充,若右侧位数不是3的倍数,则最右侧用0补充。例如:(101
24、10111.01101)2=(267.32)8反过来,八进制数转换成二进制数的方法:将每个八进制数用3位二进制数来书写。例如:(1234.45)8=(1010011.100101)27 二进制与十六进制之间的转换二进制0000000100101001101010111100110111101111十六进制0129ABCDEF每四位二进制数可以用一位十六进制数表示。二进制数转换成十六进制数方法:从小数点开始,分别向左向右,每4位二进制数为一组,用十六进制来书写。若左侧位数不是4的倍数,则最左侧用0补充,若右侧位数不是4的倍数,则最右侧用0补充。例如:(110110111.01101)2=(1B7
25、.68)16十六进制数转换成二进制数方法:将每个十六进制数用4位二进制来书写,其最左或最右侧的0可以省去。例如:(7AC.DE)16=(11110101100.1101111)2综合例子:(3/32)10转换成二进制解:(3/32)10=3×2-5=(11)2×(0.00001)2=(0.00011)2总之:十进制数与二进制数之间的转换必须用前面讲的繁琐方法进行,因为10不能用2的整数次幂进行表示。也就是不能象八进制或十六进制数那样用几位二进制数表示十进制数的十个数码。把十进制数27.625转换成二进制、八进数和十六进制数。解:(27)10=(11011)2(0.625)1
26、0=(0.101)2(27.625)10=(11011.101)2=(33.5)8=(1B.A)16要把一个十进制数转换为八进制数或十六进制,最先把它转换成二进制数,再由二进制数转换成八进制或十六进制。课后练习: 请用等号或不等号联接下列不同进位制数值的大小。(98.375)10 (142.3)8 (58.5)16 (1011000.0101)2 下面四个不同进制的数,最小的数是 。A (11011001)2 B (75)10 C (37)8 D (A7)16 小张用十六进制、八进制和十进制写了如下一个等式:52-19=33式中三个数是各不相同进位制的数,请问52、19、33,分别为 。A 八
27、进制,十进制,十六进制 B 十进制,十六进制,八进制C 八进制,十六进制,十进制 D 十进制,八进制,十六进制 十进制算术表达式:3*512+7*64+4*8+5的运算结果,用二进制表示为( )A 10111100101 B 11111100101 C 11110100101 D 11111101101二进数在计算机内的表示数值数据是用于表示数量的大小,经常用到数值范围和数据精度。数值范围指的是一种类型的数据所能表示的最大值和最小值;数据精度通常用实数所能指出的有效数字位数来表示。与用多少个二进制位表示某类数据,以及怎么对这些位进行编码有关。机器数与真值计算机中数的符号用数码表示。一般情况下,
28、用0表示正,用1表示负。且符号位放在数的最高位。例:X1=(+1011011)2 真值数X2=(-1011011)20101101111011011机器数 连同符号位在一起作为一个数,称为机器数。而它的数值部分称为真值数。一、 数的定点和浮点表示计算机在处理数据时,要考虑到小数点的位置。如果将小数点固定在某一位置,则称为定点表示;如果小数点可以任意移动,则称为浮点表示。1 数的定点表示法定点小数和定点整数定点小数格式:小数点的位置固定在最高数据位的左边,小数点前面再设一位符号位。任何m位二进制小数在计算机中用m+1位二进制表示。Ns ·N-1N-2N-m+1N-m符号位 小数点 数值
29、部分由于小数点总是在符号位与最高数据位之间,因此在计算机中不明确表示出来定点整数格式:小数点位置固定在最低数据位的右边。整数又分为带符号和不带符号的两类。带符号的整数,符号位安排在最高(最左)位。NsNn-1Nn-2N1N0·符号位 n位数值 小数点由于小数点固定在最低数据右边,因此在计算机中不明确表示出来。n位带符号整数N=NsNn-1Nn-2N1N0在计算机中用n+1位二进制表示。对于不带符号的整数,把所有n+1位二进制位全部视为数值。在不同计算机中,使用多种位数的整数。16位,32位,64位,64位二进制来表示一个整数。2 数的浮点表示法浮点数是指小数点数据中的位置可以左右移动
30、的数。一个数N要用浮点数表示可以写:N=M*REM:浮点数的尾数。E:浮点数的指数或阶码。R:浮点数的基数,是常数一般取2、8或16一旦机器的浮点部件设计好了,基数的大小也就确定了,不能再改变了,基数在浮点数表示中不出现,是隐含的。浮点数的表示方法:EsEmE2E1MsMnM2M1阶符阶码 数符数码M:尾数。用定点小数表示,表示浮点数的有效位,其位数 n的大小决定了浮点数的精度。E:阶码。用定点整数表示。阶码用于表示小数点在浮点数中的位置。其位数m的大小反映此浮点数所能表示的数的范围。浮点数的规格化:规定计算机内浮点数的尾数用纯小数形式给出,而且当尾数的值不为0时,其绝对值应大于或等于0.5,
31、不符合这一规定的浮点数要进行规格化。(通过修改阶码的大小并同时左右移尾数的办法使其满足要求。)正数:1/2S1,二进制表示S=0.1负数:-1/2S-1,二进制表示S=1.1机器零:尾数为0,不论其阶码为何值。阶码的值遇到比它所能表示的最小值还小时,不管尾数为何值。_阶码、尾数全变成0。浮点数常用格式:符号位阶码尾数总位数短浮点数:182332长浮点数:1115264临时浮点数:1156480二、 二进制数值数据的编码方法编码方法是研究在计算机中如何方便的表示定点小数,定点整数和浮点数的正数、负数和零。最常用的编码方法有原码表示法、补码表示法、反码表示法三种。我们以定点小数为例:原码表示法:1
32、、定义:用机器数的最高(左)一位代表符号,其余各位给出数值(真值)的绝对值。X (0X1)X原=1-X (-1X0)1+|X|例:X1=0.1011 X2=-0.1011X1原=01011 X2原=11011符号 数值 符号 数值2真值零的原码表示法+0原=00000-0原=100003原码表示的范围如果用 n位二进制表示定点小数,其中一位符号位。最大数:+(1-2-(n-1)最小数:-(1-2-(n-1)原码编码个数:2n-1 0点两个编码例n=8最大数:01111111对应1-2-(8-1)=1-0.0000001=0.1111111=127/128最小数:11111111对应-(1-2-
33、(8-1)=-0.1111111=-127/128反码表示法1、 定义:用机器数的最高一位代表符号,数值位是对负数值各位取反的表示方法。取反01 10 X(0X1)X反=(2-2-n)+X (-1X0)例: X1=0.1011 X1反=01011X2=-0.1011 X2反=10100把任何一个二进制负数的绝对值与它的反码相加,得到的和永远1.1111,若在最后位上加1,恒等于2。2、 真值零的反码表示法+0反=00000 -0反=11111反码同原码一样,零的表示不是唯一的,有两个。补码表示法1、 模的概念例:11点6点往回拨5格 11-5=6往前拨7格 11+7=18 18-12=6舍掉进
34、位的情况下:从11点中减去5和往11上加7结果是一样的。例:9-3=69+7=16 16-10=6 (十进制)而7=12-5 对于12进制计数的基数12(模数)7是5对于12的补码。7=10-3 对于10进制计数的基数10(模数)7是3对于10的补码。在计算机中,机器表示的数据字长是固定的,对于n位数来说,模数大小是n位数全为1,且在最末位再加1。实际上模数的值已超出计算机所能表示的数的范围,因此模数在机器中是表示不出来的,若运算结果大模数,则模数自动丢掉。如果是n位整数(包括符号位),则它的模数是2n,若n位小数,则它的模数总是2。同理:在二进制定点小数减法运算中,减去一个二进制数,也可以化
35、为加上这个数对于模数2的补码。2、 定义:用机器数的最高(左)一位表示符号位,其余各位给出负数数值按2取模的结果。X (0 X1)X补=2+X ( -1X0)2-|X|例:X1=0.1011 X1补=01011X2=-0.1011 X2补=10101=10-0.10113、真值零的补码表示法+0补=00000-0补=10-0.0000=00000+0补=-0补4、在补码表示法中数的表示范围定点小数:最大:1-2-(n-1)最小:-1 -1补=10-1.0000=10000n=8 最大:1-2-7=0.1111111 补码01111111最小:-1 补码10000000由于在补码表示法中零有唯一
36、的编码,n位二进制能表示2n个补码数。5、补码的求法1、 从反码求补码|X|+X反+0.0001=10X反+0.0001=10-|X|=X补、从原码反码补码、补码原码除符号位外反转,再在未位加1。小结1、如果真值X为正数,则X原=X补=X反2、如果真值X为负数,X原、X补、X反表示不同。3、如果X=0,则X补有唯一编码,X原有两个不同表示方法,X反有两个不同表示方法。4、在定点小数中,原码和反码的表示范围为-1X1补码的表示范围为-1X1三、 整数的编码方法可用原码、补码、反码三种方法进行编码。1、 整数的编码方法与小数的编码方法的区别小数点位置表示范围模数的差别2、 整数的编码方法四、 浮点
37、的编码方法EsEMsMM部分采用定点小数形式,可以用原码表示,也可以用补码表示。阶码多采用整数形式的移码表示。1、 移码的表示方法移码定义X移=2n+X -2nX2n将这一定义与整数补码相比较 X 0X2nX补= 2n+1+X -2nX0当0X2n时,X移=2n+X=2n+X补当-2nX0时,X移=2n+X=(2n+1+X)-2nX移是将X补的符号位变反。例:X=+1010101 X补=01010101 X移=11010101 X=-1010101 X补=10101011 X移=001010112、 移码的特点:符号位在最高位,正用1表示,负用0表示。五、 ASCII码和BCD码ASCII码在
38、人们通常接触和处理信息中,有相当一部分是用字符或字符的组合来表示的。字符是指字母、数字以及其它一些可打印显示的符号。计算机和外部设备之间进行通讯联系时,还需要一些控制功能的特殊符号。例如,控制打印机的走纸符、换行符等。在计算机内部,上述字符必须用一种二进制代码来表示。日前,在国际上广泛采用的是美国标准信息交换代码(American Standard Code for Information Interchange),简称ASCII码。ASCII码是7位二进制编码,它可以表示27=128个字符。由于标准的7位ASCII码所能表示的字符较少,不能满足有些信息处理的需要,于是在ASCII码地基础上又
39、设计了一种扩充的ASCII码。扩充的ASCII码是一种8位二进制编码,它可以表示256个字符。BCD码十进制数在键盘输入和打印时,往往是将各个数字以ASCII码来表示的。但是它在计算机内运算时,是以二进制形式进行的。为了便于转换,设计了一些二进制编码来表示十进制数,称为二十进制码,即BCD码(Binary Coded Decimal)。BCD码是用四位二进制代码来表示一位十进制数。从16个四位二进制代码00001111中,只须选择其中10个作为十进制数的10个数字的代码就可以了。这样就有多种BCD码:如8421码、2421码、余3码和格雷码等。十进制数字8421码2421码余3码格雷码0000
40、0000000110000100010001010000012001000100101001130011001101100010401000100011101105010101011000111060110011010011010701110111101010008100011101011110091001111111000100由于8421码最常用,因此通常就把它称为BCD码。例如,十进制数315用BCD码表示为001100010101。注意:用BCD码表示的数,形式上像二进制数,但不是真正的二进制数。例如,315转换成二进制数是100111011B。在计算机中,可以把用BCD码表示的十进制
41、数转化成真正的二进制数后,再进行运算,也可以直接对用BCD码表示的十进制数进行计算。但需要进行“十进制调整”,以符合“逢十进一”的十进制运算规则。PASCAL程序设计初步PASCAL从1971年正式推出至今,已成为世界上最广泛使用的程序设计语言之一,PASCAL语言全面地体现了结构化程序设计的概念,具有丰富完备的数据类型、简明灵活的语句和清晰明了的模块结构,书写格式自由,运行效率高,查错能力强,移植性好,程序设计风格优美,有助于养成结构化程序设计的良好习惯。我们选择的是Turbo Pascal 6.0的版本的教材。要使用计算机解决实际问题,除了会理解题目和设计算法外,关键的一点就是要会编写程序
42、。程序其实就是用计算机语言来表述我们所设计的算法过程。计算机语言与我们的语言相类似,有着多种多样的语言,不过这些语言最终的目的都是一致的,都是为了让计算机看懂我们所设计的得算法。一 Pascal 程序形式:Program 程序名(程序参数表);说明部分程序体1 每一个完整语句由分号结束。2 具体程序不一定包括全部说明,但如果出现,必须按这里所指定的前后次序编写。3 程序体不可少,程序体以END.结束,且最后一个句号不能漏掉。4 END前一句语句的分号可有可无,有则编译时多一个空行。Label 标号说明;Const常量说明;Type类型说明;Var变量说明;Function函数说明;Proced
43、ure过程说明;Begin程序语句;程序语句;End.二 基本程序结构和几个概念:例:program pname;const n=4;type ar=array 1.4 of integer;var i:integer; a:ar;begin for i:=1 to n do read(ai); readln; for i:=n downto 1 do write(ai:4); writeln;end. 以上是一个PASCAL程序。从键盘读入4个数据,逆序输出。 一般来说,一个PASCAL程序包括以下几个部分: 程序头:program pname; 其中,program是保留字,表示程序从这个
44、地方开始,pname是标识符,是程序的名字,可由程序员自定。保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。如上,“program”就有“程序从这里开始”这样一种特别的意义,而“const”就有“常量说明从这里开始”的意义。我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是以字母开头的字母数字串。用来表示常量、变量、类型、文件、过程、函数和程序的名字。如“pname”、“i”、“j”、“a1”就是合法的标识符;但“1a”、“#a”是非法的标识符。有一点要注意的是,在PASCAL中,字母除了作为字符值或字符串值之外,其大
45、小写是无关的。如标识符“A1”和“a1”在PASCLA看来是同一标识符。在PASCAL中除了保留字和自定义的标识符外,还有一类有特殊含义的标识符,这类标识符称为标准标识符。它们是用来标记程序中经常引用的处理对象,如常量、函数。(PASCAL定义的保留字和标准标识符附后) 标识符在命名的时候要注意:1、名字要易记易读,有意义。如8皇后问题程序名可以是“queen”也可以是“huanghou”等;2、不能用保留字、标准标识符作为自定义的标识符。 说明部分:const n=4; type ar=array 1.4 of integer; var i:integer; a:ar; 其中,const部分
46、是常量说明,说明一些在以下部分用到的,在整个程序执行过程不改变值的量。这些量PASCAL称为常量。在程序中用到这个值的地方均用常量名来代替。如上题中定义“n=4”指本程序处理4个数值,在下面的程序体中就用“n”来代替具体的值(如for i:=1 to n)。如果要改变处理数据个数,则只在常量说明部分修改“n=4”这一句就行了,而不用在程序中每一个用到的地方都加以修改。这样不但在编写程序的时候很方便,也增加了程序的可读性,修改时更方便。 常量说明在保留字“const”下开始。可以有多个语句。常量说明语句的格式是:“常量名=值;”。如“n=4;”。n是常量名,4是该常量的值,“;”是语句分隔符。
47、type部分是类型说明,说明一些在以下部分用到的数据类型。如数组、记录、指针等。 类型说明在保留字“type”下开始。可以有多个语句。类型说明语句的格式是:“类型名=类型说明;”。如“ar=array 1.4 of integer;”。ar是类型名,array 1.4 of integer是类型说明,“;”是语句分隔符。 var部分是变量说明。变量是指在程序执行过程中可以通过赋值语句或读语句来改变值的量。所有在程序中使用的变量都应该先在变量说明部分说明。PASCAL中引用的每个变量都有“名字”和“类型”属性。变量说明“说明”的主要工作是告诉PASCA下面程序中要用到这个名字的量,同时这个量的类
48、型是什么。 变量说明在保留字“var”下开始。可以有多个语句。变量说明语句的格式是:“变量名:变量类型;”。其中,如果有多个变量同一类型,则变量名与变量名之间用逗号分隔,变量名与变量类型之间用冒号分隔。如“i:integer;”(i是变量名,integer是类型名)、“i、j:integer;”(i、j是变量名,integer是类型名) 变量说明要注意:1、变量名称必须以字母开头;2、在同一个有效范围内变量名称必须唯一。 各个说明部分均以该部分的保留字开始。如“const”开始常量说明;“type”开始类型说明;“var”开始变量说明。一个程序包含多少种类型的说明,看需要而定,不是每一个程序都必须同时包含这三种说明。如果程序不须要用到常量,则常量说明部分可以省略;如果不须要用到类型说明,则类型说明可省 PASCAL还有一条规则:先说明后引用。即所有在程序体中用到的“名字”必须都在说明部分说明过才能引用,否则就会出错,通不过编译,也执行不了。如上,类型“ar”先在类型说明中定义,然后在变量说明中引用;变量i在变量说明中定义,在程序中引用。 程序体:begin for i:=1 to n do read(ai); readln; for i:=n downt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025设备维修服务合同范本
- 2025长沙市“双百计划”申报合同书
- 2024年厦门医院招聘事业单位专业技术岗位人员真题
- 轴承供销合同范本
- 2024年嘉兴国际商务区投资建设集团有限公司招聘真题
- 2024年安徽玉成汽车职业学校专任教师招聘真题
- 2024年安徽合肥技师学院专任教师招聘真题
- 水坝工程合同范本
- 研学旅行与学校签订合同(2025年版)
- 浙江省杭州市2025届高三下学期二模试题 英语 含解析
- 小学生讲卫生主题班会
- 2025《个人信息保护合规审计管理办法》及指引解读课件
- 《新生儿复苏》课件
- 客户投诉与客户满意度管理制度
- 心理健康教育与校园文化建设融合探讨
- 小学生公共安全教育
- 无人机操控知识培训课件
- 环境健康与安全EHS管理制度
- 2025广东省广州打捞局编外人员招聘21名高频重点提升(共500题)附带答案详解
- 产科护理临床案例分享
- 中电建新能源集团股份有限公司云南分公司招聘笔试冲刺题2024
评论
0/150
提交评论