《算法與程序設(shè)計(jì)》選修教案_第1頁
《算法與程序設(shè)計(jì)》選修教案_第2頁
《算法與程序設(shè)計(jì)》選修教案_第3頁
《算法與程序設(shè)計(jì)》選修教案_第4頁
《算法與程序設(shè)計(jì)》選修教案_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一課初識算法與程序設(shè)計(jì)

一、教學(xué)目標(biāo)

1、知識與技能

(1)理解算法的概念,培養(yǎng)學(xué)生自我探索信息,高效獲取信息的能力;

(2)能初步利用算法解決簡單的問題,培養(yǎng)學(xué)生的理論聯(lián)系實(shí)際能力和動手操作能力。

2、情感、態(tài)度、價(jià)值觀

學(xué)生在學(xué)習(xí)過程中,通過親身經(jīng)歷體驗(yàn)獲得對此算法的感性認(rèn)識,培養(yǎng)學(xué)生自我獲取信息、分析評

價(jià)信息、、表達(dá)呈現(xiàn)信息的能力,進(jìn)一步提高其信息素養(yǎng)。

二、教學(xué)重點(diǎn)難點(diǎn)

重點(diǎn):算法概念的理解

難點(diǎn):如何科學(xué)合理的選擇和設(shè)計(jì)算法。

三、教學(xué)策略與手段

以趣味性問題設(shè)置情境,激發(fā)學(xué)生探索解決問題的興趣,與學(xué)生進(jìn)行互動探討,通過Flash演示材

料,比較直觀地把抽象的問題簡單化,使學(xué)生的思考逐步深入,從而總結(jié)出算法的概念,學(xué)會如何設(shè)計(jì)

和選擇算法,培養(yǎng)學(xué)生自主探究學(xué)習(xí)的能力。

四、教學(xué)過程(1課時(shí))

(一)我們來共同尋找下面一些生活中比較現(xiàn)實(shí)的問題的解決方法。

【問題一】天下真的有“不要錢的午餐”嗎

某一餐館門口海報(bào)上寫著“不要錢的午餐”,規(guī)則如下:在三個(gè)月內(nèi),來賓必須湊夠五個(gè)人,五人

每次來就餐必須按照不同的順序坐,直到把所有可能的順序都坐一遍,以后來吃飯就可永遠(yuǎn)免費(fèi)”。于

是有人想,這太容易了,每人每次坐不同的位置,吃五次不就行了于是他就叫上自己的朋友參加這項(xiàng)

活動,可是,吃了十次之后,還沒有吃上免費(fèi)午餐,這是怎么回事呢

學(xué)生們感覺非常有意思,很快以小組為單位進(jìn)行熱烈的討論并得出了破解問題的步驟:①第一個(gè)座位5

個(gè)人都有坐的機(jī)會②第二個(gè)座位只有4個(gè)人中的任一個(gè)有坐的機(jī)會(一個(gè)人不能同時(shí)坐兩個(gè)座位)③第

三個(gè)座位只有3個(gè)人中的任一個(gè)有坐的機(jī)會④第四個(gè)座位只有2個(gè)人中的任一個(gè)有坐的機(jī)會⑤第五個(gè)座

位只有1個(gè)人有坐的機(jī)會⑥計(jì)算:5×4×3×2×1=120⑦得出結(jié)論:需要吃120次才有可能

吃上免費(fèi)午餐。

【問題二】有三個(gè)和尚和三個(gè)妖怪過河,只有一條能裝下兩個(gè)人的船,在河的任何一方或者船上,如果

妖怪的人數(shù)大于和尚的人數(shù),那么和尚就會有被吃掉的危險(xiǎn)。你能不能找出一種安全的渡河方法呢請

1

寫一寫你的渡河方案。

學(xué)生:學(xué)生討論回答。

〖展示步驟〗

①兩個(gè)妖怪先過河,一個(gè)妖怪回來;

②再兩個(gè)妖怪過河,一個(gè)妖怪回來;

③兩個(gè)和尚過河,一個(gè)妖怪和一個(gè)和尚回來;

④兩個(gè)和尚過河,一個(gè)妖怪回來;

⑤兩個(gè)妖怪過河,一個(gè)妖怪回來;

⑥兩個(gè)妖怪過河。

【Flash動畫展示】通過討論和動畫展示,我們可以知道,計(jì)算機(jī)解決問題和人解決問題一樣需要有清晰

的解題步驟。算法就是解決問題的程序或步驟。

(二)【課件展示】算法的概念:

1、廣義的算法是指完成某項(xiàng)工作的方法和步驟,在我們?nèi)粘I钪幸步?jīng)常使用算法,只是沒意識到罷

了。如:洗衣機(jī)的使用說明書是操作洗衣機(jī)的算法,菜譜是做菜的算法等等。

2、在數(shù)學(xué)中,現(xiàn)代意義的算法是指可以用計(jì)算機(jī)來解決的某一類問題的程序和步驟,這些程序或步驟

必須是明確和有效的,而且能夠在有限步之內(nèi)完成。

【小試身手】按照這樣的理解,我們可以設(shè)計(jì)出很多由具體數(shù)學(xué)問題解決一類數(shù)學(xué)問題的算法.下面看一

個(gè)例子:(要求學(xué)生自己考慮并寫出具體的算法)

雞兔同籠問題。一個(gè)籠子里有雞和兔,現(xiàn)在只知道里面一共有17個(gè)頭,48只腳,雞和兔各有多少只試

設(shè)計(jì)一個(gè)求解的算法。

【設(shè)計(jì)意圖】求解雞兔的問題簡單直觀,卻包含著深刻的算法思想。應(yīng)用解二元一次方程組的方法來求

解雞兔同籠問題。

第一步:設(shè)有小雞x只,小兔y只,則有

第二步:將方程組中的第一個(gè)方程兩邊乘-2加到第二個(gè)方程中去,得到,得到y(tǒng)=7;

第三步:將y=7代入(1)得x=10。

【變一變】在籠中有雞、兔若干,已知有頭a個(gè),有腳b只,求各有多少只雞和兔。

【師生合作】老師帶領(lǐng)學(xué)生共同書寫規(guī)范的算法的具體步驟,最后引出算法使用的范圍:能解決一類問

題,并且能重復(fù)使用。

(三)【課件展示】算法的基本特征

①有窮性②確定性③不唯一性④有效性(邏輯性)

2

1、有窮性:一個(gè)算法應(yīng)該包含有限個(gè)操作步驟,而不能是無限的。

2、確定性:算法的每個(gè)步驟都應(yīng)該是明確無誤的,不能含義模糊,使執(zhí)行者無所適從。

3、有零個(gè)或者多個(gè)輸入,有一個(gè)或者多個(gè)輸出

4、有效性:算法中的每一步都應(yīng)該能有效地執(zhí)行,執(zhí)行算法最后應(yīng)該能得到確定的結(jié)果。

【教學(xué)總結(jié)】

1、本節(jié)課通過一些生活中看似簡單問題的解決方法和步驟,使學(xué)生比較輕松的接受了生活算法的概念,

進(jìn)一步理解了計(jì)算機(jī)算法的概念。

2、課堂教學(xué)的效益取決于學(xué)生對所學(xué)知識理解了多少,能否用所學(xué)知識來解決一些實(shí)際問題。本節(jié)課的

設(shè)計(jì)突出講與練的結(jié)合,培養(yǎng)學(xué)生的動手能力,并且引出學(xué)生對下一節(jié)課的內(nèi)容的思考,比較順利的完

成了本節(jié)課的教學(xué)任務(wù)。

3、如何優(yōu)化算法,找到算法的形式和用算法解決問題的效益的最佳結(jié)合點(diǎn),還尚需探討。

3

第二課用計(jì)算機(jī)解決問題

一、教學(xué)目標(biāo)

(1)讓學(xué)生了解算法、窮舉法、程序設(shè)計(jì)語言、編寫程序和調(diào)試程序等概念。

(2)讓學(xué)生知道對現(xiàn)實(shí)問題的自然語言的描述,特別是類似程序設(shè)計(jì)語言的自然語言描述。

(3)讓學(xué)生理解分析問題、設(shè)計(jì)算法、編寫程序、調(diào)試程序這一用計(jì)算機(jī)解決問題的基本步驟,

認(rèn)識其在算法與程序設(shè)計(jì)中的作用。

二、重點(diǎn)難點(diǎn)

重點(diǎn)用計(jì)算解決問題的過程中的分析問題、設(shè)計(jì)算法、和上機(jī)調(diào)試程序等步驟。用計(jì)算機(jī)解決

問題的過程中的分析問題、設(shè)計(jì)算法也是本節(jié)的難點(diǎn)。

三、教學(xué)過程(2課時(shí))

(一)引入

教師:“在科技發(fā)達(dá)的今天,我們到處都可以看到計(jì)算機(jī)的蹤影,感受到計(jì)算機(jī)給學(xué)習(xí)、生活帶來

的方便。然而,在驚嘆計(jì)算機(jī)的神奇和享受的歡樂的時(shí)候,你是否了解計(jì)算解決問題的基本過程有沒

有思考過其中的奧妙呢下面我們先看一個(gè)古典的問題:”

