1. Trang chủ
  2. » Giáo án - Bài giảng

Chương trình con

54 234 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương trình con
Trường học Trường Cao đẳng CNTT HN Việt – Hàn
Chuyên ngành Khoa Khoa học máy tính
Thể loại Bài giảng
Định dạng
Số trang 54
Dung lượng 1,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đặc tả chương trình con– 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ả – H

Trang 1

Bài giảng

LÝ THUYẾT NGÔN NGỮ LẬP TRÌNH

Trang 2

Chương 6

CHƯƠNG TRÌNH CON

Trang 3

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.

Trang 4

Nội dung Chương 6

• Trừu tượng hoá dữ liệu là việc tạo ra kiểu dữ liệu trừu tượng:

- Kiểu dữ liệu trừu tượng là một tập hợp các đối tượng dữ liệu

- Tập hợp các phép toán, thao tác trên các đối tượng dữ liệu đó

• Khi cài đặt một kiểu dữ liệu trừu tượng trên một ngôn ngữ lập trình cụ

thể, chúng ta phải thực hiện hai nhiệm vụ:

- Biểu diễn kiểu dữ liệu trừu tượng bằng một cấu trúc dữ liệu hoặc một

kiểu dữ liệu trừu tượng khác đã được cài đặt

- Viết các chương trình con thực hiện các phép toán trên kiểu dữ liệu

trừu tượng mà ta thường gọi là cài đặt các phép toán

• Ví dụ: các cấu trúc dữ liệu:

- Chuỗi ký tự

- Ngăn xếp.

- Hàng đợi

Trang 5

Nội dung Chương 6

• Trừu tượng hóa quá trình:

- Phân chia chương trình thành những chương trình con

- Mỗi chương trình con có tên, đảm nhiệm một tác vụ nào đó.

• Sự phân chia này sẽ che dấu tất cả các lệnh cài đặt chi tiết trong các

chương trình con Ở cấp chiều chương trình chính, ta chỉ thấy lời gọi các

chương trình con và điều này được gọi là sự đóng gói

• Ví dụ: như một chương trình quản lý sinh viên được viết bằng trừu tượng hóa :

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

Trang 6

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.

Trang 7

6.1 Khái niệm

• Các đặc tính chung của chương trình con:

- Tất cả chương trình con đều chỉ có một điểm vào (entry point)

- Chương trình gọi: là chương trình có chứa lời gọi để cho chương trình con thi hành.

- Chương trình gọi bị tạm dừng trong thời gian chương trình con thi hành.

- Khi quá trình thực thi chương trình con kết thúc, quyền điều khiển

sẽ trả về chương trình gọi để thực hiện các hoạt động khác nằm sau chương trình con bị gọi này

Trang 8

6.1 Khái niệm

• Chương trình con trả về một kết quả duy nhất trong

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)

Trang 9

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

Trang 10

6.2.1 Đặc tả chương trình con

– 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

Trang 11

6.2.1 Đặc tả chương trình con

• Cú pháp điển hình đặc tả được quy định trong NNLT C:

[Kiểu dữ liệu] Tên hàm ([Danh sách các tham số])

[Khai báo kiểu dữ liệu cho các tham số];

{ [Khai báo kiểu cho các biến cục bộ];

- Tên hàm : là tên hợp lệ trong C, buộc phải có

- Danh sách các tham số : là các tham số và được gọi là tham số hình thức

Có hoặc không tùy trường hợp cụ thể Nếu có nhiều tham số thì phải có dấu

Trang 12

6.2.1 Đặc tả chương trình con

- Khai báo kiểu cho các tham số: nếu hàm có các tham số hình

thức và vẫn chưa được khai báo kiểu thì ta cần khai báo kiểu

dữ liệu cho các tham số như khai báo với các biến Nếu các tham số có cùng kiểu dữ liệu thì phải có dấu phẩy (,) để phân cách chúng.

- 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

Trang 13

Đặc tả này xác định hàm tính giai thừa của một số nguyên n

tham số])

[Khai báo kiểu dữ liệu cho 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];]

}

Trang 14

