《简单程序设计》PPT课件.ppt_第1页
《简单程序设计》PPT课件.ppt_第2页
《简单程序设计》PPT课件.ppt_第3页
《简单程序设计》PPT课件.ppt_第4页
《简单程序设计》PPT课件.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章顺序结构 第一节赋值语句第二节输入输出语句第三节常量和变量第四节标准数据类型第五节顺序结构程序设计 第一章的简单程序已体现出处理问题的步骤的顺序关系 每条语句按自上而下的顺序依次执行一次 这种自上而下依次执行的程序结构称为顺序结构程序 在一个程序中 所有的操作都由执行部分来完成 而执行部分又都是由一条条语句组成的 因此 先要学习Pascal语言的基本语句 并且在学习过程中逐步学会程序设计的基本方法 我们还是先绕过那些繁琐的语法规则细节 先看一些例子 然后给出语法以供选手们参考 第一节赋值语句 赋值语句 变量代表的是一个存储单元 其值是可变的 那么其中的值是怎么提供的 又是怎么改变的呢 可以通过赋值语句来进行 赋值语句的格式 变量名 表达式 或常量 其中 称为赋值号 右边是一个表达式 表达式计算完毕后的结果赋给左边的变量 如 a 9 8 2 1 a的值等于71a b a的值等于b的值 b的值没有被更改a a 1 a的值增加1 例2 1输入两个正整数A和B 试交换A B的值 使A的值等于B B的值等于A 分析 交换两个变量的值方法很多 一般我们采用引入第三个变量的算法 二个变量交换 可以想像成一瓶酱油和一瓶醋进行交换 这时容易想到拿一个空瓶子过来 将酱油倒到空瓶中 将醋倒到酱油瓶中 将原空瓶中的酱油倒到醋瓶中 程序如下 programex2 1 vara b c integer 引入三个变量beginreadln a b 输入A Bc a A的值临时存储在C中a b B的值赋给Ab c C的值赋给Bwriteln a b end 例2 2某仓库5月1日有粮食100吨 5月2日又调进20吨 5月3日卖出库存的三分之二 5月4日又调进库存的3倍粮食 问该仓库从5月1日到5月4日期间每天的粮食分别是多少吨 输出每天的库存量 分析 本例中 主要要描述从5月1日到5月4日每天仓库的粮食库存量 它是不断变化的 我们可以用一个变量A来存储仓库当前的库存量 程序如下 Programex2 2 Vara integer begina 100 writeln 5 1 A 输出5月1日的库存量a a 20 writeln 5 2 A a adiv3 div是整除 相当于对结果取整操作writeln 5 3 A a a 4 writeln 5 4 A readln end 本程序中语句的自上而下的顺序很关键 这类程序严格自上而上每条语句都被执行一次就称为顺序程序 例2 3数学中有个经典的 鸡兔同笼 问题 已知头共30个 脚共90只 问笼中的鸡和兔各有多少只 分析 设鸡为j只 兔为t只 头为h 脚为f 那么有 j t 30 2 j 4 t 90 解此题暂不必采用数学上直接解方程的办法 可采用 假设条件与逻辑推理 的办法 假设笼中30个头全都是兔 那么都按每头 只脚计算 总脚数为 4 h 与实际脚数 f 之差为 4 h f 如果这个差 0 则笼中全是兔 即鸡为0只 如果这个差值 0 说明多计算了脚数 凡是鸡都多计算了两只脚 用它除以2就能得到鸡的只数 算法为 j 4 h f 2 先用脚数差值除以2算出鸡的只数 t h j 再用总头数减鸡数算出免的只数注意这两步运算的先后顺序 程序如下 programex2 3 Consth 30 f 90 常量定义Varj t integer 为整数类型的变量beginj 4 h f div2 div是整除运算t h j writeln j j t t 引号中内容原样输出 两部分内容用空格隔开end 算术表达式 算术表达式的定义Pascal语言中的算术表达式是由符合Pascal语法规定的运算对象 包括常量 变量 函数 算术运算符 圆括号组成的有意义的式子 如a 30 5 8 4 算术运算符常用的有以下6个算术运算符 加 减 乘 实数除 得到结果为实型 如5 2 2 5 4 2 2 0 结果不是2 div 整除 div它要求除数和被除数均为整型 结果也为整型 如10div2 5 10div3 3 5div10 0 15div4 3 div运算只取商的整数部分 参与div运算的两个对象都不能为实型 mod 求余数 也只能用于整数运算 结果为整数 如 10mod4 2 17mod4 1 4mod 3 1 4mod3 1 即amodb a adivb b div的结果是相除后的商 mod的结果是相除后的余数 因此有 8div3 28mod3 27div3 27mod3 16div3 26mod3 0 运算优先顺序如果一个表达式里出现两个或两个以上的运算符 则必须规定它们的运算次序 Pascal规定的运算优先级别 与数学中规定的一样 表达式中相同优先级的运算符 按从左到右顺序计算 表达式中不同优先级的运算符 按从高到低顺序计算 括号优先级最高 多层括号则从内到外逐层降低 在算术运算中运算符的优先顺序与数学上的四则运算一致 即 先乘除后加减 注 mod div 运算的优先级与 相同 下面是几个Pascal表达式的例子 Pascal的常用数学函数abs 取绝对值 sqr 平方 sqrt 开方 sin 正弦 cos 余弦 arctan 反正切 exp 以e为底的指数 Ln 自然对数 trunc 取整 round 四舍五入 Pascal规定 所有函数的自变量必须写在括号中 例如 sin2x应写成sin 2 x a b 2应写成sqr a b 或 a b a b 应写成sqrt b b 4 a c sin cos函数的自变量应为弧度 若是度 需要转换成弧度 例如 sin32o15 应写成sin 32 25 3 14159 180 Lgx 以10为底的对数 由换底公式得 应写成Ln x Ln 10 x3可以写成x x x a b 3可以写成sqr a b a b 或三个 a b 连乘xy可以写成exp y Ln x 根据换底公式有 也可写成power x y power函数不要标准库中 需要调用数学库 数学库的调用参见附录三 trunc是去掉小数部分 取其整数部分 Round是将小数部分四舍五入后变为整数 即得到最接近于它的整数 因此trunc 1 2 1round 1 2 1trunc 1 7 1round 1 7 2trunc 3 7 3round 3 7 4 运算 标准函数表 运算表 标准函数表 表中的列表示函数参数的类型 行表示函数执行后返回的结果类型 如trunc函数的参数是实型 该函数的运算结果是整型 即对实数取整 第二节输入输出语句 输入语句 在程序中变量获得一个确定的值 可以用赋值语句 但是有些变量的值往往不能事先确定 需要在程序运行时输入 输入语句就是用于把外界要处理的数据传输给程序 输入语句是在程序运行时由用户给变量提供数据的一种很灵活的输入动作 输入语句的格式 read 变量1 变量2 功能 从标准输入文件 默认对应着键盘 中输入数据 并依次赋给相应的变量 说明 执行到输入语句时 系统处于等待状态 等待从键盘上输入数据 并且根据变量的数据类型判断输入内容是否合法 如果内容不合法则提示106格式错误 如执行read a 假设a是整型变量 那么输入的内容为数字是合法的 其它字符提示格式错误 在输入数值型 整型或实型 数据时 数据间用空格或回车分隔开 read语句是一个接一个地输入数据 在执行完本条read语句 读完本语句中变量所需的数据 后 下一个输入语句接着从该行中的下一个数据继续读取数据 也就是说输入光标不换行 readln语句是read line的缩写 意思是为括号中的变量赋完值后立即换行 如果有下一条输入语句 只能从下一行开始读取 read后一定要有参数表 变量名 而readln可以不带参数表 即可以没有任何输入项 这时系统等待读入一个换行符 回车 经常用于暂停程序的运行 直到输入一个回车 为了避免可能出现的错误 建议在程序中按下列原则使用读语句 a 如果没有特殊需要 在一个程序中尽量避免混合使用read语句和readln语句 b 尽量用readln语句来输入数据 一个数据行对应一个readln语句 如 read a b read c d read e 如果输入数据为 123456 那么a b c d e的值分别为1 2 3 4 5 如果后面没有输入语句了那么数据6是多余的 输入同样的数据 如果三条输入语句read都改成readln情况就不同 每个readln语句执行后都要换行 第一条readln语句读完二个数接后换行 第一行中其余数据全部被作废 第二条readln语句将从下一行开始读取二个数 再换行到第三行 第三条readln语句在第三行中读取一个数 也就是说5个数据不能放在一行上 至少要有三行的内容 例2 4设a b c为整型变量 将它们的值分别赋为10 20和30 写出对应下列语句的所有可能输入格式 read a b c 分析 根据说明 可列出所有可能输入的格式 a 102030 b 102030 c 102030 d 102030如果把输入语句改为 readln a b read c 那么只有 b d 二种输入格式有效 例2 5设有下列语句 read a b c readln d e readln readln f g 其中 所有变量均为整型 再设输入的数据格式如下 12345678910111213列表给出每个变量的值 分析 可以假想有一个 数据位置指针 每读一个数据后 指针后移到该数据之后 每执行一个readln语句后 指针移到下一行的开头 各变量的值如下表所示 输出语句 输出语句的作用是将程序处理的结果输出到标准输出文件 默认对应显示器屏幕 一个程序可以没有输入 但一个程序肯定要有输出 否则编写程序就失去任何意义 1 write语句格式 write 输出项1 输出项2 输出语句中的输出项可以是变量 常量 表达式和字符串 如 write ThescoreofLiPingis 56 32 引号内的内容原样输出 2 writeln语句格式 writeln 输出项1 输出项2 writeln是write line的缩写 writeln语句相当于write语句 换行 即输出完毕后换到下一行 特殊地 writeln语句只是起到换行作用 不输出任何内容 输出语句的功能 计算机执行到输出语句时 将括号中的输出项一个接一个地输出到屏幕上 如果输出项是表达式那么先计算出表达式的值再输出其结果 write语句与writeln语句格式上都相似 但它们在功能上有所不同 两个语句的区别在于 write语句将其后括号中的表达式一个接一个输出后 没有换行 而writeln语句则在输出所有输出项后换行 例如以下两个程序段的输出分别为 1 write 1 2 3 4 write 5 6 输出为 123456 2 writeln 1 2 3 4 输出完毕后换行write 5 6 另起一行输出输出为 123456 例2 6输入一个三位数数 要求把这个数的百位数与个位数对调 输出对调后的数 分析 先求出自然数的个位 十位 百位 然后个位与百位对调 程序如下 Programex2 6 vara b c m n integer beginreadln m a mdiv100 百位数b mdiv10 mod10 十位数c mmod10 个位数n c 100 b 10 a 重新组合对调后的数writeln n end 运行结果 输入 234输出 n 432 例2 7已知某班有男同学x位 女同学y位 x位男生平均分是87分 y位女生的平均分是85 问全体同学平均分是多少分 分析 男女生的人数需要用户输入 然后根据题意 x 87 y 85 x y 求出全体同学的平均分 程序如下 Programex2 7 varx y integer beginreadln x y writeln x 87 y 85 x y 实数以默认的科学记数法格式输出end 例2 8歌手大奖赛上6名评委给一位参赛者打分 6个人打分的平均分为9 6分 如果去掉一个最高分 这名参赛者的平均分为9 4分 如果去掉一个最低分 这名参赛者的平均分为9 8分 如果去掉一个最高分和一个最低分 这名参赛者的平均是多少 分析 首先求出6名评委的总分 然后根据去掉最高分的总分和最低分的总分 求出最高分的分值和最低分的分值 最后总分减去最高分和最低分除以4即是答案 程序如下 Programex2 8 Varhigh low score all score high score low ans real beginscore all 6 9 6 6名评委的总分score high 5 9 4 去掉最高分的总分score low 5 9 8 去掉最低分的总分high score all score high 最高分low score all score low 最低分ans score all high low 4 writeln ans 实数以默认的科学记数法格式输出end 带格式的输出语句 在Pascal语言中输出数据时是可以按照设定的格式进行输出 对整数默认的输出形式为按十进制数形式 对实数的输出 默认的形式是科学记数法形式 如果不想用科学记数法输出而用平时熟悉的小数形式输出 要自己另外定义 事实上 输出语句中的每个输出项之后可以加上格式说明 对输出时的格式进行设置 若输出项后没有加格式说明 则数据按系统默认的格式输出 默认的输出格式 Pascal语言为整型数据 实型数据 布尔型数据和字符串规定了每种数据所占的宽度 即一个数据输出时占几列 一个数据所占的宽度称为 场宽 或 字段宽 系统给出的默认场宽称为标准场宽 每一种Pascal版本给定的标准场宽不尽相同 下表给出标准Pascal和FreePascal版所规定的标准场宽 在FreePascal系统中 对于整型 字符串的输出都是按数据本身长度输出 对于布尔型数据 只有TRUE和FALSE两种值 TRUE为4列 FALSE为5列 采用大写输出 而实型数据的输出时 则按25列输出 其中第一列为符号位 正号不显示 后6位为 E nnnn 中间的18列为尾数部分 如 writeln sqrt 75 则输出8 6602540378443865E 0000 第一位为空格表示是正数writeln sqrt 81 则输出9 0000000000000000E 0000 有时 在程序中往往根据实际情况 需要自己定义场宽 指定场宽 在输出语句中输出项含有格式符号时 就是为了指定输出项的场宽 指定单场宽格式 write 表达式 n 或writeln 表达式 n 其中n为自然数 指定单场宽后 所有数据不再按默认的标准场宽输出 而按指定场宽输出 若数据实际长度小于指定场宽时 则一律 向右靠齐 左补空格 如 write 1234 8 abcdef 12 输出结果 1234abcdef 1234前有4个空格 abcdef前有6个空格对于实型数据指定单场宽时 如果指定场宽大于标准场宽 25列 时 右靠齐按标准场宽格式输出25位 左边补空格 若场宽小于标准场宽时 第一位仍为符号位 最后六位仍为 E nnnn 中间部分为尾数显示部分 如果指定的宽度小于10位 则设置场宽无效 指定双场宽输出项是实数时 如果希望输出的实数不用科学记数法形式输出而用小数形式输出 可以用指定双场宽方法输出 双场宽只适用于实型数的输出 双场宽输出格式为 write 实型数 m n 其中m和n都是自然数 m用于指定整个数据所占的宽度 n指定输出小数的位数 如 write sqrt 75 9 4 输出 8 6602 总的占9列 其中保留4位小数如果双场宽指定中m小n 2 则m无效 按保留n位小数的最少位数输出 如 write sqrt 75 5 4 要使小数点后有4位数字 而总场宽为5 是不可能的 因为有一个小数点 小数点前面至少还有一个数字 它最低限度要有6列 即输出为8 6602 有时对总宽度没要求只要求小数的保留位数 这时往往把m设成0 例2 9传说古代的叙拉古国王海伦二世发现的公式 利用三角形的三条边长来求取三角形面积 已知 ABC中的三边长分别为a b c 求 ABC的面积 提示 海伦公式 其中p a b c 2 分析 公式中P是三角形周长的一半 求出P后直接代入海伦公式中求得面积 程序如下 Programex2 9 Vara b c s p real beginreadln a b c 输入三角形的三边p a b c 2 求出Ps sqrt p p a p b p c 根据P求面面积 sqrt是开方函数write s 8 3 输出面积 保留3位小数readln end 上机练习2 2 1 已知某梯形的上底A 13 下底B 18 高H 9 求它的面积S 2 已知某圆的半径R 139 求该圆的周长C与面积S 3 输入长方形的边长a b 计算它的面积和周长 输出 4 读入摄氏温度c 写程序将它转换成华氏温度f输出 已知f 9c 5 325 输入三个字符 输出每个字符的序号 然后反向输出这三个字符 求序号用ORD函数 6 输入一个三位自然数 把这个数的百位与个位数对调 输出对调后的自然数 7 键盘输入两个实数 经过取整操作后 将其整数部分交换值后输出 第三节常量和变量 常量 常量是指在程序中使用的一些具体的数 字符 字符串和布尔值 在程序运行过程中 其值不能被更改 如123 145 88 mynameis TRUE等 1 整型数 如3 5 0等 2 实型数 如3 1 6 1E 2 科学记数法 3 字符串 是用单引号括起来的一串字符 如 Book 96 5 用单引号括起来的单个字符可以看成字符数量为1的字符串 如 x 等 在字符串内有单引号时要用两个连续单引号表示 如输出 B 可表达成writeln B 以上列举的都可以作为常量在程序中使用 为了提高程序的可读性并使程序便于修改 在程序中往往用一些标识符来代表具体的常量 如a 3 b 6 1E 2 常量的定义 一个常量可以直接调用 如124 A 也可以给常量取个名字用一个标识符代表它 这就是常量定义 例如 st 60 name LiPing 代表常量的标识符又称为常量标识符 常量定义要放在以const开头的常量说明部分 常量说明部分的格式 const 常量定义 const是保留字 表示常量说明部分 其后可以有若干条常量定义语句 这些常量定义语句之间以分号 隔开 例如 constst 60 a st 30 p 3 1415926 black name MynameisLiPing 由上例可见常量可以是数 字符或字符串 也可以是表达式 FreePascal语言对常量定义有如下要求 1 常量定义要放在程序说明部分 2 必须遵守先定义后使用的原则 即只有已经定义的常量 才能在程序中使用 3 常量一经定义 执行部分不得更改它的值 否则编译错误 常量定义后 在书写程序语句时就可以引用它 即可以将程序中多次出现的常量不必直接写常量值 而用已定义的常量标识符代替 这样一方面避免写错 另一方面也便于修改程序 如要修改一常量 只需修改常量定义 如st 60 改为st 90 就将程序中所有这个常量都修改了 特别对较大的程序是很必要的 FreePascal中预定义了如下几个常量标识符 这些常量可以直接在程序中使用 Pi 3 1415926535897932 的值Maxint 32767 整型integer允许的最大值Maxlongint 2147483647 长整型longint允许的最大值FALSE 布尔假 TRUE 布尔真 例2 10已知半径r 求圆的周长及面积 Programex2 10 constr 3 6 定义了一个其值为3 6的实型常量varc s real beginc 2 pi r s pi r r writeln c c 10 2 writeln s s 10 2 end 在程序中为了输出实型周长C和面积S时 按照小数形式输出 采用了指定双场宽格式 程序中pi作为常量由系统提供 代表实数3 14159 常量说明部分既定义了常量名及其值 又隐含定义了常量的类型 变量说明 变量代表了一个存储单元 其中的值是可以改变的 因此称为变量 如游戏中玩家命的条数最初为3 当你死了一次 命减少一条 这里命的条数就是一个变量 或者说命的条数存储在一个存储单元中 变量有三个要素是 变量名 变量类型 变量值 一个程序中可能要使用到若干个变量 为了区别不同的变量 必须给每个变量 存储单元 取一个名 称为变量名 该变量 存贮单元 存储的值称为变量的值 变量中能够存储值的类型为变量的类型 例如游戏中用于存储 命 的变量 在游戏程序中的存储命的变量名可取为life 它的类型为整型 游戏初始时这个变量的值为3 变量名 用一个合法的标识符代表一个变量 如n m rot total等都是合法变量名 在程序中用到的变量必须在说明部分加以定义 变量名应遵循自定义标识符的命名规则 并建议使用 见名知义 的原则 即用一些有意义的单词作为变量名 自定义标识符 的命名规则为 自定义标识符必须以字母 包含下划线 开头 后面的字符可以是字母或数字 标识符长度不超过63个字符 变量的类型 常量是有类型的数据 变量在某一固定时刻用来存储一个常量 因此也应有相应的类型 如整型变量用来存储整数 实型变量用来存储实数 变量的类型 可以是标准数据类型integer real boolean和char 也可以是用户自定义的各种类型 变量说明 在程序中若要使用变量 变量的名称及类型 在程序的变量说明部分加以定义 变量的值则在程序的执行部分中才能赋给 变量说明形式是 一个变量标识符或由逗号隔开的多个变量标识符在它的冒号 后面说明其数据类型 变量定义要写在变量说明部分中 以关键字var开头 变量说明部分的一般形式 var 其中var是保留字 表示一个变量说明部分开始 一个var可以含有多个不同的变量定义 每条变量定义之间用隔开 有时称被分号隔开的变量定义为变量说明项 例如 vara b integer x y real ch char f boolean 一旦定义了变量 就确定了它的类型 也就是说 就确定了该变量的取值范围和对该变量所能进行的运算 并且不同类型的变量不能互相赋值 但是整数可以赋给实型变量 还应指出 变量一经定义系统就在计算机内存中为其分配一个存储空间 在程序中使用到变量时 就在相应的内存中存入数据或取出数据 这种操作称为变量的访问 第四节标准数据类型 FreePascal提供了丰富的数据类型 本节介绍几种基本的数据类型 整型 实型 布尔型和字符型 它们都是系统定义的简单数据类型 称为标准数据类型 其对应的名字称为标准标识符 整型 integer 一个整型数据用来存储整数 整数可以正整数 负整数和零 整型常量采用我们平常使用的十进制整数表示 如138 0 512等都是整型常量 而18 6或18 0都不是整型常量 Pascal中有一个标准标识符Maxint 它代表pascal系统中整型类数据的最大值 一个整型数用2个字节 1个字节由8位组成 存储 最大的整型数是215 1 即32767 最小的整型数为 Maxint 1 即 32768 FreePascal支持五种整型 它们是byte 字节型 word 字类型 integer 整型 longint 长整型 和int64 超长整型 每一种类型规定了相应的取值范围以及所使用的存储空间 字节数 整型数取值范围 在信息学竞赛中常用的有integer longint int64和qword 目前32位的CPU 提供的标准整型是32位 所以用longint的速度比integer快 同时建议Byte不要用 因为不能在监控窗口进行监控其值的变化 不能监控会给调试带来麻烦 FreePascal还提供了另一个整型常量表识符MaxLonint 它是长整型数据能表示的最大值 Maxlongint其值为2147483647 231 1 Maxint和maxlongint的类型分别属于integer和longint 实型 real 一个实型数据用来存储实数 实型包括正实数 负实数和零 FreePascal中表示实型常量的形式有两种 十进制表示法这是人们日常使用的带小数点的表示方法 如3 0 0 5 61 8 0 6 050等都是实型常量 而0 和 37都不是合法的实数 科学记数法科学记数法是采用指数形式的表示方法 如1 25 105可表示成1 25E 05 在科学记数法中 字母 E 表示10这个 底数 而E之前为一个十进制表示的小数 称为尾数 E之后必须是一个整数 称为 指数 如 1234 56E 26 0 268E 50 1E5是合法形式 而 34E12 2 E5 E5 E 1 2E 0 5都不是合法的实数 Pascal系统中科学记数法输出共25列 其中第一列为符号位 正号不显示 后6位为指数部分 E nnnn 中间的18列为尾数部分 如 6 2441973062996000E 0010 无论实数是用十进制表示法还是科学记数法 它们在计算机内的表示形式是一样的 总是用浮点方式存储 和整数相比 实数能表示的范围大得多 但值得注意的是实数的运算比整数的运算速度慢且无法像整数那样精确表示一个数 只能近似表示 FreePascal支持五种实型 它们是real 实型 singLe 单精度实型 doubLe 双精度实型 extended 扩展实型 comp 装配实型 每一种类型规定了相应的实数取值范围 所使用的存储空间 字节数 以及能达到的精度 有效位数 实型数取值范围 信息学竞赛中根据试题要求的精度不同 常用real double及extended类型 当两个不同范围的类型的操作数进行运算时 得到的结果属于范围较大的类型 表中前四种类型给出的是其绝对值的取值范围 对于此类实型数据 若其绝对值大于上界 则产生上溢 绝对值小于下界 则产生下溢 下溢导致结果为0 comp类型的值是在取值范围内的整数 但类型还是实型 如变量a的类型是comp 其值等于3 7893543525 则a的值其实是等于4 0 注意 实型数不能赋给整型变量 但整型数可以赋给实型变量 字符型 char 在Pascal语言中 字符常量是由单个字符组成 所有字符采用ASCII编码 ASCII编码共有128个字符 如下表 在程序中 通常用一对单引号将单个字符括起来表示一个字符常量 如 a A 0 等 特殊地 对于单引号字符 则要表示成4个单引号 在ASCII字符集中 按每个字符在字符集中的位置 将每个字符编号为0 127 编号称为对应字符的序号 也称作ASCII码 如字符A的序号是65 字符a的序号是97 字符0的序号的48 ASCII编码表见下图 Pascal提供的字符类操作函数有 1 pred 前导 succ 后继 字母b的前导是a b的后继是c 即 pred b a succ b c pred与succ是互逆函数pred succ b b succ pred b b 2 ord 取字符序号 chr 将序号转字符 字母a的序号是97 序号97对应的字符是a 即 ord a 97 chr 97 a ord与chr是互逆函数chr ord a a ord chr 97 97 3 upcase 小写转大写 布尔型 boolean 一个布尔型数据用来存储逻辑值 或布尔值 Boolean一词 是根据19世纪英国数学家GeorgeBoolean 1815 1864 的名字而得 GeorgeBoolean为现代布尔代数之父 布尔型常量仅有两个值 真和假 分别用标准常量名TRUE和FALSE表示 它们的序号分别为1和0 用于布尔量的运算有布尔运算符 或称逻辑运算符 它们是 and 与 or 或 not 非 xor 异或 本书不介绍 当几个布尔变量同时使用时 按下列优先规则进行 首先是not运算 然后是and运算 最后是or运算 当然 可以通过加括号 改变运算的先后次序 真值表 true false true 因此 当A为FALSE B为TRUE时 式子 BorBandnotA将按下列次序计算 首先算not 然后算and 最后算or 其结果为true 如下图所示 BorBandnotA 与布尔量有关的还有关系运算 或称比较运算 关系运算有以下6种 大于 大于等于 不等于 关系运算用于整型 实型 字符型 布尔型 结果均为布尔型值 通常要求关系运算两端的量为同一类型 但是整型和实型可以混合使用 例如 a b 结果为FALSE 字符的比较是用相应的序号来比较sqrt 2 5 1结果为TRUE8 0 and y 0 当该式成立 结果为TRUE 时 坐标 x y 就在第一象限 否则不在第一象限 式中的括号不能少 若写成 x 0andy 0根据优先规则 应先算逻辑运算 即运算0andy 导致整个表达式发生混乱而提示出错 第五节顺序结构程序设计 我们已经学习了输入 输出语句和赋值语句以及基本的数据类型 下面举一些实例 通过阅读和模仿这些程序 让选手逐步熟悉程序的编写和巩固知识点 为以后各章的学习打好基础 例2 11某幼儿园里 有5个小朋友编号为1 2 3 4 5 他们按自己的编号顺序围坐在一张圆桌旁 他们身上都有若干个糖果 键盘输入 现在他们做一个分糖果游戏 从1号小朋友开始 将自己的糖果均分三份 如果有多余的糖果 则立即吃掉 自己留一份 其余两份分给他的相邻的两个小朋友 接着2号 3号 4号 5号小朋友同样这么做 问一轮后 每个小朋友手上分别有多少糖果 分析 题目中有5位小朋友 他们初始时糖果的数目不确定 用a b c d e分别存储5个小朋友的糖果数 初始值由键盘输入 程序如下 Programex2 11 Vara b c d e integer beginreadln a b c d e a adiv3 b b a e e a 1号小朋友分糖b bdiv3 c c b a a b 2号小朋友分糖c cdiv3 b b c d d c 3号小朋友分糖d ddiv3 c c d e e d 4号小朋友分糖e ediv3 d d e a a e 5号小朋友分糖writeln a b c d e 每个值之间空格隔开end 例2 12分钱游戏 甲 乙 丙三人共有24元钱 先由甲分钱给乙 丙两人 所分给的数与各人已有数相同 接着由乙分给甲 丙 分法同前 再由丙分钱给甲 乙 分法亦同前 经上述三次分钱之后 每个人的钱数恰好一样多 求原先各人的钱数分别是多少 分析 设甲 乙 丙三人的钱数分别为A B C 用倒推 逆序 算法 从最后结果入手 按反相顺序 分步骤推算出每次各人当时的钱数 在每个步骤中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论