公務(wù)員期刊網(wǎng) 精選范文 結(jié)構(gòu)化程序設(shè)計(jì)范文

結(jié)構(gòu)化程序設(shè)計(jì)精選(九篇)

前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的結(jié)構(gòu)化程序設(shè)計(jì)主題范文,僅供參考,歡迎閱讀并收藏。

結(jié)構(gòu)化程序設(shè)計(jì)

第1篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

結(jié)構(gòu)程序化設(shè)計(jì)方法如下:

結(jié)構(gòu)化程序設(shè)計(jì)方法是按照模塊劃分原則以提高程序可讀性和易維護(hù)性、可調(diào)性和可擴(kuò)充性為目標(biāo)的一種程序設(shè)計(jì)方法。在結(jié)構(gòu)化的程序設(shè)計(jì)中,只允許三種基本的程序結(jié)構(gòu)形式,它們是順序結(jié)構(gòu)、分支結(jié)構(gòu)、(包括多分支結(jié)構(gòu))和循環(huán)結(jié)構(gòu),這三種基本結(jié)構(gòu)的共同特點(diǎn)是只允許有一個(gè)流動(dòng)入口和一個(gè)出口,僅有這三種基本結(jié)構(gòu)組成的程序稱(chēng)為結(jié)構(gòu)化程序。結(jié)構(gòu)化程序設(shè)計(jì)適用于程序規(guī)模較大的情況,對(duì)于規(guī)模較小程序也可采用非結(jié)構(gòu)化程序設(shè)計(jì)方法。

(來(lái)源:文章屋網(wǎng) )

第2篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

關(guān)鍵詞:研究;計(jì)算機(jī)編程思想;結(jié)構(gòu)化程序設(shè)計(jì)思想;面向?qū)ο蟮某绦蛟O(shè)計(jì)思想;AOP編程思想

中圖分類(lèi)號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1007-9599 (2012) 05-0000-02

隨著經(jīng)濟(jì)社會(huì)的發(fā)展,信息技術(shù)也迎來(lái)了前所未有的快速發(fā)展,計(jì)算機(jī)編程的應(yīng)用范圍也愈加廣泛。而其中的編程思想,作為一個(gè)主要條件,可以使編程人員編出更好的程序,本文分析了目前編程界最為主流的兩種計(jì)算機(jī)編程思想,同時(shí)和將要興起的新技術(shù)AOP,與OOP相比,其影響力巨大。因此,本文分析了其編程思想以及優(yōu)越性,還闡述了開(kāi)發(fā)步驟。

一、計(jì)算機(jī)編程思想研究

(一)結(jié)構(gòu)化程序設(shè)計(jì)

對(duì)于結(jié)構(gòu)化編程思想,其為面對(duì)繁雜任務(wù)的時(shí)候,防止混亂的一種編程思想,重視將程序結(jié)構(gòu)進(jìn)行規(guī)范化,要按照大腦極易理解的方式,合理組織繁雜問(wèn)題的求解過(guò)程。針對(duì)此編程思想,編程者應(yīng)該遵循結(jié)構(gòu)形式,進(jìn)行程序的設(shè)計(jì)及編寫(xiě),保證程序的正確結(jié)構(gòu),方便地進(jìn)行程序正確性的證明,該思想重點(diǎn)有以下幾點(diǎn)內(nèi)容:

運(yùn)用由頂往下逐漸細(xì)化的方法。因?yàn)榻Y(jié)構(gòu)化編程運(yùn)用了功能抽象與模塊分解,其能合理地把繁雜程序任務(wù)分解為容易處理及控制的一些子任務(wù),隨后實(shí)施級(jí)別更細(xì)的任務(wù)分類(lèi),保證最終分出的子任務(wù)均是進(jìn)行獨(dú)立編程的子程序模塊。隨后根據(jù)某些調(diào)用以及結(jié)構(gòu)關(guān)系,將子程序模塊進(jìn)行合理組織,最終得出需要的程序。根據(jù)結(jié)構(gòu)化程序設(shè)計(jì)思想,得出的程序具有如下好處:很好的結(jié)構(gòu)、每個(gè)模塊之間有著簡(jiǎn)單清楚的關(guān)系、在各個(gè)模塊內(nèi),均有基本單元構(gòu)成。因此,得出的程序清楚易讀,良好的可理解性,正確性還易驗(yàn)證,維護(hù)、調(diào)試以及修改容易進(jìn)行。出現(xiàn)了結(jié)構(gòu)化編程思想,使之前軟件開(kāi)發(fā)存在的混亂狀況消除,編程人員編寫(xiě)的程序存在優(yōu)越的結(jié)構(gòu)。還因?yàn)檫\(yùn)用“自頂向下以及逐步細(xì)化”的方法,使人們智力合理地組織起來(lái),對(duì)軟件工程化研發(fā)是有益的。所以程序維護(hù)以及設(shè)計(jì)工作效率得以提升。

若干基本結(jié)構(gòu)構(gòu)成程序,對(duì)于任意的大型程序,均包括三種基本結(jié)構(gòu),這些基本結(jié)構(gòu)使某個(gè)結(jié)構(gòu)化的程序得以順序地組成。主要有順序、選擇以及循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)。軟件界的具體實(shí)踐以及結(jié)構(gòu)化定理已證明,對(duì)于任意繁雜問(wèn)題的程序設(shè)計(jì),均可運(yùn)用順序結(jié)構(gòu)、選擇結(jié)構(gòu)以及循環(huán)結(jié)構(gòu)構(gòu)成,同時(shí)還具備下面一些特征:僅一個(gè)入口及出口;在結(jié)構(gòu)內(nèi),沒(méi)有死循環(huán),在程序內(nèi),以上三種基本結(jié)構(gòu)的順序執(zhí)行關(guān)系得以構(gòu)成。

根據(jù)功能,能把大型程序劃分為若干基本功能模塊。一些子模塊一起構(gòu)成各個(gè)模塊,每個(gè)模塊在功能方面互相獨(dú)立,各個(gè)功能模塊均有進(jìn)行計(jì)算機(jī)控制以及數(shù)據(jù)處理的功能。盡量使模塊間的聯(lián)系簡(jiǎn)潔。最終將模塊根據(jù)某些層次關(guān)系,實(shí)施組織,繁雜程序的功能得以構(gòu)成。

(二)面向?qū)ο蟮某绦蛟O(shè)計(jì)

針對(duì)面向?qū)ο蟮某绦蛟O(shè)計(jì),其編程思想是運(yùn)用消息、對(duì)象、類(lèi)、繼承以及封裝等這些基本概念,實(shí)施程序設(shè)計(jì)。為使結(jié)構(gòu)化程序設(shè)計(jì)方法處理不了的代碼重用這些問(wèn)題得以解決,便給出了面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù),面向?qū)ο蟮某绦蛟O(shè)計(jì)編程思想包括如下特點(diǎn):面向?qū)ο蟮奶攸c(diǎn)之一就是封裝,其為類(lèi)與對(duì)象概念的重要特征。封裝給模塊帶來(lái)了比較良好的獨(dú)立性,程序修改與維護(hù)起來(lái)較為簡(jiǎn)單。抽象包括數(shù)據(jù)與過(guò)程抽象。繼承性使軟件的可重用性這個(gè)問(wèn)題得到良好處理。多態(tài)性使應(yīng)用程序函數(shù)的同名這類(lèi)問(wèn)題得到良好解決。

面向?qū)ο蟮木幊趟枷氪嬖诤芏鄡?yōu)越性,其減少了程序開(kāi)發(fā)時(shí)間,提升了可靠性,開(kāi)發(fā)出來(lái)的程序更有強(qiáng)壯性,維護(hù)起來(lái)更容易。面向?qū)ο缶幊桃驗(yàn)榫哂休^高的可重用性,針對(duì)應(yīng)用程序,能積極運(yùn)用成熟的類(lèi)庫(kù),進(jìn)而使軟件開(kāi)發(fā)效率得以極大提高,所以,軟件界對(duì)這種面向?qū)ο蟮木幊趟枷脒M(jìn)行提倡運(yùn)用。日益增多的編程人員認(rèn)可并運(yùn)用了面向?qū)ο蟮木幊趟枷?,同時(shí)結(jié)構(gòu)化編程思想在進(jìn)行具有比較強(qiáng)功能性的軟件設(shè)計(jì)里,其指導(dǎo)作用仍然得以發(fā)揮。實(shí)際上,以上兩種編程思想沒(méi)有互相隔離,卻是相互支持、聯(lián)系的。在如今的軟件界,進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的時(shí)候,具有公認(rèn)的編程公式:其一為對(duì)象=算法十?dāng)?shù)據(jù)結(jié)構(gòu),其二為程序=對(duì)象+對(duì)象,通過(guò)公式,能觀察出以上兩種編程思想的關(guān)系及區(qū)別。進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)時(shí)候,仍然不能脫離完成算法的結(jié)構(gòu)化程序設(shè)計(jì),其中的結(jié)構(gòu)化程序設(shè)計(jì)還是編寫(xiě)對(duì)象進(jìn)行操作的重要所在。

二、AOP編程思想研究

(一)AOP將系統(tǒng)視為關(guān)注點(diǎn)

其實(shí)它為GOF(Observer Design Pattern)設(shè)計(jì)模式的一種持續(xù),進(jìn)行了被調(diào)用者與調(diào)用者間解耦的強(qiáng)調(diào),給開(kāi)發(fā)人員帶來(lái)進(jìn)行橫切關(guān)注點(diǎn)-Crosscutting Concern描述的合理機(jī)制,還可以把橫切關(guān)注點(diǎn)主動(dòng)地織入-weaving于面向?qū)ο蟮能浖到y(tǒng)內(nèi),確保橫切關(guān)注點(diǎn)模塊化得以實(shí)現(xiàn),進(jìn)行方面-Aspect代碼的合理劃分,橫切關(guān)注點(diǎn)顯得極易進(jìn)行處理。開(kāi)發(fā)人員進(jìn)行編譯的時(shí)候,插入、更改或者除去系統(tǒng)的方面,更可能重用系統(tǒng)的方面。由于開(kāi)發(fā)環(huán)境各不相同,關(guān)于概念也會(huì)有所不同。

(二)針對(duì)的問(wèn)題

AOP通?;谶M(jìn)行業(yè)務(wù)處理中的切面實(shí)施提取,進(jìn)行處理的時(shí)候,其面對(duì)著其中的一個(gè)步驟或者哪個(gè)環(huán)節(jié),以確保整個(gè)邏輯中每個(gè)部分間低耦合性產(chǎn)生的隔離作用。針對(duì)動(dòng)詞方面,其重視的為橫向的,即為整個(gè)邏輯中一個(gè)方面或者某個(gè)片段,例如:權(quán)限以及日志管理,一般情況下,其進(jìn)行某些軟件系統(tǒng)自身東西的關(guān)注。并非面向?qū)ο筮M(jìn)行業(yè)務(wù)邏輯的關(guān)注。運(yùn)用有效松散方式,使系統(tǒng)間的耦合度這些問(wèn)題減少,方面即為它的模塊化單位。

(三)軟件性能

1.代碼擴(kuò)展性

對(duì)于AOP,因?yàn)榉矫婺K并不了解橫切關(guān)注點(diǎn),因此極易進(jìn)行新方面的增加,并投入新功能。同時(shí),把新的模塊加到系統(tǒng)中的時(shí)候,已經(jīng)存在的方面會(huì)自動(dòng)橫切進(jìn)入,確保系統(tǒng)容易擴(kuò)展。

2.代碼冗余度

運(yùn)用最小的耦合進(jìn)行各個(gè)關(guān)注點(diǎn)的有效處理,保證雖然為橫切關(guān)注點(diǎn),還是模塊化。如此實(shí)現(xiàn)的系統(tǒng),它的代碼冗余不大。進(jìn)行模塊化實(shí)現(xiàn),促使系統(tǒng)的維護(hù)與理解更為容易。

3.代碼重用性

AOP將各個(gè)方面變成為獨(dú)立模塊,在模塊間,其為松散耦合。能使用其它獨(dú)立的日志寫(xiě)入器取代此時(shí)的,進(jìn)而將日志合理地寫(xiě)入數(shù)據(jù)庫(kù)中,保證與各種日志寫(xiě)入要求相符。正確實(shí)現(xiàn)松散耦合,經(jīng)常象征著代碼重用性更為良好。

(四)AOP的開(kāi)發(fā)程序

基于面向?qū)ο缶幊?OOP這種方法,AOP才得以改進(jìn),其為具有創(chuàng)新性的一種軟件開(kāi)發(fā)方法。一般具有如下的幾個(gè)開(kāi)發(fā)程序:

1.方面分解

進(jìn)行分解,要得出橫切關(guān)注點(diǎn)。在這個(gè)步驟中,將系統(tǒng)級(jí)的橫切關(guān)注點(diǎn)與核心模塊級(jí)關(guān)注點(diǎn)進(jìn)行合理分離。

2.關(guān)注點(diǎn)實(shí)現(xiàn)

