Toán tử quan hệ: = (bằng); > (lớn hơn); >=
(lớn hơn hoặc bằng); < (nhỏ hơn); <= (nhỏ
hơn hoặc bằng) và <> (khác)
• Toán tử nguyên: + (cộng); - (trừ); *
(nhân); DIV (chia lấy phần nguyên) và
MOD (chia lấy phần dư)
• Ví dụ:• (13 mod 3): sẽ cho kết quả là một số nguyên
chính là phần dư của việc chia 13 cho 3 và có
giá trị là 1
• (13 div 4): sẽ cho kết quả là một số nguyên
chính là
• thương nguyên của việc chia 13 cho 4 và có giá
trị là 3
• Khi viết các phép toán thuộc kiểu nguyên trong
Pascal cần chú ý
• đến miền giá trị của nó. Ví dụ:• Bên cạnh cách biểu diễn số nguyên như ở trên
(biểu diễn bằng 2 byte), Pascal còn có thêm một
kiểu đơn giản chuẩn là kiểu biểu diễn số nguyên
bằng một byte. Phạm vi biểu diễn số nguyên khi
này là từ 0 đến 255 và được gọi là kiểu Byte.
• Ngoài ra, Turbo Pascal từ Version 4.0 trở đi và
một số Pascal khác đã đưa thêm vào các định
nghĩa kiểu số nguyên mới với các từ khoá Word,
ShortInt (Short Integer), LongInt (Long Integer)
                
              
                                            
                                
            
 
            
                 138 trang
