版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、8.1計算機軟件的概念8.2算法與數(shù)據(jù)結(jié)構(gòu)8.3程序設(shè)計第8章 計算機軟件8.1計算機軟件的概念任務(wù)1 初步認(rèn)識計算機軟件任務(wù)描述本任務(wù)學(xué)習(xí)軟件、程序、文檔資料等概念。相關(guān)知識與技能計算機系統(tǒng)主要由軟件和硬件兩大部分組成。硬件是計算機系統(tǒng)的機器部分,即中央處理機、存儲器及各種外圍設(shè)備的總稱。軟件則是為使計算機高效地工作所配置的各種程序及相關(guān)的文檔資料的總稱。程序是經(jīng)過組織的計算機指令序列,指令是組成計算機程序的基本單位。文檔資料包括:軟件開發(fā)過程中的需求分析、方案設(shè)計、編程方法等的文檔及使用說明書、用戶手冊、維護(hù)手冊等。 控制器 中央處理器CPU 運算器 主機 ROM(只讀存儲器) 內(nèi)存 RA
2、M(讀寫存儲器) 硬件系統(tǒng) Cache(高速緩沖存儲器) 計 輸入設(shè)備鍵盤、鼠標(biāo)、掃描儀等 算 外設(shè) 輸出設(shè)備顯示器、打印機、音響等 機 外存硬盤、軟盤、光盤、閃存等 系 操作系統(tǒng) 統(tǒng) 系統(tǒng)軟件 編譯程序和解釋程序 數(shù)據(jù)庫管理 軟件系統(tǒng) 應(yīng)用軟件 各種字處理系統(tǒng)、各種軟件包支撐軟件環(huán)境數(shù)據(jù)庫、各種接口軟件、工具組8.2算法與數(shù)據(jù)結(jié)構(gòu)任務(wù)2 算法及其描述任務(wù)描述本任務(wù)通過案例學(xué)習(xí)算法的概念及算法的描述。案例8-1 求計算1+2+3+4+5的算法。相關(guān)知識與技能做任何事情都要有一個步驟,廣義地講,為解決一個問題而采取的方法和步驟,就稱為“算法”。算法有兩大類別: 數(shù)值計算:求方程的根、求函數(shù)的定積
3、分等。 非數(shù)值計算:查找、排序、圖書檢索、人事管理、文字處理等。算法的設(shè)計師在設(shè)計一個算法后,不能只是自己明白,應(yīng)該準(zhǔn)確清楚地將自己設(shè)計的解題步驟記錄下來,或提供交流,或編寫程序供計算機執(zhí)行。步驟1:先計算1+2,得到3步驟2:將步驟1得到的結(jié)果加上3,得到6步驟3:將步驟2得到的結(jié)果加上4,得到10步驟4:將步驟3得到的結(jié)果加上5,得到15,計算結(jié)果為15按照同樣的思路可寫出計算1+2+.100的步驟,可知是非常繁瑣的。方法與步驟知識拓展瑞士著名計算機科學(xué)家尼克萊沃思(Niklaus Wirth)早在1976年提出了這樣一個公式: 算法數(shù)據(jù)結(jié)構(gòu)程序1974年,圖靈獎的獲得者、著名計算機科學(xué)家
4、、算法大師克努特(Donald E。 Knuth)說:“計算機科學(xué)是算法的學(xué)習(xí)”。可見,算法是計算機科學(xué)中非常重要的概念,是計算機學(xué)科的核心內(nèi)容,在程序編制、軟件開發(fā),乃至整個計算機科學(xué)中都占有重要地位。所謂算法(Algorithm),是對特定問題求解步驟的一種描述,是指令的有限序列。描述算法需要一種語言,可以是自然語言、數(shù)學(xué)語言或者是計算機語言。一個算法一般具有下列5個重要特性:輸入:一個算法應(yīng)該有一個或多個輸入。有窮性:一個算法必須在執(zhí)行有窮步驟之后正常結(jié)束,而不能形成無限循環(huán)。確定性:算法中的每一條指令都必須有確切的含義,不能有二義性??尚行裕核惴ㄖ械拿恳粭l指令都必須是切實可行的,即原則
5、上可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)。輸出:一個算法應(yīng)該有0個或多個輸出,這些輸出是與輸入有某種特定關(guān)系的量。任務(wù)3 用程序設(shè)計語言描述算法任務(wù)描述本任務(wù)通過案例進(jìn)一步學(xué)習(xí)算法的概念,理解用程序設(shè)計語言(C語言)進(jìn)行算法描述的方法。案例8-2 用程序設(shè)計語言(C語言)描述計算1+2+100的算法。相關(guān)知識與技能求解1+2+100的過程如圖8-1所示,可得出以下規(guī)律:1+2=33+3=66+4=1010+5=15.4851+99=49504950+100=5050重復(fù)地進(jìn)行相加運算本次的和作為下一次相加運算的被加數(shù)加數(shù)有規(guī)律地變化著規(guī)律圖8-1 1+2+100 運算過程用C語言對算法描述
6、如下:main() int x, y; x = 1; y=2; while(y=100) x = x + y; y=y+1; printf(“%d”, x);方法與步驟任務(wù)4 用偽代碼描述算法任務(wù)描述本任務(wù)通過案例進(jìn)一步學(xué)習(xí)算法的概念,理解用偽代碼進(jìn)行算法描述的方法。案例8-3 用偽代碼語言描述求1+2+100的算法。相關(guān)知識與技能 偽代碼是用文字(數(shù)字、字母)和符號來描述算法的,用偽代碼描述的算法結(jié)構(gòu)清晰,格式緊湊,簡單易懂。它為程序員提供了以特定編程語言編寫指令的模板。偽代碼表明了程序細(xì)節(jié),在偽代碼階段檢測并修復(fù)錯誤是簡單。在校驗并接受偽代碼之后,就可以把偽代碼表示的指令轉(zhuǎn)換成高級編程語言
7、。方法與步驟用偽代碼對算法描述如下:beginy 2x 1while(y=100) x x+y y y+1print xend任務(wù)5 用流程圖描述算法任務(wù)描述本任務(wù)通過案例進(jìn)一步學(xué)習(xí)算法的概念,理解用流程圖進(jìn)行算法描述的方法。案例8-4 用流程圖描述求1+2+100的算法。相關(guān)知識與技能用流程圖表示算法ANSI規(guī)定的一些常用的流程圖符號起/止點輸入/輸出處理準(zhǔn)備預(yù)定義處理判斷控制流外接內(nèi)接流程圖的基本符號1+2=33+3=66+4=1010+5=15.4851+99=49504950+100=50500+1=1令s表示被加數(shù)(初始值為0),令I(lǐng)表示加數(shù)(初始值為1)進(jìn)行100次加法后結(jié)束,或者
8、當(dāng)加數(shù)大于100時結(jié)束S中存放計算結(jié)果重復(fù)地進(jìn)行相加運算本次的和作為下一次相加運算的被加數(shù)加數(shù)有規(guī)律地變化著計算1+2+.+100下面的算法中S表示被加數(shù),也表示累加和,I表示加數(shù)步驟1:S 0; I 1步驟2:若I小于等于100,則轉(zhuǎn)向步驟3;否則,轉(zhuǎn)向步驟6;步驟3: S S + I; 步驟4: I I + 1;步驟5:轉(zhuǎn)向步驟2;步驟6:S的值就是計算結(jié)果,算法結(jié)束。推廣該算法,即修改算法中步驟2的100為n,可得到計算1+2+.+n的算法。計算1+2+.+100的算法方法與步驟用流程圖對算法描述如圖8-2所示。圖8-2 求1+2+100算法的流程圖算法思想:例如,計算1+2+.+100
9、時先計算1100, 2+99, ., 49+52, 50+51, 然后用10150即可得到運算結(jié)果。類推,要計算1+2+.+n,只要知道有多少個n+1,就可以得到計算結(jié)果。步驟1:S n+1步驟2:若n是偶數(shù),則 S (S n) 2; 否則, S S ( n-1) 2 + (n + 1) 2 步驟3:S的值就是計算結(jié)果,算法結(jié)束。同一個問題可用不同的方法解決,即用不同算法解決同一個問題。因此,就存在一個算法的比較(分析)和選擇問題,比較的依據(jù)是算法的效率。計算1+2+.+n的另一種算法任務(wù)6 初步認(rèn)識數(shù)據(jù)結(jié)構(gòu)任務(wù)描述 本任務(wù)了解數(shù)據(jù)結(jié)構(gòu)的基本概念和常用的幾種數(shù)據(jù)結(jié)構(gòu),如線性表、數(shù)組、樹和二叉樹
10、以及圖等。相關(guān)知識與技能數(shù)據(jù)結(jié)構(gòu)(Data Structure)是計算機專業(yè)的一門重要專業(yè)基礎(chǔ)課,主要研究三部分內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)以及對各種結(jié)構(gòu)進(jìn)行的運算。 1. 順序存儲結(jié)構(gòu)在程序設(shè)計中,由若干個數(shù)據(jù)元素組成的線性結(jié)構(gòu)稱為線性表。線性表是最簡單和最常用的數(shù)據(jù)結(jié)構(gòu)。例如,考慮一副撲克牌中相同花色的13張紅桃,為了要在程序中引用每一張紅桃,可以建立13個變量Card1,Card2,Card13。每一張牌有確定的值,如“紅桃2”、“紅桃9”等。 圖 8-3 線性結(jié)構(gòu):一維數(shù)組2. 鏈?zhǔn)酱鎯Y(jié)構(gòu)每個結(jié)點除包含一個數(shù)據(jù)域外,還包含一個指針域,用以存放下一個結(jié)點的指針,這樣的鏈表稱為單
11、鏈表。圖8-4是一個具有附加頭結(jié)點的單鏈表,指針變量h中存放的是附加頭結(jié)點的指針,附加頭結(jié)點只用來存放第一個具有數(shù)據(jù)的結(jié)點的指針,而第一個結(jié)點的指針域存放第二個結(jié)點的指針,如此下去,最后一個結(jié)點的指針域要置空(NULL),以表示它位于鏈表的尾部。圖 8-4 單鏈表的結(jié)構(gòu)圖 8-6 單鏈表的刪除操作圖 8-5 單鏈表的插入操作3. 棧與隊列 對于一般的線性表,可以在任何位置上插入元素,也可以刪除任何位置上的元素。如果限定插入和刪除都只能在線性表的一端進(jìn)行,這樣的線性表稱為棧;如果限定插入在線性表的一端,刪除在另一端,這樣的線性表稱為隊列。棧是一個按“后進(jìn)先出”(last in first out
12、)方式工作的數(shù)據(jù)列表。表中允許進(jìn)行插入、刪除操作的一端稱作棧頂;另一端稱作棧底。棧頂?shù)奈恢檬莿討B(tài)的,對棧頂當(dāng)前位置的標(biāo)記稱為棧頂指針。當(dāng)棧中沒有數(shù)據(jù)元素時,稱為空棧。棧的插入操作通常稱為進(jìn)?;蛉霔?;棧的刪除操作則稱為退?;虺鰲!D8-7是一個棧的動態(tài)示意圖,圖中箭頭代表當(dāng)前棧頂?shù)闹羔樜恢茫胻op表示。 圖8-7 棧的動態(tài)示意圖隊列與棧非常相似,隊列按“先進(jìn)先出”(first in first out)方式工作。插入元素的那一端稱為隊尾,刪除操作的那一端稱為隊頭。隊列的插入操作通常稱為進(jìn)隊列或入隊列;隊列的刪除操作稱為退隊列或出隊列。圖8-8 隊列的動態(tài)示意圖4. 樹和二叉樹樹(tree)是數(shù)
13、據(jù)結(jié)構(gòu)中的一種非線性結(jié)構(gòu)。樹在我們周圍隨處可見。這里討論的樹結(jié)構(gòu)形同大自然中的樹,也有樹根、樹葉和樹枝。不同之處是:前者樹根在上,后者樹根在下。圖8-9 樹結(jié)構(gòu)示意圖如果樹結(jié)構(gòu)每個結(jié)點的孩子結(jié)點個數(shù)最多為2個,這種樹就是二叉樹,如圖8-10所示。 圖8-10 二叉樹圖8-11 圖8-9樹對應(yīng)的二叉樹8.3 程序設(shè)計任務(wù)7 初步認(rèn)識程序設(shè)計任務(wù)描述本任務(wù)學(xué)習(xí)程序及計算機程序的基本概念。相關(guān)知識與技能本書中所說的程序指的是計算機程序,它實際上表示的是一種處理事務(wù)的時間順序和處理步驟。由于組成計算機程序的基本單位是指令,因此,計算機程序就是按照工作步驟事先編排好的、具有特殊功能的指令序列。 一個程序
14、具有一個單一的、不可分的結(jié)構(gòu),它規(guī)定了某個數(shù)據(jù)結(jié)構(gòu)上的一個算法。于是有以下公式:算法+數(shù)據(jù)結(jié)構(gòu)=程序任務(wù)8 常見程序設(shè)計語言任務(wù)描述本任務(wù)了解一些常見的程序設(shè)計語言的特點。相關(guān)知識與技能1. 面向機器語言機器語言:機器語言是計算機的第一代語言。 例如,用機器語言寫的某一段程序為:0000 0110 0000 00110011 1110 0000 01000000其中,每一條機器指令都是用二進(jìn)制代碼表示的。以上由“0”、“1”組成的三條指令對Z80機器而言就是完成3加4的運算。匯編語言匯編語言是計算機的第二代語言。 例如,把上述用機器語言書寫的三條指令用匯編語言來表示,即成為:LD B, 03L
15、D A, 04ADD A, B從英文字母的含義可知,第一條指令是把3送到寄存器B中(LD是load的縮寫)。同理,第二條是把4送到寄存器A中,第三條則是把B中的數(shù)加到A中去。2. 面向過程語言FORTRAN語言(公式翻譯語言)ALGOL 60(算法語言)COBOL(用于事務(wù)處理的通用語言)BASIC(初學(xué)者通用符號指令碼)PL/1(程序設(shè)計語言1)Ada語言 PASCAL語言C語言3. 面向?qū)ο笳Z言C+程序設(shè)計語言Visual Basic程序設(shè)計語言4. 網(wǎng)絡(luò)編程語言網(wǎng)絡(luò)編程語言是計算機的第五代語言。進(jìn)入20世紀(jì)90年代,網(wǎng)絡(luò)技術(shù)得到了飛速發(fā)展,尤其進(jìn)到21世紀(jì)后,Internet得到了更為廣
16、泛的應(yīng)用。Java語言(Java language)是一種簡捷的、面向?qū)ο蟮?、用于網(wǎng)絡(luò)環(huán)境的程序設(shè)計語言,由SUN公司(漢語簡稱“太陽公司”)于1995年5月正式對外發(fā)布。 任務(wù)9 面向過程程序設(shè)計任務(wù)描述本任務(wù)通過案例學(xué)習(xí)簡單的面向過程程序設(shè)計。案例8-5 用C語言編寫程序:輸入一個年份,判斷該年份是否是潤年。相關(guān)知識與技能單分支選擇語句格式:If(條件表達(dá)式) 語句塊語句功能:當(dāng)條件為True(真)時,執(zhí)行后面的語句塊。方法與步驟兩分支選擇結(jié)構(gòu)語句格式:If(條件表達(dá)式)語句塊1else語句塊2本案例可采用選擇結(jié)構(gòu)來實現(xiàn)。單分支選擇結(jié)構(gòu)有兩種語句格式:C語言的歷史背景C語言是AT&T貝爾實
17、驗室的Dennis Ritchie和Ken Thompson 在B語言的基礎(chǔ)上開發(fā)出來的(1972 or 1973)UNIX操作系統(tǒng)是用C語言編寫的1982年ANSI工作小組開始建立C語言的標(biāo)準(zhǔn)美國國家標(biāo)準(zhǔn)協(xié)會ANSI:American National Standards Institute1990年ANSI C被接受為國際標(biāo)準(zhǔn)ANSI C標(biāo)準(zhǔn)規(guī)定了用C編寫的程序的格式,并確定了如何解釋這些程序ANSI C的目的是促進(jìn)C程序在各種機器上的可移植性、可靠性、可維護(hù)性和有效執(zhí)行目前所有主要的C編譯器都遵循ANSI C標(biāo)準(zhǔn)任務(wù)10 面向?qū)ο蟪绦蛟O(shè)計任務(wù)描述本任務(wù)通過案例學(xué)習(xí)簡單的面向?qū)ο蟪绦蛟O(shè)計。
18、案例8-6 用VB6.0編寫程序,該應(yīng)用程序由一個圖像框控件、一個定時器控件和兩個命令按鈕組成,運行程序時,若單擊start按鈕,則地球滾動;基單擊end按鈕,則結(jié)束運行。相關(guān)知識與技能面向?qū)ο?,是基于對象概念,以對象為中心,以類和繼承為構(gòu)造機制,來認(rèn)識、理解、刻畫客觀世界和設(shè)計、構(gòu)建相應(yīng)的軟件系統(tǒng)。對象是由屬性(即數(shù)據(jù))和事件(即程序)組成的封裝體,與客觀實體有直接的對應(yīng)關(guān)系。一個對象類定義了具有相似性質(zhì)(屬性)的一組對象。而繼承性是對具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。方法與步驟知識拓展VB 應(yīng)用程序的基礎(chǔ)構(gòu)件是對象(如窗體和控件)。通過把類實例化,就可以得到對象。對象的屬性、
19、方法和事件對象的三要素。對象的屬性:用來描述和反映對象特征的參數(shù)在設(shè)計階段,通過屬性窗口進(jìn)行設(shè)置;也可通過程序代碼,在程序運行時設(shè)置。語句格式:對象名. 屬性=屬性值對象的方法:指對象的行為和動作。方法實質(zhì)是一些封裝起來的過程和函數(shù),使用方法即調(diào)用過程或函數(shù)。調(diào)用方法的語句格式: 對象名. 方法參數(shù)表對象的事件:即發(fā)生在對象上的事情。事件過程:對象的事件被激發(fā)后,應(yīng)用程序處理事件的步驟事件過程的格式: SUB 對象名_事件名( 參數(shù)表 ) 。 END SUB8.4 軟件的開發(fā)任務(wù)11 軟件的開發(fā)過程任務(wù)描述 本任務(wù)學(xué)習(xí)軟件開發(fā)的基本過程。相關(guān)知識與技能軟件開發(fā)的過程基本包括需求分析、設(shè)計、編程、測試等。其中:需求分析:不僅僅是用戶需求,應(yīng)該是開發(fā)中遇到的所有的需求。例如,首先要知道項目所要解決的問題;測試案例中應(yīng)該輸入的數(shù)據(jù),等等。為了清楚地知道這些需求,經(jīng)常要和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版果林租賃與農(nóng)村金融服務(wù)合作合同范本3篇
- 2025年度環(huán)保產(chǎn)業(yè)融資服務(wù)合同范本(含排放)3篇
- 二零二五年度房地產(chǎn)廣告發(fā)布合同:廣告投放合作協(xié)議3篇
- 2025版西瓜品牌授權(quán)及品牌管理合同3篇
- 二零二五年度戶口遷移安置補償協(xié)議3篇
- 二零二五年度文化旅游景區(qū)開店合作合同3篇
- 二零二五年度國際房產(chǎn)二手房買賣合同范本2篇
- 2025年度社區(qū)便利店租賃合同模板(含加盟服務(wù)條款)3篇
- 二零二五年度新材料合伙人退伙技術(shù)合作與退伙協(xié)議3篇
- 二零二五年度建筑垃圾資源化利用項目招投標(biāo)合同3篇
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2025年中央歌劇院畢業(yè)生公開招聘11人歷年高頻重點提升(共500題)附帶答案詳解
- 北京市高校課件 開天辟地的大事變 中國近代史綱要 教學(xué)課件
- 監(jiān)事會年度工作計劃
- 2024中國近海生態(tài)分區(qū)
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試化學(xué)試題(解析版)
- 北師大版五年級數(shù)學(xué)下冊第3單元第1課時分?jǐn)?shù)乘法(一)課件
- 2024-2030年中國汽車保險杠行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢分析報告
- 智研咨詢發(fā)布:中國種豬行業(yè)市場現(xiàn)狀、發(fā)展概況、未來前景分析報告
- 六年級上冊分?jǐn)?shù)四則混合運算100題及答案
- 2024年信息系統(tǒng)項目管理師(綜合知識、案例分析、論文)合卷軟件資格考試(高級)試題與參考答案
評論
0/150
提交評論