進(jìn)行關(guān)注點(diǎn)的獨(dú)立實(shí)現(xiàn),將各個(gè)需求映射成為代碼,編譯器隨后將其翻譯成為一些可執(zhí)行代碼。能依靠另外的編程范型,把其當(dāng)作前提,確?;A(chǔ)范型具有的優(yōu)勢(shì)還得以保留。比如:AOP能利用OOP當(dāng)作基礎(chǔ)范型,直接地將OOP擅長(zhǎng)處理普通關(guān)注點(diǎn)的優(yōu)勢(shì)引用來(lái)。利用如此的實(shí)現(xiàn),一般的獨(dú)立關(guān)注點(diǎn)能利用OOP技術(shù),其和過(guò)程型語(yǔ)言為很多OOP語(yǔ)言的基礎(chǔ)相似。關(guān)注點(diǎn)實(shí)現(xiàn)因?yàn)榘凑罩付ㄟ^(guò)程這一形式產(chǎn)生,能運(yùn)用C、C++或者Java這些傳統(tǒng)語(yǔ)言。

3.方面的重新組合

在此步驟中,方面集成器進(jìn)行某個(gè)模塊單元的建立,也就是方面,進(jìn)行重組標(biāo)準(zhǔn)的指定,常把重組過(guò)程稱(chēng)為結(jié)合或者織入,運(yùn)用合適的信息進(jìn)行最終系統(tǒng)的組建。

AOP實(shí)現(xiàn)能夠運(yùn)用許多方式進(jìn)行織入的實(shí)現(xiàn),進(jìn)行源碼至源碼的變換,進(jìn)行各方面源碼的預(yù)處理,織入過(guò)的源碼得以出現(xiàn),再將織入過(guò)的源碼傳到編譯器,最終可執(zhí)行代碼得以生成。運(yùn)用此方式,基于Java的一個(gè)AOP實(shí)現(xiàn),能將很多方面變換為Java源代碼,隨后通過(guò)Java編譯器,將其變換為字節(jié)碼,還能處于字節(jié)碼級(jí)別進(jìn)行織入的執(zhí)行,實(shí)際上,字節(jié)碼自身也為一種源碼。同時(shí),對(duì)于底層中的執(zhí)行系統(tǒng)Java虛擬機(jī),還能設(shè)計(jì)成為對(duì)AOP支持。基于Java的AOP實(shí)現(xiàn)要是運(yùn)用此方式,能在虛擬機(jī)中,把織入規(guī)則載入,隨后就之后載入的類(lèi)均利用此規(guī)則,實(shí)際上,其能進(jìn)行just-in-time方面織入的執(zhí)行。

三、總結(jié)

由于編程實(shí)踐的一直開(kāi)展,編程思想就會(huì)產(chǎn)生,產(chǎn)生的各種新編程思想,均對(duì)編程實(shí)踐進(jìn)行合理指導(dǎo),且均使計(jì)算機(jī)軟件開(kāi)發(fā)的質(zhì)量與速度得以提升。在當(dāng)今,AOP實(shí)現(xiàn)與語(yǔ)法尚未進(jìn)行完全規(guī)范,其為基于OOP以后的編程思想的一種創(chuàng)新,其能選用OOP當(dāng)作基礎(chǔ)范型,具有讓人無(wú)法抗拒的好處,業(yè)界會(huì)進(jìn)行認(rèn)可、接受,但是還要更深刻地探究其中存在的問(wèn)題。

參考文獻(xiàn):

[1]李明.C++程序設(shè)計(jì)[M].北京:中央廣播電視大學(xué)出版社,2008:l96-198

第3篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

關(guān)鍵詞:C語(yǔ)言;算法為先;教學(xué)模式

中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B

1引言

為適應(yīng)社會(huì)和經(jīng)濟(jì)的信息化需要,掌握計(jì)算機(jī)技術(shù)顯得尤為重要。C語(yǔ)言以它結(jié)構(gòu)化豐富、靈活性大、可移植性強(qiáng)、效率高等優(yōu)點(diǎn),被廣大高校作為計(jì)算機(jī)專(zhuān)業(yè)基礎(chǔ)課,以及許多非計(jì)算機(jī)專(zhuān)業(yè)學(xué)習(xí)程序設(shè)計(jì)的首選課。但是又由于C語(yǔ)言涉及的概念復(fù)雜,規(guī)則繁多,數(shù)據(jù)類(lèi)型和運(yùn)算符豐富等特點(diǎn),使許多初學(xué)者望而生畏。很多文獻(xiàn)致力于研究好的教學(xué)方法,幫助學(xué)生掌握C語(yǔ)言語(yǔ)法及上機(jī)技巧,這在一定程度上改善了教學(xué)效果,但是學(xué)生的學(xué)習(xí)熱情仍然缺乏積極主動(dòng)。本文通過(guò)分析算法在C語(yǔ)言教學(xué)中的重要作用,進(jìn)一步探討算法的教學(xué)方法,目的是從根本上激發(fā)學(xué)生的學(xué)習(xí)熱情,降低學(xué)習(xí)難度。

2C語(yǔ)言教學(xué)中常見(jiàn)問(wèn)題分析

算法設(shè)計(jì)、基本語(yǔ)法規(guī)則、程序調(diào)試是C語(yǔ)言教學(xué)的核心內(nèi)容。算法注重解決某一問(wèn)題采用的方法步驟,語(yǔ)法注重語(yǔ)言規(guī)范,用規(guī)范的C語(yǔ)言描述的算法必須通過(guò)上機(jī)調(diào)試才能實(shí)現(xiàn),三個(gè)核心內(nèi)容緊密聯(lián)系。然而在教學(xué)環(huán)節(jié)中,教材內(nèi)容基于語(yǔ)法體系,通常采用課堂講語(yǔ)法、上機(jī)調(diào)程序的教學(xué)模式,忽視了算法在教學(xué)中的積極作用,殊不知過(guò)細(xì)的語(yǔ)法知識(shí)易使學(xué)生失去興趣,靈活的編輯環(huán)境讓學(xué)生望而卻步,學(xué)生的學(xué)習(xí)熱情很難調(diào)動(dòng)起來(lái)。

2.1語(yǔ)法細(xì)節(jié)易使學(xué)生失去學(xué)習(xí)興趣

通常C語(yǔ)言是學(xué)生接觸的第一門(mén)程序設(shè)計(jì)語(yǔ)言,任何程序主要由數(shù)據(jù)和操作兩部分組成,圍繞這一特點(diǎn),C語(yǔ)言教學(xué)內(nèi)容可歸納為:算法,數(shù)據(jù)結(jié)構(gòu),程序結(jié)構(gòu)三部分。算法是編程的指導(dǎo)思路;數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織形式,可細(xì)分為基本數(shù)據(jù)類(lèi)型,構(gòu)造類(lèi)型,指針類(lèi)型、位運(yùn)算;程序結(jié)構(gòu)是操作語(yǔ)句的組織形式,具體包括預(yù)處理,函數(shù),順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。雖然C語(yǔ)言知識(shí)結(jié)構(gòu)清晰,但是它是面向過(guò)程的編程語(yǔ)言,具有靈活的編程格式及豐富的運(yùn)算符和函數(shù),如果對(duì)語(yǔ)法細(xì)節(jié)不熟悉,以及相關(guān)概念混淆不清,很難編出正確的程序。教師往往投入較多課時(shí),講解C語(yǔ)言語(yǔ)法,而繁多的語(yǔ)法細(xì)則,不僅使學(xué)生難于記憶,而且容易誤導(dǎo)學(xué)生的編程思路。例如scanf函數(shù)的應(yīng)用:

scanf函數(shù)的一般使用形式為:scanf(格式控制,地址表列)。

格式控制是用雙撇號(hào)括起來(lái)的字符串,它包含兩種 信息:

(1)%和格式字符,如%d,%c,%s等,它的作用是按指定的格式輸入數(shù)據(jù);

(2) 普通字符,即在數(shù)據(jù)輸入時(shí),需要原樣輸入的 字符。

地址表列由若干個(gè)地址組成,通常是變量的地址或字符串的首地址。輸入多個(gè)數(shù)據(jù)時(shí),空格,回車(chē)鍵,跳格鍵為默認(rèn)分隔符。

如:“scanf(“%d%d%d”,&a,&b,&c);”語(yǔ)句,運(yùn)行時(shí)輸入:689L,可得到變量a,b,c的值。如果輸入語(yǔ)句變?yōu)?“scanf(“%d,%d,%d” ,&a,&b,&c);”,僅添加了兩個(gè)逗號(hào),仍按以上方式輸入,則會(huì)出錯(cuò)。原因在于格式控制部分出現(xiàn)的普通字符“,”,在數(shù)據(jù)輸入時(shí)要原樣輸入,正確的輸入方式為:6,8,9L??梢?jiàn)C語(yǔ)言語(yǔ)法格式非常靈活。

運(yùn)用scanf函數(shù)輸入字符時(shí),又出現(xiàn)特殊性。

如:“scanf(“%c%c%c” ,&c1,&c2,&c3);”語(yǔ)句,運(yùn)行時(shí)輸入:abcL,目的是將a賦給c1,b賦給c2,c賦給c3。用“printf(“%c,%c,%c”, c1,c2,c3);”語(yǔ)句輸出,結(jié)果卻為a,,b。出錯(cuò)原因在于:%c格式字符不需要空格作為輸入字符的間隔。正確的輸入為:abcL。

然而,用scanf函數(shù)輸入多個(gè)字符串時(shí),空格又成為有效的分隔符。

如:“scanf(“%s%s%s” ,c1,c2,c3);”語(yǔ)句,其中c1,c2,c3為字符數(shù)組名,若輸入數(shù)據(jù):How are you? L,則c1數(shù)組的數(shù)據(jù)是“How”; c2數(shù)組是“are”;c3數(shù)組是“you?”。若將語(yǔ)句改為“scanf(“%s”,c1);”,輸入字符串:How are you? L,用“printf(“%s”,c1);”輸出,則只顯示How,與原意不同。如果一定要將帶空格的字符串輸入到字符數(shù)組c1,需要用到另一個(gè)輸入函數(shù),如“gets(c1) ;”。

雖然任何一個(gè)C程序輸入數(shù)據(jù),都可能用到scanf函數(shù),但是它靈活的編程格式,往往使初學(xué)者在具體運(yùn)用時(shí)舉棋不定,忘卻抓住編程題目的實(shí)質(zhì)性要求。教材中還有許多值得注意和思考的語(yǔ)法細(xì)節(jié),學(xué)生編程時(shí),如果缺乏解題思路的引導(dǎo),常因語(yǔ)法的困擾而失去編程興趣。

2.2編程環(huán)境易讓學(xué)生望而生畏

上機(jī)操作是學(xué)習(xí)程序設(shè)計(jì)的必備環(huán)節(jié),學(xué)生可以驗(yàn)證語(yǔ)句的正確性,測(cè)試程序的功能,進(jìn)一步增強(qiáng)對(duì)語(yǔ)法知識(shí)的理解和記憶。但是C語(yǔ)言編輯環(huán)境的一些特點(diǎn),又讓學(xué)生望而生畏。

首先,編輯環(huán)境基于DOS,不像其它可視化語(yǔ)言有友好的交互界面,加之初學(xué)者對(duì)語(yǔ)法知識(shí)不熟悉,編程時(shí)稍有不慎就會(huì)出錯(cuò)。如經(jīng)常字母大小寫(xiě)不分;語(yǔ)句末尾忘加“;”;關(guān)系運(yùn)算符“= =”誤用為賦值運(yùn)算符“=”等。初學(xué)者對(duì)出錯(cuò)提示缺乏了解,不知道錯(cuò)在哪里,更無(wú)從改正,經(jīng)常一個(gè)小小的錯(cuò)誤導(dǎo)致整個(gè)程序無(wú)法運(yùn)行。

其次,C語(yǔ)言編譯程序?qū)φZ(yǔ)法檢測(cè)不像其它高級(jí)語(yǔ)言那么嚴(yán)格,這種風(fēng)格雖然給編程留下“靈活的余地”,卻常導(dǎo)致一些非語(yǔ)法性和非算法性的隱型錯(cuò)誤。比如程序:

main ( )

{

int a,b;

a = 32767;

b = a+1;

printf(“%d”,b);

}

運(yùn)行結(jié)果為-32768,不正確,原因在于發(fā)生了溢出。系統(tǒng)運(yùn)行時(shí)并不報(bào)錯(cuò),程序中潛伏的隱型錯(cuò)誤,給編程帶來(lái)很多麻煩,增加了調(diào)試難度,對(duì)編程者提出更高要求,只有他們較全面地掌握了計(jì)算機(jī)知識(shí),才可能檢查出錯(cuò)誤。然而初學(xué)者往往只懂得編程的一部分知識(shí),這使他們感到C語(yǔ)言編程即抽象又復(fù)雜。如果沒(méi)有濃厚的興趣驅(qū)動(dòng),很容易在不知所措中放棄編程。

2.3算法為先,激發(fā)學(xué)習(xí)熱情

“C語(yǔ)言”課程長(zhǎng)期沿襲傳統(tǒng)教學(xué)模式,以語(yǔ)法體系為脈絡(luò)展開(kāi)教學(xué),重視語(yǔ)法細(xì)節(jié)和操作技巧,忽視算法對(duì)編程的指導(dǎo)作用,學(xué)生見(jiàn)木不見(jiàn)林,容易失去興趣,經(jīng)過(guò)一個(gè)學(xué)期的學(xué)習(xí),除了掌握一些零星的語(yǔ)法外,收獲甚微,面對(duì)具體的編程問(wèn)題,無(wú)從下手。從事軟件開(kāi)發(fā)的人都知道,軟件開(kāi)發(fā)過(guò)程包括:可行性研究,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測(cè)試,維護(hù)等幾個(gè)階段。重點(diǎn)在于先設(shè)計(jì),后編碼,并且整個(gè)開(kāi)發(fā)環(huán)節(jié)需要不斷查閱資料,反復(fù)調(diào)試修改,最終才能設(shè)計(jì)出可運(yùn)行的軟件,單靠記憶和背誦一些語(yǔ)法知識(shí),根本無(wú)法適應(yīng)實(shí)際需要。

