noip初赛复习——程序设计基础.docx.pdf
《noip初赛复习——程序设计基础.docx.pdf》由会员分享,可在线阅读,更多相关《noip初赛复习——程序设计基础.docx.pdf(22页珍藏版)》请在三一文库上搜索。
1、OK备战NO IP 2010提高组初赛复习程序设计基础篇 第一章简单程序 2 第一节Pascal程序结构和基本语句 2 第二节顺序结构程序与基本数据类型 4 第二章分支程序 6 第一节条件语句与复合语句. 6 第二节情况语句与算术标准函数. 7 第三章循环程序 9 第一节for循环. 9 第二节Repeat 循环 13 第三节While循坏 . 14 第四章函数与过程. 16 第一节函数 . 16 第二节自定义过程 . 17 第五章Pascal的自定义数据类型 18 第一节 数组与子界类型 18 第二节二维数组 . 21 第一章简单程序 程序设计语言,是一组用来定义计算机程序的语法规则。它是一
2、种被标准化的交流技巧, 用来向计算机发出指令。按语言级别有低级语言和高级语言之分。 低级语言包括机器语言和汇编语言。它的特点是与特定的机器有关, 功效高,但使用 复杂、 繁琐、费时、易出差错。 高级语言的表示方法要比低级语言更接近于待解问题的表示方法,其特点是在一定程度上 与具体机器无关,易学、易用、易维护。由于当高级语言程序翻译成相应的低级语言程序时, 一般说来,一个高级语言程序单位要对应多条机器指令,相应的编译程序所产生的目标程序往 往功效较低。 ( 例:Pascal C、C+、Java等) 第一节 Pascal 程序结构和基本语句 在未系统学习Pascal语言之前,暂II绕过那些繁琐的语
3、法规则细节,通过下面的简单例题, 初步掌握Pascal程序的基本组成和基本语句的用法。 例1.1编程在屏幕上显示 a Hello World! Pascal 程序: Program exll; Begin Writeln(Hello World!*); Readln; End. 这个简单样例程序,希望大家的程序设计学习能有一个良好的开端。程序中的Writein是一 个输 出语句,它能命令计算机在屏幕上输出相应的内容,而紧跟Writein语句后是一对圆括号,其中 用单引号引起的部分将被原原本本地显示出来。 例1? 2已知一辆自行车的售价是300元,请编程计算mim辆自行车的总价是多少 ? 解:若
4、 总售价用m來表示,则这个问题可分为以下儿步处理: 从键盘输入自行车的数目a; 用公式m=300*a计算总售价 ; 输出计算结果。 Pascal 程序: Program Exl2; Var num9total: integer; Begin ReadLn(num); total := 300*num; Writeln( ftotal=total); Readln; End. 此题程序结构完整,从中可看11!一个Pascal程序由三部分组成 : 程序首部 说明部分 语句部分 输入自行车数 目 计算总售价 (1)程序首部 由保留字Pegram开头,后面跟:个程序名(如:Exll );其格式为:Pr
5、ogram程序名; 程序名由用户自己取,它的第一个字符必须是英文字母,其后的字符只能是字母或数字 和下划线组成,程序名中不能出现运算符、标点符和空格。 (2)说明部分 程序中所用的常量、变量,或类型、及过程与自定义函数,需在使用之前预先说明,定 义数据的属性(类型)。 例1.2程序中VarS, R, C: Real;是变量说明,此处说明S, R, C三个变量均为实数类型 变量。只有被说明为某一类型的变量,在程序屮才能将与该变量同类型的数值赋给该变量。 变量说明的格式为 : 指由保留字Begin (开始)至End.(结尾)Z间的语句系列,是解决问题的具体处理步 骤,也是程序的执行部分。 Pasc
6、al程序不管是哪部分,每句末尾都必须有分号(;),但允许最接近End的那个语句末尾 的分号省略;程序结朿的End末尾必须有圆点( . ),是整个程序的结朿标志。 程序中花括号“”之间的部分为注释部分。 Pascal程序结构可归纳用如下的示意图来表示: Program程序名;程序首部 标号说明;(Label)常量说 明;(Const)类型说明; (Type)变量说明;(Var) 过程或函数说明; 说明部分 Begin 语句系列; End. 程序体(主程序) 语句部分 图1.1 Pascal程序的结构 把处理问题的步骤编成能从上到下顺序执行的程序,是简单稈序的基本特征。再来分析下面 两道例题的Pa
7、scal程序结构和继续学习基本语句。 例1.3编程计算半径为R的圆的面积和周长。 解:这是一个简单问题,按数学方法可分以下儿步进行处理: 从键盘输入半径的值R;要求告诉圆的半径R 用公式S=nR2计算圆面积; 用公式C=2HR计算圆周长; 输出计算结果。 Pascal 程序: Program Exl3; Var r,s: Real; (3) 语句部分 程序首 部 Begin Readln(r); s := Pi*r*r; c := 2*Pi*r; 语句部分 输入半径 圆面积公式S= H R2 圆周长公式C=2 n R Writeln (*s= s:5:l/ c=c:5:l ); 输出结果 Re
8、adln; End. 程序中Pi是Pascal提供的标准函数 , 它返回圆周率的近似值:3.1415926, (:= )是赋值符号,赋值语句的格式为: 变量:二表达式 ; _ 赋值语句的作用是将 : 二右边表达式的值记录到左边的变量屮。 Writein是输出语句,输出语句有三种格式: 执行输出后光标不换行 执行输出后光标换到下一行 仅输出空白且光标换到下一行 Writein语句后面的圆括号以内部分均为输出项,可以是多项,各项间用逗号分隔;对单引号 里的内容按照引号内的原样(字符)输出显示。如果输出项是表达式,则只输出表达式的值,而 不是表达式本身。 例1? 4输出两个自然数相除的商和余数。 解
9、: 设被除数、除数、商和余数,分别为A, B, C, D,均为变量,且都是整数类型。题中未给11! 具体的自然数A、B,可采用键盘输入方式。 显示两数相除的数学形式; 求出a除以b的商c; 求出a除以b的余数d; 紧接等式后面输出显示商和余数。 Pascal 程序: Program Exl4; Var a,b ,d : integer; Begin Readln(a9b); c:=a div b; d:=a mod b; Writeln( ,c=,c; d=d); Readln; End. 第二节顺序结构程序与基本数据类型 前面的简单程序已体现出处理问题步骤、思路的顺序关系,这就是顺序结构程序
10、。 例1.5交换两个变量的值:由键盘输入两个正整数A和B,编程交换这两个变量的 值。 Write (输出项1,输出项2); Writein (输出项1,输出项2); Writein 输入a, b 整除运算,取商的整数部分 相除求余运算,取商的余数部分 输出后自动换行 解:交换两个变量的值,可以想象成交换两盒录咅带(称为A和B)的内容,可以按以下 步骤处理: 步骤:拿一盒空白录音带C为过渡,先将A翻录至C; 步骤:再将B翻录至A; 步骤:最后将C翻录至B。 这样操作,可达到题目要求。 Pascal 程序: Program Examl5; Var a,b,c : integer; Begin Re
11、adln(a9b); c:= a; a:= b; b := c; Writeln (a= ,a, b=*,b); Readin; End. Pascal定义了五个标准整数类型,如下表所示: 类型取值范围占字节数格式 Shortint (短整型)-128127 1 带符号8位 Integer (整型) -32768.32767 2 带符号16位 Longint (长整型) -214748364821474836474 带符号32位 Byte (字节型) 02551 无符号8位 Word (字型)0655352无符号16位 在前面程序中常用的数据类型除整数类型,还有实数类型。Pascal还定义了五
12、个标准实 数类型,列表所示如下 : 类型取值范围占字节数有效数字 Real2.9X10* 39-1.7X1038 6 78位 Single 1.5X10來?3.4X10昭 4 11?12位 Double5.OX1O 3241.7X1O308 8 15?16位 Exten ded 1.9X10-4 ?1.1X104932 10 19?20位 Comp ? 263+K 38-l 8 19?20位 第二章分支程序 在程序设计中,许多问题是在一定条件下才选择某种处理方式的,这就需要用条件判断语句 或情况选择语句进行处理。程序执行中将出现选择(分支),根据条件只选择执行部分语句, 不 一定都是按原顺序从
13、头到尾地执行所有语句,这样的程序称为分支程序。 第一节 条件语句与复合语句 例2? 1某服装公司为了推销产品,采取这样的批发销售方案: 凡订购超过100套的,每 套定价为50元,否则每套价格为80元。编程由键盘输入订购套数,输出应付款的金额数。 解: 设X为订购套数,Y为付款金额,贝9: 如果100就用丫二5BX计算 否则用Y=80*X计算 输入X; 判断X值; 根据判断结杲选择符合条件的那种方法计算Y值; 输出计算结果。 Pascal 程序: Program Exam21; Var x,y: integer; Begin Readln(x); if x 100 then y:=50*x el
14、se y:=80*x; WritelnCy=y); Readln; End. 程序中的if语句常称为条件语句,它的一般格式为: (1)if条件then语句; (2)if条件then语句1 else语句2; IF语句的功能是按条件在两种可能中选择其中一种。习惯上把讦后面的表达式称为条件, then后面的语句称为真项,else后面的语句称为假项。若条件成立(为真)就执行真项,然后执 行讦语句的后继语句;若条件不成立(为假)就跳过真项而执行假项,然后执行后继语句。而第 一种格式只有真项,没有假项,当条件不成立(为假)就什么也不需做,直接往下去执行后继语 句。 例2? 2读入三个不同的数,编程按由小到
15、大的顺序排列打印出来。 解: 设读入的三个数为a, b, c,为了把较小的数排在前面,可作如下处理: 如果ab就交换a、b的值,将较大的值换至后面; 50*X Y = 180 *X (X 100) (Xc就交换a、c的值,将较大的值换至后面; 如果bc就交换b、c的值,将较大的值换至后面; 输出处理后的a,b,c。 Pascal 程序: Readln; End. 讦语句规定它的真项或假项位置上只能是一个基本语句,如果需要写一组语句,就应当使用 复合语句。本程序中有三处用到复合语句。每个复合语句的范围是从Begin开始到与它相对应的 End为止。 复合语句的地位和一个基本语句相同;其一般格式为:
16、 Begin 语句系列 End; 第二节 情况语句与算术标准函数 如果有多种(两种或两种以上)选择,常用情况语句编程。 例2? 3对某产品征收税金,在产值1万元以上征收税5%;在1万元以下但在5000元 以上的 征收税3%;在5000元以下但在1000元以上征收税2%; 1000元以下的免收税。编程计算该产品 的收税金额。 解: 设x为产值,tax为税金,用P表示情况常量各值,以题意中每1000元为情况分界: p=():tax=()(x 10000) Program Exam22; Var abt: Integer; Begin Readln(a9b9c); if ab then begin
17、t:=a; a:=b; b:=t end; if ac then begin t:=a; a:=c; c:=t end; if bc then begin t:=b; b:=c; c:=t end; Writeln(a:6, b:6, c:6); 复合语 句 复合语 句 复合语 句 佼换 这里的P是“情况”值,用产值X除以1000的整数值作为P,如果P10也归入P二10 的情 况。Pascal语言用P=trunc(x/1000)取整计算 , Pascal 程序: Program Exam23; Var x,p: integer; Tax : real; Begin readln(x); P:=
18、trunc(x/1000); if P 9 then p:=10; Case p of 0 : tax:=0; 1 4 : tax:=x*0.02; 5 9 : tax:=x*0.03; 10 : tax:=x*0.05 end; Writeln(tax:6:l); Readin; End. 程序屮的Case-end语句为情况语句,是多路分支控制,一般格式为: Case表达式of 情况常量表1:语句1; 情况常量表2:语句2;情况常量表n:语句n end; 执行情况语句时,先计算Case后面表达式的值,然后根据该值在情况常量表中的“对应安 排”,选择其对应的语句执行,执行完所选择语句后就结束C
19、ase语句;如果常量表中没有一个 与表达式值对应的语句,则什么也不做就结束本Case语句。 Case语句的另一种应用格式为: Case表达式of 情况常量表1:语句1; 情况常量表2: ? ? 语句 2; ? ? 情况常量表n: 语句 n; else 语句n+1 end; 这种格式的前面部分是相同的,所不同的是:如果常量表中没有一个与表达式值对应的语 句,则执行与else对应的语句,然后结束Case语句。 程序中的trunc(x)为取整函数,是PascaI的算术标准函数之一。Pascal常用的算术标准函数有 19个: (1)abs(x)求x 的绝对值(|x|); (2)exp (x)求ex 的
20、值;( e 为无理数2. 71828-) (3)frac(x)求x的小数部分; (4)int(x)求x的整数部分 ( 不舍入,函数值为实型 ) ; (5)ln(x) 求以e为底的x的对数(log ex ): (6)odd (x)判断x的奇偶数 (当x为奇数时odd (x)值为true,否则为fa I se): ( 刀ord(x)求x的序号,结果为整型(x为有序类型量 ) ; (8)pi n值(3.1415926535897932-); (9)pred (x)求x (有序类型 ) 的前趋值; (10)succ(x)求x(有序类型 ) 的后继值; (11)random随机函数,产生0?1的随机值;
21、 (12)random(n)产生0?n的随机数(n为word类型,先执行randomize,才能得 到随机整 数) ; (13)round (x)求x的四舍五入整数; (14)trunc(x)求x的整数部分 ( 截掉小数部分,结果为整型) ; (15)sqr (x)求x 的平方值(x2 ): (16)sqrt (x)求x的开平方根值; (17)sin(x)求x的正弦函数(x为弧度 ) ; (18)cox (x)求x的余弦函数(x为弧度 ); (19)arctan(x)正切的反三角函数( x为数值 ) ; 第三章循环程序 在编程中经常遇到需要多次规律相同的重复处理,这就是循环问题。Pascal釆
22、用不同的循环 方式來实现,常用的环循有三种:for、repeat、while. 第一节 for 循环 for循环是一种自动计数型循环。 例3? 1试打印出120的自然数。 解:用a代表1?2()各数,同时也用a兼作计数,以控制循环次数; 让a从1开始; 输出a; a自动计数 ( 加1),如果未超越所规定的循环范围则重复步骤,否则结束循环。 Pascal 程序: Program Exam31; Var a: byte; Begin for a:=l to 20 do Writein (a); Readln; End. 程序屮for a:= 1 to 20 do Writein;是for循环语句。
23、 for循环语句有两种格式: (1) for循环变量 : 二初值To终值do语句; (2) for循环变量 : 二初值downto终值do语句; 第(1)种格式的初值小于等于终值,循环变量值按自动加1递增变化; 第(2)种格式的初值大于或等于终值,循环变量值按自动减1递减变化。for循环是(以递 增1或以递减1)计数型循环。 比如:若将例3.1程序改为倒计数(递减)循环,则输出20?1的自然数数: Program Exam31; Var a: byte; Begin for a:=20 downto 1 do Writeln (a); Readln; End. 例3.2打印岀30至60的偶数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- noip 初赛 复习 程序设计 基础 docx
链接地址:https://www.31doc.com/p-5616182.html