程序设计基础课件_第1页
程序设计基础课件_第2页
程序设计基础课件_第3页
程序设计基础课件_第4页
程序设计基础课件_第5页
已阅读5页,还剩34页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程式設計基礎111.1程式和程式設計語言11.1.1程式的一般概念

程式:

電腦為完成序某一個任務所必須執行的一系列指令的集合。 一個電腦程式主要描述兩部分內容:

數據結構—描述問題的每個對象之間的關係

演算法—對問題的處理規則

經典公式:

程式=數據結構+演算法2例1:用VB來編寫的顯示教齡滿30年的教職工SubCommand1_Click()Open"d:\zg.dat"ForInputAs#1DoWhileNotEOF(1) Input#1,姓名,部門,教齡If教齡>=30ThenPrint姓名,部門 Loop Close#11.程式的一般概念32.電腦程式的共同性質

目的性程式有明確的目的,運行時能完成賦予它的功能。

分步性

程式由一系列電腦可執行的步驟組成。

有序性

執行步驟是有序的,不可隨意改變執行順序。

有限性

程式是有限的指令序列,所包含的步驟是有限的。

操作性

有意義的程式總是對某些對象進行操作,使其改變狀態,完成其功能。411.1.2程式設計語言概述

按照程式設計語言發展的過程,大概分為三類:機器語言機器語言是由0和1二進位代碼按一定規則組成的、能被機器直接理解和執行的指令集合。機器語言中的每一條語句實際上是一條二進位形式的指令代碼,指令格式如下:操作碼

運算元

操作碼要完成的操作類型或性質運算元

操作的內容或所在的地址

5例如,計算A=15+10的機器語言程式如下:

1011000000001111:把15放入累加器A中

0010110000001010:10與累加器A的值相加,結果 仍放入A中

11110100 :結束,停機 編程工作量大,難學、難記、難修改,只適合專業人員使用;由於不同的電腦,其指令系統不同,機器語言隨機而異,通用性差,是面向機器的語言。

機器語言優點:程式代碼不需要翻譯,所占空間少,執行速度快。現在已經沒有人用機器語言直接編程了。62.組合語言

將機器指令的代碼用英文助記符來表示,代替機器語言中的指令和數據。例如用ADD表示加、SUB表示減、JMP表示程式跳轉等等,這種指令助記符的語言就是組合語言。 例如,計算A=15+10的組合語言程式:

MOV A,15:把15放入累加器A中

ADD A,10:10與累加器A相加,結果存入A中

HLT :結束,停機 組合語言克服了機器語言難讀等缺點,保持了其編程品質高,占存儲空間少,執行速度快的優點。常用於過程控制等編程。組合語言面向機器,使用者需要專業知識。 組合語言編寫的程式,必須翻譯成機器語言,才能被電腦執行。73.高級語言

高級語言是由表達各種意義的詞和數學公式按照一定的語法規則來編寫程式的語言。高級語言使程式員可以完全不用與電腦的硬體打交道,可以不必瞭解機器的指令系統,是面向過程的語言。這樣,程式員就可以集中精力來解決問題本身而不必受機器制約,編程效率高;由於與具體機器無關,因此程式的通用性強。 例如,計算A=15+10的BASIC語言程式如下:

A=15+10 ‘15與10相加的結果放入A中

PRINTA ‘輸出A END ‘程式結束84.高級語言分類高級語言的發展分為3類:1)面向過程的語言 如FORTRAN、BASIC、PASCAL、C等。面向過程的語言致力於用電腦能夠理解的邏輯來描述需要解決的問題和解決問題的具體方法、步驟。編程時,程式不僅要說明做什麼,還要告訴電腦如何做,程式需要詳細描述解題的過程和細節。92)面向問題的語言(非過程化的語言) 面向問題的語言又稱為第四代語言(4GLS)。解題時,不必關心問題的求解演算法和求解的過程,只須指出要電腦做什麼,數據的輸入和輸出形式,就能得到所需結果。 例如,用非過程化的語言,只要用如下的一條語句就可實現:

SELECT姓名,部門,教齡FROMd:\zg.dbfWHERE教齡>=3010面向問題的語言是採用快速原型法開發應用軟體的強大工具,能夠快速地構造應用系統,提高軟體開發效率。面向過程的語言需要詳細地描述“怎樣做”;面向問題的語言僅需要說明“做什麼”。它和與資料庫的關係非常密切,能夠對大型資料庫進行高效處理。113)面向對象語言

在20世紀80年代推出面向對象語言。它與以往各種語言的根本不同點在於:它設計的出發點就是為了能更直接地描述客觀世界中存在的事物(即對象)以及它們之間的關係。 面向對象語言將客觀事物看作具有屬性和行為的對象,通過抽象找出同一類對象的共同屬性和行為,形成類。通過類的繼承與多態可以很方便地實現代碼重用,這大大提高了程式的複用能力和程式開發效率。面向對象語言已是程式語言的主要研究方向之一。面向對象的語言有C++、Java、VisualBasic等。

1211.1.3語言處理程式

在所有的程式設計語言中,除了用機器語言編制的程式能夠被電腦直接理解和執行外,其他的程式設計語言編寫的程式都必須經過一個翻譯過程才能轉換為電腦所能識別的機器語言程式,實現這個翻譯過程的工具是語言處理程式,即翻譯程式。用非機器語言寫的程式稱為根源程式;通過翻譯程式翻譯後的程式稱為目標程式。翻譯程式也稱為編譯器。針對不同的程式設計語言編寫出的程式,有各自的翻譯程式,互相不通用。

131.組合語言程式

組合語言程式是將組合語言編制的程式(根源程式)翻譯成機器語言程式(目標程式)的工具。組合語言根源程式組合語言程式機器語言程式組合語言程式的具體翻譯工作步驟:

①用機器操作碼代替符號化的操作符。

②用數值地址代替符號名稱。

③將常數翻譯為機器的內部表示。

④

分配指令和數據的存儲單元。

142.高級語言翻譯程式

1)解釋方式

解釋方式的翻譯工作由解釋程式來完成。解釋程式對根源程式進行逐句分析,若沒有錯誤,將該語句翻譯成一個或多個機器語言指令,然後立即執行這些指令;若解釋時發現錯誤,會立即停止,報錯並提醒用戶更正代碼。解釋方式不生成目標程式。

數據高級語言根源程式解釋程式計算結果152)編譯方式

翻譯工作由編譯程序完成。如同筆譯在紙上記錄翻譯後的結果。目標程式

根源程式可執行程式編譯程序連接程式數據計算結果16

編譯程序對整個根源程式經過編譯處理,產生一個與根源程式等價的目標程式;目標程式還可能要調用一些其他語言編寫的程式和程式庫中的標準副程式,通過連接程式將目標程式和有關的程式庫組合成一個完整的可執行程式。執行速度快,修改根源程式後都必須重新編譯。一般高級語言(C/C++、PASCAL、FORTRAN、COBOL等)都是採用編譯方式。1711.2.2演算法的表示

自然語言—用人們使用的語言描述演算法

傳統的流程圖法—用一些圖框、線條以及文字說明來形象地、直觀地描述演算法。

N-S流程圖法--去掉了傳統流程圖中帶箭頭的流向線,全部演算法以一個大的矩形框表示,框內還可以包含一些從屬於它的小矩形框,適於結構化程式設計。ABAB條件TF當條件成立A直到條件成立AN-S圖的三種基本結構18演算法的表示

偽代碼法:是一種假的代碼———不能被電腦所理解,但接近於某種語言編寫的程式,便於轉換成編程語言。根據編程語言的不同,有對應的類Pascal、類C等類-xxx語言。在數據結構教材中,經常用類-xxx語言來描述演算法。

電腦語言:電腦無法識別自然語言、流程圖、偽代碼。這些方法僅為了幫助人們描述、理解演算法,要用電腦解題,就要將它們轉換成電腦語言程式。用電腦語言描述演算法,只有用電腦語言編寫的程式才能被電腦執行。1911.2.3常用演算法

兩個變數的值交換

XY②

③

①

SubSwap(x,y)Dimtt=xx=yy=tEndSub

計數器和累加器

n+1sum+xN=N+1

計數器,N為計數器變數Sum=Sum+x累加器,Sum為累加器變數201.枚舉法枚舉法(窮舉法或試湊法)

根據條件確定答案的範圍,在此範圍內對所有可能的情況逐一驗證。若某個情況符合條件,則為一個解;若全部情況均不符合條件,則問題無解。 例假定小雞0.5元/只,公雞2元/只,母雞3元/只。百元買百雞,列出所有可能的購雞方案。 根據題意列出方程:

x+y+z=100

3x+2y+0.5z=10021Print"母雞","公雞","小雞"Forx=0To33Fory=0To50z=100-x-yIf3*x+2*y+0.5*z=100ThenPrintx,y,zNextyNextx222.遞推法遞推法(迭代法)

從初值出發,歸納出新值與舊值間直到最後值為止存在的關係,每次重複都從舊值的基礎上遞推出新值,並由新值代替舊值。 例:猴子吃桃子問題。小猴有桃若干,每天吃掉現有數的一半多一個,到第7天要吃時只剩下一個了,問小猴原有桃子多少個? 設第n天的桃子為xn,它是前一天的桃子數的一半少1個 遞推公式xn-1=(xn+1)×21211-=-nnxx23例猴子吃桃子問題。

x=1Print"第7天的桃子數為:1只"Fori=6To1Step-1x=(x+1)*2Print"第";i;"天的桃子數為:";x;"只"Nexti243.求最值

求最值 在n個數中先假設第1個數為最大(小)值初值,依次同第2、3、…、n個數據逐一比較,一旦某個數大(小),馬上替換;所有數比較完,最大(小)值也就獲得。25例對輸入的若干個學生成績,求最高分。

TotalSalary=0n=InputBox("輸入學生人數")Max=InputBox(“輸入第1個學生的成績”) Fori=2Tonmark=InputBox("輸入第"&i&"個學生的成績")Ifmark>MaxThenMax=markNextiPrintMax

2611.3程式設計步驟和程式設計方法

編制程式的工作稱為程式設計,為了有效地進行程式設計,必須掌握兩方面知識:一門程式設計語言解題的演算法 一個好的程式有可靠性、易讀性、高效性、可維護性等良好特性。為達到這些目標,應採用好的程式設計方法,以便從方法上更有助於設計出具有上述特性的程式。2711.3.1程式設計步驟

分析問題設計程式(總體設計和詳細設計)程式編碼以及編輯、編譯和連接測試程式編寫程式文檔黑盒測試白盒測試找出程式中的錯誤2811.3.2程式設計方法

1.結構化程式設計 結構化程式的結構簡單清晰,可讀性強,模組化強,描述方式符合人們解決複雜問題的普遍規律,在軟體重用性、軟體維護等方面有所進步,可以顯著提高軟體開發的效率。程式設計模式:“數據結構+演算法”

①

在軟體設計和實現過程中,採用自頂向下、逐步細化的模組化程式設計原則。

②

在代碼編寫時,採用順序、選擇、迴圈三種基本控制結構,避免使用GOTO語句。292.面向對象程式設計

將問題分解為對象,對象的數據——屬性,作用於數據的操作——方法,將屬性和方法封裝成一個整體,供程式設計者使用。對象之間的相互作用通過消息傳遞來實現。程式設計模式:“對象+消息”。 面向對象的分解突出:做什麼?大量的工作由相應的對象來完成,程式員在應用程式中只需說明要求對象完成的任務。

結構化程式設計的分解突出:如何做?強調代碼的功能是如何得以完成。 面向對象的程式設計語言有:

C++、Java、VisualBasic等。3011.4常用程式設計語言1.FORTRAN語言 世界上最早出現的高級程式設計語言,用於科學計算。從1954年推出的FORTRANⅠ起,版本不斷更新,功能不斷增強,結構化程度提高,使古老的語言保持旺盛的生命力,最流行的版本是FORTRAN77,目前使用FORTRAN90。FOTRAN90具有Pascal語言的特徵,引入了類型、遞歸、指針、動態數組等概念。

312.COBOL語言

1959年開發出來,主要用於商業數據處理。80年代後隨著資料庫的廣泛應用,該語言使用面減少,目前銀行系統還較多採用COBOL語言開發。

COBOL程式很象寫英文文章,要完成同樣功能的程式是其他語言的兩倍長。再簡單的程式都由4個部組成:

標識部(IDENTIFICATION)描述程式

環境部(ENVIRONMENT)描述運行程式的電腦系統

數據部(DATA)描述程式中所有數據的格式

程式部(PROCEDURE)是程式的主體323.Pascal語言

1968年開發出來,Pascal語言是一種通用的編程語言,最大的優點是語法嚴謹、豐富的數據類型、結構化編程概念,成為在C語言問世前,風靡全球、最受歡迎的語言之一,尤其適合於教學和應用軟體的開發。80年代,隨著C語言的流行,Pascal語言走向了衰落。目前,在商業上僅有Inprise公司(即原Borland)仍在開發Pascal語言系統Delphi,它用了面向對象與軟體組件的概念,用於開發商用軟體。334.BASIC語言

1964年在FOTRAN語言的基礎上開發的,是最容易學習的語言之一。常用的BASIC語言版本有:BASIC、GWBASIC、TurboBASIC、QuickBASIC、QBASIC、VisualBASIC。

1991年微軟公司推出了基於Windows環境的VisualBasic1.0版,目前最流行的是6.0版,網路功能更強的是VB.net。VisualBasic在語法結構上同C、Pascal相似,採用可視化介面設計、事件驅動的編程機制和基於對象的程式設計方法,有利於軟體的開發和維護,極其易於被非電腦專業人員掌握使用。345.C與C++語言

1972年貝爾實驗室設計、開發了C語言,當時主要用於編寫Unix操作系統的。C語言功能豐富、使用靈活、簡潔明瞭、編譯產生的代碼短、執行速度快、可移植性強;C語言具有與機器硬體打交道的底層處理能力。可以用來開發系統軟體,和應用軟體。

1980年貝爾實驗室對C語言進行了擴充,加入了面向對象的概念,並於1983年改名為C++。目前主要的C++語言開發工具有Inprise公司的C++Builder、BorlandC++,微軟公司的VisualC++、C#和Unix系統的GNUC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论