Các câu lệnh;

[return [biểu thức];]

}

Trang 15

Đặ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 ?

Trang 16

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

• Chương trình con biểu diễn một phép toán được xây dựng bởi người lập trình nên đượ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 chính bản thân NNLT đó.

• Sự cài đặt chương trình con được xác định bởi:

- Việc khai báo dữ liệu cục bộ xác định cấu trúc dữ liệu cho chương trình con

- Các lệnh xác định hành động sẽ làm khi chương trình con thực hiện

Trang 17

6.2.2 Cài đặt chương trình con

• Sự khai báo và các lệnh thường được đóng gói Do đó:

- Người sử dụng không thể truy xuất tới dữ liệu cục bộ và các lệnh bên trong chương trình con

- Người sử dụng chỉ có thể gọi chương trình con với một tập hợp các tham số và nhận lại các kết quả đã được tính toán

• Tùy thuộc vào từng NNLT mà trong một chương trình con nào đó có thể chứa các chương trình con khác Và các chương trình con này chỉ được dùng cho chương trình con chứa chúng mà không thể được gọi tới từ bên ngoài.

• Kiểm tra kiểu cũng là một vấn đề quan trọng đối với chương trình con

Trang 18

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

Trang 19

6.3 Phương pháp truyền tham số cho chương trình con

float area(int x, int y, int h){

- Các tham số hình thức nằm trong định nghĩa CTC

- Các tham thực nằm trong lời gọi CTC

- Tên của tham số hình thức và tham số thực có thể trùng nhau

Trang 20

6.3 Phương pháp truyền tham số cho chương trình con

• Các tham số hình thức được khai báo trong 3 mô hình ngữ nghĩa riêng biệt sau:

- In mode: chúng có thể nhận dữ liệu từ tham số thực tế tương ứng

- Out mode: chúng có thể chuyển dữ liệu cho các tham số thực tế

- In-out mode: chúng có thể làm cả hai việc đó

Trang 21

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

Trang 22

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ự)

Trang 23

6.3.1 Truyền bằng giá trị

 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:

Trước khi gọi

Tại thời điểm gọi

Trong thời điểm

CTC thực hiện

Khi kết thúc

Trang 24

6.3.2 Truyền bằng kết quả

• Truyền bằng kết quả thực thi cho các tham số Out mode

• Trong phương pháp này:

- Tham số hình thức: là tham số chỉ ra, tức là chỉ trả kết quả về cho chương trình gọi mà không nhận giá trị vào

- Tham số hình thức được xem như là một biến cục bộ và được cấp phát ô nhớ riêng

- Tham số thực là một biến, tức là một ĐTDL có ô nhớ

• Phương pháp thực hiện:

- Giá trị của tham số thực không được sử dụng trong chương trình con

- Tham số hình thức có thể được gán trị như đối với một biến cục bộ

- Trong quá trình thực hiện: mọi thao tác trên tham số hình thức là sự thao tác trên ô nhớ riêng của nó, không ảnh hưởng đến tham số thực

- Khi kết thúc: giá trị cuối cùng của tham số hình thức được sao chép vào ô nhớ của tham số thực

Trang 25

6.3.1 Truyền bằng kết quả

 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:

Trước khi gọi

Tại thời điểm gọi

Trong thời điểm

CTC thực hiện

Khi kết thúc

Trang 26

6.3.2 Truyền bằng giá trị - kết quả

• Truyền bằng giá trị - kết quả thực thi cho các tham số In-out mode, mà trong đó các tham số thực được sao chép lại

• Đặc điểm của phương pháp truyền giá trị - kết quả:

- Có sự kết hợp của truyền bằng giá trị và truyền bằng kết quả

- Giá trị của tham số thực được dùng như giá trị khởi đầu của tham số hình thức tương ứng, và các tham số này sau đó hoạt động như một biến cục bộ

- Khi truyền bằng giá trị - kết quả các tham số hình thức phải có bộ nhớ cục bộ kết hợp với chương trình con được gọi

- Tại thời điểm dùng chương trình con, tham số hình thức được trả về lại cho tham số thực

