C語(yǔ)言程序設(shè)計(jì)-第1章--概述_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)-第1章--概述_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)-第1章--概述_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)-第1章--概述_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)-第1章--概述_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 程序設(shè)計(jì)技術(shù)基礎(chǔ)第1章 概述1.1 計(jì)算機(jī)的工作機(jī)制1.2 程序與程序設(shè)計(jì)1.3 算法與算法描述1.4 C語(yǔ)言 2022/7/2321.1 計(jì)算機(jī)的工作機(jī)制 1.1.1 硬件結(jié)構(gòu) 1.1.2 軟件系統(tǒng)1.1 計(jì)算機(jī)的工作機(jī)制1.1.1 硬件結(jié)構(gòu)馮諾依曼計(jì)算機(jī)的硬件構(gòu)成:控制器負(fù)責(zé)從內(nèi)存中取指令并根據(jù)指令發(fā)出控制信號(hào)以引起其他部件的動(dòng)作。運(yùn)算器執(zhí)行運(yùn)算指令所規(guī)定的運(yùn)算。寄存器主要用于記錄下一條指令的內(nèi)存地址、當(dāng)前指令的執(zhí)行狀態(tài)以及暫時(shí)保存指令的計(jì)算結(jié)果。內(nèi)存儲(chǔ)器(簡(jiǎn)稱內(nèi)存)用于存儲(chǔ)計(jì)算機(jī)程序。外部設(shè)備(簡(jiǎn)稱外設(shè))提供了計(jì)算機(jī)與外界的接口,主要用于計(jì)算機(jī)的輸入/輸出以及為計(jì)算機(jī)提供大容量的信息存

2、儲(chǔ)(簡(jiǎn)稱外存)。1.1.2 軟件系統(tǒng)計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中的程序以及相關(guān)文檔。程序是對(duì)計(jì)算任務(wù)的處理對(duì)象(數(shù)據(jù))與處理規(guī)則(算法)的描述;文檔是為了便于人理解程序所需要的資料說明,供程序開發(fā)與維護(hù)使用。軟件系統(tǒng)可以分為系統(tǒng)軟件、支撐軟件和應(yīng)用軟件。1.2 程序與程序設(shè)計(jì) 1.2.1 程序設(shè)計(jì)范型 1.2.2 程序設(shè)計(jì)語(yǔ)言 1.2.3 程序設(shè)計(jì)步驟1.2 程序和程序設(shè)計(jì)程序:一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令只要讓計(jì)算機(jī)執(zhí)行這個(gè)程序,計(jì)算機(jī)就會(huì)自動(dòng)地、有條不紊地進(jìn)行工作計(jì)算機(jī)的一切操作都是由程序控制的,離開程序,計(jì)算機(jī)將一事無成計(jì)算機(jī)程序具有如下性質(zhì):(1)目的性:程序有明確的目的,在運(yùn)行時(shí)能正確完

3、成賦予它的功能。(2)分步性:程序?yàn)橥瓿善鋸?fù)雜的功能,由一系列計(jì)算機(jī)能執(zhí)行的步驟組成。(3)有限性:程序中所包含的步驟是有限的。(4)有序性:程序的執(zhí)行步驟是有序的,不能隨意改變這些步驟的執(zhí)行順序。(5)操作性:程序是對(duì)某些對(duì)象的操作,完成其有意義的功能。1.2.1 程序設(shè)計(jì)范型程序設(shè)計(jì)范型是計(jì)算機(jī)編程中的基本風(fēng)格和典范模式,是編程者在其所創(chuàng)造的虛擬世界中自覺不自覺采用的世界觀和方法論。典型的程序設(shè)計(jì)范型有過程式(面向過程)、對(duì)象式(面向?qū)ο螅⒑瘮?shù)式以及邏輯式等。1.2.1 程序設(shè)計(jì)范型1過程式 過程式程序設(shè)計(jì)是一種以功能為中心、基于功能分解的程序設(shè)計(jì)范型。一個(gè)過程式程序由一些子程序構(gòu)成,每

4、個(gè)子程序?qū)?yīng)一個(gè)子功能,它實(shí)現(xiàn)了功能抽象。子程序描述了一系列的操作,它是操作的封裝體。 Nicklaus Wirth提出了如下的經(jīng)典公式,刻畫了過程式程序設(shè)計(jì)的本質(zhì)特征。 程序=數(shù)據(jù)結(jié)構(gòu)+算法1.2.1 程序設(shè)計(jì)范型2對(duì)象式 對(duì)象式程序設(shè)計(jì)是一種以數(shù)據(jù)為中心、基于數(shù)據(jù)抽象的程序設(shè)計(jì)范型。對(duì)象式程序設(shè)計(jì)通常稱為面向?qū)ο蟪绦蛟O(shè)計(jì)。一個(gè)面向?qū)ο蟮某绦蛴梢恍?duì)象構(gòu)成,對(duì)象是由一些數(shù)據(jù)及可施加于這些數(shù)據(jù)上的操作所構(gòu)成的封裝體。 面向?qū)ο蟪绦蚩珊?jiǎn)單地表示成下面的公式: 程序=對(duì)象/類+對(duì)象/類+ 對(duì)象/類=數(shù)據(jù)+操作1.2.1 程序設(shè)計(jì)范型3函數(shù)式與邏輯式 函數(shù)式程序設(shè)計(jì)是圍繞函數(shù)及函數(shù)應(yīng)用來進(jìn)行的,它基

