ImageVerifierCode 换一换
格式:PPT , 页数:39 ,大小:248KB ,
资源ID:99474      下载积分:30 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-99474.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第3章--选择结构的程序设计.ppt)为本站会员(龙***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

第3章--选择结构的程序设计.ppt

1、第三章 选择结构,第一节 IF语句第二节 IF语句的嵌套第三节 情况语句(CASE语句),第一节 IF语句,在现实生活中,我们每天都要进行根据实际情况进行选择。例如,原打算明天去公园,但如果明天天气不好,将留在家里看电视,所以人会根据条件进行行为的选择。计算机也会根据不同情况作出各种逻辑判断,进行一定的选择。我们是通过选择结构语句来实现程序的逻辑判断功能。,PASCAL中的布尔(逻辑)类型,在前面,我们学习了整型(integer)与实型(real)。其中integer型数据取值范围为 -32768到32767之间所有整数。而real型数据取值范围为其绝对值在10-38到1038之间的所有实数。

2、它们都是数值型的(即值都为数)。布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即“真”与“假”。,布尔常量,在Pascal语言中“真”用true表示,“假”用False表示。所以布尔类型只有TRUE与FALSE两个常量。,布尔变量(BOOLEAN),如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(true或false)。 例如:VAR A,B:BOOLEAN;,布尔类型是顺序类型,由于这种类型只有两个常量,Pascal语言中规定true的序号为1,false的序号为0。若某种类型的常量是有限的,那么这种类型的常量通常都有一个序号,我们称这种类型

3、为顺序类型。如前面我们学过的整型(integer),以及后面要学到的字符型(char)都是顺序类型。,布尔类型的输入与输出,var a,b : boolean;begin a := true; b := false; writeln(a, ,b);end.,a)输出,运行结果:TRUE FALSE,b) 输出,布尔类型变量不能直接用读语句输入!,布尔类型变量不能通过读语句给它们提供值。事实上,我们可以通过间接方式对布尔变量进行值的输入。例如,以下程序是错误的:,var a,b: boolean;beginreadln(a,b); writeln(a,b);end.,/ 错误语句,布尔型变量不能

4、读入,关系表达式与布尔表达式,什么是关系表达式?,表3-1关系运算符,用小括号、=、将两个算术表达式连接起来的式子就称为关系表达式(比较式)。 如:3+78,x+y10,2*78,x+y6是错的,故它的值为FALSE。45=32是对的,故该表达式的值为true。 关系表达式用于表示一个命题。如:“为偶数”可表示为: mod 2=0。“为正数”可表示为:n0。,布尔运算及布尔表达式,为了表示更复杂的命题,Pascal还引入三种逻辑运算符:not、and、or。它们分别相当于数学上的“非”、“且”和“或”的意义。 这三个运算符的运算对象为布尔量,其中not为单目运算,只有一个运算对象,and与or

5、为双目运算,有两个运算对象。它们的运算真值表如下:,多个关系表达式用布尔运算符连接起来的式子就称为布尔表达式,布尔表达式的值也为布尔值。在一个表达式里出现两个或两个以上的运算符, 则必须规定它们的运算次序。pascal规定: 表达式中相同优先级的运算符,按从左到右顺序计算; 表达式中不同优先级的运算符,按从高到低顺序计算; 括号优先级最高,从内到外逐层降低; 对于一个复杂的表达式可能同时包含算术运算、关系运算和逻辑运算以及函数运算。运算的优先顺序为:,括号函数not*、/、div、mod、and+、or、xor关系运算。,例3.1 若a=true,b=false,x=7,y=12,m=3,n=

