[網上絕少的貼子喲]Delphi入門強貼02-Delphi的語法概括講解


[網上絕少的貼子喲]Delphi入門強貼02-Delphi的語法概括講解


1995年Borland公司發佈了Delphi ,使Pascal結構化語言成爲一種可視化編程語言。但是你要清楚的是DelPhi只是可視化編譯環境,是一個開發工具而已,不是語言哦!DelPhi用的是語言在pascal語言基礎上改進,一種面嚮對象語言object pascal。
      什麼是面向對象程序設計呢!! 面向對象的程序設計(Object    Oriented Programming,簡記爲OOP)OOP立意於創建軟件重用代碼,具備更好地模擬現實世界環境的能力,這使它被公認爲是自上而下編程的優勝者。它通過給程序中加入擴展語句,把函數“封裝”進Windows編程所必需的“對象”中。面向對象的編程語言使得複雜的工作條理清晰、編寫容易。說它是一場革命,不是對對象本身而言,而是對它們處理工作的能力而言。對象並不與傳統程序設計和編程方法兼容,只是部分面向對象反而會使情形更糟。除非整個開發環境都是面向對象的,否則對象產生的好處還沒有帶來的麻煩多。而Delphi是完全面向對象的,這就使得Delphi成爲一種觸手可及的促進軟件重用的開發工具,從而具有強大的吸引力。
       好了廢話不多了,我來說點object pascal的語法吧!!
object pascal語言是由多種語法單元構成的,包括常量、變量、類型名、過程、函數、單元、程序、庫和包等。標識符就是這些語法單元的總稱。
       object pascal中定義了的標識符,必須以字母或下劃線(_)開始,不能包含空格;
其他的可以是字母、數字、下劃線。標識符可以是任意長度,但是隻255個字符有效。object pascal 標識符不區分大小字。不能使用保留字做標識符(保留字是編譯器定義好的)。
       變量是一種能在程序運行期間,改變其內容的標識符。它表示內存位置,用戶可以通過變量名讀寫內存地址。使用變量前必須先聲明,用保留字var對其進行聲明
  Var I:interger;   //聲明一個整型變量
  Var X: real;       //聲明一個實型變量
  Var Z: char;      //聲明一個字符型變量             怎麼寫註釋就不用我說了吧
變量聲明採用var 保留字,在 :分隔符前的是變量名,後面是變量的類型,同時也可以聲名多個變量
  Var 
      A:integer;
      B:real;
      C:char;
(;)表示一個語句結束。
在過程和函數中聲明的變量,被稱爲局部變量;而其他變量就稱爲全局變量。
過程和函數都是object pascal語言的兩種子程序,都是爲了完成某種特定的功能。他們都可以在程序運行過程中任意調用。它們的區別在於:函數在運行時,會提供一個返回值;
而過程不提供任何返回值。
                           下面來說說常量
      常量是一種內容不能改變的標識符。採用保留字const
       Const
            Min=0;
            Max=100;                       //聲明常量不用:
            Yun=’hello world’;           
                           類型名
Object pascal分整型、實數型,字符型,布爾型,自定義類型。
最基本的是整型intger       實數型real     字符型char   布爾型用boolean
               語句
  賦值語句sum:=sum+100;   //將sum+100賦值給sum
  賦值運算符爲  :=
     選擇語句
     單分支條件語句的語法格式爲:   
     if expession then statement 的意思如果條件符合expession就執行then的後面的語句
  例如: if <>0 then result :=i
          //expression(表達式)是邏輯表示式,statement(中文陳述的意思)是執行的語句內容
       雙分支條件語句語法格式爲:
          if expression then statement1 else statement2
       意思是如果符合條件執行statement1 不符合執行statement2
       if j=0 then
         exit
        else
  result :=i/j ;
    case語句case語句也叫做情況語句,它針對多種情況產生多條分支。case語句適用於被判斷的變量或屬性是整型、字符型、枚舉型或子界型時。
在一個case語句中的各個獨立的單元應以數字或字母順序排列。每一個case單元的動作行爲應保持簡單而不應該超過4~5行代碼。如果所要執行的動作過於複雜,應採用獨立的過程或函數。
case語句中的else子句只有當需要系統默認行爲或處理錯誤時才使用。
case語句格式如下:
case 表達式 of
    情況標號表1:情況子句1;
    情況標號表2:情況子句2;
    M
    情況標號表n:情況子句n;
end
         重複性語句
    repeat語句
repeat語句也稱爲直到語句。repeat語句的使用同while語句一樣,並且遵循同樣的規則。格式如下:
repeat
執行一段程序; 
until 循環結束條件
下面的示例程序中,當語句被執行時,會循環輸出1~10的數字。布爾表達式i=10(注意,與其他語言不同的是,“=”是關係運算符,而不能進行賦值操作)直到repeat...until程序段的結尾纔會被計算,這意味着repeat語句至少會被執行一次。
i := 0;
repeat
    i := i+1;
    Writeln(i);
until i=10;
    while語句
