§¹i häc Kinh tÕ Quèc d©n
PASCAL
§ 1. Các bước giải bài toán trên máy tính điện tử
1.1. Các bước để giải bài toán trên máy tính điện tử
Bài toán ở đây cần được hiểu theo nghĩa rộng như một
nhiệm vụ xử lý thông tin nào đó. Để giải một bài toán trên máy
tính cần thực hiện các bước công việc sau đây:
1. Xác định rõ nội dung của bài toán: Đây là bước đầu
tiên của quá trình giải bài toán trên máy tính. Trong bước công
việc này, phải xác định mục đích giải bài toán, xác định các dữ
liệu ban đầu cần cho việc giải bài toán, các thông tin kết quả
thu được sau khi giải bài toán. Bước công việc này rất quan
trọng vì nó ảnh hưởng đến tất cả các công việc tiếp theo.
2. Mô hình hoá bài toán: Nếu bài toán có nội dung toán
học thì phải biểu diễn bài toán đã xác định ở bước 1 dưới
dạng một mô hình toán học. Cụ thể hơn là phải biểu diễn các
quan hệ giữa thông tin kết quả với các dữ liệu ban đầu dưới
dạng các công thức hay phương trình toán học có như vậy
mới có thể dùng máy tính để giải được.
3. Chọn phương pháp giải: Bước này phải trả lời được
ba câu hỏi: Bài toán có thể giải được không? Nếu giải được thì
theo phương pháp nào? Phương pháp nào là tốt nhất?
4. Viết thuật giải: Trên cơ sở phương pháp đã chọn ở
bước 3, tiến hành viết thuật toán giải bài toán. Đây là bước
công việc rất khó khăn. Một bài toán có thể được giải theo
nhiều thuật toán khác nhau. Một thuật toán hợp lý sẽ giúp cho
việc lập trình trở nên dễ dàng hơn. Nhìn chung thuật toán giải
bài toán ảnh hưởng rất nhiều đến kết quả và hiệu quả của bài
toán. Thuật toán có thể được trình bây dưới dạng sơ đồ khối.
Điều đó làm cho thuật toán rõ ràng, dễ hiểu và dễ đọc.
5. Lập chương trình: Căn cứ vào thuật toán đã viết ở
bước 4 mà tiến hành lập chương trình giải bài toán. Cần chọn
ngôn ngữ lập trình phù hợp với loại bài toán và khả năng của
máy tính được sử dụng.
6. Thử nghiệm chương trình: Bước công việc này là phải
Gi¸o tr×nh Tin häc §¹i c¬ng
149
Khoa Tin häc Kinh tÕ
chạy thử chương trình đã lập để phát hiện và khắc phục các
lỗi. Đối với các chương trình lớn và phức tạp, việc mắc lỗi
trong quá trình lập chương trình là khó có thể tránh khỏi. Cần
chuẩn bị các bộ dữ liệu khác nhau với các kết quả đã biết
trước để chạy thử. Chương trình có thể không gây lỗi hoặc
cho kết quả đúng đối với bộ dữ liệu này nhưng lại mắc lỗi hoặc
cho kết quả sai đối với bộ dữ liệu khác. Vì vậy, càng thử được
với nhiều bộ dữ liệu khác nhau thì càng tốt. Cần chú ý đến các
bộ dữ liệu đặc biệt. Có thể chia các lỗi thành ba loại: Lỗi ngữ
pháp, lỗi ngữ nghĩa và lỗi thuật toán. Lỗi ngữ pháp là lỗi do
khai báo sai, các lệnh dùng không đúng quy định của ngôn
ngữ. Những lỗi này thường dễ phát hiện ngay khi tiến hành
dịch chương trình ra ngôn ngữ máy để thực hiện. Lỗi ngữ
nghĩa thường phát hiện ra khi thực hiện chương trình, ví dụ
như chia cho 0. Lỗi thuật toán thường khó phát hiện, có thể do
công thức tính toán sai, chu trình lặp vô hạn Người lập trình
thường phải tự mình phát hiện các lỗi trong thuật toán.
7. Giải bài toán: Dùng chương trình đã thử nghiệm để giải
bài toán với dữ liệu thực tế.
8. Phân tích đánh giá và sử dụng kết quả: Các thông tin
kết quả do máy tính cung cấp cần được phân tích, đánh giá,
kiểm tra và nếu thấy hợp lý thì sử dụng.
9. Viết tài liệu hướng dẫn: Nếu chương trình được viết
cho nhiều người dùng thì cần viết tài liệu hướng dẫn sử dụng
chương trình để cung cấp cho người dùng cùng với các bản
dịch chương trình nguồn ra ngôn ngữ máy.
1.2.Sự ra đời và phát triển của PASCAL
PASCAL là ngôn ngữ lập trình cấp cao do giáo sư N. Klaus
With (Trưòng đại học Zurich, Thuỵ Sĩ) phát minh ra vào đầu
những năm 1970. Ông đặt tên ngôn ngữ này là PASCAL để kỷ
niệm nhà toán học người Pháp thế kỉ 17 là Blaise Pascal. Lúc
đầu PASCAL được sáng tác nhằm mục đích dạy môn lập trình
cho sinh viên trong các trường đại học. PASCAL giúp cho
sinh viên cũng như những người mới học lập trình có được
thói quen viết một chương trình có cấu trúc sáng sủa, rõ ràng,
dễ đọc và dễ hiểu cho cả những người khác. Trước khi
PASCAL ra đời các sinh viên học lập trình bằng FORTRAN, là
Ch¬ng III LËp tr×nh b»ng Pascal
150
§¹i häc Kinh tÕ Quèc d©n
một ngôn ngữ lâu đời nhất và là ngôn ngữ không có cấu trúc.
Giáo sư With thấy rằng có thể tránh được rất nhiều lỗi khi lập
trình bằng một ngôn ngữ có cấu trúc khối và có sự kiểm tra kĩ
lưỡng sự tương thích giữa các kiểu dữ liệu.
PASCAL là một ngôn ngữ có định kiểu mạnh mẽ. Điều đó
có nghĩa là mọi biến và hằng của một kiểu dữ liệu không thể tự
do đem trộn lẫn với các biến và hằng của một kiểu dữ liệu
khác. Ví dụ cả hai vế của lệnh gán phải có cùng một kiểu, trừ
trường hợp vế trái là biến thực (Real) còn vế phải là một giá trị
nguyên (Integer). Việc qui định kiểu một cách chặt chẽ như
vậy bắt buộc người lập trình luôn luôn phải viết các biểu thức
gồm các dữ liệu tương thích về kiểu.
PASCAL là một ngôn ngữ có cấu trúc, với một số đặc điểm
tương tự ngôn ngữ ALGOL và ngôn ngữ C. Đặc điểm của một
ngôn ngữ có cấu trúc là có thể tách các dữ liệu (biến, hằng, )
và các lệnh liên quan đến một công việc nhất định thành một
khối riêng, tách khỏi phần còn lại của chương trình để người
lập trình có thể giải quyết riêng từng phần một, từng khối một
và nhiều người có thể tham gia lập trình, mỗi người phụ trách
một khối. Thông thường một khối tương ứng với một nhiệm vụ
cụ thể, xác định, được thực hiện bằng các chương trình con
với các biến địa phương và các biến tạm thời của chương
trình con đó. Bằng cách này có thể viết các chương trình con
sao cho các sự kiện xảy ra trong đó không ảnh hưởng đến các
phần khác của chương trình nằm ngoài chương trình con này.
Lúc đầu PASCAL chủ yếu được dùng để dạy học. Trong
quá trình phát triển, PASCAL đã thể hiện các ưu điểm của
mình, trở thành một ngôn ngữ lập trình mạnh, được thương
mại hoá nhanh chóng. Từ PASCAL do giáo sư With sáng tạo
ra, tổ chức tiêu chuẩn hoá quốc tế và các hãng đã phát triển
thêm, và đã tạo ra nhiều chương trình dịch PASCAL khác
nhau, phổ biến hơn cả là:
- ISO PASCAL (PASCAL chuẩn, ISO:International Standard
Organization).
- ANSI PASCAL (American National Standard Institute).
- TURBO PASCAL (Của hãng Borland).
Gi¸o tr×nh Tin häc §¹i c¬ng
151
Khoa Tin häc Kinh tÕ
- IBM PASCAL (Của hãng MicroSoft).
- UCSD PASCAL (University of California at San Diego).
1.3.Giới thiệu Turbo PASCAL
Turbo PASCAL là sản phẩm của hãng Borland (Mỹ). Hiện
nay Turbo PASCAL là ngôn ngữ lập trình được sử dụng rộng
rãi nhất so với các loại PASCAL khác cũng như so với các
ngôn ngữ khác vì các ưu điểm của nó: Tốc độ dịch nhanh,
chương trình dịch ngắn gọn, các phần mở rộng của nó so với
PASCAL chuẩn đáp ứng được các yêu cầu của người sử dụng
và Turbo PASCAL không ngừng được cải tiến, phát triển. Cho
đến nay đã có các phiên bản sau đây:
- Turbo PASCAL 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 (1990) và 7.0
(1992).
Turbo PASCAL bao gồm nhiều tệp, trong đó có 2 tệp quan
trọng nhất, bắt buộc phải có là TURBO.EXE và TURBO.TPL.
Hai tệp này có thể được chứa gọn trên một đĩa mềm. Tệp
TURBO.EXE chứa một hệ soạn thảo (dùng để soạn thảo
chương trình PASCAL) và một chương trình dịch (dùng để
dịch chương trình PASCAL ra ngôn ngữ máy). Tệp
TURBO.TPL là một thư viện, chứa các hàm, các thủ tục và các
đơn vị chương trình chuẩn (có sẵn) của PASCAL.
Ngoài ra, nếu muốn sử dụng các chức năng đồ họa của
Turbo PASCAL thì cần có thêm các tệp sau đây:
- GRAPH.PTU tệp chứa các lệnh, hàm, biến kiểu dữ liệu
liên quan đến đồ hoạ.
- EGAVGA.BGI tệp chứa các chương trình điều khiển màn
hình các kiểu VGA hoặc CGA;
- SANS.CHR, GOTH.CHR các tệp chứa các kiểu chữ
(fonts) khác nhau dùng trong chế độ đồ họa.
Khi được cài đặt vào máy, các tệp của Turbo PASCAL
thường được đặt trong thư mục TURBO. Thư mục này gồm
các thư mục con như sau:
BIN
Chứa các tệp TURBO.EXE,
TURBO.TPL…
UNIT
Chứa các đơn vị chương trình *.TPU
SOURCE
Chứa các chương trình nguồn lớn làm
Ch¬ng III LËp tr×nh b»ng Pascal
152
§¹i häc Kinh tÕ Quèc d©n
ví dụ.
EXAMPL
ES
Chứa các ví dụ để trình diễn.
DOC
Chứa các tệp tài liệu.
BGI
Chứa các tệp dùng trong chế độ đồ
hoạ.
Tuy nhiên, tuỳ theo ý muốn của người sử dụng, các thư
mục con đó có thể có các tên khác.
§ 2. Bộ chữ viết, từ khoá,
tên trong PASCAL
2.1.Bộ chữ viết dùng trong PASCAL
Mỗi loại ngôn ngữ, ngôn ngữ của con người cũng như
ngôn ngữ của máy tính điện tử đều có bộ chữ viết riêng của
mình. Trong PASCAL bộ chữ viết gồm có:
a. Các chữ cái của bảng chữ cái tiếng Anh
- Các chữ cái viết thường từ a đến z.
- Các chữ cái viết hoa từ A đến Z.
- Dấu gạch nối "_" .
b. Các chữ số
Bao gồm các chữ số: 0,1,2,3,4,5,6,7,8,9.
c. Các kí hiệu đặc biệt
Ký
hiệ
u
ý nghĩa Ký
hiệu
ý nghĩa
+ Dấu cộng ; Dấu chấm phẩy
- Dấu trừ : Dấu hai chấm
* Dấu nhân hay dấu
sao
> Dấu lớn hơn
/ Dấu chia hay gạch
chéo
< Dấu nhỏ hơn
= Dấu bằng { Dấu ngoặc móc mở
^ Dấu mũ } Dấu ngoặc móc đóng
% Dấu phần trăm [ Dấu ngoặc vuông mở
Gi¸o tr×nh Tin häc §¹i c¬ng
153
Khoa Tin häc Kinh tÕ
? Dấu hỏi ] Dấu ngoặc vuông đóng
. Dấu chấm ( Dấu ngoặc tròn mở
, Dấu phảy ) Dấu ngoặc tròn đóng
# Dấu thăng ' Dấu nháy đơn
$ Dấu đô la Dấu khoảng trống, dấu
cách
Mỗi chữ cái, chữ số hoặc kí hiệu đặc biệt được gọi là một kí
tự. Turbo PASCAL không phân biệt chữ hoa và chữ thường
trong các tên, nhưng có phân biệt chữ hoa và chữ thường
trong các hằng kiểu ký tự và các hằng kiểu dãy ký tự.
Khi viết chương trình PASCAL, một số dấu phép tính được
viết bằng hai kí tự:
:= Dấu phép gán
Dấu các toán tử quan hệ:
<
>
Dấu
Khác
<= Dấu không lớn
hơn
>= Dấu không nhỏ
hơn
2.2.Từ khoá (Keyword)
Từ khoá là những từ tiếng Anh, mỗi từ có ý nghĩa nhất
định trong Turbo PASCAL.
ý nghĩa của các từ khoá sẽ lần lượt được nghiên cứu trong
các phần sau. Khi sử dụng các từ khoá phải viết đúng chính tả
và sử dụng đúng ý nghĩa của nó. Tên của người sử dụng
không được trùng với các từ khoá.
Trong Turbo PASCAL có các từ khoá sau đây:
• Từ khoá chung: Program, Unit, Begin, End, Procedure,
Function.
• Từ khoá khai báo: Const, Var, Type, Label, Array, Uses,
File, record, object, set, string.
• Từ khoá của lệnh rẽ nhánh: If then else, case of.
• Từ khoá của lệnh chu trình: For to do, For downto do,
while do, repeat until.
• Từ khoá điều khiển: with, goto.
• Từ khoá toán tử: And, or, not, div, mod.
• Từ khoá Nul: Nul.
Khi trình bầy qui cách các lệnh, các từ khoá sẽ được viết
bằng các chữ hoa, còn khi viết trong chương trình có thể viết
Ch¬ng III LËp tr×nh b»ng Pascal
154
§¹i häc Kinh tÕ Quèc d©n
hoa hoặc viết thường.
2.3.Tên (Define)
Tên là thành phần rất quan trọng của PASCAL. Nó được
dùng để chỉ các đối tượng khác nhau trong chương trình
như các hằng, các biến, các nhãn, các hàm, các thủ tục
Tên là một dãy kí tự, bao gồm chữ cái, chữ số và dấu
gạch nối. Tên phải bắt đầu bằng chữ cái và không được
chứa dấu khoảng trống (space).
Trong Turbo PASCAL 7.0 tên có thể có độ dài tùy ý, nhưng
chỉ có 63 ký tự đầu tiên là có ý nghĩa. Tên không được trùng
với từ khóa có thể viết bằng chữ hoa và chữ thường, hoặc lẫn
lộn cả chữ hoa và chữ thường. PASCAL không phân biệt chữ
hoa và chữ thường trong các tên.
Ví dụ:
- Các tên sau đây dùng đúng:
GIAIPHUONGTRINH, GiaiPhuongTrinh, Delta,
HO_VA_TEN, A1, A2, DIA_CHI, LOP, ADDRESS
- Các tên sau đây dùng sai:
#LOP
Bắt đầu bằng kí hiệu
đặc biệt
ARRAY
Trùng với từ
khoá.
1AB
Bắt đầu bằng chữ số
HO TEN
Chứa dấu
cách
Khi đặt các tên phải cố gắng đặt sao cho chúng có ý nghĩa,
phản ánh được nội dung của đối tượng mang tên này. Để dễ
đọc các tên, có thể sử dụng dấu gạch nối hoặc viết kết hợp
giữa chữ hoa và chữ thường.
Ví dụ: tên GIAIPHUONGTRINH
có thể đặt là: GIAI_PHUONG_TRINH hoặc
GiaiPhuongTrinh
Chú ý: có thể dùng dấu gạch nối (_) để đặt tên như trong
các ví dụ nêu trên, nhưng không được dùng dấu trừ (-).
Trong Turbo PASCAL có một số tên đã được định nghĩa
trước (Predefined Identifier), gọi là các tên chuẩn. Người dùng
cần phải sử dụng những tên này theo ý nghĩa đã gán cho
chúng. Tuy nhiên, nếu muốn có thể thay đổi ý nghĩa của các
tên chuẩn. Đối với các từ khoá thì không thể làm như thế
Gi¸o tr×nh Tin häc §¹i c¬ng
155
Khoa Tin häc Kinh tÕ
được.
Một số tên chuẩn thường được dùng trong Turbo PASCAL
Abs boolean Char Integer Real Byte
Text False True Arctan Read Readln
Write Writeln Sqr Sqrt
Số lượng các tên chuẩn phụ thuộc vào từng bản của
Turbo PASCAL. Đối với từng tên chuẩn sẽ có giải thích kĩ
càng về ý nghĩa, cách viết và cách sử dụng trong chương
trình.
2.4.Dấu chấm phẩy
Dấu chấm phẩy ";" không thể thiếu được trong PASCAL, nó
được dùng để ngăn cách các câu lệnh. Không nên hiểu đây là
dấu kết thúc lệnh.
2.5 Lời giải thích (Comment)
Lời giải thích dùng để giải thích cho chương trình thêm rõ
ràng và dễ hiểu khi người sử dụng nghiên cứu lại chương
trình. Khi thực hiện, máy sẽ bỏ qua những phần giải thích này.
Lời giải thích là dãy ký tự bất kỳ được đặt trong cặp dấu ngoặc
móc mở { và ngoặc móc đóng } hoặc trong cụm dấu ( * và *).
Chú ý: Nếu lời giải thích mở bằng cặp dấu (* thì phải đóng
bằng cặp dấu *), nếu mở bằng dấu ngoặc móc mở { thì phải
đóng bằng dấu ngoặc móc đóng }. Không thể mở bằng cặp
dấu (* và đóng lại bằng dấu ngoặc móc đóng } và ngược lại.
§ 3. Cấu trúc một chương trình PASCAL
Cấu trúc của một chương trình PASCAL thường gồm có 3
phần sau:
1- Phần tên chương trình.
2- Phần khai báo.
3- Phần thân chương trình.
Trong ba phần trên chỉ có phần thân chương trình là phần
bắt buộc phải có đối với mọi chương trình. Phần tên chương
trình và phần khai báo có thể có hoặc không tuỳ thuộc vào
từng người sử dụng và từng chương trình cụ thể.
3.1.Phần tên chương trình
Ch¬ng III LËp tr×nh b»ng Pascal
156
§¹i häc Kinh tÕ Quèc d©n
Phần này dùng để đặt tên cho chương trình PASCAL. Nó
bắt đầu bằng từ khoá PROGRAM, tiếp theo là một tên mà
người dùng đặt cho chương trình và phải kết thúc bằng dấu
chấm phẩy (;). Phần tên chương trình cho phép người dùng
phân biệt chương trình này với chương trình khác. Chương
trình dịch PASCAL không quan tâm đến phần này có hay
không. Phần tên chương trình không bắt buộc phải có trong
một chương trình PASCAL.
Ví dụ: Phần tên chương trình có thể có dạng
PROGRAM SAPXEP;
PROGRAM TAOTEPSN;
PROGRAM GiaiPhuongTrinhBac2;
Chú ý: Không nên nhầm lẫn tên chương trình trong phần
này với tên tệp chứa chương trình PASCAL.
3.2.Phần khai báo
Phần này có nhiệm vụ mô tả các đối tượng của bài toán,
mô tả dữ liệu, các biến, các hằng, chương trình con. Tất cả
các tên (trừ các tên chuẩn) được sử dụng trong chương
trình đều phải được khai báo. Trong quá trình dịch chương
trình nguồn ra chương trình đích, nếu phát hiện một tên chưa
được khai báo, trên màn hình sẽ xuất hiện thông báo lỗi và
quá trình dịch bị dừng lại.
Một chương trình PASCAL có thể gồm các mục khai báo
sau:
- Khai báo các đơn vị chương trình UNIT (USES).
- Khai báo các hằng (CONST).
- Khai báo các nhãn (LABEL).
- Khai báo các kiểu dữ liệu (TYPE).
- Khai báo các biến (VAR).
- Khai báo các thủ tục (PROCEDURE).
- Khai báo các hàm (FUNCTION).
Bao nhiêu mục khai báo được sử dụng là tuỳ theo yêu cầu
của từng chương trình cụ thể và tuỳ ý muốn của người dùng.
a.Khái niệm hằng và biến
Hằng (Constant) là một giá trị không đổi trong suốt quá
trình thực hiện chương trình. Tên hằng là tên được đặt
theo quy ước để đại diện cho một giá trị không thể thay
Gi¸o tr×nh Tin häc §¹i c¬ng
157
Khoa Tin häc Kinh tÕ
đổi.
Biến (Variable) là một giá trị thay đổi trong quá trình
thực hiện chương trình. Tên biến là tên được đặt theo quy
ước để đại diện cho một giá trị có thể thay đổi.
b.Khai báo hằng
Thông thường, mỗi khi muốn sử dụng một hằng, người sử
dụng viết luôn hằng đó. Ngoài cách đó ra, có thể đặt tên cho
hằng đó và khi sử dụng hằng ấy chỉ cần gọi nó ra. Nhìn bề
ngoài, tên hằng giống như tên biến. Điểm khác nhau cơ bản
giữa hằng và biến là với biến trong chương trình có thể thay
đổi giá trị của biến có tên đó bằng nhiều cách, còn đối với
hằng thì không thể thay đổi giá trị đã gán cho tên hằng đó.
Mục khai báo hằng dùng để đặt tên cho các hằng được bắt
đầu bằng từ khoá CONST, tiếp theo là các lệnh khai báo
hằng.
Quy cách:
Const
<Tên hằng> = <Giá trị hằng>;
Nếu có nhiều tên hằng có cùng một giá trị thì các tên đó
cách nhau bằng dấu phẩy. Nếu có nhiều lệnh khai báo hằng
thì phân cách các lệnh bằng dấu chấm phẩy (;).
Ví dụ: Mục khai báo hằng có thể có dạng:
CONST
GIOIHAN = 255; TOIDA = 1024;
TEN = 'Quynh Linh';
A,B,C = -1.234;
Một số hằng đã được định nghĩa sẵn trong Turbo PASCAL.
Người sử dụng có thể sử dụng các hằng đó mà không cần
khai báo chúng.
Tên hằng Kiểu
hằng
Giá trị của hằng
PI
Real 3.1415926536E+00
FALSE
Boolean Sai
TRUE
Boolean Đúng
MAXINT
Integer 32767
c. Khai báo biến
Tất cả các biến sử dụng trong chương trình đều phải được
Ch¬ng III LËp tr×nh b»ng Pascal
158
§¹i häc Kinh tÕ Quèc d©n
khai báo trong mục khai báo biến. Mục khai báo biến bắt đầu
bằng từ khoá VAR, sau đó là các lệnh khai báo biến.
Quy cách:
VAR
<Tên biến>: <Kiểu dữ liệu của biến>;
Nếu có nhiều biến có cùng kiểu dữ liệu thì các tên cách
nhau bằng dấu phẩy (,) sau đó là dấu hai chấm (:), rồi đến kiểu
dữ liệu. Nếu có nhiều lệnh khai báo biến thì các lệnh cách
nhau bằng dấu chấm phẩy (;)
Lệnh khai báo biến tạo ra các biến có tên và kiểu tương
ứng.
Kiểu dữ liệu có thể là một trong các từ khoá: INTEGER,
REAL, BOOLEAN, CHAR, STRING tương ứng với dữ liệu kiểu
nguyên, kiểu thực, kiểu lô gíc và kiểu ký tự. Bốn kiểu dữ liệu
trên được gọi là kiểu đơn giản chuẩn. Từ khoá STRING xác
định dữ liệu kiểu dãy kí tự (còn gọi là kiểu dòng ký tự hoặc
kiểu dãy ký tự).
Ví dụ
VAR
I, J : Integer ;
Traloi: Boolean;
Tong : Real;
Ten : String[15];
Phần khai báo kiểu dữ liệu không nhất thiết phải có trong
chương trình.
3.3.Phần thân chương trình
Phần này bắt buộc phải có trong chương trình. Nó gồm
các lệnh nằm giữa hai từ khoá BEGIN và END. Sau từ END là
dấu chấm thông báo kết thúc chương trình. Máy tính sẽ thực
hiện các lệnh trong phần thân chương trình để giải bài toán.
Ví dụ: Một chương trình PASCAL đơn giản có dạng:
Program Loichao;
Begin
Writeln('Chao ban Phan Thi Phuong Thanh ');
End.
Chương trình này không có phần khai báo. Phần thân
chương trình chỉ có một lệnh Writeln('Chao ban Phan Thi
Gi¸o tr×nh Tin häc §¹i c¬ng
159
Khoa Tin häc Kinh tÕ
Phuong Thanh!'); Lệnh này có tác dụng hiện trên màn hình
dòng thông báo:
Chao ban Phan Thi Phuong Thanh!
Như vậy một chương trình PASCAL thường có cấu trúc
như sau:
PROGRAM Ten_chuong_trinh;
USES Khai báo các UNIT;
CONST Khai báo các hằng;
LABEL Khai báo các nhãn;
TYPE Khai báo các kiểu dữ liệu;
VAR Khai báo các biến;
PROCEDURE Khai báo các thủ tục;
FUNCTION Khai báo các hàm;
BEGIN
<Các câu lệnh của PASCAL>
END.
§ 4. Các bước thực hiện
một chương trình PASCAL
Muốn chạy một chương trình PASCAL để giải một bài toán
cần thực hiện một số bước công việc. Các bước công việc đó
là: khởi động PASCAL, soạn thảo chương trình, dịch chương
trình, chạy chương trình, thoát khỏi PASCAL.
4.1.Khởi động Turbo PASCAL
Giả sử các tệp của Turbo PASCAL để trong thư mục
TURBO của thư mục gốc của ổ đĩa C. Để khởi động Turbo
PASCAL, từ dấu nhắc của DOS chuyển về thư mục TURBO
làm thư mục hiện thời rồi gọi:
TURBO ↵
PASCAL sẽ được máy tính điện tử nạp từ đĩa vào bộ nhớ.
Khi Turbo PASCAL đã được nạp đúng vào bộ nhớ, màn hình
có dạng như hinh vẽ 3.1.
Ch¬ng III LËp tr×nh b»ng Pascal
160
§¹i häc Kinh tÕ Quèc d©n
Dòng phía trên của màn hình là dòng thực đơn của Turbo
PASCAL. Phía dưới của màn hình là dòng thông tin hướng
dẫn. Phần giữa màn hình để trống, dành chỗ cho soạn thảo
chương trình. Bắt đầu từ đây có thể soạn thảo chương trình
nguồn.
4.2.Bảng chọn lệnh
Muốn mở một tệp, ghi hay chạy một chương trình. Dùng
bảng chọn lệnh tương ứng để thực hiện.
Sau đây là một số bảng chọn dọc của PASCAL
• Nhắp tổ hợp phím ALT + Chữ cái đầu F: Đưa ra bảng
chọn File.
• Nhắp tổ hợp phím ALT + Chữ cái đầu E: Đưa ra bảng
chọn Edit.
• Nhắp tổ hợp phím ALT + Chữ cái đầu S: Đưa ra bảng
chọn Search.
• Nhắp tổ hợp phím ALT + Chữ cái đầu R: Đưa ra bảng
chọn Run.
Một số bảng chọn đưa ra như sau:
Gi¸o tr×nh Tin häc §¹i c¬ng
161
Hình 3.1 M n hình PASCALà
Khoa Tin häc Kinh tÕ
FILE
New Bắt đầu một tệp mới có tên là
NONAME000.PAS
Open F3 Mở tệp đang có trên đĩa hay tệp mới trong
một cửa sổ mới
Save F2 Cất một tệp trong bộ nhớ vào đĩa
save As Cất một tệp ( trong bộ nhớ) vào đĩa với tên
mới
Change dir Đổi thư mục hiện thời
Print In nội dung tệp ra máy in
Print setup Cài đặt máy in
DOS shell Thoát khỏi PASCAL tạm thời về DOS. Từ
DOS về PASCAL bằng lệnh EXIT
eXit Alt+X Kết thúc PASCAL về DOS
SEARCH
Find Tìm kiếm đoạn văn bản trong cửa sổ
Edit
Replace Tìm kiếm đoạn văn bản trong cửa sổ
Edit và thay thế bằng một đoạn mới
Search again Lặp lại quá trình tìm kiếm vừa thực
hiện
Go To line number Đưa con trỏ đến vị trí dòng
Show last compilier error Xem lại lỗi biên dịch sau cùng
Find error Di chuyển con trỏ đến vị trí báo lỗi
runtime
Find procedure Di chuyển con trỏ đến vị trí Procedure
hay Function được chỉ ra để sửa
EDIT
Undo Alt+BkSp Huỷ bỏ thao tác vừa thực hiện trước đó
Redo Huỷ bỏ thao tác Undo trước đó, lấy lại
lệnh vừa huỷ
Cut Shift + Del Cắt vùng đã đánh dấu vào bộ đệm
Copy Ctrl + Ins Copy vùng đã đánh dấu vào bộ đệm
Paste Shift + Ins Dán nội dung bộ đệm vào vị trí hiện thời
của con trỏ
Clear Ctr + Del Xóa vùng đã đánh dấu
Show Clipboard Xem nội dung bên trong bộ đệm
RUN
Ch¬ng III LËp tr×nh b»ng Pascal
162
§¹i häc Kinh tÕ Quèc d©n
Run Ctr + F9 Biên dịch và chạy một chương trình đang
soạn thảo trong cửa sổ Edit
Step Over F8 Biên dịch và thực hiên từng bước chương
trình đang soạn thảo trong cửa sổ EDIT
thực hiện xong một lệnh tiếp tục bằng
bấm phím F8, không thực hiện từng lệnh
trong chương trình con
Trace Into F7 Biên dịch và thực hiên từng bước chương
trình đang soạn thảo trong cửa sổ Edit,
thực hiện xong một lệnh tiếp tục bằng
bấm phím F7
Go to cursor F4 Biên dịch và thực hiên chương trình bắt
dầu từ đầu đến dòng lệnh mà con trỏ
đang đứng
Program reset Ctr+ F2 Dừng thao tác sửa chữa, xóa bộ nhớ
Parameters Định các tham số trên dòng lệnh cần
chuyển cho chương trình
4.3.Dịch chương trình
Chương trình viết trong ngôn ngữ PASCAL được gọi là
chương trình nguồn. Tệp chứa chương trình này có phần mở
rộng là “.PAS ”. Máy tính không thể thực hiện được chương
trình này để giải bài toán mà phải dịch chương trình ra ngôn
ngữ máy thì mới thực hiện được. Chương trình trong ngôn
ngữ máy được gọi là chương trình đích. Tệp này có phần mở
rộng là “.EXE ”. Việc dịch chương trình nguồn ra chương trình
đích được thực hiện bởi chương trình dịch PASCAL.
Khi bấm Alt+F9 lúc đó chương trình dịch của Turbo
PASCAL sẽ dịch (compile) chương trình nguồn sang chương
trình đích. Trong quá trình dịch máy sẽ kiểm tra cú pháp của
chương trình nguồn. Nếu phát hiện lỗi máy sẽ thông báo lỗi
này và con trỏ được đặt vào vị trí có lỗi, quá trình dịch chấm
dứt, chương trình nguồn lại xuất hiện trên màn hình để người
dùng có thể sửa chữa. Nếu quá trình dịch được hoàn thành tốt
không có lỗi, trên màn hình sẽ xuất hiện thông báo “Compile
successful: Press any key“ có nghĩa là quá trình dịch
chương trình đã hoàn thành.
Thông thường chương trình đích được để trong RAM. Tuy
nhiên, có thể ghi chương trình đích lên đĩa để sau này chạy
trực tiếp trong môi trường DOS.
Gi¸o tr×nh Tin häc §¹i c¬ng
163
Khoa Tin häc Kinh tÕ
4.4.Thực hiện chương trình
Để thực hiện một chương trình PASCAL
• Nhắp tổ hợp phím Ctrl+F9. Khi đó máy kiểm tra xem đã
có chương trình đích chưa. Nếu có chương trình đích thì máy
sẽ thực hiện chương trình đó để giải bài toán. Nếu chưa có
chương trình đích thì máy sẽ dịch chương trình nguồn ra
chương trình đích, rồi mới thực hiện.
• Nhắp tổ hợp phím Alt+F5 để xem kết quả bài toán. Xem
xong nhắp phím bất kỳ để trở về màn hình soạn thảo.
4.5.Thoát khỏi Turbo PASCAL
Để kết thúc Turbo PASCAL cần thoát khỏi nó bằng các thao
tác:
• Nhắp tổ hợp phím Alt + F.
• Chọn Exit.
• Chọn Y hoặc N tùy thuộc vào việc có muốn ghi các thay
đổi vào tệp hay không.
Trên đây đã mô tả ngắn gọn cách soạn thảo và chạy một
chương trình trong Turbo PASCAL.
§ 5. Một số kiểu dữ liệu thường dùng
5.1.Khái niệm kiểu dữ liệu
Các dữ liệu do máy tính xử lý có nhiều đặc điểm khác nhau.
Căn cứ vào các đặc điểm đó mà ta phân chia dữ liệu thành
các kiểu khác nhau.
Kiểu dữ liệu (Data Types) là sự qui định về cấu trúc,
miền giá trị mà một biến thuộc kiểu đó có thể nhận được
và tập hợp các phép toán xác định trên miền giá trị đó.
Trong PASCAL mỗi hằng, mỗi biến đều phải thuộc về một
kiểu dữ liệu nhất định. PASCAL đòi hỏi chặt chẽ về kiểu của
dữ liệu trong chương trình, không được phép xáo trộn các dữ
liệu có kiểu khác nhau, nó cũng xây dựng các kiểu dữ liệu
chuẩn cùng những phép toán, hàm tác động lên dữ liệu đó. Vì
vậy nó được gọi là ngôn ngữ lập trình có "tính kiểu" cao.
Ch¬ng III LËp tr×nh b»ng Pascal
164
§¹i häc Kinh tÕ Quèc d©n
Trong PASCAL có thể xử lý các kiểu dữ liệu sau:
1. Kiểu vô hướng (còn gọi là kiểu đơn giản).
1.1 + Kiểu đơn giản chuẩn (SIMPLE STANDARD
TYPE).
1.1.1 _ Kiểu lô gic (BOOLEAN).
1.1.2 _ Kiểu số nguyên (INTEGER).
1.1.3 _ Kiểu số thực (REAL).
1.1.4 _ Kiểu ký tự (CHAR).
1.2 + Kiểu vô hướng do người lập trình tự định
nghĩa.
1.2.1 _ Kiểu khoảng con (SUB-RANGE).
1.2.2 _ Kiểu liệt kê (ENUMERATED).
2. Kiểu dữ liệu có cấu trúc (STRUCTURED TYPE).
2.1 + Kiểu mảng (ARRAY).
2.2 + Kiểu tập (SET).
2.3 + Kiểu bản ghi (RECORD).
2.4 + Kiểu tệp (FILE).
3. Kiểu dãy ký tự (STRING TYPE).
4. Kiểu con trỏ (POINTER TYPE).
Cần nhớ rằng một biến hoặc một hằng chỉ liên quan đến
một kiểu và chỉ một kiểu dữ liệu mà thôi.
Kiểu vô hướng, hay kiểu đơn giản (còn gọi là kiểu cơ sở)
là kiểu dữ liệu gồm một tập các giá trị được sắp xếp theo
thứ tự tuyến tính. Dưới đây sẽ xem xét 5 kiểu dữ liệu hay
được sử dụng nhất trong đó có 4 kiểu dữ liệu đơn giản chuẩn
Boolean, Integer, Real, Char và kiểu String. Các kiểu dữ liệu
khác sẽ lần lượt được nghiên cứu.
5.2.Kiểu dữ liệu lô gic (Boolean)
a.Khái niệm kiểu dữ liệu lô gic
Dữ liệu kiểu lô gic (gọi tắt là kiểu lô gic) chỉ nhận các
giá trị lô gic TRUE (đúng) và FALSE (sai). Kiểu lô gic
được định nghĩa sẵn bằng từ khoá BOOLEAN.
Biến lô gic là biến chỉ nhận các giá trị lô gic. Từ khoá
BOOLEAN được dùng để khai báo các biến lô gic. Trong kiểu
lô gic cũng có định nghĩa sẵn quan hệ thứ tự: FALSE <
Gi¸o tr×nh Tin häc §¹i c¬ng
165
Khoa Tin häc Kinh tÕ
TRUE.
b.Các phép toán đối với dữ liệu kiểu lô gic
Các phép toán sau đây được áp dụng cho dữ liệu kiểu lô
gic:
AND và
OR hoặc
NOT phủ định hay ĐảO
XOR hoặc triệt tiêu hay cộng mô dun 2
Bảng qui tắc thực hiện các phép toán lô gic và các kết quả
tương ứng
P Q NOT P P AND Q P OR Q P XOR Q
T T F T T F
T F F F T T
F T T F T T
F F T F F F
Bảng qui tắc thực hiện các phép toán lôgíc.
Ví dụ: Giả sử 2 biến DangVien và GioiTinh là 2 biến lô
gic. Để khai báo 2 biến này viết như sau:
VAR
GioiTinh,DangVien: Boolean;
Do đã xác định quan hệ thứ tự giữa các giá trị lô gic, nên
có thể sử dụng các phép toán quan hệ đối với dữ liệu lô gic.
5.3.Kiểu dữ liệu số nguyên (Integer)
a.Khái niệm kiểu dữ liệu số nguyên
Dữ liệu kiểu số nguyên (gọi tắt là kiểu nguyên) là tập
hợp các số nguyên nằm trong khoảng từ -32768 đến +
32767. Kiểu số nguyên được định nghĩa sẵn bằng từ khoá
INTEGER.
Biến nguyên là biến nhận các giá trị nguyên. Từ khoá
INTEGER được dùng để khai báo biến nguyên.
Ví dụ 1: Hai biến I, J là hai biến nguyên. Để khai báo 2
biến này, cần viết như sau:
VAR
I,J: Integer;
Khi đã khai báo như vậy thì các biến I, J có thể nhận giá trị
là một số nguyên nằm trong khoảng từ -32768 đến 32767.
Ch¬ng III LËp tr×nh b»ng Pascal
166
§¹i häc Kinh tÕ Quèc d©n
b.Các phép toán số học đối với dữ liệu kiểu
nguyên
Các phép toán sau đây được áp dụng cho dữ liệu kiểu
nguyên:
+ Cộng
- Trừ
* Nhân
DIV Chia nguyên
MOD Lấy phần dư của phép chia
Ví dụ 7
5 / 2 = 2.5 5 DIV 2 = 2 10 / 2 = 5.0 3 DIV 4 =
0
14 MOD 4 =
2
5 MOD 2 =
1
10 MOD 4 =
2
10 MOD 3 =
1
Chú ý:
• Khi viết các số nguyên phải tuân theo các qui định:
Không được có dấu cách giữa các chữ số; dấu dương (+)
hoặc dấu âm (-) phải đặt trước chữ số đầu tiên; số nguyên
không được chứa dấu chấm thập phân.
• Khi thực hiện các phép tính số học trên các số nguyên
cần đặc biệt chú ý xem kết quả có vượt quá miền giá trị cho
phép của dữ liệu kiểu nguyên hay không.
Ví dụ: Nếu a, b là các biến nguyên Integer thì hai lệnh sau:
a:= 80; b:= (a * 1245) DIV 200 cho kết quả sai (vì 99600
vượt quá miền giá trị của dữ liệu kiểu nguyên).
c.Các phép toán quan hệ đối với dữ liệu kiểu
nguyên
Các phép toán quan hệ: = (bằng), <> (khác), > (lớn hơn), <
(nhỏ hơn), >= (không nhỏ hơn), <= (không lớn hơn) đều có thể
áp dụng cho các dữ liệu kiểu nguyên và được thực hiện theo
qui tắc thông thường, kết quả các phép toán quan hệ với dữ
liệu kiểu nguyên cho giá trị là kiểu lô gic.
5.4.Kiểu dữ liệu số thực (Real)
a.Khái niệm kiểu dữ liệu số thực
Dữ liệu kiểu số thực (gọi tắt là kiểu thực) là tập hợp các
Gi¸o tr×nh Tin häc §¹i c¬ng
167
Khoa Tin häc Kinh tÕ
số thực có thể biểu diễn trong máy tính. Kiểu số thực
được định nghĩa sẵn bằng từ khoá REAL.
Một giá trị kiểu thực là một số thực nằm trong khoảng mà
máy tính điện tử có thể xử lí được. Giới hạn này phụ thuộc
vào từng máy tính và từng chương trình. Trong Turbo
PASCAL giới hạn là ± 2.9E -39 ÷ ± 1.7E+38.
Biến thực là biến nhận các giá trị thực. Từ khoá REAL
được dùng để khai báo biến thực.
Trong chương trình Pascal số thực có thể được viết dưới
hai dạng dấu phẩy tĩnh và dấu phẩy động.
b.Số thực dấu phẩy tĩnh
Số thực dấu phẩy tĩnh là số thực có phần nguyên và
phần lẻ. Dấu chấm (.) được dùng để ngăn chia phần
nguyên với phần lẻ của số. Tận cùng bên trái, nếu là số
âm phải có dấu trừ (-), nếu số dương có thể có hoặc
không có dấu cộng (+).
Ví dụ:
3.0, 3.14, 0.42, -34.45
c.Số thực dấu phẩy động
Số thực dấu phẩy động (kiểu số khoa học) gồm có 2
phần: phần định trị và phần bậc. Phần định trị là một số
thực. Phần bậc là một số nguyên nằm trong khoảng -39
đến +38. Giữa phần định trị và phần bậc có ký hiệu E.
Ví dụ: về các số thực dấu phẩy động.
3.14E+00
(3.14)
6.321E+02
(632.1)
-12.21E-02 (-
0.1221.)
Ví dụ: Hai biến S, Tong là 2 biến thực. Để mô tả viết như
sau:
VAR
S,Tong: Real;
d.Các phép toán số học và quan hệ đối với kiểu
dữ liệu số thực
Các phép toán số học +, -, *, / (cộng, trừ, nhân, chia) và
các phép toán quan hệ = (bằng), <> (khác),> (lớn hơn), <
(nhỏ hơn), >= (không nhỏ hơn),<= (không lớn hơn) đều có thể
áp dụng cho dữ liệu kiểu thực.
Ch¬ng III LËp tr×nh b»ng Pascal
168
§¹i häc Kinh tÕ Quèc d©n
5.5.Các hàm chuẩn cho dữ liệu kiểu nguyên và thực
Tên hàm
Kiểu
dữ liệu
vào
Kiểu
dữ liệu
ra
Tác dụng
PRED(X) N N
Cho phần tử đứng trước X
(PREDecessor)
SUCC(X) N N
Cho phần tử đứng sau X
(SUCCessor)
ODD(X) N L
Cho giá trị TRUE nếu X lẻ, cho
FALSE nếu X chẵn.
TRUNC(X
)
N,T N
Cho số nguyên bằng cách loại
bỏ phần phân của X.
(TRUNCate)
ROUND(X
)
N,T N
Cho số nguyên bằng cách làm
tròn X
FRAC(X) T T Lấy phần lẻ của X
INT(X) T T
Lấy phần nguyên của X bằng
cách loại bỏ phần phân
ABS(X) N,T N,T
Cho giá trị tuyệt đối
(ABSolute) của X
SQR(X) N,T N,T
Cho bình phương (SQuare)
của X (X
2
)
ARCTAN(
X)
N,T T
Cho Arctang của X (Tính theo
Radian)
COS(X) N,T T
Cho Cos của X (Tính theo
Radian)
SIN(X) N,T T
Cho Sin của X (Tính theo
Radian)
LN(X) N,T T
Cho Logarit cơ số tự nhiên
(Natural Logarithm - Cơ số
e=2.718284) của X
EXP(X) N,T T
Cho hàm mũ (EXPonential) cơ
số e của X
SQRT(X) N,T T
Cho căn bậc 2 (SQuare RooT)
của X
Chú ý: Các kí hiệu N là kiểu nguyên, T là kiểu thực, L là kiểu
Gi¸o tr×nh Tin häc §¹i c¬ng
169
Khoa Tin häc Kinh tÕ
lô gic.
Ví dụ:
TRUNC(3.146)
=3.
ROUND(56.678)
=57
ROUND(56.421)
=56
5.6.Kiểu dữ liệu ký tự (Character)
a.Khái niệm kiểu dữ liệu ký tự
Dữ liệu kiểu ký tự (gọi tắt là kiểu ký tự) là một ký tự có
trong tập hợp các ký tự của bảng mã ASCII. Kiểu ký tự
được định nghĩa sẵn bằng từ khoá CHAR.
Trong bảng mã ACCII, các ký tự được sắp xếp theo trật tự
nhất định.
Ví dụ: 'A'<'B' Các số thứ tự (mã ACCII) của các ký tự
nằm trong khoảng từ 0 đến 255.
Biến kiểu ký tự là biến nhận các giá trị kiểu ký tự. Từ khoá
CHAR được dùng để khai báo biến ký tự.
Ví dụ: Biến Traloi là biến kiểu ký tự. Để khai báo nó cần viết:
VAR
Traloi: char ;
Chú ý: khi viết các giá trị ký tự thì nó phải được đặt trong
cặp dấu nháy đơn.
Ví dụ: 'A', 'B', '0'
Giữa các ký tự thì ký tự đứng trước nhỏ hơn ký tự đứng
sau, chữ viết hoa nhỏ hơn chữ viết thường cùng chữ đó, chữ
cái lớn hơn chữ số.
Ví dụ: 'A' < 'B'; 'B' < 'C', 'a' < 'b'; 'b' < 'c', '9'<'A',
b.Các hàm chuẩn dùng cho các dữ liệu kiểu ký tự
Tên hàm
Kiểu
dữ liệu
vào
Kiểu
dữ liệu
ra
Tác dụng
PRED(Ch) KT KT
Cho ký tự đứng trước ký tự
Ch trong bảng mã ASCII
(PREDecessor)
SUCC(Ch) KT KT
Cho ký tự đứng sau ký tự
Ch trong bảng mã ASCII
(SUCCessor)
ORD(Ch) KT N Cho số thứ tự (ORDinal) của
Ch¬ng III LËp tr×nh b»ng Pascal
170
§¹i häc Kinh tÕ Quèc d©n
ký tự Ch trong bảng mã
ASCII).
CHR(N) N KT
Cho ký tự (Character) có số
thứ tự là N (tức mã ASCII là
N)
UPCASE(C
h)
KT KT
Cho ký tự Ch từ chữ thường
sang chữ hoa
Ví dụ:
PRED('B')⇒ 'A' SUCC('X') ⇒'Y'
ORD('A') ⇒ 65 CHR(65) ⇒ 'A'
UPCASE('a') ⇒ 'A'
5.7.Kiểu dữ liệu dãy ký tự (String)
a.Khái niệm kiểu dữ liệu dãy ký tự
Dữ liệu kiểu dãy ký tự (gọi tắt là kiểu dãy ký tự) là một
dãy ký tự có trong tập hợp các kí tự của bảng mã ASCII
được đặt trong cặp dấu nháy đơn. Kiểu dãy ký tự được
định nghĩa bằng từ khoá STRING.
Biến kiểu dãy ký tự là biến nhận các giá trị là dãy các ký tự,
biến kiểu dãy ký tự được khai báo bằng từ khoá STRING.
Ví dụ: Biến HOVATEN là biến kiểu dãy ký tự. Để khai báo
nó cần viết.
VAR
HOVATEN: String[25];
LOP:String[25];
Khai báo như vậy có nghĩa là: biến HOVATEN và LOP là
biến kiểu dãy ký tự, nó có thể nhận giá trị là các dãy ký tự có
tối đa là 32767 ký tự. Trong chương trình có thể viết các lệnh
gán như sau:
HOVATEN:= 'BUI DIEU LINH';
LOP:= 'Tai chinh B khoa 39 - Ngan hang';
b.Phép toán đối với dữ liệu kiểu dãy ký tự
Đối với các dữ liệu kiểu dãy ký tự chỉ có một phép tính duy
nhất là phép ghép được ký hiệu bằng dấu cộng (+). Phép tính
này tạo nên một dòng ký tự bằng cách ghép hai dãy ký tự cho
trước với nhau.
Ví dụ:
'TURBO'+' PASCAL' = 'TURBO PASCAL'.
Gi¸o tr×nh Tin häc §¹i c¬ng
171
Khoa Tin häc Kinh tÕ
c.So sánh hai dãy kí tự
Khi so sánh hai dãy ký tự, máy sẽ so sánh từng cặp ký tự
với nhau kể từ trái qua phải theo tiêu chuẩn sau.
• Hai dãy ký tự bằng nhau nếu có độ dài như nhau và nội
dung giống hệt nhau.
• Dãy đứng trước trong từ điển nhỏ hơn dãy đứng sau
trong từ điển.
• Dãy ngắn hơn nhỏ hơn dãy dài hơn.
• Chữ viết hoa nhỏ hơn chữ viết thường cùng chữ đó.
• Chữ cái lớn hơn chữ số.
• Các dấu khoảng trống trước sau đều được tính.
Kiểu dữ liệu này sẽ được nghiên cứu kỹ hơn trong chương
sau.
§ 6. Biểu thức (Expression)
6.1.Khái niệm biểu thức
Biểu thức là một số toán hạng (Operand) được kết hợp
với nhau bởi một số phép toán (Operator) để xác định một
giá trị nhất định. Toán hạng có thể là một hằng, một biến
hoặc một hàm. Phép toán được viết ra bằng dấu phép
toán.
Trường hợp đơn giản nhất biểu thức có thể chỉ là một
hằng, một biến hoặc một hàm.
Có thể nói khác đi biểu thức là một công thức, bao gồm các
toán hạng và các toán tử, cho phép xác định một giá trị nhất
định.
Biểu thức trong PASCAL được chia thành biểu thức số học,
biểu thức lô gic và biểu thức dãy ký tự.
• Biểu thức số học là biểu thức có kết quả là một giá trị số
nguyên hoặc một giá trị số thực.
• Biểu thức lô gic là biểu thức có kết quả là một giá trị lô
gic.
Ch¬ng III LËp tr×nh b»ng Pascal
172
§¹i häc Kinh tÕ Quèc d©n
• Biểu thức dãy ký tự là biểu thức có kết quả là một giá trị
dãy ký tự.
6.2.Các phép toán (Operator)
Các phép toán được viết bằng các dấu phép toán. Trong
TURBO PASCAL có các dấu phép toán sau đây:
a.Các phép toán số học
+ cộng
- trừ
* nhân
/ chia
DIV chia nguyên
MOD Lấy phần dư của phép chia nguyên
b.Các phép toán lô gic
AND và
OR hoặc
NOT
phủ định hay ĐảO
XOR
hoặc triệt tiêu hay cộng mô Đun 2
c. Các phép toán quan hệ
= bằng
<> Không bằng
>= lớn hơn hoặc bằng
<= nhỏ hơn hoặc bằng
> lớn hơn
< nhỏ hơn
Kết quả thực hiện phép toán so sánh là một giá trị lô gic.
Hai toán hạng được so sánh với nhau phải cùng kiểu (trừ
trường hợp số nguyên có thể so sánh được với số thực). Có
thể so sánh các dữ liệu kiểu nguyên, thực, lô gic và kiểu dãy
ký tự.
d.Phép toán ghép dãy ký tự
Đối với các dữ liệu kiểu dãy ký tự thì chỉ có một phép toán
gọi là phép toán ghép, ký hiệu bằng dấu cộng (+).
6.3.Thứ tự thực hiện phép toán trong biểu thức
Khi xác định giá trị các biểu thức, các phép toán được
thực hiện theo thứ tự ưu tiên sau đây:
Gi¸o tr×nh Tin häc §¹i c¬ng
173