Tải bản đầy đủ (.doc) (141 trang)

Ngôn ngữ lập trình Pascal ĐH Hoa Lư

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (735.23 KB, 141 trang )

BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
MỤC LỤC
Bài 1: NGÔN NGỮ LẬP TRÌNH PASCAL 3
1.Giới thiệu về ngôn ngữ lập trình Turbo Pascal 3
2. Các thành phần cơ bản trong ngôn ngữ Pascal 3
3. Cấu trúc chung của một chương trình Turbo Pascal 5
4. Sử dụng phần mềm Turbo Pascal 9
CÂU HỎI ÔN TẬP 14
Bài 2: CÁC KHÁI NIỆM TRONG PASCAL 16
1. Hằng, biến, biểu thức 16
2. Câu lệnh và lời chú thích 17
3. Nhập dữ liệu 19
4. Xuất dữ liệu 21
CÂU HỎI ÔN TẬP 25
Bài 3: CÁC KIỂU DỮ LIỆU ĐƠN GIẢN 27
1. Khái niệm về kiểu dữ liệu 27
2. Kiểu số nguyên 28
3. Kiểu số thực 33
4. Kiểu ký tự (CHAR) 36
5. Kiểu Logic (BOOLEAN) 38
6. Kiểu liệt kê và kiểu đoạn con 40
BÀI TẬP 44
Bài 4: CÁC CÂU LỆNH ĐIỀU KHIỂN 46
1. Câu lệnh IF 46
2. Câu lệnh CASE 49
3. Câu lệnh lặp biết trước só lần lặp (FOR TO DO) 51
4. Câu lệnh lặp WHILE DO 54
5. Câu lệnh lặp REPEAT UNTIL 56
BÀI TẬP 58
Bài 5: CHƯƠNG TRÌNH CON 61
1. Khái niệm chương trình con 61


2. Hàm (FUNCTION) 61
3. Thủ tục (PROCEDURE) 67
4. Tham trị và tham biến 69
5. Phạm vi tác dụng của các khai báo 72
6. Sự đệ quy 75
7. Các ví dụ về chương trình con 76
CÂU HỎI ÔN TẬP – BÀI TẬP 79
Ngôn ngữ lập trình Pascal
1
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Bài 6: CÁC CẤU TRÚC DỮ LIỆU PHỨC HỢP 82
1. Dữ liệu kiểu mảng 82
2. Kiểu chuỗi ký tự 86
3. Dữ liệu kiểu bản ghi 91
4. Dữ liệu kiểu tập hợp (SET) và tệp tin (FILE) 97
CÂU HỎI ÔN TẬP 107
Bài 7: LẬP TRÌNH NÂNG CAO 117
1. Con trỏ và biến động 117
1.1. Khái niệm 117
1.2. Kiểu dữ liệu con trỏ - biến con trỏ 117
1.3. Địa chỉ của một đối tượng 118
1.4. Các thủ tục và hàm tác động trên con trỏ 118
1.5. Cấp phát động 119
2.Danh sách liên kết 120
2.1. Định nghĩa 120
2.2. Danh sách liên kết ngược 120
2.3. Hàng đợi Queue - Danh sách liên kết thuận 121
2.4. Các thao tác trên danh sách 122
3. Tạo thư viện các chương trình con (UNIT) 123
3.1. Khái niệm đơn vị chương trình (Unit) 123

3.2. Cấu trúc một Unit 123
4. Đồ họa và âm thanh 125
4.1. Đồ họa 125
4.2. Các đối tượng đồ họa 126
4.3. Các thủ tục và hàm liên quan đến Đặt - nhận màu - nét và dáng điệu chữ 126
5. Một số bài toán ứng dụng 131
Ngôn ngữ lập trình Pascal
2
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Bài 1: NGÔN NGỮ LẬP TRÌNH PASCAL
1.Giới thiệu về ngôn ngữ lập trình Turbo Pascal
PASCAL là ngôn ngữ lập trình bậc cao được giáo sư Niklaus Wirth ở trường đại học
Kỹ thuật Zurich (Thụy sĩ) thiết kế và công bố vào năm 1971. Ông đặt tên cho ngôn ngữ
của mình là Pascal để tưởng nhớ nhà toán học nổi tiếng người Pháp ở thế kỷ 17: Blaise
Pascal, người đã sáng chế ra chiếc máy tính cơ khí đầu tiên của nhân loại. Qua thời gian sử
dụng, Pascal ngày càng được đông đảo người dùng đánh giá cao, và trở thành một trong
các ngôn ngữ lập trình giáo học phổ biến nhất hiện nay.
Thành công của ngôn ngữ Pascal ở chỗ nó là ngôn ngữ đầu tiên đưa ra và thể hiện được
khái niệm lập trình có cấu trúc. Ý tưởng về một chương trình có cấu trúc xuất phát từ suy
nghĩ cho rằng có thể chia một bài toán lớn, phức tạp thành nhiều bài toán nhỏ, đơn giản
hơn. Nếu mỗi bài toán nhỏ được giải quyết bằng một chương trình con, thì khi liên kết các
chương trình con này lại sẽ tạo nên một chương trình lớn giải quyết được bài toán ban đầu.
Bằng cách chia một chương trình thành các chương trình con như vậy, người lập trình
có thể lập trình để giải quyết riêng lẻ từng phần một, từng khối một, hoặc có thể tổ chức để
nhiều người cùng tham gia, mỗi người phụ trách một vài khối. Ðặc biệt khi phải thay đổi
hay sửa chữa trong một khối thì điều đó sẽ ít ảnh hưởng đến các khối khác.
Tính cấu trúc của ngôn ngữ Pascal còn thể hiện trong việc tổ chức các câu lệnh và tổ
chức dữ liệu. Từ các lệnh đã có, người lập trình có thể nhóm chúng lại với nhau và đặt giữa
hai từ khóa Begin và End tạo thành một câu lệnh mới phức tạp hơn gọi là câu lệnh ghép.
Ðến lượt mình, hai hay nhiều lệnh ghép lại có thể được nhóm lại để tạo thành một câu lệnh