在教學(xué)過(guò)程中,正確處理語(yǔ)法與算法的關(guān)系,是提高編程能力的關(guān)鍵。算法是程序設(shè)計(jì)的靈魂,沒(méi)有正確的算法,計(jì)算機(jī)解決不了任何問(wèn)題,語(yǔ)言只是實(shí)現(xiàn)算法的工具,要從算法實(shí)現(xiàn)的角度來(lái)介紹語(yǔ)言,而不是用語(yǔ)言來(lái)套用算法。程序設(shè)計(jì)課程本身是綜合性較強(qiáng)的一門(mén)課,注重由設(shè)計(jì)算法到書(shū)寫(xiě)程序并進(jìn)行調(diào)試的整個(gè)過(guò)程,它要求學(xué)生首先明晰結(jié)構(gòu)化程序設(shè)計(jì)思路,知道怎么做,其次要求學(xué)生用扎實(shí)的語(yǔ)法知識(shí)實(shí)現(xiàn)編程,最后通過(guò)上機(jī)調(diào)試保證程序正確運(yùn)行。然而,這個(gè)過(guò)程并非一帆風(fēng)順,會(huì)遇到許多意想不到的困難,需要耐心與毅力,只有具備真正的興趣和強(qiáng)烈的好奇心,才容易完成。

經(jīng)過(guò)研究與實(shí)踐,教師在教學(xué)中如果注重算法為先,從算法實(shí)現(xiàn)的角度來(lái)介紹語(yǔ)法,那么不僅可以加深學(xué)生對(duì)語(yǔ)法知識(shí)的理解,增強(qiáng)語(yǔ)言應(yīng)用能力,而且通過(guò)構(gòu)造算法,培養(yǎng)了學(xué)生的邏輯思維,增強(qiáng)了學(xué)生分析和解決問(wèn)題的實(shí)踐能力。學(xué)生面對(duì)新的問(wèn)題,會(huì)從程序設(shè)計(jì)思想的角度出發(fā),先設(shè)計(jì)算法,在迫切想要實(shí)現(xiàn)的好奇心下,克服學(xué)習(xí)語(yǔ)法和調(diào)試程序的各種困難,變被動(dòng)為主動(dòng)。著名計(jì)算機(jī)科學(xué)家Dijkstra曾提到:“學(xué)編程是一個(gè)由新奇到熟悉循序漸進(jìn)的過(guò)程”,繼而又說(shuō):“在這種激進(jìn)的新奇中含有愉悅的嘗試”。

3算法教學(xué)建議

由上分析可知,C語(yǔ)言教學(xué)目標(biāo)不僅僅是要求學(xué)生掌握語(yǔ)法規(guī)則或再現(xiàn)簡(jiǎn)單程序,更重要的是要求學(xué)生具備編程實(shí)踐能力。傳統(tǒng)教學(xué)方式,學(xué)生形成以語(yǔ)言為中心的思維模式,編程能力差。教師應(yīng)引導(dǎo)學(xué)生逐步形成以算法為中心的思維模式,提高編程能力。但是算法的學(xué)習(xí)和掌握并不是一蹴而就,必須依靠平時(shí)訓(xùn)練和知識(shí)積累,以下提幾點(diǎn)學(xué)習(xí)建議。

3.1以結(jié)構(gòu)化程序設(shè)計(jì)思想為核心,開(kāi)拓算法設(shè)計(jì)思路

學(xué)習(xí)的認(rèn)知規(guī)律是將復(fù)雜問(wèn)題簡(jiǎn)單化,以便于初學(xué)者理解和接收。C語(yǔ)言程序設(shè)計(jì)遵循結(jié)構(gòu)化程序設(shè)計(jì)方法,該方法提高了程序的可讀性,方便了程序的調(diào)試和維護(hù),最重要的是該方法不拘泥于算法多變的外觀形式,總結(jié)出算法結(jié)構(gòu)的內(nèi)在規(guī)律。學(xué)生掌握了這種規(guī)律,面對(duì)新的問(wèn)題,很容易進(jìn)行知識(shí)結(jié)構(gòu)的遷移,復(fù)雜的編程問(wèn)題將變得簡(jiǎn)單。

結(jié)構(gòu)化程序設(shè)計(jì)包括結(jié)構(gòu)化算法設(shè)計(jì)和結(jié)構(gòu)化編程。由順序、選擇、循環(huán)三種基本結(jié)構(gòu)(或基本結(jié)構(gòu)的簡(jiǎn)單變形),按由上到下的順序排列,組成的算法稱(chēng)為結(jié)構(gòu)化算法。已經(jīng)證明,結(jié)構(gòu)化算法可以解決任何問(wèn)題。對(duì)于特別復(fù)雜的編程項(xiàng)目,可以先采用自頂向下、逐步細(xì)化的分析方法,或采用模塊化設(shè)計(jì)方法,把大任務(wù)分解為容易求解的若干子任務(wù),分而治之。對(duì)于非結(jié)構(gòu)化算法,還可以用等價(jià)的結(jié)構(gòu)化算法替換。在設(shè)計(jì)好一個(gè)結(jié)構(gòu)化算法之后,就可以進(jìn)行結(jié)構(gòu)化編程,C語(yǔ)言提供了與三種基本結(jié)構(gòu)相對(duì)應(yīng)的語(yǔ)句,進(jìn)行結(jié)構(gòu)化編程也并非難事。

由上可知,既然基本結(jié)構(gòu)的順序組合,可以表示任何復(fù)雜的算法結(jié)構(gòu),并且基本結(jié)構(gòu)易于用C語(yǔ)句實(shí)現(xiàn),那么學(xué)生只要深刻理解并熟練掌握這三種基本結(jié)構(gòu),就會(huì)提高設(shè)計(jì)算法和編寫(xiě)程序的能力。表1對(duì)算法的三種基本結(jié)構(gòu)進(jìn)行了總結(jié)。

說(shuō)明:算法的表示方法很多,其中N-S流程圖最適于表示結(jié)構(gòu)化算法。表1列出了算法的三種基本結(jié)構(gòu)以及相應(yīng)的N-S流程圖和語(yǔ)句的主要表示形式,學(xué)生通過(guò)該表很容易理解算法,N-S圖,編程三者之間的關(guān)系。

教師要向?qū)W生說(shuō)明,任何復(fù)雜算法都是由這三種基本結(jié)構(gòu)構(gòu)成,構(gòu)造算法其實(shí)很容易,大家之所以覺(jué)得困難,是因?yàn)闆](méi)有深刻理解A、B代表的含義。正如表中提到:A、B較靈活,既可以代表選擇結(jié)構(gòu)也可以代表循環(huán)結(jié)構(gòu),選擇結(jié)構(gòu)中還可以再套用一個(gè)循環(huán),循環(huán)結(jié)構(gòu)中還可以再嵌套循環(huán)或選擇……由于A、B代表含義不同,可能構(gòu)造出各種各樣不同的N-S圖,教師邊闡述,邊在黑板上繪制,開(kāi)拓學(xué)生的思維空間。最后總結(jié):能構(gòu)造多少N-S圖,就可能存在多少算法;順序、選擇、循環(huán)是三塊基本的積木,形式多樣的算法是由它們搭建而成,用于解決實(shí)際問(wèn)題。這種教學(xué)方式,以簡(jiǎn)單的N-S圖為切入點(diǎn),學(xué)生很容易發(fā)現(xiàn)N-S圖的多樣性,算法的多樣性,實(shí)際問(wèn)題的多樣性之間的聯(lián)系,從而激發(fā)設(shè)計(jì)算法的濃厚興趣。

正確的解題算法將減少程序的邏輯錯(cuò)誤,算法用N-S圖描述出來(lái)后,利用相應(yīng)的C語(yǔ)句,學(xué)生很容易編寫(xiě)出程序的主體代碼,至于其它編程細(xì)節(jié),可以引導(dǎo)學(xué)生查閱資料。這樣,學(xué)生對(duì)語(yǔ)法的學(xué)習(xí)由被動(dòng)變?yōu)橹鲃?dòng)。精心培植的幼苗,一定期盼開(kāi)花結(jié)果,學(xué)生經(jīng)過(guò)一番努力,編寫(xiě)出的程序代碼,也一定希望能用計(jì)算機(jī)實(shí)現(xiàn),于是上機(jī)調(diào)試也變得既有目的性,挑戰(zhàn)性又有趣味性。

3.2案例式教學(xué),一題多解,培養(yǎng)設(shè)計(jì)算法的邏輯思維

C語(yǔ)言是實(shí)踐性很強(qiáng)的一門(mén)課程,學(xué)生除了掌握結(jié)構(gòu)化程序設(shè)計(jì)方法外,還必須進(jìn)行大量編程訓(xùn)練。通常情況下,一個(gè)程序是用哪種語(yǔ)言實(shí)現(xiàn)的并不重要,關(guān)鍵在于算法設(shè)計(jì)的優(yōu)劣。計(jì)算機(jī)科學(xué)家N. Wirth教授提出了一個(gè)著名公式:算法+數(shù)據(jù)結(jié)構(gòu)=程序,由此可見(jiàn)程序設(shè)計(jì)的本質(zhì)在于先設(shè)計(jì)出解決問(wèn)題的算法。

教學(xué)初期,學(xué)生對(duì)語(yǔ)法知識(shí)了解甚少,教師可以根據(jù)每節(jié)課的教學(xué)目標(biāo)和內(nèi)容,精選程序例題,將重點(diǎn)放在算法的設(shè)計(jì)思路和方法上,逐步培養(yǎng)學(xué)生建立正確的思維模式。學(xué)生設(shè)計(jì)算法時(shí),常犯的錯(cuò)誤是,不會(huì)從計(jì)算機(jī)角度出發(fā),分析實(shí)際問(wèn)題內(nèi)在的邏輯關(guān)系,而習(xí)慣于按照人的思維方式設(shè)計(jì)求解過(guò)程,算法往往無(wú)法用計(jì)算機(jī)操作實(shí)現(xiàn)。因此改變學(xué)生思維習(xí)慣,培養(yǎng)邏輯分析能力,尤為重要。

實(shí)踐證明,對(duì)同一問(wèn)題,設(shè)計(jì)多種有效算法,并對(duì)算法進(jìn)行優(yōu)化選擇,有利于培養(yǎng)學(xué)生邏輯思維。通過(guò)一題多解,既拓展了學(xué)生的解題思路,增強(qiáng)了學(xué)生對(duì)同類(lèi)問(wèn)題求解的熟練程度,同時(shí)又潛移默化地培養(yǎng)了學(xué)生思維的科學(xué)性、嚴(yán)謹(jǐn)性。通常,不同問(wèn)題間存在某種共性,一些基本算法掌握熟練后,學(xué)生很容易舉一反三解決不同問(wèn)題,樹(shù)立起編程的信心。

例如通過(guò)一題多解,讓學(xué)生熟練三個(gè)數(shù)由大到小排序的算法,進(jìn)而引導(dǎo)學(xué)生對(duì)一組無(wú)序數(shù)據(jù)進(jìn)行排列,用N-S圖描述算法,更能反映出不同問(wèn)題之間的聯(lián)系和區(qū)別。

再如典型例題:用100元錢(qián)買(mǎi)100只雞,每只公雞5元,每只母雞3元,每3只小雞1元,要求每種雞至少買(mǎi)一只,而且必須是整只,問(wèn)各種雞各買(mǎi)多少只?

對(duì)該問(wèn)題設(shè)計(jì)多種算法,既幫助學(xué)生熟悉了循環(huán)語(yǔ)句,同時(shí)通過(guò)對(duì)各種算法進(jìn)行評(píng)價(jià),學(xué)生又深刻體會(huì)到算法設(shè)計(jì)的優(yōu)劣對(duì)程序執(zhí)行效率的影響。經(jīng)過(guò)這種長(zhǎng)期訓(xùn)練,學(xué)生求解問(wèn)題時(shí),不僅會(huì)注意算法的正確性,也會(huì)注重思維的嚴(yán)謹(jǐn)性。一題多解既培養(yǎng)了學(xué)生創(chuàng)造性思維,又訓(xùn)練了邏輯思維,是提高算法設(shè)計(jì)能力的有效方法。

3.3算法帶動(dòng)語(yǔ)法學(xué)習(xí),全面提高編程能力

在編程訓(xùn)練過(guò)程中,學(xué)生不僅要積累設(shè)計(jì)正確,高效算法的經(jīng)驗(yàn),而且隨著課程內(nèi)容的不斷豐富,還要能將各種算法轉(zhuǎn)化為可執(zhí)行程序,完成整個(gè)結(jié)構(gòu)化程序設(shè)計(jì)過(guò)程。

以往教學(xué)模式過(guò)多重視語(yǔ)句命令格式,教學(xué)內(nèi)容繁瑣,學(xué)生需要識(shí)記的知識(shí)多,并且不易體會(huì)其用途,容易失去學(xué)習(xí)興趣。如果在教學(xué)過(guò)程中,教師采用一些方法,充分利用學(xué)生對(duì)算法的理解和掌握,激發(fā)學(xué)習(xí)語(yǔ)法的興趣,將取得好的教學(xué)效果。

