Tải bản đầy đủ - 219 (trang)
CÁC YẾU TỐ CƠ SỞ CỦA NGÔN NGỮ PASCAL

CÁC YẾU TỐ CƠ SỞ CỦA NGÔN NGỮ PASCAL

Tải bản đầy đủ - 219trang

Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



4.2. Các thành phần cơ bản của ngôn ngữ PASCAL

4.2.1 Bộ ký tự cơ bản

Mỗi ngôn ngữ đều được xây dựng từ một tập ký tự nào đó. Nhiều ký tự nhóm lại với nhau

tạo nên các từ. Nhiều từ liên kết với nhau theo một qui tắc ngữ pháp nhất định (gọi là văn phạm)

thì tạo nên các mệnh đề. Trong các ngôn ngữ lập trình , mệnh đề còn được gọi là câu lệnh. Một

tập hợp các câu lệnh được sắp xếp theo một trật tự nhất định nhằm chỉ thị cho máy các thao tác

phải thực hiện tạo thành một chương trình. Các chương trình được soạn thảo bởi người lập trình

và được lưu trữ trên đĩa dưới dạng các tập tin.

Ngôn ngữ Pascal được xây dựng trên bộ ký tự cơ bản, gồm:

- Các chữ cái la tinh: A, B, C,...,Z, a, b, c,..., z

- Các chữ số : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

- Các ký hiệu đặc biệt: +, -, *, /, =, <, {, }, [, ], %, $, &, #, ...

- Ký tự gạch nối ‘_’ và ký tự trắng ‘ ‘ ( space)

- Các chữ ả rập:  ,  ,  , ... không thuộc bộ ký tự của Pascal.



4.2.2 Từ khóa ( key word )

Có một số từ được Pascal dành riêng cho việc xây dựng các câu lệnh, các khai báo, các

phép tính,... gọi là từ khóa. Việc sử dụng các từ khóa đòi hỏi phải tuân thủ đúng quy tắc đề ra, và

đặc biệt là người lập trình không được đặt một tên mới (tên biến, tên hằng, tên hàm, tên thủ

tục,...) trùng với một trong các từ khóa. Dưới đây là danh sách các từ khóa của Pascal :

absolute, and, array, begin, case, const, div, do,

downto, else, end, file, for, forward, function, goto,

if, implementation, in, inline, interface, interrupt,

label, mod, nil, not, of, or, packed, procedure, program,

record, repeat, set, shl, shr, string, then, to, type,

unit, until, uses, var, while, with, xor

Các từ khóa có thể viết dưới dạng chữ hoa hay chữ thường hay xen kẽ chữ hoa với

chữ thường đều được. Ví dụ viết begin hay Begin hay BEGIN là như nhau.



4.2.3 Tên (identifier)

Các biến, các hằng, các hàm, các thủ tục, ... được sử dụng trong chương trình đều cần phải

đặt tên, còn gọi là định danh hay danh hiệu.

Các tên này do người lập trình tự đặt và phải đảm bảo đúng quy tắc:

- Tên chỉ gồm chữ số, chữ cái và dấu gạch nối (gạch dưới ‘ _ ’)

- Không bắt đầu bởi một chữ số

- Không trùng với từ khóa

- Chiều dài của tên tối đa là 127 ký tự.

Giáo trình Tin học đại cương



86



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



- Thông thường tên nên đặt ngắn gọn và có tính gợi nhớ.

Ví dụ về các tên được đặt đúng:

Delta, X1, X2, i, j , Chuc_vu, Luong, So_luong, Don_gia.

Các tên được đặt sai:

3ABC, In, Chu vi, Ma-so

vì :

3ABC: bắt đầu bằng số

Chu vi: có chứa ký tự trắng

Ma-so : ký tự ‘-’ là dấu trừ chứ không phải gạch nối.

In : trùng với từ khóa In

Cũng giống như từ khóa, Tên không phân biệt viết hoa hay viết thường.

Ví dụ viết X1 hay x1 cũng chỉ là một tên thôi.

Trong Pascal có một số tên đã được đặt sẵn rồi, gọi là tên chuẩn, chẳng hạn:

Abs, Arctan, Boolean, Byte, Char, Cos, Copy, Delete,

Eof, False, Longint, Ord, Integer, Real, Readln,