Trang 27

6.3.2 Truyền bằng giá trị - kết quả

• Phương pháp này nhiều khi còn được gọi là truyền bằng cách sao chép

• Hạn chế của cả 3 phương pháp này là việc đòi hỏi nhiều ô nhớ cho các tham số

và thời gian sao chép các giá trị

Trang 28

6.3.1 Truyền bằng giá trị - kết quả

 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:

Trước khi gọi

Tại thời điểm gọi

Trong thời điểm

CTC thực hiện

Khi kết thúc

Trang 29

6.3.2 Truyền bằng tham chiếu

• Truyền bằng tham chiếu là phương pháp thực thi thứ 2 cho các tham số In-out mode

- Khi kết thúc: mọi thay đổi giá trị của tham số hình thức đều làm giá trị của tham

số thực thay đổi theo

• Ngoài bốn phương pháp trên, còn một phương pháp đó là truyền bằng tên, là một phương pháp truyền các tham số In-out mode Tuy nhiên, nó không được sử dụng rộng rãi trong các NNLT

Trang 30

6.3.2 Truyền bằng tham chiếu

 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:

Tại thời điểm gọi

Trong thời điểm

Trang 31

Phương thức truyền tham số trong một số NNLT

• Với Fotran

- Luôn thực thi với tham số in-out mode

- Các phiên bản trước Fortran 77: truyền bằng tham chiếu

- Từ Fortran 77 trở về sau: các biến vô hướng thường truyền bằng giá trị-kết quả

- Phần lớn các tham số đều được truyền bằng giá trị

- Các tham số đối tượng được truyền bằng tham chiếu

Trang 32

6.4 Chương trình con chung

• Sự đặc tả chương trình con thông thường liệt kê số lượng, thứ tự và kiểu dữ

liệu của các tham số

• Chương trình con chung (chương trình con đa hình) là một chương trình con có

một tên nhưng có nhiều định nghĩa khác nhau, được phân biệt bởi số lượng, thứ tự

a:=x; b:=y;

….

end;

begin a:= 50; b:= 100;

hoanvi_2so(a,b);

… end.

Trang 33

6.4 Chương trình con chung

 Ví dụ 6.5: Xét chương trình tính tổng 2 số:

 chương_trình_con Tong_2so(x: integer; y: real);

 khai báo tg: integer;

 bắt đầu

 in(x+y);

 kết thúc;

 chương_trình_con Tong_2so(x: real; y: integer);

 khai báo tg: integer;

Trang 34

6.4 Chương trình con chung

• Khi sử dụng chương trình con chung, trình biên dịch cần xác định đúng ý nghĩa

của nó trong một tập hợp nhiều ý nghĩa có thể có

• Để nhận biết ý nghĩa đích thực của chương trình con chung cần dựa vào thông

tin về đối số của phép toán hoặc tham số của nó

Trang 35

6.5 Đồng thường trình (Coroutines)

• Mối quan hệ giữa chương trình gọi và chương trình con bị gọi là mối quan hệ chủ-tớ

• Chương trình gọi: là chương trình chủ

• Chương trình con bị gọi: là chương trình tớ

• Ví dụ:

void main() {

Nhap();

Xuat();

}

Chương trình gọi : chủ

Lời gọi chương trình con Nhap() : Tớ

Lời gọi chương trình con Xuat(): Tớ

Chương trình main() Nhap()

Xuat()

Nhap()Thao tác nhập 1Thao tác nhập 2

Xuat()Thao tác xuất 1Thao tác xuất 2

TớChủ

Trang 36

6.5 Đồng thường trình (Coroutines)

• Đồng thường trình là một loại đặc biệt của chương trình con, thay cho mối quan

hệ chủ-tớ giữa chương trình gọi (chủ) và chương trình con được gọi (tớ) trong

cách gọi truyền thống

• Đồng thường trình là chương trình con có nhiều điểm vào, và các điểm vào đó

được điều khiển bởi chính chương trình con đó

• Kỹ thuật điều khiển đồng thường trình thường được gọi là mô hình điều khiển

