999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

如何學(xué)習(xí)和應(yīng)用循環(huán)結(jié)構(gòu)

2010-01-01 00:00:00吳旭日
中學(xué)理科園地 2010年2期

《算法與程序設(shè)計(jì)》是《信息技術(shù)》(選修1)的內(nèi)容,同學(xué)們通過該課程的學(xué)習(xí),不僅掌握了許多編程技巧,而且用計(jì)算機(jī)分析問題和解決問題的能力也得到了提高。但我們在教學(xué)實(shí)踐中發(fā)現(xiàn),對于許多初學(xué)者,迅速掌握循環(huán)結(jié)構(gòu)并用于具體問題的解決,并不是一件容易的事情。下面我們結(jié)合一些具體實(shí)例,分析循環(huán)結(jié)構(gòu)的特點(diǎn)及其編程方法。

一、 循環(huán)從FOR語句開始

循環(huán)結(jié)構(gòu)可以減少程序重復(fù)書寫的工作量,用于描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長的程序結(jié)構(gòu)。應(yīng)用循環(huán)結(jié)構(gòu)進(jìn)行程序設(shè)計(jì),關(guān)鍵是正確地構(gòu)造出循環(huán)體,以及設(shè)置好循環(huán)變量的初值、循環(huán)的終止條件。FOR語句是一種最簡單、基礎(chǔ)的循環(huán)結(jié)構(gòu),它的初值、終值和步長顯式地體現(xiàn)在語句中。因此,我們可以從FOR語句出發(fā),逐步探究其它循環(huán)結(jié)構(gòu)的特點(diǎn)及用法,以期達(dá)到事半功倍的效果。

例1 求1+1/2+1/3+……+1/100的值。

Private Sub Command1_Click()

s = 0

For i = 1 To 100

s = s + 1 / i

Next i

Print \"s=\"; s

End Sub

這是一個簡單的循環(huán)程序,程序中包含了循環(huán)結(jié)構(gòu)的一些基本概念,如循環(huán)變量、初值、終值、步長、循環(huán)體和累加和等,教學(xué)時可對其進(jìn)行適當(dāng)?shù)淖冃巍⒏脑旎驍U(kuò)充,如修改變量的初值,改累加為累乘,或在循環(huán)體中強(qiáng)行修改循環(huán)變量的值等,讓學(xué)生對這些基本概念有一個初步的了解。

例2 計(jì)算S=1+-+-……+-的值。

Private Sub Command1_Click()

s = 1

k = 1

For i = 1 To 100

s = s + 1 / (i * (i + 1)) * k

k = -k

Next i

Print \"s=\"; s

End Sub

這是上例的延伸和擴(kuò)展,編程時要解決三個問題:①第一項(xiàng)與其它項(xiàng)有不同的規(guī)律,如何處理?②從第二項(xiàng)開始,每項(xiàng)的分母均由兩個相鄰的自然數(shù)相乘,如何表示?③如何實(shí)現(xiàn)運(yùn)算符號的交替變換?若能引導(dǎo)同學(xué)們找出解決這些問題的方法,對循環(huán)結(jié)構(gòu)的理解也就前進(jìn)一大步了。

例3 輸入10個實(shí)數(shù),輸出其中的最大數(shù)和最小數(shù)。

Private Sub Command1_Click()

x = InputBox(\"請輸入第1個數(shù)\")

Max = x

Min = x

For i = 2 To 10

x = InputBox(\"請輸入第2到第10個數(shù)\")

If x > Max Then Max = x

If x < Min Then Min = x

Next i

Print \"max=\"; Max, \"min=\"; Min

End Sub

在例1、例2中,循環(huán)變量的值直接參與了算式的運(yùn)算。但在本例中,循環(huán)的作用只是用于統(tǒng)計(jì)輸入的個數(shù),循環(huán)變量的不同作用有助于學(xué)生更好地理解循環(huán)結(jié)構(gòu)。此外,我們在教學(xué)中引入了算法設(shè)計(jì)及預(yù)處理的概念,讓學(xué)生了解要想寫出一個好程序就必須先設(shè)計(jì)出一個好算法,就養(yǎng)成一個好的編程習(xí)慣。

二、 循環(huán)從DO語句深入

FOR循環(huán)可以解決許多重復(fù)執(zhí)行的問題,但FOR循環(huán)一般用于解決初值和終值已知,且步長值為順序遞增或遞減的問題。對于滿足某種條件的重復(fù)執(zhí)行問題,建議在熟練掌握FOR循環(huán)后,引入DO循環(huán)加予解決。

例4 已知=1++×+××+×××+……,當(dāng)序列中某乘積項(xiàng)的值小于0.000000001時,表達(dá)式的值可作為的近似值,試計(jì)算的近似值。

Private Sub Command1_Click()

s = 0

k = 1

i = 1

Do While k >= 0.000000001

s = s + k

k = k * i / (2 * i + 1)

i = i + 1

Loop

s = 2 * s

Print \"pi=\"; s

End Sub

這道題看起來很復(fù)雜。其實(shí),通過分析我們可以發(fā)現(xiàn),序列中的每一項(xiàng)均是在前一項(xiàng)的基礎(chǔ)上再累乘上一個新的分?jǐn)?shù),因此我們可以用一個變量存放累加和,用另一個變量存放累乘積,從而構(gòu)造出滿足要求的循環(huán)結(jié)構(gòu)。因無法確定重復(fù)執(zhí)行的次數(shù),本題最好采用DO循環(huán)來實(shí)現(xiàn)。在應(yīng)用DO循環(huán)時,要注意提醒學(xué)生設(shè)置好循環(huán)變量的初值,在循環(huán)體內(nèi)要有能夠改變循環(huán)控制條件的語句,否則將陷入死循環(huán)。

