999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

將專業課知識融入C++面向對象程序設計教學

2009-12-30 03:41:40王錦程宋述燕
計算機教育 2009年21期
關鍵詞:教學

王錦程 宋述燕

摘要:面向對象程序設計與各門專業課程,如“計算機基礎”、“操作系統”、“數據結構”、“算法設計”、“編譯原理”等都是融會貫通、密切相關的。因此在程序設計課程的教學環節中,逐步滲透各專業課的基本知識,運用適當而生動的教學案例,將專業知識融入到程序設計中,將有助于學生從更深層次上理解相關原理和概念,提高學習的信心和興趣,建立程序設計的思維方式。本文從程序設計的過程出發,通過實例教學的方式論證了這種教學方法。

關鍵詞:高級程序設計;專業課程;教學

中圖分類號:G642 文獻標識碼:B

“高級程序設計”是一門重要的計算機專業課程,目的是通過對面向對象程序設計思想的把握,培養學生掌握用計算機分析問題、解決問題的思維方式。但是由于該課程內容非常抽象,且實踐性特別強,對于初學者來說難度較大。同時由于課時限制,Console控制臺環境下的簡單實例難以體現出面向對象的優勢,基于語法的講解讓人感到乏味,許多學生覺得程序設計本身枯燥、難懂,高深莫測。以至于課程結束時,大部分同學對語法實現沒有問題,但面對實際問題卻不知道如何下手。如何在短時間內建立學生的興趣,培養解決實際問題的能力,是工科教學中永恒的話題。

計算機的課程體系本身是一個整體,所有課程的結合都是為了理解并充分利用計算機這一現代化工具。在教學中,將各門課程分開是為了簡化,但在理解時仍應將相關概念、應用領域相結合。在教學中我們發現,學生們剛開始接觸程序設計時,對變量定義、指針分配、數組訪問等的理解就比較困難。他們知道用變量來存取數據,但很少關心這個數據究竟存放在內存的什么地方,為什么指針必須先初始化才能使用。這時,不妨給學生講授一些內存訪問的基本知識,讓他們建立起變量、指針與地址的對應關系。現在的問題是,教師對于程序設計多是從語法上加以講解,對于程序的運行效率、應用領域、編程風格極少涉及,許多概念都是在后續專業課的學習后才逐步理解,這給程序設計的初學者帶來了很大的障礙。如果在教學中以面向對象的應用為基礎,以程序設計為主線,在重點介紹程序設計方法的同時將各門專業課知識融入其中,將會使學生從程序設計應用的視角來理解這些專業概念,從而在解決實際問題時靈活應用;消除對程序設計課程的枯燥感,達到事半功倍的效果。

1 “高級程序設計”的課程定位

隨著電子技術和芯片設計工藝的發展,計算機硬件一直按照摩爾定律發展,每18個月翻一番,處理速度越來越快,價格成本越來越低,從價值不菲、主要用于科學研究的大型計算機到現在人們日常工作生活中隨處可見的個人PC。程序設計的目的就是為了充分利用這一現代化的工具,可靠、高效地完成任務,因此程序設計其實是一種人機交互的方式,簡言之,就是用計算機能夠“理解”的語言,告訴它去執行某項任務。當然,這個“理解”需要編譯器的支持,將高級程序設計的語法描述進行編譯、連接等,變成計算機硬件能夠執行的機器碼,具體編譯的細節在編譯原理課程中有重點的介紹。

程序設計是一種語言表達,目的是為了人與計算機之間的溝通。因此程序設計通常有兩方面的特點:對于程序設計者,希望能夠精練、高效地說明問題;對于計算機,希望語言描述準確,不會出現二義性。通過程序設計解決一個具體問題時,大致需要經過下列步驟:首先從具體問題中抽象出一個適當的數學模型,然后設計出解此數學模型的算法(Algorithm),該算法與數據結構密切相關,最后編寫程序、進行測試、調整優化直至得到最終解答。尋求數學模型的實質是分析問題,從中提取操作的對象,并找出這些操作對象之間的關系,然后用數學的語言加以描述。

