引題
新的學年到了,一批新教師加入到信息技術教師的隊伍中來;也有一些信息技術教師轉到其他工作崗位。金秋時節正在繼續著收獲與播種的故事……信息技術學科還一直面臨著比其他學科更多的困境,為此,我們將通過兩期“編程與人生”熱點解碼,試圖引發更多教師關于自己專業定位、專業發展等問題的思考與討論。
(一)算法:設計與擇優
我們這些人(信息技術教師),好像是學校里最不安分的人群吧,很多事雖然不能說是三天打魚兩天曬網,但下定決心要做卻又半途而廢的一定是常有發生。不少人都曾經有過今天學VB,明天學PS,后天又轉向Flash的經歷。即使一直在做的工作,往往也缺乏整體打算。比如,我在開發教學輔助管理軟件時,經常是把從界面到功能的全部代碼推翻重來,甚至一個成績分析軟件的界面就換了四種之多。報表格式就更多,實在是應付不了,就改變了在程序里做表頭的方法,編寫了一個萬能報表打印程序(即可以根據數據庫的字段自動獲取表頭),這項改良讓復雜的報表打印從此無憂。可見,做事情預先有所規劃設計是非常重要的。
記得小時候,我們都接受過理想教育,也都曾脫口宣布過自己的理想:當空軍,做科學家……可是,又有幾人能按部就班地為著理想目標去奮斗呢?尤其是在大學畢業之后,參加工作了,很多人更是發現現實離夢想非常遙遠。于是,就有人悔恨年少時的輕狂,有時也會萌生一個念頭:假如能夠重新來過,我定當為了理想而努力。
當然,也并非是每一個人都有這樣的心態。我的同學、朋友中就有不少人能夠未雨綢繆, 一步一步按計劃實現了自己的夢想。可見,預先規劃并且能夠嚴格執行,對人生是何等的重要。這就是算法設計,我們需要認真對待的一個概念。
算法不僅是解決一件事前的必要規劃,而且是解決一類事的一個規劃與行動。無論是做哪些事,都要有總的規劃,里面還有小的規劃,從大到小、從粗到細、從先到后,逐步求精,用實際行動去實現目標。
算法來自需求。一個優秀的算法是怎樣萌生的呢?雖然,沒有人能夠前知五百年,后知五百年,最聰明的人孔明先生雖設計出三國鼎立、大漢再統的算法,卻被晉統三國改變了一切。但是不能否認,做事要有一個總體的粗略規劃,即要針對具體問題進行需求分析,找出解決之道。劉備遇到了問題需求,有了很會打架技術的關、張兩位大將,但是打來打去仍然居無定所。他意識到缺乏一個為他們設計未來算法的謀士,諸葛亮的隆中對奠定了算法基架,讓他看到了充滿希望的未來。
算法要求精。基本的算法框架有了,可并非就能立馬成功。接下來還要細化之,把它分解成一個個的階段性小算法,實現從頂向下、模塊化設計,逐步求精。孔明先生也是在實戰中不斷完善算法,看準時機得荊州以立足,把握時局取四川來發展,后出祁山而取魏……算法越來越周到。
算法要擇優。雖然并非是條條大道都能到達羅馬,但是總有幾條路可供選擇。哪條道才能更快、更便利是選擇的標準。我小時讀《南轅北轍》的故事時曾放言:“地球是圓的,往南往北都一樣!”后來知道真的不一樣。不同的算法,完成所需時間不同、結果質量也不同,即要講究算法的整體效益。如果孔明當初聽了魏延設計的“取棧道走劍門”的高效算法,歷史會怎樣改寫?很明確,魏軍正是采用類似算法閃電般得勝入川。
算法要調整。算法設計出來了要執行它。我們在計算機上編寫程序來完成算法,還是可以再修改的,甚至換個算法從頭再來。但是人生能有幾回搏?不可能每個人都能等到大器晚成。所以,算法適時調整應是不得已而為之,并且要對原來的算法有繼承性,不要輕易完全否定自己。調整修改算法當是算法擇優的更高境界。
總之,做事情需要算法,算法對總體規劃非常重要。按算法一步步執行,不斷糾正調整,最終得到結果,這才是算法的真諦。
(二)循環:在重復中尋找出路
我們從事信息技術專業的人,都有一個共同的毛病:喜歡跟計算機耗著!說好聽點就是埋頭苦干,執著不懈。經常是沒有目的地耗在計算機前,自己也不知道何時是個終結。當然,這個毛病從事其他工作的人也有,但不應該有的正是我們這些懂編程的人。我記得,自己在每次教新學生編寫循環程序的時候,不論怎么講解,都有些學生對“循環條件”的構成不明白,經常做出很多死循環的程序來。有個別的學生,學會了用“Ctrl+Break”組合鍵去強行中止程序,然后到處去夸耀。可是,他并不知道出現了這個情況是編程的最大忌諱,強行中止不是提倡的做法。看到這樣的學生,想到自己,就想著有必要給自己的“執著”行為加一個條件,讓自己的重復有個結束,在不斷的努力中去尋找人生的出口。
執著是成功的關鍵。但是,現在已經不再是一味推崇老黃牛的時代了,既要埋頭拉車又要抬頭看路,這才是科學的方法。當然,一旦找準了方向,找到了規律,就要反反復復地不斷實驗,直至成功。在程序設計的歷程中,這種執著的精神是非常有益的,我們一直堅信希望正在峰回路轉之處。
我們的時間、精力及其他資源都是有限的,不可能在一件事情上簡單重復、停滯不前。所以,在重復地去做事情之前,需要先沉下心來想一想另一個重要的問題,即出路在哪里。循環程序提供了重復策略,它可以幫助我們解決海量的規律性問題,讓計算機不知疲倦地重復工作,讓我們因此有時間能夠停下手來喝杯茶。這就是所謂的“自動化”設計。但是,不要忘記循環程序也會陷入一個與我們生活相似的困境,即進入一條死胡同,在低水平上自我重復,最終形成死循環。所以,我們需要搞懂循環終止的條件究竟是什么,如何走出自我、超越自我。
第一種情況是能夠預知結束。俗話說“事不過三”,就是說同樣的事件、相同的做法要有所限制,這就是限次循環。給自己的嘗試作一下次數限制,不論努力到何種程度,不論果能結多大,到了次數就要收場。當然,“三”是虛指,我們倒不妨多加幾次,但是必須有個最大的終值。當“自己”這個循環變量從第1次循環到終值時,就要主動跳出循環了,這就是循環的“自制力”。拿掘井來比喻,一锨一锨挖下去,我就挖他個一百锨,有沒有挖出水來不管了。
另一種情況,就是并不知道要經歷多少次的失敗才能成功,要用“當循環(Do while)”來指導自己的反復嘗試。就像掘井,不停地挖啊挖啊……當沒見到水就繼續挖!“水的出現”無疑就成為循環的終止條件了。實際上,換一種理解方式,又是一種循環結構:挖啊挖,直到見了水就停止!稱為“直到(Repeat/Until)”循環。
這些情況其實都是一種情況,即都可預見到能夠終止,只不過“水”這樣的條件比較獨立且有目的性,而“挖的次數”這樣的條件嵌入在結構中可能目的性并不很明顯。
最難的情況是不能預知何時結束。這時候,我們做事情很難看到希望,但還是要堅持做下去,倒不是因為總希望有奇跡會出現,而是在此過程中也許會發現新的希望,即另外的機遇。這樣的情況,在循環結構上可能需要臨時構造一個假的死循環,即像“1<2”、“True”等結果永遠是“真”的循環條件,保證循環在理論上沒有干涉將永遠不停止。要明白,重復是死的,我們的心卻并非死了,時刻準備著勝利突圍。在這樣的循環中,可以增加兩種出路。其一,是根據循環中的變量運算結果進行判斷,符合一定的條件即可跳,這是自動尋找出口;其二,是增加對外界信息輸入的判斷,比如對某些熱鍵(即在任意時候擊鍵或鼠標)做出反應,某個鍵響應之下跳出循環。如此以來,就是在循環中計算機不停地做著思考運算、比較判斷,突然捕獲到一絲信息,很有把握需要強行中止循環的時候到了,就強加一個跳出指令“Exit”。在這類循環中也許很快就能跳出,也許經歷了很多輪回才能跳出,但是我們相信終會有成功的那一天!
總之,循環程序不是簡單的重復,有次數限制的“計數循環”可以做到心中有數,“當循環”、“直到循環”能夠讓目標更明確。即使面對的是不知終點的漫漫長路,我們也不能失去希望任憑死循環淹沒斗志,而是要不斷地去闖,執著地去走,路在腳下,希望就在腳下,隨時都有希望的出口。
蒼山點題
不論您從編程的角度去閱讀,還是從人生、專業發展的角度去思考,我們都不妨多一點啟發:給自己一個一年計劃,或者五年計劃,有計劃地去不懈努力,但對目標卻不迷茫……在困難中注意不時抬起頭來,尋找希望。
《課程整合》專欄征稿通知
為推廣新型教學模式,提高信息技術與學科課程的有效整合水平,優化課程設置,改善教學效果;在推進基礎教育信息化過程中傳播新知,凝集智慧,共享資源,《信息技術教育》雜志根據《課程整合》專欄設置特點,定于2007年6月至2007年12月集中開展整合案例征集活動。活動設立專門郵箱,面向中小學教師征集案例。
案例要求
1.案例篇幅以3800字左右為宜。
2.案例須經過實踐檢驗,并簡要介紹教學效果。
3.案例提交時須附以下內容:
(1)教師在教學過程中所拍攝照片(2~3張)。
(2)授課教師簡介(200字左右)。
(3)授課教師所在學校信息化環境介紹及教學案例開展所必備的教學客觀條件展示(200~300字)。
4.稿件中所引用資料的部分需注明出處。
5.案例要求以電子文檔的形式發至指定郵箱:uebrain@126.com,并注明“應征稿件”字樣。
聯系方式
聯系人:王老師 閆老師
電話:010-87663458-8029
傳真:010-87663458-8003
手機:13120487628
E-mail:wangxiaobo@vip.sohu.com/amary7376@163.com/tougao3@nettime.net.cn