Presentation is loading. Please wait.

Presentation is loading. Please wait.

程序的循环结构(一).

Similar presentations


Presentation on theme: "程序的循环结构(一)."— Presentation transcript:

1 程序的循环结构(一)

2 在印度有一个古老的传说:舍罕王打算奖赏国际象棋的发明人——宰相西萨·班·达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里,赏给我1粒麦子,在第2个小格里给2粒,第3小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有的64格的麦粒,都赏给您的仆人吧!”国王觉得这要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰相的要求。那么,宰相要求得到的麦粒到底有多少呢?

3 传说在很久以前,印度有个叫塞萨的人,为了能使国王忘掉战争,精心设计了一种游戏(国际象棋)献给国王。国王对这种游戏非常满意,决定赏赐塞萨。国王问塞萨需要什么,塞萨指着象棋盘上的小格子说:“就按照棋盘上的格子数,在第一个小格内赏我1粒麦子,在第二个小格内赏我2粒麦子,第三个小格内赏4粒,照此下去,每一个小格内的麦子都比前一个小格内的麦子加一倍。陛下,把这样摆满棋盘所有64格的麦粒,都赏给我吧。”国王听后不加思索就满口答应了塞萨的要求。

4 计算机程序 下面,请同学们帮这位国王算一算,他到底要赏给塞萨多少麦子? 2 + 2 + 2 + 2 + … + 2
… + 2 1 2 3 63 人工计算这个问题会非常麻烦,即使用计算器也不方便。 我们能不能用计算机来解决这个问题呢? 计算机程序

5 64个棋盘格子一共可以放18,446,744,073,709,551,615 粒 E+19粒麦子, 约合5000多亿吨小麦 这位宰相所要求的,竟是全世界在两千年内所产的小麦的总和! 如果造一个宽四米,高四米的粮仓来储存这些粮食,那么这个粮仓就要长三亿千米,可以绕地球赤道7500圈,或在日地之间打个来回。 我国2007年粮食总产量10000亿斤

6 VB窗体输出如下的图形:    ***** Print “*****”

7 格式:for 循环变量=初值 to 终值 step 步长 语句块(又称循环体) next 循环变量
开始 循环变量赋初值 循环变量未超出终值? Y 执行循环体 循环变量循环变量+步长 结束 N for循环语句的执行过程是:首先把初值赋给循环变量 ,接着判断循环变量的值是否超出终值,当循环变量的值未超过终值时,就执行一次循环体的语句块,然后把循环变量的值加上步长,再赋给循环变量,重复上述过程,直至循环变量的值超过终值,就结束循环。 For j=1 to 5 Print “*****” Next j

8 求1+2+3+4+…+n n=input(“请输入n值”) S=0 for I=1 to n S=S+I next I
开始 循环变量赋初值 循环变量<=终值? Y 执行循环体 循环变量循环变量+步长 结束 N 求 …+n n=input(“请输入n值”) S=0 for I=1 to n S=S+I next I print “S=“;S 思考:求1*2*3*4*…*n

9 若循环语句中的循环体内又完整地包含另一个或多个循环语句,称为循环嵌套。前面介绍的三种循环都可以相互嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。例如,二层循环嵌套(又称二重循环)

10 循环语句的提高与拓展 --多重循环 For i = 1 To 5 For j = 1 To 5 Print "*"; Next j
输出如下图形: For i = 1 To 5 For j = 1 To 5 Print "*"; Next j Print Next i 外循环 内循环 ***** ***** ***** 提示:输出可用print 格式:print “要输出的字符”或变量名或表达式 如果要在一行内输出,则后面要加; print 后面什么都不加相当于起到换行的作用。

11 * * * * * * * * * * * ** *** **** ***** * * * * * * * * * * * * * * * For i = 1 To 5 For j = 1 To 5 - i Print " "; Next j For k = 1 To i Print " *"; Next k Print Next i For i = 1 To 5 For j = 1 To i Print "*"; Next j Print Next i

12 以计算麦粒数目的程序为例,为了简化程序,我们先计算第64个格子中麦粒的数目。
p1 = ‘第1格 P2 = P1 * 2 ‘第2格 P3 = P2 * 2 ‘第3格 … … P64 = P63 * 2 ‘第64格 P = ‘第1格 P = P * 2 ‘第2格 P = P * 2 ‘第3格 … … P = P * 2 ‘第64格 简化 64行代码 P = 1 For i=1 to 63 ‘条件判断 P = P * 2 Next ‘i=i+1,下一次循环 4行代码

13 麦粒问题算法分析(-) text1 1 2 3 4 5 … 64 2 4 8 16 P=1 For I=2 to 64 p=p*2
Next I PP*2 Text1.text=p

14 麦粒问题算法分析(二) 1 2 3 4 5 … 64 2 1+2 SS+P 1+2+4 4 PP*2 8 1+2+4+8 16
第i格 第i格存放的麦粒数(设用p表示) 从第1格到第i格总共需多少的麦粒数(设用s表示) 1 2 3 4 5 64 2 1+2 SS+P 1+2+4 4 PP*2 8 16

15 p = 1 For i=2 to 64 s = 1 p=p*2 Next I Text1.text=p N s=s+p Y
P:第i格存放的麦粒数 S:从第1格到第i格总共需多少的麦粒数 开始 当前格子的麦粒数置初值:p1 p = 1 For i=2 to 64 p=p*2 Next I Text1.text=p s = 1 总共需要的麦粒数置初值:s1 置初值:I2 N s=s+p I<=64? Y 输出p和s PP*2 结束 SS+P Text2.text=s ii+1

16 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4+16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

17 For i = 1 To 9 For j = 1 To i Print i; "*"; j; "="; i * j; Print " "; Next j Print Next i


Download ppt "程序的循环结构(一)."

Similar presentations


Ads by Google