羅 妤
目前,計算機(jī)輔助教學(xué)引起了社會的普遍關(guān)注。加強(qiáng)計算機(jī)基礎(chǔ)教育,不僅是為了讓學(xué)生學(xué)習(xí)掌握現(xiàn)代化的信息處理工具,同時也是對學(xué)生進(jìn)行一種科學(xué)素質(zhì)教育。為了加強(qiáng)信息學(xué)院非計算機(jī)專業(yè)學(xué)生的計算機(jī)應(yīng)用能力,筆者所在學(xué)校在開設(shè)相應(yīng)專業(yè)基礎(chǔ)課和專業(yè)課以外,還開設(shè)了計算機(jī)軟件技術(shù)基礎(chǔ)課程這樣的專業(yè)選修課程。
一、目前的教學(xué)情況
由于該門課程是為非計算機(jī)專業(yè)的學(xué)生開設(shè)的,因此在該課程的教學(xué)過程中,涉及到比較廣泛的內(nèi)容,包括軟件工程、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)四個部分的基礎(chǔ)知識。其目的是通過該課程的學(xué)習(xí),使學(xué)生能夠全面系統(tǒng)地掌握計算機(jī)軟件技術(shù)基礎(chǔ)的基本知識,熟悉軟件工程基礎(chǔ)概念、數(shù)據(jù)結(jié)果基本概念和結(jié)構(gòu)等,并且具有一定的軟件系統(tǒng)設(shè)計的能力。
在近幾年的教學(xué)中,筆者教授課程的目的是為了讓學(xué)生對軟件技術(shù)基礎(chǔ)有一定的了解,因此在教學(xué)的過程中沒有涉及到實驗部分。但是,筆者發(fā)現(xiàn)這不能讓學(xué)生達(dá)到鞏固知識的目的。因此,在教學(xué)大綱的改編中,筆者增設(shè)了實驗課內(nèi)容。通過實驗教學(xué)環(huán)節(jié),能使學(xué)生在有限的教學(xué)學(xué)時內(nèi)掌握更多的知識。
二、實驗內(nèi)容設(shè)計
1.數(shù)據(jù)結(jié)構(gòu)
在該課程的學(xué)時分配中,數(shù)據(jù)結(jié)構(gòu)的內(nèi)容占據(jù)了最大的比例。眾所周知,數(shù)據(jù)結(jié)構(gòu)是計算機(jī)學(xué)科中最重要的課程之一。在計算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)不僅是一般程序設(shè)計的基礎(chǔ),而且是設(shè)計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其它系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)?,F(xiàn)今計算機(jī)知識突飛猛進(jìn),計算機(jī)軟件的規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜,所要編寫的程序也就越來越多。這就需要程序設(shè)計者在編程時,不僅要考慮解決某一特定問題的算法,而且首先需要考慮對這些數(shù)據(jù)量大且關(guān)系復(fù)雜的數(shù)據(jù)如何組織的問題,也就是要研究數(shù)據(jù)的特性及其之間的相互關(guān)系,研究如何存儲這些數(shù)據(jù)。以上就是數(shù)據(jù)結(jié)構(gòu)的實質(zhì)所在。因此,筆者將面向?qū)ο蟮木幊趟枷胍胗嬎銠C(jī)軟件技術(shù)基礎(chǔ)教程教學(xué)中,并且通過實驗,讓學(xué)生進(jìn)一步了解和掌握數(shù)據(jù)結(jié)構(gòu)的含義。
在數(shù)據(jù)結(jié)構(gòu)中,包含了順序表、鏈表、棧、隊列、二叉樹、圖等結(jié)構(gòu)的內(nèi)容,每種結(jié)構(gòu)又包含了諸多內(nèi)容:第一,線性表的順序存儲、鏈?zhǔn)酱鎯跋嚓P(guān)算法,如建立、插入、刪除、查找、輸出等。第二,棧的順序存儲、鏈?zhǔn)酱鎯跋嚓P(guān)算法,如建空棧、判斷???、棧滿,入棧、出棧、輸出等。第三,隊列的順序存儲、鏈?zhǔn)酱鎯跋嚓P(guān)算法,如建空隊、判斷隊空、隊滿,進(jìn)隊、出隊、輸出等。第四,二叉樹的存儲及相關(guān)算法,如建立、前序遍歷、中序遍歷、后序遍歷以及二叉樹查找等。第五,圖的存儲及相關(guān)算法,如建立、插入、刪除、查找、輸出節(jié)點,圖的深度優(yōu)先遍歷、廣度優(yōu)先遍歷等。
由于課時的限制,因此,在實驗的分配上,學(xué)習(xí)二叉樹的遍歷?!氨闅v”是抽取數(shù)據(jù)結(jié)構(gòu)中各個數(shù)據(jù)值?!岸鏄浔闅v”是以固定的順序,有系統(tǒng)地抽取二叉樹中的各個節(jié)點,且每個節(jié)點均恰好被抽取一次。二叉樹結(jié)構(gòu)如圖1所示。
二叉樹結(jié)構(gòu)中的每個節(jié)點均有左右兩個分支,在遍歷的過程中可以選擇往左或往右走,遍歷結(jié)束,每個節(jié)點均被抽取一次。事實上,二叉樹遍歷是以遞歸的方式進(jìn)行的,依遞歸的調(diào)用順序之不同,可分為三種不同的遍歷方式:前序遍歷、中序遍歷和后序遍歷。下面給出二叉樹節(jié)點的數(shù)據(jù)類型及前序遍歷的流程圖。
二叉樹節(jié)點的數(shù)據(jù)類型為:
struct tree
{
struct tree*left;
int data;
struct tree *right;
};
typedef struct tree treenode;
typedef treenode b_ tree;
前序遍歷思想是:先遍歷根節(jié)點,再遍歷左子樹,最后才遍歷右子樹。圖l所示的二叉樹前序遍歷順序為:ABDECFGH。
二叉樹前序遍歷的程序流程圖,如圖2所示。
2.數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫技術(shù),從20世紀(jì)60年代中期產(chǎn)生以來,得到了迅速的發(fā)展,是計算機(jī)科學(xué)技術(shù)中發(fā)展最快的技術(shù)之一。數(shù)據(jù)庫技術(shù)在計算機(jī)輔助設(shè)計、人工智能、電子商務(wù)、工農(nóng)業(yè)生產(chǎn)、行政管理、科學(xué)研究和工程技術(shù)等諸多領(lǐng)域得到了廣泛應(yīng)用,已經(jīng)成為計算機(jī)信息系統(tǒng)和應(yīng)用系統(tǒng)的核心技術(shù)和重要基礎(chǔ)。通過學(xué)習(xí),學(xué)生能夠正確理解數(shù)據(jù)庫的基本原理,熟練掌握數(shù)據(jù)庫的設(shè)計方法和應(yīng)用技術(shù)。因此,本著培養(yǎng)應(yīng)用人才目的,針對學(xué)生過去存在的概念抽象、實踐不足等情況,該部分內(nèi)容除了理論講解之外,也增加了利用Visual FoxPro進(jìn)行上機(jī)練習(xí)的環(huán)節(jié),讓學(xué)生更直觀、更直接地了解數(shù)據(jù)庫的含義。
在數(shù)據(jù)庫的實驗中,筆者希望學(xué)生能夠掌握基本的數(shù)據(jù)庫表的操作,包括數(shù)據(jù)庫表的建立,記錄的顯示、編輯、修改、插入和刪除等操作。學(xué)生通過操作,了解數(shù)據(jù)庫表的含義以及應(yīng)用。
在該實驗中,筆者選擇了Visual FoxPro 6.0(VFP)軟件。VFP是一種用來進(jìn)行管理信息系統(tǒng)開發(fā)的常用工具。Visual Foxpro6.0學(xué)習(xí)起來較為簡單,易于入門,而且操作方便,較為直觀,學(xué)生容易理解。因此,筆者選擇了Visual Foxpro6.0作為數(shù)據(jù)庫的基礎(chǔ)課程,旨在讓學(xué)生通過學(xué)習(xí),了解數(shù)據(jù)庫的基本原理及應(yīng)用技術(shù)。
(作者單位:重慶科技學(xué)院電子信息工程學(xué)院)