學(xué)生觀看的電視劇《漢劉邦》片斷,內(nèi)容大致如下:

“韓信是我國西漢初著名的軍事家,劉邦得天下,軍事上全依靠他。韓信點(diǎn)兵,多多益善,不僅如

此,還能經(jīng)常以少勝多,以弱勝強(qiáng)。在與楚軍決戰(zhàn)時(shí)韓信指揮諸侯聯(lián)軍,在垓下十面埋伏,擊敗楚軍,

楚霸王項(xiàng)羽因此自殺?!?/p>

片斷結(jié)束時(shí)屏幕出現(xiàn)“韓信點(diǎn)兵”問題:“相傳漢高祖劉邦問大將軍韓信統(tǒng)御兵士多少,韓信答說,

每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人。劉邦茫然而不知其數(shù)。你

呢”

(二)問題

教師:“下面我們先助劉邦解決一個(gè)簡單的問題。”

“韓信點(diǎn)兵”問題1:求整除3余1、整除5余2、整除7余4的最小自然數(shù)。

(三)探究

把全班分成16個(gè)學(xué)習(xí)小組,每個(gè)小組的同學(xué)一起探究、討論問題。利用已學(xué)過的數(shù)學(xué)知識找出題目

已知什么求什么、明確已知和未知之間的關(guān)系和寫出求解問題的解題步驟。并填寫《計(jì)算機(jī)解決問題的

過程》教學(xué)活動表中的“探究問題記錄表”。如下:

4

探究問題記錄表

分析問題(找出已知和未知、列出

寫出解題步驟結(jié)果

已知和未知之間的關(guān)系)

學(xué)生討論,教師在這過程中到各學(xué)習(xí)小組中,引導(dǎo)個(gè)別學(xué)習(xí)小組分析問題、寫出解題步驟。教師

提問2~3個(gè)同學(xué),從中逐漸引導(dǎo)出類似如下的分析問題和解題步驟,并給出算法的概念。

分析問題(找出已知和未知、列出

寫出解題步驟

已知和未知之間的關(guān)系)

1、令X為1。

2、如果X整除3余1,X整除5余2,

設(shè)所求的數(shù)為X,則X應(yīng)滿足:

X整除7余4,這就是題目要求的數(shù),

X整除3余1

則記下這個(gè)X。

X整除5余2

3、令X為X+1(為算下一個(gè)作準(zhǔn)備)。

X整除7余4

4、如果算出,則結(jié)束;否則跳轉(zhuǎn)2。

5、寫出答案。

教師解釋第3步“另X為X+1”并指出它與數(shù)學(xué)中的區(qū)別,并從上面的解題步驟中總結(jié)出窮舉的算法。

教師:“剛才有些同學(xué)把題目解出來了,答案是67,韓信作為大將軍,統(tǒng)率士兵當(dāng)然不止67人,下

面我們來解決一個(gè)數(shù)據(jù)量稍大的問題?!?/p>

展示題目:

“韓信點(diǎn)兵”問題2:求整除3余1、整除5余2、整除7余4、整除13余6、整除17余8的最小自

然數(shù)。

學(xué)生分析上述問題并寫出算法,不用計(jì)算。學(xué)生有了第1題的經(jīng)驗(yàn),很快會寫出和第一題類似的算

法。如下:

分析問題(找出已知和未知、列出

寫出解題步驟

已知和未知之間的關(guān)系)

設(shè)所求的數(shù)為X,則X應(yīng)滿足:1、令X為1。

X整除3余12、如果X整除3余1,

X整除5余2X整除5余2,

X整除7余4X整除7余4,

5

X整除13余6X整除13余6,

X整除17余8X整除17余8,則記下這個(gè)X。

3、令X為X+1。

4、如果算出,則結(jié)束;否則跳轉(zhuǎn)2。

5、寫出答案。

教師:“上面的結(jié)果超過1萬,人工計(jì)算要很長時(shí)間,在科技發(fā)達(dá)的今天,你想到什么”(用

計(jì)算機(jī)解題)

(四)用計(jì)算機(jī)解決問題

教師:“計(jì)算機(jī)怎么樣解決問題用計(jì)算機(jī)解決問題,同樣要經(jīng)過分析問題、設(shè)計(jì)算法兩步驟?!?/p>

在講授過程中展示人工解題中分析問題和設(shè)計(jì)算法這兩個(gè)步驟。用計(jì)算機(jī)解題,是不是輸入上面的算法?

上面用自然語言描述的算法,計(jì)算機(jī)不懂,必須翻譯成計(jì)算機(jī)的語言,這就是程序設(shè)計(jì)語言。”

本例用VisualBasic語言編寫的程序請看如下:

PrivateSubCommand1_Click()

DimXAsInteger,YAsInteger

X=1:Y=0

Do

IfXMod3=1Then

IfXMod5=2Then

IfXMod7=4Then

IfXMod13=6Then

IfXMod17=8ThenY=X

EndIf

EndIf

EndIf

EndIf

X=X+1

LoopUntilY>0

Print"韓信統(tǒng)御士兵數(shù):";Y

EndSub

教師:“程序編好以后,通過鍵盤輸入計(jì)算機(jī),并運(yùn)行程序查看結(jié)果這個(gè)過程叫調(diào)試程序?!?/p>

6

(五)觀摩

根據(jù)前面編制的程序,啟動VisualBasic程序設(shè)計(jì)環(huán)境,輸入程序代碼,進(jìn)行調(diào)試,最后得到運(yùn)行

的結(jié)果。要求同組內(nèi)先完成的同學(xué)幫助還未完成的同學(xué)。幫助的時(shí)候不能代勞,只能動口不動手。

(六)交流

教師:“前面我們學(xué)習(xí)了用計(jì)算機(jī)解決問題的過程,它和人工解有什么關(guān)系呢同一學(xué)習(xí)小組的同

學(xué)一起探討人工求解問題和用計(jì)算機(jī)求解問題的異同,并把討論結(jié)果記錄在《計(jì)算機(jī)解決問題的過程》

教學(xué)活動表的“討論記錄”表中。如下:

關(guān)于求解問題的方式討論記錄

求解問題的方式相同點(diǎn)不同點(diǎn)

人工求解問題

用計(jì)算機(jī)求解問題

教師提問2~3個(gè)小組的討論結(jié)果,并引導(dǎo)出大致如下的形式結(jié)果:

求解問題的方式相同點(diǎn)不同點(diǎn)

對題目進(jìn)行解答、運(yùn)算速度

人工求解問題

慢、不需要計(jì)算機(jī)等

分析問題、設(shè)計(jì)算法、得出

結(jié)果、驗(yàn)算結(jié)果等

編寫程序、調(diào)試程序、運(yùn)算

用計(jì)算機(jī)求解問題

速度快等

7

第三課算法與算法的描述

一、教學(xué)目標(biāo)

1、知識與技能

(1)了解算法的定義及其表達(dá)方法;

(2)認(rèn)知流程圖的六種基本符號;

(3)理解計(jì)算機(jī)解決問題的一般過程。

2、方法與過程

(1)理解用不同的表達(dá)方法描述算法的優(yōu)缺點(diǎn);

(2)掌握用流程圖描述簡單的算法。

3、情感態(tài)度和價(jià)值觀

以生活中的實(shí)例引入算法,激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的主動探究能力。

二、重點(diǎn)難點(diǎn)

(一)教學(xué)重點(diǎn)

1、算法的定義;

2、算法的三種表達(dá)方法;

3、流程圖的六種基本符號;

4、用流程圖描述簡單的算法。

(二)教學(xué)難點(diǎn)

5、算法的描述(三種);

6、用流程圖描述算法。

三、教學(xué)過程(2課時(shí))

教學(xué)內(nèi)容預(yù)期目標(biāo)

新課內(nèi)容:

一、對算法的初步了解

1.一個(gè)簡單的物理問題:求物體在恒力作用下的加速度。

根據(jù)在物理課中學(xué)過的知識,要解決這個(gè)問題有多種方法:

方法一:

a)測量出物體的質(zhì)量m、拉力F和滑動摩擦力f

b)將測量所得的數(shù)據(jù)輸入計(jì)算機(jī)

c)根據(jù)牛頓第二定律F-f=m*a,計(jì)算出加速度a

8

d)輸出所得的結(jié)果

方法二:

a)測量出物體從靜止開始移動的距離s、時(shí)間t

b)將測量所得的數(shù)據(jù)輸入計(jì)算機(jī)

引入物理學(xué)中的例子,激發(fā)

c)利用公式:s=a*t*t/2計(jì)算出加速度a

學(xué)生的學(xué)習(xí)興趣,有助于學(xué)

d)輸出所得的結(jié)果

生理解算法的概念

2.算法的定義

這種為解決某一問題而設(shè)計(jì)的確定的有限的步驟稱為算法。

二、算法的描述

要把解決問題的步驟表達(dá)出來,有多種方法可以表達(dá)算法。

引導(dǎo)出算法的概念

1.用自然語言表達(dá)

用自然語言表達(dá)算法,就是把算法的各個(gè)步驟,依次用人們熟悉

介紹三種算法的表達(dá)方式,

的自然語言表示出來。

并對它們進(jìn)行比較,分析優(yōu)

優(yōu)點(diǎn):容易理解