138 trang | 
Chia sẻ: trungkhoi17 | Lượt xem: 658 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn tin học - Chương 4: Lập trình bàng Pascal - Lê Văn Năm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
án 
dựa theo cú pháp của ngôn ngữ.
• + Biên dịch: Một phần mềm biên dịch hay 
ngắn gọn hơn trình dịch là phần mềm có 
khả năng chuyển dịch mã nguồn của một 
ngôn ngữ ban đầu sang dạng mã mới thuộc 
về ngôn ngữ cấp thấp hơn.
• Ngôn ngữ cấp thấp nhất là một chuỗi các 
chỉ thị máy tính mà có thể được thực hiện 
trực tiếp bởi chính máy tính (thông qua 
các thao tác trên vùng nhớ). 
• Trước đây, hầu hết các trình dịch cũ thường 
phải thông dịch từ mã nguồn sang bộ mã phụ 
(các tệp có dang *.obj), rồi sau đó, mới biên dịch 
tiếp sang các tập tin thi hành. Ngày nay, hầu hết 
các trình dịch đều có khả năng biên dịch mã 
nguồn trực tiếp sang thành các tập tin thi hành 
hay biên dịch sang các dạng mã khác thấp hơn 
tuỳ theo yêu cầu của người lập trình.
• Điểm khác nhau giữa thông dịch và biên dịch là: 
Trình thông dịch sẽ dịch từng câu lệnh một và 
chương trình đích sẽ không được lưu lại. Còn 
trình biên dịch sẽ dịch toàn bộ chương trình, cho 
ra chương trình đích được lưu lại trong máy tính 
rồi mới thực hiện chương trình. Một chương 
trình máy tính có thể được thực thi bằng cách tổ 
hợp của việc biên dịch và thông dịch.
• a/ Sơ lược sự hình thành và phát triển 
của ngôn ngữ lập trình Pascal
• PASCAL là ngôn ngữ lập trình được giáo sư 
Niklaus Wirth ở trường Đại học Zurich, Thụy 
Sỹ phát minh ra vào những năm 70 của thế 
kỷ 20. Ông đặt tên ngôn ngữ này là PASCAL 
để tưởng nhớ nhà toán học người Pháp ở 
thế kỷ 17 Blaise Pascal
4.1. 2 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PASCAL
• Ngôn ngữ PASCAL được hình thành với mục 
đích ban đầu nhằm hướng dẫn sinh viên 
trong các trường đại học một thói quen 
viết chương trình có cấu trúc sáng sủa, rõ 
ràng, dễ đọc và dễ hiểu cho những người 
khác.
• Trong quá trình phát triển, nó đã hình thành các 
nhánh ngôn ngữ khác nhau nhưng phổ biến hơn cả 
là:
• - ISO PASCAL được gọi là PASCAL chuẩn 
(International Standard Organization)
• - ANSI PASCAL (Amerrican National
Satandard Institute)
• - TURBO PASCAL
• - IBM PASCAL
• - FREE PASCAL
Trong khuôn khổ của môn học, bài giảng đề cập đến 
TURBO PASCAL với phiên bản 7.0. Để sử dụng được 
ngôn ngữ lập trình này, người sử dụng cần tối thiểu 02 
tệp tin là TURBO.EXE và TURBO.TPL, được lưu trong 
cùng một thư mục. Trong đó tập tin TURBO.EXE chứa 
hệ soạn thảo cho phép người sử dụng biên tập chương 
trình dưới dạng một tệp văn bản .PAS, và tệp 
TURBO.TPL là một tệp 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ủa PASCAL. 
Ngoài ra để dịch chương trình viết bằng 
ngôn ngữ thuật toán PASCAL sang thành 
tệp chương trình viết bằng ngôn ngữ máy 
người sử dụng cần phải có thêm tệp 
TPC.EXE (Turbo Pascal Compile).
b/ Các yếu tố cơ sở của ngôn ngữ Pascal
+ Bộ ký tự
• Bộ ký tự trong TURBO PASCAL bao gồm
• - Các chữ cái: Là các chữ cái trong bảng chữ cái 
tiếng Anh từ A đến Z và từ a đến z
• - Các chữ số: Là các chữ số hệ thập phân từ 0 
đến 9
• - Các ký hiệu đặc biệt: Là các ký tự đặc biệt có 
trên bàn phím ký tự của máy tính điện tử
• + Tên: Là một dãy các ký tự, gồm các chữ 
cái, chữ số và dấu gạch nối. Tên bắt đầu 
bởi chữ cái và không chứa các ký tự toán 
tử hay dấu khoảng trống.
• Tên dùng để chỉ một đối tượng được sử 
dụng trong chương trình, do người sử 
dụng đặt ra. Khi đặt tên cho đối tượng, 
người sử dụng cần lưu ý:
• Tên phải là duy nhất, dãy ký tự đã dùng đặt cho 
đối tượng này thì không đặt được cho đối tượng 
khác. Trong Pascal, các ký tự trong dãy được 
dùng đặt tên không phân biệt chữ hoa hay chữ 
thường
• Dãy ký tự được dùng đặt tên chỉ có 63 ký tự đầu 
là có ý nghĩa. Nếu dãy quá dài thì từ ký tự thứ 
64 trở đi, Pascal sẽ tự loại bỏ
• Tên đặt cho đối tượng phải khác với từ khóa 
của Pascal 
• Ví dụ, có các dãy ký tự sau:
• a. Baitapso1
• b. Bai tap so 1
c. 1sobaitap
• d. Bai_tap_so_1 e. Bai-tap-so-1
• f. Baitap1&2 g. Baitap1+2
• Trong số các dãy trên thì dãy b là không 
sử dụng để đạt được tên vì chứa các dấu 
khoảng trống, dãy c không sử dụng được 
vì bắt đầu bằng chữ số, dãy e và g không 
sử dụng được vì chứa dấu toán tử (dấu 
gạch dưới _ khác với dấu toán tử -)
• Ngoài ra, Pascal có những tên chuẩn 
dùng để chỉ các đối tượng đã được Pascal 
định nghĩa sẵn (kiểu dữ liệu, như thủ tục 
xuất, nhập dữ liệu, như các hàm có 
sẵn,) bao gồm
• Boolean, Char, Integer, Word, Byte, Real, 
Text
• False, True, Maxint
• Abs, Arctan, Chr, Cos, Sin, Eof, Eoln, Exp, 
Ln, Odd, Ord, Round, Trunc, Sqr, Sqrt, 
Pred, Succ
• Dispose, New, Get, Put, Read, Readln, 
Write,Writeln, Reset, Rewrite
• + Lời giải thích: là các dòng văn bản hoặc 
đoạn chương trình không được thi hành khi 
chương trình thực hiện.
• Như để ghi chú cho công việc của một dòng lệnh 
hoặc một đoạn chương trình, người sử dụng có 
thể diễn tả bằng ngôn ngữ tự nhiên nhưng phải 
đảm bảo để máy tính nhận biết và không thi hành 
nó bằng cách đặt vào trong cặp “{ .}” hoặc 
cặp “(*.*)”. Lúc này trong cửa sổ soạn thảo 
chương trình của Pascal, dòng chú thích sẽ bị mờ 
đi và chúng ta hiểu rằng đó là phần mà máy tính 
sẽ không kiểm soát và thực hiện chúng
• + Dấu “;”: Được dùng làm dấu ngăn cách giữa 
các câu lệnh trong ngôn ngữ Pascal. Không 
hiểu theo nghĩa là dấu kết thúc lệnh.
• Có những ngôn ngữ lập trình quy định mỗi câu 
lệnh phải viết trên một dòng, nhưng với ngôn 
ngữ Pascal trên một dòng có thể viết nhiều câu 
lệnh và một câu lệnh có thể viết trên nhiều dòng. 
Vậy để máy tính có thể phân biệt câu lệnh này 
với câu lệnh khác, Pascal sử dụng dấu “;” để 
ngăn cách chúng với nhau.
• c/ Cấu trúc chương trình Pascal
+ Phần tên chương trình: Bắt đầu bởi từ 
khóa Program theo quy cách
Ví dụ:
Program ;
Program Baitap1;
• + Phần khai báo: các đại lượng, các đối tượng 
được sử dụng trong chương trình đều phải 
được khai báo trước tại phần này. Trừ các đại 
lượng chuẩn đã được Pascal định nghĩa sẵn.
• Phần khai báo trong Pascal thường có các khai 
báo sau: 
User : Khai báo các đơn vị chương trình
Const : Khai báo các hằng
• Type : Định nghĩa các kiểu dữ liệu
• Var : Khai báo các biến
• Label : Khai báo các nhãn chương trình
• Procedure : Khai báo các chương trình con
• Function : Khai báo các hàm do người lập trình 
định nghĩa
Khi khai báo người sử dụng khai báo hết các đại lượng 
cùng nhóm, loại rồi mới chuyển sang nhóm, loại mới. 
Chứ không khai báo một nhóm các đối tượng cùng loại 
bởi nhiều từ khoá
• Ví dụ: Const M=5;
• N = 10; Var
• Ten : Array [1..N] of String[25]; Tuoi: Array 
[1..N] of Integer;
• Phần thân chương trình: được bắt đầu 
bằng từ khóa “Begin” và kết thúc bởi từ 
khóa “End.” Giữa cặp từ khóa này là các 
lệnh tương ứng với các thao tác của 
thuật toán.
• Mỗi chương trình Pascal chỉ có duy nhất 
một từ khóa “End.”, từ khóa này báo cho 
máy tính biết rằng mọi công việc giao cho 
chương trình đã hoàn tất, các lệnh ghi sau 
từ khóa này sẽ không có ý nghĩa gì.
• Ví dụ: BEGIN
• Write (' I like Pascal ');
• Readln; END.
• d/ Soạn thảo và chạy thử nghiệm 
chương trình Pascal
• Để đưa một chương trình vào máy tính điện 
tử qua hệ thống các quy tắc của ngôn ngữ 
lập trình Pascal, người sử dụng thực hiện 
tệp tin TURBO.EXE. Trên cửa sổ soạn thảo 
của Pascal, ngưởi sử dụng nhập các lệnh 
vào theo đúng quy tắc của ngôn ngữ lập 
trình. 
• Trước khi dịch chương trình đã được soạn thảo 
thành một tệp thi hành (tệp chương trình có 
phần mở rộng EXE), người sử dụng cần thử 
nghiệm để kiểm tra các kết quả đạt được bằng 
cách ấn tổ hợp phím CTRL +F9 tại cửa sổ soạn 
thảo chương trình (hoặc vào thực đơn thanh 
ngang – chọn Run, trong thực đơn đổ xuống 
chọn mục Run) 
• a/ Hằng
• Hằng là đại lượng nhận một giá trị và nó 
không thay đổi trong suốt quá trình 
chương trình thực hiện. Các hằng phải 
được khai báo trước khi sử dụng, trừ các 
hằng chuẩn đã được Pascal định nghĩa 
sẵn.
• Trong Pascal, có các hằng được định 
nghĩa sẵn:
4.2 SỬ DỤNG CƠ BẢN NGÔN NGỮ LẬP TRÌNH PASCAL 
(Hướng dẫn sử dụng cơ bản ngôn ngữ lập trình Pascal)
• + Kiểu dữ liệu (kiểu biến): là quy định về cấu 
trúc và miền giá trị mà một biến thuộc kiểu đó có 
thể nhận được cùng tập hợp các phép toán xác 
định trên miền giá trị đó.
• Trong Pascal các kiểu dữ liệu được phân thành 
4 nhóm:
• + Kiểu dữ liệu vô hướng (còn gọi là kiểu giản 
đơn)
• - Kiểu đơn giản chuẩn bao gồm:
• Kiểu Logic
• Kiểu số nguyên
• Kiểu số thực
• Kiểu ký tự
• Kiểu vô hướng do người lập trình tự định 
nghĩa
• Kiểu khoảng con
• Kiểu liệt kê
• + Kiểu dữ liệu có cấu trúc:
- Kiểu mảng
- Kiểu tập hợp
- Kiểu bản ghi
- Kiểu tệp
• + Kiểu dãy ký tự
• + Kiểu dữ liệu con trỏ
• Kiểu dữ liệu logic (Boolean)
Dữ liệu kiểu logic là dữ liệu chỉ nhận
các giá trị logic là True và False. Kiểu
logic được định nghĩa bởi từ khóa
Boolean
Các biến nhận giá trị logic được gọi là
biến logic, và biến có giá trị True sẽ
“>” biến có giá trị False.
• Một số toán tử liên quan đến biến
logic bao gồm:
- Toán tử quan hệ: = (bằng); > (lớn
hơn); >= (lớn hơn hoặc bằng); < (nhỏ
hơn); 
(khác)
- Toán tử logic: And (hội); Or 
(tuyển); Not (phủ định hay còn gọi là
đảo) và Xor (hoặctriệt tiêu)
Bảng kết quả của các phép toán lô-gic: 
Var
Gioitinh : Boolean;
Tuy nhiên, cũng cần lưu ý rằng, biến logic không 
nhận giá trị thông qua việc nhập trực tiếp qua bàn 
phím.
• Kiểu dữ liệu số nguyên (Integer)
Dữ liệu kiểu số nguyên là tập hợp các số nguyên 
nằm trong khoảng – 32768 đến +32767. Kiểu dữ 
liệu nguyên được định nghĩa bởi từ khóa Integer.
Các biến kiểu số nguyên được khai báo thông 
qua từ khóa
Var
Một số toán tử liên quan đến dữ liệu kiểu nguyên:
Toán tử quan hệ: = (bằng); > (lớn hơn); >= 
(lớn hơn hoặc bằng); < (nhỏ hơn); <= (nhỏ
hơn hoặc bằng) và (khác)
• Toán tử nguyên: + (cộng); - (trừ); * 
(nhân); DIV (chia lấy phần nguyên) và
MOD (chia lấy phần dư)
• Ví dụ:
• (13 mod 3): sẽ cho kết quả là một số nguyên 
chính là phần dư của việc chia 13 cho 3 và có 
giá trị là 1
• (13 div 4): sẽ cho kết quả là một số nguyên 
chính là
• thương nguyên của việc chia 13 cho 4 và có giá 
trị là 3
• Khi viết các phép toán thuộc kiểu nguyên trong 
Pascal cần chú ý
• đến miền giá trị của nó. Ví dụ:
• Bên cạnh cách biểu diễn số nguyên như ở trên 
(biểu diễn bằng 2 byte), Pascal còn có thêm một 
kiểu đơn giản chuẩn là kiểu biểu diễn số nguyên 
bằng một byte. Phạm vi biểu diễn số nguyên khi 
này là từ 0 đến 255 và được gọi là kiểu Byte.
• Ngoài ra, Turbo Pascal từ Version 4.0 trở đi và 
một số Pascal khác đã đưa thêm vào các định 
nghĩa kiểu số nguyên mới với các từ khoá Word, 
ShortInt (Short Integer), LongInt (Long Integer).
LongInt -2147483648... 3147483647 4
• Kiểu dữ liệu số thực (Real)
• Dữ liệu kiểu số thực là tập hợp các giá trị 
có thể biểu diễn được trong máy tính điện 
tử. Kiểu dữ liệu thực được định nghĩa bởi 
từ khóa Real.
• Dữ liệu kiểu số thực trong Pascal có thể 
được biểu diễn bằng hai cách:
• - Số thực dấu phảy tĩnh: Được biểu diễn bởi 02 phần: 
phần nguyên và phần thập phân, ngăn cách với nhau 
bởi dấu chấm
• Ví dụ: 3.0; 3.14; -5.12
• - Số thực dấu phẩy động: Được biểu diễn bởi 02 
phần: Phần định trị là một số thực dấu phẩy tĩnh và phần 
bậc là một số nguyên nằm trong khoảng -39 đến + 38, 
ngăn cách giữa 2 phần là chữ E.
• Ví dụ: -1.732E-05. Với cách biểu diễn này thì 1.732 là 
phần định trị còn -5 là phần bậc và giá trị này được xác 
định là -1.7 * 10-5.
• Để khai báo biến dữ liệu thuộc kiểu số thực, dùng từ khóa Real Ví 
dụ, để khai báo về dân số, mức thu nhập bình quân/đầu người của 
một quốc gia.
• Var
• Danso, ThunhapBQ : Real;
• Một số toán tử liên quan đến dữ liệu kiểu số thực:
• - Toán tử quan hệ: = (bằng); > (lớn hơn); >= (lớn hơn
• hoặc bằng); (khác)
• - Toán tử thực: + (cộng); - (trừ); * (nhân) và / (chia)
• Kiểu dữ liệu ký tự (Char)
• Dữ liệu kiểu ký tự là một ký tự bất kỳ có 
trong tập hợp các ký tự của bẳng mã 
ASCII. Kiểu dữ liệu ký tự được định nghĩa 
bởi từ khóa Char.
• Giá trị của các biến ký tự khi viết trong 
Pascal được đặt trong cặp dấy nháy đơn 
(„ „). Biến ký tự nào có giá trị là ký tự 
đứng trước trong bảng mã ASCII thì biến 
đó nhỏ hơn so với biến ký tự có giá trị là 
ký tự đứng sau trong bảng mã ASCII.
• Ví dụ: „A‟ < „B‟; „B‟ < „a‟
• Vì trong bảng mã ASCII, ký tự A đứng ở vị trí 
thứ 65, B đứng ở vị trí 66 và a đứng ở vị trí 97
• Một số toán tử liên quan đến biến dữ liệu kiểu 
ký tự:
• Toán tử quan hệ: = (bằng); > (lớn hơn); >= (lớn 
hơn hoặc bằng);
• 
(khác)
• Biến dữ liệu thuộc kiểu ký tự được khai bảo bởi 
từ khóa Char
• Kiểu dữ liệu dãy ký tự (String)
• Dữ liệu kiểu dãy ký tự là một dãy gồm các 
ký tự bất kỳ có trong bảng mã ASCII. Kiểu 
dữ liệu dãy ký tự được định nghĩa bởi từ 
khóa String.
• Cũng giống như biến dữ liệu thuộc kiểu ký tự, giá trị của 
biến dãy ký tự khi viết trong Pascal sẽ được đặt trong 
cặp dấu nháy đơn („ „)
• Để khai báo biến dữ liệu thuộc kiểu dãy ký tự có thể khai 
báo theo quy cách:
• Var
• : String; {cách khai báo 1}
• :String[n]; {cách khai báo 2}
• Với cách khai báo 1 thì sẽ nhận được 
tối đa 32767 ký tự
• Với cách khai báo 2, giá trị n là một số nguyên, dương 
nó sẽ giới hạn số ký tự tối đa trong dãy mà <biến dãy ký 
tự> có thể nhận được.
• Ví dụ: khai báo biển số xe, địa chỉ của một cơ quan
• Var
• Bienso: String[9]; Diachi:String;
• Ở đây biển số xe hiện tại chỉ nhận được một dãy gồm tối 
đa là 9 ký tự còn địa chỉ thì có thể nhận một dãy có độ 
dài lên tới 32767 ký tự. Nhưng việc không giới hạn độ 
dài tối đa cho biến dữ liệu sẽ làm cho chương trình 
chiếm dụng bộ nhớ một cách không cần thiết.
• Một số toán tử liên quan đến biến dữ liệu kiểu 
dãy ký tự:
• - Toán tử quan hệ: = (bằng); > (lớn hơn); >= 
(lớn hơn hoặc bằng); < (nhỏ hơn); <= (nhỏ hơn 
hoặc bằng) và (khác)
• - Toán tử thực: + (cộng, dùng để ghép các 
dãy ký tự lại với nhau)
• Ví dụ: biến A nhận giá trị là „Dai hoc‟ và biến B 
nhận giá trị là dãy ký tự „Kinh te quoc dan‟
• c/ Biểu thức
• Biểu thức (Expression) là một công thức tính toán để có 
một giá trị theo một quy tắc toán học nào đó. Một biểu 
thức bao gồm: toán tử (operator) và toán hạng 
(operand). Toán tử được viết ra bằng dấu phép toán. 
Toán hạng có thể là hằng, hàm hoặc biến. Các phần tử 
của biểu thức có thể được phân thành số hạng, thừa số, 
biểu thức đơn giản.
• Ví dụ: 3 + PI * Sin ( x) ;
• Trong ví dụ này, các toán tử (các phép toán) là phép 
cộng (+) và phép nhân (*). Các toán hạng là hằng số 3 
và PI, là hàm Sin với đối số là biến X.
• - Biểu thức số học là biểu thức có giá trị bằng số (là 
Integer, Real)
• - Biểu thức logic ( Boolean ) là biểu thức có giá trị là 
True hoặc
• False.
• - Biểu thức dãy ký tự là biểu thức có giá trị là một dãy ký 
tự
• - Một biểu thức chứa một trong các toán tử quan hệ ( 
, ,
• =, = ) đựoc gọi là một biểu thức Boolean đơn giản 
hay một biểu thức quan hệ. Các toán hạng trong biểu 
thức quan hệ có thể là các số nguyên, số thực, kí tự và 
chúng phải tương thích nhau về kiểu.
• - Biểu thức có nhiều hơn một toán tử quan hệ 
thì được gọi là biểu thức phức. Trong Pascal, 
biểu thức phức phải được tách thành các biểu 
thức giản đơn và kết hợp lại thông qua toán tử 
logic.
• Ví dụ: trong toán học việc viết biểu thức A > B > 
C rất hay gặp, nhưng khi biểu diễn trong ngôn 
ngữ Pascal thì không đúng với quy tắc, và khi 
đó biểu thức trên sẽ được viết lại như sau:
(B > C) and (B < A)
• - Khi thực hiện tính toán giá trị cho biểu thức, Pascal sẽ 
thực hiện lần lượt các toán hạng theo các mức thứ tự 
ưu tiên như sau:
• (1) Các toán hạng nằm trong cặp ngoặc ( ), từ trong ra 
ngoài
• (2) Toán tử Not
• (3) Toán tử * (nhân); / (chia); DIV (chia lấy phần 
nguyên); MOD (chia lấy phần dư) và AND (hội)
• (4) Toán tử + (cộng); - (trừ); Or (tuyển) và Xor (hoặc  
triệt tiêu)
• (5) Các toán tử quan hệ
• Trong trường hợp, các toán tử cùng mức ưu tiên thì 
Pascal sẽ
• thực hiện tính toán lần lượt từ trái qua phải. 
• d/ Hàm trong Pascal
• Hàm là một đoạn chương trình được xây dựng 
để thực hiện một nhiệm vụ cụ thể nào đó. 
Pascal xây dựng sẵn một số hàm và các hàm đó 
được gọi là hàm chuẩn, khi cần thi hành công 
việc của một hàm nào đó, người sử dụng phải 
ghi đúng tên hàm và giá trị của các đối số trong 
đối hàm.
• Một số hàm chuẩn liên quan đến dữ liệu kiểu số 
nguyên và số thực:
Lệnh gán được dùng để gán giá trị của một 
biểu thức, một hằng vào một biến.
Dấu “ :=” được gọi là dấu gán
 := ; Vế trái của phép 
