3--几种基本语句解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【解法三】算法语句描述:
输入年分数y a=y Mod 4 b=y Mod 100 c=y Mod 400 If c=0 Then
输出“ y是闰年”
Else
If a=0 And b<>0 Then 输出“ y是闰年”
Else
输出“ y不是闰年”
End If End If
开始
输入年份y 否 4整除y 是
语句3
语句2
【规律总结】
语句1
语句2 Else
语句3 End If End If
若问题中出现几次条件判断, 则在框图中会有几个判断框, 同样 的在程序语句中, 也会有几重语句 的嵌套; 出口“End If”不能缺省, 否则将会出现无法执行的错误.
练习3.试用复合If 语句表示闰年问题的算法.
解:输入y
例2.如何寻找满足条件 1 2 2 2 3 2 . .n .2 100
的最大整数n?
开始
解: s=0 n=1 Do s=s+n^2 n=n+1 Loop While s <= 1000
输出 n-2
S=0
n=1
S=S+n^2
n=n+1 是
S<=1000
否 输出n-2
结束
题型二 Do Loop 语句的应用
解 算法框图如图所示:
规律方法 由I除以2的余数为零时,输出I,可判断输出的 I是偶数,否则不输出;I>100时结束,且I的初始值为1, 故可判断1≤I≤100.
【训练2】根据下面的算法语句,绘制算法框图,指出输出的最 后结果是什么?并将它改为另一种循环,画出相应的算法
框图.
算法:(如左下图)
S=0 For i=3 To 99
―→ 画算法框图 ―→ 用 For 语句描述算法
解
For 语句描述算法为:
S=0 For i=1 to 999 Step 2
S=S+i*i Next 输出S
算法框图如下:
规律方法 (1)For 语句是表达循环结构最常见的语句之一, 它适用于预先知道循环次数的循环结构,有些循环中如果 不能直接看出循环次数,则可通过题目中的规律先求出循 环次数再写循环语句. (2)使用 For 语句设计程序的一般思路:①确定循环次数; ②把反复要做的工作,作为循环体放在 For 与 Next 之 间.
Else y=x2-x
End If 输出y
例2、某居民区的物业管理部门每月按以下方法收取卫生费: 3 人和3人以下的住户, 每户收取5元; 超过3人的住户, 每户超出1 人加收1.2元. 试设计算法, 根据输入的人数应收取的卫生费.
分析: 若用c(单位:元)表示应收取的费用, n表示住户的人数, 则
开始
1.输入a;
2.对a进行判断:
输入a
(1)若a<5, 则C=25a;
是
否
a<5
(2)若5≤a<10, 则C=22.5a; (3)若a ≥ 10, 则C=21.25a;
是
否
a<10
3.输出C.
算法框图如右:
C=25a
C=22.5a
C=21.25a
输出C
结束
解 假如用变量a表示顾客购买的唱片数量, 用变量C表示顾客要缴纳的金
是 100整除y 否 否 400整除y 是
输出y非闰年
输出y是闰年
结束
【想想】请试着用复合If语句描述“闰年问题”的算法。
符合以下条件之一的年份即为闰年
【解法四】算法语句描述:
1.能被4整除而不能被100整除; 2.能被400整除.
输入年分数y a=Βιβλιοθήκη Baidu Mod 4
开始
b=y Mod 100 c=y Mod 400
输入年份y
If (a=0 And b<>0 ) or c=0 Then 否 输出“ y是闰年”
4整除y 是
Else
输出“ y不是闰年”
是 100整除y 否
End If
否 400整除y 是
输出y非闰年
输出y是闰年
结束
四、课堂小结
1.条件语句用来实现算法做的选择结构, 在一些需要按给定条件 进行比较、判断的问题中, 如判断一个数的正负, 比较两个数的 大小, 求分段函数的函数值, 二分法求方程的根等, 常用条件语句 设计程序, 有时要用到复合If语句来表示;
含两个“分支”的条件结构 写成条件语句为
满足条件? 否 是
语句1
语句2
IF 条件 THEN 语句体1
ELSE 语句体2
END IF
当计算机执行上述语句时,首先对IF后的 条件进行判断,如果条件符合,就执行THEN后 的语句体1,否则执行ELSE后的语句体2.
例1 设计算法,根据输入的x值,计算y的值,写出计算程 序,y与x关系如下:
【例3】以下给出的是用循环语句编写的一个算法,根据该算法 写出此题的算法功能,并画出相应的算法框图. I=1 Do a=I Mod 2 If a=0 Then 输出 I End If I=I+1 Loop While I<=100
[思路探索] 该算法表示的功能是:找出并输出1至100的正 整数中的所有偶数.
End If End If
否 400整除y 是
Else 输出“y不是闰年”
输出“y不是闰年”
输出“y是闰年”
End If
End
结束
【想想】请试着用复合If语句描述“闰年问题”的算法。
【解法二】算法语句描述: 符合以下条件之一的年份即为闰年
输入年分数y
1.能被4整除而不能被100整除;
If yMod 4=0 Then
例3.在音乐唱片超市里, 每张唱片售价25元. 顾客如果购买5张以上(含5张)唱片, 则按照九折收费; 如果顾客购买10张以上(含10张)唱片, 则按照八五折收费. 请 用语句描述完成计费工作的算法, 画出算法框图.
解 假如用变量a表示顾客购买的唱片数量, 用变量C表示顾客要缴纳的金
额. 则这个算法可以表示为:
1.For语句 (1)适用范围:For语句适用于_预__先__知__道__循__环__次__数__的循环结 构. (2)一般形式: For循环变量=_初__始__值__T_o_终__值____ 循__环__体___ _N_e_x_t_
题型一 For语句的应用
【例1】编写一个计算12+32+52+…+9992的算法,画出算法 框图,并用 For 语句描述这个算法. [思路探索] 由题意(已知) ―→ 先设计算法步骤
{ x+1,x≥1;
y= x2-x,x<1.
【分析】这是一个分段函数的求值问题,计算之前,要先对 变量进行判断,因此,应选择If—Then语句来编写计算程序. 【解析】程序如下:
(1)输入x; (2)如果x≥1,则y=x+1 (3)如果x<1,则y=x2-x (4)输出y. 算法: 输入x
If x≥1 Then y = x+1
C=25a
C=25a
C=22.5a
C=21.25a
Else If a<10 Then
C=22.5 a
Else
C=21.25a
输出C 结束
End If
End If
输出C.
抽象概括
对于形如有图中所示的框图的算法, 都可以用复合If语句来表示:
If 条件1 Then 语句1
假
真
条件1
假
真
条件2
Else If 条件2 Then
c 5 5,1.2(n3)0 ,n n 3 3,.
算法步骤:
算法框图: 开始
1.输入n; 2.若n≤3, 则c=5,
输入n
Y
N
n≤3
否则c=5+1.2(n-3); c=5
c=5+1.2(n-3)
算法语句: 输入 n If n≤3 Then
c=5 Else
c=5+1.2(n-3)
3.输出c.
输出c
End If 输出c.
(3)Do Loop语句对应的基本框图: 循环体
是 满足条件?
否
2.Do Loop 应用举例 问题:设计一个求满足:2+4+6+8+…+n>10 000的最小正整数 n(n是偶数)的算法框图,并写出相应的算法语句.框图如下:
n=0 P=0 Do
n=n+2 P=P+n Loop While S≤10000 输出 n
2.能被400整除.
If yMod 100<>0 Then
开始
输出“ y是闰年”
Else
输入年份y
If yMod 400=0 Then 输出“ y是闰年”
否 4整除y 是
Else
输出“ y不是闰年”
End If End If
是 100整除y 否 否 400整除y 是
Else
输出“ y不是闰年”
End If
【训练1】 请阅读下列用For语句给出的算法,画出算 法框图并说明该算法的处理功能.
S=0 For i=1 To 20 Step 2
S=S+i Next 输出 S
解 算法的框图如图所示,因此,这个算法实际上处理的 是求和S=1+3+5+7+9+11+13+15+17+19.
复习回顾
1.For语句的一般格式是:
2.条件语句的一般形式: If- Then - Else-End If 如下图所示:
If 条件 语句1
Else
语句2 End If
Then
真 语句1
条件
假 语句2
3.复合If语句 对于形如有图中所示的框图的算法, 都可以用复合If语句来表示:
If 条件1 Then
语句1
Else If 条件2 Then
输出y非闰年
输出y是闰年
End
结束
【想想】请试着用复合If语句描述“闰年问题”的算法。
【解法三】算法语句描述: 符合以下条件之一的年份即为闰年
输入年分数y
1.能被4整除而不能被100整除;
a=y Mod 4
2.能被400整除.
b=y Mod 100
开始
c=y Mod 400 If c=0 Then
§3 几种基本语句--------循环语句(2)
1.Do Loop循环语句
(1)Do Loop循环语句的一般格式是:
Do 循环体
开始执行
Loop While 条件为真 当条件为真时,执行循环体
(2)Do Loop语句表述的循环结构适用于预先不知道循环次 数, 要根据其他形式的终止条件停止循环.
计算机执行Do Loop语句时, 先执行Do和Loop While之间 的循环体, 然后判断条件是否成立, 若成立, 执行循环体, 直到 条件不成立为止, 跳出循环体, 执行Loop While后面的语句.
语句2 Else
语句3 End If End If
假
真
条件1
假
真
条件2
语句3
语句2 语句1
【规律总结】 若问题中出现几次条件判断, 则在
框图中会有几个判断框, 同样的在程序 语句中, 也会有几重语句的嵌套; 出口 “End If”不能缺省, 否则将会出现无 法执行的错误.
§ 3 循环语句 1
自学导引
输入年份y
输出“ y是闰年”
Else
否 4整除y 是
If a=0 And b<>0 Then
输出“ y是闰年”
Else
输出“ y不是闰年”
是 100整除y 否 否 400整除y 是
End If
End If
输出y非闰年
输出y是闰年
结束
【想想】请试着用复合If语句描述“闰年问题”的算法。
符合以下条件之一的年份即为闰年 1.能被4整除而不能被100整除; 2.能被400整除.
额. 则这个算法可以表示为:
1.输入a;
算法框图如右:
开始
2.对a进行判断: (1)若a<5, 则C=25a; (2)若5≤a<10, 则C=22.5a;
输入a
是
否
a<5
(3)若a ≥ 10, 则C=21.25a. 3.输出C.
下面用复合If语句描述这个算法算法:
是
否
a<10
输入a;
If a<5 Then
S=S+i^3 i=i+2 Next 输出S
S=0 i=3 Do
S=S+i^3 i=i+2 Loop While i<=99
§3 几种基本语句
——条件语句
算法中的条件结构是由条件语句来表达的, 条件语句是处理条件分支逻辑结构的算法语句 .
条件语句的一般格式 只含一个“分支”的条件结构 写成条件语句为
满足条件?
否
是 语句
If 条件 Then 语句体
End If
当计算机执行这种形式的条件语句时,首先对 IF后的条件进行判断,如果条件符合,就执行 THEN后的语句体,否则执行END IF之后的语句.
符1.能合被以4下整条除件而开之不始一能的被年10份0整即除为;闰年
If yMod 4=0 Then If yMod 100< >0 Then
2.能被400整除输. 入y
输出“y是闰年”
Else If yMod 400=0 Then 输出“y是闰年”
否
是
4整除y
是 100整除y 否
Else 输出“y不是闰年”
循环体
For 循环变量=初始值 To 终值 Step k 循环体
否
i>终值
Next
是
2.For语句表述的循环结构适用于_预__先__知__道__循__环__次__数__的__循__环__结__构__.
问题 如何寻找满足2+4+6+8+…+n>10 000条件的最小 整数?
在一些循环结构中,预先不知道循环的次数的循环结构,要根据 其它形式的终止条件停止循环,在这种情况下一般用Do Loop语 句