首先,面對(duì)編程問(wèn)題,如果學(xué)生明晰解題思路,在結(jié)構(gòu)化程序設(shè)計(jì)思想的指導(dǎo)下,會(huì)很快設(shè)計(jì)出算法的N-S圖。由前可知,算法是由順序、選擇、循環(huán)三種基本結(jié)構(gòu)構(gòu)成,表1只是簡(jiǎn)單地列出了三種基本結(jié)構(gòu)的C語(yǔ)句實(shí)現(xiàn),教師應(yīng)廣泛搜集并認(rèn)真挑選典型例題,幫助學(xué)生全面掌握三種基本結(jié)構(gòu)的各種語(yǔ)法表示。這樣,學(xué)生根據(jù)算法的N-S圖,就會(huì)很容易編寫(xiě)出程序的主體代碼。

其次,教學(xué)初期,采用案例式教學(xué),注重培養(yǎng)學(xué)生的算法設(shè)計(jì)能力,學(xué)生的語(yǔ)法知識(shí)比較薄弱,若要求他們將算法的N-S圖完全轉(zhuǎn)換成計(jì)算機(jī)語(yǔ)言,會(huì)遇到較多困難。如果教師能認(rèn)真解析C語(yǔ)言知識(shí),將教學(xué)內(nèi)容有機(jī)組織起來(lái)(見(jiàn)2.1所述),再現(xiàn)在學(xué)生面前,那么學(xué)生在迫切想要實(shí)現(xiàn)算法的心理之下,借助腦海中的知識(shí)體系,會(huì)很容易尋找到相關(guān)章節(jié),查閱還未曾系統(tǒng)學(xué)習(xí)的語(yǔ)法內(nèi)容,獨(dú)自完成編程過(guò)程。這樣既增強(qiáng)了學(xué)生的學(xué)習(xí)自主性,學(xué)生在解決問(wèn)題的同時(shí),又深刻體會(huì)到語(yǔ)句的用途和功能,從而激發(fā)出強(qiáng)烈的編程興趣。

最后,建議教師按照總體教學(xué)目標(biāo)組織教學(xué),制定每節(jié)課的語(yǔ)法教學(xué)任務(wù),針對(duì)教學(xué)任務(wù)挑選例題,通過(guò)對(duì)案例的分析講解,一方面幫助學(xué)生積累設(shè)計(jì)算法的經(jīng)驗(yàn);另一方面,加強(qiáng)學(xué)生對(duì)算法所涉及語(yǔ)法內(nèi)容的理解,掌握和應(yīng)用,學(xué)生只有正確理解并熟練掌握每一個(gè)基本概念,編程時(shí)才會(huì)少犯語(yǔ)法錯(cuò)誤,從而減少不必要的程序調(diào)試,逐漸樹(shù)立編程的信心。

4結(jié)束語(yǔ)

C語(yǔ)言是計(jì)算機(jī)基礎(chǔ)教育的重要組成部分,教學(xué)目標(biāo)在于培養(yǎng)學(xué)生的編程能力。多年來(lái),教學(xué)模式一直圍繞語(yǔ)法體系,學(xué)生學(xué)習(xí)興致不高,分析和解決實(shí)際問(wèn)題的能力差。經(jīng)過(guò)多年教學(xué)與實(shí)踐,本文倡導(dǎo)算法為先的教學(xué)模式,以結(jié)構(gòu)化程序設(shè)計(jì)思想為指導(dǎo),通過(guò)案例式教學(xué),提高學(xué)生算法設(shè)計(jì)能力;利用學(xué)生對(duì)算法的理解和掌握促進(jìn)語(yǔ)法學(xué)習(xí),進(jìn)而提高學(xué)生將算法轉(zhuǎn)換為計(jì)算機(jī)語(yǔ)言的能力;算法和編程能力的提高,將有效減少程序中的邏輯錯(cuò)誤和語(yǔ)法錯(cuò)誤,降低調(diào)試難度。由此可見(jiàn),算法為先的教學(xué)模式,有利于提高學(xué)生的程序設(shè)計(jì)水平。

參考文獻(xiàn):

[1] 譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2000.

[2] Edsger W. Dijkstra. On the Cruelty of Really Teaching Computing Science[J]. Comm.ACM,1989(32):1398-1404.

第4篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu);算法;軟件設(shè)計(jì)

1.經(jīng)典算法的選擇

選擇經(jīng)典算法的重要性,PASCAL語(yǔ)言的創(chuàng)始人、著名的計(jì)算機(jī)科學(xué)家N.沃思說(shuō)得好“程序=數(shù)據(jù)結(jié)構(gòu)+算法”,足以見(jiàn)得算法在程序設(shè)計(jì)中的重要地位。在合理的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上,算法是對(duì)數(shù)據(jù)結(jié)構(gòu)的操作(運(yùn)算),是數(shù)據(jù)處理的核心。在《數(shù)據(jù)結(jié)構(gòu)》中介紹的基本數(shù)據(jù)結(jié)構(gòu)有線性表、堆棧、隊(duì)列、數(shù)組、樹(shù)、二叉樹(shù)、圖以及相應(yīng)的算法。一個(gè)算法是建立在某種數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,一個(gè)算法不可能脫離數(shù)據(jù)結(jié)構(gòu)而孤立存在。只有通過(guò)學(xué)習(xí)算法,才能真正掌握某種數(shù)據(jù)結(jié)構(gòu)。可以說(shuō)學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》的過(guò)程基本上是學(xué)習(xí)各種算法的過(guò)程。在眾多的算法中有簡(jiǎn)單的、有復(fù)雜的、有容易的、有難度大的,在有限的學(xué)時(shí)情況下,不可能也沒(méi)有必要逐一講解每一個(gè)算法。大多數(shù)的算法,要靠學(xué)生自己理解消化。在這種情況下,如何選擇少量的經(jīng)典算法進(jìn)行分析講解,顯得尤其重要。一個(gè)經(jīng)典算法往往能起到以一當(dāng)十、以點(diǎn)帶面的關(guān)鍵作用。通過(guò)經(jīng)典算法的分析,一方面讓學(xué)生加深對(duì)數(shù)據(jù)結(jié)構(gòu)基本理論的理解另一方面讓學(xué)生學(xué)習(xí)程序設(shè)計(jì)方法。

選擇好經(jīng)典算法后下一步就是要對(duì)其展開(kāi)綜合分析,下面以具體的算法為例進(jìn)行討論。

2.利用經(jīng)典算法說(shuō)明基本原理

2.1 經(jīng)典算法應(yīng)能體現(xiàn)某個(gè)數(shù)據(jù)結(jié)構(gòu)的基本特征

我們知道線性表順序存儲(chǔ)時(shí)其優(yōu)點(diǎn)是能夠?qū)γ總€(gè)數(shù)據(jù)元素隨機(jī)訪問(wèn),存儲(chǔ)密度高,其缺點(diǎn)是插入、刪除操作時(shí)需要移動(dòng)大量的數(shù)據(jù)元素,操作效率低?!跋蛴行颍ㄓ尚〉酱蠡蛴纱蟮叫。┑木€性表(順序存儲(chǔ))插入一個(gè)新的數(shù)據(jù)元素”,這一經(jīng)典算法集中反映了線性表順序存儲(chǔ)的這些特點(diǎn)。

分析:將一個(gè)值為X的數(shù)據(jù)元素插入到有序(由小到大或由大到?。┑木€性表(順序存儲(chǔ))中,可以分兩步進(jìn)行,首先查找到值為X的數(shù)據(jù)元素在線性表中應(yīng)有的位置,采用從頭到尾循環(huán)比較的方法確定其位置I,然后,將第I個(gè)以后的全部數(shù)據(jù)元素向后移動(dòng)一個(gè)存儲(chǔ)單元,最后將值為X的數(shù)據(jù)元素存放到第I個(gè)位置上,線性表元素個(gè)數(shù)增1。

【算法1】

PROCEDURE INSERT(V,m,n,X)

//將值為X的數(shù)據(jù)元素插入到V數(shù)組中,(線性表順序存貯在V中)m為最多元素個(gè)數(shù),n為當(dāng)前實(shí)際元素個(gè)數(shù)

IF (m=n) THEN{“OVERFLOW”; RETURN}

FOR I=1 TO n DO

IF (X〈V(I))THEN BREAK

FOR J=n TO I BY -1 DO V(J+1)=V(J)

V(I)=X

n=n+1

RETURN

分析:【算法1】的優(yōu)點(diǎn)是簡(jiǎn)單,便于理解,缺點(diǎn)是:

①循環(huán)體內(nèi)有提前退出語(yǔ)句,不利于結(jié)構(gòu)化程序設(shè)計(jì);

②確定新數(shù)據(jù)元素位置和移動(dòng)數(shù)據(jù)元素分兩步進(jìn)行,有重復(fù)操作,可以改進(jìn)之,將兩步合并一步完成,即將循環(huán)比較與移動(dòng)數(shù)據(jù)元素同時(shí)進(jìn)行。從線性表的尾部開(kāi)始向前循環(huán)比較,比新數(shù)據(jù)元素大者后移,直到小于等于時(shí)停止。

【算法2】

PROCEDURE INSERT(V,m,n,X)

IF(m=n)THEN{“OVERFLOW”;RETURN}

I=n

WHILE (I〉=1)AND (V(I)〉X)DO {V(I+1)=V(I);I=I-1}

V(I+1)=X

n=n+1

RETURN

分析:注意【算法2】中循環(huán)條件,當(dāng)循環(huán)結(jié)束后I=0或V(I)〈=X,新數(shù)據(jù)元素的位置為I+1,【算法1】的時(shí)間復(fù)雜度為0(2n),而【算法2】的時(shí)間復(fù)雜度為0(n),效率提高一倍。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中最基本最核心的部分,歸納循環(huán)條件是關(guān)鍵?!舅惴?】能進(jìn)一步推廣。

2.2 利用經(jīng)典算法學(xué)習(xí)算法設(shè)計(jì)

經(jīng)典算法能給學(xué)習(xí)者以啟示、示范作用。

分析:可以將【算法2】用于對(duì)線性表(順序存儲(chǔ))排序算法中。在直接插入排序算法中,其算法思想是從第2個(gè)數(shù)據(jù)元素開(kāi)始直到第n個(gè)數(shù)據(jù)元素,逐一插入到已有序的子線性表中。

【算法3】

PROCEDURE SORT(V,n)

FOR I=2 TO n DO

{ Y=V(I)

J=I-1

WHILE (J〉=1) AND (V(J)〉Y) DO {V(J+1)=V(J);J=J-1}

V(J+1)=Y }

RETURN

分析:【算示3】其結(jié)構(gòu)分為雙重循環(huán),外循環(huán)完成逐一取數(shù)據(jù)元素,即取第I個(gè)數(shù)據(jù)元素,內(nèi)循環(huán)完成將第I個(gè)數(shù)據(jù)元素插入到前I-1個(gè)已有序的子線性表中。內(nèi)循環(huán)完成的功能可以獨(dú)立成為一個(gè)子函數(shù)(子過(guò)程),可以借用【算法2】。這正是結(jié)構(gòu)化程序設(shè)計(jì)思想的體現(xiàn),即主程序完成任務(wù)的劃分,說(shuō)明“做什么”,子函數(shù)(子過(guò)程)完成任務(wù)的具體實(shí)現(xiàn),說(shuō)明“如何做”。結(jié)構(gòu)化程序設(shè)計(jì)方法采取“分解”的手段來(lái)控制系統(tǒng)的復(fù)雜性,將大系統(tǒng)劃分為若干個(gè)相對(duì)獨(dú)立的、功能單一的子模塊。一方面子函數(shù)(子過(guò)程)可以實(shí)現(xiàn)軟件的重用性,在不同的程序段有相同的處理過(guò)程時(shí)調(diào)用子函數(shù)(子過(guò)程),減少軟件開(kāi)發(fā)的工作量;另一方面子函數(shù)(子過(guò)程)對(duì)具體的實(shí)現(xiàn)技術(shù)細(xì)節(jié)進(jìn)行隱藏,便于開(kāi)發(fā)人員集中精力把握軟件開(kāi)發(fā)的核心和主要問(wèn)題,降低了軟件開(kāi)發(fā)難度,從而保證軟件質(zhì)量。在利用【算法2】時(shí)要稍加修改,見(jiàn)【算法4】。

【算法4】

PROCEDURE INSERT(V,I,X)

//將值為X的數(shù)據(jù)元素插入到已有序的前I-1個(gè)數(shù)據(jù)元素中

J=I-1

Y=X

WHILE (J〉=1) AND (V(J)〉X) DO {V(J+1)=V(J);J=J-1}

V(J+1)=Y

RETURN

相應(yīng)的主程序也要作修改,見(jiàn)【算法5】

【算法5】

PROCEDURE SORT(V,n)

FOR I=2 TO n DO

INSERT(V,I,V(I))

RETURN

3.結(jié)束語(yǔ)

在眾多的算法中選擇好少量的經(jīng)典算法對(duì)于教好、學(xué)好《數(shù)據(jù)結(jié)構(gòu)》至關(guān)重要;經(jīng)典算法要有助于學(xué)生理解對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),經(jīng)典算法的分析要側(cè)重于程序設(shè)計(jì)能力的提高。

參考文獻(xiàn)