缺點(diǎn)。

缺點(diǎn):書寫較煩、不確定性、對復(fù)雜的問題難以表達(dá)準(zhǔn)確、不能

被計(jì)算機(jī)識別和執(zhí)行

給出流程圖的基本符號,

2.用圖形符號表達(dá)

對其功能和使用情況加以

用圖形符號表達(dá)算法必須要有一組規(guī)定統(tǒng)一、含義確定的專用符

說明,以便今后在具體運(yùn)用

號。

中的正確使用。

常用的“流程圖”所用的基本符號

圖形符號符號名稱說明流線

起始、終表示算法的開起始框:一流出線

止框始或結(jié)束終止框:一流入線

輸入、輸框中標(biāo)明輸只有一流入線和一

出框入、輸出的內(nèi)流出線

處理框框中標(biāo)明進(jìn)行只有一流入線和一

什么處理流出線

判定框框中標(biāo)明判定一流入線兩流出線

條件并在框外(T和F

9

標(biāo)明判定后的)但同時(shí)只能一流

兩種結(jié)果的流出線起作用

流線表示從某一框

給出流程圖的作法,通過詳

到另一框的流

細(xì)的解釋說明使學(xué)生初步

掌握流程圖的使用和基本

連接圈表示算法流向一條流線

畫法。

出口或入口連

接點(diǎn)

優(yōu)點(diǎn):直觀、形象

缺點(diǎn):不能被計(jì)算機(jī)識別和執(zhí)行

例6-1-1:“物體在恒力作用下的加速度”的算法用下圖表達(dá)。

開始

M=m

F1=F

F2=f

a=(F1-F2)/M

輸出a

結(jié)束

3.用程序?qū)崿F(xiàn)算法

用計(jì)算機(jī)能理解和執(zhí)行的程序設(shè)計(jì)語言把算法表示出來,然后把

了解計(jì)算機(jī)解決問題的一

程序輸入到計(jì)算機(jī)并執(zhí)行,計(jì)算機(jī)才能按照預(yù)定的算法去解決問

般過程,為今后用編程解決

10

題。實(shí)際問題打下基礎(chǔ)。

不同類型的計(jì)算機(jī)能夠識別的指令和語言不盡相同,即使對同一

種計(jì)算機(jī)語言,不同類型的計(jì)算機(jī)對該語言的解釋程序也有差

異。

因此,用程序表示算法時(shí),必須按照程序設(shè)計(jì)語言適用某類計(jì)算

機(jī)的具體規(guī)定來進(jìn)行。

例:用Pascal語言表示“從鍵盤輸入一組數(shù)據(jù)并求該組數(shù)據(jù)的

平均值”的程序如下:

Programex_aver

VarI:integer;x,av:real;

Begin

Av:=0;I:=0;

Dowhilenoteof()

Begin

Readln(x);av:=av+x;

I:=I+1;

End

av:=av/I;

Writenln(“Theaveragevalueis:”,av);

End

三、用計(jì)算機(jī)解決問題的一般過程

使用計(jì)算機(jī)解決一個(gè)問題,一般包括四個(gè)過程

1.需求分析

“需求分析”是指對要解決的問題進(jìn)行詳細(xì)的分析,弄清楚問題

的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出

什么。

“需求分析”就是確定要計(jì)算機(jī)“做什么”。

2.設(shè)計(jì)算法

弄清楚要計(jì)算機(jī)“做什么”后,就要設(shè)計(jì)計(jì)算法,明確要計(jì)算機(jī)

“怎么做”

11

解決一個(gè)問題,可能有多種算法。例如,數(shù)學(xué)題常常有“一題多

解”。這就是說,解決一個(gè)問題的算法可能不止一種。這是,應(yīng)

該通過分析、比較、挑選一種最優(yōu)的算法。

3.編寫程序

計(jì)算機(jī)只能接受并執(zhí)行計(jì)算機(jī)程序設(shè)計(jì)語言編寫的程序。當(dāng)我們

為解決一個(gè)問題確定了算法后,還必須將該算法用計(jì)算機(jī)程序設(shè)

計(jì)語言編寫程序。這個(gè)過程成為“編碼”或“編程”。

4.上機(jī)調(diào)試與維護(hù)

編寫完成的程序,不一定完全符合實(shí)際問題的要求,還必須在計(jì)

算機(jī)上運(yùn)行這個(gè)程序,排除程序中可能出現(xiàn)的錯(cuò)誤,才能得到結(jié)

果。這個(gè)過程稱為“上機(jī)調(diào)試”。

即使是經(jīng)過調(diào)試的程序,在使用一段時(shí)間后,仍然會被發(fā)現(xiàn)錯(cuò)誤

或不足之處。這就需要對程序做進(jìn)一步的修改,使之更加完善。

這個(gè)過程稱為“維護(hù)”。

在實(shí)際解決問題時(shí),上述四個(gè)步驟可能會根據(jù)不同的問題有所側(cè)

重。

12

第四課程序與程序設(shè)計(jì)語言

一、教學(xué)目標(biāo)

1、知識與技能

使學(xué)生知道什么是源代碼,并理解算法、程序設(shè)計(jì)、程序設(shè)計(jì)語言之間的關(guān)系,了解程序設(shè)計(jì)語言的發(fā)

展及種類。

2、過程與方法

使學(xué)生初步體驗(yàn)編程樂趣,了解如何編輯程序、編譯程序和連接程序。

3、情感態(tài)度與價(jià)值觀

讓學(xué)生進(jìn)一步領(lǐng)會算法和程序設(shè)計(jì)在解決問題中的地位,體會編寫出程序的魅力,從而培養(yǎng)學(xué)生學(xué)習(xí)編

程的興趣。

二、重點(diǎn)難點(diǎn)

(1)重點(diǎn):了解代碼所包含的算法思想;

(2)難點(diǎn):計(jì)算機(jī)是如何編輯程序、編譯程序和連接程序的。

三、教學(xué)過程(2課時(shí))

正課講解

(一)嘗試用VB編寫程序

1、么是VB

——VB是一種基本BASIC語言的可視化程序開發(fā)工具。

2、編寫程序

⑴從桌面上啟動VB,彈出“新建工程”對話框,從“新建”頁面中選“標(biāo)準(zhǔn)EXE”,然后“打開“按

鈕,建立”標(biāo)準(zhǔn)EXE工程。

注:為了避免打開時(shí)總是出現(xiàn)“新建工程”對話框,在首次啟動時(shí),勾選“不再顯示這個(gè)對話框”。

⑵單擊工具箱“CommandButton”的按鈕,在Form1窗體中拖出一個(gè)“Command1”按鈕。

Command1是命令按鈕,它有6個(gè)屬性、2個(gè)事件和4個(gè)方法。

屬性

CaptionDefault

標(biāo)題決定窗體的默認(rèn)命令按鈕

StyleEnabled

控件的外觀決定對象是否響應(yīng)用戶生成

事件

VisiblePicture

決定對象是否可見顯示的圖形

13

事件方法

ClickDragRefresh

單擊拖動刷新

MoveKeyPressSetFocus

移動字符鍵被單設(shè)置焦點(diǎn),將當(dāng)前焦

擊點(diǎn)強(qiáng)制設(shè)置到文本

框?qū)ο笊?/p>

⑶選中此按鈕,從屬性窗口中將Caption改為“韓信點(diǎn)兵”。

⑷給按鈕添加代碼,在PrivateSubCommand1_Click()和EndSub之間添加代碼:

DimNAsInteger‘聲明N為整型

N=1‘賦初始值

Do(Nmod3=2)and(Nmod5=3)and(Nmod7=2)

Then‘滿足條件打印N,不滿足繼續(xù)循環(huán)

PrintN

Exitdo

Endif

N=N+1

Loop

⑸從“運(yùn)行”菜單中“單擊”啟動命令,運(yùn)行程序。運(yùn)行后,單擊“韓信點(diǎn)兵”按鈕。

注:運(yùn)行時(shí),不能修改程序代碼。

實(shí)踐題:從“調(diào)試”菜單中點(diǎn)擊“逐語句”命令(F8),然后按F8鍵試著單步運(yùn)行程序,觀察代碼

是如何運(yùn)行的,程序執(zhí)行注釋部分嗎在程序運(yùn)行的過程中,用鼠標(biāo)指向變量N,看看它的值有什么變

化,為什么會這樣變

(二)算法、程序設(shè)計(jì)與程序設(shè)計(jì)語言之間的關(guān)系

⑴算法

提出問題:什么是算法算法有哪些特征

⑵程序設(shè)計(jì)——尋求解決問題的方法,并將其實(shí)現(xiàn)步驟寫成計(jì)算機(jī)可執(zhí)行的程序的過程。

⑶程序設(shè)計(jì)語言——泛指一切用于書寫計(jì)算機(jī)程序的語言。

算法是程序設(shè)計(jì)的前提,它包含方法和步驟;

程序是實(shí)現(xiàn)算法中的思想的過程;

程序設(shè)計(jì)語言把算法轉(zhuǎn)化為計(jì)算機(jī)認(rèn)識的語言。

14

(三)認(rèn)識程序設(shè)計(jì)語言

1、發(fā)展過程

