




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一讲Pascal语言基础一 信息学奥赛的内容 程序 计算机语言 数据结构 算法 FreePascal或delphiC 等 信息学奥林匹克竞赛属于智力与应用计算机解题能力的比赛 题目有相当的难度 解好这类题目 需要具备很强的综合能力 1 观察和分析问题的能力 2 将实际问题转化为数学模型的能力 3 灵活地运用各种算法的能力 4 熟练编写程序并将其调试通过的能力 5 根据题目的要求 自己设计测试数据 检查自己的解法是否正确 是否完备的能力 能够参加信息学竞赛的选手应该具有很强的自学能力 需要学习有关组合数学 图论 基本算法 数据结构 人工智能搜索算法及数学建模等知识 还要学会高级语言和编程技巧 要具备很强的上机操作能力 考察的能力 选手应具备的条件 前提 综合成绩突出1 扎实的数学基础 2 很强的自学能力 3 与同学之间的密切友好的合作与交流 4 持之以恒 坚持不懈的学习 5 耐得住枯燥与寂寞 6 不能以参加竞赛为理由而耽误了其他文化课的学习 程序的基本结构 程序的上机调试和运行 语言基础一 例1 要将一张100元的大钞票 换成等值的10元 5元 2元 1元一张的小钞票 每次换成40张小钞票 每种至少1张 如 有一种换法 10元 9张5元 1张2元 2张1元 1张问 一共有多少种换法 程序的上机调试和运行 programex1 varx1 x2 x3 x4 n integer beginn 0 forx1 1to10doforx2 1to20doforx3 1to50doforx4 1to100doif 10 x1 5 x2 2 x3 x4 100 and x1 x2 x3 x4 40 thenn n 1 writeln n end 例2 已知 s 1 1 2 1 3 1 n求 使s的值大于10时最小的n vars real n integer begins 0 n 0 whiles 10dobeginn n 1 s s 1 n end writeln n end 例3 编一个程序 从键盘输入一个真分数的分子和分母 输出它的小数形式 精确到小数点后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 运行 FreePascal2 file new 新建文件3 compile make 编译 找错误 4 run run 运行5 debug output 察看结果 program程序名 可以省略 var变量说明 begin语句 语句 语句 end Pascal程序的基本结构 程序的基本结构 从这个简单的程序可以看到 一个PASCAL程序分为两个部分 程序首部和程序体 程序首部程序首部是程序的开头部分 有保留字program后接程序名及程序参数表组成 由分号结束 程序名是用户自己定义的标识符 参数表一般是文件变量名 用于该程序与外界的数据交流 最常用的参数为input和output 在turbopascal语言中 首部中的参数表可以省略 首部也可省略 程序体程序体是程序的主体部分 由说明部分和执行部分两部分组成 说明部分 用来描述程序中用到的变量 常量 类型 过程与函数等 本程序中第二行是 变量说明 用来定义变量的名称 类型 PASCAL规定 凡程序中用到所有变量 符号常量 数组 标号 过程与函数 记录 文件等数据都必须在说明部分进行定义 或称 说明 也就是说 不允许未说明先使用 执行部分 以 begin 开始 以 end 结束 其间有若干个语句 语句之间以分号隔开 一条语句执行一定的功能 所有语句完成程序设计的任务 允许一行写多个语句 也允许一个语句写几行 最后一行的end后加一 号表示结束 2 完整的pascal程序框架 program程序名 程序参数表 label标号说明 const常量说明 type类型说明 var变量说明 function函数说明 procedure过程说明 begin程序语句1 程序语句n end 程序首部 程序体 说明部分 执行部分 知识预备基本符号 保留字 标识符一 变量的定义说明 二 Pascal数据类型 整型 实型 三 基本语句 赋值语句 输入语句read 输出语句write 四 算术运算符和算术表达式五 标准函数 数值型函数 语言基础一 基本符号 保留字 标识符 1 基本符号 是ASCII字符集 主要有 26个英文字母 不分大小写 字符串中的字母例外 十个数字符号 特殊符号 2 保留字 保留字是指pascal语言中一些有特殊含义的英文单词 它们已被pascal语言自己使用 都有专门的用途 Pascal语言中保留字有36个 可分为以下六种类型 程序 函数 过程的符号 program function procedure 说明部分的专用定义符号 array const file label packed var record set type of 语句专用符号 case do downto else for goto if repeat then to until while with forward 运算符号 and div in mod not or 分隔符号 begin end 空指针常量 Nil7 PROTECTED PUBLIC PUBLISHED TRY FINALLY EXCEPT RAISE fp新增保留字 3 标识符 标识符是以字母开头的字母数字序列 大小写等效 可跟下划线 用来标识常量 变量 程序 函数等 Pascal中允许的标识符的有效长度为63 标识符分为两大类 标准标识符 标准常量 false true maxint 32767 标准类型 integer real char boolean text标准文件 input output标准函数 abs arctan chr cos eof eoln exp ln odd ord pred round sin sqr sqrt succ trunc标准过程 get new pack page put read readln reset rewrite unpack write writeln 自定义标识符由用户自己在程序首部或说明部分进行定义 但要注意以下几点 不能与保留字同名 避免与标准标识符同名 最好有一定的含义 增加程序的可读性 例如 在程序中如用到数学中的 则在定义该常量时可用PI表示 一 变量的定义说明 在程序中用到的所有变量必须事先定义 格式 Var 如 输入3个整数 求这3个数的平均值 Vara b c integer aver real 说明 1 同一类型的变量可以放在一起 也可分开写 不同类型的不能放在一起 2 变量名 可以是一个字母 也可以是多个字母和数字的组合 但字母开头 3 不能重复定义变量 二 Pascal数据类型 整型 实型 字符型和布尔型 1 整型 类型数值范围占字节数Byte0 2551Word0 655352Shortint 128 1271Integer 32768 32767 2Longint 2147483648 21474836474Longword0 42949672954Int64 9223372036854775808 92233720368547758078QWord0 184467440737095516158 2 实数类型范围有效位数占用字节Real2 9e 39 1 7e3811 126Single1 5E 45 3 4E387 84Double5 0E 324 1 7E30815 168Extended1 9E 4951 1 1E493219 2010Comp 2E64 1 2E63 119 208 Varbeginread a b c a b d a b writeln c writeln d End 例 输入 两个整数a b 3000 输出它们的乘积c 商d 实数的定点型格式输出 实数表达式 域宽 小数位数T 63 123write t 6 312300000000E 01write t 6 2 63 12write t 6 5 63 12300如果要求小数点后精确2位小数 Writeln x 0 2 a b integer c longint d real 1 赋值语句赋值语句是最简单的语句 1 赋值语句的格式变量名 表达式 其中 称为赋值号 2 执行过程计算机先计算赋值号右边表达式的值 然后将表达式的值赋给变量名代表的变量 如 A 9 8 2 1 A A 1 三 基本语句 输入语句read和readln功能 从键盘读入数据项 并把它存到变量中去 使该数据能在以后的计算中使用 输入语句的一般形式为 read v1 v2 vn readln v1 v2 vn 从键盘逐次读入数据 分别赋给变量v1 v2 vn 一行输入多个变量值时 要求数据之间用空格分隔 readln语句要求输入数据后必须回车 使得后继操作从下一行的头上开始 read语句与readln语句区别是 1 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 readln d e readln readln f g 其中 所有变量均为整型 设输入的数据如下 1 2 3 4 5 6 7 8 9 10 11 12 13 Vara b c d e f g integer beginread a b c readln d e readln readln f g writeln a b c d e f g end 2 readln语句与read语句的第二个区别是 read后一定要有参数表 readln可以不带参数表 即可以没有任何输入项 只是等待读入一个换行符 回车 经常用于暂停程序的运行 直到输入一个回车 输出语句write和writeln功能 把程序计算的结果 按适当的形式输出到屏幕 1 write语句格式Write 表达式1 表达式2 如 write x 5 a b write MynameisLiping 2 writeln语句格式 Write 表达式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 056700000000E 02 这种实数表达方式很不方便 我们可以通过下述形式强迫实数以定点型格式输出 实数表达式 域宽 小数位数例如 t的值设为63 123 下面三条输出语句分别有它们右边所示的输出格式 write t 6 312300000000E 01write t 6 2 63 12write t 6 5 63 12300write t 0 0 vara b t integer beginread a b t a a b b t writeln a a b b end 例 输入两个整数a b 交换他们的值 并输出 如 输入 3034输出 3430 四 算术运算符和算术表达式 1 算术运算符运算符运算运算对象结果类型 加整型 实型只要有一个运算对象是实型 结果就 减整型 实型是实型 如果全部的运算对象都是整 乘整型 实型型并且运算不是除法 则结果为整型 除整型 实型若运算是除法 则结果是实型 div整除整型整型mod取余整型整型 2 表达式是通过运算符把常量 变量 函数调用结合起来组成的 3 x1 b 上机练习题目 输入一个3位的正整数 输出他们的各位数字之和与乘积 如 输入 436输出 1372 五 标准函数 a b 算术函数函数标识符自变量类型意义结果类型abs整型 实型绝对值同自变量sqrt整型 实型平方根实型int整型 实型整数部分实型exp整型 实型指数实型ln整型 实型自然对数实型sqr整型 实型平方同自变量cos整型 实型余弦实型sin整型 实型正弦实型arctan整型 实型反正切实型frac整型 实型小数部分实型 abs 4 4abs 7 49 7 49int 3 71 3 0sqrt 4 2Sqr 2 4 正确的书写表达式 1 2 xy3 2 上机练习1 输入三角形的三条边a b c 输出三角形的面积 a b c是正整数 100 满足三角形条件 上机练习2 vara b t integer beginread a b t a a b b t writeln a a b b end 例 输入两个整数a b 交换他们的值 并输出 如 输入 3034输出 3430 上机练习3 输入一个3位的正整数 输出他们的各位数字之和与乘积 如 输入 436输出 1372 程序的三种基本结构 一 顺序结构 二 选择结构 if case 三 循环结构 for while repeat 例 输入三角形的三条边a b c 输出三角形的面积 a b c是正整数 100 满足三角形条件 一 顺序结构 vara b c integer p s real beginreadln a b c p a b c 2 s sqrt p p a p b p c writeln s 0 2 end 程序从第一句开始 依次顺序执行语句直到结束 中间无分支和循环 这种程序结构称为顺序结构 Readln a b c 读入边长 求p 求s 输出面积s 流程图 改进 输入三角形的三条边a b c 如果能构成三角形则输出三角形的面积 如果不能构成三角形则输出 Noanswer readln a b c 读入边长 a b c能否构成三角形 求p s 输出面积 输出 Noanswer YES NO vara b c integer p s real beginreadln a b c if a b c and a c b and b c a thenbeginp a b c 2 s sqrt p p a p b p c writeln s 0 2 endelsewriteln Noanswer end 无 二 选择结构1 if语句 功能 执行过程说明 1 该语句为一个语句 2 条件是一个布尔表达式或一个布尔变量 then和else后的语句可以是单个语句 当需要多条语句时 用begin和end括起来构成复合语句 3 当布尔表达式的值为真 则执行then后面的语句 值为假时有两种情况 要么什么也不做 要么执行else后面的语句 注意 else前面没有分号 格式一 ifthen 格式二 ifthenelse 逻辑 算术 关系运算符的运算次序 函数 not括号 div mod and or 补充 例1 输入一个整数 判断他的奇偶性 是偶数输出 奇数输出 方法一 Vara integer Beginreadln a Ifamod2 0thenwriteln yes ifamod20thenwriteln no End 方法二 Vara integer Beginreadln a Ifamod2 0thenwriteln yes elsewriteln no End 无 例2 已知方程 ax2 bx c 0输入系数a b c a0 输出方程的解 考虑各种情况 保留两位小数 1 如果无实数解输出 noanswer 2 相同的实数解 输出一个即可 3 两个不同的实数解 分别输出 如 输入 132输出 X1 1 00X2 2 00 输入 21输出 X 1 00 vara b c integer d x1 x2 real beginreadln a b c d b b 4 a c ifd0thenbeginx1 b sqrt d 2 a x2 b sqrt d 2 a writeln x1 x1 0 2 writeln x2 x2 0 2 end end 程序代码 programex2 input output vara b c integer beginwrite a b c 0 readln a b c if a b c and a c b and b c a thenif a a b b c c or a a c c b b or b b c c a a thenwriteln a a b 5 b c 5 c isrttriangle elsewriteln a a b 5 b c 5 c isnotrttriangle elsewriteln a a b 5 b c 5 c isnottriangle end 例3 输入三角形的三边 判断它是否是直角三角形 3 case语句 分情况语句 多分支语句 格式 case表达式of常数表1 语句1 常数表2 语句2 常数表n 语句n else语句n 1end 功能 执行过程说明 1 end与case对应2 表达式的类型通常是整型 字符型3 常量表是常量 其类型与表达式的类型要一致 常量表中的常量不能重复 例4 输入两个数 均不为零 及一个算术运算符 输出其运算的结果程序代码 programex3 input output varx y s real ch char beginwriteln inputxwriteln x ch y s end 三 循环结构 循环结构的三种形式 循环结构程序通常由三种的循环语句来实现 它们分别为FOR循环 当循环while 直到repeat循环 通常将一组重复执行的语句称为循环体 而控制重复执行或终止执行由重复终止条件决定 因此 重复语句是由循环体及重复终止条件两部分组成 1 for语句 1 for语句 计数循环 就是将规定循环体重复执行的次数 格式 for控制变量 初值to终值do循环体语句 for控制变量 初值downto终值do循环体语句 2 for语句执行过程 先将初值赋给左边的变量 称为循环控制变量 判断循环控制变量的值是否已 超过 终值 如已超过 则跳到步骤 如果末超过终值 则执行do后面的那个语句 称为循环体 循环变量递增 对to 或递减 对downto 返回步骤 循环结束 执行for循环下面的一个语句 3 说明 1 初值和终值可以是表达式 控制变量和初值 终值的类型相同 且必须是整型 布尔型和字符型等顺序类型 不能为实型 2 递增按succ函数规律变化 递减按pred函数规律变化 整型按数值大小变化 如果为字符型量 按ASCII码表的顺序计算 3 初值和终值在循环之前计算 重复过程中 其值不受影响 不得在循环语句中对控制变量进行赋值 4 当初值超过终值 不执行循环 循环次数为零 例1 计算1 2 3 4 100之和 算法分析 对于求和 我们使用的是累加的办法 程序代码 programex1 input output vari sum integer beginsum 0 fori 1to100dosum sum I writeln sum sum end 补充说明 类似sum迭加变量这样的功能称为 累加器 类似i这样的变量称为 计数器 计数器 和 累加器 是在程序中经常使用的基本操作语句 例3 键入一个自然数 输出其所有约数 计算出这些约数之和并输出 算法分析 解决这一问题的关键是找出约数 也就是判定一数能否被另一数整除 可以用xmody 0 来找出所有约数 程序代码 programex3 input output vari x y sum integer beginwrite x read x sum 0 i 0 fory 1toxdoifxmody 0thenbeginwrite y 8 i i 1 ifimod5 0thenwriteln sum sum yend writeln sum sum end If语句 For语句 If语句作为For语句的循环体 例4 编程找出四位整数abcd中满足下述关系的数 ab cd ab cd abcd算法分析 这道题属于搜索问题 因为是四位整数 其范围从1000 9999 所求的数究竟在哪里 无法确定 只有在这个范围内从小到大一个一个进行搜索 对每一个数 看它的高两位数与低两位数和的平方是否为该数 高两位数 abcddiv100 ab低两位数 abcdmod100 cd程序代码 programex4 input output vari m n k integer beginfori 1000to9999dobeginm idiv100 n imod100 k m n m N Ifk ithenwrite I 8 endend 补充说明 以上用的方法也叫 枚举法 又称 穷举法 它是用计算机解题的一种常用的办法 它的基本思路是 一一枚举各种可能的情况 并判断哪一种可能是符合要求的解 方法虽然很笨 然而与计算机高速的处理能力相结合 也不失为一种较有用的方法 2 while语句 对于for循环有时也称为计数循环 适合用于事先知道循环次数 当循环次数未知 只能根据某一条件来决定是否进行循环时 用while语句实现循环要更方便 当型循环 当条件满足时反复执行循环体 格式 while布尔表达式do语句 执行过程 while语句的执行过程为 判断布尔表达式的值 如果其值为真 执行步骤2 否则执行步骤4 执行循环体语句 do后面的语句 返回步骤1 结束循环 执行while的下一个语句 说明 1 为了是while循环能正常终止 布尔表达式中的变量必须在循环体中的某语句中有所改变 即有可能是布尔表达式的值为假 使循环结束 否则将出现死循环 2 循环体中的语句一般是多条语句 用begin和end使其成为一条复合语句 例5 输出1 100之间的奇数 程序代码 programex5 input output varx integer beginx 1 whilex 100dobeginwrite x 5 x x 2endend 例6 输入若干个字符 它的终止符是 计算输入的字符中 a A 出现的次数 算法分析 设计数器i 置初值为0 出入字符 当字符不为 时循环 如果字符为 a 或 A 则计数器加1 读入下一个字符 输出计数器的值 程序结束 程序代码 programex6 input output varch char i integer begini 0 read ch whilech dobeginif ch a or ch A theni i 1 read ch end writeln i i end repeat语句 直到型循环 反复执行循环体直到条件满足为止 格式 repeat语句1 语句2 语句3 语句nuntil布尔表达式 功能 执行过程 先执行指定的语句序列 然后判别表达式 3 repeat语句 直到型循环 说明 while语句和repeat语句都可以实现循环结构 但它们有四点不同 例7 将例题6的程序用repeat语句改写 programex7 input output varch char i integer begini 0 repeatread ch if ch a or ch A theni i 1 untilch writeln i i end 例8 从n个数中挑出最大的数 算法分析 读入n值 读入第1个数 赋值给变量max 依次读入后n 1个数 与max比较 若数值大于max 则将此数值赋给max 输出最大数 程序代码 programex8 input output varn m max x integer beginwriteln inputn read n writeln inputnnums read max m 0 repeatread x ifx maxthenmax x m m 1untilm n 1 writeln themaxnumis max end 三 多重循环 例9 求100 999中的水仙花数 若三位数abc abc a3 b3 c3 则称为水仙花数 如 153 13 53 33 1 125 27 153 算法设计 采用三重循环求解 用for循环 程序代码 programex9 input output vara b c integer beginfora 1to9doforb 0to9doforc 0to9doifa a a b b b c c c a 100 b 10 cthenwrite a 100 b 10 c 6 writelnend 例10 试编写能打印如下输出图形的程序 程序代码 programex10 input output vari j k integer beginfori 6downto1dobeginforj 1to6 idowrite fork 2 i 1downto1dowrite writelnendend 本讲要点 Pascal的程序结构基本符号 保留字 标识符数据类型 常量 变量及说明方法函数与表达式三种基本的程序结构顺序结构分支结构循环结构 请讲例题上机练习 二 循环结构的综合练习 1 陶陶摘苹果 NOIP2009p apple pas c cpp 问题描述 陶陶家的院子里有一棵苹果树 每到秋天树上就会结出10个苹果 苹果成熟的时候 陶陶就会跑去摘苹果 陶陶有个30厘米高的板凳 当她不能直接用手摘到苹果的时候 就会踩到板凳上再试试 现在已知10个苹果到地面的高度 以及陶陶把手伸直的时候能够达到的最大高度 请帮陶陶算一下她能够摘到的苹果的数目 假设她碰到苹果 苹果就会掉下来 输入 第1行只包括一个100到120之间 包含100和120 的整数 以厘米为单位 表示陶陶把手伸直的时候能够达到的最大高度 第2行包含10个100到200之间 包括100和200 的整数 以厘米为单位 分别表示10个苹果到地面的高度 两个相邻的整数之间用一个空格隔开 输出 输出包括一行 这一行只包含一个整数 表示陶陶能够摘到的苹果的数目 样例输入 110100200150140129134167198200111 样例输出 5 varh x sum i integer beginsum 0 readln h h h 30 fori 1to10dobeginread x ifx htheninc sum end writeln sum end 2 灯的开关状态有N个灯放成一排 从1到N依次顺序编号 开始时全部打开 有N个人也从1到N依次编号 1号人将灯全部关闭 2号人将凡是编号为2的倍数的灯打开 3号人将凡是编号为3的倍数的灯作相反处理 该灯如为打开的 则将它关闭 如关闭的 则将它打开 以后的人都和3号人一样 将凡是自己编号倍数的灯作相反处理 编程实现 第N个人操作后 按顺序输出灯的状态 1 表示灯打开 0 表示灯关闭 输入 n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025红山公园三凉摊位广告位租赁合同
- 2025版汽车报废回收运输合同书
- 二零二五年边坡支护施工工程安全防护设施租赁合同
- 中型企业申请书
- 培训服务与知识产权课件
- 转正申请书大学生
- 商品运输协议书
- 培训救援知识通知课件
- 培训心得课件
- 施工方案合同模板
- 安全管理目标及责任书
- 阀门配送方案模板(3篇)
- 激光切割安全操作规程
- 海事管理培训课件
- 《曾国藩传》读书分享课件
- 十五五林业发展规划(完整版)
- 厂区安保巡逻管理制度
- T/CECS 10209-2022给水用高环刚钢骨架增强聚乙烯复合管材
- 项目包装合作协议书
- 安徽省合肥一中2025届高三5月回归教材读本
- 2024年江西省投资集团有限公司总部招聘考试真题
评论
0/150
提交评论