[1]歐建圣.數(shù)據(jù)結(jié)構(gòu)教學(xué)研究――經(jīng)典算法的綜合分析[J].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,16(1):58-60.

第5篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

C語(yǔ)言 結(jié)構(gòu)化程序設(shè)計(jì) 循環(huán)結(jié)構(gòu) 效率

一、引言

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

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

二、用循環(huán)結(jié)構(gòu)輸出幾何圖形

在教學(xué)過(guò)程中,不管開(kāi)設(shè)哪一種高級(jí)程序設(shè)計(jì)語(yǔ)言課,只要一講到循環(huán)結(jié)構(gòu),大多數(shù)老師幾乎不約而同地選擇輸出簡(jiǎn)單的幾何圖形來(lái)作為講解循環(huán)結(jié)構(gòu)的最好實(shí)例。

對(duì)于這種類(lèi)型的題目,初學(xué)者往往最容易想到的方法就是采用多條輸出語(yǔ)句來(lái)完成程序的設(shè)計(jì)。雖然這種方法很快能夠?qū)崿F(xiàn)所要效果,但其缺陷也是很明顯的:缺乏靈活性、程序修改起來(lái)不方便,也不符合程序設(shè)計(jì)的思想。比如,我想讓大家輸出8行,每行36個(gè)“*”。這個(gè)時(shí)候,我們就不得不在輸入“*”的時(shí)候特別仔細(xì),因?yàn)橐徊恍⌒目赡軅€(gè)數(shù)就不對(duì)了。

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

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

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

三、結(jié)束語(yǔ)

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

參考文獻(xiàn):

[1]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].清華大學(xué)出版社,2005.

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

[3]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,1999.

第6篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

關(guān)鍵詞:教學(xué)探索;程序設(shè)計(jì);Scratch

中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A

1 引言(Introduction)

1.1 基礎(chǔ)薄弱

目前,中小學(xué)的信息化教育內(nèi)容參差不齊,有的學(xué)??赡軙?huì)有程序設(shè)計(jì)的教學(xué),有的學(xué)校則以Word、Excel操作為主,對(duì)程序設(shè)計(jì)的入門(mén)不重視[1]。很多剛進(jìn)入大學(xué)的學(xué)生在程序化的思維方式方面還比較弱,要入高級(jí)程序設(shè)計(jì)語(yǔ)言的門(mén)還有很長(zhǎng)的路要走。

1.2 課時(shí)較少

通常程序設(shè)計(jì)入門(mén)以C語(yǔ)言或C++語(yǔ)言為教學(xué)內(nèi)容。作為一種實(shí)踐性較強(qiáng)的語(yǔ)言,在一個(gè)學(xué)期中要完成程序設(shè)計(jì)概念和語(yǔ)法的教學(xué),又要在有限的時(shí)間里完成編程調(diào)試訓(xùn)練。如果學(xué)生沒(méi)有一定的基礎(chǔ)和自學(xué)能力,就很難適應(yīng)這種節(jié)奏。

1.3 抽象帶來(lái)的問(wèn)題

語(yǔ)法、算法等抽象的教學(xué)內(nèi)容將降低學(xué)生的學(xué)習(xí)興趣,而學(xué)習(xí)興趣對(duì)教授與學(xué)習(xí)兩方面都非常重要。有的學(xué)生不能通過(guò)考核經(jīng)常就跌入補(bǔ)考和重修的循環(huán)。程序設(shè)計(jì)入門(mén)作為核心課程,這個(gè)課程出了問(wèn)題將給計(jì)算機(jī)專(zhuān)業(yè)的后續(xù)課程帶來(lái)很多不好的影響,比如本專(zhuān)業(yè)學(xué)生對(duì)程序設(shè)計(jì)和其他專(zhuān)業(yè)技能缺乏信心以及實(shí)踐能力。

2 程序設(shè)計(jì)課程的前導(dǎo)課程(Leading program of

programming classes)

學(xué)生在程序設(shè)計(jì)課程中,一方面要努力熟悉算法抽象、程序控制等一些全新的概念,一方面會(huì)遇到很多語(yǔ)法錯(cuò)誤,必須要學(xué)習(xí)如何調(diào)試程序,理論加上實(shí)踐可能都是前所未有的挑戰(zhàn)。前導(dǎo)課程應(yīng)帶來(lái)有趣味的內(nèi)容,為學(xué)生補(bǔ)充各種必要的基礎(chǔ)概念,如抽象、邏輯、流程等,告訴學(xué)生如何在現(xiàn)實(shí)世界和計(jì)算機(jī)世界之間建立起一座橋梁。這樣的課程會(huì)對(duì)程序設(shè)計(jì)教學(xué)有很大幫助。

3 Scratch簡(jiǎn)介(Introduction of scratch)

Scratch是美國(guó)麻省理工學(xué)院(MIT)媒體實(shí)驗(yàn)室開(kāi)發(fā)的一套“程序語(yǔ)言”,利用這個(gè)軟件可以輕輕松松地創(chuàng)造出互動(dòng)式故事、動(dòng)畫(huà)、游戲、音樂(lè)等令人驚嘆的作品,是一套簡(jiǎn)單又有趣的軟件[2]。

Scratch采用拖曳、組合的方式來(lái)設(shè)計(jì)程序。它是可視化的程序語(yǔ)言,具有所見(jiàn)即所得的功能。設(shè)計(jì)Scratch作品的過(guò)程是學(xué)生學(xué)習(xí)用計(jì)算機(jī)進(jìn)行思考、分析、解決問(wèn)題的過(guò)程,還能進(jìn)行團(tuán)隊(duì)建設(shè)方面的實(shí)踐。

Scratch把程序命令歸為幾大部分:包括動(dòng)作、外觀、聲音、畫(huà)筆、變量、事件、控制等,并用顏色來(lái)分類(lèi)。學(xué)生只需要了解各部分模塊的功能,按照自己的想法拖到腳本窗口,并按一定規(guī)則堆積在一起,最后在瀏覽窗口就能根據(jù)命令腳本直接運(yùn)行。通過(guò)可視化操作學(xué)生可以搭建起自己的程序,輕易地把自己的想法表達(dá)為計(jì)算機(jī)的程序。在這個(gè)抽象的過(guò)程中不用過(guò)分操心語(yǔ)法錯(cuò)誤等問(wèn)題。

圖1為Scratch設(shè)計(jì)界面,左上為程序運(yùn)行場(chǎng)景,左下為程序中設(shè)計(jì)的主體對(duì)象。一個(gè)項(xiàng)目可以有多個(gè)動(dòng)畫(huà)主體(可以是動(dòng)物人物或其他一些對(duì)象),中間是可視化程序模塊,右邊是程序窗口,利用鼠標(biāo)可以把中間的程序模塊拖入右邊的程序窗口,經(jīng)過(guò)修改參數(shù)、安排程序模塊的順序和嵌套等工作,就完成了程序編制,接著程序可以在瀏覽器中執(zhí)行。

4 Scratch對(duì)程序設(shè)計(jì)教學(xué)的支持(Supports to

programming classes)[3]

4.1 抽象

現(xiàn)實(shí)世界的問(wèn)題如何抽象為計(jì)算機(jī)世界的模型?第一步可以從學(xué)習(xí)抽象為計(jì)算機(jī)里的對(duì)象開(kāi)始。我們把需要處理的內(nèi)容抽象為Scratch的動(dòng)畫(huà)主體,比如一個(gè)人物或一個(gè)物體。動(dòng)畫(huà)主體可以具有各種行為,比如在平面中移動(dòng)。如圖2是一個(gè)負(fù)責(zé)動(dòng)作的程序模塊,能控制動(dòng)畫(huà)主體平移到坐標(biāo)(100,200)處,其中白色的部分為可以修改的坐標(biāo)值。

4.2 結(jié)構(gòu)化程序

Scratch具有可以拖曳的結(jié)構(gòu)化模塊。設(shè)計(jì)時(shí)候只需要把模塊拖入場(chǎng)景中,就可以實(shí)現(xiàn)循環(huán)或選擇的程序結(jié)構(gòu),并且能實(shí)現(xiàn)循環(huán)和選擇的嵌套,制作需要的程序流程。圖3演示了循環(huán)結(jié)構(gòu)的程序模塊,repeat后面的循環(huán)次數(shù)可以修改,可以看到循環(huán)程序模塊和循環(huán)體中的其他程序模塊的顏色是不同的,它們屬于不同的功能分類(lèi)。

Fig.4 Block to control choosing

其中使用的橙色模塊i是Scratch的變量模塊。Scratch程序能夠使用數(shù)字和字符串變量。變量可用來(lái)控制某個(gè)圖形的大小或個(gè)數(shù),變量還能具有不同的作用域。由此我們向?qū)W生展示了變量存儲(chǔ)值、變量值影響程序結(jié)果以及變量的作用域等概念。

Scratch具有列表的結(jié)構(gòu),列表可以存儲(chǔ)數(shù)值或字符串。列表可以具有作用域,可以獲得列表的長(zhǎng)度。列表項(xiàng)具有添加、刪除、插入等操作,并能通過(guò)下標(biāo)獲取特定的列表項(xiàng)。列表可以幫助學(xué)生學(xué)習(xí)數(shù)組的概念。

Scratch的結(jié)構(gòu)化程序設(shè)計(jì)是可視化的,調(diào)試簡(jiǎn)單,能幫助學(xué)生把精力集中在程序結(jié)構(gòu)上,而不需要為語(yǔ)法錯(cuò)誤分心。

4.3 面向?qū)ο?/p>

Scratch能夠設(shè)置動(dòng)畫(huà)主體,可以視為對(duì)象模塊。不同的動(dòng)畫(huà)主體具有獨(dú)特的屬性,可操作自己的變量,能完成獨(dú)特的任務(wù)。在后續(xù)課程中這些概念很容易引申為對(duì)象及其屬性和行為的概念,這是面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。圖5為迷宮程序的設(shè)計(jì),其中球體是一個(gè)對(duì)象,而終點(diǎn)方塊的是另一個(gè)對(duì)象。我們可以利用鍵盤(pán)移動(dòng)球體,當(dāng)碰到方塊對(duì)象時(shí)后者能做出贏得游戲的反應(yīng)。球體對(duì)象在移動(dòng)過(guò)程中碰到障礙則會(huì)產(chǎn)生反彈。

5 Scratch作為程序設(shè)計(jì)教學(xué)前導(dǎo)課程的實(shí)踐

(Experiments in programming classes)

在參考文獻(xiàn)[4]中提到的學(xué)校已經(jīng)嘗試使用Scratch平臺(tái)作為計(jì)算機(jī)專(zhuān)業(yè)課程的前導(dǎo)課程。學(xué)校把學(xué)生分為兩部分,一部分基礎(chǔ)薄弱的學(xué)生在第一個(gè)學(xué)期先參加Scratch課程,到第二個(gè)學(xué)期才開(kāi)始學(xué)習(xí)高級(jí)程序設(shè)計(jì)語(yǔ)言。而另一部分基礎(chǔ)良好的學(xué)生則在第一個(gè)學(xué)期就開(kāi)始學(xué)習(xí)高級(jí)程序設(shè)計(jì)。

最終學(xué)過(guò)Scratch的學(xué)生,盡管基礎(chǔ)薄弱,他們的最終成績(jī)?cè)谕ㄟ^(guò)率和平均成績(jī)方面都超過(guò)基礎(chǔ)良好的學(xué)生,并且在精通程序、喜愛(ài)專(zhuān)業(yè)課程、參與專(zhuān)業(yè)實(shí)踐等方面都有更好的表現(xiàn)。這些學(xué)生專(zhuān)業(yè)成績(jī)更好,對(duì)專(zhuān)業(yè)更熱愛(ài),對(duì)程序設(shè)計(jì)更有信心。

6 結(jié)論(Conclusion)

程序設(shè)計(jì)是一種具有創(chuàng)造性的工作,它具有一定的抽象性,而且需要使用數(shù)學(xué)的方法去描述一些問(wèn)題。這使得在語(yǔ)言程序設(shè)計(jì)的課程教學(xué)中,必須打破原有的教學(xué)模式和知識(shí)體系[5]。我們探索不同的方式幫助學(xué)生入門(mén),Scratch可能是一個(gè)良好的平臺(tái),它的可視化特性,對(duì)結(jié)構(gòu)化程序設(shè)計(jì)的支持,都能幫助學(xué)生在實(shí)踐中培養(yǎng)計(jì)算機(jī)思維方式,為程序設(shè)計(jì)入門(mén)打下堅(jiān)實(shí)基礎(chǔ),為后續(xù)課程的挑戰(zhàn)做好準(zhǔn)備。另一方面程序設(shè)計(jì)教學(xué)的困境也要需要在考核模式方面進(jìn)行改革,激勵(lì)學(xué)生重視創(chuàng)新和實(shí)踐。

參考文獻(xiàn)(References)

[1] 張傳科.如何讓抽象的設(shè)計(jì)變得精彩――LOGO程序設(shè)計(jì)與

Scratch[J].中國(guó)信息技術(shù)教育,2010,(5):29-31.

[2] 陳捷.Scratch語(yǔ)言簡(jiǎn)介及應(yīng)用[J].電腦知識(shí)與技術(shù),2009,5(26):

7439-7440.

[3] 朱,鄭曉妹.C語(yǔ)言程序設(shè)計(jì)教學(xué)前導(dǎo)課程研究[J].軟件導(dǎo)

