在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

首頁 > 文章中心 > 程序設計的基本結構

程序設計的基本結構

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇程序設計的基本結構范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

程序設計的基本結構

程序設計的基本結構范文第1篇

C語言 結構化程序設計 循環(huán)結構 效率

一、引言

學習和應用計算機高級程序設計語言的人都知道,在這些語言中為實現(xiàn)結構化程序設計,一般都會采用三種最基本結構,即順序結構、選擇結構和循環(huán)結構。因此,掌握這三種基本結構的使用方法,是學習和掌握高級程序設計語言課的基礎。這三種基本結構中,順序結構和選擇結構和我們平常的思維習慣相似。因此,最容易理解和掌握;而循環(huán)結構是這三種基本結構中最復雜的一種結構,與我們日常的思維習慣不盡相同,因此理解起來相對來說比較困難。但是,幾乎所有的程序都離不開循環(huán)結構,利用它可以簡化程序、提高工作效率。因此,學習和應用高級程序設計語言的人又必須要掌握循環(huán)結構。但是,通過本人近幾年的教學發(fā)現(xiàn),大多數(shù)學生在學到循環(huán)結構一段時間后,干脆將這門課給放棄了,原因是他們覺得循環(huán)結構太難理解了。用順序結構和選擇結構做一個小程序還可以,用循環(huán)結構實在難理解。鑒于這個原因,本人將日常授課中總結出來的一點心得從初學者的角度寫出來,希望能對即將和正在學習高級程序設計語言課的人有所幫助。當然,我們在這里是以C語言為例來說的,其實這方面的知識對其他語言比如Visual Basic語言等同樣適用。

在C語言中,循環(huán)結構主要是由For語句、While語句、Do-While語句三種結構來實現(xiàn)的。而在這三種循環(huán)結構語句中又以for語句的應用更為廣泛。因為for語句在其開頭語句中就已經(jīng)包含了循環(huán)變量的初始值、循環(huán)變量的終止值、循環(huán)的判斷條件以及循環(huán)變量的變化趨勢等這些內容,因此在編寫其循環(huán)體時,只用考慮其循環(huán)體應該包含的主要功能就行了,而不用在For語句之前對循環(huán)變量的初始值進行過多地考慮,同樣也不用在循環(huán)內部考慮其循環(huán)變量如何變化。對大多數(shù)有程序設計經(jīng)驗的人來說,使用for語句實現(xiàn)循環(huán)結構是一件輕而易舉的事情。但是,對于沒有經(jīng)驗的初學者來說,要想將for語句的作用及使用方法掌握住也不是一件容易的事情,更不用說While語句、Do-While語句的使用了。因此,本文從初學者的角度,闡述了C語言中循環(huán)結構的幾種典型應用。

二、用循環(huán)結構輸出幾何圖形

在教學過程中,不管開設哪一種高級程序設計語言課,只要一講到循環(huán)結構,大多數(shù)老師幾乎不約而同地選擇輸出簡單的幾何圖形來作為講解循環(huán)結構的最好實例。

對于這種類型的題目,初學者往往最容易想到的方法就是采用多條輸出語句來完成程序的設計。雖然這種方法很快能夠實現(xiàn)所要效果,但其缺陷也是很明顯的:缺乏靈活性、程序修改起來不方便,也不符合程序設計的思想。比如,我想讓大家輸出8行,每行36個“*”。這個時候,我們就不得不在輸入“*”的時候特別仔細,因為一不小心可能個數(shù)就不對了。

但是,這樣的問題如果用循環(huán)語句來實現(xiàn)的話,程序不但可以簡化多,并且可以很靈活地將其修改成我們想要的效果。

因此,在講解這一類圖形時,授課教師最好引導學生按照正常的程序設計思想,先分析圖形的組成結構,找出其中變化的規(guī)律,然后按照所找到的規(guī)律用循環(huán)結構來編寫出相對應的程序代碼,這樣一旦要求有一點點變化不用大篇幅地修改程序,而只用找到關鍵的幾個地方修改一下就可以了。教師在講解的過程中,可以舉一反三,多次修改、讓學生反復練習,直到他們理解為止。

現(xiàn)在,我們來具體分析一下該圖形,看看它有什么樣的特點,然后我們利用For循環(huán)將它的程序代碼編寫出來。

三、結束語

