PASCAL语言的回顾与复习.ppt

上传人:sh****n 文档编号:6396815 上传时间:2020-02-24 格式:PPT 页数:45 大小:455.31KB
返回 下载 相关 举报
PASCAL语言的回顾与复习.ppt_第1页
第1页 / 共45页
PASCAL语言的回顾与复习.ppt_第2页
第2页 / 共45页
PASCAL语言的回顾与复习.ppt_第3页
第3页 / 共45页
点击查看更多>>
资源描述
一 基本知识1 Pascal程序基本组成2 Pascal数据类型3 标准函数4 运算符和表达式5 基本语句二 程序的三种基本结构 1 顺序结构2 选择结构 if语句 3 循环结构 for语句 while语句 三 数组1 一维数组2 多维数组3 字符数组与字符串 Pascal语言回顾 1 Pascal程序基本组成 例1 计算半径为R的圆面积SprogramArea 程序首部 可以省略不写constpi 3 14159 常量说明 说明部分 vars r real 变量说明 beginreadln r s pi sqr r writeln s s end 保留字 程序名 执行部分 一 基本知识 2 Pascal数据类型 在这里主要回顾整型 实型 字符型和布尔型 1 整型 类型数值范围占字节数Shortint 128 1271Byte0 2551Integer 32768 32767 2Word0 655352Longint 2147483648 2147483647 9位 4Longword0 42949672954Int64 9223372036854775808 92233720368547758078QWord0 184467440737095516158 整数部分19位 2 实数类型数值范围有意义的位数占字节数Real依赖于平台 4or8Single1 5E 45 3 4E387 84Double5 0E 324 1 7E30815 168Extended1 9E 4951 1 1E493219 2010Comp 2E64 1 2E63 119 208 3 布尔型一个布尔型数据用来存放逻辑值 布尔值 布尔型的值只有两个 false和truevara b boolean A 4 3 b 2 3 4 字符型字符型用char作为标识符 字符型必须用单引号括起来 字母作为字符型时 大小写是不等价的 并且字符型只允许单引号中有一个字符 否则就是字符串 Vars char s B 算术函数函数标识符自变量类型意义结果类型abs x 整型 实型绝对值同自变量int x 整型 实型整数部分整型sqrt x 整型 实型平方根实型如 abs 2 5 3 int 4 99 4 sqrt 9 3 0 3 标准函数 4 运算符和表达式 1 运算符a 算术运算符运算符运算运算对象结果类型 加整型 实型只要有一个运算对象是实型 结果就 减整型 实型是实型 如果全部的运算对象都是整 乘整型 实型型并且运算不是除法 则结果为整型 除整型 实型若运算是除法 则结果是实型 div整除整型整型mod取余 模 整型整型 15Div6 2 15 div6 215Div 6 2 15 div 6 2 15mod6 3 15 mod6 315mod 6 3 15 mod 6 3 b 逻辑运算符运算符运算运算对象结果类型not逻辑非布尔型布尔型and逻辑与布尔型布尔型or逻辑或布尔型布尔型 c 关系运算符运算符运算运算对象结果类型 等于简单类型布尔型不等于简单类型布尔型大于简单类型布尔型 大于等于简单类型布尔型 2 3 and 4 3 2 3 or 4 3 not 2 3 2 表达式 是通过运算符把常量 变量 函数调用结合起来组成的 PASCAL表达式有以下计算优先顺序规则 1 括号内的表达式首先计算 2 运算符的优先级有四级 按其优先顺序从高到低排列为 not div mod and shl shr or IN 不同优先级的两运算符之间的操作数先与具有较高优先级的运算符进行运算 3 同级的运算从左到右进行 另外 有一点需要指出的是 因为关系运算符的优先级最低 当用关系式构造复杂的布尔表达式时 这些关系式作为初等条件必须放在括号里 如 x y and z y or x 0 若不加括号 就是一个错误的表达式 5 基本语句1 赋值语句赋值语句是最简单的语句 1 赋值语句的格式变量名 表达式 其中 称为赋值号 2 执行过程先计算赋值号右边表达式的值 然后将表达式的值赋给变量名代表的变量 如 A 9 8 2 1 A 9 8 2 1 A A 1 A A 1 输入语句read和readln功能 从键盘或文件读入数据项 并把它存到变量中去 使该数据能在以后的计算中使用 输入语句的一般形式为 read v1 v2 vn readln v1 v2 vn 从键盘依次读入数据 分别赋给变量v1 v2 vn 一次输入多个数据值时 要求数据之间用空格分隔 如果是字符类型的数据 则不需要分隔 readln语句要求输入数据后必须回车 使得后继操作从下一行的头上开始 read语句与readln语句区别是 1 readln语句与read语句的第一个区别是 read后一定要有参数表 readln可以不带参数表 即可以没有任何输入项 只是等待读入一个换行符 回车 经常用于暂停程序的运行 直到输入一个回车 2 readln语句与read语句的第二个区别是 read语句是一个接一个地读数据 在执行完本read语句 读完本语句中变量所需的数据 后 下一个读语句接着从该数据输入行中继续读数据 也就是说 不换行 如 Read a b Read c d Read e 如果输入数据行如下 1 2 3 4 5 6 则a b c d e的值分别为1 2 3 4 5 如果后面无读语句则数据6是多余的 这是允许的 Readln则不同 在读完本Readln语句中变量所需的数据后 该数据行中剩余的数据多余无用 或者说 在读完本Readln语句中变量所需数据后 一定要读到一个回车 否则多余的数据无用 设有下列语句 read a b c read d e readln readln f g 其中 所有变量均为整型 再设输入的数据如下 1 2 3 4 5 6 7 8 9 10 11 输出语句write和writeln功能 把程序计算的结果 按适当的形式输出到屏幕或文件 1 write语句格式 write 表达式1 表达式2 如 write x 5 a b write MynameisLiping 2 writeln语句格式 writeln 表达式1 表达式2 或writeln write语句与writeln语句格式上都相似 但它们在功能上有所不同 两个语句的区别在于 write语句将其后括号中的表达式一个接一个输出后 没有换行 而writeln语句则在输出各个表达式的值后换行 例如以下两个程序段的输出分别为 write 1 2 3 4 write 5 6 输出为 123456writeln 1 2 3 4 write 5 6 输出为 123456 实数的输出格式实数 real 以浮点型格式输出 例如805 67对应的浮点数为8 0567000000E 02 这种实数表达方式很不方便 我们可以通过下述形式强迫实数以定点型格式输出 实数表达式 域宽 小数位数例如 t的值设为63 123 下面三条输出语句分别有它们右边所示的输出格式 write t 6 31230000000E 01write t 6 2 63 12write t 10 5 63 12300write t 0 2 63 12write t 0 0 63 二 程序的三种基本结构 一 顺序结构程序按照语句的书写先后顺序逐句执行 直到程序的结束 Pascal程序中 顺序结构是一种最简单的基本结构 如果不去局部的考虑程序中的选择结构和循环结构 把它们看作是一个复合语句的话 那么程序本身就可以看作是一个顺序的结构 反过来更细地去看选择结构或循环结构的成分 那么它们的主要运行部分 被选择的语句或循环体 实际上又是一个属于顺序结构的复合语句 二 选择结构 if语句IF语句是由一个布尔表达式和两个供选择的操作序列组成 运行时根据布尔表达式的求值结果 选取其中之一的操作序列执行 有两种形式的IF语句 例1 输入一个整数 判断是否为偶数 是输出 否则输出 vara integer beginreadln a if amod2 0 thenwriteln yes elsewriteln no end 格式二 ifthenelse 格式一 ifthen 注意 else前面没有分号 IF语句的嵌套在if语句中 如果then子句或else子句仍是一个if语句 则称为if语句的嵌套 例2计算下列函数分析 根据输入的x值 先分成x 0与x 0两种情况 然后对于情况x 0 再区分x是小于0 还是等于0 varx real y integer beginreadln x ifx 0theny 1 x 0时 y的值为1 else x 0时 ifx 0theny 0elsey 1 writeln x x 6 2 y y end 1 x 0Y 0 x 0 1 x 0 2 case语句case语句是由一个表达式和众多可选择的操作序列组成 运行时 根据表达式的求值结果 在众多的分支中选取一个分支执行 其形式为 case表达式of常量1 语句1 常量2 语句2 常量n 语句n else语句n 1 可选项 end 例 根据学生的成绩给予相应的等级 对应关系如下 90 100A80 89B60 79C60以下D vars real ch char beginreadln s casetrunc s 10 of10 9 ch A 8 ch B 7 6 ch C elsech D end writeln ch end Vars real ch char beginreadln s if s 90 and s 80 and s 60 and s 79 thench C ifs 60thench D writeln ch end 三 循环结构 循环结构程序通常由三种的循环语句来实现 它们分别为for循环 当循环while 直到repeat循环 在编写程序时 若循环次数已知 通常采用for语句 若循环次数未知 则应选用while或repeat语句 在进行循环程序设计时 一定要搞清楚在循环前要做什么事 通常在循环前要做一些准备工作 如累加器 计数器清零 变量赋初始值等 在循环中需要做什么事 解决什么问题 在循环后又要做什么问题 通常将一组重复执行的语句称为循环体 而控制重复执行或终止执行由重复终止条件决定 因此 重复语句是由循环体及重复终止条件两部分组成 例1 键入一个自然数N 10000 求这个自然数的所有约数 不包括1和本身 之和S varn i s integer beginread n s 0 fori 2ton 1doifnmodi 0thens s i writeln s s end for语句1 for语句的一般格式for todo for downtodo 其中for to downto和do是Pascal保留字 表达式1与表达式2的值也称为初值和终值 例2 从键盘上输入n个数 求出他们的最大数 最小数 平均数 varn i max min x longint sum real beginread n read x max x min x sum x fori 1ton 1dobeginread x sum sum x ifx maxthenmax x ifx minthenmin x end writeln max max writeln min min writeln aver sum n 0 2 end 例3 求100以内的素数 质数 除了1和本身不再有别的约数 每行输出一个素数 varn i f integer F 标志 1 是素数 0 不是素数 beginforn 2to100dobeginf 1 fori 2totrunc sqrt n doifnmodi 0thenbeginf 0 break n不是素数 退出本层循环 end iff 1thenwriteln n end end while循环 repeat循环 当循环次数未知 只能根据某一条件来决定是否进行循环时 用while语句 repeat语句 实现循环要更方便 格式 whiledo 其意义为 当布尔表达式的值为true时 执行do后面的语句 格式 repeat until 其意义为 先执行循环语句 再判断条件 当布尔表达式的值为false时 继续执行循环 否则退出循环 分析 恰好使s的值大于10 意思是当表达式s的前n 1项的和小于或等于10 而加上了第n项后s的值大于10 从第一项开始 当s的值小于或等于10时 就继续将下一项值累加起来 当s的值超过10时 最后一项的项数即为要求的n 程序如下 vars real n integer begins 0 n 0 whiles 10dobeginn n 1 s s 1 n end writlen n end 例1 求恰好使s 1 1 2 1 3 1 n的值大于10时n的值 vars real n integer begins 0 n 0 repeatn n 1 s s 1 n untils 10 writlen n end 例2 编一个程序 从键盘输入一个真分数的分子和分母 输出它的小数形式 精确到小数点后1000位 varn m r q i integer beginread n m r n write 0 i 1 whilei 1000dobeginq 10 rdivm r 10 rmodm write q i i 1 end end 三 数组与字符串 一 数组1 数组的定义数组是程序中最常用的结构数据类型 用来描述由固定数目的同一类型的元素组成的数据结构 一维数组类型的定义一维数组类型的一般格式 array 下标1 下标2 of 一般在定义数组类型标识符后定义相应的数组变量 如 typearraytype array 1 100 ofinteger vara b arraytype 或 vara b array 1 100 ofinteger 1 从键盘上顺序输入n的数 按顺序和逆序输出 varn i integer a array 1 100 ofinteger beginread n fori 1tondoread a i fori 1tondowrite a i fori ndownto1dowrite a i end vark n i integer a array 1 20 ofbyte beginreadln k i 0 whilek0dobegini i 1 a i kmod2 取余 k kdiv2 取整数 end forn idownto1do 反序输出数组 write a n end 2 编程将一个十进制整数k转化为二进制数 k 10000 3 编程将一个十进制整数k转化为N进制数 k 10000 2 N 10 n 16 vark n i integer a array 1 20 ofbyte beginreadln k n i 0 whilek0dobegini i 1 a i kmodn 取余数 k kdivn 取整 end forn idownto1do 反序输出数组 ifa n 9thenwrite a n elsewrite chr a n 55 输出10到15对应的A到F end 二 字符串类型 var a string 或var a string n 其中正整数n 1 n 255 表示构成字符串的字符最多个数 即通常所说的字符串最大长度 而字符串的实际长度决定程序运行时的实际字符个数 可以由函数length返回 若字符串说明中没有指定长度 缺省值为255 常用的重要的字符串函数 length x 返回字符串x的长度 如 s abcd length s 4pos x s 返回子串在串s中的位置 pos book mybooked 3copy s I j 返回串s中从第i个字符开始的j个字符的子串 S1 copy mybooked 3 4 则s1 book 4 输入一个正整数n 10250 求它的各位数字之和S varn string s k i integer beginreadln n k length n 字符串长度k s 0 fori 1tokdos s ord n i 48 writeln s end 5 编程验证一个数是不是是回文数 10250 一个数的第一位和倒数第一位相同 第二位和倒数第二位相同 如 13531 3443 vara string i j k integer beginreadln a k length a i 1 j k while a i a j and i jthenwriteln yes elsewriteln no end 6 任何一个n3一定可以表示成n个连续的奇数和 输入n n 100 输出n3对应的表达式 样例 输入 3输出 7 9 11 题解 设表达式中的最小奇数为x 则 x x 2 x 4 x 2 n 1 n3即 nx 2 1 2 3 n 1 n3nx n n 1 n3得 x n n n 1 n n 1 1 varn x i integer beginreadln n 读入n x n n 1 1 求出第一个奇数 fori 1ton 1do 输出前n 1个奇数 beginwrite x x x 2 下一个奇数 end writeln x 输出第n个奇数 end 7 统计输入的字符串中的字母频率从键盘上输入一字符串 该字符串全部由英文字母组成 以 作为输入结束标志 要求程序完成 统计输入字符串中每个字母出现的次数 不分大小写 如 输入字符串为 adAabcdacdfg 输出结果应为 a4b1c2d3f1g1 varch char n i integer a array 1 26 ofinteger 统计字母出现的次数 beginfillchar a sizeof a 0 初始化 read ch whilech do 读如字符 beginif ch A and ch a and ch0thenwriteln chr i 64 a i end 8 删数问题键盘输入一个正整数 去掉其中任意 个数字后剩下的数字按原左右次序将组成一个新的正整数 编程对给定的 和 寻找一种方案使得剩下的数字组成的新数最小 不超过 位 输入 两行 第一行 正整数n 第二行 正整数S 输出 n去掉的s个数字后组成的新的正整数m 样例 输入 1230062输出 1006 4287600054 6723971045 400028762 121457894 分析 所删除的每一个数字是一个从首位开始的最长连续不下降序列的最末位数字 varn string s i integer beginreadln n 输入数字 read s 输入删除的数字个数 whiles 0dobegini 1 while i1 and n 1 0 dodelete n 1 1 删除处理后开头的0 并保证n不为空 writeln n end 9 灯的开关状态有N个灯放在一排 从1到N依次顺序编号 有N个人也从1到N依次编号 开始时 全部的灯是开的 1号将灯全部关闭 2将凡是2的倍数的灯打开 3号将凡是3的倍数的灯作相反处理 该灯如为打开的 则将它关闭 如关闭的 则将它打开 以后的人都和3号一样 将凡是自己编号倍数的灯作相反处理 编程实现 第N个人操作后 按顺序输出灯的状态 1 表示灯打开 0 表示灯关闭 输入 n n 100 灯的个数 输出 灯的状态 01序列 中间无空格 样例 输入 2输出 01 vark n i j integer a array 1 100 of0 1 记录灯的状态 0 关闭 1 打开 beginreadln n 读入灯的个数 fori 1tondoa i 1 初始状态 打开 fori 1tondobeginj i 从第i号队员出发进行第i次操作 whilej ndobegina j 1 a j 将凡是i的倍数的灯作取反处理 j j i end end fori 1tondowrite a i end 三 多维数组及应用 当一维数组元素的类型也是一维数组时 便构成了二维数组 二维数组定义的一般格式 array 下界1 上界1 下界2 上界2 of元素类型 如 vara array 1 5 1 4 ofinteger 则表示a是二维数组 共有5 4 20个元素 它们是 a 1 1 a 1 2 a 1 3 a 1 4 a 2 1 a 2 2 a 2 3 a 2 4 a 3 1 a 3 2 a 3 3 a 3 4 a 4 1 a 4 2 a 4 3 a 4 4 a 5 1 a 5 2 a 5 3 a 5 4 对二维数组的输入与输出也可用二重循环来实现 数组初始化为0 forI 1tondoforj 1tondoa I j 0 输入 fori 1to5doforj 1to4doread a i j 输出 fori 1to5dobeginforj 1to4dowrite a i j 5 writeln end fillchar a sizeof a 0 1 输出杨辉三角的前N行 N 10 样例 输入 5输出 111121133114641 111121133114641 vara array 1 100 1 100 ofint64 n i j integer beginreadln n fillchar a sizeof a 0 fori 1tondoforj 1toidoa i j 1 fori 3tondoforj 2toi 1doa i j a i 1 j 1 a i 1 j 自上而下递推求值 fori 1tondobeginforj 1toidowrite a i j writeln end end 2 编写一个程序 统计从键盘输入的n 100 个英文单词中以c开头的单词 并输出个数 样例 输入 4ancatbeeCow输出 catCow2 vara array 1 100 ofstring 记录输入的单词 n i s integer beginreadln n 输入单词个数 fori 1tondo 输入单词 readln a i s 0 记录单词中一c开头的数目 fori 1tondoif a i 1 c or a i 1 C thenbegins s 1 累加 writeln a i 输出以c开头的单词 end writeln s end
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!