书签 分享 收藏 举报 版权申诉 / 154
上传文档赚钱

类型信息学奥林匹克竞赛培训PASCAL语言课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4318552
  • 上传时间:2022-11-29
  • 格式:PPT
  • 页数:154
  • 大小:1.92MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《信息学奥林匹克竞赛培训PASCAL语言课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    信息学 奥林匹克 竞赛 培训 PASCAL 语言 课件
    资源描述:

    1、教师(PASCAL串讲)培训讲习v1989年5月首次举办国际信息学奥林匹克竞赛,简称IOI,成为继数学、物理、化学之后的又一门国际(中学生)奥林匹克竞赛。v1991年起全国青少年计算机竞赛更名为全国青少年信息学(计算机)奥林匹克竞赛,简称NOI。由中国科学技术协会主管,中国计算机学会主办。全国青少年信息学奥林匹克联赛,简称为NOIP,参加联赛是参加NOI的必要条件。第1课 认识PASCAL语言Pascal是一种计算机通用的、编译型的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。是一种按结构化程序设计原则描述的高级语言。主要特点有:严格的结构化形式;丰富完备的数

    2、据类型;运行效率高;查错能力强。NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言 第1课 认识PASCAL语言让我们先来看一个PASCAL程序,通过这个程序了解PASCAL的规则。例例L1_1 L1_1 已知半径,求圆周长和面积的程序。程序说明:程序说明:PROGRAM circle(input,output);(*第第1行:程序首部行:程序首部 *)CONST(*第第2行:常量说明行:常量说明*)PI=3.14159;VAR(*第第4行:变量说明行:变量说明*)r,l,s:real;BEGIN(*第第6行:语句部分行:语句部分*)read(r);(*第第7行:输入

    3、语句行:输入语句*)l:=2*PI*r;(*第第8行:赋值语句行:赋值语句*,计算周长,计算周长)s:=PI*r*r;(*第第9行:赋值语句行:赋值语句*,计算面积,计算面积)write(r,l,s);(*第第10行:输出语句行:输出语句*)END.(*第第11行:语句部分以行:语句部分以END.结束结束*)完整的PASCAL程序框架Program 程序名(程序参数表);Label 标号说明;Const 常量说明;Type 类型说明;Var 变量说明;Function 函数说明;procedure 过程说明;begin 程序语句;end.1、PROGRAM写在最左边顶格;2、注释的大括号、和C

    4、ONST、VAR、BEGIN、END等语句上下对齐,且它们比PROGRAM向右移两个字符;3、各个语句和程序语句也是上下对齐,它们比第2点中的各语句又向右移两个字符;4、语句间多余空格与空行,编译时会忽略。数制的转换1、常用的进位计数制有:十进制、二进制、八进制、十六进制。名称基数标志符十进制0,1,2,3,4,5,6,7,8,9,D二进制0,1B八进制0,1,2,3,4,5,6,7Q十六进制0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,FH十进制D二进制B八进制Q十六进制H00000001000111200102230011334010044501015560110667011

    5、177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F161000020103、十进制与二进制的相互转换例1:将十进制数20.6875转换成二进制数。(1)整数部分的转换:“除以2倒序取余法”。2 20 0 2 10 0 2 5 1 2 2 0 2 1 1 0(2)小数部分的转换:“乘2取整法”。0.6875 0.3750 0.75 0.5 2 2 2 2 1.3750 0.75 1.5 1.0 1 0 1 1 正序取整倒序取余合在一起得:(20.6875)10=(10100.1011)2例2:将(11

    6、001.0101)2转换成十进制数。(11001.1101)2=124+123+022+021+120+12-1+12-2 +02-3+12-4 =16+8+1+0.5+0.25+0.0625 =(25.8125)10 十进制数和二进制数的转换可以推广 到十进制与八进制、十进制与十六进制数的转换。如十进制数转换在八进制数的方法是:“除以8倒取余法”;十进制小数转换成八进制小数的方法是:“乘8取整法”。课堂作业:(1)(1101101.101)2 =()10 (2)(45.625)10 =()2第2课 PASCAL的数据类型、标识符、表达式、语句 数据对于一门程序语言是非常重要的,数据的一个非常

    7、重要的特征就是它的类型。PASCAL规定:程序中出现的变量必须先说明才能使用。二个值,即整数类型v包括正整数(+号可略)、负整数和零。v1,204在会计统计中是允许的,但在pascal中是非法的。v整数类型的标识符为integer,取值范围为:-32768n 32767。v在free pascal中,允许整数采用十六进制(前加$)或二进制(前加%)表示。如 x:=%101,相当于 x:=5 ,y:=$10,相当于y:=16 v整数的类型:名称类型标识符数据范围短整型Shortint-128127长整型Longint-21474836482147483647字节型Byte0255字型Word06

    8、5535整数类型Int64-92233720368547758089223372036854775807无符号整数Qword int64018446744073709551615注意:int64int64不是有序类型。直接给一个不是有序类型。直接给一个 int64int64类型的变量赋值一个超过类型的变量赋值一个超过longintlongint范围范围的整数是非法的,这是因为的整数是非法的,这是因为free pascalfree pascal在表达式的计算中默认最大类型为在表达式的计算中默认最大类型为longintlongint。标识符v标识符是以字母开头的字母、数字组合,用来表示常量、变量、

    9、类型、文件、函数、过程或程序的名字。vx,y,max,min,sum,a15,a3b7都是合法的标识符。而v5x,x-y,ex10.5都是非法的标识符。v标识符的长度一般不要超过8个字符。v标识符的选取最好有一定意义,这样便于记忆,也增加了程序的可读性。表达式和运算符 v算术运算符:+,-,*,/,div(整除),mod(取余)v关系运算符:=,=,v逻辑运算符:AND,OR,NOTv表达式就是将数据和运算符结合使用,组成一组有意义的运算式。v在PASCAL语言中规定,表达式按下列运算优先规则计算:1、所有括起来的子表达式必须先计算,且子表达式必须从里到外计算;2、在同一子表达式中的运算符按下

    10、列次序计算:函数;NOT;AND,*,/,DIV,MOD;OR,+,-;,=,3、在同一个子表达式中,同一优先级的运算按从左到右的次序进行。4、MOD运算结果的符号总是和被除数相同,而与模无关。-15 mod 6=-3 -15 mod(-6)=-3 15 mod(-6)=3 PASCAL程序中的运算优先规则 常量与变量v常量定义格式:const =;要求如下:1、要放在程序说明部分。2、必须遵循先定义后使用的原则。3、不允许重复定义,或一次定义多个常量。例如:const a=1;a,b=10;c=1 or 2;d:=3;v变量定义格式:var :类型标识符;例如:var a,b:integer

    11、;x,y:real;ch:char;t:boolran;但下列说明是非法的:例如:var a,b=integer;ch:char;ch :boolean;a,b后面不能用=,ch不能重复定义。变量一经说明,系统就为其分配内存。程序中使用该变量时,就要在相应的内存单元读写数据,称为对变量的访问。顺序结构程序设计1 1、赋值语句、赋值语句 赋值语句的格式:变量标识符:=表达式;功能:赋值语句是先执行计算表达式的值,然后赋值给变量标识符。说明:(1)”:=“称为赋值号,不要与”=“混淆。赋值有方向性,左边只能是变量,不能是表达式,如 x:=1是非法的。(2)赋值号两边的类型必须相同,但是整型表达式可

    12、以赋值给实型,反之不成立。(3)一个赋值语句只能给一个变量赋值,变量可以赋值多次,但只保留最后一次的值。(4)被赋值的变量可以作为表达式因子参与运算,如:i:=i+1;是合法的。(5)对变量的赋值是对变量的存入访问。如d:=a;语句执行后,d的变量内容就已经是a变量的内容,但是a变量的值并没有消失与改变。在实际编程中,我们经常使用a:=a+1;作为计数器,用s:=s+x;作为累加器,用t:=t*n;作为累乘器。2、输入(read、readln)语句输入语句格式:格式1:read ;格式2:readln ();功能:执行该语句时,程序进入等待状态,等待用户从键盘输入数据,输入的数据将依次赋给变量

    13、表中的变量,而后程序继续执行其他语句。说明:(1)变量表中变量超过一个时,中间用逗号隔开。从键盘输入数据时,数据的个数不能少于变量个数,否则电脑一直处于等待状态。当数据多于变量个数时,对于readln语句将其忽略,对于read语句时,会补下一句read语句读入,如果没有输入语句,也将其忽略。(2)输入数值型数据时,必须用空格或回车键分隔,最后一定要用回车键。输入字符型数据时,不能有空格与回车键,必须连续输入,因为空格与回车键也会当作字符。(3)输入的数据必须是常量,且必须与对应的变量类型相一致。(4)readln();可以没有变量名表,此时该语句等待从键盘输入回车键。v Readln(x);等

    14、价于执行了二条语句:read(x);readln();3、输出(write、writeln)语句输出语句的格式:格式1 write;格式2 writeln();功能:按指定的格式将输出项的内容输出到屏幕上。说明:(1)输出项如果是多项时,各项间用逗号分隔。(2)输出项可以是常量、变量、函数、表达式。常量直接输出,变量时输出变量的存储单元内容,遇到函数与表达式时,先计算、再输出。(3)write 语句输完最后一项时,不换行,等待下一条 write语句继续输出。Writeln语句输完最后一项时换行,该语句允许没有输出项,起到换行作用。v writeln(x);等价于执行了write(x);writ

    15、eln();例:X:=2;y:=3;writeln(x=,x,y=,y);writeln(x+y=,x+y,x*y=,x*y)输出结果为:x=2 y=3x+y=5 x*y=6自定义场宽(1)单场宽。单场宽。用来控制整型、字符型、布尔型数据的输出格式,不能用于实数型。格式:n 说明:n(正整数)表示输出时所占的列数。单场宽一律右对齐,前用空格。(2)双场宽。双场宽。用来控制实数的输出格式。格式:n1:n2 说明:n1表示输出总占列数,包括符号位、整数部分、小数点和小数部分;n2表示小数部分的列数。当数据突破场宽时,首先保证整数部分的有效性,小数部分按n2场宽进行四舍五入显示,但内存中仍是原来的精

    16、确度。单场宽右对齐,双场宽向小数点看齐,多余的小数位数补零。例T2_1:交换两个变量的值。(1)利用中间变量)利用中间变量c,实现交换。,实现交换。Program T2_1_1;Var a,b,c:integer;Begin write(please input a,b=?);read(a,b);write(before:,a=,a,b=,b);c:=a;a:=b;b:=c;writeln(after:,a=,a:8,b=,b:8);End.(2)不用中间变量,也可实现交换。)不用中间变量,也可实现交换。Program T2_1_2;Var a,b:integer;Begin write(pl

    17、ease input a,b=?);read(a,b);write(before:,a=,a,b=,b);a:=a+b;b:=a-b;a:=a-b;writeln(after:,a=,a:8,b=,b:8);End.例例T2_2:鸡兔同笼问题。已知鸡和兔的总头数鸡兔同笼问题。已知鸡和兔的总头数是是H,总腿数为,总腿数为F,求鸡和兔各多少只?,求鸡和兔各多少只?分析:设鸡为分析:设鸡为C只,兔为只,兔为R只,则只,则 C+R=H 2*C+4*R=F解得:解得:C=(4*H-F)/2,R=H-C 。程序为:程序为:Progrem T2_2;var h,f,c,r:real;begin readln

    18、(h,f);c:=(4*h-f)/2;r:=h-c;writeln(click:,c);writeln(rabbit:,r);end.例T2_3:随机产生一个三位自然数,求其百位、十位、个位上的数字。分析:要产生随机数,必然用到随机函数。Random是随机函数能产生0,1之间的随机实数。随机产生三位数的表达式为:trunc(random*900)+100假设三位数X,百位数分另别为A,B,C,则存在如下关系:A=X DIV 100B=(X-A*100)DIV 10C=X MOD 10程序为:Program T2_3;VAR x,a,b,c:integer;begin randomize;它的作

    19、用是每次运行程序时,random函数产生不同的随机数。起到埋种子作用。x:=trunc(random*900)+100;writeln(x=,x);a:=x div 100;b:=(x-a*100)div 10;c:=x mod 10;writeln(a:5,b:5,c:5);End.例T2_4 已知三角形的两边及夹角,求第三边及面积。数学建模:设三角形的两边及夹角分别为a,b,第三边为c,面积为s。则 ,若以角度值输入,在计算sin和cos时应转换为弧度。角度转弧度的公式为:弧度=角度180cos222abbacsin21abs 例T2_5:输入一个字符,求其序号、前导(即前一字符)、后继(

    20、即后一字符)。例T2_6:输入x,y。若在圆环内,输出true,若在圆环外;输出false。圆环如图所示。讨论:如图所示,若下式1x2+y24成立则在圆环内,否则在圆环外。设布尔变量bool,当x,y在圆环内时,让它取值为true,否则取值为false。作业:vXT1_1 XT1_1 写一程序读入三角形的三个边a,b,c,计算并打印三角形的面积S。可利用下列公式计算。其中:vXT1_2 输入一个三位整数,将它们反向输出。例如输入127,输出应为721。)()(cpbpappS)(21cbap第3课 选择结构程序设计 PASCAL中有两个语句可实现选择结构:IF语句(条件语句)和CASE语句(情

    21、况语句)3.2.1 IF3.2.1 IF语句的两种形式语句的两种形式IF语句又称如果语句(或称条件语句)。它的一般形式是IF(条件)THEN(语句1)ELSE(语句2)其中“条件”实际上是一个布尔表达式,它的值可以是真(true)或假(false)。在条件为真时,执行语句1,否则(条件为假)执行语句2。可以利用流程图来描述选择结构。在流程图中用菱形框表示要执行的判定,其余步骤用矩形框表示,箭头表示执行的顺序。例L3_1 火车托运行李,要根据行李的重量按不同标准收费。例如不超过50kg,按每公斤0.35元收费。若超过50kg,则其中50kg按每公斤0.35元收费,其余超过部分按每公斤0.50元收

    22、费。现输入托运行李重量,要求计算并输出托运费。数学建模:设托运行李重量为weight,该问题要求根据weight是否超过50kg,按不同公式计算出托运费。设托运费为pay。weight和pay均为实型。下面给出算法。一级算法1、读入weight的值。2、根据weight的大小选择不同的公式计算pay。3、输出pay。其中第2步需求精。根据题意,可以写出计算pay的公式如下:weight50weight505.0)50(35.05035.0weightweightpay除了上面给出的IF语句形式外,PASCAL中还有另外一种IF语句形式。即IF(条件)THEN(语句)在条件为真时,执行THEN后

    23、的语句。在条件为假时,不执行THEN后的语句,在两种情况下的后继语句都是IF语句的下一个语句。例例L3_2L3_2 读入三个数,找出并打印其中的最大数。解:PROGRAM L3_2;VAR a,b,c:real;BEGIN write(a=?);read(a);write(b=?);read(b);write(c=?);read(c);IF ab THEN a:=b;IF ac THEN a:=c;writeln(ZuiDaShu:,a)END.3.2.2 3.2.2 复合语句复合语句v在IF语句中,跟在THEN或ELSE后的语句可能不止一个,这时要用到复合语句的概念。v复合语句是一个以BEG

    24、IN开始,以END结束的语句。在BEGIN与END之间可以包括若干个语句,每个语句之间以分号分开。一般形式为:BEGINBEGIN (语句(语句1 1););(语句(语句2 2););(语句(语句n n)ENDENDv一个复合语句从外部看来,相当于一个语句。3.2.3 IF语句的嵌套v在IF语句中,THEN或ELSE后的语句本身也可能是IF语句。此时称为IF语句的嵌套(或称为复合IF语句)。例如语句 IF(条件1)THEN(语句1)ELSE IF(条件2)THEN(语句2)ELSE(语句3)就是一个复合IF语句,在它的ELSE后又是一个IF语句。有时IF语句可能会有两种不同的理解。例L3_3:

    25、有一个函数表达式为:编写程序,输入x,输出y的值。010001xxxy3.3 CASE语句 CASE语句是实现选择结构程序设计的另一种语句。它的使用有时比IF语句来得简单、直观。CASE语句(或称情况语句)的一般形式是 CASE(表达式)OF (值表1):(语句1);(值表2):(语句2);(值表n):(语句n);ELSE 语句n+1;END;在CASE语句头上的表达式必须是有序类型(整型、字符型、布尔型以及后面要介绍的枚举型、子界型)。值表是一些由逗号分开的常数。表达式所有可能的值必须在值表中出现,且每个值只能出现一次。如果当前表达式的值在某个值表i中出现,则该程序只执行对应值表i的语句i,

    26、然后执行整个CASE语句后的下一语句。else 可以省略,此时若无表达式的值与之相匹配的常数表时程序将向下运行并跳出case语句。例L3_5 输入年、月,输出该月有几天。v讨论:每年的讨论:每年的1、3、5、7、8、10、12月,每月月,每月有有31天;天;4、6、9、11月,每月有月,每月有30天;天;2月月闰年有闰年有29天,平年有天,平年有28天。天。v年号能被年号能被4整除,但不整除,但不能被能被100整除,或者年整除,或者年号能被号能被400整除的年均整除的年均是闰年。是闰年。v用用year、month、days分别表示年、月、每月分别表示年、月、每月天数。它们均为整数。天数。它们均

    27、为整数。v闰年的条件可以写成如闰年的条件可以写成如下的布尔表达式:下的布尔表达式:v(year MOD 4=0)AND(year MOD 100 0)OR(year MOD 400=0)Program L3_5;var year,month,days:integer;begin read(year,month);case month of 1,3,5,7,8,10,12:days:=31;4,6,9,11 :days:=30;2:if (year mod 4=0)and(year mod 1000)or(year mod 400=0)then days:=29 else days:=28;en

    28、d;writeln(year,year,month,month:,days:,days);End.例L3_6 编制程序,根据输入的x值,计算y与z并输出。)5.2(1)5.2(122xxxxy)0(52)0(0)0(32xxxxxz作业:vXT3_1 对一批货物征收税金,价格在对一批货物征收税金,价格在1万元以上的货万元以上的货物征税物征税5%,在,在5000元以上,元以上,1万元以下的货物征税万元以下的货物征税3%,在在1000元以上,元以上,5000元以下的货物征税元以下的货物征税2%,1000元元以下的货物免税。编写一程序,读入货物价格,计算以下的货物免税。编写一程序,读入货物价格,计算

    29、并输出税金。并输出税金。vXT3_2 输入某学生成绩,若成绩在输入某学生成绩,若成绩在85分以上,输出分以上,输出very good,若成绩在,若成绩在60分到分到85分之间,输出分之间,输出good,若成绩低于若成绩低于60分,输出分,输出no good。vXT3_3 输入班号,输入该班学生人数。应用输入班号,输入该班学生人数。应用CASE语语句编程序。句编程序。班级201202203204205班额4547424648第4课 循环结构v循环结构(或称重复结构)是程序中的一个基本结构,在循环结构(或称重复结构)是程序中的一个基本结构,在解许多问题中是很有用的。我们知道,在许多复杂的问题解许多

    30、问题中是很有用的。我们知道,在许多复杂的问题中,常常需要做大量类同的计算处理。尽管计算机的运算中,常常需要做大量类同的计算处理。尽管计算机的运算速度很快,然而要把这些大量类同的计算处理的每一步都速度很快,然而要把这些大量类同的计算处理的每一步都写成语句,并输入计算机中,其工作量是相当大的。有时写成语句,并输入计算机中,其工作量是相当大的。有时是难以完成的。是难以完成的。v循环结构程序设计可以帮助我们有效地解决这一难题。利循环结构程序设计可以帮助我们有效地解决这一难题。利用循环结构程序设计,使得我们有可能只编写少量的语句,用循环结构程序设计,使得我们有可能只编写少量的语句,让计算机重复执行它许多

    31、次,从而完成大量类同的计算要让计算机重复执行它许多次,从而完成大量类同的计算要求。求。v在在PASCAL中,实现循环程序设计的主要语句有中,实现循环程序设计的主要语句有FOR语句、语句、WHILE语句和语句和REPEAT语句。语句。一、FOR语句格式1:(递增型)FOR x:=TO DO 格式1:(递减型)FOR x:=downTO DO FOR X:=1 TO 10 DOFOR X:=A TO Z DO 控制变量控制变量 初值初值 控制变量控制变量终值终值 false true 执行语句执行语句 控制变量控制变量 succ(控制变量)控制变量)控制变量控制变量 初值初值 控制变量控制变量终值

    32、终值 false true 执行语句执行语句 控制变量控制变量 pred(控制变量)控制变量)T4_001 计算1+2+3+10PROGRAM T4_001;VAR s,n:integer;BEGIN s:=0;FOR n:=1 TO 10 DO s:=s+n;writeln(s=,s)END.s=0当n=1 s=s+n=0+1=1;当n=2 s=s+n=1+2=3当n=3 s=s+n=3+3=6当n=4 s=s+n=6+4=10当n=5 s=s+n=10+5=15当n=6 s=s+n=15+6=21当n=7 s=s+n=21+7=28当n=8 s=s+n=28+8=36当n=9 s=s+n=

    33、36+9=45当n=10 s=s+n=45+10=55例T4_002:输入10个任意整数,求它们的和.PROGRAM T4_002;VAR s,n,a:integer;BEGIN s:=0;FOR n:=1 TO 10 DO BEGIN read(a);s:=s+a;END;writeln(s=,s)END.PROGRAM T4_003;VAR n,i,sum:integer;BEGIN read(n);sum:=1;FOR i:=1 TO n DO sum:=sum*i;writeln(n!=,sum);END.注意N8,否则会溢出。例T4_004:任何一个 n3一定可以表示成n个连续的奇数

    34、和。输入n(n100),输出n3对应的表达式。数学题解:设表达式中的最小奇数为x;当N=1时,最小奇数X=1,1个奇数;当N=2时,最小奇数X=3,2 个奇数;当N=3时,最小奇数X=7,3 个奇数;N N3 1 1 2 23=8=3+5 3 33=27=7+9+11 4 43=64=13+15+17+19 当 N=K 时,最小奇数 X 前己有 1+2+3+(K-1)个奇数,则第K个奇数 K*(K-1)X=*2+1=K*(K-1)+1=N*(N-1)+1 2Program T4_004;var i,n,a:longint 循环变量,连续的奇数个数,当前项,类型循环变量,连续的奇数个数,当前项,

    35、类型 为长整型为长整型 begin readln(n);a:=n*(n-1)+1;for i:=1 to n-1 do begin write(a,+);a:=a+2;end;writrln(a);readln;end 思考题:用数学方法证明上述定理。作业:T4_005 输入10个任意整数,求它们的平均值。T4_006 按正序和反序分别输出26个英文字母。T4_007 输入20个整数,输出其中最大数。T4_008 输入20个整数,统计其中正、负和零的个数。思考题:100.321s求值:作业答案:PROGRAM T4_005;VAR ave:real;i,n,sum:integer;BEGIN

    36、sum:=0;FOR i:=1 TO 10 DO BEGIN read(n);sum:=sum+n;END;ave:=sum/10;writeln(ave=,ave:6:2)END.PROGRAM T4_006;VAR i:integer;BEGIN writeln();FOR i:=1 TO 26 DO write(chr(96+i);writeln();FOR i:=122 DOWNTO 97 DO write(chr(i)END.PROGRAM T4_006_1;VAR i:char;BEGIN writeln();FOR i:=ATO Z DO write(i);writeln();F

    37、OR i:=ZDOWNTO A DO write(i)END.作业答案:PROGRAM T4_007;VAR max,i,n:integer;BEGIN read(max);FOR i:=1 TO 19 DO BEGIN read(n);IF max0 THEN Zheng:=Zheng+1 ELSE IF n=0 THEN Ling:=Ling+1 ELSE Fu:=Fu+1;END;FOR writeln(Zheng Shu You:,Zheng,;Fu Shu You:,Fu,;Ling You:,Ling)END.二、while 语句(当型循环)当循环次数未知,例如它依赖于某个布尔表达

    38、式的值,而此值在循环执行过程中会改变。这种循环不可能由FOR语句实现,PASCAL为此提供了WHILE语句和REPEAT语句。WHILE语句的一般形式:WHILE DO 例例T4_009:求求S=2+6+10+98的值。的值。分析:S为求和累加器,X为当前项,赋初值为2,每次循环后增加4,取X98为布尔表达式。课堂作业:计算 S=1+2+4+8+128+256的值。例T4_010:求两个自然数的最小公倍数。分析:先从数学角度来分析一下,所谓最小公倍数就是指能被M和N同时整除的最小自然数。先设一个变量i,让它从1开始按自然数增长,将i与M相乘的结果存到变量S中,这样S就是M的公倍数,由于i是从最

    39、小开始的,然后再用每一个S除以因子N,若能整除,则S为M和N两个因子的最小公倍数。Program T4_010;var n,m,I,s:longint;begin write(请输入两个自然数);readln(m,n);i:=1;s:=m*I;while s mod n 0 do begin i:=i+1;s:=m*I;end;writrln(s=,s);end.三、repeat语句(直到型循环)REPEAT语句也用于循环次数未知的循环,它的用法与WHILE语句稍有不同。REPEAT语句的一般形式如下:REPEATUNTIL 例 T4_011 计算 (泰勒展开式)直到最后一项的绝对值小于10-

    40、7时停止计算,x由键盘输入。.!7!5!3)sin(753xxxxx )2()1()1(1ixixttiixt 1;0;1sxti作业:T4_012:计算 当最后一项的绝对值小于10-6时结束,打印输出结果。T4_013:求满足条件 N!100000 的最大值N。.1715131s三种循环语句的相同点与不同点FORFORWHILEWHILEREPEATREPEAT语句格式语句格式FOR FOR :=TO TO DO DO WHILE WHILE DO DO REPEATREPEAT UNTIL UNTIL 循环变量循环变量赋值赋值布尔表达式布尔表达式无循环变量无循环变量循环次数循环次数确定,由

    41、初值和终值决确定,由初值和终值决定定不确定,由循环体前的布不确定,由循环体前的布尔表达式决定,当值尔表达式决定,当值为为“假假”时,结束循时,结束循环。环。可能一次循环也没有可能一次循环也没有不确定,由循环体后的不确定,由循环体后的布尔表达式决定,布尔表达式决定,当值为当值为“真真”时结时结束循环。束循环。至少有一次循环至少有一次循环循环体循环体多语句时,需用多语句时,需用BEGINBEGIN和和ENDEND多语句时,需用多语句时,需用BEGINBEGIN和和ENDEND多语句时,不需用多语句时,不需用BEGINBEGIN和和ENDEND用计算机解题的基本方法 第5课 多重循环v如果一个循环结

    42、构的内部(循环体)又包括一个循环结构,就称为多重循环结构。实现多重循环结构仍可以用前面讲的三种循环语句。因为任一循环语句的循环体部分都可以包含另一个循环语句,这种循环语句的嵌套为实现多重循环提供了方便。v多重循环的嵌套次数可以是任意的。可以按照嵌套层次数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。v在设计多重循环时,要特别注意内、外循环之间的关系,以及各语句安放的位置,不要搞错。T5_001 求1100之间的素数(质数),每行输出5个素数.i一级算法:一级算法:FOR i:=2 TO 100 DO BEGIN 1、用、用2到去除到去除i,看看能否除尽,看

    43、看能否除尽 2、IF 除不尽除不尽 THEN 输出素数输出素数i END算法需进一步求精。用变量算法需进一步求精。用变量yn来表示是否除来表示是否除尽。尽。一开始让一开始让yn=1,当有一个数能除尽时,让,当有一个数能除尽时,让yn=0表示能除尽,这时表示能除尽,这时i不是素数;若循不是素数;若循环结束时,环结束时,yn仍等于仍等于1,表示都除不尽,表示都除不尽,这时这时i是素数。是素数。二级求精二级求精 1、用、用2到去除到去除i,看看能否除尽,看看能否除尽 1-1 yn:=1 1-2 WHILE nsqrt(i)DO BEGIN n:=n+1 IF i MOD n=0 THEN yn:=0

    44、 END为了每行输出为了每行输出5个数,还需增加一个变量个数,还需增加一个变量counter来计数。来计数。Program T5_001;var I,n,yn,counter:integer;begin writeln();counter:=1;Write(2,);for i:=3 to 100 do begin n:=1;yn:=1;while nsqrt(i)do begin n:=n+1;if I mod n=0 then yn:=0;end;if yn=1 then begin counter:=counter+1;if counter mod 5=0 then writeln(i)e

    45、lse write(I,);end;if end;forEnd.mainT5_002 验证哥德巴赫猜想(任何充分大的偶数都可由两个素数之和表示)。将42*s(s1000)中的所有偶数分别用两个素数之和表示。哥德巴赫猜想是:对任一充分哥德巴赫猜想是:对任一充分大的偶数大的偶数even,可以找到两,可以找到两个素数个素数p、q。使得。使得even=p+q即即1+1问题。问题。此问题还未得到最后的证明。此问题还未得到最后的证明。我们这里只是对有限范围内的我们这里只是对有限范围内的数,用计算机加以验证,不数,用计算机加以验证,不算严格证明。算严格证明。读入偶数读入偶数even,将它分成,将它分成p和和

    46、q,使使even=p+q。p从从2开始(每次加开始(每次加1),),q=even-p。如果。如果p、q均为均为素数,则输出结果,否则将素数,则输出结果,否则将p加加1再试。再试。作业:程序找错误(一)作业:程序找错误(二)作业:程序找错误(三)PROGRAM T5_005;VAR ch:char;ZiMu,ShuZi,FuHao:integer;BEGIN ZiMu:=0;ShuZi:=0;FuHao:=0;WHILE ch?BEGIN read(ch);IF(chA)AND(cha)AND(ch=48 AND ord(ch)=57 THEN ShuZi:=ShuZi+1 ELSE FuHao

    47、:=FuHao+1;END;writeln(Zi Mu Ge Shu:,ZiMu);writeln(Shu Zi Ge Shu:,ShuZi);writeln(Qi Ta Fu Hao Ge Shu:,FuHao)END.T5_003 “百钱买百鸡”是我国古代的著名数学问题,内容是3文钱可以买1只公鸡,2文钱可以买1只母鸡,1 文钱可以买3只小鸡。用了100文钱买了100只鸡,问有多少只公鸡、母鸡、小鸡?1001003123zyxzyx第6课 PASCAL语言数据类型数据类型简单类型标准类型用户自定义类型整型实型字符型布尔型枚举类型子界类型构造类型集合类型数组类型字符串类型记录类型指针类型文件

    48、类型6.1.1整型的运算例T6_000:如果变量A 既能被7整除又能被11整除,写成PASCAL表达式:(A mod 7=0)and(A mod 11=0)例例 T6_001:T6_001:求水仙花数。求水仙花数。所谓水仙花数,如所谓水仙花数,如ABCABC,如果满足如果满足A A3 3+B+B3 3+C+C3 3=ABC=ABC,则,则ABCABC称为水仙花数。称为水仙花数。例:例:153=1153=13 3+5+53 3+3+33 3,所,所以以153153就是水仙花数。就是水仙花数。分析:此题关键是分解出分析:此题关键是分解出A A、B B、C C a=I div 100 a=I div

    49、 100 b=I div 10 10 b=I div 10 10*a a C=I mod 10 C=I mod 10Program T6_001;Var I,a,b,c:longint;begin for I:=100 to 999 do begin a:=I div 100 b:=I div 10-a*10 c:=I mod 10 if i=a*a*a+b*b*b+c*c*c then writeln(is,i)end;end.6.2:实型 这几种实数类型的使用方法与Real的使用方法类似,必须在程序开始打开编译开关$N+,这些类别才能被系统识别。例T6_2:求 1/1+1/2+2/3+3/

    50、5+5/8+前n项(n50)的和。iibaProgram T6_2;$N+var I,n:integer;a,b,c,e:extended;begin readln(n);a:=0;b:=1;e:=0;for i:=1 to n do begin c:=b;b=a+b;a:=c;e:=e+a/b;end;for writeln(e:20:2)end.main6.3:字符型(ASCII码)(1)类型名:)类型名:Char(2)范围:)范围:ASCII码(美国标准信息交换代码(美国标准信息交换代码)码)(3)表示方法:)表示方法:一个字符一个字符(4)字符是有序类型,每个字符都对应一个)字符是有序

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:信息学奥林匹克竞赛培训PASCAL语言课件.ppt
    链接地址:https://www.163wenku.com/p-4318552.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库