6、35,求下列布尔表达式的值。 a and not (mn) and (x10 then Price:=Price*0.75; /若超过10,则价格打7.5折 Total:=Num*Price; Writeln(Total=,Total:0:2); /保留二位小数 Readln; End.,y=,例3.4 函数y如下,0(x0),2x(0=x10)2x + 1(10=x50)x/2 + 50 (50 ,c); /三个if语句后,a,b,c已从大到小有序end.,运行结果:输入:3 8 2 输出:8 3 2,【上机练习3.1】,1、假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按1.5元

7、计算邮费,如果超过1公斤时,其超出部分每公斤加收0.8元。请编程序计算邮件收费。2、输入三个正整数,若能用这三个数作为边长组成三角形,就计算并输出该三角形的面积,否则输出Cant。(组成三角形的条件为:任意两边之和大于第三边)3、输入一个三位数的整数,将数字位置重新排列,组成一个尽可大的三位数。例如:输入213,重新排列可得到尽可能大的三位数是321。4、输入一个整数,打印出它是奇数还是偶数。5、某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100套的,每套定价为50元,否则每套价格为80元。编程由键盘输入订购套数,输出应付款的金额数。6、从键盘读入一个数,判断它的正负。是正数,则

8、输出“+”,是负数,则输出“-”。7、判断两个数a,b,输出较大数的平方值。8、某市的士费起步价8元,可以行使3公里。3公里以后,按每公里1.6元计算,输入的士的公里数,请你计算顾客需付费多少元?,第二节 IF语句的嵌套,前面我们学习了IF语句有两种格式,在格式中,条件语句中的语句1或语句2原则上说可以是任何语句,当然也可以是条件语句。当语句1或语句2仍是条件语句时,称为条件语句嵌套。形成嵌套的重要目的是为解决较为复杂的、多种条件出现的问题。 嵌套情况可以分为两种:一是语句1中包含If语句,二是语句2中包含If语句。下面分别来讨论这两种情况下怎么使用条件语句。,If语句的嵌套在then子句中,

9、它的一般形式: If布尔表达式1then If布尔表达式2then 语句21 else 语句22 else 语句12,这是嵌套一个条件语句的情况,其实每条语句还可以再嵌套条件语句,以此类推,形成多层嵌套。由于else后的子句是可省的,而在嵌套时else是与它最近的那个尚未与其他else配对的If . then相匹配。所以内层的else子句不能省,否则将造成逻辑错误,解决的办法就是写一个空语句或者采用复合语句,即放入begin、end中,这样if与else间的配对就很明确了。另外,请同学们在书写程序时,采用缩进式,以增强程序的可读性,要慢慢养成这种风格。,例3.7 计算下列函数,【分析】根据输入

10、的x值,先分成x0与x0两种情况,然后对于情况x0,再区分x是小于0,还是等于0。程序如下:,program ex3_7;var x:real; y:integer; begin wrtie(Input x:); readln(x); If x0then y:=1 /x0时,y的值为1 else if x=0then y:=0 /x=0时,y的值为0 else y:=-1; /x=0与x=0,再区分x是大于0,还是等于0,这种结构是在then子句中嵌套if语句。当然程序也可以写成如下形式:,program ex;Var x:real; y:integer;begin wrtie(Input x

11、:);readln(x); if x=0then if x0then y:=1 else y:=0 else y=-1; writeln(x=,x:6:2,y=,y);end.,例3.8输入三角形的三边,判断它是否直角三角形,若是则输出“yes”,否则输出“no”,若根本形成不了三解形则输出“not a triangle”。,【分析】 首先判断用户输入的数据是否能够构成三角形,然后再判断它是不是直角三角形。,Program ex3_8;Var a,b,c : integer;begin readln(a,b,c); if (a+bc) and (b+ca) and (c+ab) then if

12、 (a*a+b*b=c*c) or (b*b*+c*c=a*a) or (c*c+a*a=b*b) then writeln(yes) else writeln(no) else writeln(not a triangle.)end.,【上机练习3.2】,1输入某学生成绩,根据成绩的好坏输出相应评语。如果成绩在90分以上,输出评语:优秀(outstanding)。如果成绩在60分到90分之间,输出评语:良好(satisfactory)。如果成绩不足60分,输出评语:不及格(unsatisfactory)。2输入三角形的三边,判断它是否是直角三角形。3给一个不多于三位的正整数,求出它是几位数,

13、并分别打印出各位上的数字。4对一批货物征收税金。价格在1万元以上的货物征税5%,在5000元以上,1万元以下的货物征税3%,在1000元以上,5000元以下的货物征税2%,1000元以下的货物免税。编写一程序,读入货物价格,计算并输出税金。5输入三角形的三个边,判断它是何类型的三角形(等边DB?等腰DY?一般YB?)。6输入三个数,按由大到小顺序打印出来。7将字母A、B、C 、D或a、b、c、d对应输出1、2、3、4,其余的字符输出5。8输入三个数a,b,c,打印出最大者,第三节 情况语句(CASE语句),上面我们知道可以用嵌套的if语句实现多分支的选择结构。但是如果分支越来越多时,用嵌套的i

14、f语句实现多分支就显得繁杂。当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句实现。它的选择过程,很象一个多路开关,即由case语句的选择表达式的值,决定切换至哪一语句去工作。因此在分支结构程序设计中,它是一种强有力的手段。在实现多路径分支控制时,用case对某些问题的处理和设计,比用if语句写程序具有更简洁、清晰之感。,情况语句的一般形式:,case of:语句1;:语句2;::语句n; else 语句n+1;end; 其中case、of、end是Pascal的保留字, 表达式的值必须是顺序类型,它可以是整型、布尔型及以后学习的字符型、枚举型和子界型。情况标号表是一串

15、用逗号隔开的与表达式类型一致的常量序列。语句可以是任何语句,包括复合语句和空语句。,case语句的执行过程,先计算表达式(称为情况表达式)的值,如果它的值等于某一个常量(称为情况常量,也称情况标号),则执行该情况常量后面的语句,在执行完语句后,跳到case语句的末尾end处。,说明,情况表达式必须是顺序类型的;情况常量是情况表达式可能具有的值,因而应与情况表达式具有相同的类型;情况常量出现的次序可以是任意的;同一情况常量不能在同一个case语句中出现两次或两次以上;每个分语句前可以有一个或若干个用逗号隔开的情况常量;如果情况表达式的值不落在情况常量的范围内,则认为本case语句无效,执行cas

16、e语句的下一个语句。Free pascal中增加了一个“否则”的情况,即增加一个else子句,但也是可省的。每个常量后面只能是一个语句或一个复合语句,以分号结束。,例3.9根据x的值,求函数Y的值:,【分析】利用case语句进行程序设计, 关键在于巧妙地构造情况表达式。本例中三种情况可用一个表达式区分出来:Trunc(x/100)。因为x在(0,100)之间时表达式值为0;x在100,200)时表达式值为1 ;其余部分可用else子句表示。源程序如下:,program ex3_9;var x,y:real;begin write(Input x:);readln(x); case trunc(

17、x/100) of 0:y:=x+1; 1:y:=x-1; else y:=-1; end; /end of case,每个case对应一个end writeln(x=,x:8:2,y=,y:8:2);end.,例3.10 判断2006年,每个月份的天数。,【分析】 程序分为:输入月份,计算该月的天 数,输出天数。程序如下:,Program ex3_10;Var month,days : integer;begin readln(month); case month of1,3,5,7,8,10,12 : days : =31;4,6,9,11 : days : =30;2 : days :