ghép phức tạp hơn nữa,.v.v. Tương tự như thế, ngôn ngữ Pascal cũng cho phép xây dựng
các kiểu dữ liệu phức tạp hơn từ các kiểu dữ liệu đã có.
Pascal là một ngôn ngữ không chỉ chặt chẽ về mặt cú pháp mà còn chặt chẽ về mặt dữ
liệu. Mỗi biến, mỗi hằng tham gia trong chương trình luôn có một kiểu dữ liệu xác định và
chỉ nhận những giá trị có cùng kiểu dữ liệu với nó. Ðiều này buộc người lập trình phải nắm
chắc cú pháp và luôn chú ý đến tính tương thích của các biểu thức về mặt kiểu dữ liệu.
Chính vì thế, lập trình bằng ngôn ngữ Pascal là một cơ hội tốt không chỉ rèn luyện tư duy
mà còn rèn luyện tính cẩn thận và chính xác.
Ngày nay, Ngôn ngữ Pascal được dùng để viết các chương trình ứng dụng trong nhiều
lĩnh vực. Với văn phạm sáng sủa, dễ hiểu, với khả năng đủ mạnh, Pascal được xem là ngôn
ngữ thích hợp nhất để giảng dạy ở các trường phổ thông và đại học.
2. Các thành phần cơ bản trong ngôn ngữ Pascal
2.1. Tập 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à
Ngôn ngữ lập trình Pascal
3
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA 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:
o Các chữ cái la tinh: A, B, C, ,Z, a, b, c, , z
o Các chữ số:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
o Các ký hiệu đặc biệt: +, -, *, /, =, <, {, }, [, ], %, $, &, #,
o Ký tự gạch nối ‘_’ và ký tự trắng ‘ ‘ (space)
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.
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à các định danh. 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 phải bắt đầu bằng chữ cái, kế đó có thể là chữ cái, chữ số, hay dấu
gạch nối ‘_’. Tên không được đặt trùng với từ khóa. Chiều dài của tên tối đa là 127 ký tự.
Thông thường tên nên đặt ngắn gọn và có tính gợi nhớ.
Dưới đây là ví dụ về các tên được đặt đúng:
Delta, X1, X2, i, j , Chuc_vu, Luong, So_luong, Don_gia.
Còn các tên: 3ABC, In, Chu vi, Ma-so là sai 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.
Ngôn ngữ lập trình Pascal
4
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
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.
3. Cấu trúc chung của một chương trình Turbo Pascal
3.1. Ví dụ mở đầu
Để có một cái nhìn tổng quan trước khi đi vào các vấn đề chi tiết của ngôn ngữ
Pascal, hãy cùng xem xét chương trình sau:
Bài toán và chương trình:
Viết chương trình để nhập vào độ dài hai cạnh của một hình chữ nhật, tính và in lên
màn hình diện tích và chu vi của hình chữ nhật đó.
Nếu gọi hai cạnh của hình chữ nhật là a và b, gọi diện tích và chu vi lần lượt là S và
P thì công thức tính S và P là:
S = a.b
P = 2(a+b)
Chương trình cụ thể như sau:
PROGRAM VIDU1;
{ Tinh dien tich va chu vi hinh chu nhat }
Uses CRT;
Var
a, b, S, P: Real ;
Begin
Clrscr;
Write(‘Nhap chieu dai: ‘); Readln(a);
Write(‘Nhap chieu rong: ‘); Readln(b);
S:=a*b;
P:=2* (a+b);
Writeln (‘ Dien tich = ‘, S:8:2);
Writeln (‘ Chu vi = ‘, P:8:2);
Readln;
End.
Ngôn ngữ lập trình Pascal

5
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
3.2. Cấu trúc chung của chương trình Pascal:
Chương trình là một dãy các câu lệnh chỉ thị cho máy các công việc phải thực hiện.
Một chương trình Pasccal đầy đủ gồm ba phần chính:
Phần tiêu đề
Phần khai báo
Phần thân chương chình
Program Têntựđặt ; { Phần tiêu đề}
{ Phần khai báo }
Uses {khai báo sử dụng thư viện chuẩn}
Label {khai báo nhãn}
Const {khai báo hằng}
Type {khai báo kiểu dữ liệu}
Var { khai báo biến}
Function { khai báo các chương trình con}
Procedure {hàm và thủ tục }
{ Phần thân chương trình }
Begin
{ Các lệnh }
End.
a. Phần tiêu đề chương trình
Phần này bắt đầu bằng từ khóa Program, sau đó ít nhất là một khoảng trắng và một
tên do người dùng tự đặt, cuối cùng kết thúc bằng dấu chấm phẩy ‘;’.
Ví dụ: Program Btap1;
hoặc: Program Giai_pt_bac2;
Phần tiêu đề chiếm một dòng, còn gọi là phần đầu của chương trình, nó có thể không có
cũng được.
b. Phần khai báo
Phần khai báo có nhiệm vụ giới thiệu và mô tả các đối tượng, các đại lượng sẽ tham

gia trong chương trình, giống như ta giới thiệu các thành viên trong một cuộc họp. Nó gồm
khai báo sử dụng thư viện chuẩn, khai báo nhãn, khai báo hằng, khai báo kiểu dữ liệu mới,
Ngôn ngữ lập trình Pascal
6
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
khai báo biến, và khai báo các chương trình con. Tùy theo yêu cầu cụ thể mà mỗi khai báo
này có thể có hoặc không.
Khai báo nhãn (Label) chỉ dùng khi trong chương trình có sử dụng lệnh nhảy không điều
kiện GOTO. Nhược điểm của lệnh GOTO là làm mất tính cấu trúc của chương trình,
trong khi có thể thay thế nó bằng các câu lệnh có cấu trúc của Pascal. Vì thế, để rèn luyện
kỹ năng lập trình có cấu trúc, chúng ta sẽ không dùng lệnh GOTO trong giáo trình này.
Các thủ tục và hàm được dùng khi có nhu cầu thiết kế các chương trình lớn, phức
tạp. Đối với các bài toán nhỏ, đơn giản, việc sử dụng chương trình con là chưa cần thiết.
Sau đây ta điểm qua vài nét về các khai báo thông dụng nhất.
* Khai báo hằng và khai báo biến:
Biến là đại lượng có giá trị thay đổi được, còn Hằng là đại lượng có giá trị không
đổi, chúng được dùng trong chương trình để lưu trữ các dữ liệu, tham gia vào các biểu thức
tính toán và các quá trình xử lý trong máy. Việc khai báo có tác dụng xác định tên và kiểu
dữ liệu của biến hay hằng. Biến và Hằng là những thành phần khó có thể thiếu được trong
một chương trình. Để khai báo biến ta dùng từ khóa Var, để khai báo hằng ta dùng từ khóa
Const, ví dụ:
Const N=10 ;
Var x, y: Real ; i, k: Integer;
* Khai báo (định nghĩa) một kiểu dữ liệu mới:
Ngoài các kiểu dữ liệu mà bản thân ngôn ngữ đã có sẵn như kiểu thực, kiểu
nguyên, kiểu ký tự, kiểu lôgic,.v.v. người dùng có thể tự xây dựng các kiểu dữ liệu mới
phục vụ cho chương trình của mình, nhưng phải mô tả sau từ khóa TYPE. Khi đã định
nghĩa một kiểu dữ liệu mới, ta có thể khai báo các biến thuộc kiểu dữ liệu này. Ví dụ, ta
định nghĩa một kiểu dữ liệu mới có tên là Mang:
Type Mang = Array[1 10] of Real;