Writeln, True, Text, ...

Mặc dù người lập trình có thể đặt một tên mới trùng với một trong các tên chuẩn, song, để đỡ

nhầm lẫn, chúng ta nên tránh điều này.



4.2.4. Các dấu đặc biệt

-



Dấu kép: cặp các dấu viết liền nhau

ví dụ: <=; >=; :=; …

Dấu “;” ngăn cách các câu lệnh.

Dấu chú thích sử dụng bao các câu là lời giải thích cho các đoạn của chương trình và các

câu chú thích được chương trình dịch bỏ qua trong quá trình dịch. Có thể viết dòng chú

thích tại bất cứ vị trí nào trong chương trình mà có thể để dấu cách và theo cú pháp:

(* lời chú thích *) hoặc { lời chú thích }



4.3. Các kiểu dữ liệu đơn giản

4.3.1 Khái niệm

Chức năng của máy điện toán là xử lý các thông tin. Các thông tin được nhập và lưu trữ

trong bộ nhớ của máy dưới các dạng khác nhau: có thể là số, là chữ, có thể là hình ảnh, âm

thanh,.v.v. mà thuật ngữ tin học gọi chung là dữ liệu. Tính đa dạng của dữ liệu đòi hỏi phải tổ

chức và phân phối bộ nhớ thích hợp để lưu trữ và xử lý tốt các dữ liệu. Ngôn ngữ lập trình chia

các dữ liệu thành từng nhóm riêng trên đó xây dựng một số phép toán tạo nên các kiểu dữ liệu

khác nhau, mỗi kiểu dữ liệu là một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận.

Khi một biến được khai báo thuộc kiểu dữ liệu nào thì máy sẽ dành cho biến đó một dung lượng

thích hợp trong bộ nhớ để có thể lưu trữ các giá trị thuộc kiểu dữ liệu đó.

Giáo trình Tin học đại cương



87



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



4.3.2. Phân loại các kiểu dữ liệu trong Turbo Pascal

Trong Pascal, ngôn ngữ lập trình cấu trúc nên có thể chia các kiểu dữ liệu thành hai loại là:

- Kiểu dữ liệu đơn giản là những kiểu dữ liệu cơ sở nhất, không thể phân chia nhỏ hơn nữa

thành một số thành phần có nghĩa.

- Kiểu dữ liệu có cấu trúc là những kiểu dữ liệu được xây dựng bằng cách ghép một số dữ liệu

đơn giản theo cấu trúc cú pháp xác định.

Với mỗi kiểu dữ liệu đơn giản hay cấu trúc lại có thể phân thành những kiểu khác nhau đó là

- Kiểu dữ liệu có sẵn: là những kiểu đã được xây dựng sẵn với các tính chất hoàn toàn xác

định, ta có thể sử dụng ngay mà không cần phải bổ xung, sửa chữa gì. Ta có thể gọi các kiểu

dữ liệu đó là các kiểu dữ liệu chuẩn.

Ví dụ như các kiểu nguyên, các kiểu thực, kiểu ký tự, kiểu logic,

- Kiểu dữ liệu chưa có sẵn, những kiểu dữ liệu mà khi cần sử dụng tới là người lập trình phải

tự xây dựng tùy theo mục đích của người sử dụng.



Chuẩn

Đơn

giản



Các

kiểu

dữ

liệu



Do người

dùng

định

nghĩa



Mô tả

sẵn



Logic (boolean)

Ký tự (char)

Nguyên (integer)

Thực (real)



Đoạn con (sub range)

Liệt kê (enumerate)



Xâu ký tự (string)

Mảng (array)

Tập hợp (set of)

Bản ghi (record)

Tệp (file)



Có cấu

trúc

Do người

dùng

định

nghĩa



Giáo trình Tin học đại cương



Ngăn xếp (stack)

Hàng đợi (queue)

Danh sách (list)

Cây (tree)

….





88



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



4.3.3 Kiểu số nguyên

4.3.3.1. Khái niệm: Kiểu nguyên là một kiểu số hữu hạn và đếm được có miền giá trị phụ thuộc

vào số byte được cấp phát.

4.3.3.2 Các kiểu số nguyên

Tên kiểu



Phạm vi giá trị



Số byte



Giải thích



