Các vấn đề cơ bản về hàm - Pdf 63

Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C

88
VI – Các vấn đề cơ bản về hàm

Trong các ngôn ngữ lập trình có cấu trúc thì việc xây dụng và sử dụng các chương
trình con có ý nghĩa quan trọng nó giúp chúng ta phân chia chương trình thành các modul
độc lập nhỏ hơn, dễ kiểm soát, dễ phát triển hơn và có thể sử dụng lại các modul đó ở
nhiều nơi mà không phải viết lại. Khác với một số ngôn ngữ lập trình khác, chương trình
con có thể là hàm hoặc thủ tục, trong C chỉ có một loại đó là hàm.
Trong phần này chúng ta xem xét hàm ở mức độ đơn giản nhất, giúp bạn đọc có khái
niệm cơ bản ban đầu về hàm và có thể viết được các hàm đơn giản
Hàm là một là một đơn vị độc lập của chương trình, mỗi hàm có một chức năng xác
định, có thể được gọi thực hiện bởi hàm hoặc chương trình khác. Trong C các hàm đều
ngang mức, tức là trong định nghĩa hàm không thể chứa định nghĩa hàm khác (gọi là hàm
1 mức). Có hai loại hàm đó là hàm của thư viện và hàm do người lập trình định nghĩa
(hay còn gọi là hàm của người dùng)
Với một hàm nói chung thì các thông tin xác định là: Tên hàm, kiểu giá trị trả về của
hàm (gọi là kiểu hàm), và các tham số của nó. Tức là với một hàm cần phải xác định 3
thông tin để ‘nhận diện’
- tên hàm
- dữ liệu vào
-
kiểu quả trả về (kiểu hàm)Nói chung để xây dựng một hàm thường có hai phần đó là khai báo nguyên mẫu hàm và
định nghĩa hàm. Vị trí của hai phần này bạn đọc xem lại phần cấu trúc chương trình.


à
float f(float, int); //
nguyên mẫu hàm f, có hai tham, tham số thứ nhất kiểu float, tham số
thứ 2 kiểu int, kết quả trả về kiểu float
à
void nhapmang(int a[], int ); //
hàm nhapmang, kiểu void (không có giá trị trả về), tham
số thứ nhất là một mảng nguyên, tham số thứ 2 là một số nguyên
à
void g()
; //
hàm g không đối, không kiểu.

VI.2 - Định nghĩa hàm
Cú pháp:
<kiểu_hàm> <tên_hàm>([khai_báo_tham_số])
{
< thân hàm>
}
Dòng thứ nhất là tiêu đề hàm (dòng tiêu đề) chứa các thông tin về hàm: tên hàm, kiểu
của hàm (hai thành phần này giống như trong nguyên mẫu hàm) và khai báo các tham số
(tên và kiểu) của hàm, nếu có nhiều hơn một thì các tham số cách nhau bởi dấu phẩy(,).
Thân hàm là các lệnh nằm trong cặp { }, đây là các lệnh thực hiện chức năng của hàm.
Trong hàm có thể có các định nghĩa biến, hằng hoặc kiểu dữ liệu; các thành phần này trỏ
thành các thành phần cục bộ của hàm.
Nếu hàm có giá trị trả về (kiểu hàm khác void) thì trong thân hàm trước khi kết thúc
phải có câu lệnh trả về giá trị:
return <giá trị>;
<giá_trị> sau lệnh return chính là giá trị trả về của hàm, nó phải có kiểu phù hợp với
kiểu của hàm được khai báo trong dòng tiêu đề. Trường hợp hàm void chúng ta có thể

for(i=0;i<N; i++)
{ printf("a[%d]= ",i);
scanf("%d",&a[i]);
}
return ;
}
VI.3 - Lời gọi hàm và truyền tham số

Một hàm có thể gọi thực hiện thông qua tên hàm, với những hàm có tham số thì trong
lời gọi phải truyền cho hàm các tham số thực sự (đối số) tương ứng với các tham số hình
thức.
Khi hàm được gọi và truyền tham số phù hợp thì các lệnh trong thân hàm được thực
hiên bắt đầu từ lệnh đầu tiên sau dấu mở móc { và kết thúc khi gặp lệnh return, exit hay
gặp dấu đóng móc } kêt thúc hàm.
Cú pháp:
<tên_hàm> ([danh sách các tham số thực sự]);
Các tham số thực sự phải phù hợp với các tham số hình thức:
à
số tham số thực sự phải bằng số tham số hình thức.
à
Tham số thực sự được truyền cho các tham số hình thức tuần tự từ trái sang phải,
tham số thực sự thứ nhất truyền cho tham số hình thức thứ nhất, tham số thực sự
thứ 2 truyền cho tham số hình thức thứ 2,.. kiểu của các tham số hình thức phải phù
hợp với kiểu của các tham số hình thức. Sự phù hợp ở đây được hiểu là kiểu trùng
nhau hoặc kiểu của tham số thực sự có thể ép về kiểu của tham số hình thức.
Ví dụ: giả sử có các hàm max, nhapmang như đã định nghĩa ở trên
int a=4, b=6,c;
int D[10];
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ

printf("\nNhap gia tri n (n>=2) = ");
scanf("%d",&n);
} while(n<2);
printf("\nCac so nguyen to tu 2 toi %d la \n",n);
for(k=2; k<=n; k++)
if (nguyento(k)) printf("%d, ",k);
}
//-----
định nghĩa hàm nguyento
------------

int nguyento(int k){
int i=2;
while((i<=sqrt(k))&&(k%i)) i++;
if(i>sqrt(k))
return 1;
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C

92
else
return 0;
}

( ví dụ VI.1 - in các số nguyên tố từ 2 tới n)
Ví dụ VI.2 - Viết chương trình nhập 2 mảng A, B có n phần tử nguyên từ bàn phím, tính
mảng tổng C = A+B, in 3 mảng A, B, C ra màn hình.
Yêu cầu:
- n <20;


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status