• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2009-12-30 03:41:40王錦程宋述燕
    計算機教育 2009年21期
    關鍵詞:專業(yè)課程教學

    王錦程 宋述燕

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

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

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

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

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

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

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

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

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

    2操作系統(tǒng):計算機資源的管家

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

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

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

    3算法:程序設計的靈魂

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

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

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

    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;

    }

    }

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

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

    4數(shù)據(jù)結構:數(shù)據(jù)資源的管家

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

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

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

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

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

    5數(shù)據(jù)庫:智能化的大倉庫

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

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

    6結語

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

    參考文獻:

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

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

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

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

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

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

    猜你喜歡
    專業(yè)課程教學
    微課讓高中數(shù)學教學更高效
    甘肅教育(2020年14期)2020-09-11 07:57:50
    如何讓高中生物教學變得生動有趣
    甘肅教育(2020年12期)2020-04-13 06:25:34
    電大學前教育專業(yè)課程改革探討——以福建電大為例
    基于“互聯(lián)網(wǎng)+”的應用經(jīng)濟學專業(yè)課程教學改革研究
    “自我診斷表”在高中數(shù)學教學中的應用
    東方教育(2017年19期)2017-12-05 15:14:48
    對外漢語教學中“想”和“要”的比較
    唐山文學(2016年2期)2017-01-15 14:03:59
    中美綜合大學在音樂專業(yè)課程上的比較與啟示
    基于現(xiàn)代學徒制視野下汽修專業(yè)課程設置研究
    中俄臨床醫(yī)學專業(yè)課程設置的比較與思考
    專業(yè)課程群建設的探索與實踐
    彰化县| 金湖县| 塔河县| 天等县| 开封市| 永新县| 本溪| 靖安县| 苍南县| 阜康市| 清徐县| 宁蒗| 潍坊市| 都安| 湖口县| 镇雄县| 南陵县| 古蔺县| 当涂县| 南宁市| 买车| 社旗县| 读书| 荔浦县| 平遥县| 广宁县| 佛坪县| 仁布县| 利辛县| 神木县| 拜城县| 湟源县| 泰来县| 南康市| 高邑县| 高雄县| 安达市| 东平县| 郯城县| 西丰县| 浦东新区|