項(xiàng)目OMS即將啟動(dòng)了,我是其中的一分子,這是我第一次參加新的項(xiàng)目;當(dāng)然"磨刀不誤砍柴功",首先我去把Delphi的祖母Pascal研究了一番,現(xiàn)在明白為什么Pascal會(huì)成為經(jīng)典的教學(xué)語(yǔ)言.的確是有它的優(yōu)點(diǎn)的.看起來(lái)Pascal的確是很舒服的.在下面我對(duì)一些Pascal知識(shí)做了記錄;
一、Pascal代碼書(shū)寫(xiě)規(guī)范:
1.注釋規(guī)范
? {? ... code
? //this comment is OK
? ... code }
2.標(biāo)識(shí)符規(guī)范
一個(gè)常用的方法是將每個(gè)標(biāo)識(shí)符的第一個(gè)字母大寫(xiě),標(biāo)識(shí)符若由幾個(gè)詞組合而成(中間不能插入空格),每個(gè)詞的第一個(gè)字母應(yīng)大寫(xiě)
? eg:MyName
二、Pascal代碼一些特性:
1. 優(yōu)先級(jí)
與大多數(shù)編程語(yǔ)言相反,Pascal語(yǔ)言中and和or運(yùn)算符的優(yōu)先級(jí)比關(guān)系運(yùn)算符高。
? a < b and c < d?? ===============> False
? (a < b) and (c < d) =============> True
2. 類(lèi)型 變量 常量 資源串常量
變量使用var標(biāo)識(shí)?
? var
??? MyName: String;
常量使用const標(biāo)識(shí)???
? const
??? MyName :String = 'liweichi';
資源串常量使用 resourcestring標(biāo)識(shí) ,指令定義的字符串變量將被保存到程序資源的字符串表中。
?? recourcestring
???? AuthorName = 'liweichi';
3. 數(shù)據(jù)類(lèi)型
有序類(lèi)型(基本類(lèi)型)
? Integer
? Boolean
? Char
實(shí)數(shù)類(lèi)型
? Double
字符串類(lèi)型
? string
用戶(hù)自定義類(lèi)型
? 子界類(lèi)型
? 數(shù)組類(lèi)型
? 記錄類(lèi)型
? 枚舉類(lèi)型
? 指針類(lèi)型
? 集合類(lèi)型
? 類(lèi)
type
? Uppercase = 'A'..'Z';? //子界
? Temperatures = array[1..25] of Integer;? //數(shù)組
? Date = record? //記錄
??? Month: Byte;
??? Day: Byte;
??? Year: Integer;
?? end;
?
?? Colors = (Red,Yellow,Green,Blue,Violet);? //枚舉
??
?? Letters = set of Char;? //集合
?? var
???? P: ^Integer; //指針
???? X: Integer;
?? begin
???? P := @X;
???? P^ := X;
4. 語(yǔ)句方面
if .. then .. else
eg:
? if CheckBox1.Checked then
??? ShowMessage('CheckBox1 has been Checked.')
? else
??? ShowMessage('CheckBox1 donot been Checked.')
? end;
?
while ..
eg:
? while (I <= 20) do
? begin
??? I := I + 1;
? end;
repeat....until
eg:
? repeat I := I + 1;
? until (I > 100);
with....
eg:
//define the variable type
? type
??? Date = record
???? Year: Integer;
???? Month: Byte;
???? Day: Byte;
? end;
//define the type variable
? var
??? BirthDay: Date;
//inital value assign
? begin
??? BirthDay.Year := 1997;
??? BirthDay.Month := 2;??
??? BirthDay: Day := 21;
//use the with.. sentence to replace it
? begin
??? with BirthDay do
???? begin
?????? Year := 1997;
?????? Month := 2;
?????? Day := 21;
三. 過(guò)程與函數(shù)
procedure and function
1. 函數(shù)的值傳遞和引用傳遞
//值傳遞;? 定義返回的值類(lèi)型,使用與函數(shù)名相同的變量作返回
function Double01 (Value: Integer) : Integer;
begin
? Double01 := Value * 2;
end;
//值傳遞; 使用Result作為返回值,這個(gè)是推薦使用的
function Double02 (Value: Integer) : Integer; begin
? Result := Value * 2;
end;
//引用傳遞;定義一個(gè)函數(shù)
procedure DoubleTheValue (var Value: Integer);
begin
? Value := Value * 2;
end;
//調(diào)用上面的函數(shù),運(yùn)行結(jié)果X=20;
var?
? X: Integer;
begin
??X := 10;
? DoubleTheValue(X);
end;
2. 開(kāi)放數(shù)組參數(shù)
一個(gè)開(kāi)放數(shù)組參數(shù)就是一個(gè)固定類(lèi)型開(kāi)放數(shù)組的元素。 也就是說(shuō),參數(shù)類(lèi)型已定義,但是數(shù)組中的元素個(gè)數(shù)是未知數(shù)。
eg:
//定義一個(gè)開(kāi)放數(shù)組參數(shù)的函數(shù)
function Sum(const A:?array of Integer):? Integer
var
? I: Integer;
begin
? Result := 0;
? for I := Low(A) to High(A) do
????Result := Result +?A(I);
end;
//在程序中調(diào)用這個(gè)開(kāi)放數(shù)組參數(shù)函數(shù)
X := Sum([10, Y, 27*I]);
//或者
var
? List: array[1..10] of Integer;;
? X,?I:?Integer;
begin
? //初始化數(shù)組
?? for I :=?Low(List) to High(List) do
?????? List[I] := I * 2;
? X := Sum(List);
//或者使用Slice傳遞部分的數(shù)組過(guò)去,Slice函數(shù)的第二個(gè)參數(shù)是表示傳遞多少個(gè)數(shù)組過(guò)去
X :=?Sum(Slice(List));
??
??