Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

計概:Programming Paradigm

1 666 vues

Publié le

台師大科技系大一計算機概論報告

Publié dans : Ingénierie
  • Soyez le premier à commenter

計概:Programming Paradigm

  1. 1. 程式語⾔言類型 (Programming Paradigm)
  2. 2. Let it go
  3. 3. 語⾔言
  4. 4. Fortran Matlab Octave Bigwig TUTOR BASIC BCPL C C++ COBOL Haskell Java Mercury Objective-C Pascal Scheme Swift Ada Chapel Eiffel Go Joule Limbo MultiLisp Orc Oz Pict Rust SALSA Scala SequenceL C# Candle ChucK Cyclone ActionScript Frink LPC MSL MEL PCASTL Perl PHP Pico Pike R Rust S-Lang Scala sed SuperCollider TCL UnrealScript Lucid Max Oz Prograph Pure Data Reaktor VEE VHDL VisSim Clarion Clipper RDQL SPARQL SQL WebDNA WebQL Lustre MetaPost Modelica Prolog Oz RDQL SPARQL SQL xBase Ruby EEL
  5. 5. 程序式類型〔procedural paradigm;或規則式類型 (imperative paradigm)〕可將程式視為主動的代理 ⼈人,能主動處理被動的物件。被動的物件無法⾃自⾏行啟 動,但可以接受主動代理⼈人發出的動作。在程序式類 型中的程式是屬於主動代理⼈人,將資料或資料項視為 被動的物件。資料項被儲存於電腦的記憶體中,以供 程式處理。 程序式類型 (Procedural Paradigm) (英⽂文版)252
  6. 6. 程式(program)是主動的⼈人(active agent) 資料(data)是被動的物(passive object) 程式呼叫(call)程序(procedural)來影響資料(data) 程式(program)、程序(procedure)和資料(data)是分開的 當⼀一個程式想要影響⼀一個資料時,這個程式會發出⼀一個程 序,⽽而這個程序包含影響資料所需的動作 程序式類型 (Procedural Paradigm) (英⽂文版)252
  7. 7. 程式(program)是主動的⼈人(active agent) 資料(data)是被動的物(passive object) 程式呼叫(call)程序(procedural)來影響資料(data) 程式(program)、程序(procedure)和資料(data)是分開的 當⼀一個程式想要影響⼀一個資料時,這個程式會發出⼀一個程 序,⽽而這個程序包含影響資料所需的動作 ⼈人 洗 碗 程序式類型 (Procedural Paradigm) (英⽂文版)252 程式 程序 資料
  8. 8. 程序式類型 (Procedural Paradigm) (英⽂文版)253
  9. 9. 程序式類型 (Procedural Paradigm) (英⽂文版)253 上檔(段數) { 段數 + 1 }
  10. 10. 程序式類型 (Procedural Paradigm) (英⽂文版)253 上檔(段數) { 段數 + 1 } 程序: 上檔功能 被影響的資料:段數
  11. 11. 程序式類型 (Procedural Paradigm) (英⽂文版)253 Ubike段數 = 2 Ubike換檔程式 { 上檔(Ubike段數) } 上檔(段數) { 段數 + 1 } 程序 被影響的資料
  12. 12. 程序式類型 (Procedural Paradigm) Ubike段數 = 2 Ubike換檔程式 { 上檔(Ubike段數) } 上檔(段數) { 段數 + 1 } 程序 被影響的資料 呼叫程序 程式 資料 (英⽂文版)253
  13. 13. 程序式類型 (Procedural Paradigm) Ubike段數 = 2 Ubike換檔程式 { 上檔(Ubike段數) } 折疊⾞車⾞車段數 = 2 折疊⾞車換檔程式 { 上檔(折疊⾞車段數) } 都市⾞車段數 = 2 都市⾞車換檔程式 { 上檔(都市⾞車段數) } 同個程序可以拿來影響不同資料 (英⽂文版)253
  14. 14. 程序式類型 (Procedural Paradigm) Ubike段數 = 2 Ubike換檔程式 { 上檔(Ubike段數) } 折疊⾞車段數 = 2 折疊⾞車換檔程式 { 上檔(折疊⾞車段數) } 都市⾞車段數 = 2 都市⾞車換檔程式 { 上檔(都市⾞車段數) } 同個程序可以拿來影響不同資料 (英⽂文版)253
  15. 15. 程序式類型 (Procedural Paradigm) 上檔(段數) { 段數 + 1 } (英⽂文版)253
  16. 16. 程序式類型 (Procedural Paradigm) 上檔(段數) { 段數 + 1 } 呼叫程序 加法(段數, 1) (英⽂文版)253
  17. 17. 程序式類型 (Procedural Paradigm) (英⽂文版)254
  18. 18. 程序式類型 (Procedural Paradigm) 腳踏⾞車段數 = 2 腳踏⾞車換檔程式 { 上檔(腳踏⾞車段數) } 上檔(段數) { 段數 + 1 } (英⽂文版)254
  19. 19. 程序式類型 (Procedural Paradigm) FORTRAN(FORmula TRANslation) ⽅方程式轉譯程式語⾔言,第⼀一個⾼高階語⾔言 COBOL(COmmon Business-Oriented Language) 共通商業導向程式語⾔言,商業程式設計語⾔言 Pascal 教導初學者結構化程式設計的⽅方法 C(C language) 寫作業系統與系統軟體 Ada 美國國防部承包商所使⽤用的統⼀一語⾔言 (英⽂文版)254
  20. 20. 物件導向式類型 (object-oriented paradigm) (英⽂文版)256 物件導向式類型(object-oriented paradigm)以處 理主動物件取代被動物件。在⽇日常⽣生中我們經常碰 到許多主動物件,執⾏行在這些物件上的動作都被包 含於物件裡,所以物件僅需要接收外界傳來的適當 刺激,就會去執⾏行相關的某個動作。 物件導向式類 型的檔案中會包含所有的程序,稱為⽅方法 (methods),也就是會對檔案執⾏行的動作:列 印、複製、刪除等。
  21. 21. 物件導向式類型 (object-oriented paradigm) (英⽂文版)256 資料(data)是主動的物(active object) 資料(data)包含所有能夠影響資料本⾝身的程序(procedure) 包含在資料(data)裡的程序(procedure)稱為⽅方法(method) 包含⽅方法(method)的資料(data)稱為物件(object) 程式(program)觸發物件(object)裡的⽅方法(method) 當⼀一個程式想要影響⼀一個物件時,這個程式觸發這個物件 裡的⽅方法
  22. 22. 物件導向式類型 (object-oriented paradigm) (英⽂文版)256
  23. 23. 物件導向式類型 (object-oriented paradigm) (英⽂文版)256 物件 Ubike { Ubike段數 上檔(Ubike段數) { Ubike段數 + 1 } } Ubike換檔程式 { Ubike.上檔 }
  24. 24. 物件導向式類型 (object-oriented paradigm) (英⽂文版)256 物件 Ubike { Ubike段數 = 2 上檔(Ubike段數) { Ubike段數 + 1 } } Ubike換檔程式 { Ubike.上檔 } 資料 ⽅方法 物件
  25. 25. 物件導向式類型 (object-oriented paradigm) 腳踏⾞車 單速⾞車 登⼭山越野⾞車 淑⼥女⾞車 UBike 折疊⾞車 競速⾞車 都市⾞車 類別 物件 (英⽂文版)257 同個類別(class)的物件可以全部⼀一起在類別定義
  26. 26. 物件導向式類型 (object-oriented paradigm) 物件 Ubike { Ubike段數 上檔(Ubike段數) { Ubike段數 + 1 } } (英⽂文版)257 同個類別(class)的內容可以全部⼀一起定義
  27. 27. 物件導向式類型 (object-oriented paradigm) 類別 腳踏⾞車 { 腳踏⾞車段數 上檔(腳踏⾞車段數) { 腳踏⾞車段數 + 1 } } (英⽂文版)257腳踏⾞車物件 Ubike 類別 同個類別(class)的內容可以全部⼀一起定義
  28. 28. 物件導向式類型 (object-oriented paradigm) 類別 腳踏⾞車 { 腳踏⾞車段數 上檔(腳踏⾞車段數) { 腳踏⾞車段數 + 1 } } 同個類別(class)的內容可以全部⼀一起定義 Ubike換檔程式 { Ubike.上檔 } 折疊⾞車換檔程式 { 折疊⾞車.上檔 } 都市⾞車換檔程式 { 都市⾞車.上檔 } (英⽂文版)257 腳踏⾞車物件 Ubike 腳踏⾞車物件 折疊⾞車 … 類別
  29. 29. 物件導向式類型 (object-oriented paradigm) 類別 腳踏⾞車 { 腳踏⾞車段數 上檔(腳踏⾞車段數) { 腳踏⾞車段數 + 1 } } (英⽂文版)257 同個類別(class)的內容可以全部⼀一起定義
  30. 30. 物件導向式類型 (object-oriented paradigm) (英⽂文版)257 ⼀一個類別可以繼承(inherit)另⼀一個類別 ⾞車⼦子類別 汽⾞車 機⾞車 卡⾞車 腳踏⾞車 類別
  31. 31. 物件導向式類型 (object-oriented paradigm) 類別 腳踏⾞車 { 腳踏⾞車段數 上檔(腳踏⾞車段數) { 腳踏⾞車段數 + 1 } } (英⽂文版)257 ⼀一個類別可以繼承(inherit)另⼀一個類別
  32. 32. 物件導向式類型 (object-oriented paradigm) (英⽂文版)257 類別 ⾞車 { ⾞車段數 上檔(⾞車段數) { ⾞車段數 + 1 } } 類別 腳踏⾞車 繼承 ⾞車 (英⽂文版)257 ⼀一個類別可以繼承(inherit)另⼀一個類別
  33. 33. 物件導向式類型 (object-oriented paradigm) (英⽂文版)257 類別 ⾞車 { ⾞車段數 上檔(⾞車段數) { ⾞車段數 + 1 } } 類別 腳踏⾞車 繼承 ⾞車 Ubike換檔程式 { Ubike.上檔 } 折疊⾞車換檔程式 { 折疊⾞車.上檔 } 都市⾞車換檔程式 { 都市⾞車.上檔 } 腳踏⾞車物件 Ubike 腳踏⾞車物件 折疊⾞車 ⼀一個類別可以繼承(inherit)另⼀一個類別
  34. 34. 物件導向式類型 (object-oriented paradigm) (英⽂文版)257 ⾞車⼦子 汽⾞車 機⾞車 卡⾞車 腳踏⾞車 繼承同個類別的不同類別可以有多樣性 (Polymorphism) 同樣的名字的⽅方法(method)可以做不同的事
  35. 35. 物件導向式類型 (object-oriented paradigm) (英⽂文版)257 繼承同個類別的不同類別可以有多樣性 (Polymorphism) 同樣的名字的⽅方法(method)可以做不同的事 ⾞車⼦子 類別 腳踏⾞車 { 警⽰示聲() { 敲擊⾦金屬鈴鐺 } } 類別 卡⾞車 { 警⽰示聲() { 鳴喇叭 } }
  36. 36. 物件導向式類型 (object-oriented paradigm) (英⽂文版)258 C++ 由C演變⽽而來,C加上物件導向概念的延伸版 Java 由C++演變⽽而來,完全物件導向式的語⾔言
  37. 37. 函式類型 (Functional Paradigm) (英⽂文版)258 增加⼀一(x) = x + 1 2 + 1增加⼀一(2) = 2
  38. 38. 函式類型 (Functional Paradigm) (英⽂文版)259 函式類型 在函式類型(functional paradigm)中 的程式被視為數學函式。將函式(function)視為 ⼀一個⿊黑箱,有⼀一串輸⼊入與⼀一串輸出。 1. 預先定義⼀一組基本(不可分割的)函式,可以 讓任何程式 設計師使⽤用。 2. 允許程式設計師合併基本的函式,產⽣生新的函 式。
  39. 39. 函式類型 (Functional Paradigm) 先定義⼀一組不可分割的基本函式 增加⼀一(x) = x + 1 減少⼀一(x) = x - 1 允許使⽤用基本函式合成新的函式 增加⼆二(x) = 增加⼀一(增加⼀一(x)) 減少⼆二(x) = 減少⼀一(減少⼀一(x)) (英⽂文版)259
  40. 40. 函式類型 (Functional Paradigm) 找出數列中排第三個數的值 (英⽂文版)259 先定義⼀一組不可分割的基本函式 First(數列) = 取數列中排第⼀一個數的值 Rest(數列) = 刪掉數列中排第⼀一個的數 允許使⽤用基本函式合成新的函式 Third(數列) = First(Rest(Rest(數列)))
  41. 41. 函式類型 (Functional Paradigm) (英⽂文版)259 LSIP 專⾨門處理數列的語⾔言 Scheme LISP的改良版
  42. 42. 函式類型 vs 程序式類型 (英⽂文版)259 Ubike段數 = 2 Ubike換檔程式 { 上檔(Ubike段數) } 上檔(Ubike段數) { Ubike段數 + 1 } 上檔(Ubike段數) { 增加⼀一(Ubike段數) } 函式類型 程序式類型
  43. 43. 宣告式類型 (Declarative Paradigm) 宣告式語⾔言(declarative language)使⽤用邏輯推論的原 理來回覆查詢。⼀一些給定的敘述(事實)被假設為真, 使⽤用邏輯推論的規則去演繹出新的敘述(事實)。 類似函式類型,先從⼀一些確定的事實,推論到其他事實 如果 (A 是 B) 且 (B 是 C) => (A 是 C) (Ubike是腳踏⾞車) 且 (腳踏⾞車是⾞車) => (Ubike是⾞車) (英⽂文版)260
  44. 44. 宣告式類型 (Declarative Paradigm) 宣告式語⾔言是⽤用既定的已知事實套上嚴謹的邏輯定律來 進⾏行推論,他是建⽴立在⼀一⾨門很專⾨門的學問(就叫做邏輯) 上,利⽤用從各個領域得到的各種確定事實,套上由這個 學問領域的邏輯學家導出的邏輯定律,來從確定事實推 導出新的事實 反例:(A 是 C) 且 (B 是 C) =>? (A 是 B) (英⽂文版)260
  45. 45. 宣告式類型 (Declarative Paradigm) (英⽂文版)260 宣告式語⾔言是⽤用既定的已知事實套上嚴謹的邏輯定律來 進⾏行推論,他是建⽴立在⼀一⾨門很專⾨門的學問(就叫做邏輯) 上,利⽤用從各個領域得到的各種確定事實,套上由這個 學問領域的邏輯學家導出的邏輯定律,來從確定事實推 導出新的事實 反例:(A 是 C) 且 (B 是 C) =>? (A 是 B) NO (法拉利是⾞車) 且 (藍寶基尼是⾞車) !=> (法拉利是藍寶基尼)
  46. 46. 宣告式類型 (Declarative Paradigm) (英⽂文版)261 Prolog (PROgramming in LOGic) 範例: 腳踏⾞車 (Ubike) ⾞車 (腳踏⾞車) ?-⾞車 (腳踏⾞車) >> Yes 告訴電腦已知事實 詢問此邏輯是否成⽴立

×