Tải bản đầy đủ (.pdf) (36 trang)

Giáo trình nhập môn tin học phần III ngôn ngữ lập trình pascal 1

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 (1.42 MB, 36 trang )

TRƯỜNG ĐẠI HỌC XÂY DỰNG
KHOA CÔNG NGHỆ THÔNG TIN
------------  ------------

GIÁO TRÌNH
MÔN HỌC: NHẬP

MÔN TIN HỌC

PHẦN III – NGÔN NGỮ LẬP TRÌNH PASCAL -1

Giảng viên: ĐÀO TĂNG KIỆM
Bộ môn : TIN HỌC XÂY DỰNG

Hà nội 2011
----------


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

PHẦN 3
NGÔN NGỮ LẬP TRÌNH PASCAL
Chương 1 CÁC KHÁI NIỆM CƠ BẢN
I. Ngôn ngữ lập trình Pascal:
1. Giới thiệu chung về ngôn ngữ lập trình:
Từ trước tới nay đã có hàng nghìn ngôn ngữ lập trình khác nhau được thiết kế và sử dụng.
Hàng năm lại có nhiều ngôn ngữ mới ra đời. Các ngôn ngữ được dùng phổ biến có thể kể
đến : Ngôn gữ Ada, Angol, APL, Asembly Basic, C, C++,Cobol, Fortran, Delphi, Java,
Lisp,Pascal,Perl,PHP,Prolog, Python, Ruby …Sự phát triển của ngôn ngữ gắn liền với sự


phát triển của tin học và phần cứng. Mỗi loại ngôn ngữ thích hợp với một lĩnh vực và một
số dạng bài toán nhất định. Ví dụ, trong khối kỹ thuật, các ngôn ngữ được sử dụng nhiều là
Algol, Fortran, C++, Basic, Visual Basic, Java, Pascal …
Các ngôn ngữ lập trình có thể xây dựng dựa trên “ Lập trình tuyến tính”, “ Lập trình có cấu
trúc” : Pascal; “Lập trình hướng đối tượng” : Java, Delphi,Visual Basic; “Lập trình trên nền
Web”: HTML.
2. Các ưu điểm của Pascal và yêu cầu hệ thống:
- Pascal là do Niklaus Wirth phát triển dựa trên Algol năm 1970, nó là ngôn ngữ lập trình có
cấu trúc. Pascal phù hợp với các dạng bài toán kỹ thuật và dễ diễn tả các sơ đồ thuật toán,
phù hợp cho việc giảng dạy trong các trường phổ thông và đại học.
- Với các phiên bản khác nhau của Pascal nó có thể dùng trong các hệ điều hành DOS,
Window cà cũng có một số hệ điều hành dùng Pascal để viết (như Macintosh).
- Pascal là ngôn ngữ lập trình định kiểu và có trình biên dịch mạnh, có thể giải được các bài
toán đệ qui.
- Tuỳ theo từng phiên bản của Pascal mà có thể chạy trên môi trường DOS hoặc Window
3. Khởi động và giao diện Turbo Pascal:
 Từ DOS : C:\ > CD TP

C:\ TP > CD BIN



C:\ TP \ BIN > TURBO 
Trên màn hình xuất hiện màn hình soạn thảo của Turbo Pascal. Bạn có thể bắt đầu gõ
chương trình .
 Từ WINDOWS có thể bằng nhiều cách :
 Chọn và nhấn vào biểu tượng của PASCAL trên màn hình (nếu có)
Bộ môn Tin học Xây dựng

2



Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1



GVC: Đào Tăng Kiệm

Nhấn Start  Run  Browse mở hộp hội thoại, từ Look in tìm thư mục và tệp chứa
Turbo Pascal ( Turbo.exe )  nhấn OPEN sẽ hiện màn hình Pascal (nền xanh):

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

-



-

1. Ký hiệu cơ sở của Pascal
Bộ ký tự :
Các chữ : 26 chữ cái từ A-W không phân biệt chữ hoa và chữ thường.
Số từ 0-9
Các dấu : . , ’ ( ) / [, ], *, …và một số ký tự đặc biệt. Không được sử dụng các ký hiệu
toán học và vật lý như Ω, ∆, ∂, ∑ … Trong đó: dấu phẩy (,) dùng để nhăn cách các
thành phần trong danh sách; Dấu chấm (.) ngăn phân nguyên- thập phân; dấu nhát
đơn (’ ..’) giới hạn hằng xâu ký tự; Dấu ngoặc tròn ( ( ..) ) chứa các biểu thức, đối số
của hàm ; dấu bằng (=) phép so sánh; dấu chấm phẩy (;) dùng ngăn cách các câu; dấu
ngoặc vuông ( [ ] ) giới hạn chỉ số của mảng.
Dấu của phép tình số học : + - / * Div Mod

Dấu của phép tình so sánh: > ,<, >= , <= , = , <>, IN
Dấu của phép tính xâu : + và các phép so sánh
Dấu các phép tính Logic : Not, And, Or, Xor
Từ khóa (Keyword): do ngôn ngữ qui định, là các từ mà người sử dụng không được
dùng với mục đích khác. Pascal ưu tiên cao nhất là cho các từ này. Trong chương
trình nếu viết đúng ngữ pháp từ khoá có màu trắng. Từ khoá chia thành 3 nhóm:
Các từ chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTON
Các từ khai báo: LABEL,CONST,TYPE,VAR, FILE, RECORD
Các lệnh điều khiển: GOTO, IF THEN ELSE, CASE OF, FOR TO DO, WHILE DO,
REPEAT UNTIL, . . .

Bộ môn Tin học Xây dựng

3


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

 Từ chuẩn: là các từ mà Pascal đặt tên sẵn nhưng người sử dụng có thể thay đổi được,
như: READ, WRITE, INTEGER, REAL …
 Tên (Identifier): Mọi đại lượng sử dụng trong chương trình Pascal (hằng, biến, kiểu,
hàm, tên chương trình …) đều phải đặt tên để chương trình có thể nhận dạng được.
Tên do người sử dụng tự đặt, tuỳ từng phiên bản của Pascal mà qui định về tên là
khác nhau.Với Turbo 7.0 trở lên, tên có độ dài tuỳ ý, có thể đến 127 ký tự, nhưng chỉ
có 40 ký tự đầu là có nghĩa (phân biệt sự khác nhau giữa các tên). Thông thường tên
đặt ngắn và viết tắt cho nghĩa của các hàm, biến, kiểu… cho dễ nhận dạng.
 Dấu chấm phẩy và lời giải thích:
- Kết thức mọi câu lệnh của Pascal là dấu ; Có thể viết nhiều lệnh trên một dòng và ngăn

cách nhau bằng dấu ;. Sau các từ khai báo như Var, Type, Const…Begin không có dấu ;
- Trong chương trình, người sử dụng có thể đưa vào một số dòng giải thích cho từng
phần của chương trình, hoặc giải thích cho các biến, quá trình thực hiện …, những dòng
này chỉ hiện trong listing chương trình, không có tác dụng với trình dịch và quá trình
thực hiện. Những dòng này được đặt trong cặp ngoặc { …} hoặc {* …*} và sẽ hiện màu
ghi nhạt để nhận biết. Khi gặp những dòng này chương trình bỏ qua phần biên dịch và
thực hiện.
2. Hằng và biến:
 Hằng là một đại lượng có giá trị không đổi trong các lần thực hiện chương trình.
Hằng có thể sử dụng qua một tên và được gán giá trị cụ thể. Các tên của hằng tham
gia trong chương trình sẽ tự động được gán giá trị đã khai báo. Khi cần thay đổi giá
trị của hằng, chỉ cần thay trong phần khai báo, chương trình sẽ tự động cập nhật.
 Biến là một đại lượng có giá trị thay đổi trong mỗi lần thực hiện chương trình. Biến
