Giáo trình Ngôn ngữ lập trình Pascal - Phần 2

KIẾN THỨC Y ÊU CẦU

‰ Nhận biết một số thể hiện của màn hình Windows.

‰ Biết cách sử dụng các thành phần của màn hình Windows.

‰ Luyện tập thao tác sử dụng chuột.

I/ Dữ liệu kiểu số

1/ Khái niệm về dữ liệu và kiểu dữ liệu

Trong Pascal một dữ liệu (data) bao giờ cũng thuộc về một kiểu dữ liệu

nhất định. Một kiểu dữ liệu (data type) là một sự quy định về hình dạng, cấu

trúc và giá trị của dữ liệu cũng như cách biểu diễn và cách xử lý dữ liệu. Ngôn

ngữ lập trình chỉ chấp nhận xử lý những dữ liệu tuân theo sự quy định về kiểu

của ngôn ngữ lập trình đó.

2/ Các kiểu dữ liệu trong Pascal

Có thể phân loạI như sau:

a/ Các kiểu đơn giản (simple type):

Ö Kiểu real

Ö Các kiểu rờI rạc: integer, char, boolean, byte, word, liệt kê, miền con.

b/ Các kiểu có cấu trúc:

Ö Array (dãy)

Ö Record (mẫu tin)

Ö Set (tập hợp)

Ö File (tập tin)

Ö String (chuỗI)

c/ Kiểu con trỏ (pointer type)

3/ Tìm hiểu một số kiểu căn bản

a/ Kiểu số nguyên (integer): Là các số nguyên, biểu diễn dướI dạng số hệ

thập phân (cơ số 10 dùng các số từ 0 đến 9), nó cũng có thể biểu diễn dướI

dạng hệ thập lục phân hexidecimal (cơ số 16, dùng các số từ 0 đến 9, và A, B,

C, D, E, và F), dùng dấu $ đặt trước số dạng cơ số 16, nằm trong khoảng từ $0

đến $FFFF. Có 5 kiểu số nguyên như sau:

Ví dụ:

Hexidecimal Decimal

$FFFF 65535

$1A3E 6718

$321F 12831

pdf 16 trang yennguyen 3060
Bạn đang xem tài liệu "Giáo trình Ngôn ngữ lập trình Pascal - Phần 2", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Ngôn ngữ lập trình Pascal - Phần 2

Giáo trình Ngôn ngữ lập trình Pascal - Phần 2
 BÀI 
KIỂU DỮ LIỆU CƠ SỞ 
KIẾN THỨC Y ÊU CẦU 
‰ Nhận biết một số thể hiện của màn hình Windows. 
‰ Biết cách sử dụng các thành phần của màn hình Windows. 
‰ Luyện tập thao tác sử dụng chuột. 
I/ Dữ liệu kiểu số 
 1/ Khái niệm về dữ liệu và kiểu dữ liệu 
 Trong Pascal một dữ liệu (data) bao giờ cũng thuộc về một kiểu dữ liệu 
nhất định. Một kiểu dữ liệu (data type) là một sự quy định về hình dạng, cấu 
trúc và giá trị của dữ liệu cũng như cách biểu diễn và cách xử lý dữ liệu. Ngôn 
ngữ lập trình chỉ chấp nhận xử lý những dữ liệu tuân theo sự quy định về kiểu 
của ngôn ngữ lập trình đó. 
 2/ Các kiểu dữ liệu trong Pascal 
 Có thể phân loạI như sau: 
 a/ Các kiểu đơn giản (simple type): 
 Ö Kiểu real 
 Ö Các kiểu rờI rạc: integer, char, boolean, byte, word, liệt kê, miền con. 
 b/ Các kiểu có cấu trúc: 
 Ö Array (dãy) 
 Ö Record (mẫu tin) 
 Ö Set (tập hợp) 
 Ö File (tập tin) 
 Ö String (chuỗI) 
 c/ Kiểu con trỏ (pointer type) 
 3/ Tìm hiểu một số kiểu căn bản 
 a/ Kiểu số nguyên (integer): Là các số nguyên, biểu diễn dướI dạng số hệ 
thập phân (cơ số 10 dùng các số từ 0 đến 9), nó cũng có thể biểu diễn dướI 
3 
dạng hệ thập lục phân hexidecimal (cơ số 16, dùng các số từ 0 đến 9, và A, B, 
C, D, E, và F), dùng dấu $ đặt trước số dạng cơ số 16, nằm trong khoảng từ $0 
đến $FFFF. Có 5 kiểu số nguyên như sau: 
Ví dụ: 
Hexidecimal Decimal 
$FFFF 65535 
$1A3E 6718 
$321F 12831 
Tên kiểu Phạm vi Kích thước 
Shortint -128 đến 127 1 byte 
Integer -32768 đến 32767 2 byte 
Longint -2147483648 đến 2147483647 4 byte 
Byte 0 đến 255 1 byte 
Word 0 đến 65535 2 byte 
 Ö Cách khai báo: Tên biến, dấu hai chấm “:”, kiểu, dấu chấm phẩy “;” 