機(jī)器語言:由一串“0”和“1”構(gòu)成二進(jìn)制代碼。

匯編語言:是一種符號化(英文助記符)的機(jī)器語言。

高級語言:如Basic、C/C++、Fortran、Pascal、Cobol、Java等。

2、分類(按轉(zhuǎn)換方式不同分類)

編譯型語言解釋型語言

編寫的源程序需要用編譯程序先翻譯成機(jī)器語言的源程序輸入計(jì)算機(jī)后,運(yùn)行源程序,相應(yīng)的解釋程序

目標(biāo)程序,然后再由連接裝配程序進(jìn)行連接裝配,生會逐條分析源程序中的語句,每解釋一句由計(jì)算機(jī)執(zhí)

成可執(zhí)行程序,這樣才能被計(jì)算機(jī)執(zhí)行。行一句。

C/C++、VB、Pascal、CobolQbasic、Lisp

3、編輯程序、編譯程序和連接程序

⑴編輯程序

包含內(nèi)容:一是將源程序逐個(gè)字符輸入到計(jì)算機(jī)內(nèi)存,二是修改源程序,三將修改好的源程序

保存在磁盤文件中。

⑵編譯程序:將已編輯好的源程序(已存儲在磁盤文件中)翻譯成二進(jìn)制的目標(biāo)代碼。

二進(jìn)制代碼在UNIX下后綴為“.o”的文件,在DOS下是后綴為“.obj”文件。

⑶連接:將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊經(jīng)連接處理后,得到具有有絕對地址的可執(zhí)行文件,

它是計(jì)算機(jī)直接執(zhí)行的文件。

在UNIX下它以“.out”為后綴,在MS-DOS以下“.exe”為后綴。

執(zhí)行過程:

15

第五課vb語言及程序開發(fā)環(huán)境

一、教學(xué)目標(biāo)

1、知識與技能

掌握VB定義的常用的基本數(shù)據(jù)類型,常量與變量的定義方法,運(yùn)算符、函數(shù)和表達(dá)式的描述。

熟悉VB程序設(shè)計(jì)語言的開發(fā)環(huán)境,能調(diào)試簡單的VB程序。

2、方法與過程

本節(jié)涉及到基礎(chǔ)知識較多,所以要一個(gè)一個(gè)問題解決,從一個(gè)簡單的求圓的面積的程序入手,

從中分析VB程序一般包括的四部分,基本數(shù)據(jù)類型、常量與變量,運(yùn)算符、函數(shù)和表達(dá)式,而且

結(jié)合練習(xí)來加強(qiáng)對這些新知識的鞏固。通過介紹VB程序的開發(fā)環(huán)境中的菜單、常用工具和常用窗

口等,再通過上機(jī)操作運(yùn)行一個(gè)程序,讓學(xué)生更容易上手。

3、情感態(tài)度和價(jià)值觀

這一節(jié)是學(xué)習(xí)VB程序的重要的入門課,授課時(shí)要注意結(jié)合學(xué)生的思路,逐個(gè)問題解決,不可

一蹴而就。

二、重點(diǎn)難點(diǎn)

1、教學(xué)重點(diǎn)

(1)VB常用的的基本數(shù)據(jù)類型,常量與變量,運(yùn)算符和表達(dá)式

(2)VB程序的開發(fā)環(huán)境

2、教學(xué)難點(diǎn)

把本節(jié)的內(nèi)容加以運(yùn)用

三、教學(xué)過程(3課時(shí))

導(dǎo)入:

以下是一個(gè)“求半徑為r的圓的面積”的程序,請你注意觀察程序的組成結(jié)構(gòu)及其功能,并思考如下的問題:

(1)程序有多少行,每一行的作用是什么

(2)如果按語句的作用區(qū)分,這個(gè)程序包含幾個(gè)部分

Privatesubcommand1_click()‘定義名為command1_click()的事件過程

Constpiassingle=‘說明程序中pi是常量∏

Dimrassingle,sassingle‘定義半徑r和面積s為單精度實(shí)型

r=inputbox(“r=”,”請輸入半徑”)‘輸入r的值

s=pi*r*r‘把表達(dá)式pi*r*r的值賦給s

print“圓的面積s=”;s‘把s的值輸出到當(dāng)前的窗體上

16

Endsub‘過程結(jié)束

考察上述程序,我們?nèi)菀卓吹剑撼绦蚬灿写a7行,每一行都是VB的一個(gè)語句,VB的程序就是由這

樣的一組語句組成。每一個(gè)語句都是按照一定的規(guī)則書寫的。

總結(jié)上述分析,我們可以得到VB程序的一般包括如下部分:

(1)數(shù)據(jù)類型說明部分

(2)數(shù)據(jù)的輸入部分

(3)數(shù)據(jù)的處理部分

(4)數(shù)據(jù)的輸出部分

一、基本數(shù)據(jù)類型

描述客觀事物的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中,并被計(jì)算機(jī)程序加工處理的集合稱為數(shù)據(jù)。

數(shù)據(jù)既是計(jì)算機(jī)程序處理的對象,也是運(yùn)算產(chǎn)生的結(jié)果。

為了更好地處理各種數(shù)據(jù),VB定義了多種數(shù)據(jù)的類型?;緮?shù)據(jù)類型是系統(tǒng)預(yù)先定義的數(shù)據(jù)類型,

表2-1中列出了VB定義的常用的基本數(shù)據(jù)類型。

例如在上述的程序中,既有單精度實(shí)型數(shù)的數(shù)據(jù)(如等),也有字符類型的數(shù)據(jù),如“輸入半

17

徑”、“圓的面積S=”。

二、常量與變量

(1)常量

常量是指在程序運(yùn)行過程中始終保持不變的常量、字符串等。例如在上述的程序中,、“r=”、“輸

入半徑”等都是常量。

在程序設(shè)計(jì)中,以于一些經(jīng)常使用的常量,可以用常量說明語句來定義。這樣可以提高程序的可讀

性和可維護(hù)性。

常量說明語句的格式是:

Const常量名As類型=表達(dá)式

在上述程序中,第2行就是一個(gè)常量說明語句,說明程序中需要使用的常量。

(2)變量

在程序處理數(shù)據(jù)時(shí),對于輸入的數(shù)據(jù)、參加運(yùn)算的數(shù)據(jù)、運(yùn)行結(jié)果等臨時(shí)數(shù)據(jù),通常把它們暫時(shí)存

儲在計(jì)算機(jī)的內(nèi)存中。變量就是命名的內(nèi)存單元位置。在VB中,變量名必須是由英文字母開頭,

后面則可以由字母、數(shù)字或其它符號組成;變量的名稱最好與它所表示的內(nèi)容意義相同的英文單詞

來確定。

(3)變量說明

使用變量前,一般應(yīng)先說明變量名及其類型,以使系統(tǒng)為其分配存儲單元,變量說明語句格式如下:

Dim變量As類型

如Dimrassingle,定義半徑r為單精度實(shí)型

三、運(yùn)算符、函數(shù)和表達(dá)式

(1)運(yùn)算符

運(yùn)算符是對數(shù)據(jù)進(jìn)行加工的過程。描述各種不同運(yùn)算的符號稱為運(yùn)算符,參與運(yùn)算的數(shù)據(jù)稱為操作

數(shù)。在VB中,常用的運(yùn)算符有算術(shù)運(yùn)算符、字符串運(yùn)算符和邏輯運(yùn)算符等。

①算術(shù)運(yùn)算符有:

+-*/^\MOD

運(yùn)算符號

含義加號減號乘號除號乘方整除取余數(shù)

算術(shù)運(yùn)算符的運(yùn)算規(guī)則和數(shù)學(xué)中相同,如果意義不明確時(shí),可以加上括號使其看起來更明白。VB中只使

用一種括號“()”,它可以多次嵌套。

②字符串運(yùn)算符有:&

VB中的字符串運(yùn)算符是“&”,該運(yùn)算符主要用于連接兩個(gè)或更多的字符串,例如:“"abcd"&"efg"”

18

連接后結(jié)果為"abcdefg"。

(2)函數(shù)

在VB中有兩類函數(shù),分別是內(nèi)部函數(shù)和自定義函數(shù)轉(zhuǎn)換函數(shù)。常用的內(nèi)部函數(shù)有數(shù)值函數(shù)、字符

函數(shù)、時(shí)間/日期函數(shù)和其它函數(shù)等,如表2-2所示,自定義函數(shù)是由程序員根據(jù)需要定義的函數(shù)。

在程序中要使用一個(gè)函數(shù)時(shí),只需要給出函數(shù)名和一個(gè)或多個(gè)參數(shù),就能得到函數(shù)值。調(diào)用函數(shù)

的格式如下:函數(shù)名(參數(shù)表)

(3)表達(dá)式

表達(dá)式是指某個(gè)求值規(guī)則,它由運(yùn)算符和配對的圓括號將變量、常量、函數(shù)等操作數(shù)以合理的

形式連接起來的式子。例如在上述的程序中,式子pi*r*r是合法的表達(dá)式。

四、練習(xí)

(1)下列數(shù)據(jù)屬于字符串常量的是()

A.bcdaB."kfjf"C.’fksj’D.”j_hjh”

(2)在VB語言中,下列數(shù)據(jù)中合法的長整型常量是()