gán chỉ có thể là biến mà thôi.
• Ví dụ :
• X := 6 ; (* có nghĩa là biến X nhận giá trị bằng 
6 *) Y := True ; (* có nghĩa là biến Y nhận giá trị 
True *)
• X := X + 3 ; (* có nghĩa là giá trị của X sẽ bằng 
giá trị của X cộng với 3. Ví dụ nếu lúc đầu X có 
giá trị là 6 thì sau khi thực hiện câu lệnh này, X 
sẽ có giá trị là 9. Lưu ý rằng X chỉ là tên của một 
ô nhớ. X + 3 được hiểu là lấy nội dung của ô 
nhớ X đem cộng với 3, sau đó lại để vào ô nhớ 
X *)
• - Tính tương thích của các kiểu dữ liệu:
• Nguyên tắc chung khi dùng phép gán thì 
kiểu dữ liệu của biến ở bên trái dấu gán 
và kiểu dữ liệu của biểu thức ở bên phải 
dấu gán phải giống nhau.
• Ví dụ: Một biến nguyên I không thể nhận một giá trị kí tự 
được.
• I := 'A' ; là điều không thể chấp nhận được.
• - Ngoại lệ:
• Tuy một biến nguyên không thể nhận giá trị là một số
• thực nhưng một số thực thì lại có thể nhận một giá trị 
nguyên.
• X := 6.0; là sai vì X là biến Integer, 6.0 là giá trị thực.
• M23 := 6; là đúng vì M23 là biến thực, nó có thể nhận 
giá trị nguyên. M23 sẽ chứa giá trị 6 dưới dạng 
số thực
• 6.00000000E + 00.
• b. Thủ tục xuất – nhập dữ liệu
• Thủ tục (Procedure) là một chương trình con 
dùng để thực hiện1 công việc nào đó trong toàn 
bộ chương trình. Mỗi thủ tục có một tên, được 
dùng để gọi thủ tục khi cần thi hành thủ tục đó. 
Trong Pascal có hai loại thủ tục:
• Thủ tục chuẩn: do Pascal định nghĩa sẵn. Có thể 
sử dụng các thủ tục chuẩn trong chương trình 
mà không cần phải khai báo.
• Thủ tục “người lập trình”: là do người lập trình 
xây dựng. Muốn sử dụng các thủ tục này trong 
chương trình thì phải khai báo.
• Thủ tục xuất dữ liệu
• Dữ liệu có thể xuất ra trên màn hình hoặc trên 
máy in. Ở đây chúng ta chỉ xem xét việc đưa dữ 
liệu ra màn hình. Pascal cho phép đưa các dữ 
liệu ra màn hình theo 3 quy cách:
Write(, [,, 
<phần tử xuất N)]);
Writeln(, [<phần tử xuất 
2>,,<phần tử xuất N]) ;
Writeln ;
Đưa ra màn hình có quy cách
Quy cách 1: Đối với dữ liệu kiểu nguyên, 
logic, ký tự, dãy ký tự
WRITE(Biểu thức:n);
WRITELN(Biểu thức:n);
Quy cách 2: Chỉ đối với dữ liệu kiểu thực
WRITE(Biểu thức:n:m);
WRITELN(Biểu thức:n:m);
• Thủ tục nhập dữ liệu
• Để nhập dữ liệu vào cho một chương trình 
có nhiều cách khác nhau như nhập vào từ 
bàn phím, nhập vào từ một tệp tin dữ liệu 
hay nhập trực tiếp trong chương trình. Ở 
đây chúng ta xem xét việc nhập dữ liệu 
vào từ phàn phím.
• Để nhập dữ liệu vào từ bàn phím Pascal 
cung cấp các quy cách như sau:
Read( [,,, ]); Readln(<biến 
1> [,,, ]);
Readln;
• Khi nhập dữ liệu cho các biến thì giá trị của biến này 
phải cách dữ liệu của biến kia ít nhất một ký tự khoảng 
trống hoặc một ký tự Tab. Kết thúc việc nhập dữ liệu 
bằng phím Enter.
• Tương tự như Write và Writeln, Readln sẽ tự động 
chuyển con trỏ xuống đầu dòng dưới sau khi đã nhận 
xong các giá trị cho các biến. Với quy cách Readln; thì 
chương trình sẽ dừng lại cho đến khi người sử dụng ấn 
phím Enter.
• Kết hợp thủ tục xuất và thủ tục nhập dữ liệu
• Khi nhập dữ liệu để giúp cho người sử dụng không bị 
nhầm lẫn giá trị của biến này với biến khác thì trong quá 
trình lập trình thường sẽ đưa ra dòng thông báo về biến 
cần nhận giá trị trước khi thực hiện việc nhập dữ liệu 
cho biến đó. Và người ta quen gọi đó là thủ tục xuất –
nhập dữ liệu (xuất ra một thông báo về biến và nhập dữ 
liệu vào cho biến đó).
• Write(); 
Readln();
• Ví dụ: Nhập dữ liệu về tên, tuổi cho một sinh viên trong lớp
• Write(„Nhap ten sinh vien: „);
• Readln(TenSV);
• Write(„Nhap tuoi cua sinh vien: „);
• Readln(TuoiSV);
• Vậy khi thực hiện thủ tục Write(„Nhap ten sinh viên: „) sẽ đưa dãy ký 
tự này ra màn hình rồi dừng lại để người sử dụng nhập dữ liệu cho 
biến TenSV. Sau khi ấn Enter, con trỏ chuyển xuống đầu dòng dưới 
(vì thủ tục nhập dữ liệu là Readln), thực hiện tiếp thủ tục 
Write(„Nhap tuoi sinh vien: „) để đưa dãy ký tự này ra rồi dừng lại 
chờ người sử dụng nhập giá trị cho biến TuoiSV. Theo cách này, 
việc nhập dữ liệu trở nên dễ dàng rất nhiều cho người sử dụng, 
khác với việc viết là Readln(TenSV, TuoiSV);
Một số ví dụ chương trình
đơn giản nhất
c. Một số ví dụ đơn giản về lập trình tuần tự
• Ví dụ 1: cho biết họ tên sinh viên cùng các 
điểm thi tuyển sinh đại học ba môn Toán, Lý, 
Hóa của sinh viên đó. Viết chương trình để 
nhập dữ liệu, tính và in ra tổng điểm tuyển sinh 
và điểm trung bình các môn thi tuyển sinh của 
sinh viên đó.
Program Sinh_vien;
Var
• {Tinh toan}
• Tong := Toan + Ly + Hoa; T_binh := Tong/3 ;
• {In an}
• Writeln(„Tong diem thi tuyen sinh : „, Tong :5 :2) ;
• Writeln(„Diem thi tuyen trung binh: „, T_binh :5:2);
• Readln; End.
Ví dụ 2: cho biết chiều dài, chiều rộng của một hình chữ 
nhật. Viết chương trình nhập dữ liệu, tính và in ra chu vi 
và diện tích của hình chữ nhật đó.
• 4.4 Lập trình phân nhánh
• a. Câu lệnh phân nhánh
• Được dùng để giải quyết các bài toán khi bước kế tiếp 
được hay không được thi hành phụ thuộc vào kết quả 
của bước xử lý trước đó hay điều kiện của đầu bài đề 
ra. Pascal cung cấp cho người sử dụng hai câu lệnh để 
thực hiện công việc này đó là:
• IF  Then  Else  Case of
• Câu lệnh phân chương trình thành hai nhánh chính: Quy 
cách lệnh:
• 1/ IF THEN ;
• 2/ IF THEN ELSE
• ;
• Theo lệnh này, nếu nhận giá trị 
True thì máy sẽ thực hiện , còn nếu không thì 
hoặc kết thúc (tức không làm gì cả) đối với quy cách thứ 
nhất, hoặc máy sẽ đi thực hiện lệnh khác tức là 
 trong quy cách thứ 2. Như vậy quy cách thứ 