以上關于循環(huán)結構的使用基本上都是在程序設計教學過程中的一些體會與總結,可能比較膚淺,但是對于初學者來說,掌握這些知識還是有必要的。在進行課程教學的過程中,將自己在學習過程中得到的一些好的方法傳授給學生,讓他們從中去實踐、體會,從而引起他們更大的學習興趣是必要的。如何讓一名初學者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設計中的基本思想,領會程序設計的精髓,是高級語言程序設計這門課程在講授過程中,應該時刻注意的問題。更希望學生在學習的過程中不只是從老師這里拿一些現(xiàn)成的經(jīng)驗去使用,更重要的是讓學生學會自己去發(fā)現(xiàn)問題、解決問題,總結出一些更好的程序設計方法,為以后進行軟件開發(fā)與設計打下良好的基礎。

參考文獻:

[1]譚浩強.C程序設計(第三版)[M].清華大學出版社,2005.

[2]蘇運霖.計算機程序設計藝術第1卷?基本算法[M].北京:國防工業(yè)出版社,2002.

[3]譚浩強.C語言程序設計(第二版)[M].北京:清華大學出版社,1999.

程序設計的基本結構范文第2篇

關鍵詞: 循環(huán)結構 C語言 程序設計

引言

順序、選擇、循環(huán)是結構化程序設計的三種基本結構,所以在高級語言程序設計課程中,掌握這三種結構是學好程序設計的基礎。循環(huán)結構是這三者中最復雜的一種,幾乎所有的程序都離不開循環(huán),因此,熟練掌握循環(huán)結構是程序設計的最基本的要求。在C語言中,循環(huán)結構主要是由for和while、do-while語句實現(xiàn)的,其中for語句的應用更為普遍一些。for語句的用法對于有程序設計經(jīng)驗的學生來說輕而易舉,但是對于那些沒有經(jīng)驗的初學者來說難度卻不小。本文從初學者的角度,闡述了C語言中循環(huán)結構幾種典型應用的實現(xiàn)方法。

一、用循環(huán)結構實現(xiàn)幾何圖形

輸出簡單的幾何圖形,是循環(huán)結構的典型應用之一。對于這一類型的題目,初學者往往直接采用一條或若干條輸出語句printf完成,這樣雖然可以完成題目要求,但是很顯然缺乏靈活性,不符合程序設計的思想。按照正常的程序設計思想,應該先分析圖形的構成,找出其中的規(guī)律:如圖1中的實心三角形,每一行由若干個空格、星號和一個回車換行符構成,將行號、空格數(shù)和星號數(shù)分別設為i、m和n,則可形成表1:

*

***

*****

*******

*********

由表1可以得出,行號i與空格數(shù)m、星號數(shù)n有如下的數(shù)學關系:

m=5-i,n=2×i-1

則實心三角形的構成規(guī)律可以描述為:第i行由(5-i)個空格和(2×i-1)個星號和一個回車符構成。把行號i作為for語句的循環(huán)變量,則此程序中的循環(huán)部分如下:

for(i=1;i<=5;i++)

{

/*輸出(5-i)個空格;*/

for(m=1;m<=5-i;m++)

printf(“”);

/*輸出(2*i-1)個星號;*/

for(n=1;n<=2*i-1;n++)

printf(“*”);

/*輸出回車符;*/

printf(“\n”);

}

采用上面的方法,可以使學生很容易編寫出類似的程序,其中關鍵在于讓學生找出圖形中行號與每一行的空格數(shù)及星號數(shù)的關系。

二、循環(huán)結構在數(shù)組中的應用

在C語言中,for語句經(jīng)常與數(shù)組相結合,用于實現(xiàn)數(shù)組元素的賦值、輸入和輸出。對于初學者來說,更習慣于用順序結構的語句來實現(xiàn)(如圖2左)。我們將圖2左的幾條語句作比較,可以看出在這5條語句中,不同的只有數(shù)組下標,那么就可以將這5條語句合并成一條for語句,將數(shù)組下標換成for語句的循環(huán)變量i,而i的值從0增加到4。按照for語句的基本語法規(guī)則可以很容易寫出圖2右的for語句。