(3)在VB語言中,下列變量中合法的變量是()

A.b90=9

19

(4)在VB語言中,下列表達(dá)式中合法的表達(dá)式是()

A.a(chǎn)+b*|c|÷9*∏D.pi*r*r

五、可視化程序的開發(fā)環(huán)境

前面的學(xué)習(xí)使我們知道,要較快地學(xué)會運(yùn)行調(diào)試VB程序,首先需要熟悉VB程序設(shè)計(jì)語言

的開發(fā)環(huán)境。VB程序設(shè)計(jì)語言的開發(fā)環(huán)境的界面如下圖:

VB程序設(shè)計(jì)語言的開發(fā)環(huán)境中,控件工具箱、代碼窗口、窗體設(shè)計(jì)器窗口、工程資源管理器

窗口、屬性窗口是一些常用的程序設(shè)計(jì)與調(diào)試工具,這些工具互相協(xié)調(diào)、互相補(bǔ)充,如果熟練、合

理地使用會大大地減少應(yīng)用程序的開發(fā)難度,提高工作效率。

四、課外拓展

在了解、熟悉了VB程序設(shè)計(jì)語言的開發(fā)環(huán)境以后,你肯定躍躍欲試,一顯身手。好吧,就讓我們

一起來體驗(yàn)VB程序的運(yùn)行調(diào)試吧!

求s=1×2×3××n問題的VB程序:

privatesubform_load()

n=inputbox(“請輸入n的值:”,“輸入”)

s=1

fori=1ton

s=s*I

nextI

msgbox“s=”+str(s),0,”計(jì)算結(jié)果”

endsub

當(dāng)N=22時(shí),運(yùn)行的結(jié)果是:

20

第六課程序的順序結(jié)構(gòu)

一、教學(xué)目標(biāo)

1、知識與技能

理解程序順序結(jié)構(gòu)的執(zhí)行流程,掌握賦值語句和輸入輸出語句,能夠編寫簡單的順序結(jié)構(gòu)的程序,

以解決生活中的一些計(jì)算問題。

2、方法與過程

本節(jié)從簡單的問題入手,如求圓的面積,讓學(xué)生初步掌握賦值語句和輸入輸出語句的使用方法及其

功能。進(jìn)而轉(zhuǎn)入較為復(fù)雜的問題,如編寫程序使從鍵盤上輸入一個(gè)三位數(shù),然后反方向輸出,并且運(yùn)用

到上一章所學(xué)的運(yùn)算符、表達(dá)式等,對知識進(jìn)行鞏固,課程安排形成循序漸進(jìn)的梯度,充分挖掘?qū)W生潛

力,讓有余力的學(xué)生可以有更大空間。

3、情感態(tài)度和價(jià)值觀

程序設(shè)計(jì)選取的題目與高一所學(xué)的數(shù)學(xué)、物理中學(xué)到的新知識有密切的聯(lián)系,從而激發(fā)學(xué)生對程序

設(shè)計(jì)的追求和向往。

二、重點(diǎn)難點(diǎn)

1、教學(xué)重點(diǎn)

(1)賦值語句和輸入輸出語句的使用

(2)程序順序結(jié)構(gòu)的執(zhí)行流程

(3)能編寫程序解決簡單的應(yīng)用題

2、教學(xué)難點(diǎn)

根據(jù)題目寫出正確的程序

三、教學(xué)過程(2課時(shí))

導(dǎo)入:演示求圓的面積這道題的程序,讓學(xué)生明白通過程序可以解決數(shù)學(xué)中的問題,也給學(xué)生展示完整

的程序代碼,這道程序的功能就是靠這些代碼來控制的,引起學(xué)生的注意,激發(fā)他們的求知欲。

一、演示上述的程序,并把程序代碼中的各行代碼的作用解釋一遍,順便把程序的執(zhí)行流程說明一下,

編寫的程序與設(shè)計(jì)的算法是一致的。

Privatesubcommand1_click()‘定義名為command1_click()的事件過程

Constpiassingle=‘說明程序中pi是常量∏

Dimrassingle,sassingle‘定義半徑r和面積s為單精度實(shí)型

r=inputbox(“r=”,”請輸入半徑”)‘輸入r的值

21

s=pi*r*r‘把表達(dá)式pi*r*r的值賦給s

print“圓的面積s=”;s‘把s的值輸出到當(dāng)前的窗體上

Endsub‘過程結(jié)束

二、賦值語句

在上述的程序中,r=inputbox(“r=”,”請輸入半徑”),s=pi*r*r的含義分別是將賦值號右邊的函數(shù)

inputbox(“r=”,”請輸入半徑”)的值賦給變量r,將賦值號右邊的表達(dá)式pi*r*r的值賦給變量s。它們的作用

都是將表達(dá)式的值賦給左邊的變量,這種語句稱為賦值語句。

賦值語句的基本格式是:

變量=表達(dá)式

這里的“=”是賦值符號,它的含義是將表達(dá)式的值賦給左邊的變量。

觀察下列賦值語句的作用:

(1)A=B,它是將變量B的值賦給變量A,但B的值并未改變。

(2)A=123表示將數(shù)值123賦給變量A。

(3)A=A+10表示將變量A的值加10后,再賦給變量A。如果原來A的值為30,則執(zhí)行

此語句后,A的值為40。

(4)如果A=30,B=40,則依次執(zhí)行語句T=A,A=B,B=T后,A、B兩個(gè)變量的值發(fā)生

交換A=40,B=30。

三、輸入數(shù)據(jù)的函數(shù)

Inputbox()是提供從鍵盤輸入數(shù)據(jù)的函數(shù),利用它可產(chǎn)生一個(gè)對話框,提示用戶輸入數(shù)據(jù)并單擊命令

按鈕。該函數(shù)返回值是字符類型。利用這個(gè)函數(shù),上述程序中的r=inputbox(“r=”,”請輸入半徑”),所

以在程序運(yùn)行時(shí),從鍵盤上輸入數(shù)據(jù)賦值給變量r。

Inputbox()的語法格式為:

Inputbox(提示信息,標(biāo)題,默認(rèn)值,位置)

其中:

提示信息:指對輸入數(shù)據(jù)的提示,顯示在對話框中,不能省略。

標(biāo)題:指運(yùn)行此函數(shù)后彈出的對話框的標(biāo)題。

默認(rèn)值:指默認(rèn)的輸入數(shù)據(jù)值。

位置:指運(yùn)行此函數(shù)后彈出的對話框的左上角在屏幕上的位置與提示信息和標(biāo)題是用引號引起來的

字符串。例如:執(zhí)行下面的程序運(yùn)行情況:

PrivateSubCommand1_Click()

22

A=InputBox("A=","輸入",12,100,20)

EndSub

運(yùn)行該程序,屏幕上窗口的左上角將位于坐標(biāo)為(100,20)的位置,標(biāo)題為“輸入”,窗口的提示信息

為“A=”,而在輸入欄內(nèi)會出現(xiàn)默認(rèn)的數(shù)據(jù)12。如下圖所示:

四、輸出數(shù)據(jù)的方法

Print是輸出數(shù)據(jù)、文本的一個(gè)重要方法。在求圓的面積程序中,print“圓的面積s=”;s就是利

用Print方法將計(jì)算出來的圓的面積s的值輸出到窗體上。

Print方法輸出數(shù)據(jù)的基本格式是:

Print輸出內(nèi)容

在這里,輸出內(nèi)容可以是數(shù)、變量、表達(dá)式,也可以是用引號括起來的字符串。

說明:

(1)如果輸出的內(nèi)容是數(shù)、變量、表達(dá)式,則輸出的是數(shù)、變量、表達(dá)式的值。如果是引號

引起來的字符串,則原樣輸出。

例如:語句Print3的結(jié)果為3

語句Print2+2的結(jié)果為4

語句Print“你好”的結(jié)果為你好

(2)輸出內(nèi)容可以是一個(gè)或多個(gè)。如果是多個(gè)輸出內(nèi)容,則各輸出內(nèi)容之間可以用逗號或分

號分隔;如果用分號,則后面一個(gè)輸出內(nèi)容緊跟前一個(gè)輸出;如果是逗號,則按照分區(qū)格式輸出。

例如:A=5,B=3

Print“A=”;A,“B=”;B

輸出結(jié)果為:A=5B=3

A=5,B=3

Print“A=”;A;“B=”;B

輸出結(jié)果為:A=5B=3

(3)如果輸出內(nèi)容后面沒有符號,則表示下一個(gè)Print換行輸出;如果Print中沒有輸出內(nèi)容,

則表達(dá)輸出一個(gè)空行。

23

例如:A=5,B=3

Print“A=”;A

Print“B=”;B

五、練習(xí)

問題1:已知長方體的長、寬、高,編寫一個(gè)程序,求長方體的全面積和體積。

(1)分析問題

設(shè)長方體的長、寬、高分別為A、B、C,由于長方體的六個(gè)面的面積兩兩對應(yīng)相等,所以長方體的

全面積為:S=2*(A*B+A*C+B*C),體積為:V=A*B*C。

(2)設(shè)計(jì)算法

①輸入A、B、C的值

②計(jì)算S=2*(A*B+A*C+B*C)

