Pascal - 變數型別



變數只不過是賦予程式可以操作的儲存區域的名稱。Pascal 中的每個變數都有一個特定型別,該型別決定變數記憶體的大小和佈局;可以儲存在該記憶體中的值的範圍;以及可以應用於變數的操作集。

變數名可以由字母、數字和下劃線組成。它必須以字母或下劃線開頭。Pascal **不區分大小寫**,因此此處大寫字母和小寫字母含義相同。基於上一章解釋的基本型別,將有以下基本變數型別:

Pascal 中的基本變數

序號 型別和描述
1

字元

通常是一個八位位元組(一個位元組)。這是一個整數型別。

2

整數

機器最自然的整數大小。

3

實數

單精度浮點數。

4

布林值

指定真或假邏輯值。這也是一個整數型別。

5

列舉

指定使用者定義的列表。

6

子範圍

表示值位於一定範圍內的變數。

7

字串

儲存字元陣列。

Pascal 程式語言還允許定義各種其他型別的變數,我們將在後續章節中介紹,例如指標、陣列、記錄、集合和檔案等。對於本章,讓我們只學習基本變數型別。

Pascal 中的變數宣告

在 Pascal 程式中使用所有變數之前,必須先宣告它們。所有變數宣告都以 *var* 關鍵字開頭。宣告指定變數列表,後跟冒號 (:) 和型別。變數宣告的語法如下:

var
variable_list : type;

此處,type 必須是有效的 Pascal 資料型別,包括字元、整數、實數、布林值或任何使用者定義的資料型別等,variable_list 可以包含一個或多個用逗號分隔的識別符號名稱。此處顯示一些有效的變數宣告:

var
age, weekdays : integer;
taxrate, net_income: real;
choice, isready: boolean;
initials, grade: char;
name, surname : string;

在之前的教程中,我們討論過 Pascal 允許宣告型別。型別可以用名稱或識別符號來標識。此型別可用於定義該型別的變數。例如:

type
days, age = integer;
yes, true = boolean;
name, city = string;
fees, expenses = real;

現在,可以將如此定義的型別用於變數宣告:

var
weekdays, holidays : days;
choice: yes;
student_name, emp_name : name;
capital: city;
cost: expenses;

請注意 *type* 宣告和 *var* 宣告之間的區別。型別宣告表示型別的類別或種類,例如整數、實數等,而變數規範表示變數可能取值的型別。您可以將 Pascal 中的 *type* 宣告與 C 中的 *typedef* 進行比較。最重要的是,變數名稱指的是將儲存變數值的記憶體位置。型別宣告並非如此。

Pascal 中的變數初始化

變數使用冒號和等號賦值,後跟一個常量表達式。賦值的一般形式為:

variable_name := value;

預設情況下,Pascal 中的變數不會初始化為零。它們可能包含垃圾值。因此,在程式中初始化變數是一個更好的做法。可以在宣告中初始化變數(分配初始值)。初始化在 **var** 關鍵字之後,初始化語法如下:

var
variable_name : type = value;

以下是一些示例:

age: integer = 15;
taxrate: real = 0.5;
grade: char = 'A';
name: string = 'John Smith';

讓我們來看一個示例,它使用了迄今為止討論的各種型別的變數:

program Greetings;
const
message = ' Welcome to the world of Pascal ';

type
name = string;
var
firstname, surname: name;

begin
   writeln('Please enter your first name: ');
   readln(firstname);
   
   writeln('Please enter your surname: ');
   readln(surname);
   
   writeln;
   writeln(message, ' ', firstname, ' ', surname);
end.

編譯並執行上述程式碼後,將產生以下結果:

Please enter your first name:
John
Please enter your surname:
Smith
Welcome to the world of Pascal John Smith

列舉變數

您已經瞭解瞭如何使用簡單的變數型別,例如整數、實數和布林值。現在,讓我們看看列舉型別的變數,它可以定義為:

var
var1, var2, ...  : enum-identifier;

宣告列舉型別後,可以宣告該型別的變數。例如:

type
months = (January, February, March, April, May, June, July, August, September, October, November, December);
Var
m: months;
...
M := January;

以下示例說明了該概念:

program exEnumeration;
type
beverage = (coffee, tea, milk, water, coke, limejuice);

var
drink:beverage;

begin
   writeln('Which drink do you want?');
   drink := limejuice;
   
   writeln('You can drink ', drink);
end.

編譯並執行上述程式碼後,將產生以下結果:

Which drink do you want?
You can drink limejuice

子範圍變數

子範圍變數宣告如下:

var
subrange-name : lowerlim ... uperlim;

子範圍變數的示例:

var
marks: 1 ... 100;
grade: 'A' ... 'E';
age: 1 ... 25;

以下程式說明了該概念:

program exSubrange;
var
marks: 1 .. 100;
grade: 'A' .. 'E';

begin
   writeln( 'Enter your marks(1 - 100): ');
   readln(marks);
   
   writeln( 'Enter your grade(A - E): ');
   readln(grade);
   
   writeln('Marks: ' , marks, ' Grade: ', grade);
end.

編譯並執行上述程式碼後,將產生以下結果:

Enter your marks(1 - 100): 
100
Enter your grade(A - E):
A
Marks: 100 Grade: A
廣告