資源簡介 計算機程序與程序設計語言 學習目標 1.描述程序設計語言產生與發展的過程; 2.了解不同種類程序設計語言的特點。 學習內容 目前,我們已對計算機解決問題的基本過程和算法有了一定的了解。通過對本節的學習,我們將更深切體會計算機程序在解決問題過程中的重要作用。 計算機程序" 計算機程序是指為了得到某種結果而可以由計算機等具有信息處理能力的裝置執行的代碼化指令序列,或者可被自動轉換成代碼化指令序列的符號化指令序列或者符號化語句序列。簡而言之,計算機程序就是指計算機可以識別運行的指令集合。 常用的計算機主要包括運算器、控制器、存儲器、輸入設備和輸出設備五大基本部件。計算機內部采用二進制形式表示和存儲指令或數據,把解決問題的程序和需要加工處理的原始數據事先轉換成二進制數,并存入存儲器中。計算機的工作過程實際上是周而復始地獲取指令、執行指令的過程。 計算機程序設計語言 在用計算機解決問題時,用自然語言、流程圖或是偽代碼所描述的解決問題的算法都不能被計算機直接執行,還必須將算法按照一定的規則編寫成計算機能夠識別和運行的程序。而人們編寫程序時需要遵循的規則就是計算機語言規則。計算機程序設計語言,是指一組用來定義計算機程序的語法規則,通常簡稱為“編程語言”,它是一種被標準化的交流技巧,用于向計算機發出指令。正確地使用計算機程序設計語言,能讓程序員準確地定義計算機所需要使用的數據,并精確地定義在不同情況下所應執行的命令。 計算機程序設計語言的發展,經歷了從機器語言、匯編語言到高級語言的發展歷程。 1.機器語言 目前,計算機采用的物理器件主要是電子元件,但由于電子元件的物理特性,計算機只能識別“”和“1”組成的二進制數。因此,二進制是計算機語言的基礎。計算機發明之初,人們只能使用計算機的基礎語言(下圖)。因此,早期的程序設計語言是由“0”和“1”所表示的二進制代碼指令組表示的。這樣的語言是計算機能直接接收和執行的,通常被稱為“機器語言”。機器語言是第一代計算機語言。 不同計算機的機器指令系統會有所不同,但每一條機器指令都包含兩個主要部分:操作(指出計算機應做什么)和被操作的對象(指出處理的數據或它的地址)。在這些指令的控制下,計算機可以實現最基本的算術運算和邏輯運算。例如,下表是用Intel 80386完成"9+8”加法運算的機器指令。 早期人們與計算機的通信都是通過機器語言編寫的程序完成的,程序中的所有語句都被分解成一系列由0和1組成的代碼記錄在穿孔帶上,如下圖所示。 這種機器語言所編寫的程序難以被理解,程序設計任務也非常繁重,而且在程序出現錯誤需要修改時,效率更是低下。除此之外,由于每臺計算機的指令系統往往各不相同,所以在一臺計算機上執行的程序,如果想要在另一臺計算機上執行,就必須另編程序,這就造成了重復工作。由此可見,機器語言與人類的自然語言之間存在著巨大的鴻溝。但由于使用的是針對特定型號計算機的語言,因此運算效率也是所有語言中最高的。 2.匯編語言 為了讓使用機器語言編寫的程序更容易被理解,人們使用了一種類似英文縮略詞且帶有助記性符號的語言,來替代一個特定的指令二進制串,每條指令都和一條機器指令相對應,只是指令碼和操作數都采用符號形式,這種程序設計語言就被稱為匯編語言,即第二代計算機語言。例如,指令碼用“ADD”代表加法,用“MOV”代表數據傳遞等。這樣一來,人們就會比較容易讀懂并理解程序,糾錯及維護也會變得更加方便了。例如,下表列出了用匯編語言來實現“9+8”加法運算的有關指令。 但是,計算機是不能直接認識這些符號的,計算機還需要一個專門的語言翻譯器,負責將程序中的每條語句都翻譯成用二進制數表示的機器語言(下圖)。 匯編語言同樣與特定的機器及特定的微處理器相關,這也導致了匯編語言的移植性不好。這一點與機器語言相比差異不大,然而匯編語言程序的效率仍然很高,針對計算機特定硬件向的匯編語言程序,能準確發揮計算機硬件的功和特長,其編寫的程序不僅精練,質量高,而且易于理解,所以至今在一些領域仍是一種常用而強有力的軟件開發工具。 3.高級語言 人們在使用機器語言和匯編語言這兩種語言與計算機交流的過程中,依然存在很大的障礙,而且對于程序的理解和調試仍然十分困難。于是,高級語言應運而生。高級語言接近于數學語言和人的自然語言,并且不再過度地依賴某種特定的機器或環境。第一種高級語言是 Fortran語言,它主要用于科學和工程計算。在 Fortran語言之后,出現了許多高級語言,如ALGOL、COBOL、Basic、LISP、SNOBOL、Pascal、C、PROLOG、Ada、VC、VB、 Delphi、Java、 Python等。例如,在計算“9+8”的問題時,若使用高級語言 Python,則只需要語句“print(9+8)”就能完成,既簡單又易于理解。 用高級語言編寫的程序也不能直接被計算機所識別和執行,必須經過編譯程序或解釋程序將其翻譯成機器語言(下圖)。所謂編譯程序是指計算機把高級語言程序的每一條語句都翻譯成機器語言,并保存成二進制文件后才運行的程序。解釋程序是指計算機在執行高級語言程序時,逐條語句解釋成機器語言并立即執行的程序。 由于高級語言抽象度高,源代碼無須與硬件、系統底層操作對應,所以移植性非常好,理想的情況下甚至不必為不同的系統平臺或者機器改動源代碼。 高級語言的出現為計算機的應用開辟了廣闊的前景,它的發展也經歷了從早期語言到結構化程序設計語言、從面向過程到非過程化程序設計語言的過程。所謂非過程化程序設計語言,就是面向應用。即只需要告訴程序要干什么,程序就能自動生成算法,自動進行處理,這是高級語言的下一個發展目標,將給人們解決問題帶來更大的便利。 拓展 自動計算思想發展回顧 一般而言,計算與自動計算要解決以下四個問題:①數的表示;②數據的存儲及自動存儲;③計算規則表示;④計算規則的執行及自動執行。 算盤是一種計算工具,算盤上的珠子可以表示和存儲數,計算規則是一套口訣,按照口訣撥動珠子可以進行四則運算。然而所有的操作都要靠人的大腦和手完成,因此算盤被認為是一種計算輔助工具,不能被歸入自動計算工具范疇。 1642年,法國科學家帕斯卡發明了著名的帕斯卡機械計算機,首次確立了計算機器的概念。該機器用齒輪來表示和存儲十進各數位上的數字,通過齒輪比來解決進位問題。低位上的齒輪每轉動10圈,高位上的齒輪只轉動1圈。機器可自動執行一些計算規則,“數”在計算過程中自動存儲。帕斯卡機的意義是讓人們認識到“用純機械裝置可代替人的思維和記憶”,開辟了自動計算的道路。下圖所示是一臺手搖計算器。 1674年,萊布尼茨提出了“二進制數"的概念。1847年,英國的數學家布爾發表著作《邏輯的數學分析》和《思維規律的研究——邏輯與概率的數學理論基礎》,創立了一門全新的學科—布爾代數,為百年后出現的數字計算機的開關電路設計提供了重要的數學方法和理論基礎。 1938年,香農發表了著名的論文《繼電器和開關電路的符號分析》,首次用布爾代數進行開關電路分析,并證明布爾代數的邏輯運算可以通過繼電器電路來實現,明確地給出了實現加、減、乘、除等運算的電子電路的設計方法。這篇論文成為開關電路理論的開端。 1936年,阿蘭·圖靈提出了抽象計算模型——"圖靈機”。一切可計算的函數都可用圖靈機計算,反之亦然。 1940年,“控制論之父”維納提出了計算機五原則:①不是模擬式,而是數字式;②由電子元件構成,盡量減少機械部件;③采用二進制,而不是十進制;④內部存放計算表,計算控制規則;⑤在計算機內部存儲數據。 1945年,美國賓夕法尼大學"莫爾小組”汲取前人美于計算機的結構、存儲程序和二進制編碼等研究思想,設計制造了世界上的一臺早期計其機 ENIAC(下圖)。 ENIAC是可編程的通用計算機,可以解決不同的問題。 題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高? 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