另外,用程序設計解決問題時,需要充分、高效地利用現有的計算機資源。對于匯編語言程序設計來說,通常直接編寫底層的硬件驅動及管理程序訪問資源;對于C+ +面向對象的程序設計來說,通常立足于計算機硬件、操作系統的基礎之上,在編寫用戶應用程序,如常用的各類工具軟件、Office系列等時,通常借助操作系統提供的API(application programming interface)函數來訪問資源,如用Create Window()來創建一個窗口,用getchar()來獲取鍵盤上的一個按鍵值等。操作系統的作用是管理全部的硬件資源、軟件資源及數據資源,并提供相關的API函數為程序設計者調用。

2操作系統:計算機資源的管家

計算機可以管理哪些資源呢?操作系統告訴我們,總共要管理4種資源:(1)CPU資源:進程管理,處理機調度;(2)內存資源:存儲管理;(3)I/O接口資源:外部設備管理;(4)文件資源:文件管理。如果需要訪問計算機資源,通常利用操作系統所提供的豐富的API函數來實現,而無需寫驅動程序直接對資源進行訪問,應用程序對操作系統的函數調用過程如圖1 所示。

箭頭①表示操作系統能夠管理系統資源,控制輸入輸出設備的工作,如文件存取、輸出顯示、聲卡發聲等;箭頭②表示操作系統能夠感知輸入設備的狀態變化,如鼠標移動、鍵盤按下,并且能夠感知鼠標移動的方向,具體按下的鍵值。設計應用程序需要利用輸入輸出設備或其他計算機資源時,并不是由應用程序直接訪問,而是借助操作系統。箭頭③表示程序設計時可以通知操作系統執行某個具體的動作,如操作系統能夠控制聲卡發出聲音,但它并不知道應該何時發出何種聲音,需要通過程序設計告知操作系統。箭頭④表示操作系統能夠將輸入設備或其他資源的變化傳遞給應用程序。如用戶在某個程序活動時按了一下鍵盤,操作系統能夠馬上感知這一事件,但并不決定如何作出反應,而是將這一事件轉交給應用程序,由應用程序決定執行何種反應。

理解了操作系統和應用程序的關系后,對于面向對象程序設計中如何調用現有計算機資源或創建新的應用,就有了十分明晰的思路。

3算法:程序設計的靈魂

在程序設計中,運行效率通常是一個決定性的指標,而程序運行是否高效,很大程度上取決于能否編寫出高效的算法。比如在游戲世界中,一只妖怪盯上了目標,并且它足夠聰明,會選擇一條最短路徑向目標殺過去。為什么這只妖怪那么聰明?這就是尋找最短路徑算法的魔力。

算法是指完成某個特定任務所需要的具體步驟和方法。在程序設計領域,算法表現為一系列解決問題的清晰指令,對一定規范的輸入,能夠在有限時間內獲得所要求的輸出,中國古代的珠算口決及其執行規則就是算法的雛形。算法是計算機處理信息的本質,因為程序就是用算法告訴計算機按照確切的步驟執行指定的任務,如計算職工的薪水或打印學生的成績單等。程序設計中的算法應用通常分成三個階段:分析問題、設計算法和實現算法。

算法設計的基本方法有遞推法、遞歸法、窮舉法、分治法、迭代法等。目前被設計出來而且應用廣泛的算法有很多,如演化算法、蟻群算法、貪婪算法、遺傳算法和一些常用的排序算法等,每一種算法都對應著多種不同的應用。如在同一個動畫頁面中,近處的對象會擋住遠處的對象,可以通過對不同的對象進行坐標排序,然后按由遠到近的順序排放而實現。常用的排序算法有四種:選擇排序、插入排序、冒泡排序和快速排序。下面是N個元素的冒泡算法C++程序實現。

template < class T >

void bub_sort( T a[], int n )

{

int i,j,last;

i = n - 1;

while( i > 0 )

{

last = 0;

for( j = 0; j < i; j++ )

{

if( a[j+1] < a[j] )

{

T temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

last = j;

}

}

i = last;

}

}

