1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng lý thuyết ngôn ngữ lập trình chương 8 cđ CNTT hữu nghị việt hàn

63 234 0

Đ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

Định dạng
Số trang 63
Dung lượng 278,01 KB

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ả và cài đặt chương trình con tt - Chương trình con có thể nhạy cảm với tiền sử tự sửa đổi, có nghĩa là kết quả của nókhông chỉ phụ thuộc vào tham số được cho tại lần gọi đó mà còn

Trang 1

Chương 8

CHƯƠNG TRÌNH CON

Lý thuyết ngôn ngữ lập trình

Trang 2

Nội dung

Khái niệm

Đặc tả và cài đặt chương trình con

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

chương trình con chung

Đồng thường trình

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

Trang 3

Khái niệm

Có hai khả năng trừu tượng hoá cơ bản cóthể được bao gồm trong một NNLT là:

• sự trừu tượng hoá quá trình

• sự trừu tượng hoá dữ liệu

Trong thời kỳ đầu của NNLT bậc cao, chỉ

có sự trừu tượng hoá quá trình Trong

thập niên 80 của thế kỷ 20, nhiều người đã bắt đầu tin rằng sự trừu tượng hoá dữ liệu

là cũng quan trọng như sự trừu tượng hoáquá trình

Trang 4

Khái niệm

Máy tính có thể lập trình được đầu tiên,

Babbages’s Analytical Engine, được xây dựng trong những năm 1940, đã có khả

năng sử dụng lại các tập hợp của các thẻ đục lỗ mang lệnh trong các vị trí khác nhau của chương trình Trong một NNLT hiện

đại, những thẻ đục lỗ mang lệnh đó giống như là các tập hợp các câu lệnh được viết

ra và được gọi là chương trình con

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.

Trang 5

Khái niệm (tt)

Chương trình con có các đặc tính chung

như sau:

- 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 bị tạm dừng trong suốt thời gian nó gọi chương trình con thực thi,

có nghĩa là chỉ có một chương trình con duy nhất (thuộc chương trình đó) được

thực thi trong thời gian đó

- Điều khiển luôn luôn được trả về cho

chương trình gọi khi việc thực thi chương trình con kết thúc

Trang 6

Đặc tả và cài đặt chương trình con

Đặ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 các tham số, thứ tự của chúng

và kiểu dữ liệu của mỗi một tham số

- Số lượng các kết quả, thứ tự của chúng

và kiểu dữ liệu của mỗi một kết quả

- Hoạt động được thực hiện bởi chương trình con

Trang 7

Đặc tả và cài đặt chương trình con

Chương trình con biểu diễn một hàm toán học, là một ánh xạ từ tập hợp các tham số đến tập hợp các kết quả Chương

trình con trả về một kết quả duy nhất trong tên chương trình con thường được gọi là một hàm

Cú pháp điển hình đặc tả hàm được quy

định trong ngôn ngữ lập trình C như sau:

< Tên hàm > (< danh sách các đối số>)

< Khai báo biến >

{ <Khai báo thêm các biến >

< Các câu lệnh >

}

Trang 8

Đặc tả và cài đặt chương trình con (tt)

Trong đó :

+ Tên hàm : buộc phải có.

+ Danh sách các đối số : không bắt buộc Có hay không tuỳ theo chúng ta định dùng hàm đó làm gì + Khai báo biến : Nếu Danh sách các đối số mà có thì phần này buộc phải có Còn nếu không thì

ngược lại có thể bỏ qua.

+ Phần trong { } : là thân hàm Dấu { } là bắt buộc đối với mọi hàm.

