《省信息技术学科奥赛培训【行业相关】》由会员分享,可在线阅读,更多相关《省信息技术学科奥赛培训【行业相关】(24页珍藏版)》请在金锄头文库上搜索。
1、省中小学信息技术奥赛培训省中小学信息技术奥赛培训pascalpascalpascalpascal程序的顺序结构程序的顺序结构程序的顺序结构程序的顺序结构 教育技术学专业教育技术学专业1第三节常量和变量u常量是指在程序中使用的一些具体的数、字符、字符串和布尔值。在程序运行过程中,其值不能被更改。如123,145.88,my name is,TRUE等u(1)整型数:如3、-5、0等。u(2)实型数:如3.1、-6.1E+2(科学记数法)。u(3)字符串:是用单引号括起来的一串字符,如 Book、96.5、-。技术教学常量的定义uconstu = ;例如 const st = 60; a = -s
2、t + 30; p = 3.1415926; 技术教学uFree Pascal中预定义了如下几个常量标识符,这些常量可以直接在程序中使用。uPi = 3.1415926535897932/的值uMaxint = 32767/整型integer允许的最大值uMaxlongint = 2147483647/长整型longint允许的最大值uFALSE = 布尔假,TRUE = 布尔真技术教学u例例2.10 已知半径r,求圆的周长及面积。uProgram ex2_10;uconstu r = 3.6; /定义了一个其值为3.6的实型常量uvaru c,s : real;ubeginu c := 2*
3、pi*r;u s := pi*r*r;u writeln(c=,c:10:2);u writeln(s=,s:10:2);uend.技术教学变量u变量的命名规则:“自定义标识符”的命名规则为:自定义标识符必须以字母(包含下划线“_”)开头,后面的字符可以是字母或数字u例如 n,m,rot,total 等都是合法变量名。技术教学变量的类型u整型变量用来存储整数,实型变量用来存储实数。u变量的类型,可以是标准数据类型integer(存储整数)、real(存储实数)、boolean(布尔型)和char(字符型),也可以是用户自定义的各种类型。技术教学整型数取值范围整型数取值范围类型数值范围占字节数格
4、式byte0 2551不带符号8位word0 655352不带符号16位inteter-32768 327672带符号16位longint-2147483648 21474836474带符号32位int64-263+1 263-18带符号64位qword0 264-18带符号64位技术教学实型(real)u一个实型数据用来存储实数,实型包括正实数、负实数和零。u 十进制表示法十进制表示法u这是人们日常使用的带小数点的表示方法。u 如3,0.0u 科学记数法科学记数法u 科学记数法是采用指数形式的表示方法,如1.25105可表示成1.25E+05。技术教学实型数取值范围类型数值范围占字节数有效位
5、数real2.910-391.71038678位SingLe1.510-453.4103841112位DoubLe5.010-3241.71030881516位extended1.910-49511.1104932101920位Comp9.2*10189.2*101881920位技术教学字符型(char)u字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(如下表)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:a,A,0等。特殊地,对于单引号字符,则要表示成4个单引号。在ASCII字符集中,按每个字符在字符集中的位置,将每个字符编号为012
6、7,编号称为对应字符的序号(也称作ASCII码),如字符A的序号是65,字符a的序号是97, 字符0的序号的48。技术教学序号字符序号字符序号字符序号字符序号字符序号字符32空格4806480P96112p33!49165A81Q97a113q34”50266B82R98b114r35#51367C83S99c115s36$52468D84T100d116t37%53569E85U101e117u38&54670F86V102f118v3955771G87W103g119w40(56872H88X104h120x41)57973i89Y105i121y42*58 : 74J90Z106j122
7、z43+59;75K91107k12344,6078N94110n12647/63?79O95_111o127deL技术教学uPascal提供的字符类操作函数有:u(1)pred(前导),succ(后继)u 字母b的前导是a,b的后继是c,即: upred(b)=a,succ(b)=cupred 与 succ 是互逆函数upred(succ(b)=busucc(pred(b)=bu(2)ord(取字符序号),chr(将序号转字符)u 字母a的序号是97,序号97对应的字符是a,即:uord(a)=97,chr(97)=auord 与 chr是互逆函数uchr(ord(a)=auord(chr(
8、 97 ) =97u(3)upcase(小写转大写)技术教学布尔型(boolean)布尔型常量仅有两个值:真和假,分别用标准常量名TRUE和FALSE表示。它们的序号分别为1和0。技术教学u【分析】题目中有5位小朋友,他们初始时糖果的数目不确定,用a,b,c,d,e分别存储5个小朋友的糖果数,初始值由键盘输入。u程序如下:程序如下:uProgram ex2_11;uVar a,b,c,d,e : integer;ubeginu readln(a,b,c,d,e);u a := a div 3; b := b+a; e := e+a;/1号小朋友分糖u b := b div 3; c := c+
9、b;a := a+b;/2号小朋友分糖u c := c div 3; b := b+c; d := d+c;/3号小朋友分糖u d := d div 3; c := c+d; e := e+d;/4号小朋友分糖u e := e div 3; d := d+e;a := a+e;/5号小朋友分糖u writeln(a, ,b, ,c, ,d, ,e); /每个值之间空格隔开uend.技术教学uAnd ,or ,not ABNOT AA AND BA OR BFALSEFALSETRUEFASLEFASLEFALSETRUETRUEFALSETRUETRUEFALSEFALSEFASLETRUET
10、RUETRUEFALSETRUETRUE技术教学第五节顺序结构程序设计例例2.11 某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果。技术教学例例2.12 分钱游戏。甲、乙、丙三人共有分钱游戏。甲、乙、丙三人共有24元钱,先元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相由甲分钱给乙、丙两人
11、,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。的钱数恰好一样多。 求原先各人的钱数分别是多少求原先各人的钱数分别是多少?技术教学u【分析分析】 设甲、乙、丙三人的钱数分别为A,B,C。用倒推(逆序)算法, 从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数 : (在每个步骤中,各人钱数分别存在A、B、C中)u步骤 : A=8,B=8,C=8 /这是最后结果的钱数,三人都一样多 u步骤 : A=A/2 (=4
12、),B=B/2 (=4),C=A+B+C(=16)u /A,B未得到丙分给的钱时,只有结果数的一半;C应包含给A,B及本身数三者之和 u步骤 : A=A/2 (=2),C=C/2 (=8),B=A+B+C(=14)u /A,C未得到乙分给的钱时,只有巳有数的一半;B应包含给A,C及本身数三者之和u步骤 : B=B/2 (=7),C=C/2 (=4),A=A+B+C(=13) u /C未得到甲分给的钱时,只有巳有数的一半;A应包含给B,C及本身数三者之和 u步骤 : 输出A(=13),B(=7),C(=4) u /此时的A,B,C 就是三人原先的钱数技术教学uProgram ex2_12;uva
13、r a,b,c : integer;ubeginu a : =8; b : =8; c : =8;/对应于步骤u a : =a div 2; b : =b div 2;c : =a+b+c; /对应于步骤u a : =a div 2; c : =c div 2; b : =a+b+c; /对应于步骤u b : =b div 2; c : =c div 2; a : =a+b+c; /对应于步骤u writeln(a=,a, : 4,b=,b, : 4,c=,c); /输出uend.u 细心观察,会发现本程序语句的顺序很关键。此例用反推顺序(逆序),按步骤正确推算出各变量的值。u 本程序writ
14、eln语句的输出项含有( : 4 ),这里的冒号用来指定该项显示所占宽度,此处是输出4个空格即(空格项占4格)。技术教学u例例2.13 求一元二次方程求一元二次方程x2+3x+2=0的两个实数的两个实数根。根。技术教学u【分析】方程的系数是常量,分别用a,b,c表示,可运用数学上现成的求根公式求方程的根,采取如下方法 : u 先求出d=b2-4ac;(求根公式中需用开方运算的那部分)u 再用求根公式算出x1,x2的值。u 输出x1,x2.技术教学u程序如下:程序如下:uProgram ex2_13;uconst a=1;b=3;c=2; /常量说明,a,b,c表示方程系数uvar d : in
15、teger; /d为整型变量u x1,x2 : real; /X1,X2为实型变量ubeginu d : =b*b-4*a*c;u x1 : =(-b+sqrt(d)/(2*a); /求方程的根u x2 : =(-b-sqrt(d)/(2*a);u writeln(x1=,x1, : 6,x2=,x2); /输出结果u readln /等待输入一个回车键uend.u 本程序中的a,b,c均为常量;变量d是整数类型,而变量x1,x2则是实数类型,因为运算式中的Sqrt(d)开平方运算和” / “除法运算使结果为实数。Sqrt( ) 是开根号函数,是Pascal系统的一个标准函数。技术教学省中小学信息技术奥赛培训省中小学信息技术奥赛培训 供参考的网络资源供参考的网络资源24