

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> (二零 屆)</b></p><p> 梵塔動(dòng)畫演示的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 所在學(xué)院 </p><p> 專業(yè)班級 計(jì)算機(jī)科學(xué)與技術(shù) </p>
2、<p> 學(xué)生姓名 學(xué)號 </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 目錄</b></p><p><b&g
3、t; 1 引言5</b></p><p> 1開發(fā)環(huán)境的選擇5</p><p> 1.1操作系統(tǒng)的選擇5</p><p> 1.2開發(fā)工具的選擇6</p><p> 2 問題的提出10</p><p> 3 他人的研究成果11</p><p> 3.1教學(xué)
4、目標(biāo)11</p><p> 3.1.1知識與技能12</p><p> 3.1.2過程與方法14</p><p> 3.3教學(xué)內(nèi)容分析15</p><p> 3.4教學(xué)方法15</p><p> 3.5教學(xué)過程設(shè)計(jì)15</p><p> 3.6教學(xué)總結(jié)16</p&
5、gt;<p> 4本課件詳細(xì)設(shè)計(jì)16</p><p> 4.1 本課件模塊功能與實(shí)現(xiàn)16</p><p> 4.2 本課件模塊功能與實(shí)現(xiàn)17</p><p> 4.3本課件知識點(diǎn)部分23</p><p> 5.本課件解決問題的可能性23</p><p><b> 6.結(jié)束語
6、23</b></p><p> 謝辭錯(cuò)誤!未定義書簽。</p><p><b> 參考文獻(xiàn)24</b></p><p> 摘要 本課件采用了理論知識與實(shí)際動(dòng)畫相結(jié)合的方式,具體的講解了“算法的程序?qū)崿F(xiàn)”這一節(jié)的內(nèi)容,并用遞歸算法實(shí)現(xiàn)了漢諾塔問題程序設(shè)計(jì)。其中漢諾塔問題的程序采用動(dòng)畫的方式,幫助學(xué)生接受知識,培養(yǎng)學(xué)生的分析
7、問題的能力,提高學(xué)習(xí)算法的興趣。使用了Visual Basic 6.0軟件開發(fā)了此課件。</p><p> 本文主要闡述的內(nèi)容是“漢諾塔問題算法”教學(xué)課件的教學(xué)設(shè)計(jì)和開發(fā)過程,設(shè)計(jì)軟件為Visual Basic 6.0。在文章當(dāng)中包括問題的提出、他人的成果研究、教學(xué)設(shè)計(jì)、課件設(shè)計(jì)、問題解決等六部分。</p><p> 關(guān)鍵詞 Visual Basic、漢諾塔、教學(xué)設(shè)計(jì)、課件、信息技術(shù)&
8、lt;/p><p> Design and Implementation of Tower of Hanoi Animation</p><p> Abstract: This courseware uses theoretical knowledge and practical way of combining animation, concrete explanation of the
9、 "algorithm program to achieve " the contents of this section, and the Tower of Hanoi recursive algorithm program design issues. Tower of Hanoi problem in which the program uses animation methods to help studen
10、ts acquire knowledge, to develop students ability to analyze problems and improve the learning algorithm of interest. Use the Visual Basic 6.0 software developed this c</p><p> This article focuses is on &q
11、uot;Tower of Hanoi Problem to" instructional design and courseware development process, design software for the Visual Basic 6.0. In the article, including issues raised, the results of others research, instructiona
12、l design, courseware design, problem solving and other six parts.</p><p> Key words: Visual Basic; Tower of Hanoi; instructional design; courseware; information technology</p><p><b> 引言&
13、lt;/b></p><p> 在計(jì)算機(jī)算法設(shè)計(jì)中,使用遞歸技術(shù)往往使函數(shù)的定義和算法的描述簡捷且易于理解。有些數(shù)據(jù)結(jié)構(gòu)如二叉樹等由于其本身固有的遞歸特性,特別適合用遞歸的形式來描述。還有一些問題,雖然其本身并沒有明顯的遞歸結(jié)構(gòu),但用遞歸技術(shù)來求解使設(shè)計(jì)出的算法簡潔、易懂。因此深入掌握遞歸技術(shù)在算法設(shè)計(jì)過程中可以設(shè)計(jì)出更加有效的算法[2]。</p><p> 簡單地說,遞歸就是用
14、自己定義自己。使用遞歸方法構(gòu)造算法的基本思路是:當(dāng)求解規(guī)模為n的問題時(shí),先將其分解成若干個(gè)規(guī)模較小的與原問題具有相同特征的子問題,并找出子問題與原問題之間的組合關(guān)系,最后根據(jù)具體問題構(gòu)造出遞歸算法。</p><p> 遞歸算法的執(zhí)行過程分“遞推”和“回歸”兩個(gè)階段。在遞推階段,把較復(fù)雜問題(如:規(guī)模為n)的求解推理至較原問題簡單一些的問題(如規(guī)模為n-1)的求解;在回歸階段,把遞推結(jié)束時(shí)所得到的解,逐級返回,依
15、次得到稍復(fù)雜問題的解,最終得到原問題的解[3]。</p><p> Hanoi塔問題是一個(gè)典型的適合于利用遞歸技術(shù)得到簡潔算法的例子。Hanoi塔問題源自約19世紀(jì)末在歐洲出現(xiàn)的一種游戲,游戲中首先在一塊銅板上放置三根柱子,在第一根柱子上自上而下、由小到大順序串著64個(gè)盤子。游戲的目標(biāo)是最后將所有盤子從第一根柱子上移到第三根柱子上,移動(dòng)過程中可以用第二根柱子過渡。游戲規(guī)定一次只能移動(dòng)一個(gè)盤子,并且任何時(shí)刻不允許
16、大盤放在小盤的上面。</p><p> 現(xiàn)在就給出關(guān)于漢諾塔問題的程序,讓其將漢諾塔問題的執(zhí)行過程動(dòng)態(tài)演示出來,以幫助讀者加深理解遞歸技術(shù)。</p><p> 1 開發(fā)環(huán)境的選擇</p><p> 1.1操作系統(tǒng)的選擇</p><p> 現(xiàn)在主流的操作系統(tǒng)有Windows和Linux,最近Linux的發(fā)展很快,在界面上的友好度上面已
17、經(jīng)做的越來越好了,據(jù)說在穩(wěn)定性上面已經(jīng)超過了Windows操作系統(tǒng)。但是Linux操作系統(tǒng)用的比較多的還是服務(wù)器的版本,在桌面上的普及始終還是不如Windows,而且Windows的操作更加的傻瓜化,可以這么Windows操作系統(tǒng)更加的適合于入門的用戶,而且我們也知道現(xiàn)在學(xué)校里幾乎上使用的都是Windows 操作系統(tǒng),所以使用Windows操作系統(tǒng)變成了我們的首選。</p><p> 1.2開發(fā)工具的選擇<
18、;/p><p> 制作課件,選擇一個(gè)好的編程工具往往能起到事半功倍的效果。目前用于多媒體開發(fā)的主要有Visual Basic、AUTHORWARE和Flash等,Visual Basic 6.0作為一門可視化的高級編程語言在交互性處理和對系統(tǒng)的訪問能力上有其自身獨(dú)特的優(yōu)勢。</p><p> 現(xiàn)在,市場上可以選購的應(yīng)用開發(fā)產(chǎn)品很多,流行的也有數(shù)十種。目前在我國市場上最為流行、使用最多、最為
19、先進(jìn)的可用作企業(yè)級開發(fā)工具的產(chǎn)品有:</p><p> Microsoft公司的Visual Basic</p><p> Microsoft公司的Visual C</p><p> Borland公司的Delphi </p><p> Powersoft公司的PowerBulider</p><p><
20、b> Java等</b></p><p> 在目前市場上這些眾多的程序開發(fā)工具中,有些強(qiáng)調(diào)編程語言的彈性與執(zhí)行效率;有些則偏重于可視化程序開發(fā)工具所帶來的便利性與效率的得高,各有各的優(yōu)點(diǎn)和特色,也滿足了不同用戶的需求。然而,語言的彈性和工具的便利性是密不可分的,只有便利的工具,卻沒有彈性的語言作支持,許多特殊化的處理動(dòng)作必需要耗費(fèi)數(shù)倍的工夫來處理,使得原來所標(biāo)榜的效率提高的優(yōu)點(diǎn)失去了作用;相
21、反,如果只強(qiáng)調(diào)程語言的彈性,卻沒有便利的工具作配合,會(huì)使一些即使非常簡單的界面處理動(dòng)作,也會(huì)嚴(yán)重地浪費(fèi)程序設(shè)計(jì)師的寶貴時(shí)間。</p><p> 作為數(shù)據(jù)庫系統(tǒng)的開發(fā),Visual Basic是一個(gè)非常理想選擇。數(shù)據(jù)庫是MIS中的重要支持技術(shù),在MIS開發(fā)過程中,如何選擇數(shù)據(jù)庫管理是一個(gè)重要的問題,目前,數(shù)據(jù)庫產(chǎn)品較多,每種產(chǎn)品都具有各自的特點(diǎn)和適用范圍,因此,在選擇數(shù)據(jù)庫時(shí),應(yīng)考慮數(shù)據(jù)庫應(yīng)用的特點(diǎn)及適用范圍,本
22、系統(tǒng)選用的數(shù)據(jù)庫語言Visual Basic語言,該開發(fā)工具具有很多長處:</p><p> Visual Basic是一種可視化的、面對對象和條用事件驅(qū)動(dòng)方式的結(jié)構(gòu)化高級程序設(shè)計(jì),可用于開發(fā)Windows環(huán)境下的種類應(yīng)用程序。它簡單易學(xué)、效率高,且功能強(qiáng)大,可以與Windows的專業(yè)開發(fā)工具SDK相媲美,而且程序開發(fā)人員不必具有C/C++編程基礎(chǔ)[1]。在Visual Basic環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制
23、、新穎易用的可視化設(shè)計(jì)工具,使用Windows內(nèi)部的應(yīng)用程序接口(API)函數(shù),以及動(dòng)態(tài)鏈接庫(DLL)、動(dòng)態(tài)數(shù)據(jù)交換(DDE)、對象的鏈接與嵌入(OLE)、開放式數(shù)據(jù)訪問(ODBC)等技術(shù),可以高效、快速地開發(fā)出Windows環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件系統(tǒng)。</p><p> 1.2.1 Visual Basic的特點(diǎn)</p><p> 總的來說,Visual Basic
24、具有以下特點(diǎn):</p><p><b> 1、可視化編程:</b></p><p> 用傳統(tǒng)程序設(shè)計(jì)語言設(shè)計(jì)程序時(shí),都是通過編寫程序代碼來設(shè)計(jì)用戶界面,在設(shè)計(jì)過程中看不到界面的實(shí)際顯示效果,必須編譯后運(yùn)行程序才能觀察。如果對界面的效果不滿意,還要回到程序中修改。有時(shí)候,這種編程-編譯-修改的操作可能要反復(fù)多次,大大影響了軟件開發(fā)效率。Visual Basic提供了
25、可視化設(shè)計(jì)工具,把Windows界面設(shè)計(jì)的復(fù)雜性“封裝”起來,開發(fā)人員不必為界面設(shè)計(jì)而編寫大量程序代碼。只需要按設(shè)計(jì)要求的屏幕布局,用系統(tǒng)提供的工具,在屏幕上畫出各種“部件”,即圖形對象,并設(shè)置這些圖形對象的屬性。Visual Basic自動(dòng)產(chǎn)生界面設(shè)計(jì)代碼,程序設(shè)計(jì)人員只需要編寫實(shí)現(xiàn)程序功能的那部分代碼,從而可以大大提高程序設(shè)計(jì)的效率。</p><p> 1.2.2 面向?qū)ο蟮某绦蛟O(shè)計(jì)</p>
26、<p> 4.0版以后的Visual Basic支持面向?qū)ο蟮某绦蛟O(shè)計(jì),但它與一般的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言(C++)不完全相同。在一般的面向?qū)ο蟪绦蛟O(shè)計(jì)語言中,對象由程序代碼和數(shù)據(jù)組成,是抽象的概念;而Visual Basic則是應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP),把程序和數(shù)據(jù)封裝起來作為一個(gè)對象,并為每個(gè)對象賦予應(yīng)有的屬性,使對象成為實(shí)在的東西。在設(shè)計(jì)對象時(shí),不必編寫建立和描述每個(gè)對象的程序代碼,而是用工具畫在界面上,V
27、isual Basic自動(dòng)生成對象的程序代碼并封裝起來。每個(gè)對象以圖形方式顯示在界面上,都是可視的[4]。</p><p> 1.2.3結(jié)構(gòu)化程序設(shè)計(jì)語言</p><p> Visual Basic是在BASIC語言的基礎(chǔ)上發(fā)展起來的,具有高級程序設(shè)計(jì)語言的語句結(jié)構(gòu),接近于自然語言和人類的邏輯思維方式。Visual Basic語句簡單易懂,其編輯器支持彩色代碼,可自動(dòng)進(jìn)行語法錯(cuò)誤檢查,
28、同時(shí)具有功能強(qiáng)大且使用靈活的調(diào)試器和編譯器[5]。</p><p> Visual Basic是解釋型語言,在輸入代碼的同時(shí),解釋系統(tǒng)將高級語言分解翻譯成計(jì)算機(jī)可以識別的機(jī)器指令,并判斷每個(gè)語句的語法錯(cuò)誤。在設(shè)計(jì)Visual Basic程序的過程中,隨時(shí)可以運(yùn)行程序,而在整個(gè)程序設(shè)計(jì)好之后,可以編譯生成可執(zhí)行文件(.EXE),脫離Visual Basic環(huán)境,直接在Windows環(huán)境下運(yùn)行[6][7]。<
29、/p><p> 1、事件驅(qū)動(dòng)編程機(jī)制</p><p> Visual Basic通過事件來執(zhí)行對象的操作。一個(gè)對象可能會(huì)產(chǎn)生多個(gè)事件,每個(gè)事件都可以通過一段程序來響應(yīng)。例如,命令按鈕是一個(gè)對象,當(dāng)用戶單擊該按鈕時(shí),將產(chǎn)生一個(gè)“單擊“(CLICK)事件,而在產(chǎn)生該事件時(shí)將執(zhí)行一段程序,用來實(shí)現(xiàn)指定的操作。[8]</p><p> 在用Visual Basic設(shè)計(jì)大型
30、應(yīng)用軟件時(shí),不必建立具有明顯開始和結(jié)束的程序,而是編寫若干個(gè)微小的子程序,即過程。這些過程分別面向不同的對象,由用戶操作引發(fā)某個(gè)事件來驅(qū)動(dòng)完成某種特定的功能,或者由事件驅(qū)動(dòng)程序調(diào)用通用過程來執(zhí)行指定的操作,這樣可以方便編程人員,提高效率。[9]</p><p><b> 2、訪問數(shù)據(jù)庫</b></p><p> Visual Basic具有強(qiáng)大的數(shù)據(jù)庫管理功能,利
31、用數(shù)據(jù)控件和數(shù)據(jù)庫管理窗口,可以直接建立或處理Microsoft Access格式的數(shù)據(jù)庫,并提供了強(qiáng)大的數(shù)據(jù)存儲(chǔ)和檢索功能。同時(shí),Visual Basic還能直接編輯和訪問其他外部數(shù)據(jù)庫,如dBASE,F(xiàn)oxPro,Paradox等,這些數(shù)據(jù)庫格式都可以用Visual Basic編輯和處理。[10]</p><p> Visual Basic提供開放式數(shù)據(jù)連接,即ODBC功能,可通過直接訪問或建立連接的方式使
32、用并操作后臺大型網(wǎng)絡(luò)數(shù)據(jù)庫,如SQL Server,Oracle等。在應(yīng)用程序中,可以使用結(jié)構(gòu)化查詢語言SQL數(shù)據(jù)標(biāo)準(zhǔn),直接訪問服務(wù)器上的數(shù)據(jù)庫,并提供了簡單的面向?qū)ο蟮膸觳僮髦噶詈投嘤脩魯?shù)據(jù)庫訪問的加鎖機(jī)制和網(wǎng)絡(luò)數(shù)據(jù)庫的SQL的編程技術(shù),為單機(jī)上運(yùn)行的數(shù)據(jù)庫提供了SQL網(wǎng)絡(luò)接口,以便在分布式環(huán)境中快速而有效地實(shí)現(xiàn)客戶/服務(wù)器(client/server)方案。[11]</p><p> 3、動(dòng)態(tài)數(shù)據(jù)交換(DD
33、E)</p><p> 利用動(dòng)態(tài)數(shù)據(jù)交換(Dynamic Data Exchange)技術(shù),可以把一種應(yīng)用程序中的數(shù)據(jù)動(dòng)態(tài)地鏈接到另一種應(yīng)用程序中,使兩種完全不同的應(yīng)用程序建立起一條動(dòng)態(tài)數(shù)據(jù)鏈路。當(dāng)原始數(shù)據(jù)變化時(shí),可以自動(dòng)更新鏈接的數(shù)據(jù)。Visual Basic提供了動(dòng)態(tài)數(shù)據(jù)交換的編程技術(shù),可以在應(yīng)用程序中與其他Windows應(yīng)用程序建立動(dòng)態(tài)數(shù)據(jù)交換,在不同的應(yīng)用程序之間進(jìn)行通信。[13]</p>
34、<p> 4、對象的鏈接與嵌入(OLE)</p><p> 對象的鏈接與嵌入(OLE)將每個(gè)應(yīng)用程序都看做是一個(gè)對象(object),將不同的對象鏈接(link)起來,再嵌入(embed)某個(gè)應(yīng)用程序中,從而可以得到具有聲音、影像、圖像、動(dòng)畫、文字等各種信息的集合式的文件。OLE技術(shù)是Microsoft公司對象技術(shù)的戰(zhàn)略,它把多個(gè)應(yīng)用程序合為一體,將每個(gè)應(yīng)用程序看做是一個(gè)對象進(jìn)行鏈接和嵌入,是一種
35、應(yīng)用程序一體化的技術(shù)。利用OLE技術(shù),可以方便地建立復(fù)合式文檔(compound document),這種文檔由來自多個(gè)不同應(yīng)用程序的對象組成,文檔中的每個(gè)對象都與原來的應(yīng)用程序相聯(lián)系,并可執(zhí)行與原來應(yīng)用程序完全相同的操作。</p><p> 5、動(dòng)態(tài)鏈接庫(DLL)</p><p> Visual Basic是一種高級程序設(shè)計(jì)語言,不具備低級語言的功能,對訪問機(jī)器硬件的操作不太容易實(shí)
36、現(xiàn)。但它可以通過動(dòng)態(tài)鏈接庫技術(shù)將C/C++或匯編語言編寫的程序加入到Visual Basic應(yīng)用程序中,可以像調(diào)用內(nèi)部函數(shù)一樣調(diào)用其他語言編寫的函數(shù)[14]。此外,通過動(dòng)態(tài)鏈接庫,還可以調(diào)用Windows應(yīng)用程序接口(API)函數(shù),實(shí)現(xiàn)SDK所具有的功能。</p><p> 1.2.4面向?qū)ο筌浖_發(fā)</p><p> 面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-Oriented Program
37、ming,簡記為OOP)是VB誕生的基礎(chǔ)。OOP立意于創(chuàng)建軟件重用代碼,具備更好地模擬現(xiàn)實(shí)世界環(huán)境的能力,這使它被公認(rèn)為是自上而下編程的優(yōu)勝者。它通過給程序中加入擴(kuò)展語句,把函數(shù)“封裝”進(jìn)Windows編程所必需的“對象”中。面向?qū)ο蟮木幊陶Z言使得復(fù)雜的工作條理清晰、編寫容易。說它是一場革命,不是對對象本身而言,而是對它們處理工作的能力而言。對象并不與傳統(tǒng)程序設(shè)計(jì)和編程方法兼容,只是部分面向?qū)ο蠓炊鴷?huì)使情形更糟。除非整個(gè)開發(fā)環(huán)境都是面向
38、對象的,否則對象產(chǎn)生的好處還沒有帶來的麻煩多。而Delphi是完全面向?qū)ο蟮模@就使得VB成為一種觸手可及的促進(jìn)軟件重用的開發(fā)工具,從而具有強(qiáng)大的吸引力</p><p> 1.2.5 VB中的錯(cuò)誤處理</p><p> 系統(tǒng)運(yùn)行難免有錯(cuò)誤,比如說系統(tǒng)的可使用內(nèi)容不夠了,即使我們的代碼沒有錯(cuò)誤,也將不能運(yùn)行,但是如果不能運(yùn)行就非法退出的話,我想對于客戶是不能接受的,至少也該來個(gè)系統(tǒng)內(nèi)存不
39、足的提示,給客戶一些好的建議,我想客戶肯定會(huì)非常滿意的。不知不覺就會(huì)提高你產(chǎn)品的形象,必定顧客是上帝,我們不可能一點(diǎn)都不顧客戶的感受。所以我們有必要在可能發(fā)生錯(cuò)誤的地方加上我們錯(cuò)誤處理代碼,來捕獲這種錯(cuò)誤了。</p><p> VB的錯(cuò)誤代碼處理非常的簡單,簡單的來說,就是遇見錯(cuò)誤,忽略。另外一種是遇到錯(cuò)誤跳出執(zhí)行。[12]我們來看看典型的兩種方式呀</p><p><b>
40、 比如有如下的代碼:</b></p><p> dim I as Integer</p><p> on error goto Proc_Exit</p><p> 在這里發(fā)生了錯(cuò)誤,則會(huì)直接跳到Proc_Exit后面的代碼執(zhí)行,那么I=I+1就不執(zhí)行了</p><p><b> I=I+1</b>
41、</p><p> Proc_Exit:</p><p><b> 另外一段代碼:</b></p><p> dim I as Integer</p><p> on error Resume next</p><p> 在這里發(fā)生了錯(cuò)誤,繼續(xù)執(zhí)行I=I+1的代碼</p>
42、<p><b> I=I+1</b></p><p> 兩種錯(cuò)誤處理方法都是有不同的使用的地方的,就看我們?nèi)绾戊`活的掌握了。我在這個(gè)系統(tǒng)里主要采用的還是第一種的錯(cuò)誤處理。</p><p><b> 5、系統(tǒng)配置</b></p><p> 為了保證系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運(yùn)行,系統(tǒng)將在一部專
43、用管理機(jī)上做單機(jī)運(yùn)行,應(yīng)該滿足以下的性能需求:</p><p><b> 硬件環(huán)境:</b></p><p> 處理器:Inter Pentium Ⅱ或更高。</p><p><b> 內(nèi)存:128MB。</b></p><p> 硬盤空間:40GB。</p><p>
44、; 光驅(qū):CD-ROM 52X。</p><p> 顯卡:VGA顯示適配器。</p><p><b> 軟件環(huán)境:</b></p><p> 操作系統(tǒng):Windows 98/ME/2000/XP/2003。</p><p><b> 2 問題的提出</b></p><p
45、> Visual Basic(VB)是計(jì)算機(jī)應(yīng)用基礎(chǔ)課程教學(xué)內(nèi)容的重要組成部分,屬于計(jì)算機(jī)編程方面的入門課程。VB語言程序算法可以大大提升程序編寫能力,是學(xué)習(xí)者繼續(xù)深入研究VB語言的基礎(chǔ)。但是VB程序算法概念復(fù)雜、規(guī)則繁多、內(nèi)容抽象。</p><p> 教師目前上課采用單一的案例教學(xué)法而且實(shí)質(zhì)仍是傳統(tǒng)的“灌注式”教學(xué)方法,學(xué)生的思想和思維被束縛在教師規(guī)定的思路和范圍中,學(xué)生在整個(gè)學(xué)習(xí)過程中,缺乏主動(dòng)意識
46、,因而缺乏學(xué)習(xí)興趣。</p><p> 一個(gè)值得大家關(guān)注的問題是:教育研究表明,教育和訓(xùn)練方式得當(dāng)?shù)幕?,思維水平就會(huì)發(fā)展的特別快。反之,如果教育內(nèi)容乏味,措施無力或不當(dāng),就會(huì)貽誤發(fā)展。因此信息技術(shù)教師應(yīng)根據(jù)學(xué)生的思維特征,提出合適的教學(xué)要求。來給學(xué)生以挑戰(zhàn),采用不同的教學(xué)方法,將教育內(nèi)容變得有趣。教師應(yīng)幫助學(xué)生盡力消除主觀性缺陷,養(yǎng)成全面的,理性的思考問題的習(xí)慣。</p><p> 在
47、本教學(xué)動(dòng)畫中,根據(jù)VB程序算法的難易程度以及使用頻率,動(dòng)畫選取了漢諾塔類型算法。</p><p><b> 3 他人的研究成果</b></p><p> 網(wǎng)絡(luò)上有很多種類的算法課件,內(nèi)容較全面的只是用幻燈片做的課件,可幻燈片內(nèi)容太單一,沒有算法實(shí)現(xiàn)的過程。而用其他軟件做的實(shí)際上課中用不了,大部分是內(nèi)容缺乏,不能做到實(shí)現(xiàn)算法的全過程,只是能體現(xiàn)很好動(dòng)畫的效果[15]
48、。筆者在網(wǎng)上搜索了關(guān)于漢諾塔算法設(shè)計(jì)的課件,其中較好的有金陵科技學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系( 本科),2004年4月做的一個(gè)課件。課件是用Flash做的,課件結(jié)構(gòu)清晰,整體動(dòng)態(tài)效果,并對文字部分配音,并可以對1到5盤數(shù)的漢諾塔進(jìn)行演示,另外還有1到5盤數(shù)的漢諾塔進(jìn)行親自移動(dòng)體驗(yàn),并有背景音樂和按鍵聲,是個(gè)很不錯(cuò)的課件。但還有幾個(gè)缺點(diǎn): 內(nèi)容太簡單,沒有和Visual Basic程序相結(jié)合,重點(diǎn)是在FLASH軟件。而這個(gè)課題的重點(diǎn)通過漢諾塔算
49、法的演示學(xué)習(xí)Visual Basic語言。在上述課件的基礎(chǔ)上,將漢諾塔求解過程細(xì)分化,內(nèi)容較全面,用動(dòng)態(tài)的效果使學(xué)生激起學(xué)習(xí)興趣,而且介紹了漢諾塔算法的實(shí)現(xiàn)過程。</p><p><b> 3.1教學(xué)目標(biāo)</b></p><p> 隨著多媒體技術(shù)的發(fā)展,在教育領(lǐng)域中越來越提倡采用生動(dòng)、直觀的教學(xué)手段,尤其是計(jì)算機(jī)輔助教學(xué)軟件CAI(Computer Assiste
50、d Instruction)的出現(xiàn),大大提高了人們學(xué)習(xí)計(jì)算機(jī)知識的興趣。但是在學(xué)習(xí)程序設(shè)計(jì)中遇到的某些問題的數(shù)學(xué)模型,既抽象又復(fù)雜,初學(xué)者很難接受,往往對程序設(shè)計(jì)失去興趣。如查有相應(yīng)的模型能把整個(gè)問題以非常生動(dòng)的形式演示出來,一定能收到較好的教學(xué)效果。</p><p> 信息技術(shù)學(xué)科的重點(diǎn)是讓學(xué)生初步了解信息技術(shù)的用途。對剛剛接觸Visual Basic可視化編程語言的學(xué)生來說,必要打好基礎(chǔ),掌握重點(diǎn)內(nèi)容。因此
51、新課標(biāo)從重點(diǎn)掌握的內(nèi)容、教學(xué)過程和學(xué)生的學(xué)習(xí)欲望制定三維目標(biāo):“知識與能力”“、過程與方法”、“情感、態(tài)度與價(jià)值觀”[16]。 3.1.1 知識與技能</p><p> 3.1.1.1理解算法的概念</p><p> 計(jì)算機(jī)算法是指解決某一問題的運(yùn)算序列。或者說計(jì)算機(jī)算法是問題求解過程的運(yùn)算描述,一個(gè)計(jì)算機(jī)算法由有限條可完全機(jī)械地執(zhí)行的、有確定結(jié)果的指令組成。計(jì)算機(jī)算法可
52、分為兩大類,非數(shù)值運(yùn)算法,非數(shù)值運(yùn)算法。數(shù)值運(yùn)算法的目的是求數(shù)值解,如:求方程的根、矩陣計(jì)算機(jī)、函數(shù)的定積分等。非數(shù)值運(yùn)算算法應(yīng)用十分廣泛:圖書檢索、人事管理、文字處理等。常用的算法設(shè)計(jì)方法有迭代法、遞推法、遞歸法等;非數(shù)值算法有窮舉法、回溯法、遞歸法等。非數(shù)值算法有窮舉法、回溯法、貪心法、分治法等。</p><p> 一個(gè)算法必須具備以下性質(zhì): </p><p> (1)算法首先必須
53、是正確的,即對于任意的一組輸入,包括合理的輸入與不合理的輸入,總能得到預(yù)期的輸出。如果一個(gè)算法只是對合理的輸入才能得到預(yù)期的輸出,而在異常情況下卻無法預(yù)料輸出的結(jié)果,那么它就不是正確的。 </p><p> (2)算法必須是由一系列具體步驟組成的,并且每一步都能夠被計(jì)算機(jī)所理解和執(zhí)行,而不是抽象和模糊的概念。 </p><p> ?。ǎ常┟總€(gè)步驟都有確定的執(zhí)行順序,即上一步在哪里,下一步
54、是什么,都必須明確,無二義性。 </p><p> ?。ǎ矗o論算法有多么復(fù)雜,都必須在有限步之后結(jié)束并終止運(yùn)行,即算法的步驟必須是有限的。在任何情況下,算法都不能陷入無限循環(huán)中。 </p><p> 一個(gè)問題的解決方案可以有多種表達(dá)方式,但只有滿足以上4個(gè)條件的解才能稱之為算法。</p><p><b> 算法與程序的關(guān)系:</b><
55、;/p><p> 雖然算法與計(jì)算機(jī)程序密切相關(guān),但二者也存在區(qū)別:計(jì)算機(jī)程序是算法的一個(gè)實(shí)例,是將算法通過某種計(jì)算機(jī)語言表達(dá)出來的具體形式;同一個(gè)算法可以用任何一種計(jì)算機(jī)語言來表達(dá)。</p><p> 3.1.1.2理解遞歸算法的概念</p><p> 遞歸作為一種算法在程序設(shè)計(jì)語言中廣泛應(yīng)用.是指函數(shù)/過程/子程序在運(yùn)行過程序中直接或間接調(diào)用自身而產(chǎn)生的重入現(xiàn)像
56、.</p><p> 程序調(diào)用自身的編程技巧稱為遞歸( recursion)。 </p><p> 一個(gè)過程或函數(shù)在其定義或說明中又直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。用遞歸思想寫出
57、的程序往往十分簡潔易懂。 </p><p> 一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。 </p><p><b> 注意: </b></p><p> (1) 遞歸就是在過程或函數(shù)里調(diào)用自身; </p><p> (2) 在使用遞增歸策略時(shí),
58、必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口,否則將無限進(jìn)行下去(死鎖)。</p><p> 遞歸算法一般用于解決三類問題:</p><p> (1)數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci函數(shù))</p><p> (2)問題解法按遞歸算法實(shí)現(xiàn)。(回溯)</p><p> (3)數(shù)據(jù)的結(jié)構(gòu)形式是按遞歸定義的。(樹的遍歷,圖的搜索)
59、</p><p><b> 遞歸的缺點(diǎn):</b></p><p> 遞歸算法解題的運(yùn)行效率較低。在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲(chǔ)。遞歸次數(shù)過多容易造成棧溢出等。[17]</p><p> 3.1.1.3了解漢諾塔問題算法的實(shí)現(xiàn)</p><p> 我們把3根寶石柱分別命名為A、B、C
60、。最初有N個(gè)金盤放在A,需要把它們?nèi)堪匆?guī)則移動(dòng)到B。</p><p> 當(dāng)N=1時(shí),直接把金盤從A搬到B就可以了,1次成功。</p><p> 當(dāng)N≥2,那么需要利用C柱來過渡。我們假設(shè)已經(jīng)找到一種把N-1個(gè)金盤從一根柱搬到另外一根柱的方法,那么,我們只要把N-1個(gè)金盤從A搬到C,然后把最大的金盤從A搬到B,最后把C上的N一1個(gè)金盤搬到B就可以了。靠遞歸的思想,我們輕而易舉地完成了整
61、個(gè)搬動(dòng)。</p><p> 我們定義一個(gè)過程Hanoi(N,A,B,C),表示有N個(gè)金盤需要從A柱搬到B柱(以C柱為過渡)。那么完成它只需3步:</p><p> ?、?#160; Hanoi(N一1,A,C,B)它的意思是把A柱上的N一1個(gè)金盤搬到C柱;</p><p> ?、?#160;A→B 它的意思是把一個(gè)(最大的)金盤從A柱搬到B柱;
62、</p><p> ③Hanoi(N-1,C,B,A)它的意思是把c柱上的N一1個(gè)金盤搬到B柱。</p><p><b> 知識補(bǔ)充說明:</b></p><p><b> 過程定義的格式:</b></p><p> Private Sub procedurename(arguments)&
63、lt;/p><p> statements</p><p><b> End Sub</b></p><p> 其中的procedurename是函數(shù)名,arguments是函數(shù)中的參數(shù)表,statements是過程中的代碼</p><p><b> 調(diào)用過程的格式:</b></p>
64、<p> Call procedurename(arguments)</p><p> Function函數(shù)與Sub過程的幾點(diǎn)區(qū)別:</p><p> Function函數(shù)可以返回一個(gè)值到調(diào)用程序。</p><p> ② 一般來說,讓較大的語句或表達(dá)式的右邊包含函數(shù)過程名和參數(shù)(returnvalue=function),這就調(diào)用了函
65、數(shù)。</p><p> ?、?與變量完全一樣,函數(shù)過程有數(shù)據(jù)類型,這就決定了返回值的類型。(如果沒有AS子句,缺省的數(shù)據(jù)類型為Variant。)。</p><p> ?、芙oprocedurename自身賦一個(gè)值,就可返回這個(gè)值。Function函數(shù)返回一個(gè)值可成為較大表達(dá)式的一部分。</p><p> 3.1.2過程與方法</p><p>
66、 能自己動(dòng)手調(diào)試漢諾塔程序,掌握。</p><p> 通過實(shí)例展示使學(xué)生產(chǎn)生好奇心并對漢諾塔程序感興趣。</p><p> 考慮到教學(xué)對象對VB的認(rèn)識還不夠深,前面學(xué)習(xí)了程序設(shè)計(jì)的各種結(jié)構(gòu),在學(xué)習(xí)程序設(shè)計(jì)各種結(jié)構(gòu)的應(yīng)用過程中,培養(yǎng)了用計(jì)算機(jī)編程解決現(xiàn)實(shí)中的問題,特別的學(xué)習(xí)循環(huán)語句的過程中,應(yīng)用了大量的循環(huán)結(jié)構(gòu)進(jìn)行“遞推”算法。前一節(jié)課學(xué)習(xí)了如何自定義函數(shù),在此基礎(chǔ)上學(xué)習(xí)深入學(xué)習(xí)和體會(huì)
67、自定義函數(shù)的應(yīng)用。以遞推算法的逆向思維進(jìn)行求解問題,在學(xué)習(xí)過程中體會(huì)遞歸算法的思想過程。</p><p><b> 3.3教學(xué)內(nèi)容分析</b></p><p> 此設(shè)計(jì)的主題是“遞歸算法的程序?qū)崿F(xiàn)”,前面學(xué)習(xí)了用解析法解決問題、窮舉法解決問題、在數(shù)組中查找數(shù)據(jù)、對數(shù)進(jìn)行排序以及本節(jié)的前一小節(jié)知識點(diǎn)“什么是自定義函數(shù)”的學(xué)習(xí),在學(xué)習(xí)自定義函數(shù)的基礎(chǔ)上,這節(jié)課學(xué)習(xí)遞歸
68、算法的常見問題,漢諾塔問題的求解過程。</p><p><b> 3.4教學(xué)方法</b></p><p> 遞歸算法的實(shí)現(xiàn)思想是比較抽象,比較理論化的教學(xué)內(nèi)容。從Visual Basic培養(yǎng)學(xué)生的發(fā)現(xiàn)問題、分析問題、解決問題的意識與能力入手。知識主要是靠學(xué)生學(xué)會(huì)的,學(xué)習(xí)就是發(fā)生在學(xué)生頭腦的建構(gòu)。因此,教師必須明確學(xué)生是學(xué)習(xí)的主體,研究學(xué)生學(xué)習(xí)的真實(shí)心理活動(dòng),分析其
69、認(rèn)識過程、機(jī)制及心智變化。確定教學(xué)方法。</p><p><b> 3.5教學(xué)過程設(shè)計(jì)</b></p><p><b> 3.6教學(xué)總結(jié)</b></p><p> 通過動(dòng)態(tài)演示漢諾塔過程,使復(fù)雜的遞歸算法形象化,很容易掌握算法的執(zhí)行過程并吸引學(xué)生的注意力,再創(chuàng)設(shè)情境讓學(xué)生深刻感受到算法的思想其實(shí)就在他們身邊事物中體現(xiàn)
70、出來,通過這樣的設(shè)計(jì),學(xué)生在學(xué)習(xí)掌握知識的時(shí)候往往不會(huì)感到枯燥乏味,可以調(diào)動(dòng)他們的積極性,很輕松的接受新知識。</p><p><b> 4本課件詳細(xì)設(shè)計(jì)</b></p><p> 4.1 本課件模塊功能與實(shí)現(xiàn)</p><p> 使用遞歸調(diào)用函數(shù)的方法計(jì)算漢諾塔移動(dòng)的過程可以在很多的程序教材上找到,這是一個(gè)很經(jīng)典的程序演示,但是用動(dòng)畫的方
71、式演示出來需要考慮很多問題。在實(shí)現(xiàn)思路上有兩種方法,第一種方法是邊計(jì)算移動(dòng)過程連描繪移動(dòng)過程,但是由于在遞歸調(diào)用過程中進(jìn)行演示需要中斷遞歸程序方法,控制會(huì)非常復(fù)雜,不利于實(shí)現(xiàn),因此采用另一種方法:先計(jì)算出整個(gè)移動(dòng)過程并記錄下來,再通過演示記錄下來的過程描述漢諾塔的移動(dòng)次序。程序通過遞歸調(diào)用函數(shù)計(jì)算機(jī)整個(gè)移動(dòng)過程,并記錄在數(shù)組中,然后通過計(jì)時(shí)器的觸發(fā),按照一定時(shí)間間隔繪制整個(gè)移動(dòng)過程。為了增加生動(dòng)性,需要詳細(xì)的描述每一個(gè)盤片的移動(dòng)過程,包
72、括盤片的向上移動(dòng)、左右移動(dòng)或向下移動(dòng)。</p><p> 4.2 本課件模塊功能與實(shí)現(xiàn)</p><p> 在課件中窗體之間的調(diào)用是用click()、load()、timer()方法來完成的。 </p><p> 首頁包括了本節(jié)課所有的內(nèi)容, 包含漢諾塔問題演示區(qū)和下拉選項(xiàng)(用于選擇盤數(shù),分別為1、2、3、4、5),一個(gè)開始按鈕和信息提示區(qū)。</p>
73、<p><b> 圖4 課件</b></p><p> Option Explicit</p><p> Dim map(2, 5) As Integer</p><p> Const def = 32767</p><p> Private Sub Combo1_Click()</p&g
74、t;<p> Init Val(Combo1.Text) - 1</p><p><b> End Sub</b></p><p> Private Sub Command1_Click()</p><p> MoveHs (0)</p><p> Label2.Caption = "完
75、成!!"</p><p><b> End Sub</b></p><p> Private Sub Form_Load()</p><p> Dim m As Integer</p><p> For m = 1 To 5</p><p> Combo1.AddItem m&
76、lt;/p><p><b> Next</b></p><p> For m = 1 To 4</p><p> Load Shape1(m)</p><p><b> Next</b></p><p> Combo1.Text = "5"</
77、p><p> Combo1_Click</p><p><b> End Sub</b></p><p> Private Sub MoveHs(ByVal n As Integer)</p><p> Dim m As Integer</p><p> If n = Val(Combo1.
78、Text) - 1 Then</p><p> If Shape1(n).Left < Line1(1).X1 Then</p><p> MoveAction n, 1, 2</p><p> Delays (1)</p><p> MoveAction n, 2, 3</p><p> Delays
79、 (1)</p><p> ElseIf Shape1(n).Left > Line1(2).X1 Then</p><p> MoveAction n, 3, 2</p><p> Delays (1)</p><p> MoveAction n, 2, 1</p><p> Delays (1)&l
80、t;/p><p><b> End If</b></p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> If Shape1(n).Left < Line1(1).X1 Then</p>&l
81、t;p> MoveHs (n + 1)</p><p> MoveAction n, 1, 2</p><p> Delays (1)</p><p> MoveHs (n + 1)</p><p> MoveAction n, 2, 3</p><p> Delays (1)</p>
82、<p> MoveHs (n + 1)</p><p> ElseIf Shape1(n).Left > Line1(2).X1 Then</p><p> MoveHs (n + 1)</p><p> MoveAction n, 3, 2</p><p> Delays (1)</p><p&
83、gt; MoveHs (n + 1)</p><p> MoveAction n, 2, 1</p><p> Delays (1)</p><p> MoveHs (n + 1)</p><p><b> End If</b></p><p><b> End Sub<
84、;/b></p><p> Private Sub Delays(ByVal n As Integer)</p><p> Dim Tstart As Long</p><p> Dim Tend As Long</p><p> Tstart = Timer</p><p> Do While Tim
85、er - Tstart < n</p><p><b> DoEvents</b></p><p><b> Loop</b></p><p><b> End Sub</b></p><p> Private Sub MoveAction(ByVal n As
86、Integer, ByVal s As Integer, ByVal e As Integer)</p><p> Dim locx As Single, locy As Single</p><p> Dim m As Integer</p><p> For m = 0 To 5</p><p> If map(e - 1, m)
87、 = def Then</p><p> Clearmap (n)</p><p> map(e - 1, m) = n</p><p><b> Exit For</b></p><p><b> End If</b></p><p><b> Next
88、</b></p><p> locx = Line1(e).X1 - Shape1(n).Width / 2</p><p> locy = Line1(0).Y1 + Shape1(n).Height * (m + 1)</p><p> Shape1(n).Move locx, locy</p><p> Label2
89、.Caption = "第" & CStr(Val(Mid(Label2.Caption, 2, 1)) + 1) & "步"</p><p><b> DoEvents</b></p><p><b> End Sub</b></p><p> Private
90、 Sub Clearmap(ByVal x As Integer)</p><p> Dim m As Integer, n As Integer</p><p> For m = 0 To 2</p><p> For n = 0 To 5</p><p> If map(m, n) = x Then</p><
91、p> map(m, n) = def</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p><b> Next</b></p><p><b> Next</b></p&g
92、t;<p><b> End Sub</b></p><p> Private Sub Init(ByVal num As Integer)</p><p> Dim m As Integer, n As Integer</p><p> Me.Width = 10000</p><p> Me.
93、Height = 6000</p><p> For m = 1 To 4</p><p> Shape1(m).Visible = False</p><p><b> Next</b></p><p> Picture1.Width = 8000</p><p> Picture1.
94、Height = 5000</p><p> Picture1.Scale (0, Picture1.Height)-(Picture1.Width, 0)</p><p> With Line1(0)</p><p><b> .X1 = 0</b></p><p> .Y1 = Picture1.Height
95、 * 0.05</p><p> .X2 = Picture1.Width</p><p><b> .Y2 = .Y1</b></p><p><b> End With</b></p><p> With Line1(1)</p><p> .X1 = Pict
96、ure1.Width * 0.2</p><p> .Y1 = Picture1.Height * 0.05</p><p><b> .X2 = .X1</b></p><p> .Y2 = Picture1.Height * 0.9</p><p><b> End With</b>&l
97、t;/p><p> With Line1(2)</p><p> .X1 = Picture1.Width * 0.5</p><p> .Y1 = Picture1.Height * 0.05</p><p><b> .X2 = .X1</b></p><p> .Y2 = Pictur
98、e1.Height * 0.9</p><p><b> End With</b></p><p> With Line1(3)</p><p> .X1 = Picture1.Width * 0.8</p><p> .Y1 = Picture1.Height * 0.05</p><p&g
99、t;<b> .X2 = .X1</b></p><p> .Y2 = Picture1.Height * 0.9</p><p><b> End With</b></p><p> With Shape1(0)</p><p> .Width = 1600</p><
100、;p> .Height = 400</p><p> .Left = Line1(1).X1 - .Width / 2</p><p> .Top = Line1(0).Y1 + .Height</p><p><b> End With</b></p><p> For m = 1 To num<
101、/p><p> With Shape1(m)</p><p> .Width = Shape1(m - 1).Width - 300</p><p> .Height = 400</p><p> .Left = Line1(1).X1 - .Width / 2</p><p> .Top = Shape1(m
102、- 1).Top + .Height</p><p> .Visible = True</p><p><b> End With</b></p><p><b> Next</b></p><p> For m = 0 To 2</p><p> For n =
103、0 To 5</p><p> map(m, n) = def</p><p><b> Next</b></p><p><b> Next</b></p><p> For m = 0 To num</p><p> map(0, m) = m</p>
104、;<p><b> Next</b></p><p><b> End Sub</b></p><p> 4.3本課件知識點(diǎn)部分</p><p> 在漢諾塔問題中,每次只能搬動(dòng)一個(gè)盤,同時(shí)被搬動(dòng)的盤只能放在另外兩個(gè)柱子中的一個(gè)柱子上,并且所有柱子上的盤子只能是從小到大。按照遞歸展開的思想,先考慮把規(guī)模
105、為n的問題化解為規(guī)模為(n-1)的問題。</p><p> 5.本課件解決問題的可能性</p><p> (1)本課件是自學(xué)課件,本課件為引起學(xué)生的興趣,主要按鈕都是動(dòng)態(tài)顯示的,因此減少缺乏學(xué)習(xí)興趣的現(xiàn)狀。</p><p> ?。?)在本課件講解漢諾塔程序時(shí)運(yùn)用了動(dòng)態(tài)的演示,使學(xué)生不但理解漢諾塔的過程,也能顯示Visual Basic的強(qiáng)大功能,因而使學(xué)生對程序
106、感興趣。</p><p> ?。?)本課件把漢諾塔內(nèi)容細(xì)分成1至5個(gè)盤數(shù),學(xué)生一目了然,很容易理解各個(gè)重點(diǎn)內(nèi)容,程序部分都標(biāo)注了,所以很容易理解漢諾塔問題。</p><p><b> 6.結(jié)束語</b></p><p> 由于Visual Basic是學(xué)生第一次接觸的程序設(shè)計(jì)語言,他們對“計(jì)算機(jī)語言”的思維方式還不太習(xí)慣,對他們而言Visu
107、al Basic編程環(huán)境和編程過程本身就具有復(fù)雜性,所以只要是學(xué)生首次接觸的控件,語句,語法就是一個(gè)復(fù)雜的問題。關(guān)于有意義的問題情境,在這里筆者認(rèn)為有三層含義:一是符合學(xué)生當(dāng)前認(rèn)知特點(diǎn),學(xué)生感興趣的問題,二是能培養(yǎng)學(xué)生分析問題、解決問題能力的問題,有益于培養(yǎng)學(xué)生交流、協(xié)作能力的問題,三是有利于不同學(xué)習(xí)風(fēng)格學(xué)習(xí)能力的學(xué)生進(jìn)行不同程度挖掘進(jìn)行不同層次學(xué)習(xí)的問題。</p><p><b> 參考文獻(xiàn)<
108、/b></p><p> 1.牛又奇.孫建國.VisualBASIC程序設(shè)計(jì)教程[M].蘇州:蘇州大學(xué)出版社.2007. </p><p> 2.霍紅衛(wèi).算法設(shè)計(jì)與分析[M].西安:西安電子科技大學(xué)出版社.2005. </p><p> 3.苗英愷.遞歸程序的教學(xué)探討[J].電腦知識與技術(shù),2008.2. </p><p> 4
109、.符策銳.基于Visual Basic的遞歸模擬演示程序的實(shí)現(xiàn)[J].電腦開發(fā)與應(yīng)用,2008.5</p><p> 5.田俊華、李藝. “程序設(shè)計(jì)”課程目標(biāo)的認(rèn)知結(jié)構(gòu)解析. “課程教材教法”2005年12期</p><p> 6.劉新民.Visual Basic 6.0程序設(shè)計(jì).清華大學(xué)出版社.2004</p><p> 7.羅朝盛.Visual Basic
110、 程序設(shè)計(jì)教程.人民郵電出版社.2005</p><p> 8.張書云、姜淑菊.程序設(shè)計(jì)教學(xué)方法探悉[J]計(jì)算機(jī)教育.2005.5</p><p> 9 劉萌,周學(xué)明,郭安源.《Visual Basic企業(yè)辦公系統(tǒng)開發(fā)實(shí)例導(dǎo)航》.人民郵電出版社.2003</p><p> 10 求是科技.《Visual Basic 6.0 數(shù)據(jù)庫開發(fā)技術(shù)與工程實(shí)踐》.人民郵電
111、出版社.2004</p><p> 11張瀚文.齊錦剛,《Visual Basic數(shù)據(jù)庫系統(tǒng)開發(fā)實(shí)例與解析》.高等教育出版社.2003</p><p> 12 劉瑞新,汪遠(yuǎn)征.《Visual Basic程序設(shè)計(jì)教程》.機(jī)械工業(yè)出版社.2001</p><p> 13 孟小峰,王珊.《數(shù)據(jù)庫系統(tǒng)導(dǎo)論》.機(jī)械工業(yè)出版社.2000</p><p&
112、gt; 14 Hector Garcia-Molina/Jeffrey.D.ullman,.《Database system inplementation》 .機(jī)械工業(yè)出版社</p><p> 15 C.J.Date.《An introduction to Database System(Seventh Edition)》.機(jī)械工業(yè)出版社</p><p> 16 姚巍.《Visual
113、 Basic數(shù)據(jù)庫開發(fā)及工程實(shí)例》.人民郵電出版社</p><p> 17伍俊良.《VB課程設(shè)計(jì)與系統(tǒng)開發(fā)安例》.清華大學(xué)出版社</p><p><b> 文獻(xiàn)綜述</b></p><p> 梵塔動(dòng)畫演示的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 前言部分</b></p><
114、p><b> 寫作目的: </b></p><p> 介紹了應(yīng)用VB語言實(shí)現(xiàn)動(dòng)畫演示將各個(gè)梵塔中各個(gè)盤子之間的移動(dòng),能夠演示梵塔實(shí)現(xiàn)的每個(gè)步驟。讓人從視覺上和思維上建立起梵塔的實(shí)現(xiàn)形式。方便大家理解其遞歸思想,能夠加深對遞歸算法的理解和記憶。讓大家能夠?qū)τ?jì)算機(jī)在動(dòng)畫的實(shí)現(xiàn)上更深刻的了解和實(shí)用。</p><p> 有關(guān)概念、綜述范圍:</p>
115、<p> 什么是動(dòng)畫:所謂動(dòng)畫,是指利用人的視覺殘留特性使連續(xù)播放的靜態(tài)畫面相互銜接而形成的動(dòng)態(tài)效果。計(jì)算機(jī)動(dòng)畫是由傳統(tǒng)的卡通動(dòng)畫發(fā)展起來的。在傳統(tǒng)卡通動(dòng)畫的制作過程中,導(dǎo)演首先要將劇本分成一個(gè)個(gè)分鏡頭,然后由高級動(dòng)畫師確定各分鏡頭的角色造型,并繪制出一些關(guān)鍵時(shí)刻各角色的造型。最后,由助理動(dòng)畫師根據(jù)這些關(guān)鍵形狀繪制出從一個(gè)關(guān)鍵形狀到下一個(gè)關(guān)鍵形狀的自然過渡,并完成填色及合成工作。最后,依次拍攝這一幀幀連續(xù)畫面,就得到了一段動(dòng)
116、畫片段。 </p><p> 什么是梵塔:梵塔也叫漢諾塔,梵塔問題起源于中東地區(qū)的一個(gè)古老的傳說:在梵城(Hana)地下有一個(gè)僧侶的秘密組織,他們有3個(gè)大型的塔柱,左邊的塔柱上由方到小套著64個(gè)金盤。僧侶們的工作是要把這64個(gè)金盤從左邊塔柱轉(zhuǎn)移到右邊塔柱上去。但轉(zhuǎn)移過程有規(guī)定的:每次只能搬動(dòng)一只盤子,盤子只能在3個(gè)塔柱上安放,不允許放在地上;2、在每個(gè)塔柱上,只允許把小盤子疊在大盤上,反之不允許。</p&
117、gt;<p> 什么是遞歸算法:一個(gè)過程或函數(shù)在其定義或說明中又直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。<
118、;/p><p> 什么是VB:VB是Visual Basic的簡稱,是由美國微軟公司于1991年開發(fā)的一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動(dòng)方式的結(jié)構(gòu)化高級程序設(shè)計(jì)語言,可用于開發(fā) Windows 環(huán)境下的各類應(yīng)用程序。它簡單易學(xué)、效率高,且功能強(qiáng)大可以與 Windows 專業(yè)開發(fā)工具SDK相媲美。在Visual Basic環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制、新穎易用的可視化設(shè)計(jì)工具,使用Windows內(nèi)部的廣泛應(yīng)用程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 梵塔動(dòng)畫演示的設(shè)計(jì)與實(shí)現(xiàn)【文獻(xiàn)綜述】
- 梵塔動(dòng)畫演示的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 梵塔動(dòng)畫演示的設(shè)計(jì)與實(shí)現(xiàn)【開題報(bào)告】
- gps儀的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- linux shell的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 泛洪攻擊設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于matlab webserver的數(shù)值計(jì)算算法演示與實(shí)現(xiàn)【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 圖片文字提取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 網(wǎng)上虛擬試衣系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 高校智能門禁系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 畢業(yè)設(shè)計(jì)開題報(bào)告+文獻(xiàn)綜述.doc
- 在線判題系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 大學(xué)選課系統(tǒng)的分析、設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 校園軟件屋的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 空調(diào)的設(shè)計(jì)與開發(fā)【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 文本表示模型的研究與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 畢業(yè)設(shè)計(jì)開題報(bào)告+文獻(xiàn)綜述.doc
- 基于.net短信發(fā)送平臺的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 網(wǎng)絡(luò)微博系統(tǒng)的設(shè)計(jì)與模擬實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
評論
0/150
提交評論