ShortInt



-128 .. 127



1



1 bit chứa dấu, 7 bit chứa giá trị



Byte



0..255



1



8 bit chứa giá trị



Integer



-32768 .. 32767



2



1 bit chứa dấu, 15 bit chứa giá

trị



Word



0 .. 65535



2



16 bit chứa giá trị



LongInt



-2147483648 .. 2147483647



4



1 bit chứa dấu, 31 chứa giá trị



Bảng 3.1. các kiểu số nguyên

Ngoài kiểu Integer là thông dụng nhất, các số nguyên còn được chia ra thành 4 kiểu nữa đó

là: Byte, Word, ShortInt và LongInt. Bảng 3.1 liệt kê chi tiết về tên gọi, phạm vi giá trị và độ dài

tính theo đơn vị byte của từng kiểu nguyên.

Các biến nguyên chỉ có thể nhận các giá trị là các số nguyên nằm trong phạm vi giá trị của

biến đó. Khi gán cho một biến một số nguyên nằm ngoài phạm vi của biến thì máy sẽ báo lỗi:

"Const out of range".

Ví dụ 4.1: cho khai báo :

Var

i : Byte;

N : Integer;

thì các lệnh đưới đây là đúng:

i:= 200;

N:= -1500;

còn các lệnh dưới đây là bị lỗi :

i:= -5;

N:= 50000;

Đặc biệt không thể gán một số thực cho một biến nguyên. Câu lệnh sau là sai :

N:= 12.5 ;

Khi gặp tình huống này, máy sẽ báo lỗi "Type mismatch".

Chú ý: Các số nguyên hệ thập lục phân (hệ 16) được biểu diễn bằng cách viết thêm dấu $ ở trước

số, ví dụ ba số dưới đây :

$A , $FF và $10

là các số nguyên viết trong hệ 16. Chúng có giá trị tương ứng trong hệ 10 là:

10 , 255 và 16

Giáo trình Tin học đại cương



89



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



4.3.3.3 Các phép toán số học trên số nguyên

Phép cộng và trừ : ký hiệu + và - như thường lệ.

Phép nhân : ký hiệu bằng dấu *, ví dụ 4*2 cho kết qủa là 8.

Phép chia : ký hiệu bằng dấu / , ví dụ 6/4 cho kết qủa là 1.5.

Phép chia lấy phần nguyên : ký hiệu bằng từ khóa DIV.

Phép lấy phần dư nguyên của phép chia: ký hiệu bằng từ khóa MOD.

Ví dụ 4.2: 15 DIV 6 cho kết qủa là 2.

15 MOD 6 cho kết qủa là 3.

Các phép toán trên đều cho kết qủa là các số nguyên, trừ ra phép chia ( / ) luôn cho kết qủa là

một số thực. Vì thế nếu N là một biến nguyên, mà gán :

N:= 20/5;

thì máy sẽ báo lỗi, bởi vế phải có giá trị kiểu thực (=4.0) mặc dù phần lẻ bằng 0.

Nhận xét: số nguyên N là chẵn nếu N mod 2 = 0 (tức N chia hết cho 2),

ngược lại, là lẻ nếu N mod 2 <> 0. (dấu <> trong Pascal có nghĩa là khác nhau ).

Thứ tự thực hiện các phép toán cũng giống như thường lệ:

- Các biểu thức trong (...) được tính trước tiên

- Kế đến là *, /, div, mod

- Sau cùng là +, - Đối với các phép toán cùng thứ tự mà đứng liền nhau thì phép toán nào đứng

trước.

Ví dụ 4.3: tính biểu thức sau :

15 mod (2 +4) * 20 div (10 div 4) + 40 mod ( 5* 3)

=15 mod 6 * 20 div 2 + 40 mod 15

= 3 * 20 div 2 + 10

= 60 div 2 + 10

= 30 + 10

= 40



trước được làm



4.3.4 Kiểu số thực

4.3.4.1 Kiểu Real và các kiểu mở rộng

Kiểu Real là kiểu số thực thông dụng nhất dùng để biểu diễn các số thực x có trị tuyệt đối |x|

nằm trong khoảng từ 2.9*10-39 đến 1.7*10+38. Nếu |x| > 1.7*10+38 thì không biểu diễn x trong