同樣,對于下面這個輸出二維數(shù)組元素的例子,也可以用上述方法實現(xiàn),不過轉換過程比上例要復雜一些:經(jīng)過對比圖3左側方框中順序結構的12條語句,可以發(fā)現(xiàn)也是只有數(shù)組下標在變化,但是由于是二維數(shù)組,行下標和列下標同時都在變化,很顯然不能直接用一條簡單的for語句來實現(xiàn)。但是我們可以把這12條語句細分一下,3條語句為一組,而在同一組中的語句只有列下標在變化,這時可以采用上例中的方法,將列下標都用循環(huán)變量j來代替,得到圖3右上的形式。再次對比圖3右上的4條for語句,不同的是行下標,同樣用新的循環(huán)變量i來代替,合并后得到圖3右下最終二重for循環(huán)的語句。

三、循環(huán)結構中的效率問題

程序設計的初學者往往以完成題目要求的功能為目的,程序的執(zhí)行效率是最容易忽略的一個問題。在循環(huán)結構中,具體表現(xiàn)為循環(huán)體的執(zhí)行次數(shù)。例如,一個經(jīng)典的素數(shù)判定問題。在數(shù)學中素數(shù)的定義為:素數(shù)即指那些大于1,且除了1和它本身外,不能被其它任何數(shù)整除的數(shù)。根據(jù)這一定義,初學者很容易編寫出如下所示的程序段:

int isprime(int n)

{

int i;

for(i=2;i<n;i++)

if(n%i==0)return 0;

return 1;

}

上面的程序,完全可以實現(xiàn)題目要求的功能,初學者往往滿足于此。但是當對for循環(huán)的執(zhí)行次數(shù)進行分析時,我們發(fā)現(xiàn):當n不是素數(shù)時,沒有任何問題;而當n是素數(shù)時,循環(huán)體就要執(zhí)行(n-2)次,而實際上是不需要這么多次的。根據(jù)數(shù)學的知識,可以將次數(shù)降為n/2或n的算術平方根,這樣可以大大減少循環(huán)體的執(zhí)行次數(shù),提高程序的效率。

程序的執(zhí)行效率是編程中時刻需要考慮的問題,也是程序設計中的基本要求。這需要許多算法方面的知識,對于初學者來說,要求可能過高,但是我們在講授過程中要注意向學生灌輸這種思想,從學習之初就要打下良好的基礎,尤其是類似上面例子中這樣顯而易見的情況,可以提醒學生在編制完一道程序以后,檢驗一下,是否還有可優(yōu)化的地方,這對以后進一步學習高級編程都是必要的。

如何讓一名初學者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設計中的基本思想,領會程序設計的精髓,是高級語言程序設計這門課程的講授過程中應該時刻注意的問題。希望本文能在這方面起到一點作用。

參考文獻:

程序設計的基本結構范文第3篇

2、線性表的定義:線性表的順序存儲結構及其插入與刪除運算。棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。線性單鏈表、雙向鏈表與循環(huán)鏈表的結構及其基本運算。

3、樹的基本概念:二叉樹的定義及其存儲結構;二叉樹的前序、中序和后序遍歷。順序查找與二分法查找算法;基本排序算法(交換類排序,選擇類排序,插入類排序)。

4、程序設計基礎:程序設計方法與風格。結構化程序設計。面向對象的程序設計方法,對象,方法,屬性及繼承與多態(tài)性。

5、軟件工程基礎:軟件工程基本概念,軟件生命周期概念,軟件工具與軟件開發(fā)環(huán)境。結構化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書。結構化設計方法,總體設計與詳細設計。

6、軟件測試的方法:白盒測試與黑盒測試,測試用例設計,軟件測試的實施,單元測試、集成測試和系統(tǒng)測試。程序的調試,靜態(tài)調試與報考調試。

7、數(shù)據(jù)庫設計基礎:數(shù)據(jù)庫的基本概念:數(shù)據(jù)庫,數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)模型,實體聯(lián)系模型及 E-R 圖,從 E-R 圖導出關系數(shù)據(jù)模型。

程序設計的基本結構范文第4篇

[關鍵詞] 程序設計; 精品課程; 課程體系結構

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 24. 066

[中圖分類號] G64 [文獻標識碼] A [文章編號] 1673 - 0194(2012)24- 0114- 02

本課程從高技能人才的培養(yǎng)要求出發(fā),以強化技術應用能力培養(yǎng)為主線,構建理論教學體系和實踐教學體系。 VB(Visual Basic簡稱VB,以下同)程序設計是一門實踐性很強的課程,只聽、看、讀是學不會程序設計的,只有讓學生多動手、多實踐,通過編寫調試大量的程序,才能使學生從中理解程序設計的思想方法、積累程序調試的經(jīng)驗,體會成功的樂趣,從而激發(fā)學生的學習興趣。我們堅持程序設計課程以培養(yǎng)學生的創(chuàng)新意識和動手能力為目的。我們的指導思想是:課堂精講,上機多練,課程設計綜合實訓。 使學生初步具備設計、開發(fā)中小型應用程序的綜合素質和技能。

