Cơ sở lập trình - Trường ĐH Thương mại - 10


Ví dụ 1: Xây dựng hàm tính n!


long gthua(int n)

{

long gt=1;

for (int i=2;i<=n;i++)

gt=gt*i;

return gt;

}

Có thể bạn quan tâm!

Xem toàn bộ 113 trang tài liệu này.

7/2020 Cơ sở lập trình 145


Cơ sở lập trình - Trường ĐH Thương mại - 10

Ví dụ2: Xây dựng hàm tính tổ hợp chập k của n. int tohop(int n, int k)

{

int th; th=gthua(n)/(gthua(k)*gthua(n-k)); return th;

}


7/2020 Cơ sở lập trình 146

Ý nghĩa: trả về giá trị cho hàm

Cú pháp:

return (giá trị);

Loại hàm: các hàm có kiểu khác void

Vị trí: Thông thường được đặt ở dòng lệnh

cuối cùng của thân hàm

Lưu ý:

Một hàm có thể xuất hiện nhiều câu lệnh return


7/2020 Cơ sở lập trình 147



Ví dụ 1: tính n!

long gthua(int n)

{

long gt=1;

for (int i=2;i<=n;i++) gt=gt*i;

return gt;

}


7/2020 Cơ sở lập trình 148

Ví dụ2: Kiểm tra 1 số nguyên dương có phải

là số nguyên tố không

int ktnto(int n)

{ if (n==1 || n==2) return 1;

else

{ for (int i=2;i<n;i++)

if (n%i==0) return 0; return 1;

}

}

7/2020 Cơ sở lập trình 149


Quá trình thực hiện khi gặp lời gọi hàm

Cấp phát bộ nhớ cho các đối và các biến cục bộ

Gán giá trị của tham số thực cho các đối

tương ứng

Thực hiện các câu lệnh trong thân hàm

Khi gặp câu lệnh return hoặc dấu } cuối cùng của thân hàm thì máy sẽ xóa các đối, các biến cục bộ và rời khỏi hàm


7/2020 Cơ sở lập trình 150

Lưu ý:

Đối và biến cục bộ của hàm cần có tên khác nhau

Không thể mang giá trị của đối ra khỏi hàm

Không thể dùng đối để thay đổi giá trị của các đại lượng bên ngoài hàm.

Các đối số có thể bị biến đổi trong thân hàm nhưng các tham số thực không bị thay đổi (các đối chỉ là bản sao của tham số thực)


7/2020 Cơ sở lập trình 151


Vị trí xuất hiện: lời gọi hàm

Ý nghĩa: Giá trị trả về của hàm là một giá trị cụ thể có kiểu như đã được khai báo

Vai trò: Có thể sử dụng như một giá trị hằng trong phép gán, các phép toán số học, các câu lệnh nhập xuất.

Ví dụ

printf(“giá trị giai thừa là: %ld”,gthua(n));

th=gthua(n)/(gthua(k)*gthua(n-k));


7/2020 Cơ sở lập trình 152

Lưu ý: Nếu hàm không có giá trị trả về lời

gọi hàm sẽ đứng đơn lẻ như một lệnh;

Ví dụ:

void nhap(int a[],int n)

{

for (int i=0;i<n;i++) scanf(“%d”,&a[i]);

}

int x[10], d; nhap(x,d);

7/2020 Cơ sở lập trình 153


4.2.1 Biến toàn cục và biến địa phương

4.2.2 Tham số hình thức của hàm

4.2.3 Truyền tham số


7/2020 Cơ sở lập trình 154

Ý nghĩa: loại biến sẽ quyết định vòng đời và

phạm vi hoạt động của nó.

Biến toàn cục: là biến có phạm vi hoạt động toàn chương trình

Vị trí: được khai báo ngoài mọi hàm, dưới khai

báo tiền xử lý.

Vòng đời: từ vị trí của nó được khai báo cho tới hết chương trình.

7/2020 Cơ sở lập trình 155


Biến cục bộ (địa phương): là biến có phạm vi hoạt động trong một hàm hoặc một khối lệnh

Vị trí : tham số của hàm hoặc biến được khai

báo trong thân hàm.

Vòng đời: từ vị trí nó được khai báo đến hết phạm vi. (khối lệnh/ hàm)

Lưu ý:

Nên sử dụng biến cục bộ để giảm không gian lưu

trữ và dễ kiểm soát

Tất cả các biến được khai báo trong thân của các hàm đều là biến cục bộ (bao gồm hàm main)

7/2020 Cơ sở lập trình 156

Ví dụ:

#include <stdio.h>

#include <conio.h>

int x=1; // biến toàn cục int test ();

int main(int argc, char *argv[])

{ int y = 5; //biến cục bộ

printf("%d", test()) ;

printf("%d",y); getch();

return 0;

}

int test ()

{ return x *2; }

7/2020 Cơ sở lập trình 157


Tham số hình thức của hàm: là các tham số được viết trong định nghĩa hàm

Yêu cầu:

Các tham số phải có cả kiểu và tên

Kiểu, thứ tự và số lượng tham số truyền vào phải chính xác như khai báo nguyên mẫu, tên của tham số có thể khác.

Tham số có thể có giá trị mặc đinh, những tham số

này phải viết dồn về bên phải nhất.


7/2020 Cơ sở lập trình 158


Ví dụ

void nhap(int a[],int n=10)

{

for (int i=0;i<n;i++) scanf(“%d”,&a[i]);

}


7/2020 Cơ sở lập trình 159


Phân loại:

Tham số vào: chứa giá trị đã biết

Tham số ra: chứa các kết quả mới nhận được.

Lưu ý:

Có tham số đóng vai trò cả tham số vào và cả tham số ra.

Ví dụ:


7/2020 Cơ sở lập trình 160

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 01/10/2023