máy được, còn nếu | x| < 2.9*10-39 thì x được coi là bằng 0.

Có hai cách biểu diễn các số thực:

- Cách 1: Viết bình thường, trong đó dấu phẩy thập phân được thay bằng dấu chấm thập phân, ví

dụ như: 45.0 -256.45 +122.08

- Cách 2: Viết số dưới dạng khoa học :

1.257E+01 (có giá trị = 1.257*101 = 12.57 )

1257.0E-02 (có giá trị = 1257*10-2 = 12.57 )

Giáo trình Tin học đại cương



90



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Trong dạng này số gồm có hai phần, phần đứng trước E gọi là phần định trị, được viết theo

cách 1, phần đứng sau E gọi là phần bậc, gồm dấu cộng hoặc trừ, tiếp đến là một số nguyên.

Số viết theo cách 1 còn gọi là số có dấu chấm thập phân cố định, số viết theo cách 2 còn gọi

là số có dấu chấm thập phân di động hay số dạng khoa học (Scientific).

Ví dụ 4.4: Muốn khai báo hai biến x, y kiểu real, ta viết:

Var x, y : Real;

Ngoài kiểu Real ra, các số thực còn có 4 kiểu mở rộng nữa là Single, Double, Extended và

Comp. Bảng 3.2 nêu chi tiết về phạm vi giá trị và số byte dùng để lưu trữ trong bộ nhớ của từng

kiểu số thực.

Tên kiểu



Phạm vi giá trị



Số byte



Real



2.9*10-39 .. 1.7*1038



6



Single



1.5*10-45 .. 3.4*1038



4



Double



5.0*10-324 .. 1.7*10308



8



Extended

Comp



3.4*10



-4932

18



4932



.. 1.1*10



18



-9.2*10 .. 9.2*10



10

8



Bảng 3.2: các kiểu số thực

Chú ý: Turbo Pascal thường chỉ làm việc với một kiểu Real. Muốn dùng 4 kiểu thực còn lại,

phải chuyển sang mode 8087 bằng cách viết chỉ thị {$N+} ở ngay đầu chương trình.

4.3.4.2 Các phép toán trên số thực

Có 4 phép toán số học là nhân (*), chia (/), cộng (+) và trừ (-). Khi một trong các số hạng

tham gia tính toán là kiểu thực thì kết qủa của phép toán cũng là một số thực. Phép toán DIV,

MOD không dùng cho các số thực.

Ví dụ 4.5: với hai biến x, y kiểu thực thì lệnh sau là bị lỗi vì biểu thức vế phải không hợp lệ:

y:= x mod 10 ;

Các phép toán so sánh (= , <> , < , <= , > , >= ) cũng dùng được cho các số hạng là thực hay

nguyên.

4.3.4.3 Các hàm có đối số nguyên hoặc thực

- Hàm inc(i,h); là hàm tương đương với câu lệnh gán i:=i+h, với i, h là các số nguyên và kết

quả trả lại có kiểu nguyên.

Nếu h=1 thì có thể viết tắt là inc(i);

- Hàm ABS(x): tính trị tuyệt đối của x. Kiểu dữ liệu của kết qủa cùng kiểu với đối số. Nếu x

nguyên thì ABS(x) cũng nguyên, nếu x là số thực thì ABS(x) cũng là số thực.

Ví dụ 4.6: Abs(5 - 8) = 3

- Hàm SQR(x): tính bình phương của x. Kiểu dữ liệu của kết qủa cùng kiểu với đối số.

Ví dụ 4.7: Sqr(4.0) = 16.0

Sqr(7 div 3) = 4

Giáo trình Tin học đại cương



91



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



- Trong các hàm dưới đây, đối số x có thể là nguyên hay thực, nhưng giá trị trả về luôn luôn là

kiểu thực:

Hàm SQRT(x): tính căn bậc 2 của x (x >= 0), kết quả trả lại là một số thực

Hàm EXP(x) : tính e mũ x, kết quả trả lại là một số thực

Hàm LN(x): tính lnx, (x > 0), kết quả trả lại là một số thực

Các hàm SIN(x), COS(x), và ARCTAN(x): tính sinx, cosx và arctgx.

Hàm INT(x) : cho số thực bằng phần nguyên của x.