算法中將每個元素想象成一個泡泡,從最底部的元素開始,將各相鄰的元素進行比較,若下面的元素大于上面的元素時,則把它們的值進行交換,即較大的元素“往上冒泡”。如此循環N-1次,即可實現從大到小的排序。

當然,算法只是解決某類問題的步驟或方法,同一個算法可用不同的程序設計語言實現,而且能夠根據不同的應用目標加以約束和優化。算法設計與數據結構密切相關,算法無不依附于具體的數據結構,數據結構直接關系到算法的選擇和效率,在面向對象的程序設計中,二者是一個整體,不可分割。

4數據結構:數據資源的管家

數據結構是計算機存儲、組織數據的方式。討論數據結構必須同時討論在該類數據上執行的算法才有意義,通常情況下,精心選擇的數據結構可以帶來最優效率的算法。不同種類的數據結構適合于不同種類的應用,而部分甚至專門用于特定的作業任務。在程序設計中,根據不同的應用需要,可以選擇不同的數據結構。

如果有一堆相似數據需要管理,通常會選擇線性表。如單位人員的記錄、游戲世界里的道具包。線性表一般分為數組與鏈表兩類。數組里的元素以連續的內存空間存放,因此可以用內存地址檢索到對應的數據元素,訪問元素很方便。但如果要進行插入/刪除數據元素,就要做一些內存移動,效率比較低。而鏈表的數據元素存放在任意的物理內存位置,相鄰的元素以指針作為“鏈扣”串連起來,可以更高效的插入/刪除數據元素。

隊列和堆棧可能是使用頻率最高的數據結構。隊列是一種“先進先出(first-in first-out, FIFO)”的數據結構。就好像是在銀行里排隊,排在前面的先服務。因此順序執行的任務可以從一端依次壓進任務隊列里,要做任務時依次從另一端取出,哪個任務先接到就先做哪個任務。也許有些任務報酬更高,如果最求報酬最大化,就需要使用優先級隊列。在插入元素時,優先級高的元素插入隊列前面,把任務的報酬設成優先級數據就可以了。

堆棧是一種“先進后出”的數據結構。就好像是疊盤子,疊在最上面的盤子最先拿來使用。比如Word中的“撤消”按鈕,使用戶在編輯誤操作時不必驚慌,因為“撤消”功能可以撤消之前的操作。只要把用戶的操作壓入棧里,撤消操作就是從棧中彈出最近發生的操作,可以很方便地實現這個功能。

此外,樹型結構和圖形結構也是比較常用的、非線性的數據結構。樹的實現與應用比線性數據結構復雜,但其應用很廣泛,如Windows操作系統的文件管理。圖形結構可以用于地圖數據的管理等。

5數據庫:智能化的大倉庫

在程序設計當中,具有各種數據結構的變量或對象是不可缺少的元素。如果數據量比較小,直接使用內存變量或文件存儲就可以了,但在當前信息化的環境中,數據量通常是海量的,為了加快對數據的操作與訪問,同時保護數據的安全性,必須借助專門的工具,這就是數據庫。嚴格地說,數據庫是按照數據結構組織、存儲和管理數據的倉庫。

例如,在企事業單位的日常管理工作中,常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就是數據庫的一個基本元素,可以通過不同的“視角”加以查看。如果建立了包含相關信息的多個表,我們就擁有了一個“數據倉庫”。在應用程序的設計中,可以模擬現實世界,為不同的人員劃分相應的權限,使他們可以根據需要隨時在權限范圍內處理數據,如查詢某職工的基本情況,添加新進的職工信息等。此外,在財務管理、生產管理中、倉庫管理時,也可以建立眾多的數據庫,以實現財務、倉庫、生產的自動化管理。

6結語

計算機的課程體系是實現完整應用的一個整體,獨立的程序設計教學會使學生對許多概念的理解發生混淆,造成實際應用的偏差。本文論述了將相關的專業課程概念融入C++程序設計的教學過程中,增強學生對程序設計概念的理解,并根據需要靈活應用。當然,面向對象的程序設計也是一門實踐性很強的課程,學生對所有概念的理解及應用必須通過上機操作,在程序設計中不斷磨練才能提高。

