C語(yǔ)言程序設(shè)計(jì)(第1章程序設(shè)計(jì)與算法)

字號(hào):

第1章 程序設(shè)計(jì)與算法
    1.1 程序設(shè)計(jì)語(yǔ)言的發(fā)展
     1. 機(jī)器語(yǔ)言
     2. 匯編語(yǔ)言
     3. 高級(jí)語(yǔ)言
    1.2 C語(yǔ)言的特點(diǎn)
     1.2.1 C語(yǔ)言是中級(jí)語(yǔ)言
     1.2.2 C語(yǔ)言是結(jié)構(gòu)化語(yǔ)言
     1.2.3 C語(yǔ)言是程序員的語(yǔ)言
    1.3 C語(yǔ)言的程序結(jié)構(gòu)
     1.3.1 基本程序結(jié)構(gòu)
     1.3.2 函數(shù)庫(kù)和鏈接
     1.3.3 開發(fā)一個(gè)C程序
    1.4 算法
     1.4.1 流程圖與算法的結(jié)構(gòu)化描述
     1.4.2 用N-S圖描述算法
     1.4.3 用PAD圖描述算法
    1.1 程序設(shè)計(jì)語(yǔ)言的發(fā)展
     自1 9 4 6年世界上第一臺(tái)電子計(jì)算機(jī)問(wèn)世以來(lái),計(jì)算機(jī)科學(xué)及其應(yīng)用的發(fā)展十分迅猛,計(jì)算機(jī)被廣泛地應(yīng)用于人類生產(chǎn)、生活的各個(gè)領(lǐng)域,推動(dòng)了社會(huì)的進(jìn)步與發(fā)展。特別是隨著國(guó)際互聯(lián)網(wǎng)( Internet)日益深入千家萬(wàn)戶,傳統(tǒng)的信息收集、傳輸及交換方式正被革命性地改變,我們已經(jīng)難以擺脫對(duì)計(jì)算機(jī)的依賴,計(jì)算機(jī)已將人類帶入了一個(gè)新的時(shí)代—信息時(shí)代。新的時(shí)代對(duì)于我們的基本要求之一是:自覺地、主動(dòng)地學(xué)習(xí)和掌握計(jì)算機(jī)的基本知識(shí)和基本技能,并把它作為自己應(yīng)該具備的基本素質(zhì)。要充分認(rèn)識(shí)到,缺乏計(jì)算機(jī)知識(shí),就是信息時(shí)代的“文盲”。
     對(duì)于理工科的大學(xué)生而言,掌握一門高級(jí)語(yǔ)言及其基本的編程技能是必需的。大學(xué)學(xué)習(xí),除了掌握本專業(yè)系統(tǒng)的基礎(chǔ)知識(shí)外,科學(xué)精神的培養(yǎng)、思維方法的鍛煉、嚴(yán)謹(jǐn)踏實(shí)的科研作風(fēng)養(yǎng)成,以及分析問(wèn)題、解決問(wèn)題的能力的訓(xùn)練,都是日后工作的基礎(chǔ)。學(xué)習(xí)計(jì)算機(jī)語(yǔ)言,正是一種十分有益的訓(xùn)練方式,而語(yǔ)言本身又是與計(jì)算機(jī)進(jìn)行交互的有力的工具。
     一臺(tái)計(jì)算機(jī)是由硬件系統(tǒng)和軟件系統(tǒng)兩大部分構(gòu)成的,硬件是物質(zhì)基礎(chǔ),而軟件可以說(shuō)是計(jì)算機(jī)的靈魂,沒有軟件,計(jì)算機(jī)是一臺(tái)“*機(jī)”,是什么也不能干的,有了軟件,才能靈動(dòng)起來(lái),成為一臺(tái)真正的“電腦”。所有的軟件,都是用計(jì)算機(jī)語(yǔ)言編寫的。計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展,經(jīng)歷了從機(jī)器語(yǔ)言、匯編語(yǔ)言到高級(jí)語(yǔ)言的歷程。
    1. 機(jī)器語(yǔ)言
     電子計(jì)算機(jī)所使用的是由“ 0”和“1”組成的二進(jìn)制數(shù),二進(jìn)制是計(jì)算機(jī)的語(yǔ)言的基礎(chǔ)。計(jì)算機(jī)發(fā)明之初,人們只能降貴紆尊,用計(jì)算機(jī)的語(yǔ)言去命令計(jì)算機(jī)干這干那,一句話,就是寫出一串串由“ 0”和“ 1”組成的指令序列交由計(jì)算機(jī)執(zhí)行,這種語(yǔ)言,就是機(jī)器語(yǔ)言。使用機(jī)器語(yǔ)言是十分痛苦的,特別是在程序有錯(cuò)需要修改時(shí),更是如此。而且,由于每臺(tái)計(jì)算機(jī)的指令系統(tǒng)往往各不相同,所以,在一臺(tái)計(jì)算機(jī)上執(zhí)行的程序,要想在另一臺(tái)計(jì)算機(jī)上執(zhí)行,必須另編程序,造成了重復(fù)工作。但由于使用的是針對(duì)特定型號(hào)計(jì)算機(jī)的語(yǔ)言,故而運(yùn)算效率是所有語(yǔ)言中的。機(jī)器語(yǔ)言,是第一代計(jì)算機(jī)語(yǔ)言。
    2. 匯編語(yǔ)言
     為了減輕使用機(jī)器語(yǔ)言編程的痛苦,人們進(jìn)行了一種有益的改進(jìn):用一些簡(jiǎn)潔的英文字母、符號(hào)串來(lái)替代一個(gè)特定的指令的二進(jìn)制串,比如,用“ ADD”代表加法,“MOV”代表數(shù)據(jù)傳遞等等,這樣一來(lái),人們很容易讀懂并理解程序在干什么,糾錯(cuò)及維護(hù)都變得方便了,這種程序設(shè)計(jì)語(yǔ)言就稱為匯編語(yǔ)言,即第二代計(jì)算機(jī)語(yǔ)言。然而計(jì)算機(jī)是不認(rèn)識(shí)這些符號(hào)的,這就需要一個(gè)專門的程序,專門負(fù)責(zé)將這些符號(hào)翻譯成二進(jìn)制數(shù)的機(jī)器語(yǔ)言,這種翻譯程序被稱為匯編程序。
     匯編語(yǔ)言同樣十分依賴于機(jī)器硬件,移植性不好,但效率仍十分高,針對(duì)計(jì)算機(jī)特定硬件而編制的匯編語(yǔ)言程序,能準(zhǔn)確發(fā)揮計(jì)算機(jī)硬件的功能和特長(zhǎng),程序精煉而質(zhì)量高,所以至今仍是一種常用而強(qiáng)有力的軟件開發(fā)工具。
    3. 高級(jí)語(yǔ)言
     從最初與計(jì)算機(jī)交流的痛苦經(jīng)歷中,人們意識(shí)到,應(yīng)該設(shè)計(jì)一種這樣的語(yǔ)言,這種語(yǔ)言接近于數(shù)學(xué)語(yǔ)言或人的自然語(yǔ)言,同時(shí)又不依賴于計(jì)算機(jī)硬件,編出的程序能在所有機(jī)器上通用。經(jīng)過(guò)努力, 1954年,第一個(gè)完全脫離機(jī)器硬件的高級(jí)語(yǔ)言—FORTRAN問(wèn)世了, 40多年來(lái),共有幾百種高級(jí)語(yǔ)言出現(xiàn),有重要意義的有幾十種,影響較大、使用較普遍的有FORTRAN、ALGOL、COBOL、BASI C、LISP、SNOBOL、PL / 1、Pascal、C、PROLOG、Ada、C+ +、VC、VB、Delphi、AVA等。
     高級(jí)語(yǔ)言的發(fā)展也經(jīng)歷了從早期語(yǔ)言到結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,從面向過(guò)程到非過(guò)程化程序語(yǔ)言的過(guò)程。相應(yīng)地,軟件的開發(fā)也由最初的個(gè)體手工作坊式的封閉式生產(chǎn),發(fā)展為產(chǎn)業(yè)化、流水線式的工業(yè)化生產(chǎn)。6 0年代中后期,軟件越來(lái)越多,規(guī)模越來(lái)越大,而軟件的生產(chǎn)基本上是人自為戰(zhàn),缺乏科學(xué)規(guī)范的系統(tǒng)規(guī)劃與測(cè)試、評(píng)估標(biāo)準(zhǔn),其惡果是大批耗費(fèi)巨資建立起來(lái)的軟件系統(tǒng),由于含有錯(cuò)誤而無(wú)法使用,甚至帶來(lái)巨大損失,軟件給人的感覺是越來(lái)越不可靠,以致幾乎沒有不出錯(cuò)的軟件。這一切,極大地震動(dòng)了計(jì)算機(jī)界,史稱“軟件危機(jī)”。人們認(rèn)識(shí)到:大型程序的編制不同于寫小程序,它應(yīng)該是一項(xiàng)新的技術(shù),應(yīng)該像處理工程一樣處理軟件研制的全過(guò)程。程序的設(shè)計(jì)應(yīng)易于保證正確性,也便于驗(yàn)證正確性。1 9 6 9年,提出了結(jié)構(gòu)化程序設(shè)計(jì)方法,1 9 7 0年,第一個(gè)結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言—Pascal語(yǔ)言出現(xiàn),標(biāo)志著結(jié)構(gòu)化程序設(shè)計(jì)時(shí)期的開始。