刊,2014,13(4):160-162.

[4] M.Rizvi,T.Humphries,D.Major,M.Jones,and H.Lauzun.A

NewCS0 Course for At-Risk Majors[C].The Proceedings of

the 24th IEEE-CS Conference on Software Engineering

Education and Training,Honolulu,Hawaii,May 2011: 314-323.

[5] 劉興林.大學(xué)工科C語(yǔ)言程序設(shè)計(jì)教學(xué)探索與實(shí)踐――以五

邑大學(xué)為例[J].軟件工程師,2014,17(5):39-40.

第7篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

關(guān)鍵詞:Visual Basic;程序設(shè)計(jì);上機(jī)操作

中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)26-1741-04

Research on Improving the Capacity of VB Computer Operations

LIU Ai-hua

(Department of Computer Engineering,Nanjing Institute of Technology,Nanjing 211167,China)

Abstract: In recent years, many colleges and universities have been Visual Basic computer programming as a Non-computer professional public basic course, many provinces and cities of our country have also been Visual Basic(hereinafter referred to VB) into the subjects of computer rank examination certificate grade 2. In years of VB teaching, the writer found that Non-computer professional students feel quite difficult in computer operation during the learning VB, because the school hours of VB is too limited and content of VB knowledge points is too more. To solve the main issues of prejudicing students to raise the capacity of VB computer operations, the writer analyses of the knowledge points of the theory and the main points of computer operations.

Key words: visual basic; computer programming; computer operations

1 引言

如果把計(jì)算機(jī)世界看成是一種現(xiàn)代信息交流的平臺(tái)或環(huán)境,那么程序設(shè)計(jì)語(yǔ)言就是這種世界溝通的語(yǔ)言。Visual Basic程序在GUI設(shè)計(jì)、繪圖、制表、運(yùn)算、通信和多媒體開(kāi)發(fā)方面本身就具有簡(jiǎn)單易行、功能強(qiáng)大等優(yōu)點(diǎn),近年來(lái)由于ASP和的流行,VB作為簡(jiǎn)單的入門(mén)語(yǔ)言更是非常適合作為初學(xué)面向?qū)ο蟪绦蛟O(shè)計(jì)的教學(xué)語(yǔ)言。目前許多高等院校將Visual Basic程序設(shè)計(jì)作為非計(jì)算機(jī)專(zhuān)業(yè)的公共基礎(chǔ)課,國(guó)家和許多省市也將Visual Basic(以下簡(jiǎn)稱(chēng)VB)納入計(jì)算機(jī)二級(jí)考試的科目。非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生學(xué)習(xí)VB的需求主要有兩個(gè)方面:一是用VB編程解決實(shí)際問(wèn)題,特別是跟自己專(zhuān)業(yè)相關(guān)的畢業(yè)設(shè)計(jì)問(wèn)題;二是參加計(jì)算機(jī)等級(jí)考試,獲得證書(shū),為將來(lái)就業(yè)贏得更多的機(jī)會(huì)。盡管學(xué)生的學(xué)習(xí)熱情很高,但是VB的上機(jī)操作能力普遍不高,從VB等級(jí)考試反映出筆試通過(guò)率明顯高于機(jī)試就能明顯看出。主要原因在于VB課程的學(xué)時(shí)較少,內(nèi)容太多和學(xué)習(xí)C語(yǔ)言相比,VB既要學(xué)習(xí)結(jié)構(gòu)化程序設(shè)計(jì)中編程知識(shí),如三種基本結(jié)構(gòu)(順序、選擇和循環(huán))、數(shù)組、過(guò)程、文件等;還要學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)知識(shí),如各種控件的屬性、方法和事件等。筆者在平時(shí)的教學(xué)過(guò)程中注意到了制約學(xué)生上機(jī)能力提高的主要問(wèn)題,給出理論上的知識(shí)點(diǎn)和上機(jī)時(shí)的操作要領(lǐng)。

2 難點(diǎn)1:理解App.Path的含義,掌握新建、打開(kāi)、保存、重命名文件等操作

很多同學(xué)保存文件時(shí)不注意觀察路徑,保存后就不知道文件存在哪里了,原因就是路徑的概念不清楚。所以在保存之前應(yīng)該要清楚新建的工程保存在哪個(gè)分區(qū)的那個(gè)文件夾下(就是路徑)。如果不理解App.Path的含義,學(xué)習(xí)圖片文件的加載(LoadPicture)、數(shù)據(jù)文件的讀入和寫(xiě)出都會(huì)感覺(jué)很難;相反,如果開(kāi)始多花一點(diǎn)時(shí)間理解了App.Path,并且掌握了常用文件的基本操作,學(xué)習(xí)文件部分的內(nèi)容就會(huì)比較容易理解。

1) App.Path代表的是應(yīng)用程序所在的目錄(路徑),決定了文件操作如“另存為”、“打開(kāi)”時(shí)出現(xiàn)的對(duì)話(huà)框的默認(rèn)路徑。

啟動(dòng)VB后“新建”工程,此時(shí)的App.Path就是VB的安裝路徑。如果安裝在C分區(qū),通常就是“C:\Program Files\Microsoft Visual Studio\VB98”,如圖1所示;如果安裝在D分區(qū),就是”D:\……\VB98”。

如果第一次保存工程,就會(huì)出現(xiàn)“文件另存為”對(duì)話(huà)框,其中的默認(rèn)路徑就是…VB98,如圖2所示。

2) App.Path會(huì)隨著文件的操作如“另存為”、“打開(kāi)”路徑而變化,相應(yīng)操作的默認(rèn)路徑也就在變化。

一般程序不要保存到…VB98,而是保存在某個(gè)指定的路徑下,比如“D:\liuah\VB\VB等級(jí)考試\上機(jī)題\djks01”,就需要在“保存對(duì)話(huà)框”中更改路徑,然后將新建的工程保存為老師或者試題要求的名稱(chēng),如“djks001”,擴(kuò)展名根據(jù)保存類(lèi)型自動(dòng)添加。如果保存成功,此時(shí)的App.Path就是文件的保存路徑,如圖3所示。

保存過(guò)文件后,如果做過(guò)修改,可以再按下保存按鈕,此時(shí)不會(huì)出現(xiàn)“文件另存為”對(duì)話(huà)框,而是直接保存對(duì)文件所作的修改;如果需要重新保存,就要用“文件”“另存為”,此時(shí)“文件另存為”的默認(rèn)路徑應(yīng)該是什么呢?――就是“D:\liuah\VB\VB等級(jí)考試\上機(jī)題\djks01”,如圖4所示。

如果啟動(dòng)VB后不是“新建”而是直接打開(kāi)“現(xiàn)存”工程,或者從“文件”“打開(kāi)”文件如上述工程djks001.vbp,App.Path也就是你所打開(kāi)文件的路徑。此時(shí)你如果再打開(kāi)“另存為”對(duì)話(huà)框,默認(rèn)路徑就是上圖中的路徑。

3) 難點(diǎn)小結(jié):上機(jī)操作時(shí),首先建立工程存放的文件夾(即明確路徑),然后打開(kāi)VB應(yīng)用環(huán)境,新建工程。建好之后不要急于編程,而是先將工程文件和自動(dòng)建立的窗體文件保存到自己的文件夾中(此時(shí)App.Path已經(jīng)改變),然后再開(kāi)始設(shè)計(jì)界面、編寫(xiě)代碼。編程結(jié)束之后,不要急于調(diào)試,而是先按“保存”按鈕(常用工具欄上的磁盤(pán)圖標(biāo))更新文件中的內(nèi)容,防止程序運(yùn)行中出現(xiàn)“死機(jī)”重啟后文件的內(nèi)容還是最開(kāi)始的內(nèi)容。調(diào)試中可能還有改動(dòng),最后運(yùn)行成功再保存一下保證文件的內(nèi)容最新。

這就是“三先三再”――先建路徑再建工程,先保存文件再編程,先更新文件再調(diào)試。

3 難點(diǎn)2:理解VB的工作狀態(tài)、常見(jiàn)錯(cuò)誤提示的含義,掌握簡(jiǎn)單的調(diào)試方法

大多數(shù)學(xué)生不注意VB的工作狀態(tài),出現(xiàn)錯(cuò)誤時(shí)的調(diào)試能力比較弱。作為教師應(yīng)該“授人以漁”,而不是“授人以魚(yú)”,像個(gè)救火隊(duì)員,到處幫學(xué)生解決簡(jiǎn)單的調(diào)試問(wèn)題。課堂上可以設(shè)置一些常見(jiàn)的錯(cuò)誤,然后用“斷點(diǎn)-單步跟蹤”法來(lái)調(diào)試程序;上機(jī)幫學(xué)生解決問(wèn)題時(shí),不要直接指出錯(cuò)誤,也要用調(diào)試方法,逐步培養(yǎng)學(xué)生的自主調(diào)試能力。

1) 注意觀察VB的三種模式:設(shè)計(jì)模式、運(yùn)行模式、中斷模式:VB的應(yīng)用環(huán)境有設(shè)計(jì)模式、 運(yùn)行模式 、中斷模式,通過(guò)標(biāo)題欄來(lái)觀察區(qū)分,如圖5所示。[設(shè)計(jì)]模式用于界面設(shè)計(jì)、屬性設(shè)置和代碼編寫(xiě),按下“啟動(dòng)”按鈕,進(jìn)入[運(yùn)行]模式,如果按下“結(jié)束”按鈕則回到設(shè)計(jì)模式,按下“中斷”按鈕或出錯(cuò)則進(jìn)入“中斷”即[break]模式。主要在中斷模式[break]下調(diào)試程序――修改代碼、檢查數(shù)據(jù)等。

2) 注意觀察出錯(cuò)時(shí)的提示內(nèi)容,總結(jié)常見(jiàn)錯(cuò)誤的解決辦法:常見(jiàn)的錯(cuò)誤提示主要分為語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤。

語(yǔ)法錯(cuò)誤一般是由于編輯代碼時(shí)的輸入失誤,通常有明確的提示并且代碼顯示高亮。比如“變量未定義”、“缺少方法或者數(shù)據(jù)成員”等。解決辦法是編寫(xiě)代碼最好都用小寫(xiě)字體,如果是已經(jīng)定義的變量或者正確的屬性和方法,就會(huì)自動(dòng)首字母大寫(xiě)。檢查時(shí)只要查沒(méi)有大寫(xiě)的(定義變量時(shí),要養(yǎng)成良好習(xí)慣如首字母大寫(xiě)、見(jiàn)名知意)。

邏輯錯(cuò)誤一般是由于運(yùn)算符使用不當(dāng)、循環(huán)缺少變化或者算法思路不正確,通常運(yùn)行后結(jié)果不對(duì)但是沒(méi)有明確的提示。解決辦法是利用調(diào)試窗口(立即窗口、本地窗口、監(jiān)視窗口),設(shè)置斷點(diǎn)和逐語(yǔ)句跟蹤檢查相關(guān)的變量、屬性和表達(dá)式的值是否正確。

簡(jiǎn)單的調(diào)試方法――“斷點(diǎn)-單步跟蹤”法:在中斷模式下,在代碼窗口選擇懷疑出錯(cuò)的語(yǔ)句設(shè)置斷點(diǎn)(按下F9),然后運(yùn)行到斷點(diǎn)語(yǔ)句處(該語(yǔ)句沒(méi)有執(zhí)行,觀察左側(cè)小箭頭為當(dāng)前行標(biāo)記)停下,進(jìn)入中斷模式,前面執(zhí)行過(guò)的語(yǔ)句中的變量、屬性、表達(dá)式的值可以查看(變量和屬性可以用鼠標(biāo)指向直接查看,表達(dá)式可以在立即窗口用“?”,即Print語(yǔ)句查看)。如果要繼續(xù)跟蹤斷點(diǎn)以后的語(yǔ)句執(zhí)行,按下F8,配合“本地”視圖可以觀察表達(dá)式變化的動(dòng)態(tài)情況如圖6所示。調(diào)試結(jié)束以后要取消斷點(diǎn),在代碼窗口用光標(biāo)點(diǎn)擊斷點(diǎn)語(yǔ)句再按下F9,斷點(diǎn)就消失了。

3) 難點(diǎn)小結(jié):課堂上一般都會(huì)提到VB的模式、“斷點(diǎn)-單步跟蹤”法和立即、本地、監(jiān)視視圖等內(nèi)容,但是學(xué)生真正重視和運(yùn)用這些調(diào)試方法關(guān)鍵是老師在無(wú)論課堂和上機(jī)實(shí)驗(yàn)調(diào)試程序時(shí)都要不斷地運(yùn)用這些方法,引導(dǎo)和提示學(xué)生去觀察問(wèn)題所在。特別是講到數(shù)組、過(guò)程、變量作用域等內(nèi)容時(shí),利用“斷點(diǎn)-單步跟蹤”法和視圖(主要是本地視圖)時(shí),學(xué)生理解效果非常好,學(xué)習(xí)調(diào)試的興趣被極大地激發(fā)起來(lái)。

4 難點(diǎn)3:理解面向?qū)ο蠛兔嫦蜻^(guò)程的主要難點(diǎn),掌握程序設(shè)計(jì)的常用技術(shù)