Ví dụ: 
VAR 
X : Byte; 
So : Integer; 
Ketqua : Integer; 
 Chúng ta có thể khai báo nhiều biến cùng kiểu cách nhau bằng dấu 
phẩy “,” 
Ví dụ: 
VAR 
So,Ketqua : Integer; 
 Ö Các phép toán có thể thực hiện trên kiểu số nguyên: + (cộng), - (trừ), 
* (nhân), DIV (phép chia nguyên) và MOD (số dư). 
 b/ Kiểu số thực (real): Là những dữ liệu số thực, được viết dướI dạng một 
số thập phân, có thể theo sau bằng một luỹ thừa của 10 (ký hiệu bằng chữ E) 
Ví dụ: 
 -234.5678 
 -2.5E2 có nghĩa là -2.5 x 102 
 1.8E-10 có nghĩa là 1.8 x 10-10 
Tên kiểu Phạm vi Kích thước 
Single 1.5E-45 đến 3.4E+38 4 byte 
Real 2.9 x 10 –39 đến 1.7 x 1038 6 byte 
Double 5.0E-324 đến 1.7E+308 8 byte 
Extended 3.4E-4932 đến 1.1E+4932 10 byte 
Comp -9.2E+18 đến 9.2E+18 8 byte 
 Ö Cách khai báo: Tên biến, dấu hai chấm “:”, kiểu, dấu chấm phẩy “;” 
Ví dụ: 
VAR 
X : Real; 
Y : Single; 
Z : Double; 
 Chúng ta có thể khai báo nhiều biến cùng kiểu cách nhau bằng dấu 
phẩy “,” 
Ví dụ: 
VAR 
So,Ketqua : Real; 
 Ö Các phép toán có thể thực hiện trên kiểu số nguyên: + (cộng), - (trừ), 
* (nhân), / (chia). 
II/ Dữ liệu kiểu Logic 
 1/ Kiểu Logic (Boolean): Gồm hai giá trị False (sai) và True (đúng). 
Ví dụ: 
VAR 
BienLogic : Boolean; 
Khi khai báo xong ta có thể gán cho BienLogic một trong hai giá trị: 
BienLogic := True; hay BienLogic := False; 
 2/ Biểu thức Logic 
Ví dụ: x > 5; (x 7) 
 ƒ x > 5 sẽ đúng (True) khi x có giá trị từ 6 trở lên, và sai (False) khi x có giá 
trị nhỏ hơn hoặc bằng 5. 
 ƒ (x 7) sẽ đúng khi khi x có giá trị nhỏ hơn 4 và giá trị của y từ 
8 trở lên. 
 Kết quả của biểu thức trên sẽ có giá trị là đúng hoặc sai. Các biểu thức này 
thường dùng làm điều kiện trong các phát biểu của Pascal. 
 Bạn thường dùng 6 toán tử so sánh đó là: = , > , = , 
Ví dụ: 
 If (x >10) Then 
 If (x > 2) And (y >2) Then 
 ĐốI vớI kiểu này, các bạn cần biết các toán tử luận lý NOT, AND, OR và 
XOR. 
A NOT A 
True False 
False True 
A B A AND B 
True True True 
True False False 
False True False 
False False False 
A B A OR B 
True True True 
True False True 
False True True 
False False False 
A B A XOR B 
True True False 
True False True 
False True True 
False False False 
III/ Dữ liệu kiểu Char (ký tự) 
 1/ Kiểu Char: Là những dữ liệu ký tự, một ký tự được viết trong hai dấu nháy 
(‘ ‘). 
Ví dụ: ‘3’, ‘M’, ‘N’, ‘a’, ‘b’ 
VAR 
Kytu : Char; 
Kytu := ‘A’; 
 Một kí tự được chứa trong một byte. 
 Kí tự được biểu diễn trong bộ nhớ bởI giá trị của nó trong bảng mã ASCII. 
Ví dụ: Ký tự ‘B’ có mã ASCII là 66, sẽ được biểu diễn trong bộ nhớ bằng 1 byte 
có trị là 66. 
 Như vậy các ký tự được biểu diễn bằng các trị từ 0 đến 255. 
 2/ Toán tử và các hàm thư viện dùng cho kiểu Char 
 Các ký tự có thể so sánh vớI nhau dựa trên bảng mã ASCII. Vậy có thể 
dùng các toán tử so sánh đốI vớI kiểu này. 
Ví dụ: ‘A’ < ‘B’ vì trong bảng mã ASCII A=65 và B=66 vì 65<66. 
 Hàm CHR(n:Byte): Hàm này cho ta ký tự có mã ASCII bằng n. 
