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

Slide tin học cơ sở 2 chương 3 hàm và chương trình

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.6 MB, 76 trang )

.c
om
ng
co

cu

u

du
o

ng

th

an

Chương 3
HÀM VÀ CHƯƠNG TRÌNH

1
CuuDuongThanCong.com

/>

u

du
o


ng

th

an

co

ng

Hàm và tổ chức chương trình
Tham số cho chương trình con
Truyền dữ liệu sang hàm qua đối số.
Hàm với biến tham chiếu.
Biến cục bộ và biến toàn cục.
Hàm đệ quy.
Hàm với con trỏ.
Con trỏ hàm.
Một số bài toán đệ quy phổ biến

cu

1.
2.
3.
4.
5.
6.
7.
8.

9.

.c
om

Nội dung

2
CuuDuongThanCong.com

/>

.c
om

Hàm và tổ chức chương trình
ng

 Khái niệm

co

 Hàm là một khối lệnh thực hiện một cơng

th

an

việc hồn chỉnh (module), được đặt tên và


du
o

ng

được gọi thực thi nhiều lần tại nhiều vị trí

u

trong chương trình.

cu

 Hàm cịn gọi là chương trình con (subroutine)

CuuDuongThanCong.com

/>

.c
om

Hàm và tổ chức chương trình
ng

 Khái niệm (tt):

an

co


 Hàm có thể được gọi từ chương trình chính

ng

th

(hàm main) hoặc từ 1 hàm khác.

du
o

 Hàm có giá trị trả về hoặc khơng. Nếu hàm

cu

u

khơng có giá trị trả về gọi là thủ tục
(procedure)

CuuDuongThanCong.com

/>

.c
om

Khái niệm và khai báo hàm
ng


 Khái niệm (tt)

co

 Có hai lọai hàm:

th

an

– Hàm thư viện: là những hàm đã được xây

du
o

ng

dựng sẵn. Muốn sử dụng các hàm thư viện

cu

u

phải khai báo thư viện chứa nó trong phần
khai báo #include.

– Hàm do người dùng định nghĩa.
CuuDuongThanCong.com


/>

.c
om

Khái niệm và khai báo hàm
ng

• Dạng tổng quát của hàm do người dùng định

an

co

nghĩa:

th

returnType functionName(parameterList)

du
o

ng

{

}

cu


u

//Thân hàm

CuuDuongThanCong.com

/>

cu

u

du
o

ng

th

an

co

ng

.c
om

Khái niệm và khai báo hàm


CuuDuongThanCong.com

/>

cu

u

du
o

ng

th

an

co

ng

.c
om

Khái niệm và khai báo hàm

SAI
CuuDuongThanCong.com


/>

.c
om

Khái niệm và khai báo hàm
ng

 Một hàm khi đã định nghĩa nhưng chúng vẫn

co

chưa được thực thi, hàm chỉ được thực thi khi

du
o

ng

 Cú pháp gọi hàm:

th

an

trong chương trình có một lời gọi đến hàm đó.

cu

u


<Tên hàm>([Danh sách các tham số])

CuuDuongThanCong.com

/>

cu

u

du
o

ng

th

CuuDuongThanCong.com

int uscln(int a, int b)
{
a=abs(a);
b=abs(b);
while(a!=b)
{
if(a>b) a-=b;
else b-=a;
}
return a;

}

ng
co

an

void main()
{
int a, b, USC;
cout<<“Nhap a,b: ”;
cin>>a>>b;
USC = uscln(a,b);
cout<<“Uoc chung
lon nhat la: ”<}

.c
om

Khái niệm và khai báo hàm

/>

.c
om

Truyền dữ liệu sang hàm qua
đối số


cu

u

du
o

ng

th

an

co

ng

 Tham số hình thức: Khi hàm cần nhận đối số
