主題活動是目前信息技術課程教學中常用的一種教學方法,它可以緊密聯系學生學習和生活實際,選擇一個需要解決的實際問題,綜合運用所學的知識與技能,在自主發現問題、提出解決問題方案的過程中,獲取親身體驗,培養解決實際問題的能力。在設計主題活動時,教師應注意以下兩個方面:一是運用知識的綜合性,如在《算法與程序設計》模塊中,選擇的問題應有一定的“規?!?,不宜太小,應能綜合運用所學的知識,以利于學生經歷分析問題、確定算法、編程求解等用程序設計解決問題的基本過程;二是主題活動的項目不宜過多,時間不宜太長。由于每個模塊教學時數有限,大的主題活動耗時較多,學生往往需要在課堂之外,進行必要的準備工作和延續性工作,如資料的搜索、分類和整理,這會占用學生過多的時間和精力。按照這兩個原則,本人設計了《算法與程序設計》模塊的主題活動:幫助理解和掌握結構化程序設計方法的《〈紅樓夢〉的作者是誰》。
介紹
語體風格是人們在語言文字表達活動中的個人語言特征,是人格在語言文字活動中的某種體現。這種風格可以在一定程度上通過數量特征來刻畫。例如,以一定數量語料為基礎的平均句長和平均詞長,字、詞出現的頻率等。對文學作品的語體風格特征進行統計研究,可以確定作品的風格,考證作者的真偽。
《紅樓夢》是我國的古典文學名著,人們一般認為前80回的作者是曹雪芹,后40回是高鶚續寫。近年來,一些專家以計算機為工具,分析這部名著的語體風格特征。1981年,美國威斯康星大學的學者陳炳藻在首屆國際《紅樓夢》研討會上宣讀了《從詞匯上的統計論〈紅樓夢〉作者的問題》的論文,從字、詞出現頻率入手,統計分析了《紅樓夢》前80回與后40回的用詞特點,認為120回均系曹雪芹所作。1987年,復旦大學李賢平教授將《紅樓夢》120回看做一個整體,統計了每回所用的47個虛字(之,其,或,呀,嗎,咧,的,著,是,可,便,就等)出現的頻率,作為《紅樓夢》各回的數字標志,提出了不能籠統地認為前80回為一人所寫、后40回為另一個人所寫的看法。當然,《紅樓夢》的作者究竟是曹雪芹一人,還是曹雪芹和高鶚兩人,還是它原本就是一部在幾本民間小說基礎上合成的長篇小說呢?這還有待于歷史的結論。
任務
學校研究性學習“《紅樓夢》的作者是誰”課題組請你們幫助設計一個程序用于統計每回作品的風格特征,該程序應能完成以下基本任務。
1.總體統計。每回的總字數、不含空格總字數及段落數。
2.字信息統計。能統計輸入的各個字的字數和字頻。
3.按選定的次序(降序或升序)顯示字數和字頻。
過程
1.為了提高工作效率,在較短的時間內完成任務,應組成程序設計小組,小組成員以3~5人為宜,民主協商或選舉產生組長。
2.用計算機解決問題,首先要分析清楚需要解決的問題,也就是說要清楚程序應得出什么輸出信息、已有什么原始數據或輸入信息,以及怎樣處理輸入信息才能得到希望的輸出信息(圖1)。在組長的主持下,全體成員一起討論和分析程序的任務。
輸入信息:
處理:
輸出信息:
對于一個復雜的問題,很難一下子直接找出解決的方法。解決問題的思路是把復雜的大問題分解成多個容易解決的子問題,每個子問題形成一個模塊,直到最小的模塊能容易地被程序設計語言描述出來,其過程用分層結構圖(圖2)表示。這就是自頂向下和逐步細化的結構化程序設計方法。
現在該是你們小組來分解這個程序的時候了,請用分層結構圖表示你們的細化過程。當然,分解的過程并不是一蹴而就的,當采用某種方法分解程序后,看一下效果,然后再用另外一種方法來分解這個程序,看效果是否會好些。在幾次嘗試和往返之后,你們就會找到一個很好的辦法。在Visual Basic程序設計中,分層結構圖中的第一行一般為要求程序作出響應的事件。程序結構確定后,還要確定各個模塊的基本功能,一般應包括模塊的輸入、輸出和主要處理功能,請用簡潔的語言表達出來,數據組織起來才有效率,所以確定程序結構的同時,還應為程序中的數據選擇好的數據結構。
3.確定組內人員分工。組內成員的合理分工、協調配合是活動圓滿成功的基礎。組長負責劃分工作及制訂進度表,協調全組活動。其他成員根據自己的特長和經驗選擇相應的工作,遇到問題可以通過個別交流、研討、文檔等途徑溝通。請填寫表1所示的表格。
4.設計界面。一個好的程序不僅要有強大的功能,還要有美觀實用的界面。程序界面決定了它的可用性和可操作性。界面設計的關鍵是選擇什么對象獲得輸入信息、怎樣顯示輸出信息,以及創建什么按鈕和菜單以便用戶控制程序。設計之初,在設計卡(圖3)上大致構思一下是非常有益的。
5.確定完成程序界面需要設計的屬性。
6.接下來需要解決怎樣實現各個模塊功能的問題了。在使用程序設計語言編寫代碼之前,我們要詳細分析實現各個模塊功能的算法,使用恰當的工具把它表達出來,使它成為編碼的依據。我們可以參考學習過的一些基本算法,也可以搜索因特網上關于算法的文章,看有多少種算法可供選擇。如果想使用某種已有的算法,切記要對其作出改進以適合你的程序。表2是實現程序各模塊功能的Visual Basic過程,分析你所承擔模塊的算法,給出以下說明:功能、參數、返回值、算法描述(用自然語言或N-S流程圖詳細描述采用的算法)。
7.編寫代碼。這一階段,主要是根據前一步設計出的算法和Visual Basic知識編寫代碼,并輸入到計算機中。
8.調試程序。編寫程序過程中,會由于疏忽或考慮不周使程序出現各種各樣的錯誤,如忘記了初始化某個變量、用錯了操作符、算法錯誤等,找出并改正錯誤的過程就稱為調試。當輸入代碼時,VB編輯器會發現程序中存在的語法錯誤,提示你對出錯處進行修改,但是并不能發現運行時才發生的錯誤,或得不到期望結果的邏輯錯誤。VB系統提供了程序調試工具,通過設置斷點、插入觀察變量、逐行執行和過程跟蹤等手段,清除代碼中存在的錯誤。
深化與拓展
1.在你們設計的程序中,以什么樣的機制輸入小說文本呢?可操作性和通用性如何呢?有沒有更好的方法呢?如
何實現呢?
2.記下你遇到的最難排除的錯誤,你是如何發現這個錯誤的?為什么會產生這個錯誤?程序中是否還有類似的錯誤?怎樣預防錯誤的發生?與同學交流你的想法與體會。
3.仔細分析你們的統計數據,與全班同學一起討論,在人文科學領域引入數理統計和定量分析方法能帶來哪些好處呢?能不能僅根據統計結果確認文學作品的作者呢?
參考網站
1.《紅樓夢》研究與電腦科技:http://www.sarawak.com.my/org/hornbill/cn/lithistory/history08/cn_08/hlm/hlm_misc/hlm012.htm
?。玻旁娧芯康挠嬎銠C支持環境的實現:http://ling.ccnu.edu.cn/MESSAGE/YYXLWX/collection-2/liu.htm
3.《紅樓夢》等名著的作者是誰?讓數學來證明:http://tech.sina.com.cn/other/2004-04-19/1453351078.shtml
?。矗惴ǎ珨祿Y構:http://algorithm.myrice.com/algorithm/index.html?defination.htm
?。瑁簦簦穑海鳎鳎鳎螅幔颍幔鳎幔耄悖铮恚恚铮颍纾瑁铮颍睿猓椋欤欤悖睿欤椋簦瑁椋螅簦铮颍瑁椋螅簦铮颍埃福悖睿撸埃福瑁欤恚瑁欤恚撸恚椋螅悖瑁欤恚埃保玻瑁簦?br/> ?。玻旁娧芯康挠嬎銠C支持環境的實現:http://ling.ccnu.edu.cn/MESSAGE/YYXLWX/collection-2/liu.htm
?。常都t樓夢》等名著的作者是誰?讓數學來證明:http://tech.sina.com.cn/other/2004-04-19/1453351078.shtml
?。矗惴ǎ珨祿Y構:http://algorithm.myrice.com/algorithm/index.html?defination.htm
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文