Bây giờ có thể khai báo hai biến A và B có kiểu dữ liệu là kiểu Mang: Var A, B: Mang ;
* Khai báo sử dụng thư viện chuẩn:
Turbo Pascal có sẵn một số hàm và thủ tục chuẩn, chúng được phân thành từng
nhóm theo chức năng mang các tên đặc trưng, gọi là các thư viện hay đơn vị chương trình
(Unit ), như: Crt, Graph, Dos, Printer, .v.v. . Muốn sử dụng các hàm hay thủ tục của thư
viện nào, ta phải khai báo có sử dụng thư viện đó, lời khai báo phải để ở ngay sau phần tiêu
đề của chương trình theo cú phá:
Uses danhsáchthư viện ;
Ví dụ: do thủ tục Clrscr nằm trong thư viện CRT, nên nếu trong chương trình mà có dùng
lệnh Clrscr, thì phải khai báo: Uses CRT;
Ngôn ngữ lập trình Pascal
7
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Muốn sử dụng cả hai thư viện CRT và GRAPH, ta khai báo: Uses CRT, GRAPH;
c. Phần thân chương trình:
Đây là phần chủ yếu nhất của một chương trình, bắt buộc phải có.
Thân chương trình bắt đầu bằng từ khóa BEGIN và kết thúc bằng END. (có dấu
chấm ở cuối). Giữa khối BEGIN và END là các lệnh. Mỗi lệnh phải kết thúc bằng dấu
chấm phẩy: ‘;’. Một lệnh, nếu dài, thì có thể viết trên hai hay nhiều dòng, ví dụ:
Writeln(‘ Phuong trinh co hai nghiem la:
X1= ‘, X1:8:2,‘ va X2= ‘, X2:8:2;
Ngược lại, một dòng có thể viết nhiều lệnh miễn là có dấu ‘;’ để phân cách các lệnh đó,
chẳng hạn:
Write(‘ Nhap A, B, C: ‘ ); Readln(A,B,C);
Thông thường mỗi dòng chỉ nên viết một lệnh để dễ đọc, dễ kiểm tra lỗi.
3.3. Ví dụ
Để kết thúc phần này, xin giới thiệu chương trình cho phép nhập vào họ tên, mã số,
các điểm Toán, Lý của một sinh viên, tính điểm trung bình theo công thức:
rồi in Họ tên, mã số, các điểm Toán, Lý và điểm trung bình của sinh viên đó lên màn hình.
PROGRAM VIDU2;

Uses CRT;
Var
Ho_ten, Maso: String[20];
Toan, Ly, Dtb: Real;
Begin
Write(‘ Nhap Ho va ten: ‘); Readln(Ho_ten);
Write(‘ Nhap ma so: ‘); Readln(Maso);
Write(‘ Nhap diem Toan: ‘); Readln(Toan);
Write(‘ Nhap diem Ly: ‘); Readln(Ly);
Dtb:= (Toan+Ly) / 2;
Clrscr;
Writeln(‘ KET QUA THI CUA SINH VIEN:’);
Writeln(‘Ho va ten: ‘, Ho_ten);
Writeln(‘Ma so: ‘, Maso);
Writeln(‘Diem Toan: ‘, Toan:3:1);
Writeln(‘Diem Ly: ‘, Ly:3:1);
Writeln(‘Diem Tbinh: ‘, Dtb:3:1);
Readln;
Ngôn ngữ lập trình Pascal
8
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
END.
4. Sử dụng phần mềm Turbo Pascal
4.1. Giới thiệu Turbo Pascal
Turbo Pascal là một phần mềm có nhiệm vụ giúp người lập trình soạn thảo và thực
hiện các chương trình viết bằng ngôn ngữ Pascal. Các chức năng chính của Turbo Pascal là
o Cung cấp một hệ soạn thảo văn bản cho phép người lập trình soạn và sửa
chương trình dễ dàng, tiện lợi.
o Giúp người lập trình tìm các lỗi về văn phạm trong chương trình.
o Dịch (compiler) chương trình viết bằng ngôn ngữ Pascal thành một chương

trình viết dưới dạng mã máy.
o Thực hiện hay chạy (Run) chương trình viết bằng ngôn ngữ Pascal.
o Cung cấp các thư viện có sẵn nhiều hàm (function) và thủ tục (procedure)
chuẩn mang lại cho người lập trình nhiều công cụ hữu ích, làm giảm bớt
khối lượng phải lập trình.
4.2. Khởi động Turbo Pascal
a. Các tập tin chính của Turbo Pascal:
Để chạy được Turbo Pascal 7.0, chỉ cần hai tập tin sau là đủ:
• TURBO.EXE: tập tin chính của TP
• TURBO.TPL: tập tin chứa các thư viện của TP
Nếu muốn vẽ đồ họa thì phải có thêm các tập tin:
• GRAPH.TPU, tập tin chứa thư viện đồ họa
*.BGI: các tập tin màn hình đồ họa
*.CHR: các tập tin tạo kiểu chữ
Trong các tập tin màn hình đồ họa thì thông thường chỉ cần tập tin EGAVGA.BGI
là đủ, vì ngày nay phần lớn màn hình đều có kiểu EGA hay VGA.
Nếu muốn xem hướng dẫn sử dụng Turbo Pascal thì cần có thêm tập tin
TURBO.HLP
Thông thường các tập tin này được để trong một thư mục riêng có tên là TP, hay
TP7. Dưới đây ta giả thiết thư mục chứa Turbo Pascal là TP nằm ngay tại gốc của đĩa
cứng C hay đĩa mềm A.
b. Khởi động Turbo Pascal:
Ngôn ngữ lập trình Pascal
9
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
a) Nếu ta làm việc trên máy cá nhân có hệ điều hành là MSDOS thì sau khi khởi động máy
xong:
Trường hợp dễ nhất là trên máy tính đã thiết lập sẵn đường dẫn đến thư mục TP
chứa Turbo Pascal, khi đó chỉ cần gõ một lệnh:
TURBO ↵

Trên màn hình sẽ hiện ra cửa sổ soạn thảo như hình 1.1 .
Nếu gõ lệnh trên mà cửa sổ Turbo Pascal không hiện ra, do máy tính chưa thiết lập
đường dẫn đến thư mục TP, trường hợp này phải di chuyển vào thư mục TP bằng lệnh:
CD \TP ↵ gõ tiếp: CD \BIN ↵ rồi sau đó gõ tiếp:TURBO ↵
hoặc gõ lệnh: TP\Bin\Turbo.exe ↵
b) Nếu làm việc trên máy cá nhân hoặc trong một mạng có hệ điều hành là WINDOWS 9x,
thì sau khi khởi động WINDOWS 9x:
Trường hợp có sẵn một Shortcut chứa Turbo Pascal ở trên Desktop: hãy nhắp left
mouse hai lần liên tiếp vào biểu tượng Shortcut của Turbo Pascal.
Trường hợp không có sẵn một Shortcut chứa Turbo Pascal: hãy chọn lệnh Start,
chọn tiếp lệnh Run, rồi gõ vào đường dẫn đầy đủ của tập tin TURBO.EXE, chẳng hạn:
C:\TP\BIN\TURBO.EXE ↵ , nếu khởi động TP từ đĩa C.
A:\TP\BIN\TURBO.EXE ↵, nếu khởi động TP từ đĩa A.
c. Cửa sổ Turbo Pascal và cách chọn lệnh
Trong cửa sổ này, dòng trên cùng là một thực đơn ngang, liệt kê chín nhóm lệnh
chính của TP. Muốn chọn một lệnh trong thực đơn này, có thể tiến hành theo một trong hai
cách:
Cách một:
Gõ phím F10. Lúc này, trên thực đơn xuất hiện một khung sáng (thường là màu
xanh). Muốn chọn lệnh nào thì gõ các phím mũi tên

,

dời khung sáng đến lệnh đó rồi
Enter. Một thực đơn con của lệnh vừa chọn hiện ra, gọi là thực đơn dọc.
Để chọn một lệnh trong thực đơn dọc, hãy gõ các phím mũi tên

,

, dời khung

sáng đến lệnh đó rồi Enter. Khi không muốn chọn lệnh nào thì gõ phím ESC để trở về
vùng soạn thảo.
Ngoài cách dùng phím F10 nói trên, cũng có thể chọn một lệnh trong thực đơn
ngang bằng cách gõ đồng thời phím Alt với phím chữ cái đầu tiên của tên lệnh muốn
chọn. Ví dụ, muốn chọn lệnh File thì gõ đồng thời hai phím Alt và F (viết tắt là Alt-F),
tương tự, muốn chọn lệnh Compile thì gõ Alt-C.
Ngôn ngữ lập trình Pascal
10
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Cách hai: dùng phím "nóng":
Có một số lệnh được gán cho những phím đặc biệt gọi là phím "nóng", ví dụ lệnh
Open: F3, lệnh Save: F2, lệnh Exit: Alt-X. Để thực hiện những lệnh này, thay vì phải chọn
nó từ trong thực đơn, ta chỉ cần gõ phím nóng tương ứng với nó. Ví dụ, thay vì chọn lệnh
Open thì gõ phím F3, thay vì chọn lệnh Save thì gõ phím F2,
Dưới thực đơn ngang là vùng soạn thảo dùng để gõ chương trình vào. Đầu của
vùng này hiện tên của tập tin đang soạn, và nếu người lập trình chưa đặt tên thì TP sẽ đặt
sẵn một tên mặc nhiên là NONAME00.PAS.
Dòng cuối cùng tóm tắt một số phím " nóng" hay dùng, như phím F1 để xem hướng
dẫn, phím F2 để lưu tập tin lên đĩa, phím F3 dùng để mở xem một tập tin, phím F10 để
khởi động thực đơn,.v.v.
d. Thoát khỏi Turbo Pascal:
Chọn lệnh File trong thực đơn ngang, chọn tiếp lệnh Exit trong thực đơn dọc (viết
gọn là chọn lệnh File/ Exit). Hoặc gõ cặp phím nóng Alt-X
4.3. Các bước thực hiện một chương trình Pascal
Để soạn và chạy một chương trình Pascal trong Turbo Pascal, nên tiến hành các
bước như sau:
Bước 1: Khởi động Turbo Pascal
Bước 2: Đặt tên cho tập tin sẽ soạn:
Chọn lệnh File/ Open (nếu làm việc trong TP 4.5 thì chọn lệnh File/ Load) hoặc gõ
phím F3, sau đó gõ tên tập tin (không cần gõ phần đuôi) vào trong khung vừa hiện ra.

Bước 3: Soạn thảo (gõ ) chương trình .
Bước 4: Dịch và sửa lỗi:
Chọn lệnh Compile/ Compile (hoặc gõ cặp phím Alt-F9, hay đơn giản chỉ gõ phím
F9 cũng được). Máy sẽ dịch chương trình sang mã máy, nếu gặp lỗi thì dừng và hiện thông
báo lỗi màu đỏ ở đầu màn hình, đồng thời con trỏ đặt ở vị trí có lỗi. Người lập trình phải tự
mình sửa lỗi, rồi gõ Alt-F9 để dịch và sửa lỗi tiếp cho đến khi hết lỗi. Dấu hiệu cho biết
việc dịch đã xong là màn hình xuất hiện cửa sổ thông báo có dòng chữ đặc trưng là:
Ngôn ngữ lập trình Pascal
11
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Bước 5: Lưu trữ chương trình lên đĩa: chọn lệnh File/ Save hoặc gõ phím F2.
Bước 6: Chạy thử chương trình:
Chọn lệnh Run/ Run hoặc gõ phím nóng Ctrl-F9 (viết tắt là ^F9). Mỗi lần chạy thử,
ta cần nhập một bộ dữ liệu cụ thể và kiểm tra xem kết quả in lên màn hình có đúng không.
Cần phải chạy thử một số lần ứng với các bộ dữ liệu khác nhau. Nếu kết quả các lần chạy
thử đều đúng thì chương trình đã hoàn thành. Ngược lại, nếu có một lần chạy thử cho kết
quả sai thì chương trình chưa ổn, cần phải sửa lại thuật toán của chương trình.
Bước 7:
Nếu chương trình chạy đúng thì gõ phím F2 để lưu nó lên đĩa lần cuối. Bây giờ có
thể lặp lại từ bước 2 để soạn một chương trình mới.
4.4. Mở xem một chương trình cũ:
Muốn xem lại một chương trình đã có trên đĩa, hãy chọn lệnh File/ Open hoặc gõ
phím F3, trong khung có tiêu đều là Name, gõ vào *.PAS (hoặc A:\*.PAS nếu tập tin nằm
trên đĩa A), một danh sách các tập tin có đuôi PAS sẽ hiện ra trong khung phía dưới cho ta
chọn.
Dùng các phím mũi tên để di chuyển và đặt thanh sáng vào tên muốn chọn rồi
Enter. Nội dung tập tin này sẽ được đưa lên màn hình cho chúng ta xem, sửa, chạy thử,
.v.v.
Chú ý: Để đưa con trỏ từ hộp Name ở trên xuống hộp Files ở dưới, dùng phím Tab, từ
hộp File về lại hộp Name: gõ Shift_Tab.