5、于遞歸函數(shù)理論和演算(演算即一套用于研究函數(shù)定義、函數(shù)應(yīng)用和遞歸的形式系統(tǒng)),其中,函數(shù)也被作為值來看待。 邏輯式程序設(shè)計(jì)是把程序組織成一組事實(shí)和一組推理規(guī)則,它基于的是謂詞演算。1.2.2 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言是一個(gè)能完整、準(zhǔn)確和規(guī)則地表達(dá)人們的意圖,并用以指揮或控制計(jì)算機(jī)工作的“符號(hào)系統(tǒng)”。簡(jiǎn)單地說:人和計(jì)算機(jī)交流信息的、計(jì)算機(jī)和人都能識(shí)別的語(yǔ)言。計(jì)算機(jī)語(yǔ)言發(fā)展階段:機(jī)器語(yǔ)言(由0和1組成的指令)匯編語(yǔ)言(用英文字母和數(shù)字表示指令)高級(jí)語(yǔ)言(接近于人的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言)面向過程的語(yǔ)言 (非結(jié)構(gòu)化的語(yǔ)言、結(jié)構(gòu)化語(yǔ)言)面向?qū)ο蟮恼Z(yǔ)言低級(jí)語(yǔ)言程序翻譯的方式 :編譯方式 事先編好的一個(gè)稱為“

6、編譯程序”的程序,將其放在計(jì)算機(jī)中。當(dāng)高級(jí)語(yǔ)言源程序輸入到計(jì)算機(jī)中時(shí),編譯程序便把源程序整個(gè)翻譯成機(jī)器指令表示的目標(biāo)程序。然后執(zhí)行該目標(biāo)程序,得到計(jì)算結(jié)果。解釋方式 事先編好的一個(gè)稱為“解釋程序”的程序,將其放在計(jì)算機(jī)中。當(dāng)高級(jí)語(yǔ)言源程序輸入到計(jì)算機(jī)中時(shí),解釋程序?qū)⒃闯绦虻拿恳粭l語(yǔ)句逐句翻譯,逐句執(zhí)行,即邊解釋邊執(zhí)行。1.2.3 程序設(shè)計(jì)步驟(1)問題分析(2)設(shè)計(jì)算法(3)編寫程序(4)對(duì)源程序進(jìn)行編輯、編譯和連接(5)運(yùn)行程序,分析結(jié)果(6)編寫程序文檔(1)問題分析對(duì)于接手的任務(wù)要進(jìn)行認(rèn)真的分析研究所給定的條件分析最后應(yīng)達(dá)到的目標(biāo)找出解決問題的規(guī)律選擇解題的方法(1)問題分析(2)設(shè)計(jì)算

7、法設(shè)計(jì)出解題的方法和具體步驟(1)問題分析(2)設(shè)計(jì)算法(3)編寫程序(4)對(duì)源程序進(jìn)行編輯、編譯和連接(5)運(yùn)行程序,分析結(jié)果結(jié)果錯(cuò)了,程序肯定錯(cuò)結(jié)果對(duì)了,程序未必對(duì)1.3 算法與算法描述 1.3.1 算法概念 1.3.2 算法描述 1.3.3 結(jié)構(gòu)化程序設(shè)計(jì)思想一個(gè)程序主要包括以下兩方面的信息:(1) 對(duì)數(shù)據(jù)的描述。在程序中要指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類型和數(shù)據(jù)的組織形式這就是數(shù)據(jù)結(jié)構(gòu)(data structure)(2) 對(duì)操作的描述。即要求計(jì)算機(jī)進(jìn)行操作的步驟也就是算法(algorithm)1.3 算法與算法描述數(shù)據(jù)是操作的對(duì)象操作的目的是對(duì)數(shù)據(jù)進(jìn)行加工處理,以得到期望的結(jié)果著名計(jì)

