BÀI 01 : CHƯƠNG TRÌNH CON : THỦ TỤC VÀ HÀM TRONG PASCAL .
1. GIỚI THIỆU VỀ CHƯƠNG TRÌNH CON :
Trong lập trình , có nhiều công việc cứ lặp đi lặp lại một thao tác hoặc tính toán , xử lý nào
đó , thay vì phải viết những phần chương trình để giải quyết những phần việc này thì người ta
tạo lập những chương trình riêng được lưu trữ trên đóa hoặc trong bộ nhớ để khi nào sử dụng
đến thì gọi ra . Những chương trình con đó gọi là những thủ tục hay hàm .
Trong pascal nói riêng và các ngôn ngữ lập trình bậc cao nói chung đều có các thủ tục và hàm
chuẩn do nhà thiết kế ngôn ngữ tạo sẵn và cất trong thư viện các thủ tục và hàm chuẩn . Ngoài
ra còn cho phép người lập trình tự tạo các thủ tục và hàm của riêng họ để giải quyết những
nhiệm vụ do bài toán đặt ra .
Việc tổ chức chương trình con có những lợi điểm như sau :
Cấu trúc chương trình sáng sủa , khoa học , hệ thống hoá việc lập trình .
Có thể chia nhỏ chương trình thành những đơn thể cho nhiều người cùng thực hiện , khiến
tốc độ lập trình nhanh chóng mà còn tận dụng được trí tuệ tập thể .
Các đơn thể chương trình có thể là những thủ tục hay hàm độc lập với nhau , vì vậy rất dễ
dàng sửa lỗi hoặc thêm bớt nội dung cho phù hợp với nhu cầu đặt ra .
2. TỔ CHỨC VÀ SỬA LỖI TRONG THỦ TỤC VÀ HÀM :
Program < Tên chương trình > ;
Uses < Tên các unit > ;
Const
< Tên hằng > = < Giá trò > ;
Var
< Danh sách các biến > : < Kiểu dữ liệu > ;
Procedure < Tên thủ tục > [ tham số ] ;
const
< Tên hằng > = < Giá trò > ;
var
< Danh sách các biến > : < Kiểu dữ liệu > ;
begin
Các lệnh của thủ tục ;
end ;
Thân chương trình chính bắt đầu bằng từ khóa Begin và kết thúc bằng từ khóa End với dấu
chấm .
Trong thân chương trình chính là các câu lệnh gọi thủ tục hoặc hàm và những câu lệnh khác .
3. KHAI BÁO THỦ TỤC VÀ HÀM TỰ TẠO :
KHAI BÁO THỦ TỤC :
Khi muốn thực hiện một thao tác nào đó ta nên khai báo là thủ tục .
Thủ tục có cấu trúc như một chương trình trong Pascal , chỉ khác là thay từ khóa Program bằng từ khóa
Procedure , ngoài ra sau phần khai báo tên thủ tục có thể có hoặc không có các tham số , dấu chấm phẩy
rồi đến thân thủ tục là những câu lệnh đơn giản , câu lệnh đơn , câu lệnh phức , câu lệnh điều kiện , câu
lệnh lặp , … tùy theo chức năng và nhiệmvụ của thủ tục trong chương trình .
Trong một chương trình có thể có nhiều thủ tục khác nhau , mỗi thủ tục có một chức năng hoặc công dụng
nào đó . Các thủ tục này có thể có các biến riêng ( còn gọi là biến cục bộ hoặc biến đòa phương ) . Các
biến này có thể trùng tên với biến chung ( còn gọi là biến toàn cục ) hoặc cũng có thể trùng với tên của
các thủ tục hay hàm khác .
KHAI BÁO HÀM :
Khi muốn trả về một kết quả nào đó ta nên khai báo là hàm .
Các thành phần của khai báo hàm giống như khai báo thủ tục nhưng có hai chỗ khác biệt như sau :
Thay từ khóa Procedure bằng từ khóa Function .
Khai báo hàm phải cho biết kiểu kết quả của hàm .
Chú ý : Ta có kết quả của hàm được trả về là một giá trò , còn thủ tục là một tác vụ ( công việc ) . Ta sử
dụng chương trình con là hàm khi :
Nếu ta muốn nhận lại một kết quả duy nhất .
Kết quả phải là kiểu vô hướng hoặc con trỏ .
Có sử dụng tên hàm trong biểu thức .
Nếu không thỏa mãn các yếu tố trên thì chương trình con là thủ tục .
4. THỦ TỤC VÀ HÀM LỒNG NHAU :
Hàm hoặc thủ tục lồng nhau cũng tương tự như các cấu trúc điều kiện hoặc cấu trúc vòng lặp
lồng nhau , tức là một thủ tục này chứa một thủ tục khác , hàm này chứa hàm khác .
Đối với các thủ tục và hàm tự tạo cũng cho phép thủ tục này lồng vào thủ tục khác , hàm này
lồng vào hàm hoặc thủ tục khác .
Thứ tự truyền tham số lần lượt truyền từ trái qua phải .
Có ba cách truyền tham số :
Truyền bằng trò : Tham số thực truyền cho tham số hình thức ở trong thủ tục thì sau khi
truyền giá trò của tham số thực không thay đổi .
Truyền bằng biến : Tham số thực truyền cho tham số hình thức ở trong thủ tục thì sau khi
truyền giá trò của tham số thực đã bò thay đổi .
Truyền kết hợp vừa trò , vừa biến .
Chú ý :
Các tham số hình thức khác kiểu dữ liệu với nhau trong các thủ tục , hàm thì phải phân cách
nhau bởi dấu chấm phẩy . Các tham số cùng kiểu thì phân cách nhau bởi dấu phẩy .
Khi gọi các thủ tục , hàm thì tất cả các tham số thực phân cách nhau bởi dấu phẩy không
phân biệt cùng kiểu hay khác kiểu .
Các tham số thực và tham số hình thức phải giống nhau về kiểu , số lượng và vò trí của chúng
trong danh sách liệt kê biến .
7. BIẾN CHUNG , BIẾN RIÊNG VÀ MIỀN TÁC ĐỘNG CỦA BIẾN :
Trong một chương trình có cấu trúc chương trình con thì các biến sử dụng trong chương trình
chính và chương trình con là khác nhau .
Biến chung được khai báo trong chương trình chính , thời gian tồn tại của biến từ lúc vận hành
chương trình cho đến khi thoát khỏi chương trình .
Biến riêng được khai báo trong các chương trình con , thời gian tồn tại của biến trong phạm vi
chương trình con đang vận hành . Khi thoát khỏi chương trình con thì các biến riêng và giá trò
của chúng sẽ bò mất . Lợi dụng đặc điểm này người ta có thể đặt tên các biến trùng nhau trong
các chương trình con để tiết kiệm bộ nhớ .
8. MỘT SỐ THỦ TỤC VÀ HÀM CHUẨN TRONG UNIT CRT :
a. Thủ tục chuẩn :
Các thủ tục về tọa độ màn hình và con trỏ :
Thủ tục GotoXY ( x , y : integer ) ;
Dùng để đưa con trỏ đến tọa độ ( x , y ) trên màn hình .
Thủ tục ClrScr ;
Dùng để xóa màn hình , đưa con trỏ về góc trên bên trái màn hình có tọa độ ( 0 , 0 )
Program .
• Tên tập tin chương trình con phải trùng với tên tập tin Unit .
♣ Chép tập tin chương trình con vào máy nếu chưa có sẳn trên máy ( chép váo thư
mục mà ta sẽ xử lý ) .
♣ Khởi động Turbo Pascal và mở tập tin chương trình con , sau đó thêm tên Unit
vào dòng đầu tiên của tập tin này .
• Phần giao diện với bên ngoài gồm các chi tiết :
♣ Bắt đầu bằng từ khóa Interface và không có dấu chấm phẩy sau từ khóa này .
♣ Khai báo các Unit chuẩn nếu cần và mỗi Unit cách nhau bởi dấu phẩy .
♣ Khai báo các tên hằng , tên kiểu , tên biến nếu cần .
♣ Khai báo các thủ tục , các hàm : chỉ cần khai báo tên thủ tục , tên hàm với các
tên hằng , các tham số và kiểu dữ liệu , kiểu kết qủa của hàm .
• Phần bên trong còn gọi là phần bên trong hộp đen gồm các chi tiết :
♣ Phải bắt đầu bằng từ khóa Implementation và không được có dấu chấm phẩy
sau từ khóa này .
♣ Khai báo nội dung của các thủ tục , hàm , các hằng , kiểu , biến riêng , …
♣ Kết thúc là từ khóa End với dấu chấm .
Cách gọi các Unit :
Trong chương trình chính hay trong một Unit tự tạo có sử dụng các Unit khác thì phần đầu của
chương trình phải khai báo sau từ khóa Uses ; tên của các Unit chuẩn , tự tạa và các Unit phải
phân cách nhau bởi dấu phẩy . Khi chạy chương trình nếu xuất hiện thông báo “ File not found
< tên tập tin . TPU > ” tức là không tìm thấy tập tin Unit , ta sử dụng lệnh Change Dir … trong
thực đơn File để chuyển về thư mục có tập tin < tên tập tin . TPU > hoặc ta phải chép tập tin
này vào thư mục hiện hành .
10. CÁC VÍ DỤ MINH HỌA :
BÀI 02 : KIỂU VÔ HƯỚNG : KIỂU LIỆT KÊ .
1. ĐỊNH NGHĨA KIỂU :
Kiểu liệt kê được đònh nghóa bằng cách liệt kê tất cả các phần tử có thể có của nó . Các giá trò của
kiểu được thể hiện bằng tên .
Cú pháp :
Begin
Writeln ( ‘ Nhap , xuat du lieu kieu liet ke ’ ) ;
Writeln ( ‘ Ban thich mau nao ? ( Nhap cac so tu 0 den 4 ) ’ ) ;
Readln ( i ) ;
mau := color ( i ) ;
. . .
Xuất dữ liệu :
Các thủ tục Write hoặc Writeln cũng không thể xuất ra màn hình hoặc máy in một giá trò
kiểu liệt kê .
Ví dụ :
• Không thể dùng các lệnh :
writeln ( mau ) ;
writeln ( den ) ;