while語句也叫做當語句。當需要的條件滿足時,即進行循環。
格式如下:
while  布爾表達式 do語句
while保留字後面必須跟一個布爾表達式。如果該表達式的結果爲真,循環被執行;否則會退出循環,執行while語句後面的程序。
下面程序段的執行效果和上面的repeat程序段相同:
i := 0;  
while i<10 do
    begin
        i := i+1;
    writeln(i);
end;
在一個while循環中,建議不要使用exit語句來跳出循環,應儘量使用循環條件來跳出循環。
在一個while循環中所用的初始化代碼應在進入while循環前出現,不要用其他不相關的語句把二者隔開。循環結束後的處理應在循環之後立即進行。
   for語句
for語句也稱循環語句,有兩種格式。
格式1:
for 變量:=表達式1  to 表達式2    do 一段程序
格式2:
for 變量:=表達式1  downto 表達式2  do 一段程序
for語句的程序代碼會執行一定的次數,它需要一個循環變量來控制循環次數,因此需要聲明一個變量。它的類型可以是整數型、布爾型、字符型、枚舉型或子界型。
下面的程序段會顯示1~10的數字,其中i爲控制變量。
var  
    i : integer;
for i := 1 to 10 do
    writeln(i);
在循環次數已知的情況下,for語句能取代while語句。
      過程與函數
如果一組語句能夠完成某一功能,我們就把它定義爲一個過程;如果要完成的功能是爲了進行一系列處理之後返回一個值,那麼就可以把它定義爲一個函數。每一個過程或函數都以標題開始,其中包括過程或函數的名稱和它使用的參數。過程以保留字procedure開始,函數以保留字function開始。
參數位於括號裏面,多個參數之間以分號分隔,例如:
procedure SetDate(Year: Integer; Month: Integer; Day: Integer);
也可以將相同類型的參數組合在一起,則上述過程標題寫成:
procedure SetDate(Year, Month, Day: Integer);
函數在標題中還多了一項——返回值的類型。下面是一個返回值爲Double型的函數標題:
function GetAverage(num:integer;totalbiggrin.gifouble)biggrin.gifouble;

     函數
定義函數的關鍵字是function。
函數有兩類:一類是標準函數,這一類函數由Delphi定義並實現,程序員可以直接引用,應熟練掌握;另一類爲自定義函數,要重點掌握它的聲明和調用方法。一個自定義函數應首先在程序聲明部分聲明,之後纔可以在程序的執行部分加以調用。
過程或函數的語句部分由begin開始、end結束。函數需要一個返回值。可以將返回值賦給函數名稱,也可以將返回值賦給Result變量。
下面示例程序的作用是將返回值賦給函數名稱:
function GetAverage(num:integer;totalbiggrin.gifouble)biggrin.gifouble;
begin
  GetAverage := total / num;
end;
也可以將返回值賦給Result變量,則上面程序中位於begin和end之間的語句改爲:
Result := total / num;  
   過程
定義過程的保留字是procedure。
過程也有兩類:一類爲Delphi定義的標準過程,另一類爲自定義過程。
與函數不同,過程沒有返回值。
      參數與作用域
           參數
過程和函數與外界的數據通信有兩種方式:一種是通過全局量,另一種是通過參數。程序代碼在調用一個過程或函數時,通常通過參數將數據傳遞到被調用的過程或函數中。最常用的參數有值參數、變量參數和常量參數3種。
· 值參數  若參數定義爲值參數,則函數的調用對實參的值沒有影響。
· 變量參數  若參數定義爲變量參數,則函數調用的結果對實參的值有影響。
· 常量參數  如果參數定義爲常量參數,則當過程或函數執行時不改變形參的值。
值參數與變量參數在定義上的區別在於:值參數在形式參數表中,只聲明其數據類型;變量參數在形式參數表中需要以保留字var來聲明。程序通過有無var來區別變量參數和值參數。常量參數利用const關鍵字來聲明,在形式參數表的參數名稱前加上保留字const可以使一個形參成爲常量參數。
另外,由被調用過程或函數定義的參數稱爲形式參數,即形參;而由調用過程或函數引用的參數叫實際參數,即實參。例如,在函數定義和實現部分:GetAverage(num:integer; totalbiggrin.gifouble)中,num就是形式參數,而當我們調用這個函數:av:=GetAverage(n,ttl)時,其中n和ttl都是已經定義的變量,它們都是實際參數。
值參數在運行過程中只改變其形參的值,不改變其實參的值,即參數的值不能傳遞到過程的外面。如果想改變傳入的參數值,就需要使用變量參數,即在被調用程序的參數表中的形參前加上保留字var。當一個變量參數被傳遞時,任何對形參所作的改變會反映到實參中,這是因爲兩個參數指向同一個地址。
如果當過程或函數執行時要求不改變形參的值,則最保險的辦法是使用常量參數。在形式參數表的參數名稱前加上保留字const可以使一個形參成爲常量參數。使用常量參數代替數值參數可以保護用戶的參數,使用戶在不想改變參數值時不會意外地將新的值賦給這個參數。
       作用域