+ < Khai báo tham biến > : ngay sau { và gọi là biến cục bộ dành riêng cho hàm sử dụng.

+ đối số luôn luôn truyền theo trị ( không thay đổi giá trị).

Trang 9

Đặc tả và cài đặt chương trình con (tt)

Ví dụ : Chương trình C tính giai thừa có sử

dụng chương trình con

#include <stdio.h>

unsigned long giaithua(int n)

{ unsigned long ketqua = 1;

Trang 10

Đặc tả và cài đặt chương trình con (tt)

Trang 11

Đặc tả và cài đặt chương trình con (tt)

Nếu 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 tên chương trình

con thường được gọi là thủ tục

(procedure hoặc subroutine)

Trang 12

Đặc tả và cài đặt chương trình con (tt)

Chúng ta xét một thủ tục được viết trong ngôn ngữ lập trình Pascal như sau:

Trang 13

Đặc tả và cài đặt chương trình con (tt)

Mặc dù chương trình con biểu diễn một hàm toán học nhưng nó cũng có các vấn đề

tương tự như đối với các phép toán

nguyên thuỷ:

- Chương trình con có thể có các tham số

ẩn trong dạng biến non-local mà nó tham chiếu

- Chương trình con có thể có kết quả ẩn

(hiệu ứng lề) được trả về thông qua sự

thay đổi các biến non-local hoặc thông qua việc thay đổi các tham số vào-ra của nó

Trang 14

Đặc tả và cài đặt chương trình con (tt)

- Chương trình con có thể nhạy cảm với tiền

sử (tự sửa đổi), có nghĩa là kết quả của nókhông chỉ phụ thuộc vào tham số được

cho tại lần gọi đó mà còn phụ thuộc vào

toàn bộ lịch sử các lần gọi trước đó Nhạy cảm với tiền sử có thể do dữ liệu cục bộ

vẫn còn giữ lại giữa các lần gọi của

chương trình con hoặc thông qua sự thay đổi mã riêng của nó (ít phổ biến hơn)

Trang 15

Đặc tả và cài đặt chương trình con (tt)

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

Các phép toán nguyên thuỷ đượ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 ngôn ngữ lập trình

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 và do

đó chương trình con đượ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 ngôn ngữ lập trình đó

Trang 16

Đặc tả và cài đặt chương trình con (tt)

Sự cài đặt được xác định bởi thân chương trình con, bao gồm cả việc khai báo dữ

liệu cục bộ xác định cấu trúc dữ liệu được dùng cho chương trình con và 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

Đặc tả và cài đặt chương trình con (tt)

Sự khai báo và các lệnh thường được bao gói, người sử dụng chương trình con

không thể truy xuất được 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

Trang 18

Đặc tả và cài đặt chương trình con (tt)

Thông thường trong chương trình con còn

có thể có các chương trình con khác biểu thị các phép toán được định nghĩa bởi

người lập trình và các chương trình con đóchỉ dùng cho chương trình con chứa

chúng Những chương trình con "cục bộ" này được bao gói, nghĩa là chúng không thể được gọi tới từ bên ngoài chương trình con chứa chúng

Trang 19

Đặc tả và cài đặt chương trình con (tt)

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

chương trình con đòi hỏi các tham số có

kiểu đúng như đã được xác định trong sự đặc tả chương trình con Kiểu của kết quả được trả về của chương trình con cũng phải được biết đến

Trang 20

Đặc tả và cài đặt chương trình con (tt)

Vấn đề kiểm tra kiểu tương tự như đối với các phép toán nguyên thuỷ Kiểm tra kiểu

có thể được thực hiện một cách tĩnh trong quá trình dịch, nếu đã có sự khai báo kiểu cho các tham số và kết quả của mỗi một chương trình con Mặt khác kiểm tra kiểu

có thể là động trong quá trình thực hiện

chương trình Sự chuyển đổi kiểu ẩn các tham số để đổi chúng thành các kiểu đúng cũng có thể được cung cấp một cách tự động bởi sự cài đặt ngôn ngữ

Trang 21

Đặc tả và cài đặt chương trình con (tt)

Trang 22

Đặc tả và cài đặt chương trình con (tt)

unsigned BSCNN (unsigned n, unsigned m)

printf("\nNhap hai vao so nguyen duong : ");

scanf("%u%u", &n, &m);

printf("\nUSCLN cua %u va %u = %u", n, m, USCLN(n,m)); printf("\nBSCNN cua %u va %u = %u", n, m, BSCNN(n,m)); getch();

}

Trang 23

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ó hai loại là tham số hình thức vàtham số thực tế

Tham số hình thức là một loại đặc biệt của ÐTDL cục bộ trong chương trình con Nó được xác định lúc định nghĩa chương trình con Khi định nghĩa chương trình con, phải xác định một danh sách các tham số hình thức cùng với khai báo kiểu tương ứng

Trang 24

Phương pháp truyền tham số cho 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 trong lời gọi thực hiện chương trình con Hay nói cách khác, tham số thực tế là giá trị của

biến tại thời gian chạy chương trình

Thông thường, tham số hình thức được gọi

là tham số, còn tham số thực tế còn được gọi là đối số.

Trang 25

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

Chúng ta xét ví dụ sau để phân biệt giữa tham số hình thực

Trang 26

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

Như vậy hàm sum có hai tham số hình thức

là a và b Khi hàm sum được gọi trong

lệnh gán sumValue = sum(value1,value2),

hai tham số thực sự là 20 và 40, còn hai

biến value1 và value2 chỉ là hai biến được

khởi tạo với hai giá trị là 20 và 40

Trang 27

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

Các tham số hình thức được khai báo bằng một trong ba mô hình ngữ nghĩa (semantic model) riêng biệt sau:

Trang 28

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

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 có thể lựa chọn để

xác định khai báo tham số hình thức khi

định nghĩa chương trình con và cung cấp các tham số thực tế khi thực hiện gọi

chương trình con

Trang 29

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

Truyền bằng giá trị (Pass-by-Value)

Truyền bằng giá trị thực thi cho các tham số In-mode Trong phương pháp này, tham

số hình thức là tham số chỉ vào (IN-only

parameters), tức là chỉ nhận giá trị vào

cho chương trình con, không có nghĩa

vụ 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òn tham số

thực tế là một biểu thức (là một biến, một

hằng, một hàm hoặc là một biểu thức thực sự)

Trang 30

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

Phương pháp thực hiện: Tại thời điểm gọi,

giá trị của tham số thực tế được sao chép vào trong ô nhớ của tham số hình thức

Trong quá trình thực hiện chương trình

con, 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 tế

Khi chương trình con kết thúc, sự thay đổi giá trị của tham số hình thức, không làm

ảnh hưởng đến giá trị của tham số thực tế

Trang 31

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

Ví dụ : Chương trình hoán vị 2 số nguyên

Trang 32

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

Trang 33

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

Truyền bằng kết quả (Pass-by-Result)

Truyền bằng kết quả là một phương pháp

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 (OUT-only parameters), tức

là chỉ trả kết quả về cho chương trình gọi, không có nghĩa vụ nhận giá trị vào cho

chương trình con 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òn tham số thực tế phải là một biến, tức

là một ĐTDL có ô nhớ

Trang 34

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

Phương pháp thực hiện: Giá trị của tham số

thực tế 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 chương trình con, 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 tế

Khi chương trình con 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 tế

Trang 35

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

Ví dụ : Chương trình hoán vị 2 số nguyên

Trang 36

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

Trang 37

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

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

(Pass-by-Value-Result)

Truyền bằng giá trị-kết quả là một hình thức thực thi cho các tham số inout-mode, mà trong đó các tham số thực tế được sao

chép lại Trên thực tế, đây là một 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 tế được dùng như là 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ộ

Trang 38

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

Trên thực tế, 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, giá

trị của tham số hình thức được trả về lại

cho tham số thực tế

Trang 39

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

Phương pháp thực hiện: Tại thời điểm gọi

chương trình con, giá trị của tham số thực

tế được sao chép vào trong ô nhớ của

tham số hình thức Trong quá trình thực

hiện chương trình con, 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 tế Khi chương trình con 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 tế

Trang 40

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

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

copy), bởi vì các tham số thực tế được sao chép cho các tham số hình thức tại đầu