có thể là biến đơn (m,i), biến mảng (A[i], B[i,j]), biến bản ghi (DS[i].HT)…Tất cả
các biến dùng trong chương trình đều phải đặt tên (khác nhau) và phải khai báo. Tên
biến dùng để xác lập quan hệ giữa biến, địa chỉ bộ nhớ lưu giữ biến.
3. Toán tử và biểu thức:
 Toán tử là dấu các phép tính của các phép toán số học, quan hệ, logic, xâu, dùng để
kết nối các hằng, biến, hàm thành các biểu thức phức tạp.
 Biểu thức là một thành phần hầu như có mặt trong mọi chương trình. Nó có thể là
một hằng, một biến, hoặc kết hợp giữa hằng, biến, hàm mẫu và các toán tử. Pascal có
4 loại biểu thức: biểu thức số học, biểu thúc so sánh (quan hệ), biểu thức xâu, biểu
thức logic. Tùy từng loại biểu thức mà kết quả của nó có thể là một giá trị số, xâu
hoặc nhận một trong hai giá trị logic đúng (True) và sai (False).
4. Hàm mẫu và thủ tục:
 Hàm mẫu: là những modul chương trình, đã được viết sẵn, được dịch và cài đặt trong
thư viện của chương trình. Khi sử dụng người dùng chỉ việc gọi nó ra qua tên hàm và
đưa vào các đối số (đặt trong cặp ngoặc tròn) theo qui định của chương trình. Sau khi
Bộ môn Tin học Xây dựng


4


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

tính toán, chương trình trả lại kết quả tại vị trí của hàm mẫu. Hàm mẫu có thể được
gọi riêng hoặc là một thành phần trong biểu thức. Mỗi loại biểu thức lại có một số
hàm mẫu khác nhau.
 Thủ tục: cũng giống như hàm mẫu, nó cũng dùng để thực hiện một nhiệm vụ nào đó,
được Pascal viết sẵn hoặc người sử dụng tự tạo và sau đó có thể được sử dụng nhiều
lần qua tên và các tham số (không bắt buộc).
5. Các lệnh:
Lệnh là một trong các thành phần quan trọng tạo nên chương trình. Lệnh dùng để xác
định các công việc mà chương trình cần thực hiện. Lệnh trong Pascal phần thành 2 nhóm:
Lệnh đơn giản và lệnh có cấu trúc. Lệnh thực hiện và lệnh không thực hiện.
Lệnh đơn giản là lệnh không chứa lệnh khác : lệnh gán, các lệnh nhập, xuất dữ liệu, lời
gọi thủ tục, chương trình con.
Lệnh có cấu trúc là lệnh có chứa các lệnh khác trong đó: các lệnh điều khiển, chu
trình…
Lệnh không thực hiện: là các lệnh khai báo, không thực hiện gì, không có kết quả.
Lệnh thực hiện: là các lệnh thực hiện một hoặc nhiều thao tác nào đó theo yêu cầu của
chương trình.
6. Cấu trúc chung của chương trình Pascal:
Nói chung chương trình Pascal có 3 phần:
 Phần tiêu đề : khai báo tên của chương trình chính hoặc chương trình con (không bắt
buộc): PROGRAM Tên_CT_chính ; PROCEDURE Tên_CT_Con ; .
 Phần khai báo: tuỳ từng chương trình cụ thể mà có thể có phần này và số lượng
nhiều ít khác nhau, theo một trật tự nhất định (Label,Const, Type, Var, Procedure).

Mọi hàm, biến, kiểu sử dụng trong chương trình đều phải báo theo những qui định
của chương trình (xem chương 2).
 Phần thân chương trình: Mọi chương trình đều phải có phần thân, bắt đầu bằng
BEGIN và kết thúc bằng END. Trong thân chương trình thông thường có 3 mảng
chính :
- Nhập các dữ liệu ban đầu
- Tính toán, xử lý các yêu của bài toán
- Xuất, in kết quả ra màn hình, giấy in, ghi vào tệp trên đĩa.
Ngoài ra có thể thêm các dòng chú giải.
Ví dụ:
Program Chuong_trinh_con_sap_xep_ma_tran;
{ Phan khai bao }
Type k1=array[1..15,1..15] of real;
var n,m,i,j,k:integer;
a:k1;
c:real;
Bộ môn Tin học Xây dựng

5


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

Procedure NhapDL ( Var n,m:integer;Var A:k1);
begin
write('n,m=?');
readln(n,m);
for i:=1 to n do

for j:=1 to m do
begin
write('A[',i,',',j,']=?');
readln(a[i,j]);
end
end;
.
.
.
.
{ Phan than chuong trinh }
BEGIN
{ Cac loi goi chuong trinh con }
NhapDL(n,m,A);
Xuly(n,m,A);
InKetqua (n,m,A);
readln
END.

Bộ môn Tin học Xây dựng

6


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

Chương 2 CÁC KIỂU DỮ LIỆU VÀ CÁCH KHAI BÁO – BIỂU THỨC
I. Các kiểu dữ liệu

1. Khái niệm: Mỗi đại lượng tính toán trong chương trình đều có 3 đặc trưng : tên- kiểu
dữ liệu và giá trị. Pascal là ngôn ngữ lập trình có định kiểu mạnh. Kiểu dữ liệu xác định
cách ghi, nhận và xử lý dữ liệu trong máy. Dữ liệu có 2 loại: Dữ liệu chuẩn (không có cấu
trúc) và Dữ liệu có cấu trúc.
 Dữ liệu chuẩn là DL không thể phân nhỏ ra thành các bộ phận, nó là dữ liệu nguyên
thủy hay vô hướng.
 Dữ liệu có cấu trúc là DL được lập ra từ DL nguyên thủy theo một cách nào đó, có
cấu trúc phức tạp hơn. Khi dùng DL này, người lập trình phải mô tả trước cấu trúc để
chương trình có cách xử lý riêng.
 Ngoài ra Pascal còn có kiểu dữ liệu con trỏ là loại DL có cấu trúc thay đổi trong quá
trình xử lý.
2. Sơ đồ cấu trúc các kiểu dữ liệu:
Kiểu chuẩn (Nguyên – Thực –Logic -Ký tự)
Kiểu vô hướng
Kiểu tự tạo - Miền con (Subrange)
– Liệt kê ( Enumerated)
Kiểu có cấu trúc
- Kiểu mảng (Array)
- Kiểu tập hợp (Set)
- Kiểu bản ghi (Record)
- Kiểu tệp (File)
Kiểu xâu (String)
Kiểu con trỏ động (Pointer)
3. Cách khai báo các kiểu dữ liệu:
 Khai báo trực tiếp: đối với các dữ liệu vô hướng, hoặc kiểu của dữ liệu đã xác định,
có thể khai báo trực tiếp theo dạng : Danh sách dữ liệu : kiểu dữ liệu;
Ví dụ : Var
I, m : integer; T: real;
A : aray [1 .. 20 ] of real;
 Khai báo gián tiếp: cách khai báo này có thể áp dụng cho mọi loại dữ liệu đã xác

định kiểu hoặc chưa xác định kiểu. Dùng cách này, bước đầu là mô tả kiểu cho DL
(tạo kiểu mới) bằng từ khóa Type, sau đó khai báo.
Ví dụ: Type
CS = integer ;
Bộ môn Tin học Xây dựng

7


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

VT= aray [1.. 20] of real;
Var m,i : CS ;
A, B : VT;

II. Các dữ liệu đơn giản chuẩn (vô hướng) – Khai báo
1. Dữ liệu nguyên:
 Là kiểu để biểu diễn một miền số nguyên. Giá trị tối đa của nó phụ thuộc vào phạm
vi của máy. Số nguyên có thể dùng cho các hằng, biến, hàm, kiểu.
 Số nguyên có thể dùng trong các phép tính số học ( +, -, *, div, mod), các phép tính
so sánh (>, <, >=, <=, =, <> ).
 Dữ liệu nguyên có thể khai báo qua từ khóa INTEGER, BYTE, LONGIN, WORD
Để khai báo các giá trị tối đa các chiều của mảng, chỉ số phần tử mảng, biến điều khiển chu
trình… phải là số nguyên.
 Cách khai báo : Danh sách dữ liệu: Integer ;
 Ví dụ:
m , i, sl :Integer ;
2. Dữ liệu thực:

 Là kiểu để biểu diễn một số thập phân có 2 dạng:
- Dạng thông thường: dùng dấu chấm thay cho dấu phẩy thập phân. Ví dụ: 3168.72
- Dạng khoa học: dùng lũy thừa cơ số 10 có dạng E± n 1n2 . Ví dụ: 0.1267E+03
 Số thực có thể dùng trong các phép tính số học ( +, -, *, / ), các phép tính so sánh (>,
<, >=, <=, =, <> ), các thành phần của hàm mẫu số như SIN, COS, ABS, SQRT …
 Dữ liệu nguyên có thể khai báo qua từ khóa REAL, SINGLE, DOUBLE, EXTENDED
 Cách khai báo : Danh sách dữ liệu: Real ;
 Ví dụ:
a,b, tong : Real ;
3. Ký tự:
 Là kiểu nhận một ký tự bất kỳ trong số 256 ký tự của bảng mã ASCII, nó có thể là
chữ, dấu hoặc một ký hiệu đặc biệt.
 Kiểu ký tự có thể tham gia các phép tính cộng (ghép) hoặc các phép tính so sánh (>,
<, >=, <=, =, <> ) hoặc các hàm mẫu của ký tự như PRED, SUCC, CHR …
 Cách khai báo : Danh sách dữ liệu: Char ;
 Ví dụ:
nhan, hoi : Char;
4. Kiểu miền con:
 Là kiểu dùng để xác định một khoảng giá trị mà dữ liệu có thể nhận. Miền con là
kiểu đếm được có giới hạn trên và giới hạn dưới, các giá trị tiếp theo trong miền theo
một trật tự tự nhiên.
 Cách khai báo: kiểu miền con cũng có thể khai báo trực tiếp hoặc gián tiếp có dạng
Tên kiểu = Hằng cận dưới . . Hằng cận trên
Ví dụ:
Type thang = 1 .. 12 ; max = 1.. 100
Bộ môn Tin học Xây dựng

8



Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

Var

GVC: Đào Tăng Kiệm

A: array [ max] of real;
TD,TC : thang;

5. Kiểu liệt kê:
 Là một tập hợp hữu hạn các giá trị đặt trong cặp ngoặc tròn, được sắp xếp theo một
thứ tự tùy ý ngăn cách nhau bởi dấu phẩy.
 Cách khai báo: kiểu liệt kê cũng có thể khai báo trực tiếp hoặc gián tiếp có dạng
Tên kiểu = (Giá trị1, giá trị2,. . . giá trị n);
Ví dụ:
Type Caukien = ( tuong, cot, dam,san, panen )
Var Btong, Thep: caukien ;
6. Kiểu xâu ký tự (String):
 Xâu là một dãy ký tự có độ dài tối đa là 255 ký tự ( theo bảng mã ASCII). Xâu có thể
dùng để chứa các tiêu đề, lời nhắc (hằng xâu); chứa các dữ liệu chữ, số, dấu … như
họ tên, địa chỉ, …Xâu có thể là hằng, biến (đơn,mảng).
 Khai báo xâu dùng từ khóa STRING .
 Cách khai báo: Danh sách dữ liệu: String [n] ; trong đó n là độ dài của xâu
 Ví dụ
Ten:= ‘ Dai hoc xay dung’ ;
Var HT : array [1 .. 10 ] of string [30] ;

III. Các kiểu dữ liệu có cấu trúc – Cách khai báo
1. Khái niệm : Trong Turbo Pascal có 6 kiểu dữ liệu có cấu trúc: Array, Set, Record,
File, String, Pointer. Muốn làm việc với các dữ liệu này, trước tiên phải khai báo tường

minh chúng, một số loại có thể khai báo trực tiếp như Array, String, còn một số khác phải
khai báo gián tiếp (mô tả cấu trúc – mô tả kiểu của dữ liệu trước khi khai báo chúng qua
từ khóa Type).
2. Khai báo - mô tả kiểu:
 Để mô tả một kiểu dữ liệu mới do người lập trình tự tạo dùng từ khóa TYPE có cấu
trúc như sau:
TYPE
Tên kiểu = Mô tả cấu trúc
 Ví dụ: Type
Thang = [1..12] ;
VT = array [1.. 50] of Real ;
Hoso = Record
HT : string [25] ;
NS: integer;
LT : array [1.. 30 ] of real ;
End;
Bộ môn Tin học Xây dựng

9


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

3. Kiểu mảng (Array):
 Khái niệm:
- Mảng là loại dữ liệu có cấu trúc, là một tập hợp các phần tử có cùng kiểu dữ liệu.
Mỗi mảng có một tên chung và các chỉ số để phân biệt giữa các phần tử mảng. Mảng có thể
là 1 chiều véc tơ), 2 chiều (ma trận) hoặc n chiều.

- Cũng như các biến khác, khi sử dụng mảng, phải khai báo, tuy nhiên, khác với các
biến đơn, ngoài việc khai báo tên, kiểu của biến mảng còn phải khai báo số chiều, kích
thước mỗi chiều của mảng để máy dành sẵn bộ nhớ cho các mảng. Mảng có thể khai báo
trực tiếp trong Var hoặc khai báo gián tiếp qua Type.
- Các chỉ số của phần tử mảng phải đặt trong cặp ngoặc vuông [ ]; Chỉ số mảng phải
là số nguyên , có thể là các hằng, biến, biểu thức đơn giản. Các chỉ số ngăn cách nhau bởi
dấu phẩy. Ví dụ A[i], C[i, j], B[1] ; HT [i+1] ;
- Tên và chỉ số mảng có thể viết hoa hoặc chữ thường (như nhau)
 Cách khai báo mảng:
- Khai báo trực tiếp:
Var
Danh_sách_biến_mảng : array [n1 .. n2, m1.. m2, ..] of kiểu_phần_tử ;
Trong đó n1,m1 là các chỉ số đầu, n2,m2 là các chỉ số cuối của mảng. Kiểu phần tử phải là
một trong các kiểu đơn giản chuẩn hoặc kiểu mới (thì phải khai báo trước đó).
Ví dụ : Var
A,B : array [ 1.. 30 ] of real; HT: array [ 1.. 50 ] of string [20];
C: array [ 1.. 30, 1..5 ] of integer ;
- Khai báo gián tiếp:
Type
Kiểu_mảng = array [n1 .. n2, m1.. m2, ..] of kiểu_phần_tử ;
Var
Danh_sách_biến_mảng : Kiểu_mảng ;
 Ví dụ : Type
VT1 = array [ 1.. 30 ] of real; VT2 = array [ 1.. 50 ] of string [20];
VT3 = array [ 1.. 30, 1..5 ] of integer ;
HS = record
HT, DC, Lop : string ;
Diem: real ;
End;
Var

A,B : VT1 ;
HT :VT2 ;
C: VT3;
DSSV : HS;
4. Dữ liệu kiểu bản ghi
 Khái niệm:
- Bản ghi (Record) là dữ liệu có cấu trúc trong đó mỗi bản ghi có thể có nhiều trường
(Field), mỗi trường có thể có kiểu dữ liệu và cấu trức khác nhau (đơn, mảng, bản ghi).
- Bản ghi có thể là đơn (1 bản ghi) hoặc tập hợp với nhau trong một mảng, trong đó
mỗi phần tử mảng là một bản ghi.
- Bản ghi có thể lồng nhau: trong các trường của bản ghi lại có thể có bản ghi con.
Bộ môn Tin học Xây dựng

10


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

- Trước khi sử dụng bản ghi dưới dạng biến (đơn, mảng) , phải khai báo hay mô tả
cấu trúc bản ghi qua từ khóa Type.
- Tên của kiểu và tên trường bản ghi cũng tuân theo cách đặt tên thông thường của
Pascal.
 Cách khai báo - mô tả cấu trúc bản ghi:
Type
Tên_bản ghi = Record
Tên trường 1 : Kiểu ;
Tên trường 2 : Kiểu ;
........

Tên trường n : Kiểu ;
End;
 Ví dụ:
Khai báo gián tiếp
Khai báo trực tiếp
Type
Var Canbo: record
HosoCB = record
Hoten : string [30] ;
Hoten : string [30] ;
Diachi : string [ 50 ] ;
Diachi : string [ 50 ] ;
Gioi_tinh : Char ;
Gioi_tinh : Char ;
SPthang: array [ 1.. 12 ] of integer ;
SPthang: array [1.. 12] of integer ;
Luong : real ;
Luong : real ;
End;
End;
Var Canbo: HosoCB ;
DS: array [ 1..50] of HosoCB ;
5. Dữ liệu kiểu tập hợp
 Khái niệm: Tập hợp là một số phần tử có cùng một số tính chất nào đó, có thể là các
số tự nhiên, hoặc một trong các kiểu dữ liệu vô hướng (trừ kiểu thực –Real). Trong
tập hợp không có phần tử trống. Số lượng phần tử cực đại trong tập tùy thuộc vào cấu
hình máy (với Turbo Pascal là 256). Một tập được đặt trong cặp ngoặc vuông [ ]. Các
thành phần của tập ngăn cách nhau bởi dấu phẩy (,).
 Khai báo : tập cũng có thể khai báo trực tiếp hoặc gián tiếp qua từ khóa SET OF
Khai báo trực tiếp

Var
Danh_sách_biến: SET OF < kiểu vô hướng>

Khai báo gián tiếp
Type
Tên_kiểu = SET OF < kiểu vô hướng>
Var
Danh_sách_biến: Tên_kiểu

 Ví dụ
Bộ môn Tin học Xây dựng

11


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

Type
T1 = Set of 5..10 ; T2 = Set of 7.. 15
Var Mon _BB: T1 ;
Mon_TC :T2 ;
 Các phép tính với tập: Tập có thể tham gia các phép toán số học như : phép gán, phép
hợp (+), hiệu (-), giao (*) và các phép tính so sánh (<, >, = >= ….),
Ví dụ : Phép gán : T:= T1
kết quả : tập T giống hệt T1
Phép hợp : A:= T1+ T2 kết quả A [5 .. 15] : các phần tử thuộc T1 hoặc T2
Phép hiệu: B:= T1- T2
kết quả B [5,6] : các phần tử thuộc T1không thuộc T2

Phép hợp : C:= T1* T2 kết quả C [7 .. 10] : các phần tử thuộc cả T1 và T2
Phép so sánh T1= T2
kết quả : Sai – False
Phép so sánh T1> T2
kết quả : Sai - False
Phép so sánh T1< T2
kết quả : Đúng – True vì T1 là tập con của T2

IV. Khai báo
1. Khai báo nhãn :
 Nhãn là một số nguyên không dấu (tối đa là 4 chữ số) một ký tự hoặc một tên gọi
của Pascal được dùng làm mốc trong chương trình, đánh dấu vị trí cần chuyển đến
của chương trình. Các câu lệnh đều có thể được gán nhãn. Nhãn đặt ở đầu dòng,
cách câu lệnh bằng dấu hai chấm ( :). Các nhãn không được trùng nhau.
 Khai báo nhãn : bằng từ khóa Label, có dạng:
Label : danh_sách_nhãn ;
Danh sách nhãn : tên các nhãn ngăn cách nhau bởi dấu phẩy.
 Ví dụ :
Label : 10, ‘A’ ;
2. Khai báo hằng:
 Hằng là một đại lượng có giá trị không đổi trong các lần thực hiện chương trình.
Hằng có thể sử dụng qua một tên và được gán giá trị cụ thể. Các tên của hằng tham
gia trong chương trình sẽ tự động được gán giá trị đã khai báo. Khi cần thay đổi giá
trị của hằng, chỉ cần thay trong phần khai báo, chương trình sẽ tự động cập nhật.
 Cách khai báo:
CONST
Tên hằng = giá trị ;
Ví dụ :
CONST
SoPT= 30 ;

SoHS= 50 ;

Bộ môn Tin học Xây dựng

12


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

3. Khai báo biến:
 Tất cả các biến dùng trong chương trình đều phải đặt tên (khác nhau) và phải khai
báo. Tên biến dùng để xác lập quan hệ giữa biến, địa chỉ bộ nhớ lưu giữ biến. Biến là
một đại lượng có giá trị thay đổi trong mỗi lần thực hiện chương trình.
 Cấu trúc và cách khai báo
- Khi nhập dữ liệu, với một tên, Biến chỉ nhận 1 giá trị tại mỗi thời điểm gọi là biến đơn.
- Với cùng một tên nhưng biến có nhiều phần tử khác nhau, ứng với mỗi phần tử là một giá
trị riêng gọi là biến mảng.
- Khai báo biến dùng từ khoá VAR. Khai báo biến để chương trình xác lập mối quan hệ
giữa tên biến và kiểu sẽ được gán và sử dụng cho biến sau này. Cách khai báo:
VAR
Danh_sách_biến: Kiểu_biến;
+ Danh sách biến là tập hợp nhiều tên biến có cùng kiểu, ngăn cách nhau bởi dấu
phẩy ( , )
+ Kiểu của biến phải là một trong các kiểu dữ liệu chuẩn (có sẵn trong Pascal) hoặc
kiểu dữ liệu mới do ngưởi lập trình đã định nghĩa trước đó.
 Ví dụ:
Var
I, m : integer ; A,B,C : real ;

X, Y: arrray [ 1.. SoPT ] of real; Z : V1;

V. Biểu thức
1. Khái niệm chung:
Biểu thức có thể là một hằng, một biến, một hàm mẫu hoặc kết hợp các hằng, biến, hàm
bằng các phép tính (toán tử) và các cặp ngoặc tròn.
Có 4 loại biểu thức: biểu thức số học, biểu thức so sánh (BT quan hệ), biểu thức xâu, biểu
thức logic. Tùy từng loại biểu thức mà kết quả có thể là các giá trị số, ký tự hoặc một trong
2 giá trị đúng (True) hoặc sai (False).
2. Biểu thức số học :
 Đặc điểm: - Có 2 loại, biểu thức nguyên và biểu thức thực.
- Các dấu (phép tính) của biêủ thức nguyên : +, -, *, div, mod
- Các dấu (phép tính) của biêủ thức nguyên : +, -, *, /
 Qui tắc viết: - Không viết hai biến hoặc hai phép tính liền nhau;
- Chỉ sử dụng các dấu ngoặc tròn, số lượng tùy ý
 Qui tắc thực hiện: Thực hiện các phép tính trong ngoặc từ trong ra ngoài. Trong
cùng một cặp ngoặc, ưu tiên thực hiện:
- Thực hiện các hàm mẫu
- Các phép nhân, chia, div, mod theo trật tự từ trái sang phải.
Bộ môn Tin học Xây dựng

13


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

- Các phép tính cộng, trừ từ trái sang phải.
 Chú ý: - ab khác với a*b ; b/2a khác với b/2*a và b/(2*a)

- Không sử dụng các ký hiệu toán học α,β,δ,√và ký hiệu vật lý nhưλ,µ,ν
trong biểu thức của Pascal.
- Không sử dụng các chỉ số trên x2, chỉ số dưới x2 trong biểu thức. Các thành phần của
biểu thức phải viết trên cùng một dòng ( không có tử số, mẫu số).
 Ví dụ:
Biểu thức toán học
(sin(α)- cos(β))( x2 +y2)

Viết theo Pascal
(sin(alpha) - cos(beta)*( x*x +y*y))/ (sqrt(x+y)

√(x+y)
1
1/( a+ ( sqr(b) /sqr(c) ))
2

a+

b
c2

3. Biểu thức so sánh (quan hệ)
 Đặc điểm: - Là biểu thức có hai vế có thể so sánh với nhau về giá trị hoặc thứ tự. Các
vế của biểu thức so sánh có thể là biểu thức số học hoặc biểu thức xâu.
- Kết quả của biểu thức so sánh chỉ nhận một trong hai giá trị đúng (True) hoặc sai
(False).
 Các dấu (phép tính) của biêủ thức so sánh: >, >=, <, <=, =, <> ( lớn hơn, lớn hơn
hoặc bằng, nhỏ hơn, nhỏ hơn hoặc bằng, bằng, khác).
 Qui tắc viết: - Tuân theo qui tắc của biểu thức số học.
- Không được viết 2 phép tính liền nhau. Khi có nhiều hơn 2 phép tính quan hệ, phải kết

hợp với các dấu ngoặc tròn và phép tính logic ( xem phần sau).
 Qui tắc thực hiện: - Ưu tiên thực hiện các phép tính số học theo các qui ước của
phép tính số học.
- Thực hiện các phép tính so sánh.
 Ví dụ:
Biểu thức toán học
b 2 - 4ac ≥ 0
-b ± √∆
X1,2 =
2a

Viết theo Pascal
sqr(b) – 4*a*c >= 0
X1:= -b + sqrt (Delta) )/(2*a)
X1:= -b - sqrt (Delta) )/(2*a)

4. Biểu thức logic
 Đặc điểm: - Trong biểu thức logic có thể là các thành phần của biểu thức số học, BT
xâu, các phép tính của BT so sánh và liên kết với nhau qua ít nhất một phép tính
logic.
Bộ môn Tin học Xây dựng

14


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

- Kết quả của biểu thức logic chỉ nhận một trong hai giá trị đúng (True) hoặc sai

(False).
 Các dấu (phép tính) của biêủ thức logic: NOT, AND, OR : phủ định, nhân logic (và),
cộng logic (hoặc).
 Qui tắc viết: - Tuân theo qui tắc của biểu thức số học, biểu thức so sánh.
- Không được viết 2 phép tính liền nhau.
- Khi kết hợp nhiều phép tính phải kết hợp với các dấu ngoặc tròn.
 Qui tắc thực hiện: - Ưu tiên thực hiện các phép tính số học theo các qui ước của
phép tính số học.
- Thực hiện các phép tính so sánh.
- Thực hiện các phép tính logic.
 Ví dụ:
Biểu thức toán học

Viết theo Pascal

Li <1000 hoặc Ti > 45

(L[i] <1000) OR (T[i ] > 45)
(A[i,j] > 0) AND (A[i,j] < Tbc)

Aij >0 và Aij < Tbc

5. Biểu thức xâu
 Đặc điểm: - Trong biểu thức xâu các thành phần chỉ có thể là các hằng, biến, hàm
xâu và các phép toán xâu.
- Các dấu (phép tính) của biêủ thức xâu: phép + (ghép) và các phép tính so sánh.
- Kết quả của BT xâu có giá trị xâu.
 Qui tắc thực hiện: - Thực hiện các phép tính trong ngoặc từ trong ra ngoài.
- Thực hiện các hàm mẫu xâu
- Các phép cộng, so sánh từ trái sang phải.

6. Hàm mẫu
Hàm mẫu là những modul chương trình hay được sử dụng, đã được viết sẵn, dịch và cài
trong thư viện chương trình dịch của ngôn ngữ. Khi dùng, người lập trình chỉ cần gọi nó ra
theo qui định: qua tên được đặt cho hàm mẫu và các đối số trong cặp ngoặc tròn. Kết quả
tính sẽ được trả về nơi gọi hàm mẫu. Các đối số có thể là hằng, biến, biểu thức.
 Các hàm mẫu của biểu thức số học: X là đối số
Ký hiệu toán
học

X2

Hàm mẫu

Sqr (X)

√x
ex

Ký hiệu toán
học

Hàm mẫu

Ký hiệu toán
học

Hàm mẫu

∣X∣


Abs (X)

Cos x

Cos (X)

Sin x

Sin (X)

Ln x

Ln (X)

Exp (X)

Bộ môn Tin học Xây dựng

15


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

Chương 3 MỘT SỐ LỆNH CƠ BẢN CỦA PASCAL
I. Các lệnh (thủ tục) nhập – xuất (In) dữ liệu
1. Thủ tục viết dữ liệu ra màn hình:
1.1. Màn hình và con trỏ: Vùng làm việc của Pascal chiếm phần lớn màn hình, người sử
dụng có thể gõ nội dung của từng chương trình hoặc là nơi hiện kết quả. Con trỏ trong

màn hình Pascal định vị vị trí làm việc hiện thời, nó có thể ở chế độ thay thế (overwrite)
hoặc chế độ chèn (insert). Có thể dùng các phím mũi tên để di chuyển con trỏ đến vị trí
mong muốn.

Trong đó, các từ khóa hiện màu trắng, còn lại các câu lệnh màu vàng.
Một số qui ước viết trong dạng tổng quát của các câu lệnh:
< Nội dung …> : những thành phần bắt buộc của câu lệnh.
[ … ] : nhứng thành phần không bắt buộc.
1.2. Các thủ tục in dữ liệu:
 Dạng tổng quát :
WRITE [LN] < Danh sách biểu thức> ;
WRITELN;
 Ý nghĩa: - Lệnh dùng để in các dòng văn bản, thông báo, chú giải, các kết quả tính
toán trên màn hình,
- Danh sách biểu thức là tập hợp các biểu thức ngăn cách nhau bởi dấu phẩy, có thể là
các hằng, các biến hoặc biểu thức đơn giản (của một trong các loại biểu thức).
- Nếu là giá trị hằng, lệnh sẽ in nguyên giá trị.
- Nếu là biến, lệnh sẽ in giá trị của biến đã có (đang nằm trong bộ nhớ trong).
Bộ môn Tin học Xây dựng

16


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

- Nếu là biểu thức, lệnh sẽ tính toán biểu thức và in lên màn hình kết quả đã tính.
- Cấu trúc và cách thực hiện của Write hoặc Writeln là giống nhau.
- Lệnh Writeln không có tham số chỉ có tác dụng chuyển con trỏ xuống dòng dưới hoặc

in ra một dòng trống.
 Ví dụ :
Writeln ( ’ Moi ban nhap du lieu’) ;
( Xuất dữ liệu dạng hằng xâu - dòng văn bản )
Writeln ( ’ Nam nay la ‘, 2012);
( Hằng xâu+ giá tị số )
Writeln ( X[1]) ; Write (C[i]) ;
( Xuất các dữ liệu là các phần tử mảng )
Writeln ( ’ Tong cac phan tu la :’ , T:8:2); ( Hiện trên màn hình : Chú giải + kết quả tính )
Write ( SV[i]. Hoten : 20, SV[i]. DTB : 6:1); ( Xuất DL là các trường của biến bản ghi)
 Các lưu ý: Nếu là lệnh Write, sau khi in kết quả, con trỏ vẫn nằm trên cùng dòng, còn
nếu dùng lệnh Writeln, sau khi in, con trỏ sẽ tự động xuống dòng dưới.
- Khi in kết quả lên màn hình bằng lệnh Write có thể in không qui cách hoặc có qui cách.
- Thường kết hợp lệnh Write với lệnh Read để nhập dữ liệu, lúc này lệnh Write đóng vai
trò là lời nhắc.
- Khi in các mảng ra màn hình, phải kết hợp lệnh Wwite với các lệnh chu trình vì mỗi
lệnh write chỉ in được 1 phần tử.
- Có thể viết nhiều lệnh Write trên 1 dòng lệnh, tuy nhiên các kết quả in trên cùng hay
khác dòng phụ thuộc vào sử dụng Write hay Writeln.
Ví dụ: Write (A) ; Write (B) ; Write (C)
(3 giá trị của A,B,C in trên cùng 1 dòng)
Writeln (A) ; Writeln (B) ; Writeln (C) (3 giá trị của A,B,C in trên 3 dòng)
1.3. Cách in dữ liệu trên màn hình
 In không quy cách (không định dạng): Các giá trị trong một câu lệnh lần lượt in ra
nối tiếp nhau theo chặn trái.
- Nếu biểu thức là hằng xâu và hằng nguyên, nó in đúng giá trị đang có. Nếu là số thực,
nó sẽ in theo dạng khoa học (mỗi giá trị chiếm 18 ô trên màn hình, dạng lũy thừa).
Ví dụ :
Lệnh của Pascal
Giá trị của biểu thức

Kết quả hiện trên màn hình
Writeln (‘ Ket qua tinh toan ‘ ); ‘ Ket qua tinh toan ‘
Ket qua tinh toan
Writeln ( SL) ;
12
12
Wwiteln ( Max,Min) ;
Max = 125.7 , Min =23.3
0.125700000000E03
0.233000000000E02
 In theo quy cách: (Có định dạng): Các giá trị trong một câu lệnh lần lượt in ra liên
tiếp nhau, mỗi giá trị sẽ được đặt trong một vùng qui định trong câu lệnh, theo chặn
phải.
- Nếu biểu thức là hằng xâu và hằng nguyên, nó in theo dạng (Tên hằng :n). Nếu là số
thực, nó sẽ in theo dạng : Tên biến : n :TP . Trong đó n là tổng số ô trên màn hình dành

Bộ môn Tin học Xây dựng

17


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

cho để in giá trị của biến (kể cả dấu, phần thập phân, dấu chấm thập phân), TP là số ô
dành riêng cho phần thập phân.
- Nếu các giá trị không sử dụng hết phần định dạng, sẽ để trống phía trước, nếu số vị trí
định dạng khai báo không đủ, sẽ báo lỗi.
Ví dụ :

Lệnh của Pascal
Giá trị của biểu thức
Kết quả hiện trên màn
hình
Writeln (’ Ket qua tinh toan ’ :20 ); ‘ Ket qua tinh toan ‘
- - - Ket qua tinh toan
Writeln ( SL: 6) ;
12
- - - -12
Wwiteln ( Max : 8:2, Min:8:1) ;
Max= 125.7 , Min =23.3 - - 125.70
- - - - 23.3
For i:= 1 to 3 Do
X[1]=124 X[2]= -35.6 _124.0_-35.6_298.3
Write ( X[i]: 6:1);
X[3]= 298.32
1.4. In dữ liệu ra giấy (Máy in) : cấu trúc và cách sử dụng lệnh giống như in trên màn
hình, trong trường hợp này chỉ thêm vào các câu lệnh tham số của máy in (LST, hoặc
LP1, LP2...)
Dạng : WRITE [LN] ( LST, < Danh sách biểu thức>);
2. Thủ tục nhập dữ liệu từ bàn phím
 Dạng tổng quát :
READ [LN] < Danh sách biến> ;
READLN;
 Ý nghĩa: - Lệnh READ [LN] < Danh sách biến > dùng để nhập dữ liệu từ bàn phím
vào bộ nhớ trong.
- Danh sách biến là tập hợp các biến ngăn cách nhau bởi dấu phẩy (không được là hằng
hay biểu thức).
- Lệnh READLN; không phải để nhập dữ liệu, có thể đặt ở cuối chương trình (trước lệnh
END. ) chỉ có tác dụng dừng màn hình ( xem kết quả ).

- Cấu trúc và cách thực hiện của Read hoặc Readln là giống nhau, chỉ khác là lệnh
Readln sau khi nhập dữ liệu con trỏ tự chuyển xuống dòng dưới.
 Ví dụ :
Readln ( A,B,C) ; ( Nhập cho biến đơn)
Read ( X[i] ) ; ( Biến mảng)
Readln ( SV[i]. Hoten , SV[i]. MS); ( Biến bản ghi )
 Các lưu ý và ví dụ minh họa:
- Lệnh Read chỉ được kích hoạt khi chạy chương trình. Mỗi lần gặp lệnh Read, chương
trình dừng thực hiện, chuyển màn hình và đợi người dùng nhập các giá trị của các
biến trong lệnh Read. Các giá trị này phải tương ứng với danh sách biến về số lượng,
Bộ môn Tin học Xây dựng

18


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

-

thứ tự và kiểu đã khai báo. Nếu một trong các yếu tố này không phù hợp, chương
trình vẫn dừng không thực hiện tiếp.
Khi nhập dữ liệu (ứng với danh sách biến trong lệnh Read), các dữ liệu phải ngăn
cách nhau ít nhất một ô trống. Khi nhập xong dữ liệu, nhấn phím Enter để thực hiện
lệnh.
Ví dụ :
Var m : interger ; X : real ; Ten : string [10] ;
Readln ( m, X) ;

-


-

-

GVC: Đào Tăng Kiệm

Nhập dữ liệu: 20

15.5 ↲

Readln ( Ten ) ;
Nhập dữ liệu: Xay dung ↲
Vì bản thân lệnh Read [ln] không thông báo được cho người dùng biết đang đợi biến
gì, bao nhiêu biến … nên người dùng thường kết hợp lệnh Write với lệnh Read trong
quá trình nhập dữ liệu. Lúc này lệnh Write đóng vai trò là lời nhắc, tuy nhiên lệnh
Write có thể có hoặc không, nhưng Read bắt buộc phải có.
Ví dụ :
Write ( ‘ Dua vao so phan tu mang ‘ ); Readln ( n ) ;
Khi nhập các mảng dữ liệu, phải kết hợp lệnh Read với các lệnh chu trình vì mỗi lệnh
read chỉ nhận được hữu hạn phần tử.
Ví dụ:
For i:= 1 to n Do
Begin
Write (’ A[ ’ , i , ’ ] ’ ); Readln ( A [i] );
End ;
Trong 1 câu lệnh Read chỉ nên nhập cho một loại biến: String, hoặc Char hoặc biến
số (Integer – Real).
Giá trị logic không nhập được từ bàn phím.

3. Thủ tục xóa màn hình

 Ý nghĩa : Sau khi chạy một bài toán, các dữ liệu nhập vào và kết quả xuất ra của bài
toán vẫn nằm trên màn hình khi ta thực hiện bài toán tiếp theo. Để bài toán của mình
luôn bắt đầu từ một màn hình mới ta phải xóa màn hình trước khi thực hiện.
 Dạng lệnh : CLRSCR;
Lệnh thường được đặt ở đầu chương trình. Khi lệnh thực hiện, mọi thông tin cũ trên màn
hình sẽ xóa sạch, con trỏ trở về góc trái dòng trên cùng.
 Chú ý : Lệnh chỉ thực hiện khi ta đã khai báo trÌnh USES CRT;
 Ví dụ Uses Crt;
Var a,b,c : real;
BEGIN
Clrscr;
Write (a,b) ; Readln ( a,b);
C:= a*a + b*b ; Writeln (’ C= ’ , C:6:1);
………. END.

Bộ môn Tin học Xây dựng

19


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

II. Lệnh gán
 Khái niệm: Lệnh dùng để gán giá trị của một biểu thức cho một biến.
 Dạng lệnh: Tên_biến := Biểu thức ;
 Cách thực hiện lệnh: Khi gặp lệnh chương trình tính toán giá trị của biểu thức và gán
giá trị này cho tên biến.
 Các lưu ý:

- Dấu của phép gán trong Pascal là :=
- Tên biến chỉ có thể là một tên và biến có thể là biến đơn hặc phần tử mảng, là giá trị
cần tìm.
- Biểu thức có thể là một trong 4 loại biểu thức. Đơn giản nó có thể là một hằng, một
biến.
- Kiểu của biến và biểu thức phải cùng loại.
 Ví dụ: - Một số lệnh gán minh hoạ cho câu lệnh
I := 1 ; T:= 0 ; X1 := -b + sqrt ( Del) / (2*a)
( Gán dữ liệu đơn )
Max := A[1] ; Z [i] := X [i,j ] + Y[i]
( Gán dữ liệu mảng )
SV[i]. Ten := HT[i].Ten ;
(Gán dữ liệu bản ghi)
- Sử dụng các lệnh vừa học để viết chương trình Pascal tính các đại lượng Chu vi đáy,
Diện tích đáy, Diện tích xung quanh, Diện tích toàn phần, Thể tích cho một hình trụ
có chiều cao H, bán kính R. (Ví dụ 1 phần thuật toán ).
Program Tinh_hinh_tru;
Uses Crt;
Var R,H, CVD, DTD, DTXQ, DTTT, TT : real ;
BEGIN
Clrscr;
Write (’ Nhap kich thuoc R,H cua hinh tru ’ ) ;
Readln (R,H);
CVD := 2* PI* R ; DTD := PI* R*R
DTTP := DTXQ + 2* DTD ;

; DTXD := CVD*H ;

TT := DTD*H ;


Writeln ( ’ Cac ket qua tinh toan ’ );
Writeln ( ’ Chu vi day = ’ , CVD:8:2 );
Writeln ( ’ Dien tich day = ’ , DTD:8:2 );
Writeln ( ’ Dien tich xung quanh = ’ , DTXQ:8:2 );
Writeln ( ’ Dien tich toan phan = ’ , DTTT:8:2 );
Writeln ( ’ The tich = ’ , TT:8:2 );
Readln
END.

Bộ môn Tin học Xây dựng

20


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

III. Các lệnh điều khiển (Rẽ nhánh)
1. Lệnh GOTO
 Khái niệm –ý nghĩa: Lệnh GOTO là lệnh chuyển điều khiển không điều kiện.
 Dạng lệnh :
GOTO n ;
 Cách sử dụng và cách thực hiện:
- Trong đó n là tên nhãn đặt ở đầu câu lệnh muốn chuyển đến.
- Lệnh được dùng khi chuyển hướng thực hiện của chương trình đến một vị trí bất kỳ
trong chương trình.
 Các lưu ý : Khi dùng lệnh GOTO thì nhãn n phải được khai báo trước trong từ khóa
Label.
 Ví dụ: Sử dụng lệnh IF và GOTO để nhập dữ liệu cho mảng một chiều có 10phần tử

Program Nhap_du_lieu_cho_mang_A;
Uses Crt;
Label 10 ;
Const m= 10;
Var i: integer ;
A: array [1..m ] of Real ;
BEGIN
Clrscr;
Write (’ Nhap gia tri cac phan tu cua A ’ ) ;
i := 1 ;
10:Read ( A[ i] );
i := i + 1 ;
If i<= n Then Goto 10;
END.

2. Câu lệnh rẽ nhánh IF (IF THEN ELSE)
 Khái niệm – ý nghĩa: Lệnh IF THEN ELSE là lệnh chuyển điều khiển có điều kiện,
thường dùng thể hiện cho các dạng thuật toán phân nhánh (nhánh đôi hoặc phân
nhánh lồng nhau)
 Dạng lệnh:
IF < Biểu thức điều kiện > THEN Nhóm lệnh 1 ELSE Nhóm lệnh 2 ;
IF < Biểu thức điều kiện > THEN Nhóm lệnh ;
 Giải thích các đại lượng :
- Trong đó IF THEN ELSE là các từ khoá, Biểu thức điều kiện là một trong 4 loại biểu
thức, thông thường hay sử dụng biểu thức so sánh và BT logic. Kết quả của các biểu
thức này chỉ nhận một trong 2 giá trị “đúng” hoặc “sai” . Với biểu thức số học, giá trị
âm là sai, giá trị dương ( cả bằng 0) là đúng.

Bộ môn Tin học Xây dựng


21


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

Nhóm lệnh có thể là một hoặc nhiều lệnh phải thực hiện trong nhánh. Nếu chỉ có 1
lệnh, viết ngay sau Then, Else, nếu từ hai lệnh trở lên phải đặt trong khối Begin …
End;
 Cách thực hiện : Khi gặp lệnh, chương trình tính toán và kiểm tra biểu thức điều
kiện, nếu kết quả của biểu thức là “đúng” bỏ qua Nhóm lệnh 2, thực hiện Nhóm lệnh
1 và thực hiện tiếp các lệnh sau IF; nếu kết quả của biẻu thưc điều kiện là sai bỏ qua
Nhóm lệnh 1, thực hiện Nhóm lệnh 1và thực hiện tiếp các lệnh sau IF;
 Các lưu ý :
- Trong câu lệnh có cả Then, Else là lệnh đầy đủ, dạng lệnh không đầy đủ là chỉ có
nhánh Then.
- Nếu là lệnh đầy đủ thì End của Begin … End của nhánh Then không được viết dấu
chấm phẩy (; ).
- Nếu Nhóm lệnh có từ 2 lệnh trở lên thì các lệnh này phải đặt trong khối Begin
…End;
- Các lệnh IF có thể lồng nhau.
 Ví dụ: - Các lệnh IF minh hoạ cho câu lệnh:
+ IF a>b
THEN Max := a ELSE Max := b ;
+ IF a [i ,j ] >0 THEN begin
T:= T+ a [i ,j ] ; SL := SL +1 ;
End;
- Viết chương trình Tìm giá trị lớn nhất, nhỏ nhất trong 3 số a,b,c bất kỳ.
-


Program Tim_Max_Min_trong 3_so_abc;
Uses Crt;
Var a, b, c, Max, Min : real ;
BEGIN
Clrscr;
Write (’ Nhap cac gia tri cua a, b, c ’ ) ; Readln (a, b, c );
IF

a>b

THEN Begin
Max := a ; Min := b ;
End
ELSE Begin
Max := b ; Min := a
End;

IF c > Max Then Max := c ;
IF c < Min

Then Min := c ;

Writeln ( ’ Gia tri lon nhat trong 3 so la : ’ , Max:8:2 );
Writeln ( ’ Gia tri nho nhat trong 3 so la : ’ , Min:8:2 );
Readln
END.

Bộ môn Tin học Xây dựng


22


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

- Viết chương trình để Giải phương trình bậc 2 : ax2 +bx + c =0 (Thuật toán Ví dụ 3)
Program GPTbac2;
Var a, b, c, delta, x1, x2: real;
BEGIN
repeat
write ( 'nhap gia tri cho a: ' );
readln(a);
until a<>0;
write ( 'nhap gia tri cho b: ' );
readln(b);
write ( 'nhap gia tri cho c: ');
readln(c);
delta:=b*b-4*a*c;
IF delta>=0 Then
begin
x1:=(-b+sqrt(delta))/(2*a);
x2:=(-b-sqrt(delta))/(2*a);
writeln('Nghiem x1= ',x1:7:1);
writeln('Nghiem x2= ',x2:7:1);
end
Else writeln( ' Phuong trinh vo nghiem! ' );
readln
end.


