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