參考文獻:

[1] 劉建華. 計算機語言類課程教學模式初探[J]. 高教論壇,2005,2(1):91-93.

[2] 鄭莉,董淵,張瑞豐. C++語言程序設計[M]. 北京:清華大學出版社,2005.

[3] 陳渝譯. 操作系統:精髓與設計原理[M]. 北京:電子工業出版社,2006.

[4] 王曉東. 算法設計與分析[M]. 北京:清華大學出版社,2008.

[5] 寧正元,王秀麗. 算法與數據結構[M]. 北京:清華大學出版社,2006.

[6] 何玉潔. 數據庫管理與編程技術[M]. 北京:清華大學出版社,2006.

猜你喜歡
教學
微課讓高中數學教學更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
「微寫作」教學實踐的思考
“以讀促寫”在初中寫作教學中的應用
如何讓高中生物教學變得生動有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
談高中音樂欣賞教學中的“聽、看、想、說、動”
“自我診斷表”在高中數學教學中的應用
東方教育(2017年19期)2017-12-05 15:14:48
對外漢語教學中“想”和“要”的比較
唐山文學(2016年2期)2017-01-15 14:03:59
對識譜教學的認識與思考
《可以預約的雪》教學探索與思考
中學語文(2015年6期)2015-03-01 03:51:42
對高等數學教學的一些思考
主站蜘蛛池模板: 亚洲最新在线| 青青青国产免费线在| 免费观看精品视频999| 青青久久91| 国产精品一线天| 亚洲精品日产精品乱码不卡| 中日无码在线观看| 欧美一级特黄aaaaaa在线看片| 亚洲天堂久久| 亚洲无码精彩视频在线观看 | 国产视频欧美| 久久永久视频| 亚洲一区二区三区麻豆| 在线观看av永久| 国产精品极品美女自在线| AV老司机AV天堂| 日韩中文字幕免费在线观看| 国产一区免费在线观看| 国产亚洲精久久久久久久91| 久久99国产综合精品1| 丁香五月激情图片| 国产亚洲欧美另类一区二区| 亚洲一区二区日韩欧美gif| 亚洲欧州色色免费AV| 成人无码区免费视频网站蜜臀| 亚洲AV免费一区二区三区| 国产一二视频| 四虎国产永久在线观看| 久久熟女AV| 凹凸精品免费精品视频| 中文字幕在线不卡视频| 99在线视频免费观看| 亚洲成人在线免费| 亚洲无码高清免费视频亚洲 | 亚洲区一区| 久久男人资源站| 欧美一区日韩一区中文字幕页| 欧美激情视频二区| 中文字幕 日韩 欧美| 国产专区综合另类日韩一区| 欧美一级夜夜爽| 精品三级网站| 欧美性猛交一区二区三区| 18禁高潮出水呻吟娇喘蜜芽| 91成人在线免费观看| 欧美中日韩在线| 色精品视频| 一本大道在线一本久道| 青青青视频91在线 | 国产精品网址在线观看你懂的| 1769国产精品视频免费观看| 欧美国产日韩在线观看| 亚洲中文字幕97久久精品少妇| 操美女免费网站| 成人无码区免费视频网站蜜臀| 69精品在线观看| 欧美午夜在线观看| 久久中文电影| 青青久视频| 国产在线视频福利资源站| 91口爆吞精国产对白第三集| 高清亚洲欧美在线看| 国产精品任我爽爆在线播放6080| 999精品免费视频| 91精品网站| 国产精品亚洲片在线va| 国产毛片高清一级国语| 日本精品一在线观看视频| 伊人AV天堂| 亚洲va在线观看| 在线视频97| 午夜色综合| 国产成人欧美| 日本亚洲成高清一区二区三区| 亚洲成年人片| 亚洲综合在线最大成人| 九九视频在线免费观看| 天天摸天天操免费播放小视频| 国产91麻豆视频| 亚洲午夜福利在线| 国产区免费精品视频| 成人一级黄色毛片|