4.5. Lưu tập tin sang đĩa khác:
Khi cần ghi tập tin đang soạn từ đĩa cứng sang đĩa A, có thể làm như sau:
Chọn lệnh File/ Save as. Trong khung hiện ra , hãy gõ tên tập tin vào, nhớ gõ thêm tên ổ
đĩa A hay C: ở đằng trước:
Name: A:\BTAP.PAS. Từ nay, mỗi khi gõ phím F2 hoặc chọn lệnh File/ Save, tập tin
BTAP1.PAS sẽ được ghi lên đĩa A.
4.6. Một vài kỹ thuật trong soạn thảo:
a. Thao tác trên khối:
Ta gọi khối là một đoạn văn bản gồm một hay nhiều dòng liên tiếp. Ký tự đầu tiên
của khối gọi là đầu khối, ký tự cuối cùng của khối gọi là cuối khối.
* Đánh dấu khối:
Đưa con trỏ về đầu khối
Một tay đè phím Shift, trong khi tay kia gõ các phím mũi tên kéo vùng sáng phủ đến cuối
khối.
Nếu làm việc trong TP 4.5 thì đánh dấu khối bằng cách: đưa con trỏ về đầu khối, gõ
^K_B, sau đó đưa con trỏ về cuối khối, gõ ^K_K. (Cách gõ ^K_B: một tay đè phím Ctrl
trong khi tay kia gõ liên tiếp hai phím K và B).
Ngôn ngữ lập trình Pascal
12
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
* Sao chép khối:
Đánh dấu khối cần sao chép
Đưa con trỏ đến nơi cần chép tới: Gõ lệnh ^K_C
* Di chuyển khối:
Đánh dấu khối cần di chuyển
Đưa con trỏ đến nơi cần chuyển khối tới: Gõ lệnh ^K_V
* Xóa khối:Đánh dấu khối cần xóa Gõ lệnh ^K_Y
* Che hoặc hiện lại khối đã đánh dấu: lệnh ^K_H
b. Các phím lệnh soạn thảo thông dụng:
Phím Home: đưa con trỏ về đầu dòng hiện thời

Phím End: đưa con trỏ về cuối dòng hiện thời
Phím Delete: xóa ký tự ngay tại vị trí con trỏ. Nếu con trỏ đang đứng ở cuối của dòng trên
mà gõ phím Delete thì sẽ nối dòng dưới vào cuối dòng trên.
Phím Back Space (là phím mũi tên ← nằm ngay phía trên phím Enter): xóa ký tự bên trái
con trỏ. Nếu con trỏ đang đứng ở đầu của dòng dưới mà gõ phím Back Space thì sẽ nối
dòng dưới vào cuối dòng trên.
Cặp phím Ctrl_Y: xóa toàn bộ dòng hiện thời và đôn các dòng ở dưới lên.
Nhóm phím Ctrl_Q_Y: xóa từ vị trí con trỏ đến cuối dòng.
Các phím mũi tên: dời con trỏ theo hướng mũi tên.
Phím Insert: mở hoặc tắt chế độ viết chèn. Ở chế độ viết chèn, con trỏ màn hình có dạng
bình thường, tắt chế độ viết chèn, con trỏ có kích thước lớn gấp 4 lần bình thường. (Trong
TP 4.5, chế độ viết chèn hay tắt viết chèn được nhận biết bằng việc chữ Insert có hiện ra
hay không hiện ra ở đầu của cửa sổ soạn thảo).
Phím Enter: Trong chế độ viết chèn: gõ Enter có tác dụng đưa con trỏ xuống đầu dòng
dưới, do đó toàn bộ các chữ đứng sau con trỏ (nếu có) sẽ bị cắt xuống dòng dưới. Khi con
trỏ đang đứng ở đầu một dòng mà Enter thì sẽ tạo ra một dòng trống ngay tại vị trí đó.
Nếu chế độ viết chèn là tắt thì mỗi khi gõ phím Enter, con trỏ sẽ về đầu của dòng
hiện thời (dòng đang chứa con trỏ), chứ không xuống dòng dưới nữa.
Ngôn ngữ lập trình Pascal
13
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
CÂU HỎI ÔN TẬP
Trong các câu hỏi dưới đây, hãy chọn một câu trả lời thích hợp nhất:
Câu 1: Tính cấu trúc của ngôn ngữ Pascal được thể hiện:
a) trong việc tổ chức các dữ liệu;
b) trong việc tổ chức các câu lệnh;
c) trong việc tổ chức chương trình;
d) ở cả ba mục a), b), c) ;
Câu 2: Khẳng định nào đúng:
a) VAR , BEGIN, end là các từ khóa của Pascal được khái niệm lập trình có cấu trúc;

b) Các ký hiệu a , b , g , d đều thuộc bộ ký tự cơ bản của Pascal;
c) Var, begin, Integer, Real là các từ khóa của Pascal;
d)VAR, Var, vaR, var là các từ khóa khác nhau của Pascal ;
Câu 3: Tên nào đặt Sai quy định của Pascal:
a) Giai_Ptrinh_Bac_2;
b) Ngaysinh;
c) Noi sinh;
d)Sv2000 ;
Câu 4: Chọn câu Sai: trong một chương trình Pascal, có thể không có:
a) phần thân chương trình ;
b) phần khai báo biến;
c) phần đầu chương trình;
d)phần khai báo hằng ;
Câu 5: Dấu hiệu kết thúc chương trình Pascal là:
a) End;
b) END;
c) end.
d) End ! ;
Ngôn ngữ lập trình Pascal
14
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Câu 6: Trong Pascal, nếu muốn dùng lệnh xóa màn hình Clrscr thì phải khai báo thế nào ở
ngay sau phần tiêu đề chương trình:
a) Uses CRT ;
b) USES Graph;
c) use CRT ;
d) không khai báo gì cả ;
Câu 7: Khẳng định nào Sai: trong Turbo Pascal,
a) để lưu chương trình lên đĩa, gõ phím F2 hoặc chọn lệnh File / Save ;
b) để mở một tập tin cũ, gõ phím F1;

c) để tìm lỗi cú pháp của chương trình, gõ phím Alt_F9, hay F9 ;
d) để chạy chương trình, gõ phím ^F9 hoặc chọn lệnh Run / Run ;
Ngôn ngữ lập trình Pascal
15
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Bài 2: CÁC KHÁI NIỆM TRONG PASCAL
1. Hằng, biến, biểu thức
a. Khái niệm về biến và hằng
Quá trình xử lý trong máy tính đòi hỏi mỗi giá trị phải được lưu trữ ở một ô nhớ nào đó
trong bộ nhớ của máy, và ô nhớ này được đặt một cái tên để gọi. Khi đó mọi việc tính toán
hay xử lý liên quan đến mỗi giá trị được thực hiện gián tiếp thông qua tên của ô nhớ chứa
giá trị đó. Ví dụ, nếu số 4.72 được lưu trong ô nhớ có tên là x, thì biểu thức 4.72*2 có thể
được viết là x*2. Việc dùng tên x dễ nhớ và tiện hơn nhiều so với việc dùng và nhớ số
4.72.
Như vậy, khi một ô nhớ được đặt tên thì tên này đồng nhất với giá trị của nó. Trong một
chương trình, mỗi ô nhớ có một tên duy nhất nhưng giá trị của nó thì có thể thay đổi hoặc
không. Nếu giá trị của ô nhớ có thể thay đổi được thì ô nhớ này là một biến, tên của ô nhớ
là tên biến, ngược lại, nếu giá trị của ô nhớ không thể thay đổi, thì ô nhớ là một hằng, tên
của ô nhớ là tên hằng.
Các biến và hằng tham gia trong chương trình đều phải được khai báo. Việc khai báo có
tác dụng báo trước cho máy dành sẵn các ô nhớ thích hợp trong bộ nhớ để sẵn sàng chứa
dữ liệu.
b. Biểu thức
Biểu thức là một công thức gồm có một hay nhiều thành phần được kết nối với nhau bởi
các phép toán. Mỗi thành phần (hay toán hạng) có thể là hằng, là biến hay là hàm. Khi các
phép toán trong biểu thức được thực hiện thì ta nhận được một giá trị gọi là kết qủa của
biểu thức. Kiểu dữ liệu của kết qủa gọi là kiểu dữ liệu của biểu thức. Ví dụ:
3* 5 div 2 + 7 mod 4 là biểu thức nguyên, có kết qủa là 10
2 + sin(pi/2) là biểu thức thực, có kết qủa là 3.0
Chr(ord(‘a’) - 32 ) là biểu thức ký tự, có kết qủa là ‘A’