對於在程序中出現的變量,根據定義域的不同,擁有不同的作用域:
全局變量是在主程序中定義的變量。
局部變量是在過程或函數中定義的變量。
全局變量對於整個程序均適用,局部變量只對定義它的過程或函數有效。
Object Pascal語言對於變量的作用域有如下約定:
在不同層次可以定義使用同名變量,但在同一層中1個變量只能定義1次。
      同名變量在不同層次被定義時,代表不同的對象。執行內層程序時,外層的非局部變量雖然存在,卻已經被屏蔽;而當程序從內層退出後,內層的局部變量就已經不存在,只有外層的那個非局部變量仍然存在。
          類與對象
從用戶角度考慮,用戶並不需要了解面向對象編程的知識,就可編寫Delphi應用程序。當用戶在建立新窗體、添加新組件以及處理事件時,大部分相關代碼會由Delphi自動產生。但是,知道語言及其細節,對理解Delphi正在做什麼並完全掌握它是很有幫助的。特別是有關類的概念及用法是後面學習組件編程以及Delphi深入編程的基礎。
類和對象是兩個常用的術語,然而經常容易混淆,因此須要區分它們的定義。
    類
類與前面介紹的記錄類似,也是包含有各種域的結構化數據類型,然而,類包含方法。方法就是操縱對象域數據的過程或函數。類類型把數據和方法封裝在一起。
一個類是一個數據類型。類就像記錄一樣,是一種數據結構。按最簡單的理解,可以將類理解成一個記錄。但實際上,類是一種定義不確切的術語,它常用來定義抽象的事務,是構成應用程序的項目,其內涵遠比記錄要豐富。在本書中,類經常可以被理解爲可視化組件,如按鈕、標籤、表等。
瞭解類,最關鍵的是掌握類的特性。一個類,其最突出的特徵有3個:封裝性、繼承性、多態性。
(1)封裝性
對類最基本的理解是,類把數據和代碼組合在同一個結構中,這就是類的封裝性。將類的數據域封閉在類的內部,使得外部程序必須使用正確的方法才能對要讀寫的數據域進行訪問。封裝性意味着數據和代碼一起出現在同一結構中,只有用類的方法才能接觸到內部的私有數據。
(2)繼承性
繼承性的含義直接而且顯然,它是指把一個新的類定義成已存在類的後代。新類通過繼承得到了舊類的一切東西。在往新類中添加任何新內容以前,父類的每一個屬性和方法都已存在於子類中,父類是創建子類的基石。
(3)多態性
多態性是在類體系中把設想和實現分開的手段。如果說繼承性是系統的佈局手段,那麼多態性就是實現其功能的方法。多態性意味着同樣的動作可以由多種方式來實現,這取決於執行該動作的類。多態性允許以類似的方式處理類體系中類似的類。根據特定的任務,一個應用程序被分解成許多類,多態性把高級設計處理的設想,如新類的創建、類在屏幕上的顯示、程序運行的其他抽象描述等,留給知道該如何處理它們的類去實現。
在Object Pascal中,聲明類類型使用保留字Class。類類型可以指定一個祖先類型,表示該類型是從這個指定的祖先類型繼承下來的,例如:
Type
  TMyObject=Class(TObject)
上例聲明瞭一個名叫TMyObject的類類型,該類型是從類TObject繼承下來的。注意,類類型的標識符一般以“T”打頭,以區別於其他數據類型。另外,在Delphi中,大量的構造數據類型都是以“T”打頭的。如果不指明祖先類,Delphi默認該類繼承自TObject類。
       對象
對象是類的實例(instance),即由類定義的數據類型的變量。對象是實體,當程序運行時,對象佔用一些內存。對象與類的關係就像變量與類型的關係。
例如,針對上文聲明的類TMyObject,可以聲明它的一個實例:
var
Aobject : TMyObject;
然後通過Aobject.屬性或Aobject.方法就可以實現對這個對象的屬性或方法的訪問。
                        學好Delphi要從掌握傳統的Pascal語言及理解面向對象的編程思想兩方面入手

要注意程序的可讀性,在程序中選擇合適的縮排、大小寫風格,並在需要時將程序代碼分行

Object Pascal有多個預定義的數據類型,用戶可以隨意聲明這些類型的變量

Object Pascal的語句分爲兩類:簡單語句和構造語句

簡單語句是指不包括其他語句的語句,構造語句由簡單語句按照一定的規則構造而成

如果一組語句能夠完成某一功能,那麼就把它定義爲一個過程;如果要完成的功能是爲了進行一系列處理之後返回一個值,那麼就可以把它定義爲一個函數

面向對象的編程語言基於3個基本概念:類、繼承及多態。類就像記錄一樣,是一種數據結構

單元是源程序代碼的載體,帶有.pas擴展名

Delphi提供了一系列組件,正是這些組件構成了Delphi面向對象程序設計的基礎。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章