③計(jì)算V=A*B*C

④輸出S,V的值

(3)編寫程序

Privatesubcommand1_click()

DimAassingle,Bassingle,Cassingle,Sassingle,Vassingle

A=Inputbox(“A=”,”輸入”)

B=Inputbox(“B=”,”輸入”)

C=Inputbox(“C=”,”輸入”)

S=2*(A*B+A*C+B*C)

V=A*B*C

Print“全面積S=”;S,“體積V=”;V

(4)調(diào)式程序

六、小結(jié)

在以上的程序中,執(zhí)行時(shí)按語句出現(xiàn)的順序執(zhí)。即當(dāng)執(zhí)行第一條語句后,必然從第二條語句

繼續(xù),順序執(zhí)行所有的語句,直到執(zhí)行完最后一條語句為止。像這樣的控制結(jié)構(gòu)稱為程序的順序結(jié)

構(gòu)。順序結(jié)構(gòu)的最大特點(diǎn)是在這個(gè)結(jié)構(gòu)內(nèi)按由上到下的的書寫順序執(zhí)行,它只有一個(gè)入口和一個(gè)出

口。這是一種最簡單、最基本的結(jié)構(gòu)。如圖

24

五、課外拓展

試編寫程序從鍵盤上輸入一個(gè)三位數(shù),然后將它反方向輸出。例如輸入456,輸出應(yīng)為654。

25

第七課程序的選擇結(jié)構(gòu)

一、教學(xué)目標(biāo)

1、知識與技能

理解程序選擇結(jié)構(gòu)中的條件選擇語句的執(zhí)行流程,掌握條件選擇語句和多種選擇語句的使用方法,

能夠編寫簡單的選擇結(jié)構(gòu)的程序,以解決生活中的一些計(jì)算問題。

2、方法與過程

本節(jié)從簡單的問題入手,通過一道求一個(gè)數(shù)的絕對值的題目,讓學(xué)生明白條件選取擇語句的執(zhí)行流

程及使用方法。進(jìn)而再做類似的練習(xí),加強(qiáng)學(xué)生的理解,課程安排形成循序漸進(jìn)的梯度,充分挖掘?qū)W生

潛力。

3、情感態(tài)度和價(jià)值觀

程序設(shè)計(jì)選取的題目都是生活中遇到的例子,加強(qiáng)學(xué)生利用本學(xué)科解決日學(xué)生活中的問題的意識。

二、重點(diǎn)難點(diǎn)

1、教學(xué)重點(diǎn)

(1)條件選擇語句和多重選擇語句的使用

(2)程序條件選擇結(jié)構(gòu)的執(zhí)行流程

(3)會使用條件語句和多重選擇語句編寫程序解決簡單的應(yīng)用題

2、教學(xué)難點(diǎn):根據(jù)題目寫出正確的程序

三、教學(xué)過程(2課時(shí))

導(dǎo)入:演示求一個(gè)數(shù)的絕對值這道題的程序,讓學(xué)生明白通過程序可以解決數(shù)學(xué)中的問題,也給學(xué)

生展示完整的程序代碼,這道程序的功能就是靠這些代碼來控制的,引起學(xué)生的注意,激發(fā)他們的求知

欲。

一、演示上述的程序,并把程序代碼中的各行代碼的作用解釋一遍,順便把程序的執(zhí)行流程說明一下,

編寫的程序與設(shè)計(jì)的算法是一致的。

程序2-3

Privatesubcommand1_click()‘定義名為command1_click()的事件過程

DimAassingle‘定義求絕對值的數(shù)A為單精度實(shí)型

A=inputbox(“r=”,”請輸入半徑”)‘輸入A的值

IfA>=0then‘如果A>=0

Print“Y=”;A‘輸出A的值

Else

26

Print“Y=”;-A‘輸出-A的值

Endif

Endsub‘過程結(jié)束

二、條件語句

在解決問題的過程中,常常需要對事物進(jìn)行判斷和選擇,如上題中,求一個(gè)數(shù)A的絕對值,如果A>=0,

則這個(gè)數(shù)的絕對值為A,否則為-A。在程序設(shè)計(jì)中,如何實(shí)現(xiàn)判斷和選擇呢在上述代碼中,有一個(gè)用

if開頭的語句,這就是條件語句。

(一)條件語句的基本格式是:

if條件then語句組1else語句組2

if條件then

語句組1

else

語句組2

endif

其中,條件是一個(gè)邏輯表達(dá)式,語句組是一組VB的語句。

(二)條件執(zhí)行語句的執(zhí)行過程

條件語句的執(zhí)行過程是:當(dāng)條件成立時(shí),執(zhí)行then后面的語句組1,否則執(zhí)行語句組2,條件語句的執(zhí)

行流程圖如下圖所示。

在條件語句的基本格式中有時(shí)可以省略else和語句組2,這時(shí)條件語句的執(zhí)行過程是當(dāng)條件成立

時(shí),執(zhí)行then后面的語句組1,否則退出條件語句,執(zhí)行下面的語句。

(三)關(guān)系表達(dá)式

27

在程序2-3中,程序的第三行是一個(gè)條件語句,其中的條件A>=0表達(dá)式,一般稱為關(guān)系表達(dá)式,

關(guān)系表達(dá)式是用關(guān)系運(yùn)算符連接起來的式子。

關(guān)系運(yùn)算符號有:

=

運(yùn)算符號>>=<<=<>

含義等于大于大于等于小于小于等于不等于

當(dāng)關(guān)系表式成立時(shí)其值為真(Ture),當(dāng)表達(dá)式不成立時(shí)其值則為假(False);關(guān)系表達(dá)式的值既不

是數(shù)值型量,也不是字符型量,而是一種新的數(shù)量類型——邏輯型。邏輯型只有兩個(gè)可能的值:假

(False)和真(Ture)。

關(guān)系表達(dá)式的值定義如下:

(1)對數(shù)值型的數(shù)據(jù)比較,是按照數(shù)值的大小來進(jìn)行比較。如13>6的值為真。

(2)對其它類型數(shù)據(jù)的比較,則按照其序號進(jìn)行比較。如"D">"B"其值為假。2<X<

(四)邏輯表達(dá)式

在實(shí)際問題中,對于一些復(fù)雜的條件,還需要幾個(gè)關(guān)系表達(dá)式組合起來才能表示。例如,條件2<X<9

就需要用2<X和X<9這兩個(gè)表達(dá)式來表示.將多個(gè)關(guān)系表達(dá)式用邏輯運(yùn)算符連接起來的式子稱為邏

輯表達(dá)式,邏輯表達(dá)式的運(yùn)算值為邏輯型。邏輯運(yùn)算符有:

Not(非)取操作數(shù)相反的值。即當(dāng)操作數(shù)為假時(shí),結(jié)果為真;當(dāng)操作數(shù)為真時(shí),結(jié)果為假。

And(與)當(dāng)兩個(gè)操作數(shù)都為真時(shí),結(jié)果才為真。

Or(或)當(dāng)兩個(gè)操作數(shù)都為假時(shí),結(jié)果才為假。

(五)邏輯運(yùn)算的順序

(1)當(dāng)條件中只有邏輯運(yùn)算符時(shí),運(yùn)算的順序?yàn)镹ot、And、Or

(2)當(dāng)條件中既有算術(shù)運(yùn)算符,又有關(guān)系運(yùn)算符和邏輯運(yùn)算符時(shí),運(yùn)算順序是:算術(shù)運(yùn)算符,關(guān)

系運(yùn)算符,邏輯運(yùn)算符

例如:

a+b>c+danda>=5ornotc>0ord<0

當(dāng)a=5,b=7,c=2,d=1時(shí),運(yùn)算結(jié)果是真。

三、練習(xí)

四、練習(xí)

問題1:某商場為了對蘋果進(jìn)行促銷,規(guī)定購買2千克以上可以在原價(jià)每千克的基礎(chǔ)上打8折。

請?jiān)O(shè)計(jì)一個(gè)程序計(jì)算購買x千克蘋果的應(yīng)付款。

28

(1)分析問題

設(shè)買蘋果的重量為x千克,應(yīng)付款為y元,如果x>=2,則y=*x*,否則y=*x。

(2)設(shè)計(jì)算法

①輸入x的值

②如果x>=2,則y=*x*

③否則y=*x

④輸出y的值

(3)編寫程序

Privatesubcommand1_click()

Dimxassingle

x=Inputbox(“請輸入購買蘋果的重量”)

ifx>=2then

y=*x*

else

y=*x

endif

Print“應(yīng)付款”;y;“元”

(4)調(diào)式程序

五、多重選擇語句

問題2:輸入一個(gè)成績,如果90分以上,則輸出“優(yōu)秀”;80-89,則輸出“良好”;70-79,

則輸出“中等”;60-69,則輸出“及格”;60分以下則輸出“不及格”,請編寫程序。

如果這道題使用if語句來編寫程序的話,程序如下:

程序2-4

Privatesubcommand_click()

X=inputbox(“請輸入一個(gè)分?jǐn)?shù)”)

IfX>=90thenprint”優(yōu)秀”

IfX>=80andX<89thenprint”良好”

IfX>=70andX<79thenprint”中等”

IfX>=60andX<69thenprint”及格”