vào của chương trình con và được sao

chép ngược lại tại thời điểm dừng chương trình con

Truyền bằng giá trị-kết quả có hạn chế

giống như truyền bằng giá trị và truyền

bằng kết quả đó là việc đòi hỏi nhiều bộ

nhớ cho các tham số và thời gian sao

chép các giá trị

Trang 41

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

Ví dụ : Chương trình hoán vị 2 số nguyên

Trang 42

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

Trang 43

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

Truyền bằng tham chiếu

(Pass-by-Reference)

Truyền bằng tham chiếu là phương pháp

thực thi thứ hai cho các tham số

inout-mode Tham số hình thức là tham số vào

Trang 44

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

Phương pháp thực hiện: Tại thời điểm gọi,

nó truyền một đường dẫn truy cập (access path), thông thường chỉ là một địa chỉ, đến chương trình con được gọi Điều này cung cấp đường truy cập đến ô nhớ lưu trữ

tham số thực sự Do vậy, chương trình

con được phép truy cập đến tham số thực

tế của chương trình chủ Khi chương trình con 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 tế thay đổi theo Trên thực tế, tham

số thực tế được chia sẻ với chương trình con được gọi

Trang 45

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

Trang 46

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

Ví dụ b:

void setInt(int **p, int n)

{

*p = (int *) malloc(sizeof(int)); // đăng kí một vùng nhớ

*p = n; // cài giá trị vào

}

void main(void)

{

int *p; //khai báo một con trỏ kiểu integer

setInt(&p, 42); // chuyển giá trị của 'p' vào.

}

Trang 47

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

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ố inout-mode Tuy

nhiên, phương pháp này không được dùng rộng rãi trong các ngôn ngữ Nó chỉ được

dùng tại thời điểm biên dịch bằng các dãy

lệnh trong các hợp ngữ và cho các tham sốchung của chương trình con chung trong

ngôn ngữ C++ và Ada

Trang 48

Chương trình con chung

Việc dùng lại phần mềm là một đóng góp

quan trọng trong việc làm tăng hiệu quả của phần mềm Một cách để tăng khả năng cóthể sử dụng lại của phần mềm là giảm việc tạo ra các chương trình con khác nhau, màcác chương trình con này thực thi với một thuật toán giống nhau với các kiểu dữ liệu khác nhau Ví dụ, một lập trình viên không cần thiết phải viết bốn chương trình con sắp xếp khác nhau cho việc sắp xếp bốn mảng

mà bốn mảng này chỉ khác nhau ở kiểu của các phần tử

Trang 49

Chương trình con chung (tt)

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 (generic subprogram) 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ự

và kiểu dữ liệu của các tham số Hay nói

cách khác, một chương trình con chung,

hay còn gọi là chương trình con đa hình

(polymorphic subprogram), nhận các tham

số với nhiều kiểu khác nhau trong các hoạt động khác nhau

Ngày đăng: 03/12/2015, 15:50

HÌNH ẢNH LIÊN QUAN

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ộ. - Bài giảng lý thuyết ngôn ngữ lập trình  chương 8   cđ CNTT hữu nghị việt hàn
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ộ (Trang 37)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm