曹耀輝
摘要:針對(duì)高職院校,基于“Visual FoxPro程序設(shè)計(jì)”課程的多年教學(xué)經(jīng)驗(yàn),文章提出一些行之有效的教學(xué)方法與經(jīng)驗(yàn),以便對(duì)青年教師能有所借鑒,同時(shí)對(duì)廣大學(xué)生學(xué)習(xí)能夠起到很好的指導(dǎo)作用。關(guān)鍵詞:Visual FoxPro;程序設(shè)計(jì);教學(xué);方法
盡管目前“Visual FoxPro程序設(shè)計(jì)”教材很多,但對(duì)于高職學(xué)生來說,很難遇到一本通俗易學(xué)的教材。教師在講授內(nèi)容時(shí),也感到不太好講,多數(shù)學(xué)生學(xué)不懂,普遍學(xué)得比較膚淺,不夠扎實(shí)。作者針對(duì)這種情況以及自己長期從事“VisualFoxPro程序設(shè)計(jì)”的教學(xué)歷程,提出如何講授好這門課程以及學(xué)生如何能學(xué)好這門課程的一些經(jīng)驗(yàn)。
多數(shù)學(xué)生的學(xué)習(xí)方法不恰當(dāng),學(xué)習(xí)時(shí)抓不住重點(diǎn),一開始也想學(xué)好這門課程,學(xué)習(xí)熱情比較高漲,但是學(xué)習(xí)時(shí)一遇到幾個(gè)困惑問題,就變得灰心喪氣,喪失學(xué)習(xí)這門課程的信心。作為教師,應(yīng)該引導(dǎo)學(xué)生解決這些困擾他們的關(guān)鍵問題,樹立學(xué)生的自信心,激發(fā)學(xué)生學(xué)習(xí)的熱情和興趣,從而使他們能夠比較順利地學(xué)完并學(xué)好這門課程。下面就這門課程的特點(diǎn)和幾個(gè)關(guān)鍵的知識(shí)點(diǎn),加以辨析,探究這門課程的教法,以便廣大學(xué)生能夠把握這門課程的主要知識(shí)點(diǎn),從而更深刻地理解這門課程。
1 理解常量、變量、表達(dá)式及類型
顧名思義,常量就是一個(gè)不變的值,變量的值是能夠改變的,盡管簡單,學(xué)生一聽就懂,可是學(xué)生在學(xué)到后面應(yīng)用時(shí)往往就連最簡單的概念都忘了。因此,教師在講授時(shí)千萬不能講完概念就一筆帶過,還要給學(xué)生多舉一些有代表性的例子,比如23,“X-”,{^1998-12-25},X,姓名,AGE 1等,這樣就引出常量與變量的表示,同時(shí)引出常量與變量的類型,多舉實(shí)例予以說明,最后一定要告訴學(xué)生常量、變量和函數(shù)都屬于表達(dá)式的范疇,都算作表達(dá)式的特例。
2 搞清數(shù)據(jù)庫文件、表文件及其關(guān)系
作為重點(diǎn),教師一定要給學(xué)生講透數(shù)據(jù)庫、數(shù)據(jù)表、自由表及其關(guān)系,講透數(shù)據(jù)庫文件、數(shù)據(jù)表文件、自由表文件及其關(guān)系。很多學(xué)生學(xué)完數(shù)據(jù)庫后,思想還是沒有頭緒,分不清數(shù)據(jù)庫文件、表文件的關(guān)系,一些同學(xué)錯(cuò)誤地認(rèn)為數(shù)據(jù)庫表文件就存放在數(shù)據(jù)庫文件中,移出成為自由表以后才不包含在數(shù)據(jù)庫文件中,一旦自由表添加到數(shù)據(jù)庫后就成為數(shù)據(jù)庫表,從而此表文件就存放在數(shù)據(jù)庫文件中,其實(shí)這個(gè)理解是不對(duì)的。正確的理解應(yīng)該是,使用數(shù)據(jù)庫時(shí)邏輯上認(rèn)為自由表不包含在數(shù)據(jù)庫中,一旦自由表添加到數(shù)據(jù)庫后就成為數(shù)據(jù)庫表,隸屬于該數(shù)據(jù)庫,物理上數(shù)據(jù)庫表的具體數(shù)據(jù)還是不在包含它的數(shù)據(jù)庫文件中,只是將指向表文件的指針存放到了包含它的數(shù)據(jù)庫文件,數(shù)據(jù)庫文件仍然不直接包含表文件中的數(shù)據(jù),只是建立了數(shù)據(jù)庫文件和數(shù)據(jù)表文件的邏輯聯(lián)系,這樣才符合數(shù)據(jù)庫減少冗余的思想。
3 多表操作中理解工作區(qū)的概念及數(shù)據(jù)工作期的用法
教師應(yīng)重點(diǎn)講清講透數(shù)據(jù)工作區(qū)的本質(zhì),既然在同一時(shí)刻一個(gè)工作區(qū)只能打開一個(gè)表文件,那么在進(jìn)行多表操作時(shí)肯定要用到多個(gè)工作區(qū),要教會(huì)學(xué)生用命令進(jìn)行工作區(qū)的選擇,熟練掌握SELECT命令,理解當(dāng)前工作區(qū)的概念,多用形象比喻,比如多個(gè)教師為多個(gè)班級(jí)上課,就某個(gè)教師來說,在某個(gè)時(shí)刻有一個(gè)當(dāng)前教室。在給學(xué)生操作演示時(shí),可借助于數(shù)據(jù)工作期這一有力的工具來說明,在數(shù)據(jù)工作期窗口中,依次打開幾個(gè)表文件,不斷切換當(dāng)前工作區(qū),注意觀察數(shù)據(jù)工作期窗口中的每一個(gè)提示信息,從而直觀地給學(xué)生說明了工作區(qū)、當(dāng)前工作區(qū)、非當(dāng)前工作區(qū)的概念。
4 理解索引含義及索引文件
首先,教師要給學(xué)生講清排序與索引的區(qū)別。告訴學(xué)生Visual FoxPro索引是由指針構(gòu)成的文件,這些指針邏輯上按.照索引關(guān)鍵字值進(jìn)行排序。索引文件和表文件分別存儲(chǔ),不改變表中記錄的物理順序。實(shí)際上創(chuàng)建索引是創(chuàng)建一個(gè)由指向.dbf文件記錄的指針構(gòu)成的文件。若要根據(jù)特定順序處理表記錄,可以選擇一個(gè)相應(yīng)的索引。
其次,一定要給學(xué)生講清索引的4種類型:主索引、候選索引、唯一索引和普通索引??梢源虮确健⒍嗯e例,切忌平鋪直敘,就概念講概念。比如在學(xué)生情況表中通常將學(xué)號(hào)、姓名等作為候選索引(注意,當(dāng)表中有不同記錄的姓名字段取值相同時(shí),姓名也就不能作為候選索引,因?yàn)楹蜻x字段在不同記錄不允許出現(xiàn)重復(fù)值);在某個(gè)時(shí)刻候選索引可以有多個(gè),但主索引只能有一個(gè),可以從候選索引中選取一個(gè)作為主索引,通常將學(xué)號(hào)作為主索引;而唯一索引是指表中該索引字段值相同的記錄只取一個(gè)進(jìn)入索引表,比如看學(xué)生情況表中有多少個(gè)班級(jí),即可根據(jù)班級(jí)建立唯一索引;而普通索引允許字段出現(xiàn)重復(fù)值。
最后,要給學(xué)生強(qiáng)調(diào)什么是單項(xiàng)索引(擴(kuò)展名為IDX),什么是復(fù)合索引(擴(kuò)展名為CDX),在復(fù)合索引中要分清結(jié)構(gòu)復(fù)合索引和非結(jié)構(gòu)復(fù)合索引。重點(diǎn)讓學(xué)生掌握結(jié)構(gòu)復(fù)合索引及其特性,比如在打開表時(shí)自動(dòng)打開。
5 SQL語句中應(yīng)掌握主要短語的含義
SQL是一種一體化的語言,它包括了數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制等方面的功能,它可以完成數(shù)據(jù)庫活動(dòng)中的全部工作。SQL語言是一種高度非過程化的語言,它不必告訴計(jì)算機(jī)“如何”做,只需用戶告訴計(jì)算機(jī)要“做什么”,SQL語言就可以將要求交給系統(tǒng),自動(dòng)完成全部工作。既然SQL語句十分重要,其作用非常廣泛,那么教師就要將SQL語句格式中的主要短語給學(xué)生講清楚,當(dāng)然,必須列舉大量的具體實(shí)例,同時(shí)采取多媒體投影演示教學(xué),可以驗(yàn)證理論分析結(jié)果和實(shí)際運(yùn)行結(jié)果的統(tǒng)一。SQL語句格式中的主要短語及含義如下:
SELECT短語說明要查詢的數(shù)據(jù),通常其后跟多個(gè)字段。
FROM短語說明要查詢數(shù)據(jù)的來源表。
WHERE短語說明要查詢的條件,通常其后跟一個(gè)邏輯表達(dá)式。
GROUP BY短語用于對(duì)查詢結(jié)果進(jìn)行分組。
HAVING短語一般跟隨GROUP BY短語使用,用來限定分組必須滿足的條件。
ORDER BY短語用來對(duì)查詢的結(jié)果進(jìn)行排序。
注意,最易混淆的就是wHERE短語和HAVING短語,以致許多教材介紹有誤,比如,高等教育出版社于2001年出版的《全國計(jì)算機(jī)等級(jí)考試二級(jí)教程Visual FoxPro程序設(shè)計(jì)》教材中提到,“HAVING短語必須跟隨GROUP BY短語使用,它用來限定分組必須滿足的條件”,作者通過大量實(shí)驗(yàn)證明此說法欠妥。正確的說法應(yīng)該是“sOL語句中若無GROUP BY短語時(shí),WHERE短語和HAVING短語等價(jià);若有GROUP BY短語時(shí),WHERE短語和HAVING短語才有所區(qū)別,此時(shí)WHERE短語說明要查詢的條件,HAVING短語用來限定GROUP BY分組必須滿足的條件”。
6 分清查詢與視圖的區(qū)別
查詢和視圖是檢索和操作數(shù)據(jù)庫的兩個(gè)基本工具和手段,它們都是根據(jù)基本表定義的,定義方式十分類似。從普通檢索數(shù)據(jù)的角度來講,查詢和視圖基本具有相同的作用。
二者的區(qū)別是,查詢可以定義輸出去向,可以將查詢的結(jié)果靈活地應(yīng)用于表單、報(bào)表、圖形等各種場合,但是利用查詢不可以修改數(shù)據(jù);而利用視圖可以修改數(shù)據(jù)。教師在講授這個(gè)關(guān)鍵知識(shí)點(diǎn)時(shí)千萬不能一筆帶過,也不能照本宣科,而應(yīng)選用好一兩個(gè)表,通過實(shí)例用多媒體投影演示,才能給學(xué)生留下較為深刻的印象。
7 程序設(shè)計(jì)中掌握三大基本結(jié)構(gòu)
教師在講授程序設(shè)計(jì)時(shí),一定要講清程序的三大結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。當(dāng)然順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),教師可以簡單介紹,重點(diǎn)放到選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的講解上,難點(diǎn)放到循環(huán)結(jié)構(gòu)的講解上。在講解循環(huán)結(jié)構(gòu)時(shí),應(yīng)先畫出循環(huán)流程圖,圍繞流程圖講解后,再舉幾個(gè)有代表性的典型例子,比如利用循環(huán)結(jié)構(gòu)編程計(jì)算100以內(nèi)自然數(shù)之和,可以采取從小到大的順加算法,亦可采用從大到小的倒加算法,將同一問題的多個(gè)算法寫出來,配合循環(huán)流程圖講解,不僅能夠講得清楚,而且能啟發(fā)學(xué)生的創(chuàng)造性思維。
8 表單設(shè)計(jì)中分清Caption屬性與Name屬性
筆者發(fā)現(xiàn)好多學(xué)生經(jīng)常將Caption屬性與Name屬性混為一談,教師在講述表單屬性時(shí),一定要將Caption屬性與Name屬性的區(qū)別給學(xué)生講清楚。Caption屬性指的是對(duì)象的標(biāo)題文本,顯示在屏幕上以幫助使用者識(shí)別各對(duì)象;而Nanle屬性指定在代碼中用以引用對(duì)象的名稱。
特別注意,在代碼設(shè)計(jì)時(shí),應(yīng)該用Name屬性值,而不能用Caption屬性值來引用對(duì)象。在同一作用域內(nèi)兩個(gè)對(duì)象(如一個(gè)表單內(nèi)的兩個(gè)命令按鈕)可以有相同的Caption屬性值,但不能有相同的Name屬性值。
9 結(jié)語
在Visual FoxPro程序設(shè)計(jì)課程的教學(xué)中,文章以這門課程的特點(diǎn)和幾個(gè)關(guān)鍵的知識(shí)點(diǎn)作為主線,加以辨析,分析了教材知識(shí)點(diǎn)教法,以便廣大高職學(xué)生能夠把握這門課程的主要知識(shí)點(diǎn),從而更深刻地理解這門課程,進(jìn)而啟發(fā)廣大學(xué)生的學(xué)習(xí)思維,最后達(dá)到提高廣大學(xué)生分析問題和解決問題能力的目的。