(4+2=6) and (‘B’<>‘b’) là biểu thức lôgic, có kết qủa là True
‘AB’+’CD’ là biểu thức chuỗi, có kết qủa là ‘ABCD’
Các thành phần trong biểu thức cần phải có kiểu dữ liệu phù hợp để cho các phép toán
thực hiện được, nếu không máy sẽ báo lỗi. Ví dụ, biểu thức sau:x:= 5 + ‘A’ là sai vì ta
không thể cộng một số nguyên với một ký tự.
Một biểu thức có thể chứa nhiều phép toán, thứ tự thực hiện các phép toán được cho trong
bảng 2.1 dưới đây.
Ngôn ngữ lập trình Pascal
Cấp ưu tiên Phép toán
1 biểu thức trong ngoặc đơn ( )
2 Các hàm
3 NOT, - (phép lấy dấu âm)
4 * , /, DIV, MOD, AND
5 Shl, Shr
6 +, - (trừ), OR, XOR
7 =, <>, <, <=, >, >=, IN
16
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Bảng 2.1
Việc tính toán một biểu thức dựa theo hai quy tắc:
Quy tắc 1: Phép toán có cấp ưu tiên nhỏ thì được tính trước, phép toán có cấp ưu tiên lớn
thì được tính sau.
Quy tắc 2: Ðối với các phép toán đứng liền nhau và có cùng cấp ưu tiên, thì phép toán nào
đứng trước được tính trước.
Ví dụ: tính biểu thức số học:
(4+5)*2 div 7 + sin(pi/6) = 9 * 2 div 7 + 0.5 = 18 div 7 + 0.5 = 2 + 0.5 = 2.5
Ví dụ: tính biểu thức lôgic:
(2 > 4 div 2) or Not (49.25 + 2 < 50) = (2 > 2) or Not (51.25 < 50)
= FALSE or Not FALSE = FALSE or TRUE = TRUE
2. Câu lệnh và lời chú thích

a. Phân loại câu lệnh
Câu lệnh là một dãy các ký tự cơ bản được xây dựng theo một quy tắc nhất định (gọi là
cú pháp) nhằm chỉ thị cho máy thực hiện một công việc xác định. Các câu lệnh được chia
ra hai loại: câu lệnh đơn giản và câu lệnh có cấu trúc.
Lệnh gán và lời gọi thủ tục được xếp vào loại đơn giản. Ví dụ:
k:= 20;
Clrscr ;
Writeln(k) ;
Các lệnh rẽ nhánh và lệnh lặp được xếp vào loại có cấu trúc, chúng được xây dựng từ
các lệnh đơn giản, ví dụ:
If k>=0 then Writeln(k) else Writeln(-k) ;
Hai hay nhiều lệnh đơn giản được gom lại và đặt giữa hai từ khóa BEGIN và END tạo
thành một câu lệnh ghép, câu lệnh ghép cũng là lệnh có cấu trúc, ví dụ:
Begin
Write(‘ nhập k:’);
Ngôn ngữ lập trình Pascal
17
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Readln(k)
End;
Từ các lệnh đơn giản và các lệnh có cấu trúc đã có lại có thể xây dựng được các lệnh có
cấu trúc phức tạp hơn, ví dụ:
If k>= 0 then Writeln(k)
else
Begin
Writeln(‘ k âm, xin nhập lại: ‘);
Readln(k);
End;
Sau đây sẽ trình bày kỹ về một lệnh đơn giản và thông dụng: lệnh gán.
b. Lệnh gán

Lệnh gán có cú pháp như sau: TênBiến:= Biểuthức;
Ý nghĩa: tính toán biểu thức bên phải, rồi lưu kết qủa tính được vào tên biến ở vế trái.
Ví dụ, cho khai báo:
Var A, B: Real; K: Integer;
Khi dùng lệnh các lệnh:
K:= 10 ; B:= K* 3+4.5;
thì biến K có giá trị là 10, biến B có giá trị là 34.4.
Nếu thực hiện tiếp lệnh gán: B:= 17/2; thì giá trị của B bây giờ sẽ là 8.4.
Như vậy nếu một biến được gán nhiều lần thì nó sẽ lấy giá trị của lần gán sau cùng, tính
đến thời điểm đang xét.
Yêu cầu để cho lệnh gán thực hiện được là kiểu dữ liệu của biểu thức ở vế phải phải phù
hợp với kiểu dữ liệu của biến ở vế trái, nếu không phù hợp thì khi dịch (Compile) chương
trình, Turbo Pascal sẽ thông báo lỗi: "Error 26: Type mismatch". Ví dụ, lệnh gán dưới đây
là sai vì vế trái là kiểu thực còn vế phải là kiểu chuỗi: A:=‘Pascal’;
Chú ý rằng một số nguyên có thể gán cho một biến thực, (chẳng hạn lệnh A:=10; là
đúng), nhưng một số thực không thể gán cho một biến nguyên. Ví dụ lệnh K:=10/4; là sai
vì biến K có kiểu nguyên, còn vế phải cho kết qủa là một số thực (=2.5).
Xét thêm ví dụ về các kiểu dữ liệu khác:
Cho khai báo:
Ngôn ngữ lập trình Pascal
18
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Var Ch: Char ; St: String[20];
Khi đó: Lệnh St:=‘A’; là đúng.
Lệnh St:=‘1234’; là đúng.
Lệnh Ch:=‘ABCD’; là sai vì vế phải là một chuỗi.
Lệnh St:= 100; là sai vì vế phải là một số.
Lệnh Ch:=‘1’ ; là đúng.
Lệnh Ch:=St ; là sai vì vế phải là một chuỗi.
c. Lời chú giải

