1 / 51

程式發展

程式發展. 程式語言 參數傳遞 結構化程式設計 物件導向程式設計. 作業系統. 組譯程式. 系統軟體. 程式語言 處理工具. 直譯程式. 編譯程式. 編輯程式. 計算機軟體. 連結程式. 工具程式. 載入程式. 偵錯程式. 套裝軟體. 應用軟體. 使用者自行開發的程式. 計算機軟體的分類. 程式 語言. 程式語言的定義. 又稱計算機語言 是人與電腦間溝通的語言  程式語言並非一經撰寫即可在電腦上執行,而是必須經過一定程序的轉換,轉換為電腦所能辨識的執行指令,方可執行。

gil-best
Download Presentation

程式發展

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 程式發展 程式語言 參數傳遞 結構化程式設計 物件導向程式設計

  2. 作業系統 組譯程式 系統軟體 程式語言 處理工具 直譯程式 編譯程式 編輯程式 計算機軟體 連結程式 工具程式 載入程式 偵錯程式 套裝軟體 應用軟體 使用者自行開發的程式 計算機軟體的分類

  3. 程式 語言 程式語言的定義 • 又稱計算機語言 • 是人與電腦間溝通的語言  • 程式語言並非一經撰寫即可在電腦上執行,而是必須經過一定程序的轉換,轉換為電腦所能辨識的執行指令,方可執行。 • 程式語言轉換的過程亦可稱為翻譯。最終轉換的結果為機器語言,只有機器語言才能在電腦上執行

  4. 程式 語言 程式語言 • 程式語言的分類 • 語言編譯程式 • 常見的程式語言

  5. 程式 語言 程式語言的分類 • 第一代:機器語言(Machine Language) • 第二代:組合語言(Assembly Language) • 第三代:編譯語言(Compile Language) • 第四代:極高階語言(Very High Level L.) • 第五代:自然語言(Natural Language)

  6. 程式 語言 第一代語言 • 機器語言(Machine Language) • 由 0 與 1 等二進碼所構成的語言 • 可直接為計算機接受執行 • 極不方便撰寫及理解 • 因為每編寫一行指令, 便須查表以找出所對應的運算碼 • 人們並不直接學習或使用機器語言 • 屬低階語言(Low Level Language)

  7. 程式 語言 第二代語言 • 組合語言(Assembly Language) • 利用簡單易懂的英文或數字符號(助憶碼) 來取代機器語言二進碼的程式語言 • 亦稱符號語言 • 與機器語言指令成一對一的關係 • 此程式電腦無法直接執行,必須透過組譯 程式(Assembler)轉成機器語言才行 • 仍似機器語言不具移植性,因此須對機器 的組成構造有相當了解才能撰寫程式 • 屬低階語言(Low Level Language)

  8. 程式 語言 第三代語言 • 編譯語言(Compile Language) • 又稱高階語言(High Level Language)或程序 導向語言(Procedure-Oriented Language; POL) • 語法接近人類日常所使用的語言 • 盡量不與電腦的構造相關,以增加可攜性 • 需透過編譯程式將其編譯為機器語言 • 程式中的每一句稱為一道敘述(Statement) • 每一道敘述通常對應多個指令 • 目的在促使電腦的普及

  9. 程式 語言 第四代語言(4GL) • 極高階語言(Very High Level Language) • 屬於問題導向語言(Problem Oriented Lang.) • 或稱非程序導向語言(Nonprocedure Lang.) • 指示電腦去「做什麼」,而不像第一、二、三代語言(它們屬程序導向語言),必須指示電腦「如何去做」 • 程式的敘述與電腦的執行步驟沒有關連 • 例如:資料庫查詢語言、應用程式產生器 Select * from person

  10. 程式 語言 第五代語言 • 自然語言(Nature Language) • 又稱知識庫語言(Knowledge-Based Lang.) • 使用者以一般英文語句直接和電腦對話 • 最近似於人類日常生活所使用的語言 • 使不懂電腦的人更方便進行資料存取 • 處理較為複雜,目前尚無法處理複雜邏輯 • 應用在人工智慧(AI)與專家系統(ES)等領域 • Ex: Tell Me All Data In Person Table

  11. 人類 自然語言(第五代語言) 極高階語言 4GL(第四代語言) 科學導向語言 高階語言 3 GL 商務導向語言 組合語言 低階語言 機器語言 中央處理器 電腦 計算機語言演進與人類的關係

  12. 程式語言分類總覽 機器導向語言 通用程式語言 一般分法 問題導向語言 特殊問題導向語言 非物件 導向語言 機器語言 低階語言 依對硬體設備 的相依性來分 組合語言 物件導向 語言 高階語言 機器語言 機器導向 語言 組合語言 接右上 程序導向語言 一般結構化高階語言 問題導向 語言 非程序導向語言 4GL、第五代語言

  13. 程式 語言 程式語言 • 程式語言的分類 • 語言編譯程式 • 常見的程式語言

  14. 程式 語言 語言編譯程式 • 組譯器(Assembler) • 將組合語言程式翻譯為目的程式, 再經過連結程式,連結為執行檔*.com 檔案大小小於64K • 編譯器(Compiler) • 將原始程式一次翻譯為目的程式後, 再聯結函式庫或是其他目的程式為執行檔*.exe 檔案大小大於64K • 直譯器(Interpreter) • 將原始程式逐行翻譯為機器語言 程式每次執行,皆必須經過翻譯的手續 亦稱為解譯器

  15. 語言編譯程式的比較

  16. 程式 語言 程式編譯工具程式 • 編輯程式 (editor) • 編輯原始檔案的工具程式 • 如PE2,MS EDIT • 連結程式 linker • 將一個以上的目的程式與程式庫連結合併成一個可執行檔 • 載入程式 loader • 將可執行檔從輔助記憶體中讀入主記憶體使執行的程式 • 偵錯程式 debugger • 協助程式設計師偵測程式錯誤點的程式

  17. 程式 語言 程式語言 • 程式語言的分類 • 語言編譯程式 • 常見的程式語言

  18. 程式 語言 常見的程式語言 -- 1 • FORTRAN • 為 FORmula TRANslation 的縮寫 • 由 IBM 公司於1954年所開發出來 • 是世界上第一種開發成功的高階語言 • 適合於解決工程與科學上的問題 • COBOL • COmmon Business Oriented Language的縮寫 • 1959年由美國政府、用戶及廠商所組成的 CODASYL機構所制定 • 目前在國內仍有很多中小企業使用

  19. 程式 語言 常見的程式語言 -- 2 • ALGOL • 為 ALGOrithmic Language的縮寫 • 於1957-1960年間被設計出來 • 以前在歐洲頗為風行 • 在學術界及國際發表的刊物上,常被用來當作表 達演算法的程式語言 • PL/1 • 為Program Language/One的縮寫 • 1964年由 IBM 公司所發展出來的一種多用途語言 • 能用於工程、科學、商業等各種應用領域

  20. 程式 語言 常見的程式語言 -- 3 • RPG • 為 Report Program Generator 的縮寫 • 為一種表格化的程式語言 • 主要的功能在提供大量報表印出之用 • 1960年由 IBM 所發展出來 • 廣泛地應用於小型商業電腦上 • BASIC • Beginner’s All Purpose Symbolic Instruction Code • 1965年由Dartmouth學院發展出來 • 易學易懂,適用於初學者的入門學習 • 隨個人電腦的推出而風行,中文譯為「培基」

  21. 程式 語言 常見的程式語言 -- 4 • PASCAL • 為紀念十七世紀的大數學家Blaise Pascal而命名 • 由瑞典Institut fur Informatik in Zurich的電腦科學家 Niklaus Wirth在1968年所發展出來 • 承襲ALGOL的優點,並簡化繁複的語法、擴充許 多頗具彈性的資料型式與資料結構 • 是一種優良的結構化程式(Structural Program)語言 • 結構化、易學易懂、可讀性高 • 適合商業及學術領域使用,常作為教學語言 • 亦適合一般使用者學習程式語言之用

  22. 程式 語言 常見的程式語言 -- 5 • C • 修改B語言而來,故得名 • B語言是Ken Thopson在1970年於PDP-7 電腦的UNIX作業系統上所建立的 • Dennis Ritchie於1972年在AT&T貝爾實驗室的 PDP-11電腦的UNIX作業系統上發展出來 • 最早被發展來撰寫系統軟體,但其在一般的應用 上亦可應付裕如 • 因和組合語言間有良好的溝通能力,故又被稱為 中階語言(Mid-Level Language) • 具有相當強的可攜性(Portability)

  23. 程式 語言 常見的程式語言 -- 6 • ADA • 為紀念1800年代的數學家Augusta Ada Byron而命名,此人被許多電腦科學界的人士認定為第一位電腦程式設計師 • 為美國國防部基於國防需要所開發的語言 • 用在處理大型程式和複雜專案 • 程式很複雜,但可攜性(Portable)十分良好

  24. 程式 語言 常見的程式語言 -- 7 • LISP • 為人工智慧(Artificial Intelligence)常用語言 • 效率高,但不好懂 • PROLOG • 為人工智慧常用語言,由法國人發明 • 經英國人改良,成為一種具推理性的語言 • 效率低,但易學習 • Scheme

  25. 程式 語言 常見的程式語言 -- 8 • GPSS • 為General Purpose Simulation System的縮寫 • 專門應用於模擬工作上 • APL • 為 A Programming Language的縮寫 • 由 K. Lverson 所發展出來 • 專門處理數學方面的求解問題,其中以陣列與向量的處理最有用

  26. 程式 語言 常見的程式語言 -- 9 • SNOBOL • StriNg Oriented symBOlic Language的縮寫 • 1962年由美國貝爾實驗室所發展出來 • 專門應用在字串資料的處理上 • PILOT • Programmed Inquiry, Learning Or Teaching • 1970年代初發展出來 • 為電腦輔助教學(CAI)的語言 • 可幫助老師編寫教材

  27. 程式 語言 常見的程式語言 -- 10 • FORTH • 於1975年由Charles Moore所發展出來 • 目的為最佳化電腦記憶體使用及處理速度 • 在微電腦中的使用比BASIC更具威力 • 但使用方法較複雜,不易普及 • Modula-2 • 與PASCAL語言一樣, 是由Wirth教授所發展出來的程式語言 • PASCAL常使用於教學上, 而Modula-2常使用於系統軟體的開發上

  28. 程式 語言 其他程式語言小常識 -- 1 • 具有遞迴(recursive)能力的語言 • ALGOL • PASCAL • C • PL/1 • QUICK BASIC • LISP • 模擬專用的語言 • GPSS • SIMSCRIPT • DYNAMO

  29. 程式 語言 其他程式語言小常識 -- 2 • 物件導向的程式語言 • SMALLTALK • 由全錄 (Xerox) 公司所發展出來的物件導向程式語言 • C++ • ADA • Visual Basic (VB) • Visual Foxpro (VFP) • Delphi (Visual PASCAL) • JAVA • 具跨平台特性,以C++為基礎所發展 • 另發展有JavaScript可直接撰寫於網頁中

  30. 程式 語言 程式語言 • 程式語言的分類 • 語言編譯程式 • 常見的程式語言

  31. 參數 傳遞 主副程式的參數串列 • 主副程序間的資料傳輸,透過參數串列(Parameter List)來進行 • 主程式 • 或稱呼叫程式(Calling Program) • 擁有實際參數串列(Actual Parameter List) • 副程式 • 或稱被呼叫程式(Called Program) • 擁有形式參數串列(Formal Parameter List)

  32. 參數 傳遞 參數傳遞方式 • 傳值呼叫(Call By Value) • 傳址呼叫(Call By Address) • 傳名呼叫(Call By Name) • 傳值兼傳結果呼叫(Call By Value-Result)

  33. 參數 傳遞 傳值呼叫(Call By Value) • 主程式呼叫副程式時,僅將主程式的實際參數串列值(Value)傳給副程式對應的形式參數串列 • 副程式開始執行時,作業系統會分配額外的記憶體位址給副程式的形式參數串列使用;因此,主副程式的參數串列並未佔用相同的記憶體位址,所以副程式在執行過程中並不會去改變主程式相對變數的值。 • 副程式執行完畢時,其結果並不傳回主程式,因此主程式的對應參數串列值不會改變。 • 由於副程式執行時,參數串列須額外分配記憶體,因此其繫結(Binding)時間最慢。 • PASCAL的Procedure宣告時,若為使用VAR,以及ALGOL程序輸入參數均使用傳值呼叫。

  34. 參數 傳遞 傳址呼叫(Call By Address) • 又稱Call By Reference、Call By Sharing、Call By Location、Call By Variable • 主程式呼叫副程式時,僅將主程式的實際參數串列位址(Address)傳給副程式對應的形式參數串列。 • 副程式執行時,主副程式的參數串列佔用相同的記憶體位址,因此副程式在執行過程中,若參數值改變了,則其對應的主程式參數值也會跟著改變,此現象常稱為副作用(Side Effect)。 • 副程式執行完畢時,主副程式間的參數串列對應關係結束,亦即副程式的形式參數又恢復為位址未定。 • 因主副程式間共用相同記憶體位址,故其繫結(Binding)時間最快 • PASCAL的Procedure宣告時,若為使用VAR,以及FORTRAN的陣列(Array)參數均使用傳址呼叫。

  35. 參數 傳遞 傳名呼叫(Call By Name) • 主程式呼叫副程式時,除了將實際參數串列的名稱(Name)傳給副程式外,並取代整個副程式內所有對應的參數名稱。 • 主副程式間對應的參數佔用相同的記憶體位址;因此,副程式執行過程中,若參數值改變了,其對應的主程式參數值亦隨之改變。 • 此方法除了主副程式間對應參數佔用相同的記憶體位置外,還須改變副程式內所有的對應參數名稱,因此其繫結(Binding)時間慢於傳值呼叫(Call By Value)。 • ALGOL的參數通常採此法做傳輸,但此法在某些情況下,常會有問題發生,故目前已甚少被程式語言所採用。

  36. 參數 傳遞 傳值兼傳結果呼叫(Call By Value-Result) • 主程式呼叫副程式時,僅將主程式的實際參數串列值(Value)傳給副程式對應的形式參數串列 • 副程式開始執行時,作業系統會分配額外的記憶體位址給副程式的形式參數串列使用;因此,主副程式的參數串列並未佔用相同的記憶體位址,所以副程式在執行過程中並不會去改變主程式相對變數的值。 • 副程式執行完畢時,將副程式的形式參數串列結果值傳回給對應的主程式參數串列。

  37. 參數 傳遞 實際演練 1— 傳值&傳址呼叫 Begin integer m,n; integer array a[1:2]; PROCEDURE P(x,y) Begin integer m,n; m:=1; n:=2; a[m]=3; x :=x+2; y :=y+4; End a[1] := a[2] :=m :=2; n:=1; P(a[m] ,a[n] ); Print(a[1] , a[2]); End

  38. 參數 傳遞 實際演練 2— 傳值&傳址呼叫 PROCEDURE P(X,Y,Z) BEGIN Y = Y + 1 ; Z = X + Y ; END BEGIN A = 1 ; B = 1 ; P(A+B, A, A); PRINT A; END

  39. 參數 傳遞 實際演練 3— 傳值&傳址呼叫 PROGRAM MAIN A, B, C : Integer; A  5 ; B  4 ; C  PASS(B, A, B); END. FUNCTION PASS(X,Y,Z) X, Y, Z : Integer ; X  Y ; Y  (Z-1) ; Return(Z); End.

  40. 結構 程式 結構化程式設計 • 常見的程式設計方法 • 結構化程式的特點 • 流程圖

  41. 結構 程式 常見的程式設計方法 • 由上而下法(Top-Down Approach) • 將整個問題邏輯性地分解成數個次單元,這些次單元又可再細分為更小的單元;依此類推,直到分解成程式語言很容易編寫的最小單元為止。 • 由下而上法(Bottom-Up Approach) • 程式設計者先將整個問題中最簡單部份的程式編寫起來,然後再逐漸的組合各部份成完整的程式。

  42. 結構 程式 結構化程式的特點 • 由上而下程式設計方法 • 模組化程式設計方法 • 一個程式可分為多個具有獨立功能的單元模組 • 具有四種控制結構 • 順序結構(Sequence Structure) • 由上而下,依序逐一執行 • 反覆結構(Iteration ; Repetition Structure) • DO-WHILE、FOR-NEXT、REPEAT-UNTIL…. • 選擇結構(Selection ; Condition Structure) • IF-THEN-ELSE • 個案結構(Case Structure) • ON CASE • 少用Go To程式設計方法

  43. 結構 程式 流程圖(Flowchart) • 流程圖係以特定的圖形符號來取代以文字敘述某系統或程式的處理流程 • 系統流程圖(System Flowchart) • 重點在表達整個資料處理過程的每個處理步驟及所需使用的人力、設備及相關資料 • 通常由系統設計師繪製 • 程式流程圖(Program Flowchart) • 說明如何使用電腦來處理問題的程式 • 以說明程式內的流程為主 • 通常由程式設計師來繪製

  44. 物件 程式 物件導向程式設計的四大特色 • 抽象化(Abstraction) • 具相同特性的事物可抽象化成一類別 • 封裝(Encapsulation) • 將所需要的變數及函式結合成一個資料體,並給予良好的保密性 • 繼承(Inheritance) • 將原先已定義好的類別做擴充 • 同名異式(多形性;Polymorphism) • 隸屬於同或不同類別的物件﹐由於支持同一介面而產生可互相替換的效果。

  45. 物件 程式 JAVA簡介 • Java係由Sun Microsystem 所發展出來,為一種新的物件導向程式語言 • Java的語法與C、C++及Object C類似 • Java的特色 • 物件導向(Object-Oriented) • 垃圾蒐集(Garbage Collection) • 直譯式程式(Interpreted Language) • 強韌性(Robust) • 安全性(Security) • 多重線索(Multithread)

  46. 物件 程式 JAVA的特色一 • 物件導向(Object-Oriected) • Java以類別(Class)來組織程式 • 程式中僅存在類別,而無一般獨立的函數式(Function) • 每一種類別包含一群成員方法(Member Method),藉由這些成員方法來定義物件的行為 • 任一類別的成員方法均可藉由繼承從另一個類別取得 • Java僅允許單一繼承,不允許多重繼承

  47. 物件 程式 JAVA的特色二 • 垃圾蒐集(Garbage Collection) • Java語言中提供了一個內建的程式Garbage Collection,它會主動的去分析記憶體狀況,並釋放不再使用的記憶體部份,使程式設計師可以專心於程式的設計問題,而不需要去考慮意義體的管理問題。

  48. 物件 程式 JAVA的特色三 • 直譯式語言(Interpreted Language) • Java程式的執行,必須透過一個直譯程式(Interpreter)來完成,但其處理模式與傳統的Basic語言不同,傳統的Basic程式撰寫完畢後,可以直接利用Basic的直譯程式執行,並立即可獲得執行結果;但Java在執行前必須先進行編譯(Compilation)過程,將Java程式轉換成另一種中間碼(Intermediate Code),稱為Byte-Code。之後再將此Byte-Code交由Java的直譯程式予以執行。 • 此處的Byte-Code係針對虛擬機器(Pseudo Machine)所設計,亦即其具有機器獨立性(Machine Independence),一個被編譯過的Java程式可以在任何機器上使用Java直譯程式執行,不需要再重新編譯。

  49. 物件 程式 JAVA的特色四 • 強韌性(Robust) • Java在設計上會仔細的檢查每一個記憶體存取的動作,以確保存取的合法性,因此不會使Java程式有意無意的去破壞電腦系統。 • 為確保安全性無虞,Java並未提供指標(Pointer),使得Java程式的存取範圍能被有效的掌控。

  50. 物件 程式 JAVA的特色五 • 安全性(Security) • Java語言的程式設計允許其一段Java程式能經由網路到另一部機器上執行,而在存取或執行的過程中是否會存取到不被允許的資料,以確保程式或系統的安全性,可藉由瀏覽器(Browser)來偵測。

More Related