我們在教學中,采用任務驅動與項目教學相結合的方式,以案例提出問題,教師示范解決方案為基本形式,充分調動學生學習積極性為核心,使學生在教師的示范過程中,掌握知識點,學習分析問題的方法,提高解決問題的能力。在教學內容方面,注意了緊密跟蹤計算機技術的最新發(fā)展,不斷增加反映 VB程序設計最新技術的內容,基本做到了與世界同步、與國際接軌。在教學中,堅決貫徹以實際應用為目的,以提高實際編程能力為核心的教學思想,精講多練,不去糾纏過多的語法和算法,著重培養(yǎng)和訓練解決實際問題的能力編程能力,讓學生在編程中學編程,取得了較好的教學效果。

1 課程體系結構的研究與實踐

VB程序設計是計算機信息管理專業(yè)的一門專業(yè)基礎課程?!俺绦蛟O計”是計算機的靈魂,由于VB簡單易學、方便快捷,是近年來發(fā)展最為迅速的面向對象的程序設計語言。

傳統(tǒng)的程序是由過程或函數(shù)組成,過程或函數(shù)由一系列的字符組成,豈不說編寫程序,閱讀起來就晦澀難懂,程序出錯、查錯、修改等都是十分困難的事情。從而,可視化的編程工具應運而生,VB就是其中之一。有了可視化的開發(fā)環(huán)境,編程工作變得越來越輕松、有趣味。便編程人員在編寫應用程序時,既不需要通過反復調試運行調整它們,而只是把由開發(fā)工具提供的各個對象拖放到屏幕上并調整位置、大小、顏色、字體等即可。程序運行時所見的結果就是設計時調整的結果,也就是常說的“所見即所得” 。

鑒此情況,我們對VB程序設計課程進行了專題性的研究,經(jīng)過不斷的教學改革與研究,逐步完善,已建立了具有全新的課程體系結構。

2 就業(yè)為導向,規(guī)劃課程結構

高等職業(yè)教育是就業(yè)教育,因此我們的課程定位為:培養(yǎng)學生具有良好的程序設計風格,面對程序設計具有設計、編譯、調試、維護和重用能力。讓學生學會并掌握運用VB程序設計解決實際問題,利用計算機和編程技術提高我們的生活效率和工作質量,做到事半功倍,也為今后的專業(yè)課打下堅實的基礎。

3 從實用性出發(fā),改革教學方法

為了實現(xiàn)以就業(yè)為導向,以能力為本位的應用性人才的培養(yǎng)目標,結合VB程序設計的基本知識和基本技能,我們對傳統(tǒng)教學進行了改革,以項目為導向,對課程內容與時間進行了壓縮調整,同時確保教學質量,對VB程序設計現(xiàn)有的教材進行大力度的改革與補充。

我們采用了“任務驅動式”的教學方法。以“任務”為目的,以語言理論教學為過程,最終用語言設計“任務”,實現(xiàn)任務的要求,培養(yǎng)學生分析問題的能力及統(tǒng)籌全局、協(xié)調關系的基本素質,使學生樹立面向工程進行程序設計的思想,為其將來從事計算機程序設計打下良好的基礎。

VB程序設計采用工學結合,以項目為導向的教學方法。將知識劃分模塊,項目分解。本門課程共分為三大部分:程序設計基礎、程序設計技巧和程序設計應用。

VB程序設計課程設計的總體理念是第一部分程序設計基礎講述程序設計語言基礎知識和設計規(guī)范;第二部分是對第一部分理論的簡單應用,包括程序調試和程序設計技巧;第三部分是將第一部分和第二部分運用到實際的項目工程中去。

(1) 程序設計基礎。在VB程序設計中非常重要,是程序設計的理論基石,通過基礎部分的學習,讓學生掌握程序設計的基本理論和基本方法,尤其是養(yǎng)成良好的程序設計規(guī)范,為后續(xù)課程的學習打下良好的基礎,也為日后零距離上崗鋪平道路。