Lời chú giải có thể đặt tại bất kỳ chỗ nào trong chương trình và được viết theo một trong
hai cách:
{ lời giải thích } hoặc (* lời giải thích *)
Lời giải thích là một chuỗi ký tự giải thích mục đích của chương trình hay của một câu lệnh.
Nó chỉ có tác dụng cho người dùng tham khảo nhằm hiểu nhanh mục đích của chương trình hay
của một câu lệnh mà không cần phải đọc hết chương trình hay câu lệnh đó.
3. Nhập dữ liệu
Nhập và xuất dữ liệu là hai khâu quan trọng trong quá trình xử lý thông tin. Hầu như
chương trình nào cũng phải giải quyết vấn đề nhập, xuất dữ liệu.
a. Nhập dữ liệu kiểu số
Ðể nhập dữ liệu cho biến nguyên hay thực, ta dùng lệnh:
Readln(biến1, biến2, , biếnk);
trong đó biến1, biến2, , biếnk đã được khai báo và có kiểu dữ liệu là nguyên hay thực.
Khi gặp lệnh này, chương trình tạm dừng, chờ ta gõ đủ k số từ bàn phím và kết thúc
bằng Enter, rồi gán lần lượt k số đó cho biến1, biến2, , biếnk.
Ví dụ, để nhập dữ liệu cho hai biến thực x, y và biến nguyên j, ta dùng lệnh:
Readln(x, y);
Cách nhập như sau:
hoặc gõ 10 5.5  (có khoảng trắng giữa hai số ),
hoặc gõ từng số và Enter như dưới đây:
10
5.5
Trong cả hai trường hợp ta đều được: x=10 và y=5.4.
Ngôn ngữ lập trình Pascal
19
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Ngoài cách dùng một lệnh Readln(x, y) ; ta cũng có thể nhập riêng cho từng biến bằng
hai lệnh sau:
Readln(x); Readln(y);
b. Nhập dữ liệu kiểu ký tự hay kiểu chuỗi

Ta dùng lệnh:
Readln(biến );
Ví dụ, cho khai báo:
Var
Ho_ten: String[18];
Phai: String[3];
Khoi_thi: Char;
Muốn nhập dữ liệu cho ba biến Ho_ten, Phai, Khoi_thi ta phải dùng ba lệnh:
Readln(Ho_ten);
Readln(Phai);
Readln(Khoi_thi);
Khi nhập, ta gõ:
Tran Van Thanh 
nam
A
Kết qủa, ba biến sẽ có giá trị là: Ho_ten = ‘Tran Van Thanh’, Phai= ‘nam’ và
Khoi_thi=‘A’.
Khác với dữ liệu số, ta không nên dùng một lệnh Readln để nhập dữ liệu cho hai hay
nhiều biến kiểu ký tự hay kiểu chuỗi, vì sẽ có những nhầm lẫn không kiểm soát được.
Ví dụ, không dùng lệnh sau: Readln(Ho_ten, Phai, Khoi_thi);
c. Các chú ý
* Dữ liệu nhập phải phù hợp với kiểu của biến. Nếu không phù hợp thì chương trình sẽ
dừng ngay và hiện thông báo lỗi.Ví dụ khi gặp lệnh Readln(j) ; mà ta gõ 3.5 thì bị lỗi
vì j là biến nguyên, còn 3.5 là số thực.
* Lệnh: Readln ; là một dạng nhập dữ liệu đặc biệt vì nó không có biến nào để nhận dữ
liệu nhập vào. Người ta dùng lệnh này khi muốn tạm dừng chương trình để xem kết qủa
trên màn hình, xem xong, gõ phím Enter thì chương trình chạy tiếp.
* Biến kiểu lôgic không nhập được từ bàn phím.
Ngôn ngữ lập trình Pascal
20

BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
* Pascal còn có một lệnh nhập dữ liệu nữa là Read, có công dụng như lệnh Readln, nhưng
ít dùng. Sự khác nhau giữa Read và Readln là ở chỗ: sau khi đã nhận đủ các giá trị cho các
biến cần nhập, lệnh Readln sẽ xóa sạch các giá trị nhập thừa, còn lệnh Read thì không. Các
giá trị nhập thừa của lệnh Read sẽ được tự động gán cho các biến trong lệnh nhập tiếp theo.
Ví dụ, xét hai lệnh:
Readln(x, y); Readln(j);
Nếu khi nhập, ta gõ: 12.5 20.6 10 
thì x=12.5, y=20.6, còn số 10 thừa bị xóa luôn. Biến j trong lệnh Readln(j) ở dưới không bị
ảnh hưởng. Muốn nhập số 9 cho j, ta gõ 9 .
Với đoạn chương trình:
Read(x, y);
Readln(j);
Nếu khi nhập, ta cũng gõ: 12.5 20.6 10 
thì x=12.5, y=20.6, còn số 10 thừa không bị xóa mà tự động gán cho biến j trong lệnh
Readln(j) tiếp theo, kết qủa j=10 cho dù ta chưa muốn nhập cho j.
Vậy, lệnh Read có thể làm sai ý đồ nhập của lệnh nhập tiếp theo.
Lời khuyên là không nên dùng lệnh Read , chỉ dùng Readln.
4. Xuất dữ liệu
Các dữ liệu được in lên màn hình nhờ các lệnh sau:
Writeln(bt1, bt2 , , btk ); Write(bt1, bt2 , , btk );
ở đây, bt1, bt2, , btk là các biểu thức cần phải in giá trị lên màn hình. Trong trường hợp
đơn giản, mỗi biểu thức này có thể là một biến, một hằng, hay một hàm.
Việc in được thực hiện như sau: tại vị trí hiện thời của con trỏ trên màn hình, in ra giá trị
của biểu thức bt1, in tiếp giá trị của biểu thức bt2, , in tiếp giá trị của biểu thức btk. Các
giá trị này được in trên một dòng, nếu dài quá khổ màn hình thì sẽ được in tiếp ở dòng
dưới.
Ví dụ, lệnh Writeln(3*2+9); sẽ in lên màn hình số 14.
Nếu i, j là các biến nguyên thì khi thực hiện các lệnh sau:
i:=10 ; j:=15*2 ; Writeln(i, j+1, 678);

trên màn hình sẽ hiện: 1031678.
Ngôn ngữ lập trình Pascal
21
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Sự khác nhau giữa lệnh Writeln và Write là ở chỗ: sau khi in xong giá trị của các biểu
thức, lệnh Writeln sẽ đưa con trỏ xuống đầu dòng dưới, còn lệnh Write thì không. Ðiều này
chỉ ảnh hưởng đến lệnh in tiếp theo mà thôi.
Ví dụ, khi thực hiện hai lệnh sau:
Writeln(‘Thao chuong bang ‘); Writeln(‘ngon ngu pascal’);
kết qủa trên màn hình sẽ hiện hai dòng:
Thao chuong bang
ngon ngu pascal
Nếu thay lệnh đầu bằng Write như dưới đây:
Write(‘Thao chuong bang ‘);Writeln(‘ngon ngu pascal’);
thì kết qủa trên màn hình sẽ hiện ra chỉ một dòng: Thao chuong bang ngon ngu pascal
a. In không định dạng
Ðối với các biểu thức kiểu nguyên, kiểu ký tự, kiểu lô gíc hay kiểu chuỗi, thì lệnh:
Writeln(biểuthức ) ;
sẽ in nguyên văn giá trị của biểu thức. Ví dụ:
Lệnh Writen(‘ket qủa x=‘ , 4+15); sẽ in ra: ket qua x=19
Lệnh Writeln(‘A’ , ‘=‘ , 2*3<5); sẽ in ra: A=FALSE vì biểu thức 2*3< 5 có kết qủa là
FALSE.
Nếu gán: Ho_ten:=‘ Tran Van Thanh’; thì lệnh
Writeln(‘Ho va ten: ‘, Ho_ten);
sẽ in lên màn hình dòng chữ:
Ho va ten: Tran Van Thanh
Cần phân biệt hai đại lượng ‘Ho va ten: ‘ và Ho_ten. Chúng khác nhau hoàn toàn: ‘Ho
va ten: ‘ là một giá trị chuỗi, tức là một hằng chuỗi nên sẽ được in nguyên văn lên màn
hình, còn Ho_ten là một biến kiểu chuỗi nên sẽ in giá trị mà biến này đang chứa.
Ðối với các biểu thức kiểu số thực thì lệnh: Writeln(biểuthức );