Ví dụ: CHR(65) = ‘A’, CHR(97) = ‘a’, CHR(67) = ‘C’, CHR(98) = ‘b’ 
 Hàm ORD(c:Char): Hàm này cho ta mã ASCII của kí tự c. 
Ví dụ: ORD(‘A’) = 65, ORD(‘a’) = 97 
IV/ Dữ liệu kiểu String (chuỗI) 
 1/ Kiểu String: Là một chuỗI các ký tự, chiều dài tốI đa là 255. 
Ví dụ: 
VAR 
Chuoi : String; 
Chuoi := ‘***CHAO BAN ***’; 
 Bạn cũng có thể giớI hạn cho chuỗI. 
Ví dụ: 
VAR 
Chuoingan : String[8]; 
Chuoingan := ‘ThanhDa’; 
 Nếu khai báo biến như trên, bạn dùng chuổI có chiều dài tốI đa là 8. 
 2/ Toán tử nốI chuỗI: Bạn có thể dùng dấu cộng ‘+’ để nốI hai chuỗI vớI nhau 
Ví dụ: 
VAR 
Chuoi : String; 
Chuoimot : String; 
Chuoihai : String[6]; 
Bạn có thể thực hiện như sau: 
Chuoimot := ‘Truong DHBK’; 
Chuoihai := ‘TP.HCM’ 
Chuoi := Chuoimot + Chuoihai; 
V/ Một số hàm và thủ tục thư viện của Pascal 
 1/ Hàm 
 ‰ Hàm ABS(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Hàm này cho kết quả là trị tuyệt đốI của Num, kiểu kết quả giống kiểu đốI 
số Num. 
Ví dụ: ABS(-34)=34; ABS(-34.5) = 3.4500000000E+01 
 ‰ Hàm EXP(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Kết quả là e mũ Num (eNum), kết quả sẽ có kiểu Real. 
Ví dụ: EXP(2) = e2 
 ‰ Hàm Ln(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Kết quả là Logarit tự nhiên của Num. Kiểu kết quả là Real. 
Ví dụ: Ln(10) = 2.3025850930E+00 
 ‰ Hàm SQR(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Kết quả là bình phương của Num. Kiểu kết quả là kiểu của đốI số. 
Ví dụ: SQR(3) = 9, SQR(1.2) = 1.4400000000E+00 
 ‰ Hàm SQRT(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Kết quả là căn bậc hai của Num (Num phảI lớn hơn 0), kết quả có kiểu là 
Real. 
Ví dụ: SQRT(4) = 2.0000000000E+00 
 ‰ Hàm INT(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Kết quả cho ta phần nguyên của Num. Kiểu kết quả là Real. 
Ví dụ: INT(4.6) = 4.0000000000E+00 
 ‰ Hàm FRAC(Num) 
 ƒ Num có kiểu là Integer hoặc Real. 
 ƒ Cho ta phần lẻ của đốI số. Kiểu kết quả là Real. 
Ví dụ: FRAC(4.3) = 0.3, FRAC(-2.5) = -0.5 
 ‰ Hàm ROUND(Num) 
 ƒ Num có kiểu là Real. 
 ƒ Kết quả làm tròn số theo nguyên tắc thông thường, kiểu kết quả là Integer. 
Ví dụ: ROUND(3.6) = 4, ROUND(3.2) = 3 
 ‰ Hàm TRUNC(Num) 
 ƒ Num có kiểu Real. 
 Ý nghĩa giống như hàm INT. Khi cần kiểu trả về là Integer, bạn phảI dùng 
hàm TRUNC(Num). 
Ví dụ: TRUNC(4.6) = 4 
 ‰ Hàm ODD(Num) 
 ƒ Num có kiểu là Integer. 
 ƒ Hàm này có kết quả là True nếu Num là số nguyên lẻ, trái lạI sẽ cho kết 
quả là False. Vậy kiểu kết quả là Boolean. 
Ví dụ: ODD(4) = FALSE 
 ‰ Hàm RANDOM 
 ƒ Kiểu kết quả là Real. 
 ƒ Kết quả là số nguyên ngẫu nhiên 0<= n<= Num 
 ‰ Hàm UPCASE(Ch) 
 ƒ Ch có kiểu Char. 
 ƒ Kết quả là kí tự hoa tương ứng vớI Ch, kiểu kết quả là Char. 
Ví dụ: UPCASE(‘h’) = H 
 ‰ Hàm COPY(Ch, Vitri, So) 
 ƒ Ch là biểu thức kiểu String. 
 ƒ Vitri và So là biểu thức kiểu Integer. 
 ƒ Hàm này trả về một chuỗI gồm có So kí tự, bắt đầu từ Vitri trong chuỗI Ch. 
Ví dụ: Nếu chuỗI Ch =’PASCAL’, COPY(Ch, 4, 3) sẽ là CAL 
 ‰ Hàm LENGTH(Ch) 
 ƒ Ch là một chuỗI 
 ƒ Cho biết chiều dài của chuỗI Ch, kiểu kết quả là Integer. 
Ví dụ: LENGTH(‘PASCAL’) = 6 
 ‰ Hàm POS(SubCh, Ch) 
 ƒ SubCh, ch là chuỗi 
 ƒ Hàm này cho ta biết vị trí xuất hiện đầu tiên của SubCh ở trong biểu thức 
Ch, nếu SubCh không nằm trong Ch thì nó sẽ cho trị 0. 
Ví dụ: nếu Ch = ‘PASCAL’, thì POS( ‘AS’, Ch) = 2, POS( ‘L’, Ch)= 6 
 POS( ‘T’, Ch) = 0 
 2/ Thủ tục 
 ‰ CLRSCR: Xoá màn hình và đưa dấu nháy về dòng 1 và cột 1 của màn 
hình. 
 ‰ GOTOXY(X, Y): Đem dấu nháy về dòng Y cột X 
 ‰ EXIT: Nếu Exit thuộc chương trình con thì chấm dứt chương trình con và 
trở về chỗ gọI nó. Nếu thuộc chương trình chính thì sẽ chấm dứt chương trình. 
 ‰ HALT: Chấm dứt thực hiện chương trình. 
 ‰ DELAY(time) 
 ƒ Time có kiểu Integer, tính theo 1/1000 giây. 
 ƒ Thủ tục DELAY(time) dừng một thờI gian là time. 
 ‰ DELETE(Ch, Vitri, So) 
 ƒ Ch có kiểu chuỗI 
 ƒ Vitri, So kiểu Integer 
 ƒ Thủ tục này sẽ xoá trong biểu thức Ch một số kí tự là So, bắt đầu từ vị trí. 
Ví dụ: Nếu Ch = ‘PASCALVISUALBASIC’ 
 thì DELETE(Ch, 7, 11) sẽ được PASCAL 
 ‰ INSERT(Ch1, Ch2, Vitri) 
 ƒ Ch1, Ch2 là biểu thức kiểu chuỗi. 
 ƒ Vitri là biểu thức kiểu Integer. 
 ƒ Thủ tục này sẽ thêm Ch1 vào trong chuỗI Ch2 ở trước vị trí Vitri 
Ví dụ: nếu Ch2=’ASCAL’ thì Insert(‘P’, Ch2, 1) ta sẽ được ‘PASCAL’. 
 Nếu Vitri vượt quá chiều dài của chuỗI Ch2 thì Ch1 sẽ được nốI vào sau 
chuỗI Ch2. Ví dụ: Insert(‘BASIC’, Ch2, 8) sẽ được ‘ASCALBASIC’ 
 ‰ STR(Giatri, Ch) 
 ƒ Giatri là một biểu thức Integer hoặc Real có ghi dạng in ra 
 ƒ Ch là biến kiểu chuỗi. 
 ƒ Thủ tục này cho chúng ta Ch là dạng chuỗI biểu diễn cho Giatri. 
Ví dụ: j := 12345; Thì STR(j:6, Ch) cho ta Ch=’ 12345’ (có 1 khoảng trắng ở 
trước). Nếu dùng STR(j, Ch) thì ta được ‘12345’. 
 ‰ VAL(Ch, Bien, Loi) 
 ƒ Ch là biểu thức kiểu chuỗi. 
 ƒ Bien là biến có kiểu là Integer hoặc Real. 
 ƒ Loi là biến có kiểu là Integer. 
 ƒ Thủ tục này sẽ biến chuỗI Ch thành số và gán vào Bien (Ch phảI là là một 
chuỗI biểu diễn số nguyên hoặc số thực). 
Ví dụ: Ch =’2004’ thì VAL(Ch, x, e) sẽ cho x=2004, e=0. 
 Nếu Ch=’2004A’ thì VAL(Ch, x, e) sẽ cho x không xác định, e=5 (kí tự 
thứ 5 trong chuỗI Ch bị lỗI). 
 ƒ Nếu không có lỗI, e=0, nếu có lỗI, e sẽ bằng vị trí đầu tiên gây ra lỗi. 
 ƒ Trong chuỗI Ch không được có dấu trắng ‘ ‘đi trước hoặc sau số. 
 TÓM TẮT 
 # Cần nắm vững các dữ liệu kiểu số, kiểu Logic, kiểu Char, kiểu String, 
cách khai báo các kiểu, biết giá trị giớI hạn của từng loạI kiểu, khi khai 
báo nên chọn kiểu gì cho phù hợp, tránh tốn nhiều bộ nhớ, biết cách khai 
báo các biến, các toán tử sử dụng trong mỗI kiểu. 
 # Cần biết thêm các hàm và thủ tục dùng trong các kiểu và cách dùng hàm 
và thủ tục trong chương trình để thực hiện những yêu cầu của đầu bài 
một cách nhanh chóng. 
 BÀI TẬP THỰC HÀNH 
 n Xác định các kiểu dữ liệu và giá trị giớI hạn cho từng biến qua các khai 
báo biến như sau: 
 A/ x : Integer; 
 B/ x : Byte; 
 C/ y : Longint; 
 D/ Chuoi : Char; 
 E/ Chuoi : String; 
 F/ Ketqua : Real; 
 G/ Tongso : Double; 
 H/ Ketqua : Boolean; 
 I/ Ketqua : Single; 
 o Tìm câu sai trong các khai báo biến sau đây: 
 A/ Tongso : Real; 
 B/ Soam : Int; 
 C/ Soduong : Integer; 
 D/ Dungsai : Boolean; 
 p Thêm, bớt sửa lại chương trình sau cho đúng (có ghi chú cho bạn chỗ 
sai, ký hiệu ‘:=’ là phép gán trong Pascal). Kiểm tra lạI bằng cách chạy 
thử chương trình: 
 Program TIMCHOSAI {thiếu} 
 Var 
 m : Integer; 
 n : Real; 
 ch : Chuoi; {sai} 
 Begin 
 m := 19; 
 n := 25.62; 
 Ch := Ban thay hoc Pascal co kho lam không?’; {thiếu} 
 a := ‘Hoc di doi voi hanh’; {sai, vì sao?} 
 Writeln (‘So nguyen m =’, m); 
 Writeln (‘So thuc n =’, n); 
 Writeln ‘Hoi ban mot chut‘, Ch); {thiếu} 
 Readln; 
 End. 
 q Tìm chỗ sai và thiếu trong các chương trình sau, nêu rõ điều sai hoặc 
thiếu: 
 Program BongdaSEAGAMES22; 
 X : Integer; 
 Ch1 : Ctring; 
 Ch2 : String; 
 Begin 
 Ch1 := ‘Doi tuyen bong da VIETNAM’ 
 Ch2 := ‘Doi tuyen bong da THAILAN’ 
 X := 1; 
 Writeln(‘Trong tran dau ngay 30/11/2003 vao luc 17h30 ’, Ch1, ‘ Da 
hoa ’, Ch2, ‘ voi ti so ’, x, ‘-‘, x); 
 Writeln(‘Ban cam thay vui hay nuoi tiec cho doi tuyen Viet Nam’); 
 Readln; 
 End. 
Ghi chú: Cho biết chỗ sai trong chương trình tính từ trên xuống: thiếu, sai, 
thiếu, thiếu. 
 r Nhập vào chương trình như sau, chạy xem kết quả và nhận xét. 
 Program THUHAM; 
 Var 
 X : Real; 
 Y : Real; 
 Z : Integer; 
 Ch1 : String; 
 Ch2 : String; 
 Begin 
 X := 15.56; 
 Y := 20.92; 
 Z := 5; 
 Ch1 := ‘Seagame2’; 
 Ch2 := ‘DuoctochuctaiVietNam’; 
 Writeln (‘Gia tri tuyet doi cua X la: ‘, ABS(X)); 
 Writeln (‘e luy thua Z la: ‘, EXP(Z)); 
 Writeln (‘Logarith cua Z la: ‘, Ln(Z)); 
 Writeln (‘Binh phuong cua Z la: ‘, SQR(Z)); 
 Writeln (‘Can bac hai cua Z la: ‘, SQRT(Z)); 
 Writeln (‘Phan nguyen cua X va Y la: ‘, INT(X), INT(Y)); 
 Writeln (‘Phan le cua so X va Y la: ‘, FRAC(X), FRAC(Y)); 
 Writeln (‘Ket qua tron so cua X va Y la: ‘, ROUND(X), ‘ ‘ ,ROUND(Y)); 
 Writeln (‘Phan nguyen cua X la “so nguyen”: ‘, TRUNC(X)); 
 Writeln (‘Copy(Ch1,4,5) la: ‘, COPY(Ch1,4,5)); 
 Writeln (‘Chieu dai cua chuoi Ch1 va Ch2 la: ‘, LENGTH(Ch1), ‘ ‘, 
LENGTH(Ch2)); 
 Writeln (‘Chu e co dau tien trong chuoi Ch1 la: ‘, POS(‘e’, Ch1)); 
 Readln; 
 End. 
 s Viết chương trình có dùng CLRSCR như sau, bạn chạy thử chương trình 
3 lần, nhận xét kết quả xuất hiện trên màn hình. 
 Program DungCLRSCR; 
 Uses CRT; 
 Begin 
 Clrscr; 
 Writeln (‘Chao mung Sea Games 22 to chuc tai Viet Nam’); 
 Readln; 
 End. 
 BÀI 
Câu lệnh đơn 
KIẾN THỨC YÊU CẦU 
‰ Biết cách sử dụng sắp xếp câu lệnh trong chương trình. 
‰ Biết cách sử dụng các lệnh, thủ tục, hàm  của các đơn vị chuẩn, 
biết cách khai báo bằng lệnh Uses. 
‰ Biết ý nghĩa và khai báo các kiểu Type, const và khai báo các biến. 
‰ Biết sơ qua về hàm và thủ tục, cách khai báo và cách gọI trong thân 
của chương trình. 
‰ Biết dùng các câu lệnh và các phát biểu có thể dùng trong thân của 
chương trình. 
‰ Biết các lệnh nhập dữ liệu từ bàn phím, lệnh xuất dữ liệu ra màn hình 
và máy in. 
I/ Sử dụng câu lệnh của Pascal 
 1/ Câu lệnh khai báo dữ liệu: 
 Sau khai báo Program tên chương trình dấu chấm phẩy là khai báo đơn vị 
chuẩn (Unit) nếu như bạn dùng lệnh, hàm, thủ tục  liên quan đến đơn vị 
chuẩn đó. Bạn khai báo thư viện lệnh (Uses) như sau: 
Khai báo: Uses tên đơn vị; 
Ví dụ: Trong bài tập 6 của bài trước, khi dùng lệnh CLRSCR; để xoá thông tin 
trên màn hình, đưa dấu nháy về góc trái trên của màn hình. Lệnh này thuộc 
đơn vị chuẩn CRT, nếu bạn không khai báo Uses Crt; trình biên dịch sẽ báo lỗI 
vì nó không hề biết lệnh Clrscr, nó xem như bạn chưa định nghĩa biến này. 
 Turbo Pascal có các đơn vị chuẩn như : Crt, Dos, Graph, Grảph, Overlay, 
Printer, System, Turbo và Windos. 
 Khai báo kiểu Type thường để khai báo một cấu trúc dùng trong chương 
trình. 
Ví dụ: khai báo một kiểu tập hợp 
Type 
 TapN = Set of Integer; 
 Traicay = (Nhan, saurieng, cam, quyt); 
 Taptraicay = Set of Traicay; 
Ví dụ: Khi khai báo một mẫu tin 
Type 
 Hocsinh = record 
 Hoten : String[40]; 
 Namsinh : 1990 .. 1995; 
4 
 Noisinh : String; 
End; 
 Khai báo Const dùng để khai báo một hằng nào đó. 
Ví dụ: 
Const 
n = 10; 
 Khai báo biến thường là khai báo sau cùng, trước các hàm và thủ tục (nếu 
có), trước thân của chương trình. Trước khi khai báo biến bạn phảI dùng từ 
khoá VAR như đã đề cập ở trên. 
Ví dụ: 
Var 
x,y,n,m : Integer; 
k : Real; 
Ketqua : String; 
 2/ Sử dụng hàm và chương trình 
 Để cho một chương trình sáng sủa dễ hiểu, ngườI ta thường dùng hàm 
và thủ tục trong chương trình, vị trí của chúng thường được đặt trước thân 
của chương trình chính. 
 a/ hàm 
 Function tênhàm(các thông số (cách nhau bằng dấu ‘;’): kiểu trả về; 
 Var 
 Begin 
 .. 
 .. 
 End; 
 b/ Thủ tục 
 Procedure tênthủtục(các thông số (cách nhau bằng dấu ‘;’); 
 Var 
 Begin 
 . 
 . 
 End; 
Ghi chú: Hàm và thủ tục các bạn sẽ được học trong các bài sau 
 3/ Các câu lệnh dùng trong thân chương trình 
 ƒ Câu lệnh đơn: như lệnh gán giá trị (:=). Ví dụ: x:=5; y:=8; z:=7.9; 
 Ch1:= ‘Doi bong da Viet Nam’; Lệnh gọI thủ tục, gọI hàm 
ví dụ: Có một thủ tục 
Procedure Nhap(Var an:Mang; m,n:Integer; x,y:Integer); 
Var 
Begin 
End; 
Begin {Thân chương trình} 
 .. 
 .. 
 Nhap(a,m,n,WhereX,WhereY); {Lệnh gọI thủ tục} 
 .. 
 .. 
End. 
Giả sử bạn có một hàm như sau: 
Function Max(m:Real; n:Real;):Real; 
Begin 
 . 
 . 
End; 
Begin 
 . 
 . 
 Writeln(‘So lon nhat cua hai so tren la: ‘, Max(a,b); {lệnh gọI hàm} 
 Readln; 
End. 
 ƒ Các câu lệnh nhập, xuất: 
 Read(biến1,biến2, ,biến n); Write(mục1, mục2, , mục n); 
 ƒ Các câu lệnh có cấu trúc: Như lệnh lựa chọn If, case, lệnh lặp như 
For, While, Repeat. Các lệnh này các bạn sẽ được học trong các bài sắp tới. 
 ƒ Câu lệnh ghép: Begin  end; 
Ghi chú: Sau End của hàm, thủ tục, câu lệnh ghép là dấu chấm phẩy ‘;’. 
II/ Lệnh nhập - xuất dữ liệu 
 1/ Lệnh nhập dữ liệu 
 Từ bàn phím: Để nhập dữ liệu từ bàn phím vào cho các biến của chương 
trình, bạn dùng lệnh Read hoặc Readln như sau: 
 Read(biến1, biến2, , biếnN); 
 Readln(biến1, biến2, , biếnN); 
 ƒ Trong đó các biến1, biến2, , biếnN phảI có kiểu số nguyên, số thực, ký 
tự hoặc kiểu chuỗi. 
 ƒ MỗI câu lệnh Read hoặc Readln đều dừng chương trình để cho chúng ta 
nhập dữ liệu vào các biến, nếu nhập chưa đủ, máy chờ cho đến khi nhập xong. 
 Lệnh Readln; 
 ƒ Không đọc giá trị gì cả, chờ cho đến khi nhấn phím Enter sẽ trở về màn 
hình soạn thảo, được dùng để kiểm tra kết quả của chương trình, nếu không 
có lệnh này, khi nhấn phím Ctrl+F9 bạn không thấy kết quả, nó sẽ về ngay màn 
hình soạn thảo, muốn thấy, bạn phảI nhấn Alt+F5. 
 ƒ Lệnh gán giá trị cho một biến 
 Khi muốn gán giá trị cho một biến đã được khai báo, bạn dùng dấu hai 
chấm và dấu bằng (:=). 
Ví dụ: x := 25; y:= 3.6; Chuoi := ‘Hoc Pascal khong co gi kho’; 
 2/ Lệnh xuất dữ liệu 
 Để xuất dữ liệu ra màn hình, chúng ta dùng lệnh Write hoặc Writeln. 
 Write(mục1, mục2, , mụcN); 
 ƒ Lệnh này viết ra các mục từ mục1 đến mụcN, không xuống hàng sau khi 
viết xong mục cuốI cùng. Các mục có thể là biến, hằng, biểu thức  nếu là 
chuỗI thì có bao hai dấu nháy đơn, nếu là biến, chỉ cần ghi tên biến. 
Ví dụ: 
Program LenhWrite; 
Begin 
 Write(‘Chuc mung ban’); 
 Write(‘den voi ngon ngu Pascal.’); 
 Readln; 
End. 
 Chạy thử chương trình, sẽ có kết quả hiện ra như sau: 
 Chuc mung ban den voi ngon ngu Pascal. 
 Mặc dầu dùng hai câu lệnh Write, nhưng kết quả xuất hiện trên một dòng 
như kết quả của chương trình trên, bạn có thể dùng: 
Program LenhWrite; 
Begin 
 Write(‘Chuc mung ban ’, ‘den voi ngon ngu Pascal.’); 
 Readln; 
End. 
 Bạn có thể xem ví dụ sau: 
Program LenhWrite; 
Var 
X : integer; 
Begin 
 X:= 14; 
 Write(‘Ban Son nam nay duoc: ‘, X, ‘ tuoi.’); 
 Readln; 
End. 
 Kết quả sẽ là Ban Son nam nay duoc 14 tuoi. 
 Lệnh Writeln(mục1, mục2, , mụcN); 
 ƒ Lệnh này sẽ xuống dòng sau khi viết mục cuốI cùng, các mục cũng có ý 
nghĩa như trong lệnh Write. 
Ví dụ: 
Program LenhWriteln; 
Begin 
 Writeln(‘Chuc mung ban’); 
 Writeln(‘Den voi ngon ngu Pascal.’); 
 Readln; 
End. 
 Kết quả sẽ là: 
 Chuc mung ban 
 Den voi ngon ngu Pascal. 
Program LenhWriteln; 
Begin 
 Writeln(‘Chao mung Sea Games 22’); 
 Write(‘Duoc to chuc tai ’); 
 Write(‘Viet Nam.’); 
End. 
 Kết quả sẽ là: 
 Chào mung Sea Games 22 
 Duoc to chuc tai Viet Nam. 
Write(R:10:6); sẽ viết số thực chiếm 10 chỗ, trong đó 6 chỗ dành cho phần 
thập phân. 
Write(I:10); sẽ viết số nguyên chiếm 10 chỗ. 
 Để xuất dữ liệu ra máy in, bạn phảI khai báo trong chương trình: 
Uses Printer; 
 Dùng câu lệnh Write hoặc Writeln có dạng như sau: 
 Write(LST, mục1, mục2, , mụcN); 
 Writeln(LST, mục1, mục2, , mụcN); 
 ƒ VớI LST là tên thiết bị máy in đã khai báo trong Unit Printer. 
 TÓM TẮT 
 # Khi dùng các lệnh, hàm, thủ tục trong các đơn vị chuẩn, bạn phảI khai 
báo đúng. Ví dụ: nếu dùng lệnh Clrscr, Gotoxy(x,y) bạn phảI khai báo 
Uses Crt; khi muốn xuất dữ liệu ra màn hình, bạn phảI khia báo Uses 
Printer;  
 # Dùng khai báo Type để khai báo các cấu trúc như tập hợp, mẫu tin ... 
nếu có dùng hằng số thì khai báo Const. Trước khi khai báo các biến 
nhớ có từ khoá Var. 
 # Cấu trúc của một hàm bắt đầu bằng Function, một thủ tục bắt đầu bằng 
Procedure. Xem lạI cách gọI chúng trong chương trình. 
 # lệnh gán dùng ‘:=’, khi phảI lựa chọn một vấn đề dùng phát biểu If hoặc 
Case, khi cần công việc lặp đi lặp lạI, dùng phát biểu For, While hoặc 
Repeat. Câu lệnh ghép sẽ bắt đầu bằng từ khoá Begin và kết thúc bằng 
End và dấu chấm phẩy. 
 # Khi nhập dữ liệu từ bàn phím dùng lệnh Read hoặc Readln. 
 # Khi cần xuất dữ liệu ra màn hình dùng lệnh Write hoặc Writeln, nếu dùng 
Write thì không xuống hàng, nếu dùng Writeln thì sẽ xuống hàng sau khi 
thực hiện. Nếu dùng khai báo Uses Printer; sẽ xuất ra máy in. 
 BÀI TẬP THỰC HÀNH 
 n Viết một chương trình xuất ra màn hình hai chuỗI: ‘Chao mung doi tuyen 
bong da Viet Nam’ và ‘Tai Sea Game 22’. 
 A/ Dùng một lệnh Write để kết quả hai chuỗI hiện ra trên một dòng. 
 B/ Dùng hai lệnh Write để có kết quả như câu A. 
 C/ Dùng hai lệnh để chuỗI một sẽ xuất hiện ở dòng trên, chuỗI hai xuất 
hiện ở dòng sau. 
 D/ Dùng thêm lệnh Clrscr. giảI thích kết quả hiện ra trên màn hình khi 
thực hiện lệnh này. 
 o Tìm câu đúng trong các lệnh gán các biến sau đây: 
 A/ Tongso := Real; 
 B/ Soam =: Int; 
 C/ Soduong :- Integer; 
 D/ Dungsai :: Boolean; 
 p Thêm, bớt sửa lại chương trình sau cho đúng, kiểm tra lạI bằng cách 
chạy thử chương trình: 
 Program TIMCHOSAI; 
 Var 
 m : Integer; 
 n : Real; 
 ch : String; 
 Begin 
 Clrscr; 
 m =: 19; 
 n := 25.62; 
 Ch := ‘Hoc di doi voi hanh’; 
 Writeln (‘So nguyen m =’, ‘m’); 
 Writeln (‘So thuc n =’, n); 
 Writeln ‘Hoi ban mot chut‘, ‘Ch’); 
 Readln; 
 End. 
 q Víết chương trình có khai báo 3 biến x, y và z có kiểu nguyên, thực hiện 
phép gán x bằng 2, y bằng 4 và z bằng tích của hai số x và y. Xuất kết 
quả ra màn hình câu: 
 A/ Tong hai so x va y la: (kết quả đúng). 
 B/ Tong hai so x va y la: 
 (kết quả đúng) 
 C/ (Kết quả đúng) la ket qua cua tich hai so x va y. 
 r Viết chương trình vớI khai báo 3 biến như trên, nhưng không dùng 
phép gán, mà nhập từ bàn phím hai biến x và y. sau đó báo ra kết quả giống 
như các trường hợp A, B và C ở trên. 
 s GiảI thích chương trình sau thực hiện điều gì. 
 Program TinhToan; 
 Uses Crt; 
 Var 
 Bien : real; 
 Ketquamot, Ketquahai, ketquaba : Real; 
 Begin 
 Clrscr; 
 Writeln(‘Nhap vao mot bien :’); 
 Readln(Bien); 
 Ketquamot := Bien * Bien; 
 Ketquahai := 4 * Bien; 
 Ketquaba := Bien * SQRT(2); 
 Writeln(‘Do ban day la gi? = ‘, Ketquamot : 10 : 1); 
 Writeln(‘Ket qua nay la gi? = ‘, Ketquahai : 10 : 1); 
 Writeln(‘Cung cau hoi nhu tren ‘, Ketquaba : 10 : 2); 
 Readln; 
 End. 
 t Viết chương trình tính diện tích hình tam giác theo công thức Hê Rông 
 S = căn bậc hai cùa p(p-a)(p-b)(p-c) vớI p =(a+b+c)/2. 
 u Viết chương trình tính 4 phép toán cơ bản cộng, trừ, nhân, chia hai số, 
vớI hai số được nhập từ bàn phím. 
 v Viết chương trình tính số dư của phép chia số nguyên thứ nhất cho số 
nguyên thứ hai, vớI hai số nguyên được nhập từ bàn phím. 

File đính kèm:

  • pdfgiao_trinh_ngon_ngu_lap_trinh_pascal_phan_2.pdf