(2) 程序設計技巧。這部分是整個課程的紐帶,起著承前啟后的作用。程序設計理論乏味枯燥,通過這一部分的趣味小程序,鞏固學生的理論知識和語言規(guī)范,掌握數(shù)據(jù)的使用方法,掌握鍵盤、鼠標的使用技巧,掌握過程和函數(shù)的定義和調用方法,了解枚舉及自定義數(shù)據(jù)類型等。

(3) 程序設計應用。通對文件管理系統(tǒng)、圖形圖像和多媒體系統(tǒng)、數(shù)據(jù)庫應用系統(tǒng)、網(wǎng)絡類應用系統(tǒng)、ActiveX簡單應用,按照程序設計規(guī)范的要求,在教師的組織和協(xié)調下,獨立上機完成項目。在學生自己動手的實踐活動中,掌握職業(yè)技能和專用知識,從而構建屬于自己的經(jīng)驗和知識體系,提高學生自己的綜合職業(yè)能力。

本課程以講授為主、輔以演示法、實驗法及討論法等多種靈活多樣的教學方法,并結合現(xiàn)代教育技術手段,有效地調動學生的學習積極性,促進學生積極思考,激發(fā)學生潛能。在理論課教學過程中以講授法為主,通過講授使學生獲得VB程序設計課程系統(tǒng)的理論知識。在講授的過程中,課程小組注重講述與講解相結合。通過講述,使學生理清VB程序設計開發(fā)各個環(huán)節(jié)基本內容的邏輯性;通過教師運用深入淺出的語言對教學內容進行說明、解釋和論證,使學生理解和掌握VB程序設計開發(fā)的基本概念和基本原理。具體包括以下5個方面:實施師生互動式教學;實施研究性教學;實施案例分析法教學;實施師生協(xié)作式教學;實施專題討論教學。

4 加強職教理論研究,深入職教理念改革

我們在VB程序設計課程的教學中,盡可能以真實的職業(yè)活動為情境主線,切合學生認知過程,用教材和多媒體為載體,讓學生在實踐中,掌握程序設計技能,懂得程序設計知識,從而構建屬于自己的經(jīng)驗和知識技能體系,經(jīng)過多年的實踐,這種以學生為主,講授和學生上機4 ∶ 6的教學過程設計取得了很好的效果,這為我們進一步深化其他職教課程的改革積累了經(jīng)驗,也為推動職教課的建構奠定了基礎。

VB程序設計是一門實踐性很強的課程,在有限的課時中,學生通過作品參觀、理論學習、校內實踐和參加技能競賽,這種工學交替、理論和實踐交融的學習,由感性認識上升到理性認識,最后升華到職業(yè)認識,以學生職業(yè)能力發(fā)展為目的,培養(yǎng)“零距離”或“近距離”上崗的程序設計人才。

5 探索實踐性課程的考核方法

改變了考試的方法,應知應會的理論知識,采用常規(guī)的考試形式。而對于實踐性較強的內容,采用答辯式、撰寫報告等多種形式進行考試。學生結業(yè)的總成績是本門課程各種形式考核的綜合,今后我們將進一步探索以網(wǎng)絡化學生自我評價為中心,以職業(yè)能力描述的學習目標為標準化的考核新模式。

6 教學模式的設計

VB程序設計課程以就業(yè)為導向,以能力為本位和計算機整合的課程,課程建設突出程序設計和工程項目開發(fā)。鑒于VB程序設計課程的特點,基于項目導向的教學范式,在教學過程中利用在不同階段和不同目標采用了不同的教學方法:

(1) 以真實和模擬的職業(yè)活動為載體,選取典型真實的工程項目效果為實現(xiàn)目標,構建特定的學習情境。

(2) 用仿真模擬課件為載體,在教師的組織和協(xié)調下,讓學生通過自己動手完成程序開發(fā)。

(3) 職業(yè)教育是一種“有目標的活動”,為此整個教學和學習過程依照職業(yè)的工作過程展開,使生獲得完整的職業(yè)行動能力,最終實現(xiàn)“零距離上崗”的就業(yè)目標。

(4) 采用真實職業(yè)環(huán)境與工作要求的考核辦法,全面檢查與評價學習效果。在教學計劃中,設置課程實訓課,通過工程項目應用開發(fā),全面考查學生的學習效果;通過答辯、口試與上機抽查測試,考查學生對知識的掌握程度和實際操作的熟練程度及分析問題與解決問題的能力。

7 特色與創(chuàng)新

(1) 本課程是計算機專業(yè)學生的基礎課程,注重培養(yǎng)學生實際編程能力,用以培養(yǎng)學生分析問題的完備性及統(tǒng)籌全局、協(xié)調關系的基本素質,使學生樹立面向工程進行程序設計的思想,為其將來從事相關專業(yè)打下良好的基礎;

(2) 本課程采用項目驅動的教學方法,將軟件開發(fā)和VB程序設計緊密結合;

(3) 用實際工程案例培養(yǎng)學生實踐水平,為社會提供零距離上崗人才;

(4) 考試方式以筆試、答辯、上機考核等多種形式對學生進行考核。

主要參考文獻

[1] 李勇帆. Visual Basic程序設計案例教程[M]. 北京:人民郵電出版社,2009.

[2] 李勇帆. Visual Basic程序設計上機指導與測試[M]. 北京:人民郵電出版社,2009.

程序設計的基本結構范文第5篇

關鍵詞:面向對象;程序設計;思維方法

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)17-21493-03

1 引言

程序設計作為計算機科學與技術專業(yè)重要的學科基礎課,在由基礎訓練到專業(yè)課教學階段過渡過程中起到承上啟下的作用。它不僅為今后學習專業(yè)課打下堅實的理論基礎和技術基礎,而且為軟件開發(fā)提供必要的理論、方法和工具。由于面向對象程序設計是程序設計發(fā)展的趨勢,越來越多的大學已經(jīng)開設C++、Java、Delphi等面向對象編程語言,作為學生學習程序設計的重要課程。面向對象編程語言的教學過程中,要注重向學生傳授面向對象的基本思想和方法,因為它們對編程實踐具有普遍的指導意義。

2 面向對象思想的重要性

傳統(tǒng)的程序設計是面向過程的,采用結構化程序設計思想。這種方法主要是圍繞設計算法來進行的,即在程序設計過程中常??紤]的問題是采用什么樣的解題方法和步驟。程序設計工作的本質是功能分解,采用“自頂向下、逐步求精”的方法,把所要開發(fā)的應用程序系統(tǒng)功能分解為若干子功能,針對每個子功能編寫程序模塊,所有功能都隱含在程序代碼中。當程序較大和較復雜時,各類數(shù)據(jù)及實現(xiàn)不同功能的過程之間的聯(lián)系變得復雜,以致于程序可靠性低,維護性較差。

面向對象是自結構化方法以來對系統(tǒng)開發(fā)過程的最重要的變革,在20世紀90年代,它代替了結構化方法而成為軟件開發(fā)的主要方法。這種開發(fā)策略基于下面的概念,即系統(tǒng)可以由一系列稱作對象的可重用組件來構建。對象是面向對象系統(tǒng)的基本思維單位,與結構化方法里分離數(shù)據(jù)和功能不同,對象包含了它們兩者,具有一定的屬性(數(shù)據(jù))和行為(功能)。它的實質是從系統(tǒng)組成的角度對系統(tǒng)進行分析,利用類及對象作為基本構造單元,使設計出的軟件模塊化、可復用性、易于維護,降低開發(fā)維護費用,提高軟件質量。

面向對象的精髓在于考慮問題的思路是從現(xiàn)實世界的人類思維習慣出發(fā)的。面向對象語言對程序設計的主要影響并不在于它的語法特征,而在于它所提供的自然的問題求解機制和結構。要理解面向對象語言的能力,應首先理解面向對象技術的基本原理和基本思想。使用面向對象編程工具,如果沒有面向對象的編程思想,好比“不察其辭”,最終仍然是“近而不可見”,難以開發(fā)出優(yōu)秀的系統(tǒng)。教學過程中要注意提醒學生面向對象是一種新的思維模式,不要只把注意力錯誤地放到語法規(guī)范的學習方面,而忽略了對于面向對象方法的學習和理解。

3 面向對象編程思想的培養(yǎng)

在面向對象程序設計中,有三個基本的原則思想,它們是封裝、繼承和多態(tài)性編程思想,只有掌握這些思想“利器”,才能把它們有效地用于指導實際編程。教學過程中要著重闡述這些思想方法。

3.1 引導學生認識封裝性,學會使用對象構造程序