VB編程涉及面向?qū)ο蠛兔嫦蜻^(guò)程即結(jié)構(gòu)化程序設(shè)計(jì)兩個(gè)方面。主要難點(diǎn)包括能設(shè)計(jì)出符合操作規(guī)律的界面,并且能在合適的事件過(guò)程中添加能實(shí)現(xiàn)所要求功能的代碼,并且逐步優(yōu)化使得代碼具有一定的可讀性、通用性、可復(fù)用性。

1) 理解對(duì)象的三要素――屬性、方法和事件,設(shè)計(jì)出符合操作規(guī)律的界面。

選擇學(xué)生常見(jiàn)的程序界面例如用戶(hù)登錄、查詢(xún)等等作為VB教學(xué)的引例。筆者經(jīng)常使用的引例就是包含兩個(gè)窗體、一個(gè)模塊的工程,可以實(shí)現(xiàn)簡(jiǎn)單的用戶(hù)身份檢查,登錄成功后可以查詢(xún)圖書(shū)的名稱(chēng),點(diǎn)擊查詢(xún)按鈕后可以返回圖書(shū)在列表框中是否存在;找到則顯示相應(yīng)的序號(hào),如圖7所示。這個(gè)引例基本貫穿于整個(gè)VB的教學(xué),講解到文件時(shí),可以將圖書(shū)信息存放于文件中;講解到數(shù)據(jù)庫(kù)時(shí),可以將圖書(shū)信息建成數(shù)據(jù)庫(kù)中的表,利用SQL語(yǔ)句實(shí)現(xiàn)查詢(xún)。

當(dāng)然作為初步接觸程序設(shè)計(jì)的學(xué)生首先需要理解面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)即程序=對(duì)象+消息。通過(guò)FORM的Caption、Picture等屬性,Hide、Show等方法,Command Button的click事件來(lái)介紹對(duì)象的三要素。然后引導(dǎo)他們模仿著日常生活、網(wǎng)上所見(jiàn)到的程序界面來(lái)建立界面中的對(duì)象控件、設(shè)置對(duì)象的屬性、選擇合適的對(duì)象的事件過(guò)程并且添加上代碼即編程。這個(gè)過(guò)程就是面向?qū)ο蟪绦蛟O(shè)計(jì)的主要步驟。

2) 理解三種基本結(jié)構(gòu)――順序、選擇和循環(huán),掌握結(jié)構(gòu)化程序設(shè)計(jì)的一般思路。

事件過(guò)程中添加代碼,實(shí)現(xiàn)常用的例如數(shù)值計(jì)算、數(shù)據(jù)查詢(xún)等處理功能,這部分主要依靠面向過(guò)程的程序設(shè)計(jì)語(yǔ)句來(lái)實(shí)現(xiàn)。

首先需要理解面向過(guò)程即結(jié)構(gòu)化程序設(shè)計(jì)的基本語(yǔ)句結(jié)構(gòu)――順序、選擇和循環(huán)。順序結(jié)構(gòu)主要實(shí)現(xiàn)數(shù)據(jù)的初始化、計(jì)算、消息的顯示即數(shù)據(jù)的輸入和輸出;選擇結(jié)構(gòu)實(shí)現(xiàn)不同的數(shù)據(jù)轉(zhuǎn)向不同的處理;循環(huán)結(jié)構(gòu)是計(jì)算機(jī)高效率處理的關(guān)鍵,可以實(shí)現(xiàn)大量數(shù)據(jù)的重復(fù)處理。通過(guò)引例中的用戶(hù)身份檢查、查詢(xún)可以找到這三類(lèi)結(jié)構(gòu)的語(yǔ)句。

然后遵循結(jié)構(gòu)化程序設(shè)計(jì)的一般思路――數(shù)據(jù)的輸入、數(shù)據(jù)處理、數(shù)據(jù)輸出,選擇合適的數(shù)據(jù)輸入方式、數(shù)據(jù)處理算法、數(shù)據(jù)輸出方式,反饋出事件驅(qū)動(dòng)后的結(jié)果。

3) 理解數(shù)組、過(guò)程和文件,設(shè)計(jì)出可讀性、通用性較好的代碼。

學(xué)習(xí)好數(shù)組的關(guān)鍵是要理解數(shù)組中的下標(biāo)變量是從數(shù)組名開(kāi)始的一片連續(xù)空間,而前面學(xué)習(xí)的變量都是沒(méi)有聯(lián)系的獨(dú)立變量,所以可以利用循環(huán)變量作為下標(biāo)變量,實(shí)現(xiàn)對(duì)一組數(shù)據(jù)有規(guī)律的處理。

過(guò)程引入的目的是提高有特定功能的代碼段的復(fù)用率,例如查詢(xún)、排序等。

文件引入的目的是實(shí)現(xiàn)數(shù)據(jù)的快速讀寫(xiě),綜合了循環(huán)、數(shù)組、過(guò)程等內(nèi)容。在這里重點(diǎn)介紹順序文件的操作。

文件操作的基本思路就是三步曲:打開(kāi)文件-讀寫(xiě)數(shù)據(jù)-關(guān)閉文件

① 打開(kāi)文件:Open ?(什么路徑下的文件名)For ?(什么操作) As ?(什么文件號(hào))

第1個(gè)?:例如當(dāng)前路徑下的文件“in.txt”,就是App. Path & " in.txt "

第2個(gè)?:如果從給定的文件中讀入數(shù)據(jù),就是For Input;如果將數(shù)據(jù)存入某個(gè)文件,就是For Output;

第3個(gè)?:文件號(hào)一般從#1開(kāi)始,如果已經(jīng)打開(kāi)#1時(shí)還需要緩沖區(qū),就用#2。

② 關(guān)閉文件:Close ?(Open中對(duì)應(yīng)的文件號(hào)比如#1)

③ 讀寫(xiě)數(shù)據(jù):通常是順序文件中的數(shù)據(jù)的讀出和寫(xiě)入。一般分以下三種情況

如果是字符串整體讀入文本框或?qū)懭胛募瑒t直接使用Input、Print(或Write)語(yǔ)句:

Open App.Path & "\in123.txt" For Input As 1

Input #1, StrText‘讀入數(shù)據(jù)

Close #1

Text1.Text = StrText

Open App.Path & "\out123.txt" For Output As 1

Print #1, Text1. Text ‘?dāng)?shù)據(jù)寫(xiě)入文件

Close #1

如果是已知數(shù)據(jù)的個(gè)數(shù)和類(lèi)型,則使用For語(yǔ)句和Input、Print(或Write)語(yǔ)句:

Open App.Path & "\" & "in0831.txt" For Input As #1

For i = 1 To 20

Input #1, Arr1(i)

Next i

Close #1

或者邊讀邊寫(xiě):

Open FileIn For Input As #1

Open FileOut For Output As #2

For i = 1 To 8

Input #1, rec.Num, rec.Name, rec.Score

Write #2, rec.Num, rec.Name, rec.Score

Next i

Close

如果是未知數(shù)據(jù)的個(gè)數(shù),則使用Do-Loop循環(huán)、EOF函數(shù)和Input、Print(或Write)語(yǔ)句。EOF()函數(shù)為T(mén)rue表示讀到了文件的結(jié)尾。

Open App. Path & "\" & StrM For Input As #1

Open App. Path & "\" & StrN For Output As #2

Do While Not EOF(1)

Input #1, g

N = N + 1

S = S+ g

Loop

Close #1

S = S/N

Write #2, S

Close #2

注意:比較Print和Write輸出格式的區(qū)別。

Print語(yǔ)句的輸出和窗體、圖片框類(lèi)似,只是在輸出內(nèi)容前添加在那個(gè)文件號(hào)中輸出。數(shù)據(jù)項(xiàng)之間是空格可以有標(biāo)準(zhǔn)格式(逗號(hào)”,”分隔)和緊湊格式(分號(hào)”;”分隔)。

例如Num、Name、Score。其中Name為字符串類(lèi)型,定長(zhǎng)為10

Print #2, rec.Num, rec.Name, rec.Score‘標(biāo)準(zhǔn)格式,輸出的效果為如圖8

Print #2, rec.Num;rec.Name ;rec.Score ‘緊湊格式,輸出的效果為如圖9

Write語(yǔ)句的輸出只有緊湊格式,并且數(shù)據(jù)項(xiàng)之間有逗號(hào)(“,”)分隔,字符串會(huì)自動(dòng)添加雙引號(hào)。

例如:Write #2, rec.Num, rec.Name, rec.Score輸出的效果如圖10

5 結(jié)束語(yǔ)

以上介紹了提高上機(jī)操作能力的重點(diǎn)理論知識(shí)和操作要點(diǎn)。除了課堂教學(xué)中的引導(dǎo)以外,在上機(jī)實(shí)踐的時(shí)候能及時(shí)幫助學(xué)生掌握調(diào)試技能,感受到調(diào)試通過(guò)后成功的喜悅,從而排除對(duì)編程的畏難情緒,建立對(duì)程序設(shè)計(jì)的興趣也是非常的重要。再一次重申本文開(kāi)頭的觀點(diǎn),如果把計(jì)算機(jī)世界看成是一種現(xiàn)代信息交流的平臺(tái)或環(huán)境,那么VB程序設(shè)計(jì)語(yǔ)言就是這種世界最為容易入門(mén)的語(yǔ)言。所以學(xué)好VB,并且能真正在各領(lǐng)域加以運(yùn)用,這才是學(xué)習(xí)的初衷。

參考文獻(xiàn):

[1] 龔沛曾.Visual Basic程序設(shè)計(jì)簡(jiǎn)明教程[M].2版.北京:高等教育出版社,2003.

第8篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

關(guān)鍵詞:專(zhuān)業(yè)課;常用軟件;結(jié)構(gòu)化;原型法;形式化;設(shè)計(jì)

中圖分類(lèi)號(hào):G718.5;G710 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1008-3561(2016)36-0013-01

當(dāng)前,普遍采用的軟件設(shè)計(jì)方法有結(jié)構(gòu)化分析與設(shè)計(jì)方法 (SD/SA)、Jackson(JSP/JSD)系統(tǒng)開(kāi)發(fā)方法、原型法、生命周期方法等多種方法。為了更好地展現(xiàn)各種方法的特性,本文從設(shè)計(jì)思想、設(shè)計(jì)步驟或流程、優(yōu)缺點(diǎn)等方面對(duì)各軟件設(shè)計(jì)方法進(jìn)行了相應(yīng)對(duì)比和分析,為軟件設(shè)計(jì)教學(xué)工作提供一定的參考。

一、結(jié)構(gòu)化分析與設(shè)計(jì)方法(SD/SA)

結(jié)構(gòu)化分析方法又稱(chēng)作SD方法或SA方法,它是通過(guò)把現(xiàn)實(shí)世界逐一描繪為各種數(shù)據(jù)在信息系統(tǒng)中的一種流動(dòng),同時(shí)在數(shù)據(jù)不斷流動(dòng)過(guò)程中進(jìn)行數(shù)據(jù)和信息之間的轉(zhuǎn)化。基本思想可描述為:基于一種將功能逐一分解的設(shè)計(jì)模式,不斷把復(fù)雜和綜合問(wèn)題逐層進(jìn)行分解,以便對(duì)問(wèn)題進(jìn)行簡(jiǎn)化――自頂向下,逐層細(xì)化,從而將復(fù)雜的程序結(jié)構(gòu)劃分為多個(gè)功能完全不相關(guān)或者獨(dú)立的小模塊,最終達(dá)到最簡(jiǎn)化的過(guò)程。優(yōu)點(diǎn):比較直觀、應(yīng)用簡(jiǎn)單、容易理解,目前已經(jīng)獲得了較為成功的實(shí)踐經(jīng)驗(yàn),在市場(chǎng)推廣方面有較大的優(yōu)勢(shì)。不足:首先,因?yàn)閺某橄笏季S出發(fā)對(duì)模塊進(jìn)行細(xì)化,所以得到的子模塊方案各異,共性較低;其次,由于對(duì)問(wèn)題理解上的偏差,導(dǎo)致繼承性較為困難;再次,該方法的自適應(yīng)能力相對(duì)較弱,其設(shè)計(jì)的軟件重用率不高,從而延緩了開(kāi)發(fā)周期;最后,設(shè)計(jì)文檔時(shí)常出現(xiàn)與表示體系不一致的現(xiàn)象。

二、Jackson(JSP/JSD)系統(tǒng)開(kāi)發(fā)方法

