版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程式設計語言5.0 導言為了讓電腦能夠按照人的目的和要求執行相應的工作,必須使用人和電腦都能懂得的語言,就是程式設計語言。程式設計語言能理解能執行輸出執行結果完成人機交互5.0 導言早期的“程式設計”,是在紙帶上以一定次序打孔。電腦從紙帶上讀出二進位數據,完成相應的計算。此時的程式只能完成簡單煩瑣的計算任務。為了能夠編制更加複雜的程式,完成更為艱深的計算任務,人們開發了很多種電腦語言,以一種更為直觀更富於邏輯的方式編排。B400CD21CC16進制代碼:組合語言MovAL,0Int21HInt35.0 導言
電腦語言發展到今天,已經形成很多種類。如彙編,Basic,Fortran,Ada,C,C++,Pascal,Java,Lisp等等。
現代的電腦軟體已經越來越複雜,電腦語言的演化,從某種程度上說,正是為了適應這種複雜性的變化應運而生。5.0 導言
這種複雜性導致的一個後果就是,現代電腦軟體已經不再是一個完成簡單煩瑣任務的數學系統,而是越來越類似一個生物系統,它可能感染病毒而罷工,也可能由於先天的缺陷而導致錯誤。這就引來了軟體工程的問題。我們將在下一章討論這個問題。
5.1 程式設計概念所謂程式指的是一組電腦能夠識別的指令,這組指令用來定義電腦所要執行的任何一個任務。下麵給出一個具體的例子:編譯:gcca.c-oa–mwindows運行:a.exe
5.1 程式設計概念程式設計是指:用電腦語言產生一系列的指令告訴電腦如何去做的過程。這裏涉及道採用何種語言、何種設計風格、何種演算法程式的邏輯結構等一些問題。需要注意的是,程式設計≠編寫代碼程式說明設計程式編寫代碼程式測試編寫文檔運行和維護
5.2 程式設計語言的發展程式設計語言的發展:面向過程→面向對象→面向組件5.2.1電腦語言的發展歷程電腦的數學理論基礎源於圖靈1937年提出的圖靈機模型。現代電子電腦的體系結構及實際計算模型則是來自馮·諾依曼1946年提出的“程式放入記憶體,順序執行”的思想,因此稱為馮·諾依曼電腦。電腦語言的發展歷程從此開始。
5.2 程式設計語言的發展電腦可以識別的是二進位的數據(可以用邏輯電路的開關來表達)0和1。所有發給電腦的命令,以及電腦內部保存的數據,最終必須轉換成一系列0和1組成的數字串,電腦才能夠懂得如何運作。這就是我們說的機器語言。為了便於閱讀,人們用一些特定的符號來代替某些操作,然後用專門的程式將這些符號轉換為機器語言。這種語言容易記憶和學習,被成為符號語言,或組合語言。
5.2 程式設計語言的發展20世紀50年代,第一個高級語言Fortran語言誕生了。Fortran語言簡潔高效,適合科學計算。因此它成為科學和工程計算的主流語言。
5.2 程式設計語言的發展早期,電腦僅僅作為科學和工程計算的工具,主流語言基本都是為此服務的,如Fortran語言和Alogol60語言。後來,隨著電腦應用的進一步深入,電腦深入商業領域,也出現了COBOL這類商業和行政管理語言。使用高級語言,人們可以不必考慮不同機器內部構造的細節,只需關心完成任務的實現方法。它的表達非常直觀,可讀性強,而且更接近人的思維。如賦值語句c=a+b(把a和b相加,結果放入c)
5.2 程式設計語言的發展Pascal語言的出現是高級語言的一個重要里程碑,因為它是第一個系統地體現結構化程式設計概念的語言。
5.2 程式設計語言的發展Pascal語言和C語言都體現了結構化設計思想,兩者在語法結構上基本是等價的,它們都通過函數和過程等語言特性來構成結構化程式設計的基礎。區別在於Pascal語言更強調語言的可讀性,C語言更強調語言的簡潔性和高效性。因此完成相同任務的代碼,Pascal語言的就比C語言的長。
5.2 程式設計語言的發展
5.2 程式設計語言的發展
5.2 程式設計語言的發展Pascal語言至今仍是學習演算法和數據結構等軟體基礎知識的教學語言的首選,而且它也是Delphi語言的設計原型(確切地講,Delphi使用的是面向對象的Pascal語言)。而C語言的高效性和簡潔性也使得它成為軟體開發的首選主流語言。由於代碼簡潔,功能強大,目前C語言的地位相當於一種“高級組合語言”。
5.2 程式設計語言的發展隨著軟體應用領域的進一步擴大,從傳統的科學計算和事物處理擴展到人工智慧、電腦輔助設計等發麵,處理的數據也從簡單的字元和數字發展為各種多媒體數據,如數字、文本、圖形、聲音、影像等。處理海量的數據需要程式的規模和複雜性都躍上一個新的臺階。傳統的面向過程的設計方法已力不從心。
5.2 程式設計語言的發展面向對象(ObjectOriented,OO)的程式設計方法應運而生。OO技術起源於20世紀60年代,80年代之後逐漸成為一種有效的軟體設計方法。軟體開發的目的是什麼?是描述和反映客觀現實世界。解決問題的過程,歸根到底是屬於這個問題所屬的對象的。大到宇宙,小到原子,都可視作對象。人類社會的組成也是如此。
5.2 程式設計語言的發展抽象的過程以現實世界的對象為核心,於是面向對象的抽象方法走到前臺,為軟體開發從分析建模到設計實現提供了統一的工具。對象(object):對客觀事物的一種抽象的表示形式,是將事物的屬性和對屬性的相關操作封裝在一起而形成的有機體。其中屬性用來描述事物的性質,屬性的值體現了對象可能具有的狀態。而操作是對象的外部行為。
5.2 程式設計語言的發展多個對象具有的共同屬性,可用類來描述。而對象就是類(class)中的一個實例(Instance)。比如,蘋果和桔子都是水果這個類中的實例。面向對象語言的特點是:封裝性、多態性和繼承性。C++語言體現了面向對象的編程思想,引入了如類、封裝、繼承、多態等,同時又繼承了C語言的所有優點,如簡潔性和高效性,成為主流的面向對象語言,並促使面向對象的思想被普遍接受。
5.2 程式設計語言的發展C++語言是一種混合型的面向對象語言,它提供一種表達思想和概念的方法,像人類的自然語言一樣。在解決規模小的問題的時候C++語言似乎沒有顯示出極大的優越性,可是對大而複雜的問題,使用C++語言可以比使用其他語言更加容易,更加靈活。
5.2 程式設計語言的發展Java語言是另一種廣泛應用的OO語言。最初是為嵌入式系統開發的Java語言,在Web技術的發展過程中得到了極大的普及。Java語言是面向對象的網路語言。它的獨特網路特性包括:平臺獨立性(同一段代碼可以在各種不同的平臺的虛擬機中運行)、動態代碼下載、為多媒體功能設計的多線程、為通過Internet快速傳送而設計緊湊的代碼格式。
5.2 程式設計語言的發展在Java語言的網路的應用中,一類是程式存儲並運行於中央伺服器端,當請求端和服務器完成網路連接後可以動態生成按照請求端的要求返回的結果(JSP,JavaServlet等);另一類是當請求端和服務器完成網路連接後從伺服器端下載Java程式,在請求端而不是伺服器端運行的程式—Java小程式(JavaApplet)。
5.2 程式設計語言的發展電腦語言的發展方向是什麼?朝自然語言的方向發展。最終目標是成為人和電腦之間很自然的交流工具。人可以通過這樣的語言把自己的知識、思想、情緒、願望表達給電腦,這樣的語言可以稱為知識語言或者智能語言,這就是人工智慧,是我們夢寐以求的最高境界。
5.2 程式設計語言的發展根據電腦語言接近人類語言的程度,通常做如下劃分:第1代語言(1GL):機器語言第2代語言(2GL):組合語言第3代語言(3GL):高級語言第4代語言(4GL):非過程性語言第5代語言(5GL):自然語言
5.2 程式設計語言的發展5.2.2組件技術不同電腦程式可以用很多可以模組化的代碼。比如一段快速排序的代碼,可能在學生成績的排名、身高體重的排序等很多程式中都要用到。如果每寫一個程式就開發一遍,無疑是一種浪費。如果能像工業生產中生產的標準零件那樣,寫出一些“標準”的代碼,在後來的開發中就可以重用,這樣可以減少很多不必要的重複工作。這種客觀需求使得組件技術得以迅速發展。
5.2 程式設計語言的發展組件(Component)目前對它尚無確切的定義,軟體組件可以理解為自包含的、可編程的、可重用的、與語言無關的代碼片斷,可以作為整體很容易插入應用程式之中。它具有明確的介面,軟體通過這些介面調用組件所能提供的服務。多種組件可以聯合起來構成更大型的組件,甚至直接構建整個系統。
5.2 程式設計語言的發展組件設計中,必須包括需求、源代碼和可執行代碼、介面規範、分析和設計模型、測試和其他同類術語。組件的實現必須支持一種或者多種用戶希望獲得的介面。支持組件的技術包括COM+(ComponentObjectModel)CORBA(CommonObjectRequestBrokerArchitecture)EJB(EnterpriseJavaBeans)
5.2 程式設計語言的發展組件的概念很廣,小到圖形介面的一個按鈕,大到一些複雜的文本編輯等。組件技術與面向對象語言不同,是一種更高層次的對象技術,它獨立於語言和麵向應用程式,只規定組件的外在形式,不關心其內部的實現方法。其內部的實現,可以採用面向對象編程語言,也一樣可以採用非面向對象的過程語言。只需遵循組件的技術規範就可以了。
5.3 程式設計語言的一些術語5.3.1組合語言下麵我們介紹幾種術語,便於大家將來根據工程的實際情況選擇編程語言。由於機器語言很難閱讀和理解,人們採用字元和數字來代替二進位的機器代碼,於是產生了組合語言。B0060402CC機器語言(16進制code)MovAl,6AddAl,2Int3組合語言計算6+2
5.3 程式設計語言的一些術語組合語言語句和特定的機器指令有一一對應的關係。組合語言根源程式經過組合語言程式翻譯成為機器指令之後,就可以在實際的機器中運行。組合語言語句和目的系統CPU支持的指令集有關。比如,Intelx86系列的CPU支持的指令集和龍芯CPU指令集(相容MIPS系列CPU指令集)就完全不同。這也客觀上加大了組合語言的使用難度。
5.3 程式設計語言的一些術語5.3.2過程性語言帶有過程特徵的語言稱為過程性語言。用過程性語言編寫的程式包含一系列描述,告訴電腦如何執行這些過程來完成這些特定的工作。程式通常有一個起點和終點,執行的流程呈直線型,從上而下順序執行。如Fortran語言,C語言和Pascal語言等。
5.3 程式設計語言的一些術語主程序指令1指令2指令n結束……指令n1 指令n2副程式或過程過程性語言
的執行
5.3 程式設計語言的一些術語5.3.3說明性語言說明性語言只需程式員說明問題的規則並定義一些條件即可。語言自身內置了方法吧這些規則解釋為相應解決問題的步驟。即,只需告訴電腦做什麼,而不需要告訴電腦怎麼做。這樣就吧編程中心轉移到描述問題和規則上。如Prolog語言就是說明性語言,它適合邏輯性強、數學概念複雜的編程工作。
5.3 程式設計語言的一些術語5.3.4腳本語言腳本語言(ScriptLanguage)是一種簡單的描述性語言,它的出現較好地解決了網頁的交互問題。腳本語言分為客戶端和服務端兩種。比如同樣是取系統事件的腳本程式,在服務端運行的腳本會返回伺服器上的系統時間;而在客戶端運行的腳本會返回流覽者自己的電腦的系統時間。
5.3 程式設計語言的一些術語腳本需要一個主機應用系統來運行,不能單機運行。在客戶端運行的腳本程式主要有JavaScript和VBscript,而在服務端運行的腳本程式主要有ASP,PHP和JSP等。下麵舉一個PHP的例子。
5.3 程式設計語言的一些術語
5.3 程式設計語言的一些術語5.3.5高級語言前面提到的過程性語言、說明性語言和麵向對象語言都屬於高級語言。高級語言提供給程式員的指令更類似於人的語言,比如列印命令,C語言中是Printf,Basic語言中是Print,Fortran語言和Pascal語言中是Write。高級語言程式在執行之前必須由編譯器編譯成機器代碼才能執行。
5.3 程式設計語言的一些術語5.3.6編譯性語言5.3.7解釋性語言高級語言執行之前,需要把源代碼先用編譯器翻譯稱為機器代碼(也叫目標代碼)再執行的,叫做編譯型語言。也有一些高級語言,需要用解釋器而不是編譯器生成可執行代碼。二者區別何在?
5.3 程式設計語言的一些術語編譯器編譯好的目標代碼是可以獨立運行的(即運行的時候編譯器沒有必要在運行),而解釋器生成的代碼必須在解釋器運行的同時負責解釋執行。解釋性語言編寫的程式執行速度一般而言要慢一些,優點是不用編譯,在調用程式上花費的時間要少一些。嚴格地取分編譯性語言和解釋性語言是沒有意義的,因為很多語言既有編譯器又有解釋器。
5.3 程式設計語言的一些術語比如Pascal語言,Borland公司出品的TurboPascal3.0就是一個解釋器,4.0以後的版本都是編譯器。C語言基本上都是用做編譯性語言,可也有C語言的解釋器。Fortran語言也是既有編譯器(IntelFortranCompiler,LaheyFortranCompiler等),也有解釋器(WatcomFortran的早期版本),等等。一般地,我們把多用編譯器的C,C++等語言當作編譯性語言,把多用解釋器的Basic等當作解釋性語言。
5.3 程式設計語言的一些術語5.3.8面向對象的程式設計語言(OOPL)面向對象的程式設計語言是建立在用對象編程的方法基礎之上的。例如,要在VB中設置一個窗體,窗體就是對象,可以對它的大小、位置、顏色等進行設置。
5.4 結構化程式設計方法傳統的“結構化程式設計(structuredprogram-ming)方法是有荷蘭人Dijkstra在上世紀70年代提出的。它把面向機器代碼的程式抽象為三種基本程式結構:順序結構、選擇結構和重複結構(即迴圈結構)。並且還提出了一系列設計原則:
自頂而下、逐步求精、模組化編程
5.4 結構化程式設計方法功能A功能B順序結構(順序執行結構)語句按照順序,一句一句地執行。
5.4 結構化程式設計方法P功能A功能BTF選擇結構包括簡單選擇和多分支選擇結構,可以根據設定的條件,控制語句流程。一般採用if–then–else形式。
5.4 結構化程式設計方法P功能ATF迴圈結構用於某些程式中,常常需要重複使用同一段或類似的程式段,使用迴圈結構可以簡化大量的程式行。
5.4 結構化程式設計方法例:求100個整數中的最大數迴圈結構,賦初值選擇結構Pascal語言程式
5.4 結構化程式設計方法例:求1到n之間的質數迴圈結構選擇結構
5.4 結構化程式設計方法結構化程式設計過程中,恰當地選用設計原則非常重要。自頂而下、逐步求精的設計原則是指:先設計第一層(頂層),然後步步深入,逐步求精,直到問題可以明確描述為止。比如上個例子,下一步求精就應當是寫一個能夠判斷一個整型數是否質數的函數。
5.4 結構化程式設計方法模組化的設計原則指的是把一個大程式分割成若干個小部分,每一部分的副程式是一個獨立的模組;而每一個模組又可以化分為更小的模組,程式具有一種層次結構。圖書館管理總模組書籍管理模組借閱人資訊管理模組新購書籍借出書籍歸還書籍老生畢業新生報到
5.4 結構化程式設計方法現行程式設計方法的弱點是各種軟體系統中關鍵結構的影響範圍很大。許多重要的函數或過程實現主要取決於關鍵的數據結構。如果一個數據結構發生了變化,許多函數和過程都要重寫。如果幾個關鍵數據結構發生變化,整個軟體系統結構隨之崩潰。隨著軟體規模的增長,這種缺陷日益明顯,為了修改一個小錯誤,可能引入更多更大的錯誤。解決方法:改變傳統的程式設計方式OO程式設計方法
5.5 面向對象設計方法面向對象程式設計基於抽象和分類兩個原則。抽象是和具體相對應,比如人類是抽象的,它代表了所有人的共有屬性,包括有性別、身高、體重等。對於每一個具體的人,都有確定的身高、體重等。分類是對類進行劃分,使概念逐漸細化、具體化。如果把汽車劃為一個類,卡車是它的一個子類,吉普車是它的另一個子類,而軍用吉普車則是吉普車的一個子類。一輛具體的軍用吉普車是軍用吉普車類的一個實例(Instance)或者說是對象(Object)。
5.5 面向對象設計方法結構化程式設計方法和麵向對象程式設計方法都提供了抽象,但在結構化程式設計方法中沒有分類的概念。結構化程式設計強調的是過程的功能劃分,即使一個功能與另一個已存在的功能實現類似,也不能為我所用。
5.5 面向對象設計方法5.5.1對象對象是指應用問題中所出現的各種實體,它由一組屬性值和這組值上的一組操作構成。對於面向對象程式設計而言,一個對象具有狀態(State)、行為(Behavior)和標識(Identity)。對象的狀態包括它的屬性和這些屬性的當前值。對象的行為包括可以進行的操作以及所伴隨的狀態的變化。
5.5 面向對象設計方法如VB中窗體、按鈕、文本框等都是具體的對象,其Width和Height屬性確定它們的寬度和高度,文本框的Text屬性確定要現實的字串,窗體的Print方法在窗體上輸出內容。
5.5 面向對象設計方法5.5.2類對象在語言中是用類來定義的。類中定義了與某一種對象相關聯的一組數據以及該數據中的一組操作。對象是數據與方法的統一體。類描述一類事物,描述這些事物所應具有的屬性。對象是類的一個實例,可以被創建和銷毀,但類是無所不在的。如窗體的位置和外觀可以不同,但它們都是窗體組件類的實體。
5.5 面向對象設計方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装岩机司机岗中实操测试考核试卷含答案
- 2026年福利彩票服务行业市场趋势报告及未来五至十年数字化与智能化升级
- 2026年供热设施维护行业洞察报告及未来五至十年发展趋势报告
- 2025-2026年粤教版高中二年级地理上学期期末测试卷地理重点
- 2025-2026湘教版高三生物上学期期末考试生物卷
- 北师大版高一语文上期末测试卷2025-2026
- 2026年七年级上册第5章 走进几何世界 第2套 基础巩固
- 2026年医学放射治疗专业医学放射评估测试试卷及答案
- 2026年医学病理生理学肿瘤诊断试题及答案
- 安全用药讲座
- 2026年芯片设计DFT工程师高频面试题包含详细解答
- 中粮粮食采购管理制度
- TAVR治疗卒中风险防控实操指南
- 2026中国通信服务浙江公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年消化内科学科消化道肿瘤考试答案及解析
- 居家药学服务课件
- 交通事故案件追加被告申请书
- 大数据技术毕业论文
- 海绵城市建设专项汇报
- 医院改建工程施工期间医疗服务保障措施
- 【人教pep版】六年级英语阅读理解50题篇训练题(含答案解析)
评论
0/150
提交评论