面向對象程序設計方法是以對象為核心,把程序看作是相互協(xié)作又彼此獨立的對象的集合。因此,教學過程中訓練學生的編程思維時,要擺脫傳統(tǒng)的面向過程思維方式的束縛,首先要考慮使用什么對象來解決問題,如何設計對象以及如何讓對象發(fā)生聯(lián)系,即學會以對象為基本模塊來構造程序。

在進行面向對象程序設計時,一一去描述同類對象既不可能也是極大的工作重復,例如,設計一個求圓面積的程序時,不可能一一描述每個圓對象。為了克服類似的復雜性,在程序設計時,采用了人們在處理復雜問題時常用的一種方法―抽象,它是將做什么和怎么做分開,從而隱藏了問題的復雜性。在面向對象程序設計中,抽象是最基本的原則之一,包括數(shù)據(jù)抽象和行為抽象。數(shù)據(jù)抽象是抽象出某類對象的公共屬性,行為抽象是抽象出某類對象的公共行為。這樣,用抽象的方法抓住了編程者所關心的重要信息,而忽略掉一些不重要的細節(jié)部分,從而找到了一類對象的抽象數(shù)據(jù)類型。然后,用面向對象編程工具的類機制把一類對象共有屬性的數(shù)據(jù)結構和操作該數(shù)據(jù)結構的行為捆綁在一起,封裝在一個程序實體內定義成一種類類型,這一過程就是數(shù)據(jù)封裝,簡稱封裝。

下面是對圓對象抽象封裝后得到的C++類:

class Circle{

private:

int radius; //數(shù)據(jù)成員

public:

Circle(int r){radius=r;}//成員函數(shù)

double area(){return 3.14*radius*radius;}//成員函數(shù)

};

從上面的例子中看出,編程工具提供的類機制把對象的數(shù)據(jù)結構和使用數(shù)據(jù)結構的操作封裝在一起,并且通常將數(shù)據(jù)結構部分聲明為private訪問屬性而使其不能被外界直接訪問,或者說對外界隱藏,而只能通過在這個數(shù)據(jù)結構上定義的public訪問屬性的操作接口間接地訪問數(shù)據(jù)結構,使數(shù)據(jù)結構被隱藏在操作接口背后,操作的實現(xiàn)細節(jié)也一樣被隱藏在操作接口的背后;達到了封裝數(shù)據(jù)結構的目的,這種編程思想使得類的使用者只需知道操作的接口,而沒有必要了解數(shù)據(jù)結構及在數(shù)據(jù)結構上的操作的實現(xiàn)細節(jié),大大減輕了使用者的負擔。另外,當類的數(shù)據(jù)結構或操作的實現(xiàn)被修改時,只要操作的接口不變,使用類的程序的其余部分則不必修改,有利于程序的維護。

在定義類之后,以類為模型生成所需的對象,不同對象之間通過發(fā)送消息向其他對象提出服務請求,接受消息的對象主動完成指定的功能,整個程序的功能由所有對象共同完成。例如,在C++程序中編寫下面的代碼,生成了兩個圓對象,并向它們發(fā)消息要求計算自身的面積:

Circle c1(3),c2(5);

c1.area();c2.area();

3.2 領悟繼承性,實現(xiàn)代碼重用

繼承可以說是面向對象程序設計的最重要特點,它不僅自然地體現(xiàn)了現(xiàn)實世界中對象的一般和特殊關系,而且很好地解決了軟件的可重用性問題。在教學過程中可以通過實例,使學生領悟繼承性的“真諦”,并通過它合理地實現(xiàn)代碼重用。

所謂繼承,是指子類自動擁有父類的屬性和操作,并可以增加自己的新的屬性和操作,這就為面向對象程序設計的代碼重用提供了很好的方法支持。在繼承關系中子類還可以被繼承得到子類,如此下去,使得類與類間的繼承關系形成多層次結構,從而能很好地刻畫現(xiàn)實世界中存在的多層次關系。例如,針對某小型公司編寫計算雇員工資的程序,首先,根據(jù)工資計算方法的不同,分析得出該公司存在經(jīng)理、技術人員、銷售員、銷售經(jīng)理四種類型的雇員。根據(jù)各類雇員之間的聯(lián)系,抽取姓名、工號等共性形成頂層的雇員類,經(jīng)理、技術人員、銷售員三個類由雇員類派生而來,雇員類中增加級別屬性,技術人員類中增加專業(yè)屬性,銷售員類中增加銷售額屬性;而銷售經(jīng)理又繼承了經(jīng)理和銷售員兩個類,形成軟件系統(tǒng)的類的層次結構。下面是雇員類與經(jīng)理類的C++定義:

class employee{

char name[10];//姓名

unsigned no; //工號

……

};

class manager: public employee{

int level; //級別

……

};

利用繼承與派生機制,對于類似的問題或只有部分類似的問題都可以通過從已定義的類派生出新類來解決,避免了重復。即繼承性使得用戶在開發(fā)新的應用系統(tǒng)時不必完全從零開始,可以繼承原有的相似系統(tǒng)的功能或者從類庫中選取需要的類,再派生出新的類以實現(xiàn)所需要的功能。繼承機制實現(xiàn)了代碼的重用,加快和簡化了程序設計,極大地提高了開發(fā)效率。

3.3 靈活運用多態(tài)性,簡化程序處理邏輯

在面向對象程序設計領域,多態(tài)性通常特指如下機制:派生類對象可以象基類對象一樣使用,同樣的消息既可以發(fā)送給基類對象也可以發(fā)送給派生類對象。也就是說,在類等級的不同層次中可以共享一個行為的名字,但是不同層次中的類卻各自按自己的需要來實現(xiàn)這個行為。當一個對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)地選用該類中定義的實現(xiàn)算法。

例如,C++語言中是通過虛函數(shù)來實現(xiàn)多態(tài)性的,對于上面提到的計算雇員工資的問題,因為各種類型的雇員的工資計算方法不同,在雇員類、經(jīng)理、技術人員、銷售員類中分別定義如下虛函數(shù):

virtual double salary()=0;

virtual double salary(){ return 5000+level*100; }

virtual double salary(){ return 3000+hour*50; }

virtual double salary(){ return sales*0.04; }

對上述幾個類構成的簡單的類層次結構, 可以用如下的代碼計算工資:

void ShowSalry(const employee& r){cout

并且,可按下面的方式使用多態(tài)程序段:

void main(){

manager e1("Tom",1001,5);

technician e2("Sue",2023,30),

salesman e3("Liu",2012,30);

ShowSalry(e1);

ShowSalry(e2);

ShowSalry(e3);

可見,多態(tài)性為統(tǒng)一地處理一組接口相同但實現(xiàn)不同的操作提供了極好的方法支持, 是一種形而上學的方法, 它使程序邏輯簡單明了、可讀性強。此外, 多態(tài)性還能使程序擴充特別容易,例如,如果我們還希望求其它類型雇員的工資,只需要從employee類直接或間接派生出該類并為其定義不同版本的salary函數(shù),而多態(tài)程序段保持不變。

多態(tài)性機制不僅增加了面向對象軟件系統(tǒng)的靈活性,而且進一步減少了冗余信息,顯著提高了軟件的可重用性和可擴充性。

4 總結

正是由于封裝、繼承和多態(tài)性編程思想, 使面向對象的程序設計方法能自然、 準確地模擬現(xiàn)實世界的問題。面向對象程序的教學,要重視對學生進行面向對象思想的培養(yǎng),只有掌握了面向對象這一優(yōu)秀的理論工具,才能運用面向對象的思想分析、設計,并利用語言支持和實現(xiàn)面向對象理論的語法結構去編程解決問題,編程過程中可以方便地共享已有的軟件資源和程序代碼,從而大幅度提高軟件的開發(fā)效率和減少今后的軟件維護工作量。

參考文獻:

[1] 楊芙清. 面向對象的系統(tǒng)分析[M]. 北京:清華大學出版社,1998.5.

[2] Ian Graham. 袁兆山 譯. 面向對象方法原理與實踐[M]. 北京:機械工業(yè)出版社,2003.1.

[3] 呂鳳翥. C++語言基礎教程[M]. 北京:清華大學出版社,1999.

偃师市| 泾阳县| 清流县| 吉水县| 右玉县| 伊金霍洛旗| 当阳市| 股票| 湛江市| 桑植县| 丽水市| 景泰县| 淳安县| 阳朔县| 抚顺市| 通江县| 阿拉尔市| 临沂市| 鲁甸县| 彩票| 文水县| 上虞市| 贺州市| 大关县| 宜良县| 洛阳市| 尼玛县| 龙岩市| 中方县| 乳源| 怀集县| 郧西县| 甘孜县| 黎平县| 湘乡市| 龙川县| 荃湾区| 霍邱县| 余江县| 雅安市| 忻州市|