Ví dụ 4.8: Int(12.55) = 12.0

Int(1+10/3)=4.0

Hàm FRAC(x) : cho số thực bằng phần lẻ của x.

Ví dụ 4.9: Frac(12.55) = 0.55

Hai hàm đặc biệt dưới đây cho kết qủa là số nguyên:

Hàm TRUNC(x): cho số nguyên là phần nguyên của x.

Ví dụ 4.10: Trunc(12.55) = 12

Trunc(-2.98) = -2

Hàm ROUND(x): cho số nguyên bằng cách làm tròn x.

Ví dụ 4.11: Round(12.45) = 12

Round(-2.98) = -3

Chú ý rằng hàm Int(x) và hàm Trunc(x) cùng cho phần nguyên của x, chúng chỉ khác nhau về

kiểu dữ liệu của giá trị trả về. Int(4.5)= 4.0 còn Trunc(4.5) = 4 (viết 4 thì hiểu đó là số nguyên,

còn viết 4.0 thì hiểu đó là số thực).



4.3.5 Kiểu ký tự (CHAR)

4.3.5.1 Ký tự và biến kiểu ký tự

Các ký tự dùng trong máy tính điện tử được liệt kê đầy đủ trong bảng mã ASCII (xem phụ

lục 1) gồm 256 ký tự khác nhau và được đánh số thứ tự từ 0 đến 255. Số thứ tự của mỗi ký tự

còn gọi là mã ASCII của ký tự đó.

Tuy có 256 ký tự khác nhau song chỉ có 128 ký tự đầu tiên là hay dùng, còn lại là các ký tự

mở rộng. Các ký tự có mã từ 0 đến 31 gọi là các ký tự điều khiển, không in ra được, được dùng

để điều khiển các thiết bị ngoại vi, chẳng hạn ký tự có mã là 7 dùng để tạo một tiếng kêu bip, ký

tự có mã là 13 dùng để chuyển con trỏ màn hình xuống đầu dòng dưới...

Mỗi ký tự trong bảng mã ASCII gọi là một hằng ký tự, chiếm độ dài 1 byte, và khi viết trong

Pascal phải được đặt trong cặp nháy đơn: ‘0’, ‘1’, ‘A’, ‘B’, ‘$’,...

Giữa các ký tự, có một thứ tự mặc nhiên theo nguyên tắc : ký tự có mã nhỏ hơn thì nhỏ hơn.

Tức là:

Ký tự trắng < ‘0’< ‘1’< ...< ‘9’< ‘A’< ‘B’< ...’Z’< ‘a’< ‘b’< ...< ‘z’

Biến nhận giá trị là các hằng ký tự gọi là biến kiểu ký tự, chúng được khai báo nhờ từ khóa

CHAR, chẳng hạn như khai báo hai biến ch và ch1 dưới đây:

Var ch, ch1: Char ;

Khi đó có thể gán:

92

Giáo trình Tin học đại cương



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



ch:=‘A’;

ch1:=‘$’;

Ký tự ‘A’ gọi là giá trị của biến ch, còn ‘$’ là giá trị của biến ch1.

Nhận xét: Từ bảng mã của các chữ cái ta suy ra:

Mã chữ thường = Mã chữ hoa tương ứng + 32. (1)

4.3.5.2 Các hàm liên quan đến ký tự

- Hàm PRED(ch): cho ký tự đứng ngay trước ký tự ch trong bảng mã.

Ví dụ 4.12:

Pred(‘B’)=‘A’

- Hàm SUCC(ch): cho ký tự đứng ngay sau ký tự ch trong bảng mã.

Ví dụ 4.13: Succ(‘A’)=‘B’.

- Hàm UpCase(ch): đổi ký tự ch thành chữ hoa tương ứng.

Ví dụ 4.14: Upcase( ‘a’ ) = ‘A’, Upcase( ‘b’ ) = ‘B’, Upcase( ‘A’ ) = ‘A’ .

- Hàm ORD(ch) : cho mã của ký tự ch.

Ví dụ 4.15: Ord (‘A’) = 65, Ord (‘a’) = 97 .

- Hàm CHR(k) : đối số k nguyên, 0<= k<= 255, cho ký tự có mã bằng k.

Ví dụ 4.16

Chr (65)= ‘A’ ,