例5 利用輾轉(zhuǎn)相除法求兩個正整數(shù)的最大公約數(shù)。

Private Sub Command1_Click()

m = InputBox(\"請輸入第1個數(shù)\")

n = InputBox(\"請輸入第2個數(shù)\")

If m < n Then t = m: m = n: n = t

r = m Mod n

Do While r <> 0

m = n

n = r

r = m Mod n

Loop

Print \"最大公約數(shù)為:\"; n

End Sub

在前面幾個例子中,循環(huán)變量一般是有規(guī)律地遞增或遞減,循環(huán)特征明顯,代碼相對簡單。本題應(yīng)用了一個經(jīng)典的算法輾轉(zhuǎn)相除法,求解的問題要經(jīng)過提煉和設(shè)計(jì)才能運(yùn)用循環(huán)結(jié)構(gòu)。編程時應(yīng)用了條件分支,輾轉(zhuǎn)相除以及變量替換等概念和方法,循環(huán)的終止條件是動態(tài)生成的,學(xué)生不易理解與掌握,教學(xué)時可先手工模擬再編程實(shí)現(xiàn)。

DO循環(huán)有四種不同的格式,區(qū)別在于循環(huán)終止條件的判別方式及執(zhí)行順序上,只要熟練掌握了其中的一種格式,其它格式的應(yīng)用也就水到渠成了。

三、 循環(huán)從多重嵌套中提升

多重嵌套的循環(huán)結(jié)構(gòu)是一個比較難的知識點(diǎn),也是容易使學(xué)生喪失信心的內(nèi)容。教學(xué)時不要急于求成,可從最簡單的二重嵌套循環(huán)出發(fā),先讓學(xué)生手工模擬程序的執(zhí)行過程,了解循環(huán)變量的變化情況,再逐步深入解決實(shí)際問題。

例6 輸出一張“九九乘法表”。

程序一:

Private Sub Command1_Click()

For i = 1 To 9

For j = 1 To 9

Print Tab((j - 1) * 13); i; \"*\"; j; \"=\"; i * j;

Next j

Print

Next i

End Sub

程序二:

Private Sub Command1_Click()

For i = 1 To 9

For j = 1 To i

Print Tab((j - 1) * 13); i; \"*\"; j; \"=\"; i * j;

Next j

Print

Next i

End Sub

程序三:

Private Sub Command1_Click()

For i = 1 To 9

For j = 1 To i

Print Tab((j - 1) * 13); j; \"*\"; i; \"=\"; i * j;

Next j

Print

Next i

End Sub

“九九乘法表”是一個不錯的二重循環(huán)入門例,“程序一”許多學(xué)生可以很快寫出。接著,可引導(dǎo)學(xué)生觀察“程序二”,了解如何通過改變循環(huán)變量的初值或終值來改變循環(huán)執(zhí)行的次數(shù),從而改變“九九乘法表”的形狀,最后再與“程序三”比較,找出它們之間的異同點(diǎn),更好地理解多重嵌套循環(huán)的執(zhí)行過程。

例7 輸出自然數(shù)1~100之間的所有素?cái)?shù)。

Private Sub Command1_Click()

Print 2; \" \"

For i = 3 To 100

flag = True

For j = 2 To Int(Sqr(i))

If i Mod j = 0 Then

flag = False

Exit For

End If

Next j

If flag = True Then Print i; \" \"

Next i

End Sub