(arguments) để thực thi thì khi khai báo hàm
cần khai báo danh sách các đối số để nhận giá
trị từ chương trình gọi. Các tham số này được
gọi là.
Ví dụ:
int min(int a, int b)
{
if(areturn a;
else
return b;
}

CuuDuongThanCong.com

/>

.c
om

Truyền dữ liệu sang hàm qua
đối số
ng

• Khi gọi hàm, ta cung cấp các giá trị thật, các

an

co

giá trị này sẽ được sao chép vào các tham số

th

hình thức và các giá trị thật được gọi là tham

du
o

ng

số thực.


cu

u

Ví dụ: Để tìm giá trị nhỏ nhất của 2 số 5 và 6 ta

gọi hàm min(5, 6)

CuuDuongThanCong.com

/>

.c
om

Truyền dữ liệu sang hàm qua
đối số
ng

 Có hai cách truyền đối số vào tham số hình

th

– Truyền tham trị:

an

co

thức:


du
o

ng

Sau khi thốt khỏi hàm nó vẫn giữ giá trị gốc

cu

u

– Truyền tham biến:
Sau khi thốt khỏi hàm, nó sẽ lấy giá trị bị
thay đổi trong hàm
CuuDuongThanCong.com

/>

.c
om

Truyền dữ liệu sang hàm qua
đối số
ng

 Truyền tham trị (call by value)

th


an

co

– Sao chép giá trị của đối số vào tham số hình
thức của hàm.

cu

u

du
o

ng

– Những thay đổi của tham số không ảnh
hưởng đến giá trị của đối số.

CuuDuongThanCong.com

/>

cu

u

du
o


co

ng

void main()
{
int a=40;
hamVidu (a);
cout << “\n Gia tri cua a
trong ham main: ”;
cout << “a = ” << a <<
endl;
}

an
th

ng

Ví dụ:
void hamVidu(int a)
{
a = a*2;
cout << “gia tri cua a
trong hamVidu:“<< a;
}

.c
om


Truyền dữ liệu sang hàm qua
đối số

Gia tri cua a trong ham hamVidu: 80
Gia tri cua a trong ham main: 40
CuuDuongThanCong.com

/>

.c
om

Hàm với biến tham chiếu

ng

th

an

co

ng

• Truyền tham chiếu (call by reference)
– Sao chép địa chỉ của đối số vào tham số hình
thức. Do đó, những thay đổi đối với tham số
sẽ có tác dụng trên đối số.

cu


u

du
o

Ví dụ: Khi gọi hàm hamVidu (&a);
Địa chỉ của a truyền vào cho tham số hình
thức của hàm: hamVidu (int &b)

CuuDuongThanCong.com

/>

an

co

ng

void hamgido ( int &b)
{
b*= 2;
cout << “Trong hàm
double a = “ << b;
}

cu

u


du
o

ng

th

void main()
{
int a=40;
hamgido (a);
cout << “\Trong ham
main : a = “ << a ;
}

.c
om

Hàm với biến tham chiếu

Trong hàm hamVidu a = 80
Trong hàm main a = 80
CuuDuongThanCong.com

/>

cu

u


du
o

ng

th

an

co

ng

.c
om

Hàm với biến tham chiếu

Gọi hàm truyền tham trị
CuuDuongThanCong.com

Gọi hàm truyền tham biến
/>

.c
om

Prototype (nguyên mẫu) của hàm


ng

 Chương trình bắt buộc phải có prototype của

co

hàm hoặc phải bắt buộc viết định nghĩa của hàm

th

an

trước khi gọi.

du
o

ng

 Sau khi đã sử dụng prototype của hàm, ta có thể

u

viết định nghĩa chi tiết hàm ở bất kỳ vị trí nào

cu

trong chương trình.

CuuDuongThanCong.com


/>

.c
om

Prototype (nguyên mẫu) của hàm

cu

u

du
o

ng

th

an

co

ng

#include <iostream.h>// Khai báo thư viện iostream.h
int max(int x, int y);// khai báo nguyên mẫu hàm max
void main()//hàm main (sẽ gọi các hàm thực hiện)
{
int a, b;// khai báo biến

cout<<" Nhap vao 2 so a, b ";
cin>>a>>b;
cout<<”so lon nhat la:”<< max(a,b);
}
int max(int x, int y)// Định nghĩa hàm max(a,b)
{
return (x>y) ? x:y;
}
CuuDuongThanCong.com

/>

.c
om

Đệ quy
ng

 Một hàm được gọi là đệ qui nếu một lệnh trong

co

thân hàm gọi đến chính hàm đó.

th

an

 Đệ qui giúp giải quyết bài tốn theo cách nghĩ


du
o

ng

thơng thường một cách tự nhiên.

u

 Đệ qui phải xác định được điểm dừng. Nếu

cu

khơng xác định chính xác thì làm bài tốn bị sai
và có thể bị lặp vĩnh cửu (Stack Overhead)
CuuDuongThanCong.com

/>

.c
om

Đệ quy
ng

 Ví dụ: Định nghĩa giai thừa của một số nguyên

an

 5!=5*4!


co

dương n như sau:

ng

th

 4!=4*3!

du
o

 Tức là nếu ta biết được (n-1) giai thừa thì ta sẽ

cu

u

tính được n giai thừa, vì n!=n*(n-1)!

 Thấy n=0 hoặc n=1 thì giai thừa ln = 1 
chính là điểm dừng

n!=1* 2 * 3 *…* (n-1) *n = (n-1)! *n (với 0!=1)
CuuDuongThanCong.com

/>


.c
om

Đệ quy
ng

int giaiThua(int n)

an

co

{

du
o

return(1);

ng

th

if(n<=1)

}

cu

u


return n*giaiThua(n-1); // goi de qui

CuuDuongThanCong.com

/>

.c
om

Đệ quy
ng

 Phân loại đệ qui

an

co

 Đệ qui tuyến tính.

ng

th

 Đệ qui nhị phân.

du
o


 Đệ qui phi tuyến.

cu

u

 Đệ qui hỗ tương.

CuuDuongThanCong.com

/>

.c
om

Đệ quy tuyến tính

cu

u

du
o

ng

th

an


co

ng

Trong thân hàm có duy nhất một lời gọi hàm gọi lại chính
nó một cách tường minh.
<Kiểu dữ liệu hàm> TenHam (<danh sách tham số>)
{
if (điều kiện dừng)
{
...
//Trả về giá trị hay kết thúc công việc
}
//Thực hiện một sớ cơng việc (nếu có)
. . . TenHam (<danh sách tham sớ>);
//Thực hiện một sớ cơng việc (nếu có)
}
CuuDuongThanCong.com

/>

×