29

IfX<60thenprint”不及格”

Endsub

在程序2-4中,使用了5個(gè)if語句來處理5種情況。這樣的程序在可讀性和效率方面都是比較差的,

如果再多一些情況,它的缺陷就會暴露得更加明顯,如何處理這個(gè)問題呢

(一)多重選擇語句格式

在VB語言中,設(shè)置了一個(gè)處理多種情況的語句,稱為多重選擇語句,它的基本格式為:

selectcase表達(dá)式

case表達(dá)式列表1

語句組1

case表達(dá)式列表2

caseelse

語句組N+1

endselect

其中

(1)表達(dá)式和表達(dá)式列表可以是數(shù)值型或字符型,表達(dá)式列表還可以是多個(gè)用逗號分開的表

達(dá)式。

(2)表達(dá)式列表與表達(dá)式的類型必須相同。

(3)表達(dá)式列表又稱值域,它有如下三種形式:

①表達(dá)式1,表達(dá)式2,

②表達(dá)式1to表達(dá)式2

③Is關(guān)系表達(dá)式

(二)多重選擇語句的執(zhí)行過程

多重選擇語句的執(zhí)行過程是:

當(dāng)表達(dá)式的值為表達(dá)式列表1時(shí),執(zhí)行語句組1;

當(dāng)表達(dá)式的值為表達(dá)式列表2時(shí),執(zhí)行語句組2;

當(dāng)表達(dá)式的值為表達(dá)式列表N時(shí),執(zhí)行語句組N;

當(dāng)表達(dá)式的值不是上述值時(shí),執(zhí)行語句組N+1;

有了多重選擇語句,對于多種情況的選擇問題,就可以利用它來解決。運(yùn)用多重選擇語句編

30

寫問題2的程序如下:

Privatesubcommand_click()

X=inputbox(“請輸入學(xué)生成績”)

SelectcaseX

CaseIs>=90

Print”優(yōu)秀”

Case80to89

Print”良好”

Case70to79

Print”中等”

Case60to69

Print”及格”

Caseelse

Print”不及格”

Endselect

Endsub

(三)練習(xí)

問題3:我們把字符作如下的分類:大寫字母:AZ;小寫字母:az;數(shù)字:09;其它字符。

編寫程序,根據(jù)上述分類的方法,輸入一個(gè)字符,報(bào)告該字符所屬的類型。

六、小結(jié)

與順序結(jié)構(gòu)相比較,選擇結(jié)構(gòu)就是程序的執(zhí)行不再完全按照語句的順序執(zhí)行,而是根據(jù)某種條件是

否成立來決定程序執(zhí)行的走向,它進(jìn)一步體現(xiàn)了計(jì)算機(jī)的智能特點(diǎn)。

在VB語言中,選擇結(jié)構(gòu)通過if語句和selectcase語句這兩個(gè)條件語句來實(shí)現(xiàn),運(yùn)用條件語句的關(guān)

鍵是條件的表示,如果能夠正確地表達(dá)條件,就可以簡化程序,在多重選擇的情況下,使用selectcase

語句,可以使程序更直觀,更準(zhǔn)確地描述出分支的走向。

四、課外拓展

問題4:編一個(gè)程序,輸入三個(gè)數(shù),輸出其中的最大數(shù)。

問題5:自已上網(wǎng)查資料,搜集有關(guān)氣象風(fēng)級表的資料,比如說0級是屬于無風(fēng),12級是屬于颶

風(fēng)等,試編寫程序,輸入一個(gè)風(fēng)級,輸出相應(yīng)的概況,名稱,速度等。

31

第八課程序的循環(huán)結(jié)構(gòu)

一、教學(xué)目標(biāo)

1、知識與技能

掌握循環(huán)結(jié)構(gòu)編程的一般步驟及特點(diǎn)。(1)掌握VB語言的FOR循環(huán)語句、語句的格式、功能和執(zhí)

行過程;(2)掌握VB語言的循環(huán)嵌套的規(guī)則。培養(yǎng)和提升學(xué)生:(1)學(xué)會使用VB語言的FOR循環(huán)語

句來實(shí)現(xiàn)循環(huán)控制結(jié)構(gòu),解決實(shí)際問題;(2初步掌握程序調(diào)試運(yùn)行的方法。

2、方法與過程

采用“問題解決教學(xué)法”。

3、情感態(tài)度和價(jià)值觀

(1)經(jīng)歷用計(jì)算機(jī)解決問題的過程,體驗(yàn)成功的快樂。

(2)在老師的指導(dǎo)下,與同學(xué)共同探究問題,讓學(xué)生體驗(yàn)自主學(xué)習(xí)、協(xié)助學(xué)習(xí)的樂趣。

二、重點(diǎn)難點(diǎn)

讓學(xué)生學(xué)會使用VB語言的FOR循環(huán)語句來實(shí)現(xiàn)循環(huán)控制結(jié)構(gòu),解決實(shí)際問題。

三、教學(xué)過程(for循環(huán)結(jié)構(gòu))(2課時(shí))

教學(xué)環(huán)教師活動學(xué)生活動

節(jié)

從袁隆平的超級水稻研究的故事入手,又到學(xué)生邊閱讀邊傾聽。提問:有同學(xué)

“輸出100以內(nèi)的所有偶數(shù)的算術(shù)平方根”的的試圖用以下方法解決:

PrivateSubCommand_Click()

問題出發(fā),激發(fā)學(xué)生學(xué)習(xí)的興趣和熱情,拉開了

本節(jié)教學(xué)的序幕。PrintSqr(2)

PrintSqr(4)

情意

PrintSqr(6)

……

導(dǎo)入

PrintSqr(100)

EndSub

由此老師引入今天的循環(huán)問題:即問題

中包含有重復(fù)執(zhí)行的處理。

1.通過組織學(xué)生探究“輸出100以內(nèi)的所有1.學(xué)生對問題展開分析問題、設(shè)計(jì)

新課講解

偶數(shù)的算術(shù)平方根”的問題、設(shè)計(jì)算法、編寫程算法、編寫程序、調(diào)試程序等用計(jì)算機(jī)

32

序、調(diào)試程序等用計(jì)算機(jī)解決問題的過程:解決問題的探究活動。

PrivateSubCommand_Click()

2.學(xué)生在教師的指導(dǎo)下,閱讀、分

ForI=2To100Step2

析、歸納,完成實(shí)踐任務(wù)。

PrintSqr(I)

NextI

EndSub

讓學(xué)生感到用VB提供的循環(huán)結(jié)構(gòu)語句,能

很簡便地解決循環(huán)問題

2.通過師生共同分析“輸出100以內(nèi)的所有

偶數(shù)的算術(shù)平方根”問題的程序,歸納總結(jié)VB

語言的FOR循環(huán)語句的格式、功能、執(zhí)行過程,

以及書寫的注意事項(xiàng),歸納總結(jié)VB語言的for

循環(huán)特點(diǎn)。

For循環(huán)變量=初值To終值Step步長

語句組3.學(xué)生對老師所提問題(分別求甲、

Next循環(huán)變量乙、丙三位同學(xué)的語文、數(shù)學(xué)、英語三

3.老師提出上機(jī)實(shí)踐問題:分別求甲、乙、科的平均分)展開分析問題、設(shè)計(jì)算法、

丙三位同學(xué)的語文、數(shù)學(xué)、英語三科的平均分。編寫程序、調(diào)試程序等用計(jì)算機(jī)解決問

要求學(xué)生展開分析問題、設(shè)計(jì)算法、編寫程序、題的探究活動。

調(diào)試程序等用計(jì)算機(jī)解決問題的探究活動。

4.學(xué)生在教師的指導(dǎo)下,閱讀、分

4、要求學(xué)生課堂練習(xí):指出所列程序中的錯(cuò)析、歸納,完成實(shí)踐任務(wù)。

誤,加強(qiáng)知識學(xué)習(xí)和把握。5、要求學(xué)生完成上機(jī)練習(xí),老師巡

5、上機(jī)練習(xí):(1)P53實(shí)踐2視幫助學(xué)生完成任務(wù)。

(2)求1×3×5×……×19的值。6、要求學(xué)生上機(jī)練習(xí)P56的實(shí)踐

6、由問題“已知m個(gè)學(xué)生進(jìn)行n個(gè)科目的(1)、

考試,請計(jì)算每個(gè)同學(xué)的平均分。”引出循環(huán)嵌

(2),老師巡視幫助學(xué)生完成任務(wù)。

套的問題,幫助學(xué)生分析學(xué)會嵌套的技巧與方

33

法:

PrivateSubCommand1_Click()

DimmAsInteger,nAsInteger,iAs

Integer

DimfenAsSingle,sumAsSingle,

averageAsSingle

m=InputBox("請輸入學(xué)生人數(shù):")

n=InputBox("考試科目數(shù):")

Fori=1Tom

sum=0

Forj=1Ton

fen=Val(InputBox("請輸入第"+

Str$(i)+"個(gè)同學(xué)第"+Str$(j)+"科"))

sum=sum+fen

Nextj

average=sum/n

Print"第";i;"同學(xué)平均分:";average

Nexti

EndSub

通過對以上程序的分析和程序執(zhí)行過程,使

學(xué)生能真領(lǐng)會和把握這一編程技巧。

拓展

由要求學(xué)生求

圖形的輸出問題加深學(xué)生對循環(huán)嵌套的問題的的圖形。老師巡視幫助學(xué)生完成任務(wù)。

把握,幫助學(xué)生分析學(xué)會嵌套的技巧與方法:

34

小結(jié)VB語言的FOR循環(huán)語句、格式、功能和執(zhí)行過程,以及for循環(huán)嵌套。

教師在布置課本的練習(xí):P59(1)、(2),指導(dǎo)學(xué)生根據(jù)本節(jié)所學(xué)的知識,分析問題,設(shè)

練習(xí)

計(jì)算法,編程求解問題。

(Do循環(huán)結(jié)構(gòu))

一、重點(diǎn)難點(diǎn)

讓學(xué)生學(xué)會使用VB語言的do循環(huán)語句來實(shí)現(xiàn)循環(huán)控制結(jié)構(gòu),解決實(shí)際問題;以及幾種不同do循

環(huán)結(jié)構(gòu)的比較異同。

二、教學(xué)過程(Do循環(huán)結(jié)構(gòu))

教學(xué)環(huán)教師活動學(xué)生活動

節(jié)

情意從“陳婷植樹”的故事入手,激發(fā)學(xué)生學(xué)習(xí)學(xué)生邊閱讀邊傾聽。

的興趣和熱情,拉開了本節(jié)教學(xué)的序幕。

導(dǎo)入

1.通過組織學(xué)生探究“陳婷植樹”的問題、設(shè)1.學(xué)生對問題展開分析問題、設(shè)計(jì)算

計(jì)算法、編寫程序、調(diào)試程序等用計(jì)算機(jī)解決問法、編寫程序、調(diào)試程序等用計(jì)算機(jī)解

題的過程:決問題的探究活動。

PrivateSubCommand1_Click()

2.學(xué)生在教師的指導(dǎo)下,閱讀、分析、

DimAgeAsInteger,TreeAs

歸納,完成實(shí)踐任務(wù)。

Integer

Age=17

Tree=3

新課

Do

講解

Age=Age+1

Tree=Tree+Age-14

LoopUntilTree>=100

Print"到";Age;"歲時(shí)種到";

Tree;"棵樹!"

EndSub

2.通過師生共同分析“陳婷植樹”問題的程序,3.學(xué)生對老師所提問題展開分析問題、

35

歸納總結(jié)VB語言的DO循環(huán)語句的格式、功能、設(shè)計(jì)算法、編寫程序、調(diào)試程序等用計(jì)

執(zhí)行過程,以及書寫的注意事項(xiàng),歸納總結(jié)VB算機(jī)解決問題的探究活動。

語言的DO循環(huán)特點(diǎn)。

3.老師提出思考題:已知s=1×3×5×…×N,找4.學(xué)生在教師的指導(dǎo)下,閱讀、分析、

出一個(gè)最大整數(shù)N,使得S<50000。要求學(xué)生展歸納,完成實(shí)踐任務(wù)。

開分析問題、設(shè)計(jì)算法、編寫程序、調(diào)試程序等

5、要求學(xué)生上機(jī)練習(xí)共同探討P58的

用計(jì)算機(jī)解決問題的探究活動。

交流,得出使用DO循環(huán)的技巧和心得。

4、上機(jī)練習(xí):P54實(shí)踐(1)、(2)

5、對幾種DO循環(huán)的比較分析:歸納總結(jié)出各自

不同的特點(diǎn)的把握要素,使同學(xué)們能運(yùn)用自如。

設(shè)立一些由人力解決較困難的問題,要求學(xué)生運(yùn)要求學(xué)生能設(shè)計(jì)出算法及編寫出程序。

拓展用所學(xué)編程知識去解決,比如:判斷一個(gè)大數(shù)是

否為素?cái)?shù)等問題。