8、算機(jī)科學(xué)家沃思(Nikiklaus Wirth)提出一個(gè)公式: 算法 + 數(shù)據(jù)結(jié)構(gòu) = 程序一個(gè)程序除了算法和數(shù)據(jù)結(jié)構(gòu)這主要要素外,還應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),并且用某一種計(jì)算機(jī)語(yǔ)言表示算法、數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)方法和語(yǔ)言工具是一個(gè)程序設(shè)計(jì)人員應(yīng)具備的知識(shí)算法是解決“做什么”和“怎么做”的問題程序中的操作語(yǔ)句,是算法的體現(xiàn)不了解算法就談不上程序設(shè)計(jì)1.3.1 算法概念廣義地說,為解決一個(gè)問題而采取的方法和步驟,就稱為“算法”對(duì)同一個(gè)問題,可以有不同的解題方法和步驟為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法計(jì)算機(jī)算法可分為兩大類別:數(shù)值運(yùn)算算法非數(shù)值

9、運(yùn)算算法數(shù)值運(yùn)算的目的是求數(shù)值解非數(shù)值運(yùn)算包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域一個(gè)有效算法應(yīng)該具有以下特點(diǎn):(1) 有窮性。一個(gè)算法應(yīng)包含有限的操作步驟,而不能是無限的。(2) 確定性。算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。一個(gè)有效算法應(yīng)該具有以下特點(diǎn):(3) 有零個(gè)或多個(gè)輸入。所謂輸入是指在執(zhí)行算法時(shí)需要從外界取得必要的信息。(4) 有一個(gè)或多個(gè)輸出。算法的目的是為了求解,“解” 就是輸出。沒有輸出的算法是沒有意義的。(5) 有效性。算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。1.3.2 算法描述常用的方法有:自然語(yǔ)言流程圖N-S圖偽代碼1. 自

10、然語(yǔ)言用自然語(yǔ)言表示通俗易懂,但文字冗長(zhǎng),容易出現(xiàn)歧義性用自然語(yǔ)言描述包含分支和循環(huán)的算法,不很方便除了很簡(jiǎn)單的問題外,一般不用自然語(yǔ)言 2. 流程圖(1)標(biāo)準(zhǔn)圖符流程圖描述的三種基本結(jié)構(gòu) 順序結(jié)構(gòu)AB流程圖描述的三種基本結(jié)構(gòu) 選擇結(jié)構(gòu)ABYpNAYpN流程圖描述的三種基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 當(dāng)型循環(huán)結(jié)構(gòu)AYp1NYx51t輸出t2it*iti+1i4. 偽代碼偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來描述算法用偽代碼寫算法并無固定的、嚴(yán)格的語(yǔ)法規(guī)則,可以用英文,也可以中英文混用例如 求5! 的算法用為代碼表示為:begin (算法開始) 1 t 2 i while i5 t*i t i

11、+1 i print tend (算法結(jié)束)1.3.3 結(jié)構(gòu)化程序設(shè)計(jì)思想結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思路是:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。結(jié)構(gòu)化程序設(shè)計(jì)思想 (1)結(jié)構(gòu)化編碼 (2)結(jié)構(gòu)化程序的特點(diǎn) (3)結(jié)構(gòu)化程序的分析方法 (4)模塊化設(shè)計(jì) 采取以下方法保證得到結(jié)構(gòu)化的程序:(1) 自頂向下;(2) 逐步細(xì)化;(3) 模塊化設(shè)計(jì);(4) 結(jié)構(gòu)化編碼。1.4 C語(yǔ)言 1.4.1 C語(yǔ)言的特點(diǎn) 1.4.2 C程序的基本結(jié)構(gòu) 1.4.3 C程序的執(zhí)行過程 1.4 C語(yǔ)言C語(yǔ)

12、言是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言。C語(yǔ)言的發(fā)展:BCPL語(yǔ)言B語(yǔ)言C語(yǔ)言精練、接近硬件,但過于簡(jiǎn)單, 無數(shù)據(jù)類型具有多種數(shù)據(jù)類型最初的C語(yǔ)言只是為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工作語(yǔ)言而設(shè)計(jì)的。1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)成立了一個(gè)委員會(huì),根據(jù)C語(yǔ)言問世以來各種版本對(duì)C語(yǔ)言的發(fā)展和擴(kuò)充,制定了第一個(gè)C語(yǔ)言標(biāo)準(zhǔn)草案(83 ANSI C)。1989年,ANSI公布了一個(gè)完整的C語(yǔ)言標(biāo)準(zhǔn)ANSI X3.159-1989(常稱ANSI C,或C89)。1990年,國(guó)際標(biāo)準(zhǔn)化組織ISO(International Standard Organization) 接受C89作為國(guó)際標(biāo)準(zhǔn)IS