18、=28;else days : =0; end; if days0 then writeln(days);end.,运行结果:输入:10输出:31,例3.11 期未来临了,班长小Q决定将剩余班费X元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。,【分析】,对于以上的实际问题,要买尽量多的笔,易知都买4元的笔肯定可以买最多支笔。因此最多可买的笔为x div 4支。由于小q要把钱用完,故我们可以按以下方法将钱用完: 若买完x div 4

19、支4元钱的笔,还剩1元,则4元钱的笔少买1支,换成一支5元笔即可;若买完x div 4支4元钱的笔,还剩2元,则4元钱的笔少买1支,换成一支6元笔即可;若买完x div 4支4元钱的笔,还剩3元,则4元钱的笔少买2支,换成一支5元笔和一支6元笔即可。 从以上对买笔方案的调整,可以看出笔的数目都是x div 4,因此该方案的确为最优方案。,程序如下:,Program ex3_11;Var a,b,c : integer; /a,b,c分别表示在买笔方案中 ,6元、5元和4元钱笔的数目x,y : integer; /x,y分别表示剩余班费和 买完最多的4元笔后剩的钱begin readln(x);

20、 /输入x c : =x div 4;/4元笔最多买的数目 y : =x mod 4;/求买完c支4元笔后剩余的钱数y case y of0 : begin a : =0; b : =0; end;1 : begin a : =0; b : =1; c : =c-1; end;2 : begin a : =1; b : =0; c : =c-1; end;3 : begin a : =1; b : =1; c : =c-2; end; end; writeln(a, ,b, ,c); /三个数间以空格隔开end.,例3.12 试编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果

21、的程序。,【分析】 只考虑加(+)、减(-)、乘(*)、除(/)四种运算,利用Case语句。,Program ex3_12;Var result,x,y : real; ch : char;beginreadln(x,y);/分二行输入, 第一行是二个操作数readln(ch);/第二行是运算符result := 0;case ch of + : result := x+y;,- : result := x-y; * : result := x*y; / : if y0 then/考虑被0除的特殊情况 result := x/y else writeln(error!); end; writeln(result :0 :2);end.,运行结果:输入:15 3 + 输出18.00输入:5 0 / 输出:error!,请维护编者版权,请勿将课件在网络上传播。,福建省长乐一中 董永建浙江省温州中学 舒春平 2009年9月,

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。