nhất thực ra là quy cách thứ hai thu gọn với là 
rỗng.
• Chú ý: trước Else không bao giờ có dấu chấm phẩy. 
Sau từ khóa
• Then và Else là một câu lệnh.
Ví dụ để chia a cho b với điều kiện b0 
viết như sau:
If b 0 Then t := a / b
Else
Writeln (' Mẫu số bằng 0 ! Không chia được ! ') ;
• Ví dụ 2: Cho biết tên công nhân, số lượng sản 
phẩm mà người công nhân đó sản xuất ra trong 
tháng, đơn giá tiền công mỗi sản phẩm và định 
mức sản xuất đối với người công nhân đó. Viết 
chương trình nhập dữ liệu, tính và in ra tiền 
lương sản phẩm của người công nhân đó trong 
tháng.
Biết rằng nếu số lượng sản phẩm của 
người công nhân sản xuất ra trong tháng 
cao hơn định mức thì người công nhân 
đó được thưởng thêm 2% tiền lương sản 
phẩm 
• b. Câu lệnh ghép
• Câu lệnh ghép hay còn gọi là câu lệnh phức hợp được sử dụng để 
giải quyết bài toán khi muốn thực hiện nhiều công việc được biểu 
diễn bởi nhiều câu lệnh khi mà theo quy tắc viết lệnh của Pascal chỉ 
cho phép viết một câu lệnh.
Quy cách: Begin
;
;
; End;
Nằm giữa cặp từ khóa Begin End là các câu lệnh cần thực hiện, cặp 
từ khóa Begin  End sẽ ghép các lệnh này thành một lệnh ghép và 
được hiểu như một lệnh duy nhất.
• Qua ví dụ này cho thấy vai trò của lệnh 
ghép. Giả sử nếu viết một lệnh như sau:
• If a < b Then
• Max := b ; Min := a ;
• thì lúc này phải hiểu là lệnh Max := b được 
thực hiện chỉ khi điều kiện a < b thỏa mãn, 
còn lệnh Min := a luôn được thực hiện 
trong mọi trường hợp.
Lệnh Goto và Nhãn Label 
Quy cách
LABEL ;
.
GOTO ;
..
: ;
Câu lệnh rẽ nhiều nhánh 
Quy cách 1:
CASE OF
,,...: ;
 .. : ;