13、O/IEC 9899:1990,它和ANSI的C89基本上是相同的。1995年,ISO對(duì)C90作了一些修訂,1999年,ISO又對(duì)C語(yǔ)言標(biāo)準(zhǔn)進(jìn)行修訂,在基本保留原來的C語(yǔ)言特征的基礎(chǔ)上,針對(duì)應(yīng)用的需要,增加了一些功能,尤其是C+中的一些功能,命名為ISO/IEC 9899:1999。2001、2004年先后進(jìn)行了兩次技術(shù)修正(TC1和TC2)。 ISO/IEC 9899:1999(及其技術(shù)修正)被稱為 C99。C99是C89(及1995基準(zhǔn)增補(bǔ)1)的擴(kuò)充。C11是最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。C語(yǔ)言是一種用途廣泛、功能強(qiáng)大、使用靈活的過程性(pro

14、cedural)編程語(yǔ)言,既可用于編寫應(yīng)用軟件,又能用于編寫系統(tǒng)軟件。因此C語(yǔ)言問世以后得到迅速推廣。(1) 程序設(shè)計(jì)模塊化。(2) 函數(shù)方式操作。(3) 數(shù)據(jù)類型多樣化。(4) 運(yùn)算功能強(qiáng)。(5) 存儲(chǔ)類型豐富。(6) 具有預(yù)處理能力。(7) 程序簡(jiǎn)潔。1.4.1 C語(yǔ)言的特點(diǎn)#include int main( ) printf (”This is a C program.n”); return 0; 函數(shù)的名字,表示主函數(shù)C程序必須有一個(gè) main 函數(shù)1.4.2 C程序的基本結(jié)構(gòu)#include int main( ) printf (”This is a C program.n”);

15、 return 0; 主函數(shù)類型#include int main( ) printf (”This is a C program.n”); return 0; 函數(shù)體#include int main( ) printf (”This is a C program.n”); return 0; 輸出函數(shù)輸出語(yǔ)句#include int main( ) printf (”This is a C program.n”); return 0; 輸出語(yǔ)句#include int main( ) printf (”This is a C program.n”); return 0; 換行符#inclu

16、de int main( ) printf (”This is a C program.n”); return 0; 當(dāng)main函數(shù)執(zhí)行結(jié)束前,將整數(shù)0作為函數(shù)值#include int main( ) printf (”This is a C program.n”); return 0; 表示語(yǔ)句結(jié)束用到函數(shù)庫(kù)中的輸入輸出函數(shù)時(shí)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):1.函數(shù)是C程序的基本單位一個(gè)C程序是由一個(gè)或多個(gè)函數(shù)組成的必須包含一個(gè)main函數(shù)(只能有一個(gè))每個(gè)函數(shù)都用來實(shí)現(xiàn)一個(gè)或幾個(gè)特定功能被調(diào)用的函數(shù)可以是庫(kù)函數(shù),也可以是自己編制設(shè)計(jì)的函數(shù)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):2. 函數(shù)由函數(shù)首部和函數(shù)體兩部分組成

17、:函數(shù)首部int max ( int x, int y )函數(shù)的第1行函數(shù)類型函數(shù)名參數(shù)類型參數(shù)名C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):2. 函數(shù)由函數(shù)首部和函數(shù)體兩部分組成:函數(shù)首部int max ( int x, int y )若函數(shù)無參,在括弧中寫void或空括弧int main( void) 或 int main()C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):2. 函數(shù)由函數(shù)首部和函數(shù)體兩部分組成:函數(shù)體聲明部分定義在本函數(shù)中所用到的變量對(duì)本函數(shù)所調(diào)用函數(shù)進(jìn)行聲明執(zhí)行部分:由若干個(gè)語(yǔ)句組成,指定在函數(shù)中所進(jìn)行的操作可以沒有聲明部分C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):2. 函數(shù)由函數(shù)首部和函數(shù)體兩部分組成:函數(shù)體void dump ( )

18、 可以是空函數(shù)C語(yǔ)言程序的書寫格式與規(guī)則 (1)C程序中,每條語(yǔ)句和聲明的最后,以分號(hào)為結(jié)束標(biāo)志。(2)任何變量必須先定義類型,然后才能使用。(3)C語(yǔ)言程序一般都使用小寫英文字母,x與X代表不同含義。(4)C語(yǔ)言程序的書寫格式比較自由,允許一行、或多行書寫。(5)C程序中,有兩種形式的注釋。C語(yǔ)言允許用兩種注釋方式:/:?jiǎn)涡凶⑨尶蓡为?dú)占一行可出現(xiàn)在一行中其他內(nèi)容的右側(cè)/*/:塊式注釋可包含多行1.4.3 C程序的執(zhí)行過程1. 上機(jī)輸入和編輯源程序(.c文件)2. 對(duì)源程序進(jìn)行編譯(.obj文件)3. 進(jìn)行連接處理(.exe文件)4. 運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果編輯程序編譯程序連接程序庫(kù)函數(shù)源程序文件名.c目標(biāo)程序文件名.o

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論