小結(jié)VB語言的DO循環(huán)語句、格式、功能和執(zhí)行過程,以及幾種不同DO循環(huán)的比較。

教師在布置課本的練習(xí):P59(5),指導(dǎo)學(xué)生根據(jù)本節(jié)所學(xué)的知識,分析問題,設(shè)計(jì)算法,

練習(xí)

編程求解問題。

36

第九課模塊化程序設(shè)計(jì)

一、教學(xué)目標(biāo)

(1)理解自頂而下、逐步求精的程序設(shè)計(jì)方法;

(2)掌握VB語言的過程與函數(shù)的定義和調(diào)用方法。

(3)理解模塊化程序設(shè)計(jì)的基本思想。

二、重點(diǎn)難點(diǎn)

教學(xué)重點(diǎn):

讓學(xué)生學(xué)會使用VB語言的過程與函數(shù)的定義和調(diào)用方法。

教學(xué)難點(diǎn):

理解模塊化程序設(shè)計(jì)的基本思想,并運(yùn)用于程序設(shè)計(jì)中。

三、教學(xué)過程(2課時(shí))

教學(xué)環(huán)教師活動學(xué)生活動

節(jié)

從歌德巴赫猜想的故事入手,驗(yàn)證歌德巴赫學(xué)生邊閱讀邊傾聽。

猜想,激發(fā)學(xué)生學(xué)習(xí)的興趣和熱情,通過先看P61

情意

的程序2-9A觀查此程序有沒有功能重復(fù)的地方,

導(dǎo)入

如何才能省略書寫……并且反復(fù)調(diào)用同一功能

的程序代碼呢拉開本節(jié)教學(xué)的序幕。

1.通過組織學(xué)生探究“驗(yàn)證歌德巴赫猜想”問1.學(xué)生對“驗(yàn)證歌德巴赫猜想”

題,引導(dǎo)學(xué)生經(jīng)歷分析問題、設(shè)計(jì)算法、編寫程問題展開分析問題、設(shè)計(jì)算法、

序、調(diào)試程序等用計(jì)算機(jī)解決問題的過程;歸納編寫程序、調(diào)試程序等用計(jì)算機(jī)

總結(jié)自頂而下、逐步求精的程序設(shè)計(jì)方法;解決問題的探究活動。

2.通過師生共同分析“驗(yàn)證歌德巴赫猜想”的2.學(xué)生在教師的指導(dǎo)下,閱讀、

新課另一個(gè)程序,歸納總結(jié)VB語言的過程與函數(shù)的分析、歸納,完成實(shí)踐任務(wù)。

講解定義和調(diào)用方法。3.學(xué)生對“求五邊形的面積”

3.通過師生共同分析“求五邊形的面積”程序,問題展開分析問題、設(shè)計(jì)算法、

歸納總結(jié)模塊化程序設(shè)計(jì)的基本思想。編寫程序、調(diào)試程序等用計(jì)算機(jī)

解決問題的探究活動。

4、要求學(xué)生求三個(gè)數(shù)的平均數(shù)。(用自定義函4.學(xué)生在教師的指導(dǎo)下,閱讀、

數(shù)及自定義子過程)分析、歸納,完成實(shí)踐任務(wù)。

37

1、求園的面積,已知半徑為1、3、5、7、9、11。(調(diào)用函數(shù)方法)

拓展2、調(diào)用子程序,使第一行打印20個(gè)*,第二行打印10個(gè)*,第三行打印20個(gè)*。

引導(dǎo)學(xué)生利用函數(shù)及子程序解決較復(fù)雜問題,體會利用函數(shù)及子程序的好處。

1.自頂而下、逐步求精的程序設(shè)計(jì)方法;

小結(jié)2.VB語言的過程與函數(shù)的定義和調(diào)用方法;

3.模塊化程序設(shè)計(jì)的基本思想。

指導(dǎo)學(xué)生根據(jù)本節(jié)所學(xué)的知識,完成求任意四邊形的面積問題,要求他們能分

練習(xí)

析問題,設(shè)計(jì)算法,編程求解問題。

38

第十課遞歸算法的實(shí)現(xiàn)

一、教學(xué)目標(biāo)

1、知識與技能:

理解什么是遞歸算法,學(xué)生會用遞歸算法的思想分析問題

能夠應(yīng)用自定義函數(shù)方法實(shí)現(xiàn)遞歸算法的編程

2、過程與方法:

學(xué)生參與討論,通過思考、動手操作,體驗(yàn)遞歸算法的方法

3、情感態(tài)度與價(jià)值:

結(jié)合數(shù)學(xué)中的實(shí)例,激發(fā)學(xué)生的數(shù)學(xué)建模的意識,培養(yǎng)學(xué)生多維度的思考問題和解決問題。

『教學(xué)目標(biāo)設(shè)計(jì)的合理、準(zhǔn)確。這也是在意料之中的,一般情況下,成功的教學(xué)任務(wù)分析一定會帶

來成功的教學(xué)目標(biāo)設(shè)計(jì)。』

二、重點(diǎn)難點(diǎn)

重點(diǎn):理解什么是遞歸算法,學(xué)生用遞歸算法的思想分析問題;

應(yīng)用自定義函數(shù)方法實(shí)現(xiàn)遞歸算法的編程

難點(diǎn):應(yīng)用自定義函數(shù)方法實(shí)現(xiàn)遞歸算法的編程

『大部分教師在確立教學(xué)重、難

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論