基本視窗程式應用 - 金甌女中FTP系統網頁專區
文章推薦指數: 80 %
非程序導向語言:指該類程式語言以完成工作為設計導向,例如完成電腦報表的製作,或是設計以完成文件排版格式等各類的程式語言。
又稱為4GL程式語言. 第五代程式語言則是以 ...
1.概說
計算機語言乃是人與電腦間溝通的語言,亦稱程式語言
程式語言並非一經撰寫即可在電腦上執行,而是必須經過一定程序的轉換,轉換為電腦所能辨識的執行指令,方可執行。
程式語言轉換的過程亦可稱為翻譯。
最終轉換的結果為機器語言,只有機器語言才能在電腦上執行
2.分類
約略可分為物件導向語言與傳統的非物件導向語言兩種
非物件導向語言
一般可以分為
通用程式語言:可分為機器導向語言(機器語言,組合語言),問題導向語言(程序導向,非程序導向語言)
特殊問題導向語言:應用於程式控制、數值控制、模擬控制等用途
機器導向語言依據程式語言對硬體設備的相依性,可分為低階語言與高階語言
低階語言:對硬體系統的相依性高,例如組合語言與機器語言,對不同機種間其指令具有很大的差異性。
高階語言:以類似人類語言格式所形成的語言,對硬體系統的相依性低,所以具有極高的可攜性,可以在不同的電腦系統上編譯執行
問題導向語言依程式設計模式又可分為:
程序導向語言:指一般結構化高階程式語言,例如Basic,Cobol,Pascal,Fortran,C,Ada...等。
包括有三基本機構:選擇(循序)、判斷(決策、選擇)、重複機構(迴圈)
非程序導向語言:指該類程式語言以完成工作為設計導向,例如完成電腦報表的製作,或是設計以完成文件排版格式等各類的程式語言。
又稱為4GL程式語言
第五代程式語言則是以人工智慧為主的自然語言,例如PROLOGO(法、英,推理性語言),LISP(美,符號處理語言)語言等
物件導向語言
Simula是第一個物件導向語言。
原本是作為「模擬」用途,但其中的物件以及類別概念,成為現今物件導向語言的主要架構。
(資料來源)
特性I
物件object
訊息
類別class
繼承
資料封裝
抽象資料型別
同名異元多元體
動態繫結
屬性Property
事件event
方法method
特性II
封裝encapsulation:開發人員設計程式時,只要知道使用的物件具有哪些屬性以及方法即可,而無需瞭解該物件內部的設計。
如此可以達到軟體IC的使用目的。
可以根據類別成員的特性,設定其權限等級,以提高安全性。
繼承inheritance:子類別會分享父類別所定義的結構與行為(93統測)。
利用常用的基本類別class衍生出子類別,並以此子類別產生新的物件提供程式設計師使用。
苦以產生衍生類別,並可擴充基底類別Baseclass的屬性與方法,或者也可以用新的實做(Implementation)來覆寫繼承方法。
多型polymorphism:子類別與父類別可以擁有相同名稱,但功能不同的方法,也就是子類別可以依需要改寫由父類別所定義的方法,或是屬性。
亦即每一物件都包含許多不同「屬性」及眾多針對不同「事件」而回應的「方法」(94統測),亦即父類別與子類別之間可以擁有相同名稱但是不同功能的方法(95統測)。
提供統一的呼叫介面,程式自動根據不同的參數,執行不同型式的程式碼。
相關名詞定義:
類別:具有類似性質、相同行為及共同關係的物件
物件:由父類別重新封裝,繼承,具有多型特性
方法(行為):物件本身具有不變特性的行為
事件:物件本身可接受外界的刺激種類
事件驅動:因為外界刺激,使物件做出特定的反應。
必須經過定義,會具有反映
屬性:描述物件的特徵
種類(連接外站:維基百科)
SmallTalk
由全錄(Xerox)公司所發展出來的物件導向程式語言(OOP),它將使用者介面的觀念帶入物件導向語言當中,目前有DigiTalk和ParcplaceSystem公司發展該語言的編譯器[84商教系]
有人稱他是人工智慧語言的一種,事實上,Objectoritended的Language都應該在AI的範圍內,這怎麼說呢?目前AI的應用範疇大多在模擬,如模擬火箭發射等等,而ObjectOritended則是模擬真實世界中各種Object間的交互關係。
如果以此模擬的角度來思考,那Smalltalk可算是AI的軟體,C++orJava也算是。
另外,PrologLanguage會列入AI的領域,那是因為它的推理機制。
所以,小弟的看法和見解,一個Language是否會歸類為AI軟體,就先由AI的範疇來推論。
目前AI的範疇大多在推理機制、模擬機制、Fuzzy等等。
由這方面去判斷,應可找出脈絡。
[編按:以上是編者與友站站長鄒效唐先生討論SmallTalk是不是人工智慧語言的摘要]
C++
非常具有效能的程式語言。
C++語言是90年代才逐漸獲得重視之以物件導向(Object-Oriented)為基礎的程式語言,它可說是C程式語言的的延伸,用來作為通用應用軟體之開發工具。
Ada
Ada語言起源,介紹。
Ada是一通用之高階之程式開發語言。
其特點在於能夠提供優異之資料格式管理、同時作業處理和有效之程式架構等能力。
此程式語言特別適用於崁入式的即時系統、分散式作業、高可靠度之軟體發展等應用。
VB
VisualBasic目前在台灣市場上常見的通用性教學程式語言
VFP
VisualFoxpro資料庫程式語言
Delphi
ObjectPascal由結構嚴謹的Pascal所後續開發的視窗環境下的程式語言
Java
昇陽所發展,具跨平台特性,以C++為基礎所發展
C#
念做csharp,為MS新推出的程式語言,模仿Java功能,語法類似C語言
PL/1
通用語言(商用與科學用)
APL
AProgrammingLanguage
PowerBuilder
Sybase資料庫的4GL開發程式
SDK
軟體開發套件(SoftwareDevelopmentKit,即SDK)一般是一些被軟體工程師用於為特定的軟體包、軟體框架、硬體平台、作業系統等建立應用軟體的開發工具的集合。
它或許只是簡單的為某個程式語言提供應用程式介面的一些檔案,但也可能包括能與某種嵌入式系統通訊的複雜的硬體。
一般的工具包括用於偵錯和其他用途的實用工具。
SDK還經常包括範例代碼、支援性的技術註解或者其他的為基本參考資料澄清疑點的支援文檔。
軟體工程師通常從標的系統開發者那裡獲得軟體開發包。
為了鼓勵開發者使用其系統或者語言,許多SDK是免費提供的。
SDK經常可以直接從網際網路下載。
有時也被作為行銷手段。
例如,甲產品或許會免費提供設備SDK以鼓勵人們使用它,從而會吸引更多人由於能免費為其編寫應用程式而購買其設備。
SDK可能附帶了使其不能在不相容的許可證下開發軟體的許可證。
例如一個專有的SDK可能與自由軟體開發抵觸。
而GPL能使SDK與專有軟體開發近乎不相容
widget
部件工具箱(widgettoolkits)亦稱為GUI工具箱(GUItoolkits),在程式設計中指的某些基本的GUI的構件元素的集合。
他們一般以庫或者應用程式框架的形式出現。
API
「『電腦作業系統(Operatingsystem)』或『程式函式庫』提供給應用程式呼叫使用的程式碼」。
其主要目的是讓應用程式開發人員得以呼叫一組常式功能,而無須考慮其底層的原始碼為何、或理解其內部工作機制的細節。
API本身是抽象的,它僅定義了一個介面,而不涉入應用程式如何實現的細節。
IDE
整合開發環境(IntegratedDevelopmentEnvironment,簡稱IDE,也有人稱為IntegrationDesignEnvironment、IntegrationDebuggingEnvironment)是一種輔助程式開發人員開發軟體的應用軟體。
IDE通常包括程式語言編輯器、編譯器/直譯器、自動建立工具、通常還包括除錯器。
有時還會包含版本控制系統和一些可以設計圖形用戶界面的工具。
許多支援物件導向的現代化IDE還包括了類別瀏覽器、物件檢視器、物件結構圖。
雖然目前有一些IDE支援多種程式語言(例如Eclipse、NetBeans、MicrosoftVisualStudio),但是一般而言,IDE主要還是針對特定的程式語言而量身打造(例如VisualBasic)。
3.演進
計算機語言的演進歷史如下:
第一代
機器語言
由0與1所構成,電腦能直接執行的程式語言
第二代
組合語言
利用助憶碼取代數字碼,亦稱符號語言
第三代
程序導向語言
高階語言以1954年IBM的FORTRAN語言開始
第四代
非程序導向語言
4GL,,查詢語言SQL,應用程式產生器。
1970年代萌芽,1980年大量使用主要應用在一般資訊查詢與報表列印,以事件驅動為主
第五代
自然語言
應用在人工智慧AI與所衍生的專家系統ES等特殊領域
我們可以利用圖形來代表這些語言的演進與人類的關係。
4.翻譯程序
一般程式編寫流程為:編譯,連結/載入,執行
使用者依程式語言語法規則所撰寫的文件,稱為原始碼(sourcecode)。
將原始碼轉換為機器碼以便在電腦上執行的工具軟體,一般依據該軟體的特性,此類轉換工具軟體可以分為:
組譯器Assembler
將組合語言程式翻譯為目的程式,再經過連結程式,連結為執行檔*.com(檔案小於64K)
直譯器Interpreter
將原始程式逐行翻譯為機器語言。
程式每次執行,皆必須經過翻譯的手續。
亦稱為解譯器
編譯器Compiler
將原始程式一次翻譯為目的程式後,再聯結函式庫或是其他目的程式為執行檔*.exe(檔案大於64K)
此類工具軟體轉換原始碼為目的碼或是可執行檔的程序,可以用下圖表示:
組譯程序
直譯程序
編譯程序
吾人可以列出如下的表格比較彼此間的不同:
組譯
直譯
編譯
目的程式
有
無
有
程式執行速度
快
慢
快
語言處理與程式執行
編譯一次
執行n次
編譯一次
執行一次
編譯一次
執行n次
原始程式和機器的相關性
機器微處理器不同,原始程式敘述不同
與機種無關
與機種無關
語言種類
MASM
Perl,Python,REBOL,Ruby,HTML
通常亦稱為Script語言
C/C++,Delphi(ObjectPascal)
除了以上三者外尚有:
WebPageScriptLanguage:製作互動式網頁的語言。
例如ASP、PHP、JavaScript(Sun)、JScript(MS)、WMLScript(WAP手機的Script,源自JavaScript)
HybridLanguage:混合式語言。
例如Java,C#等,其執行效能或程式簡單性介於直譯式語言與編譯式語言之間
在使用這些工具程式的同時,有一些特殊的工具程式必須介紹:
編輯程式editor
編輯原始檔案的工具程式,如PE2,MSEDIT。
在視窗環境下則以UltraEdit最有名
連結程式linker
將一個以上的目的程式與程式庫連結合併成一個可執行檔
載入程式loader
將可執行檔從輔助記憶體中讀入主記憶體使執行的程式
偵錯程式debugger
協助程式設計師偵測程式錯誤點的程式
近來程式語言的開發環境已經趨向IDE整合介面,使用者只需在單一環境下,便可以撰寫程式,偵錯程式,編譯程式等開發程式的過程。
由於跨平台執行程式環境的需求日廣,程式必須在不同作業系統平台執行,在java環境下便有bytecode(位元組碼)的產生,而微軟則推出.NetFramework的產生。
ByteCode位元組碼
ByteCode是給予JVM執行的一種虛擬機器碼,也就是給於JVM的指令
反過來說,JVM就是ByteCode的解譯程式
extends的原始程式碼(.java)經由編譯後產生的類別檔(.class)就是ByteCode檔案
雖然JVM可能因平台而異,但是所有的JVM都能執行extends的ByteCode‧
.NetFramework
為支援XML,WebService及跨平台等特性,微軟推出此一平台。
此平台除了提供共通語言執行環境外(CLRCommonLanguageRuntime),還提供一完整的類別程式庫(CommanClassLibrary),以供程式設計師可在支援此平台的程式語言中,以程式設計師熟習的語言來開發元件及應用程式,且可輕易與其他程式設計師所開發的元件相整合。
任何一個VS.Net家族的程式語言經過編譯後就是一個可以在.NetFramework執行環境中執行的中介程式碼,此中介程式碼會在實際執行時經由.NetFramework中的JustInTimeCompiler將其編譯成該平台下的實際執行碼,以達到跨平台的功能。
.NetFramework的角色其實就和Java的VM一樣。
而此一平台則是以C#語言為最重要的語言,其後續發展值得觀察。
(連結外站:維基百科)
5.特性
一般來說,計算機語言的結構大同小異,但是在所有的語言中,比較需要注意的有以下各點:
指令
電腦系統接受指令執行運算,而這些指令便是電子控制訊號。
指令分為兩部分:運算碼(Operationcode)指揮電腦操作某一運算功能(例如加減乘除等),運算元(Operand)運算碼進行運算的對象(例如:待運算的文字或數值資料)。
依指令的功能一般可以分為:
輸入指令
由輸入裝置擷取資料
輸出指令
將處理器處理好的資料,送出到顯示裝置顯示結果
算術指令
執行算術運算。
指令中運算元可為暫存器或儲存單位之位址
邏輯指令
提供處理過程中的邏輯運算,包含資料間的長度、大小、或條件測試
搬移指令
指定資料或位址的內容複製到目標位址上
控制指令
改變執行的次序或狀態
變數
可以宣告為全域變數或是區域變數
全域Global變數:以Public宣告在整體程式該變數均可使用
區域Local變數:以private或是local宣告。
以private宣告使用於宣告的副程式與後續呼叫副程式;以local宣告,則只能在宣告的副程式間執行。
儲存配置方式:動態Dynamic配置,程式執行時配置記憶體空間;或是靜態Static配置,程式在編譯時即配置記憶體空間
參數傳遞的方式
在撰寫程式時,通常需要呼叫其他程式或是函數進行處理。
呼叫其他的程式稱為主程式,被呼叫的程式稱為副程式。
彼此間透過參數進行資料傳遞。
主程式的參數稱為實際參數,副程式的參數稱為形式參數
callbyaddress
傳址呼叫(空間)。
主、副程式的參數使用共同的記憶體空間,當副程式的參數改變內容值,主程式的變數亦連帶改變
callbyvalue
傳值呼叫(數值)。
主、副程式的變數各自擁有獨立記憶體空間,參數只是將內容值複製給引數,程式內的變數值改變,不會相互影響
callbyname
傳名呼叫,亦稱callbyreference。
主程式呼叫副程式時,將主程式中實際參數的名稱,傳給副程式中對應的形式參數,副程式中的所有形式參數名稱以實際參數的名稱代替。
實際參數與形式參數,佔用相同的記憶體空間
callbyresult-value
主程式呼叫副程式時,將主程式中實際參數的值,傳給副程式中對應的形式參數。
兩者不會佔用相同的記憶體空間
副程式
優點:可以抒解程式撰寫的壓力,並將功能適當的分散到各個模組執行
分類:程序Procedure(不一定有傳回值,或是可以傳回一個以上的值)與函數Function(只有一個傳回值)
6.演算法Algorithm
定義
由有限的步驟組成,依照這些步驟順序執行,可以完成某一特定的工作。
這些步驟稱為演算法,並且同時滿足下列條件:
輸入:外界可以輸入0到多項資料
輸出:至少輸出一個結果
明確性:每一個指令或是步驟必須是簡潔的,而且不含糊(unambiguous)
有限性:驗算法必須在有限步驟後結束,不能有無窮迴圈
有效性:只要以紙或筆就可以執行該演算法
演算法均可以以程式流程圖表示,但是程式流程圖不一定能以演算法表示
如何書寫演算法
一般使用虛擬語言Pseudo-Language來書寫演算法,常見有Sparks,PASCAL-LIKE語言。
其處理流程如下:
問題需求--(設計)-->演算法(Sparks)---->高階語言--(編譯器)-->目標機器語言
由於電腦是依照一定的邏輯步驟來執行運算的機器,在程式設計的時候必須將問題分解為許多小步驟,然後再依一定的次序逐步執行,我們將這個用來描述問題之解決程序的方法稱作演算法。
許多同學在第一次接觸程式設計時,多半不知道如何下手。
一般建議:多觀摩。
多看別人寫的程式,多想一想為何他要這樣寫,自己再試著模擬一次,便可以容易上手了。
而應付考試的同學,則建議把常見的考試題型,記憶起來。
再看到題目時,如過能夠了解題目所代表的意義,解題便十分容易了
看一看以下這一題,你了解它的意義嗎?
S=0
FORI=1TO100000
X=INT(RND+0.5)
IFX=0THENS=S+1
NEXT
P=S/100000
PRINTP
X=INT(RND+.5)取出的值有幾種可能性?
P=S/100000所代表的意義為何?
想一想丟骰子,或是丟錢幣取正反面與本題的意義是否相符?
虛擬語言Pseudo-Language
利用一種結合一般文字敘述、非正確的程式語言來描述演算法的程式碼,稱為pseudocode。
以下是一個排序演算法的描述碼
排序的元素放在陣列a中
for(i=1;i<=陣列大小-1;i依序加一)
for(j=i+1;j<=陣列大小;j依序加一)
if(a[i]>a[j])
交換a[i]及a[j];
完成排序動作。
利用pseudocode可彌補程式語言敘述的不足,而又有程式語言結構化且嚴謹的敘述能力,可相當有效率的定義出一個演算法的過程,在資料結構或演算法等領域,經常使用
pseudocode來描述演算法。
7.流程圖Flow
Chart
乃是以圖形符號來描述程式的邏輯和處理程序。
符號共分為三種:
程式流程符號
輸出入
流程流向
起點、終點或中斷
連結
處理
備註
判斷
輸入輸出媒體符號
卡片
線上儲存
卡片檔
磁帶檔
打孔紙帶
報表檔
鍵盤輸入
磁碟片
顯示於螢幕
卡式磁帶
作業處理符號
處理
合併
排序
人工作業
流程圖符號
說明
本圖形乃是由Word中所擷取
程序(處理)
替選處理
決策(判斷)
資料(輸入與輸出)
預設處理(副程式)
內部儲存裝置
文件(報表,列印)
多重文件
開始與結束點
準備(迴圈)
人工輸入
人工作業
連接點
換頁
卡片
打孔紙帶
匯合連接點
或
合訂
排序
抽選
合併
儲存裝置
延遲
磁帶(循序存取儲存裝置)
磁片
磁碟(直接存取儲存裝置)
顯示
左側圖形乃是Visio的流程圖模板
8.各種語言筆記
MSDN網站
Basic語言
QuickBasic:看筆記
VisualBasic6:看筆記
VisualStudioVisualBasicExpress:看筆記
下載VisualStudio2010
Cobol語言
看筆記
C語言
看[c語言學習筆記]網站
Pascal語言
看[Pascal語言及範例]網站
VisualFoxpro語言
看講義
Java語言
看講義[連結外站:http://www.cs.ccu.edu.tw/~hcts92/article/java/note_java.html]
JavaDeveloperNetwork
AndroidSDKDeveloper
iOSAPPSDKDeveloper
延伸文章資訊
- 1Day 0 |物件導向到底是蝦米碗糕呢?老闆來碗方向感吧
還記得一開始自學程式語言時,大家一定或多或少都聽過一個名詞 物件導向 。然後身為程式新手和非程式相關科系畢業的你也許會開始Google 它到底是什麼意思,然後你會在 ...
- 2物件導向vs 非物件導向 - 創作大廳- 巴哈
網路開發/程式課程備份文由於我目前聽過的程式語言, 好像全都是物件導向型的, 不禁好.
- 3CH09 - 測驗卷題目+解答
下列何者為最早提出來的高階語言:. (A)JAVA (B)C (C)FORTRAN (D)BASIC. 【解答】 (C). 3. 下列何者非物件導向程式語言:. (A)C++ (B)PROLOG...
- 4物件導向vs非物件導向 - w3c學習教程
每個物件都有自己有自己的狀態,並能夠根據自身當前狀態完成相應的功能。 封裝:非物件導向程式設計將資料與功能函式分離,在c語言中資料採用結構體方式 ...
- 5你所不知道的C 語言:物件導向程式設計篇 - HackMD
只要有心,Brainf*ck 語言也能作Object-Oriented Programming (OOP)! 摘自「無拘的物件導向」:. 如同數學上的複數,是由實數與虛數組合而成,而就物件 ...