sẽ in giá trị của biểu thức ra dưới dạng dấu chấm thập phân di động có cả thảy 17 ký số,
trong đó có 10 ký số trong phần định trị, như sau:
Ngôn ngữ lập trình Pascal
22
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Ví dụ, cho x, y là hai biến thực và gán x:=100/4; y:=-9/300; thì hai lệnh sau:
Writeln(‘ x= ‘, x); Writeln(‘ y= ‘, y);
sẽ in lên màn hình:
x = 2.5000000000E+01
y = -3.0000000000E-02
b. In có định dạng
* In số thực có định dạng:
In các số thực theo cách trên rất khó đọc. Vì thế các số thực thường được in có định
dạng, giống như cách viết số thông thường, bằng lệnh:
Writeln(biểuthức: n: k );
Ở đây n và k là các số tự nhiên, ấn định dùng n cột để in giá trị của biểu thức, trong đó
có k cột dành cho phần thập phân. Nếu số cần in có ít hơn n chữ số thì nó sẽ được in dồn
về bên phải và thêm các ký tự trắng ở bên trái cho đủ n cột.
Ví dụ, cho x, y là các biến kiểu thực và: x:=100/4; y:=-123.4824;
Hai lệnh sau: Writeln(‘ x=‘, x:6:2); Writeln(‘ y=‘, y:10:3); sẽ in lên màn hình:
x= 24.00 (trước số 2 có 1 ký tự trắng)
y= -123.482 (trước dấu - có 2 ký tự trắng)
Nếu n nhỏ hơn chiều dài của số cần in thì số sẽ được in ra với đầy đủ các chữ số trong
phần nguyên. Ví dụ, khi thực hiện các lệnh sau:
x:=12344.675; Writeln(‘x= ‘, x:0:2);
trên màn hình sẽ hiện: x=12344.68
Ở đây máy đã làm tròn số khi bỏ số lẻ cuối cùng.
* In kiểu nguyên, ký tự, chuỗi và lôgic có định dạng:
Dùng lệnh: Writeln(biểuthức: n);
trong đó n là số nguyên ấn định số cột dùng để in giá trị của biểu thức. Nếu n lớn hơn độ

dài của giá trị cần in thì giá trị sẽ được in dồn về bên phải, và thêm các khoảng trắng ở bên
trái cho đủ n cột. Nếu n nhỏ hơn độ dài của giá trị cần in thì giá trị sẽ được in nguyên văn.
Ví dụ:
Lệnh Write(5+40:4); in ra: 45 (có 2 ký tự trắng trước số 45)
Lệnh Write(5+40:1); in ra:45 (in nguyên văn giá trị 45)
Ngôn ngữ lập trình Pascal
23
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
Lệnh Write(‘Pascal’:9); in ra: Pascal (có 3 ký tự trắng trước chữ Pascal)
Lệnh Write(‘Pascal’:2); in ra:Pascal (in nguyên văn)
Lệnh Write(‘*’:3); in ra: * (có 2 ký tự trắng trước dấu *)
Các chú ý:
o Nhóm ba lệnh: Write(x); Write(y); Write(j); chỉ có tác dụng như một lệnh:
Write(x,y,j);
o Nhóm ba lệnh: Write(x); Write(y); Writeln(j); chỉ có tác dụng như một
lệnh: Writeln(x, y, j);
o Lệnh: Writeln; không in gì cả, chỉ đơn giản là đưa con trỏ xuống dòng
dưới.
Ngôn ngữ lập trình Pascal
24
BỘ MÔN TIN HỌC  TRƯỜNG ĐẠI HỌC HOA LƯ
CÂU HỎI ÔN TẬP
Câu 1:Cho x, y, z là các biến kiểu thực, lệnh nào là sai:
a) x:=y+z; b) Readln(x, y, z); c) x+y:=z; d) Writeln(x+y, z:0:2);
Câu 2: Cho x là biến kiểu thực, sau khi thực hiện hai lệnh: x:=10 ;Writeln(x);
Kết qủa in lên màn hình là:
a) 10; b) 10.00; c) 1.0000000000E+01; d)+1.0000000000E+01;
Câu 3: Cho biến X kiểu thực và gán X:= 12.41 ;
Ðể in lên màn hình như sau: X= 12.41
chọn lệnh nào: a)Writeln(X); b)writeln(X:5); c)writeln('X= ', X:5:2); d)writeln('X=,

X:5:2');
Câu 4: Kiểu dữ liệu của biểu thức 4 div 6 + 6 / 3 + Ord(‘A’) là:
a) nguyên; b) lô gic; c) ký tư ; d) thực;
Câu 5: Cho khai báo: Var Ho, ten: String[15];
Lệnh nào sai:
a) Write(' Ho ten la: ' ; Ho ; Ten); b) Write(' Ho ten la: ' + Ho + Ten);
c) Write(' Ho ten la: ', Ho , Ten) ; d) Write(' Ho ten la: ', Ho + Ten) ;
BÀI TẬP
Câu 1. Cho S là biến kiểu Boolean. Lệnh nào sai, lệnh nào đúng, nếu đúng thì cho biết giá
trị của S:
a) S:= 3*2; b) S:= 3< 2;
c) S:= 3< 2 and 6 - 5 =1; d) S:= (3< 2) and (6 - 5 =1);
Câu 2. Viết chương trình in lên màn hình như sau:
* * * * * * * * * * * * * * * * * * * *
* SOAN THAO CHUONG BANG *
* * * NGON NGU PASCAL * * * *
* * * * * * * * * * * * * * * * * * * *
Câu 3*. Nhập vào số xe (có bốn chữ số) trong biển số xe máy của bạn. Cho biết số xe của
bạn được mấy nước. Bạn là người may mắn nếu số nước = 9. Bạn có may mắn không ?.
Ví du: số xe là 4546, tổng các chữ số là 4+ 5 + 4 + 6 = 19.
19 mod 10 =9. Số nước là 9, may mắn.
Câu 3. Nhập họ tên, năm sinh, nơi sinh, phái (nam hay nữ) của một người. In lên màn hình
họ tên, năm sinh, nơi sinh, phái và tuổi của người đó.
Ngôn ngữ lập trình Pascal
25

×