Jackson開(kāi)發(fā)方法分為JSP和JSD兩種。(1)JSP開(kāi)發(fā)方法。JSP方法是一種面向數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計(jì)方案。其基本思路是按照輸入、輸出和內(nèi)部信息的三種數(shù)據(jù)結(jié)構(gòu)形式進(jìn)行設(shè)計(jì),從而把對(duì)數(shù)據(jù)結(jié)構(gòu)的描述轉(zhuǎn)變成一種程序結(jié)構(gòu)的描述方案,因此可實(shí)現(xiàn)通過(guò)數(shù)據(jù)結(jié)構(gòu)來(lái)反映程序結(jié)構(gòu)的方法。其基本思想可描述為:首先采用自頂向下的思想按功能對(duì)系統(tǒng)進(jìn)行劃分,并逐步求出各子問(wèn)題的解,將軟件開(kāi)發(fā)流程視為軟件的生命周期,最終建立一種所謂的瀑布模型?;緦?shí)現(xiàn)步驟可描述為:分析、設(shè)計(jì)、編碼、測(cè)試、運(yùn)行及后期維護(hù)。優(yōu)點(diǎn):簡(jiǎn)單易學(xué);準(zhǔn)入門(mén)檻底,對(duì)設(shè)計(jì)者的要求不高。不足:難以滿(mǎn)足規(guī)模較大的軟件系統(tǒng)設(shè)計(jì),且JSP方法難以對(duì)付結(jié)構(gòu)沖突問(wèn)題。因此,該法僅適用于小型程序的開(kāi)發(fā)。(2)JSD方法。此方法稱(chēng)作杰克遜系統(tǒng)開(kāi)發(fā)方法,它以事件的驅(qū)動(dòng)為中心,將相連的順序組合構(gòu)成程序進(jìn)程,系統(tǒng)設(shè)計(jì)模型可進(jìn)一步抽象成若干條以通信方式進(jìn)行相聯(lián)的進(jìn)程?;驹O(shè)計(jì)思想描述為:首先通過(guò)仿真來(lái)理解并描述客觀事實(shí),其次添加相應(yīng)輸出功能,最后通過(guò)某種收到實(shí)現(xiàn)系統(tǒng)間的轉(zhuǎn)換。方法實(shí)現(xiàn)步驟為:實(shí)體的動(dòng)作分析過(guò)程實(shí)體結(jié)構(gòu)分析定義初始模型功能描述決定系統(tǒng)時(shí)間特性硬件和軟件實(shí)現(xiàn)。優(yōu)點(diǎn):實(shí)現(xiàn)了同類(lèi)軟件和客觀世界間的關(guān)系研究,并確定了各類(lèi)軟件系統(tǒng)和軟件現(xiàn)實(shí)決策間的界限。不足:對(duì)客觀現(xiàn)實(shí)同類(lèi)軟件間的相互關(guān)系認(rèn)識(shí)不夠完整,有待提升;構(gòu)造的軟件實(shí)現(xiàn)結(jié)構(gòu)較為復(fù)雜,有待簡(jiǎn)化;對(duì)軟件結(jié)構(gòu)的相關(guān)描述不完善;JSD在實(shí)現(xiàn)階段較為費(fèi)時(shí)和復(fù)雜,且需要手動(dòng)實(shí)現(xiàn)。

三、原型法

原型法可分為示例型和漸增型兩大類(lèi)。其實(shí)現(xiàn)思路為:利用設(shè)計(jì)程序自動(dòng)生成軟件工程運(yùn)行環(huán)境,以便構(gòu)造出簡(jiǎn)化的實(shí)際系統(tǒng)模型,從而便于軟件開(kāi)發(fā)人員和用戶(hù)間進(jìn)行有效交流,大大提高了設(shè)計(jì)的靈活性。該方法實(shí)現(xiàn)過(guò)程要求迅速,否則便失去了意義。開(kāi)發(fā)基本步驟可大致分為四步:系統(tǒng)簡(jiǎn)化原型實(shí)現(xiàn)系統(tǒng)修改最終實(shí)現(xiàn)。優(yōu)點(diǎn):能適應(yīng)各種模糊不清和變化不定的用戶(hù)需求。不足:需要具備較強(qiáng)的知識(shí)理論基礎(chǔ),同時(shí)需要以相應(yīng)的硬件環(huán)境作支撐。

四、生命周期法

生命周期法學(xué)也把軟件開(kāi)發(fā)過(guò)程分為若干獨(dú)立階段。在軟件實(shí)現(xiàn)過(guò)程中,各階段分別完成一定任務(wù),并實(shí)現(xiàn)最終的軟件配置程序/文檔。在完成各階段性任務(wù)過(guò)程中,可運(yùn)用結(jié)構(gòu)分析(SA)技術(shù)、結(jié)構(gòu)設(shè)計(jì)(SD)技術(shù)和其他相關(guān)輔助工具。在編程過(guò)程中,使用了SP(結(jié)構(gòu)化程序設(shè)計(jì))語(yǔ)言,在各階段結(jié)束時(shí)需要進(jìn)行細(xì)致的復(fù)審過(guò)程,只有各項(xiàng)參數(shù)合格后才能進(jìn)行下一步驟的工作。因此,該方法將軟件的生命周期依次分為系統(tǒng)需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、系統(tǒng)測(cè)試、系統(tǒng)維護(hù)五大階段。優(yōu)點(diǎn):該方法采取了自頂向下、逐步求精的設(shè)計(jì)思想;模塊化設(shè)計(jì)過(guò)程中,運(yùn)用了結(jié)構(gòu)化程序設(shè)計(jì)方法,采用了嚴(yán)格的復(fù)審及測(cè)試程序,保障了軟件的可維護(hù)性。不足:對(duì)時(shí)變系統(tǒng)不太適用,開(kāi)發(fā)出的軟件穩(wěn)定性、可重用性和可維護(hù)性都比較差。

五、結(jié)束語(yǔ)

總之,以上各種軟件設(shè)計(jì)方法均存在一定的優(yōu)勢(shì)和缺陷。因此,相關(guān)專(zhuān)業(yè)的師生在設(shè)計(jì)時(shí),應(yīng)根據(jù)設(shè)計(jì)的主客觀條件進(jìn)行相應(yīng)的選擇,提高設(shè)計(jì)能力,充分利用自身和環(huán)境優(yōu)勢(shì)完成軟件的設(shè)計(jì)。

參考文獻(xiàn):

第9篇:結(jié)構(gòu)化程序設(shè)計(jì)范文

摘 要:Visual FoxPro是技工院校計(jì)算機(jī)專(zhuān)業(yè)的基礎(chǔ)專(zhuān)業(yè)課程,也是開(kāi)設(shè)最廣泛的數(shù)據(jù)庫(kù)類(lèi)課程。通過(guò)這門(mén)課程的學(xué)習(xí),可以為技校生獲得就業(yè)必備的計(jì)算機(jī)等級(jí)證書(shū)以及具有相應(yīng)的專(zhuān)業(yè)素質(zhì)打下基礎(chǔ)。因此,教師在實(shí)訓(xùn)教學(xué)過(guò)程中運(yùn)用案例法進(jìn)行教學(xué)具有特殊的現(xiàn)實(shí)意義。

關(guān)鍵詞 :案例 數(shù)據(jù)庫(kù) 應(yīng)用

由于技工院校處于本科、高職院校與中專(zhuān)院校的夾層地帶,教學(xué)理論的難度與深度不如本科與高職院校,單純的實(shí)操能力培養(yǎng)不如中專(zhuān)院校。經(jīng)過(guò)幾年的實(shí)踐,我們發(fā)現(xiàn)要使技工院校的計(jì)算機(jī)專(zhuān)業(yè)建設(shè)走出困境,就必須大膽進(jìn)行課程體系改革,為此,筆者所在技師學(xué)院一方面不斷根據(jù)招聘企業(yè)的專(zhuān)業(yè)技能要求調(diào)整計(jì)算機(jī)專(zhuān)業(yè)課程體系的內(nèi)容,刪除、淘汰一些過(guò)時(shí)的課程,增加一些新技術(shù)課程;另一方面在實(shí)訓(xùn)教學(xué)中引入案例法,從學(xué)生學(xué)習(xí)的興趣點(diǎn)培養(yǎng)入手,在加強(qiáng)學(xué)生基本的實(shí)操能力訓(xùn)練的基礎(chǔ)之上,逐步加大程序設(shè)計(jì)能力的培養(yǎng),收到良好的教學(xué)效果。筆者就以Visual FoxPro6.0數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用為例,簡(jiǎn)述案例法在教學(xué)中的實(shí)際運(yùn)用。

一、案例教學(xué)法的內(nèi)涵

案例教學(xué)法就是在教學(xué)過(guò)程中,教師通過(guò)設(shè)置一個(gè)難易適中的案例,引導(dǎo)學(xué)生循序漸進(jìn)地展開(kāi)探究活動(dòng),從而在活動(dòng)的過(guò)程中潛移默化地培養(yǎng)學(xué)生發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、解決問(wèn)題的能力。這種教學(xué)方法對(duì)技校計(jì)算機(jī)專(zhuān)業(yè)教學(xué)來(lái)說(shuō)具有特殊的意義,一是技校生受身心發(fā)展?fàn)顩r的制約,邏輯思維能力不強(qiáng),而采用具體案例,就更加直觀、形象,更容易激發(fā)學(xué)生的學(xué)習(xí)興趣;二是便于教師組織、開(kāi)展教學(xué),教師通過(guò)案例,可以隨時(shí)發(fā)現(xiàn)學(xué)生對(duì)于所講授的內(nèi)容掌握的情況,從而調(diào)整教學(xué)進(jìn)度與難度,保證教學(xué)效果的優(yōu)化;三是有利于學(xué)生程序設(shè)計(jì)能力的培養(yǎng)。學(xué)生通過(guò)一個(gè)具體案例問(wèn)題的分析、解決,很容易舉一反三,由此及彼,這樣就刺激了學(xué)生的“發(fā)散思維”,這為他們今后走向企業(yè)必經(jīng)的獨(dú)立工作與獨(dú)立思考打下了基礎(chǔ)。

二、Visual FoxPro6.0數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課程的內(nèi)容

數(shù)據(jù)庫(kù)技術(shù)是從20世紀(jì)60年代末開(kāi)始發(fā)展起來(lái)的計(jì)算機(jī)軟件技術(shù),隨著網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)的不斷發(fā)展,數(shù)據(jù)庫(kù)技術(shù)在各領(lǐng)域得到越來(lái)越多地應(yīng)用。Visual FoxPro作為20世紀(jì)90年代興起的高級(jí)數(shù)據(jù)庫(kù)管理軟件,它是一種完善的編程及數(shù)據(jù)管理語(yǔ)言,在小型數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)中得到了廣泛應(yīng)用。而Visual FoxPro6.0是一種32位關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它在20世紀(jì)80年代流行的Xbase系列軟件基礎(chǔ)上增加了新的功能特性,性能不斷完善,技術(shù)不斷提高。作為關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),Visual FoxPro6.0提供了一個(gè)集成化開(kāi)發(fā)環(huán)境,使數(shù)據(jù)的組織和操作變得方便、簡(jiǎn)單,它不僅支持傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì),還支持面向?qū)ο蟪绦蛟O(shè)計(jì),適合開(kāi)發(fā)小型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),適合計(jì)算機(jī)與非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生學(xué)習(xí)。根據(jù)教育部計(jì)算機(jī)基礎(chǔ)教育白皮書(shū)的要求,數(shù)據(jù)庫(kù)應(yīng)用技術(shù)不僅是計(jì)算機(jī)專(zhuān)業(yè)的必修課程,也是非計(jì)算機(jī)專(zhuān)業(yè)“1+X”課程體系中第二層次的重要方向之一。

三、案例法在Visual FoxPro實(shí)訓(xùn)教學(xué)中的實(shí)踐探索

由于技工院校計(jì)算機(jī)專(zhuān)業(yè)數(shù)據(jù)庫(kù)應(yīng)用課程的教學(xué)目標(biāo)定位于培養(yǎng)技校生信息技術(shù)應(yīng)用素質(zhì),注重?cái)?shù)據(jù)庫(kù)基礎(chǔ)知識(shí)和基本理論的融會(huì)貫通,強(qiáng)調(diào)數(shù)據(jù)庫(kù)應(yīng)用能力的培養(yǎng)。因此,案例教學(xué)法的采用必須兼顧科學(xué)性與實(shí)用性,一方面教學(xué)內(nèi)容緊扣Visual FoxPro知識(shí)的體系結(jié)構(gòu),在介紹Visual FoxPro基礎(chǔ)知識(shí)后,逐步深入地講解數(shù)據(jù)庫(kù)與表操作、查詢(xún)與視圖、SQL的應(yīng)用、數(shù)據(jù)與數(shù)據(jù)運(yùn)算、程序設(shè)計(jì)基礎(chǔ)、表單及控件的應(yīng)用、菜單設(shè)計(jì)、報(bào)表設(shè)計(jì)、項(xiàng)目管理等內(nèi)容,深入淺出地向?qū)W生講解程序、軟件、軟件開(kāi)發(fā)方法、結(jié)構(gòu)化程序設(shè)計(jì)、面向?qū)ο笤O(shè)計(jì)等概念,為學(xué)生的專(zhuān)業(yè)學(xué)習(xí)打下扎實(shí)的理論基礎(chǔ);另一方面將案例貫穿整個(gè)教學(xué)過(guò)程。在教學(xué)的第一個(gè)環(huán)節(jié)就引入案例—“學(xué)生管理系統(tǒng)”,后續(xù)的教學(xué)內(nèi)容圍繞該案例展開(kāi),最終完成整個(gè)案例的實(shí)現(xiàn)。這樣就使教學(xué)充分體現(xiàn)了案例教學(xué)的特點(diǎn)。由于案例經(jīng)過(guò)精心設(shè)計(jì),選擇學(xué)生比較熟悉,比較有代表性的“學(xué)生管理系統(tǒng)”,整個(gè)教學(xué)內(nèi)容講述這個(gè)綜合應(yīng)用的案例,每一個(gè)知識(shí)點(diǎn)提出具體的任務(wù)和要求,形成一個(gè)小的、具體的案例,這樣就形成案例與任務(wù)共同驅(qū)動(dòng)教學(xué)展開(kāi)的良好情境,也更有利于技校生循序漸進(jìn)地掌握數(shù)據(jù)庫(kù)應(yīng)用的相關(guān)知識(shí)。

四、小結(jié)

相關(guān)熱門(mén)標(biāo)簽