đơn vị đối xứng Nghĩa là đồng thường trình gọi và đồng thường trình bị gọi có

mức ưu tiên như nhau

• Lời gọi đồng thường trình gọi là Resume (Tiếp tục lại)

- A, B là các chương trình con

- Trong A có lời gọi B

- Trong B có lời gọi A

- A, B gọi là các đồng

thường trình

Trang 37

6.5 Đồng thường trình (Coroutines)

• Một trong những đặc trưng của chương trình con được duy trì trong các đồng

thường trình là:

- Chỉ duy nhất một đồng thường trình thực sự thực thi trong một thời điểm

- Lần thực thi thứ hai của một đồng thường trình thường bắt đầu bằng một điểm vào khác với điểm vào của lần đầu tiên

- Các đồng thường trình thường thực thi một phần sau đó chuyển điều khiển đến một đồng thường trình khác

- Khi khởi động lại, một đồng thường trình sẽ thực thi phần tiếp ngay sau mệnh

đề đã được dùng để chuyển tiếp điều khiển

- Đồng thường trình phải có các biến cục bộ tĩnh

Trang 38

Điều khiển thực thi đồng thường trình

Trang 39

Điều khiển thực thi đồng thường trình với vòng lặp

Trang 40

6.5 Đồng thường trình (Coroutines)

• Các đồng thường trình được tạo ra trong một ứng dụng bởi một chương trình

gọi là đơn vị chủ, mà đơn vị này không phải là đồng thường trình

• Khi được tạo ra, các đồng thường trình thực thi mã ban đầu của chúng và sau

đó trả quyền điều khiển về cho đơn vị chủ

• Khi tất cả các đồng thường trình đã được xây dựng xong, chương trình chủ sẽ

bắt đầu lại với mỗi một trong các đồng thường trình khác theo thứ tự cho đến khi công việc của chúng được hoàn thành (nếu có thể)

• Nếu sự thực thi của một đồng thường trình đến được điểm cuối cùng của đoạn

mã của nó, quyền điều khiển được chuyển về cho đơn vị chủ đã tạo ra nó

Trang 41

6.6 Thực thi chương trình con

6.6.1 Cú pháp chung gọi chương trình con 6.6.2 Thực thi chương trình con «đơn giản»

6.6.3 Thực thi chương trình con với ngăn xếp

động các biến cục bộ

Trang 42

6.6.1 Cú pháp chung gọi chương trình con

• Quá trình thực hiện:

– Nếu có tham số, trước tiên tham số sẽ được gán giá trị thực tương ứng– Thực thi các câu lệnh trong thân chương trình con từ lệnh đầu tiên đến lệnh cuối cùng

– Thoát khỏi chương trình con và trở về chương trình gọi để tiếp tục thực hiện các lệnh tiếp theo của chương trình gọi

Ngày đăng: 06/07/2013, 01:26

HÌNH ẢNH LIÊN QUAN

- Khai báo kiểu cho các tham số: nếu hàm có các tham số hình thức và vẫn chưa được khai báo kiểu thì ta cần khai báo kiểu  dữ  liệu  cho  các  tham  số  như  khai  báo  với  các  biến - Chương trình con
hai báo kiểu cho các tham số: nếu hàm có các tham số hình thức và vẫn chưa được khai báo kiểu thì ta cần khai báo kiểu dữ liệu cho các tham số như khai báo với các biến (Trang 12)
• Các tham số hình thức được khai báo trong 3 mô hình ngữ nghĩa riêng biệt sau: - Chương trình con
c tham số hình thức được khai báo trong 3 mô hình ngữ nghĩa riêng biệt sau: (Trang 20)
6.5. Đồng thường trình (Coroutines) - Chương trình con
6.5. Đồng thường trình (Coroutines) (Trang 36)
• Kỹ thuật điều khiển đồng thường trình thường được gọi là mô hình điều khiển đơn vị đối xứng - Chương trình con
thu ật điều khiển đồng thường trình thường được gọi là mô hình điều khiển đơn vị đối xứng (Trang 36)

TỪ KHÓA LIÊN QUAN

w