2. Câu lệnh lựa chọn CASE (CASE OF)
 Khái niệm – ý nghĩa: Lệnh CASE OF là lệnh chuyển điều khiển có điều kiện, thường
dùng viết cho các bài toán cần phân nhiều nhánh theo một điều kiện nào đó.
 Dạng lệnh :
CASE < Biểu thức chọn > OF
M1 : Nhóm lệnh 1 ;
M2 : Nhóm lệnh 2 ;
……………….
Mn : Nhóm lệnh n ;
[ ELSE Nhóm lệnh n+1 ; ]
END;
 Giải thích các đại lượng :
- Biểu thức chọn thường là biểu thức nguyên hoặc BT xâu.
- Mi: là giá trị có thể có của biểu thức chọn, nó có thể là một hằng nguyên, ký tự hoặc
tập hợp con của các số nguyên, các ký tự. Tập hợp này có thể có kiểu miền con
(5..10, 15..20) , (‘a’ .. ‘h’) hoặc kiểu liệt kê (4,7,9 ) , ( ‘ a’ , ‘h’, ‘ g’).
- Câu lệnh có cả Else là lệnh đầy đủ, lệnh không có Else là lệnh không đầy đủ.
 Cách thực hiện:
- Chương trình xét biểu thức chọn, lần lượt kiểm tra giá trị của biểu thức chọn có thuộc
một trong các giá trị của Mi hay không, nếu đúng thì Nhóm lệnh i tương ứng được
Bộ môn Tin học Xây dựng

23


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm


thực hiện và kết thúc lệnh. Nếu giá trị của biểu thức chọn không nằm trong Mi nào
thì Thoát khỏi lệnh ( dạng không đầy đủ ) hoặc thực hiện Nhóm lệnh n+1 (nhánh
Else) với dạng đầy đủ.
- Mỗi lần thực hiện chỉ có một nhánh (Một nhóm lệnh) được thực hiện.
- Với dạng đầy đủ lúc nào cũng có ít nhất một nhánh thực hiện, còn dạng không đầy
đủ, có thể không có nhánh nào được thực hiện.
 Các lưu ý :
- Biểu thức chọn là các biến nguyên hoặc ký tự. Tuỳ từng phiên bản mà nó có thể là
biến mảng.
- Nếu Nhóm lệnh có từ 2 lệnh trở lên thì các lệnh này phải đặt trong khối Begin
…End;
- Các lệnh CASE có thể lồng nhau. Các lệnh Case như các cặp ngoặc tròn và thực hiện
từ trong ra ngoài. Tuy nhiên từ nhóm trong có thể chuyển ra ngoài nhưng cấm các
lệnh từ nhóm ngoài chuyển vào trong.
 Ví dụ : - Các ví dụ minh hoạ cho lệnh :
CASE Dthi [i] OF
CASE Tuoi OF
0..4 : Writeln (‘Sinh vien kem’);
1..5 : Writeln (‘Chưa đi học 1’);
5..6 : Writeln (‘Sinh vien trung binh’);
6..10 : Writeln (‘Hoc sinh cap 1’);
7..8 : Begin
11..14 : Writeln (‘Hoc sinh cap 2’);
Slk := Slk + 1; j:= j+1;
15..17 : Writeln (‘Hoc sinh cap 3’);
HSk [j] := HT [i] ;
18..23 : Writeln (‘Sinh viên’);
End
ELSE Writeln (‘ Cac loai hinh khac’);
9..10 : Begin

End;
Slg := Slg + 1; k:= k+1;
HSg [j] := HT [i] ;
End
END;

III. Các lệnh chu trình (Cấu trúc lặp)
Ở phần trên ta mới xét đến các dạng bài toán thực hiện đơn lẻ các phép tính hoặc các
phép xử lý. Trong nhiều bài toán (đặc biệt khi xử lý dữ liệu mảng), ta phải lặp lại nhiều
lần một số lệnh nào đó với dạng tổng quát không thay đổi. Nếu viết lặp lại các công thức
này thì dài, nhàm chán và không thể nếu chưa biết số lần lặp. Để thể hiện dạng thuật
toán lặp, người ta đưa ra cấu trúc cho một hoặc nhiều vòng lặp lồng nhau.
Với các dạng thuật toán lặp, Pascal xử dụng các lệnh For To Do, While Do, Repeat
Until hoặc các lệnh gán kết hợp với IF – Goto để thể hiện cho vòng lặp biết trước số lần
lặp hoặc vòng lặp không xác định.

Bộ môn Tin học Xây dựng

24


Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1

GVC: Đào Tăng Kiệm

1. Câu lệnh lặp với số lần lặp xác định FOR ( FOR TO DO)
 Khái niệm: Lệnh For To Do dùng cho các bài toán lặp với số lần lặp đã xác định và
bước nhẩy (số gia) của biến điều khiển chỉ là +1 hoặc -1.
 Cấu trúc lệnh :
FOR Bđk := n1 TO n2 DO Các lệnh lặp ;

FOR Bđk := n1 DOWNTO n2 DO Các lệnh lặp ;
 Giải thích các đại lượng :
- Bđk là biến điều khiển hay biến đếm của chu trình. n1 và n2 là giá trị đầu và giá trị
cuối của biến điều khiển, chúng phải là các hằng, biến hoặc biểu thức đơn giản có kiểu
nguyên hoặc ký tự.
- Miền tác động của lệnh (Các lệnh lặp) có thể là 1 hoặc nhiều lệnh sẽ được thực hiện
với số vòng lặp |n1-n2| lần.
 Cách thực hiện của lệnh: Khi gặp lệnh, chương trìnhc thực hiện cũng gồm 4 bước
như trong phần thuật toán. Có thể hiểu là: Các lệnh lặp sẽ được thực hiện nhiều lần
với giá trị của biến điều khiển từ n1 đến n2. Câu lệnh sẽ tự động thực hiện các bước:
gán giá trị đầu, tăng và kiểm tra giá trị cuối của biến điều khiển (mà không thể hiện
từng bước này trong câu lệnh).
 Các lưu ý:
- Nếu Miền tác động có 1 lệnh thì viết ngay sau Do, nếu có từ 2 lệnh trở lên thì các
lệnh này phải đặt trong khối Begin …End;
- Khôngcó dấu ; sau Do
- Các lệnh có thể lồng nhau, tuy nhiên các vòng lặp không được cắt nhau.
- Vòng lặp trong có thể kết thức trước khi đến giá trị cuối của biến điều khiển và
chuyển ra vòng lặp ngoài, tuy nhiên không thể chuyển từ vòng lặp ngoài vào vòng
lặp trong.
- Lệnh For to Do là loại lệnh thực hiện trước, kiểm tra sau, do vậy ít nhất sẽ thực hiện
1 lần.
- Trong miền tác động của lệnh không được có lệnh nào làm biến đổi giá trị đầu, cuối
của biến điều khiển.
 Ví dụ: - Các ví dụ minh hoạ cho câu lệnh.
+ FOR i := 1 TO n DO T:=T + A[i] ;
(Tính tổng 1 véc tơ)
+ FOR i := 1 m DO
(Nhập dữ liệu và tính tổng cho mảng A)
Begin

Write (’ A[ ’ , I , ’ ] = ’); Readln ( A[i] );
T:=T + A[i] ; End;
- Các bài tập:
+ Bài tập 1: Viết chương trình Tìm giá trị lớn nhất của một vecto (Ví dụ 6 phần thuật
toán)

Bộ môn Tin học Xây dựng

25


×