這道題運(yùn)用了三種編程技巧:①將與其它素?cái)?shù)性質(zhì)不同的素?cái)?shù)2單獨(dú)輸出,簡化編寫步驟;②設(shè)置了一個布爾類型的標(biāo)志變量,用于判斷找到的數(shù)是否為素?cái)?shù);③利用exit for語句中止內(nèi)層循環(huán)的執(zhí)行,提高運(yùn)行速度。編程時可讓學(xué)生先寫出判斷一個數(shù)是否為素?cái)?shù)的程序段(內(nèi)循環(huán)),然后在它的外面再嵌套另一重循環(huán),輸出題目要求的其它素?cái)?shù)。

例8 將2~100中的所有自然數(shù)分解為其質(zhì)因子的乘積,輸出如下形式:

2=2

3=3

4=22

……

100=2255

Private Sub Command1_Click()

For i = 2 To 100

k = i

j = 2

First = True

Print k; \"=\";

Do While k > 1

Do While k Mod j = 0

If First = True Then

Print j;

First = False

Else

Print \"*\"; j;

End If

k = k j

Loop

j = j + 1

Loop

Print

Next i

End Sub

這是一道比較難的多重循環(huán)嵌套練習(xí)題。其中,最外面的FOR循環(huán)用于提供所有待分解的自然數(shù),中間的DO循環(huán)用于分解出每個數(shù)中不同的因子,最里面的DO循環(huán)用于分解出每個數(shù)中相同的因子,環(huán)環(huán)相扣,層層遞進(jìn),綜合應(yīng)用了本文中介紹的多種編程技巧,同學(xué)們?nèi)裟茏屑?xì)揣摩認(rèn)真分析,一定會有許多感觸和收獲。

總之,在教學(xué)中按照FOR、Do...Loop多重嵌套的順序授課較好。For語句中對于循環(huán)結(jié)構(gòu)的基本要素都提煉出來了,后者需要挖掘隱含的語法要素;如后變量及初值,循環(huán)體中要有修改循環(huán)變量值的表達(dá)式使得循環(huán)結(jié)束。由于一開始的新課例子導(dǎo)入激發(fā)了學(xué)生的求知欲,渲染了良好的課堂氣氛,讓學(xué)生帶著問題聽課,有的放矢,從而提高了教學(xué)效果。

主站蜘蛛池模板: 国产精品流白浆在线观看| 91视频首页| 亚洲成AV人手机在线观看网站| 亚洲色图欧美视频| 亚洲三级成人| 日韩乱码免费一区二区三区| 99久久精品免费看国产电影| 国产网站免费观看| 亚洲无码免费黄色网址| 成人福利在线观看| 999国内精品久久免费视频| 国产成人精品一区二区免费看京| 日本成人福利视频| 中文无码毛片又爽又刺激| 好吊色妇女免费视频免费| 毛片手机在线看| 免费高清a毛片| 亚洲日本韩在线观看| 91成人精品视频| 久久中文字幕2021精品| 国产呦精品一区二区三区下载| 国产国语一级毛片| 精品国产www| 国产成人福利在线视老湿机| 欧美午夜网站| 无码高潮喷水专区久久| 中文无码日韩精品| 亚欧乱色视频网站大全| 狠狠色综合网| 国产jizz| 亚洲男人的天堂久久精品| 精品一区二区三区自慰喷水| 秘书高跟黑色丝袜国产91在线| 97国产一区二区精品久久呦| a网站在线观看| 伊人中文网| 国产精品福利社| 美女视频黄频a免费高清不卡| 东京热高清无码精品| 日韩国产 在线| 色婷婷亚洲综合五月| 成人亚洲国产| 欧美不卡视频一区发布| 欧美日韩在线亚洲国产人| 无码专区在线观看| 成人免费网站久久久| 美美女高清毛片视频免费观看| 无码精品国产dvd在线观看9久| 国产高清国内精品福利| 亚洲Av激情网五月天| 免费可以看的无遮挡av无码| a色毛片免费视频| 亚洲精品无码在线播放网站| 精品天海翼一区二区| 国产69囗曝护士吞精在线视频| 日韩精品毛片人妻AV不卡| 国产成在线观看免费视频| 国产拍在线| 99久久国产综合精品2020| 欧美综合区自拍亚洲综合绿色| 亚洲中文字幕久久精品无码一区| 亚洲色偷偷偷鲁综合| 中文字幕 欧美日韩| 亚洲中文字幕久久无码精品A| 日韩午夜片| 伊人成人在线| 2020精品极品国产色在线观看| 亚洲国产中文欧美在线人成大黄瓜| 青青草原国产免费av观看| 成人亚洲天堂| 日日碰狠狠添天天爽| 99草精品视频| 91精品网站| 国产欧美高清| 四虎精品黑人视频| 欧美福利在线观看| 在线观看无码av免费不卡网站 | 真人免费一级毛片一区二区| 美女视频黄频a免费高清不卡| 久久成人免费| 国产无人区一区二区三区| 中文国产成人精品久久|