Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
Bài giảng môn Lý thuyết ngôn ngữ lập trình
Bài giảng
Bài giảng
LÝ THUYẾT NGÔN NGỮ LẬP TRÌNH
LÝ THUYẾT NGÔN NGỮ LẬP TRÌNH
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
Bài giảng môn Lý thuyết ngôn ngữ lập trình
Chương 6
Chương 6
CHƯƠNG TRÌNH CON
CHƯƠNG TRÌNH CON
3/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
Nội dung Chương 6
Nội dung Chương 6
•
Trừu tượng hóa là một phương pháp giúp người lập trình
biết cách:
- Tập trung vào những vấn đề, những thuộc tính bản chất
của chương trình
- Bỏ qua các thuộc tính không cần thiết.
- Mục đích của nó là đơn giản hóa quá trình lập trình.
•
Có hai loại trừu tượng hóa cơ bản trong ngôn ngữ lập trình:
- Trừu tượng hóa quá trình.
- Trừu tượng hóa dữ liệu.
4/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
Nội dung Chương 6
Nội dung Chương 6
void main()
{
Nhap();
Sap_Xep ();
Xuat();
}
Nhap, Sap_Xep, Xuat là các phép toán trừu tượng.
Chúng che dấu bên trong rất nhiều lệnh phức tạp mà
ở cấp chiều chương trình chính ta không nhìn thấy
được
6/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.1. Khái niệm
6.1. Khái niệm
•
Chương trình con là một phép toán trừu tượng được định
nghĩa bởi người lập trình.
•
Thông thường khi tạo ra ngôn ngữ lập trình nào đó. Nhà sản
xuất tạo sẵn các chương trình con đơn gian. Tạo thuận lợi
cho người lập trình.
•
Các chương trình con này thường gọi các hàm có sẵn hay
các thủ tục có sẵn.
7/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.1. Khái niệm
6.1. Khái niệm
•
Các đặc tính chung của chương trình con:
lời gọi chương trình con thì thường được gọi là hàm
(Function).
•
Chương trình con trả về nhiều hơn một kết quả hoặc
không có kết quả trả về trong lời gọi chương trình con thì
thường được gọi là thủ tục (procedure hoặc subroutine)
9/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.2. Đặc tả và cài đặt chương trình con
6.2. Đặc tả và cài đặt chương trình con
6.2.1. Đặc tả chương trình con
6.2.2. Cài đặt chương trình con
10/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.2.1. Đặc tả chương trình con
6.2.1. Đặc tả chương trình con
•
Sự đặc tả chương trình con bao gồm:
–
Tên của chương trình con
–
Số lượng, thứ tự các tham số và kiểu dữ liệu của mỗi tham số
–
Số lượng, thứ tự các kết quả trả về và kiểu dữ liệu của mỗi kết quả
–
Hoạt động được thực hiện bởi chương trình con
Trong C, Chỉ có một loại chương trình con gọi là hàm
11/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.2.1. Đặc tả chương trình con
-
Phần trong { }: là thân hàm. Cặp dấu { } luôn phải có. Thân
hàm gồm:
-
Khai báo các biến cục bộ: là các biến chỉ có tác động và phạm vi ảnh
hưởng đối vời hàm chứa nó.
-
Các câu lệnh: có thể là câu lệnh đơn hoặc câu lệnh có cấu trúc
-
Trong thân hàm có thể sử dụng câu lệnh return([biểu thức]); câu lệnh
return có thể được dùng nhiều lần ở các vị trí khác nhau nhưng cũng có
thể không được sử dụng lần nào. Giá trị của biểu thức trong câu lệnh
return sẽ được gán cho hàm.
13/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.2.1. Đặc tả chương trình con
6.2.1. Đặc tả chương trình con
Ví dụ 6.1: Đặc tả chương trình con là hàm được viết bằng C/C++:
float giaithua(int n)
{
int i; float KQ;
for (KQ=1, i=1; i<=n; i++)
KQ=KQ*i;
return KQ;
}
Đặc tả này xác định hàm tính giai thừa của một số nguyên n
[Kiểu dữ liệu] Tên hàm ([DS các
tham số])
[Khai báo kiểu cho các biến cục
bộ];
Các câu lệnh;
[return [biểu thức];]
}
15/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.2.1. Đặc tả chương trình con
6.2.1. Đặc tả chương trình con
Ví dụ 6.3: Đặc tả chương trình con là thủ tục được viết bằng Pascal:
Procedure TinhBieuthuc;
Var a,b:integer;
Begin
Readln(a);
Readln(b);
Write(a+b);
End;
Đặc tả này tính tổng biểu thức a+b
Sự đặc tả chương trình con bao gồm những thành phần nào ?
16/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.2.2. Cài đặt chương trình con
6.2.2. Cài đặt chương trình con
•
Các phép toán nguyên thủy được cài đặt bằng cách dùng cấu
trúc dữ liệu và các phép toán được cung cấp bởi máy tính ảo
bên dưới NNLT
•
6.3. Phương pháp truyền tham số cho chương trình con•
Phương pháp truyền tham số cho chương trình con là lộ trình mà trên đó
các tham số được truyền đến và/hoặc truyền từ các chương trình con
được gọi
•
Tham số có 2 loại:
- Tham số hình thức: là một loại đặc biệt của ĐTDL trong chương trình
con. Nó được xác định lúc định nghĩa chương trình con
- Tham số thực tế: là một ĐTDL được gửi cho chương trình con bằng
cách truyền cho nó lời gọi thực hiện chương trình con
19/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.3. Phương pháp truyền tham số cho chương trình con
6.3. Phương pháp truyền tham số cho chương trình confloat area(int x, int y, int h)
{
float v;
v=0.5*h*(x+y);
return v;
}
main()
{
int f=4.0, g=6.0, h=5.0;
float a;
a=area(f,g,h);
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.3. Phương pháp truyền tham số cho chương trình con
6.3. Phương pháp truyền tham số cho chương trình con•
Có nhiều phương pháp truyền tham số được phát triển bởi các
nhà thiết kế ngôn ngữ để lập trình viên lựa chọn
- Truyền bằng giá trị
- Truyền bằng kết quả
- Truyền bằng giá trị - kết quả
- Truyền bằng tham chiếu
- Truyền bằng tên
22/30
Trường Cao đẳng CNTT HN Việt – Hàn Khoa Khoa học máy tính
6.3.1. Truyền bằng giá trị
6.3.1. Truyền bằng giá trị•
Truyền bằng giá trị thực thi cho các tham số In mode.
•
Trong phương pháp này:
- Các tham số hình thức là tham số chỉ vào, tức là chỉ nhận giá trị vào cho
chương trình con mà không trả kết quả về cho chương trình gọi.
- Tham số hình thức được xem như là một biến cục bộ của chương trình con và
được cấp phát ô nhớ riêng.
- Các tham số thực là một biểu thức (một biến, một hằng, một hàm, một biểu
thức thực sự)
•
end;
begin
a:= 50; b:= 100;
hoanvi_2so(a,b);
…
end.
50 100
a b
50 100
x y
10 20
x y
20 10
x y
Trước khi gọi
Tại thời điểm gọi
Trong thời điểm
CTC thực hiện
50 100
a b
Khi kết thúc
20
Ví dụ 6.4: Xét chương trình đổi 2 số nguyên bằng ngôn
ngữ giả tựa Pascal như sau:
var a, b: integer;
procedure hoanvi_2so(x: integer; y: integer);
var tg: integer;
begin
x:= 10; y:= 20;
tg: = x; x: = y; y: = tg;
….
end;
begin
a:= 50; b:= 100;
hoanvi_2so(a,b);
…
end.