..
: ;
END;
;
- Quy cách 2:
CASE OF
,,...: ;
 .. : ;
..
: 
ELSE
;
END;
4.5 Lập trình có chu trình 
Lập trình có chu trình (lặp)
• Chu trình được sử dụng để giải quyết bài toán 
khi có thao tác hay nhóm thao tác được thực 
hiện lặp đi lặp lại nhiều lần với các toán hạng 
như nhau chỉ khác nhau ở giá trị dữ liệu đầu 
vào. Pascal cung cấp cho người sử dụng ba câu 
lệnh để thực hiện công việc này.
• - FOR  TO  DO
• - WHILE  DO
• - REPEAT  UNTIL 
• a. Chu trình số học
Chu trình số học là chu trình mà có khả năng sẽ cho 
biết số lần thực hiện lặp lại các thao tác.
Quy cách 1:
For := To Do ;
Trong đó , và là các giá trị 
kiểu vô hướng đếm được.
Khi thực hiện, đầu tiên sẽ được gán cho 
rồi bắt đầu quá trình lặp bằng việc kiểm tra giá trị của có 
lớn hơn so với không, nếu không lớn hơn thì thực hiện 
 sau Do, sau đó tự động chuyển giá trị của sang 
giá trị kế tiếp, quá trình được lặp lại. Quá trình này kết thúc khi giá trị 
 vượt quá 
Sau từ khóa Do chỉ được viết một lệnh, 
trong bài toán trên do sau từ khóa Do
có tới ba lệnh nên phải sử dụng lệnh ghép.
Quy cách 2:
For := Downto Do 
;
Tương tự như quy cách 1 nhưng khi thực hiện, sau khi 
gán cho quá trình thực hiện lặp 
bắt đầu bằng việc kiểm tra giá trị của có nhỏ 
hơn so với ha
            Các file đính kèm theo tài liệu này:
 bai_giang_nhap_mon_tin_hoc_chuong_4_lap_trinh_bang_pascal_le.pdf bai_giang_nhap_mon_tin_hoc_chuong_4_lap_trinh_bang_pascal_le.pdf