Chr (97)= ‘a’,

Chr(32) là ký tự trắng.

Có một số ký tự không có trên bàn phím, để viết chúng lên màn hình ta phải dùng lệnh Write

và hàm CHR.

Ví dụ 4.17



Lệnh Writeln(Chr(201));



Lệnh Writeln(Chr(187));



in ra ký tự : ╔



in ra ký tự : ╗



Ký tự có mã là 7 gọi là ký tự BEL (chuông), và lệnh:

Write(Chr(7)); hay Write(#7); { phát ra một tiếng kêu bip}

Chú ý: Turbo Pascal ( TP ) cho phép viết gọn Chr(k) thành #k nếu k là hằng số. Ví dụ, hai lệnh

sau cùng in lên màn hình chữ A :

Write(#65);

Write(Chr(65));

Trong TP không có hàm đổi chữ hoa ra chữ thường, nhưng có thể làm việc này nhờ công

thức (1) và hai hàm Ord và Chr :

Chữ thường := Chr ( Ord(chữ hoa) + 32 )

Tuy nhiên trước khi thực hiện thì cần phải kiểm tra xem ký tự cần chuyển có phải chữ hoa

hay không. Nếu là chữ hoa thì mới thực hiện đổi, ngược lại thì không nên đổi vì sẽ cho ra kết quả

không đúng.

Giáo trình Tin học đại cương



93



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



4.3.6 Kiểu LÔGIC (BOOLEAN)

Kiểu Boolean chỉ có hai giá trị là TRUE (đúng) và FALSE (sai), không phân biệt chữ hoa

hay chữ thường. Về quan hệ thứ tự thì FALSE< TRUE. Mỗi giá trị boolean chiếm một byte bộ

nhớ.

Các phép toán lôgic gồm có: NOT, AND, OR và XOR. Nếu A và B là hai đại lượng lôgic thì

NOT A, A and B, A or B và A xor B cũng là những đại lượng lôgic có kết qủa được cho ở bảng

dưới đây:

A



not A



True



False



False



True



A



B



A and B



A or B



A xor B



True



True



True



True



False



True



False



False



True



True



False



True



False



True



True



False



False



False



False



False



Bảng 3.5: Phép toán logic

Cũng từ bảng này ta rút ra các nhận xét :

 A and B là đúng khi và chỉ khi A và B đồng thời đúng. (Do đó chỉ cần một trong hai biến A

hoặc B sai thì A and B sẽ sai).

 A or B là sai khi và chỉ khi A và B đồng thời sai. (Do đó chỉ cần một trong hai biến A hoặc

B đúng thì A or B sẽ đúng).

 A xor B là đúng khi và chỉ khi A khác B.

Thứ tự thực hiện các phép toán lôgic là như sau: NOT tính trước, kế đến AND, sau cùng là

OR, XOR.

Ví dụ 4.18: sau khi thực hiện lệnh:

A:=Not (2*3=5) or (‘A’<‘B’) and not (4/2=2) xor (Sqrt(2) >1);

thì giá trị của A= FALSE, thật vậy :

Not (2*3=5) or (‘A’<‘B’) and not (4/2=2) xor (Sqrt(2) >1)

= TRUE or TRUE and FALSE xor TRUE

= TRUE or FALSE xor TRUE

= TRUE xor TRUE

= FALSE

Biến chỉ nhận giá trị là TRUE hoặc FALSE gọi là biến kiểu lôgic. Khi khai báo biến kiểu

lôgic ta dùng từ khóa Boolean.

Ví dụ 4.19:

Giáo trình Tin học đại cương



94



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Var



A, B : Boolean;



Trong chương trình ta có thể gán :

A:= true;

B:=2*2 < 3;

Giá trị của biến B sẽ là False vì biểu thức 2*2< 3 là sai.

Về thứ tự tính toán, các phép so sánh thì ngang cấp nhau và được tính sau tất cả các phép

toán khác.

Ví dụ 4.20: tính biểu thức :

5+7 div 2 < -7 mod 3 + 5*2 =

= 5 + 3 < -1 + 10

= 8< 9

= TRUE

Do đó, khi trong một biểu thức mà có các phép toán lôgic xen kẽ với các biểu thức so sánh

thì các biểu thức so sánh phải để trong ngoặc đơn.

Chẳng hạn, biểu thức sau là sai quy cách:

N > 0 and N<10

Cần sửa đúng thành : (N > 0) and (N<10)



4.3.7. Một số kiểu dữ liệu đơn giản do người lập trình định nghĩa

Ngoài các kiểu dữ liệu chuẩn thì Turbo pascal chấp nhận các kiểu dữ liệu khác do người

dùng lập trình định nghĩa. Việc khai báo kiểu dữ liệu cho phép chúng ta xây dựng các kiểu dữ

liệu mới.

Các kiểu dữ liệu mới được khai báo trong phần khai báo TYPE với cú pháp như sau:

TYPE = ;

Ví dụ 4.21: TYPE kieu_nguyen = Integer;



Var



KieuSV = Record

masv: int;

ht: string[30];

diem:float;

End;

a: kieu_nguyen;

c: integer;

sv: KieuSV;



4.3.7.1 Kiểu liệt kê (enumerated type)

* Cách khai báo

Ngoài các kiểu dữ liệu đã có sẵn như kiểu nguyên, thực, ký tự, lôgic và kiểu chuỗi, Turbo

Pascal còn cho phép người sử dụng có thể tự xây dựng các kiểu dữ liệu mới.

Kiểu liệt kê được định nghĩa bằng cách sử dụng từ khóa TYPE và liệt kê ra tất cả các giá trị

của kiểu, theo mẫu sau:

Type Tênkiểu = (tên1, tên2, ..., tênN) ;

Giáo trình Tin học đại cương



95



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



trong đó tên1, tên2,..., tênN là các tên tự đặt theo đúng quy ước về đặt tên.

Ví dụ 4.22 :

Type



Phai=(nam, nu) ;

Ten_mau = (den, trang, xanh, vang, tim, nau);



Theo khai báo này thì Phai là một kiểu dữ liệu liệt kê chỉ có hai giá trị là nam và nu,

Ten_mau cũng là kiểu dữ liệu liệt kê và có sáu giá trị là : den, trang, xanh, vang, tim, nau.

Khi một kiểu liệt kê đã được định nghĩa thì có thể khai báo các biến thuộc kiểu liệt kê này

bằng từ khóa Var.

Ví dụ 4.23: Var



Ph1, Ph2 : Phai;

M1, M2 : Ten_mau ;



Trong chương trình, ta có thể gán :

Ph1:=nam;

Ph2:=nu;

M1:=den;

M2:=trang;

Pascal còn cho phép khai báo trực tiếp biến kiểu liệt kê không cần qua giai đoạn định nghĩa

Type bằng cách liệt kê các giá trị mà biến có thể nhận.

Ví dụ 4.24: các biến Ph1, Ph2, M1, M2 nói trên có thể khai báo trực tiếp như sau:

Var Ph1, Ph2 : (nam, nu) ;

M1, M2 : ( den, trang, xanh, vang, tim, nau);

* Các hàm liên quan đến kiểu liệt kê

- Hàm ORD(tên): Trả về số thứ tự của tên trong kiểu liệt kê. Các giá trị liệt kê được đánh số thứ

tự bắt đầu từ 0. Ví dụ:

Ord(nam)=0,

Ord(xanh)=2

Thông qua hàm Ord, các giá trị liệt kê có thể so sánh với nhau theo quy tắc: giá trị nào có số thứ

tự nhỏ hơn thì nhỏ hơn:

den < trang < xanh< vang< tim< nau

- Hàm PRED(tên) và hàm SUCC(tên): trả về giá trị đứng ngay trước và ngay sau tên trong

kiểu liệt kê tương ứng.

Ví dụ 4.25: Pred(nu)=nam

Pred(nau)=tim

Succ(den)=trang

- Hàm Tênkiểu(k): trả về giá trị liệt kê có số thứ tự là k trong Tênkiểu, ví dụ:

Phai(0)=nam

Ten_mau(2)= xanh

Hàm này là hàm ngược của hàm Ord.

* Nhập , xuất kiểu liệt kê



Giáo trình Tin học đại cương



96



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CÁC YẾU TỐ CƠ SỞ CỦA NGÔN NGỮ PASCAL

Tải bản đầy đủ ngay(219 tr)

×
x