1. 程式人生 > >【轉】Pascal用到的數和符號

【轉】Pascal用到的數和符號

1、PASCAL語言的字元表

是ASCII字符集,主要有:

 ⑴26個英文字母(不分大小寫)

 ⑵十個數字符號

 ⑶特殊符號。如+-*/=><][:;.等

2、識別符號

以字母開頭的字母數字序列(大小寫等效,可跟下劃線_),用來標識常量、變數、程式、函式等。

自定義識別符號時要注意遵循此規則。

3、標準識別符號與保留字

標準識別符號有40個,五類(false true maxint Boolean real integer char abs trunc read write)詳見書P16。

保留字是Pascal語言中具有特定的含義的字元。在PASCAL7.0中書寫保留字的時候,字元顏色會變為白色。
一共36個保留字:
(program function begin end procedure var const array if then else case for to do repeat until while and div in mod not or nil

4、常量和變數:

程式設計中經常要用到常量和變數,這些都必須先定義後才能使用。

PASCAL語言的常量與變數都必須在程式頭部先加以說明,即說明常量、變數的的名稱及資料型別。
PASCAL語言的資料型別很多,最常用的有以下幾種:

  • 整數型別(沒有小數部分)

INTEGER:取值範圍 [-32768, 32767]。佔用記憶體 2個位元組( 16位)。

WORD:取值範圍 [0, 65535]。佔用記憶體 2個位元組( 16位)。

BYTE:取值範圍 [0, 255]。佔用記憶體 1個位元組( 8位)。

LONGINT:取值範圍 [-2147483648, 2147483647]。佔用記憶體 4個位元組( 32位)。

SHORTINT:取值範圍 [-128, 127]。佔用記憶體 1個位元組( 8位)。

特點:

  1. 可進行+、-、*、DIV(整除)、MOD(取餘)
  2. 注意不能用/,因為得到的結果可能不為整型。
  • 實數型別

REAL:取值範圍 [2.9E-39, 1.7E+38]。佔用記憶體 6個位元組( 48位)。

實數的表示法有兩種:

1、十進位制表示法,如: -0.4576, 123.567, -234, 0

2、科學計數法,如: 1.234E-4, -3.546E12

表示 1.234乘 10的負 4次 .方; -3.546乘 10的 12次方。

特點:

  1. 包括正實數、負實數和零。運算慢,無法精確表示。
  2. 可進行+、-、*、/運算。整數與實數運算時自動轉為實數進行運算。
  • 字元型別

CHAR:單字元型,即取 1個字元,如‘ A’, ‘ 1’。

STRING:字串型,即多個字元,如‘ ABCD! 123’,‘ %¥ #DS12’。

如果一個常 /變數只要用到 1個字元,則可把它定義成 CHAR型;如果是多個字元,但不知確切多少個,則定義成 STRING型,如果知道確切有 N個字元,則定義成 STRING[N]型。字串在 PASCAL中使用都是加上單引號。

特點:

  1. 字元常 /變數是由單個字元組成的,所有字元都來自ASCII字符集。字元的資料是用兩個單引號把單個字元括起來表示的。
  2. 每個字元都有一個序值(在ASCII字符集的位置),可以用六個關係運算符(>,=,<,>=,<=,!=)來比較大小。
  • 布林型

BOOLEAN:布林型即為邏輯型,取值為 TRUE、 FALSE, 即真、假。也有序,true 為1,false為0。

      布林型有三個運算子:and or not

常量:指程式執行過程中,其值不能改變的量。 在程式頭部中說明,以 CONST引導。

分為四類:

⑴整型常量

⑵實型常量

⑶字元常量

⑷布林型常量

格式:
   const <常量識別符號>=<常量>;
  例:const pi:=3.14;

變數:是指在程式執行過程中,其值可以改變的量。 在程式頭部中加以說明,以 VAR引導。

變數三要素:變數名、變數型別、變數值。

⑴變數名用一個合法的識別符號來表示。

⑵變數在某一固定時刻是用來存放常量的,而常量是有型別的資料,因而變數也是有型別的。型別不能有兩義性。

⑶變數值。在程式中由賦值語句來賦值。

var <變數識別符號列表>:<型別>;
   例:var a,b:integer; c,d:real;

5、表示式

由算術運算子( +,—, *, /)及數字、常量、變數、標準函式所組成的式子中心表示式。

如: 5+9; A*B-34*ABS( -34) /INT( B)

另外, PASCAL中有兩個很有用的運算子, DIV:求商的整數值; MOD:求餘數。如:

8 DIV 3 的值是 2, 10 DIV 3 的值是 3;

8 MOD 3的值是 2, 10 MOD 3的值是 1;

在 PASCAL的表示式中,不允許出現我們日常生活中的那種分式或根號等式子,我們必須按照 PASCAL的語法把它們改寫成 PASCAL表示式。

Pascal語言中的運算子及其優先順序

單目運算子 (最高優先順序) @ 取變數或函式的地址(返回一個指標) not 邏輯取反或按位取反 乘除及按位運算子 * 相乘或集合交集 / 浮點相除 div 整數相除 mod 取模 (整數相除的餘數) as 程式執行階段型別轉換 (RTTI運算子) and 邏輯或按位求和 shl 按位左移 shr 按位右移 加減運算子 + 相加、集合並集、字串連線或指標增加一個偏移量 - 相減、集合差集或指標減少一個偏移量 or 邏輯或按位或運算 xor 邏輯或按位異或運算 關係及比較運算子(最低優先順序) = 判斷是否相等 <> 判斷是否不相等 < 判斷是否小於 > 判斷是否大於 <= 判斷是否小於或等於,或是否是一個集合的子集 >= 判斷是否大於或等於,或是否是一個集合的父集 in 判斷是否是集合成員 is 判斷物件是否型別相容 (又一個RTTI運算子)

具體優先順序:

⑴括號內先算

⑵函式

⑶運算子優先順序

⑷同級運算按從左到右的次序。

注意:

1、與大多數程式語言相反,Pascal語言中and和or運算子的優先順序比關係運算符高。因此,如果你的程式碼為a < b and c < d,編譯器首先會編譯and運算子,由此導致編譯出錯。為此你應該把每個 < 表示式用小括號括起來: (a < b) and (c < d)。 
2、 同一種運算子用於不同資料型別時它的作用不同。例如,運算子 + 可以計算兩個數字的和、連線兩個字串、求兩個集合的並集、甚至給PChar 指標加一個偏移量。然而,你不能象在C語言中那樣將兩個字元相加。
3、 另一個特殊的運算子是 div。在Pascal 中,你能用 / 計算兩個數字(實數或整數)的商,而且你總能得到一個實型結果。如果計算兩個整數的商並想要一個整型結果,那麼就需要用 div 運算子。

  • 運算子兩端,除實型和整數型外不允許為兩種不同的資料型別。
  • PASCAL表示式中沒有分式,只能以除號“ /”來隔開;
  • PASCAL表示式中的分子與分母應該用括號括開;
  • PASCAL表示式中只有小括號,不能有中括號或大括號,小括號可以有很多層;
  • PASCAL表示式中沒有乘冪,只能用乘法來表達;
  • PASCAL*表示式中任意兩個常量、變數、數值、括號、函式之間都必須不能預設運算子,即乘號必不可少;

這些要求希望大家記熟,這是我們編寫 PASCAL程式的必要基礎。

表示式的資料型別根據它的值來劃分。(所以表示式分為算術表示式、字元表示式、布林表示式)

6、標準函式的使用。

PASCAL語言提供數量非常大的標準函式供我們使用,這些函式有些可以直接呼叫,有些放在另外的單元( UNIT)中。 PASCAL也提供了大量的標準過程,和標準函式一樣供使用者直接或間接呼叫。

如果一個函式或過程不在 SYSTEM(即預設呼叫的單元)中,而在其它單元中話,即在程式頭部的第一行正式行中加上 USES 單元名;如,如果要使用 CLRSCR(清屏過程,在 DOS單元中)的話,就必須在程式頭部加上: USES DOS;

函式的呼叫:如: A: =ABS( -34),即把 -34的絕對值賦給變數 A;(注意:函式只能出現在表示式中,即賦值語句中)。此時: A的資料型別與括號中的引數 -34是一致的。函式的語法中都會說明,這個函式的引數的型別及這個函式的值(結果)的型別。

過程的呼叫:過程即命令,如: CLRACR; 程式執行結果是清屏。

常用標準函式與過程很多,這裡只列出最常用的幾個。

標準函式

函式名

語法

說明

Abs

Abs ( r:real/integer) :real/integer

返回引數 R的絕對值,型別與引數相同

Chr

chr ( i: integer): char

返回引數所對應的 ASCII碼值,型別為 CHAR

Copy

Copy(s:string;n,m:integer):string

返回字串 S的第 N個字元開始的 M個字元

Cos

Cos(r:real):real

返回引數 R的餘弦值

Exp

Exp(r:real):real

返回引數 R的以 e為底的冪

Int

Int(r:real):real

返回引數 R的整數部分,返回的值是實數型別

Length

Length(s:string):integer

返回字串 S的長度

Ln

Ln(r:real):real

返回引數 R的自然對數

odd

Odd(I:integer):boolean

判斷引數 I是否奇數,如是,則返回 TRUE

ord

Ord(s:scalar):integer

返回任意有序量的序值

random

Random

返回 0至於間的任意一個小數(隨機數)

round

Round(r:real):longint

返回引數 R的四捨五入取整值

sin

Sin(r:real):real

返回引數 R的正弦值

sqrt

sqrt(r:real):real

返回引數 R的平方根

sqr 返回引數 R的平方

trunc

Trunc(r:real):integer

返回引數 R的整數部分,返回的值是整數型別

標準過程

過程名

語法

說明

Delay (CRT 單元 )

Delay(ms:word)

延遲發聲 MS毫秒

Delete

Delete(s:string;n,m:integer)

把串 S中的第 N個字元開始的 M個字元刪除

Exit

Exit

從當前執行的程式中退出

Gotoxy (CRT 單元 )

Gotoxy(x,y:integer)

把游標定位到第 X列 Y行處

halt

Halt

中斷程式的執行

nosound

Nosound

關閉機器喇叭

Sound (CRT 單元 )

Sound(f:word)

讓機器喇叭發出頻率為 F的聲音,直到 nosound

str

Str(I:integer;var s:string)

把數值 I轉換為字串 S

val

Val(s:string;var r:real;var c:word)

把字串 S轉換為數值 R,並返回錯誤程式碼 C