Bài giảng Tin học đại cương - Phần 3: Lập trình C - Chương 7: Hàm

Phần 3: Lập trì nh C  
Nội dung chí nh  
• Chương 1: Tổng quan về ngôn ngữ C  
• Chương 2: Kiểu dữ liệu và biểu thức trong C  
• Chương 3: Vào ra dữ liệu  
• Chương 4: Cấu trúc điều khiển  
• Chương 5: Mảng, con trỏ và xâu ký tự  
• Chương 6: Cấu trúc  
• Chương 7: Hàm  
• Chương 8: Tệp dữ liệu  
01-Jan-16  
404  
Chương 7: Hàm  
Nội dung chí nh  
1. Khá i niệm hàm  
• Khái niệm chương trì nh con  
• Phân loại: hàm và thủ tục  
2. Khai bá o và sử dụng hàm  
• Khai báo và sử dụng  
3. Phạm vi của biến  
• Toàn cục và địa phương  
• Biến static, biến register  
4. Truyền tham số  
• Truyền theo giá trị, truyền theo địa chỉ  
01-Jan-16  
405  
Chương 7: Hàm  
7.1 Khái niệm hàm  
Khái niệm & Vai trò  
• Khá i niệm  
– Là một chương trình nằm trong một chương  
trì nh lớn hơn nhằm thực hiện một nhiệm vụ cụ  
thể  
• Vai trò  
– Chia nhỏ chương trình ra thành từng phần để  
quản lý  
• Phương pháp lập trình có cấu trúc  
– Có thể sử dụng lại nhiều lần: printf(), scanf()…  
– Chương trình dễ dàng đọc và bảo trì hơn  
01-Jan-16  
406  
Chương 7: Hàm  
7.1 Khái niệm hàm  
Phâ n loại  
Hàm chuẩn – Có  
trong thư viện  
Hàm  
(function)  
Hàm (người dùng)  
Chương  
Có trả về giá trị  
tự định nghĩa  
trì nh con  
Thủ tục  
(procedure)  
Khô ng trả về giá trị  
Ngô n ngữ lập trì nh C  
• Chỉ cho phé p khai báo chương trình con là hàm.  
• Sử dụng kiểu “void” với ý nghĩa “không là kiểu  
dữ liệu nào cả” để chuyển thủ tục về dạng hàm  
01-Jan-16  
407  
Chương 7: Hàm  
Nội dung chí nh  
1. Khá i niệm hàm  
• Khái niệm chương trì nh con  
• Phân loại: hàm và thủ tục  
2. Khai bá o và sử dụng hàm  
• Khai báo và sử dụng  
3. Phạm vi của biến  
• Toàn cục và địa phương  
• Biến static, biến register  
4. Truyền tham số  
• Truyền theo giá trị, truyền theo địa chỉ  
01-Jan-16  
408  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Ví dụ  
#include<stdio.h>  
int bp(int x){  
int y;  
Khai bá o  
chương  
trì nh con  
y = x * x;  
return y;  
}
void main(){  
int i;  
for (i=1; i< 20; i+=2)  
Gọi chương  
trì nh con ra  
thực hiên  
printf("%4d\n", bp(i));  
printf("\n");  
}
01-Jan-16  
409  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Định nghĩa hàm  
Cú phá p  
Dòng đầu hàm  
Kiểu_hàm Tên_hàm(DS khai bá o tham số)  
{
[<Cá c khai bá o cục bộ>]  
[<Cá c câ u lệnh>]  
}
01-Jan-16  
410  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Dò ng đầu hàm  
Kiểu_hàm Tên_hàm(DS khai bá o tham số)  
• Mô tả các thô ng tin được trao đổi giữa bên  
trong và bên ngoài hàm.  
– Tên của hàm,  
– Cá c tham số đầu vào  
• Hàm cần những thô ng tin gì để hoạt động  
– Tham số đầu ra và giá trị trả về  
• Hàm cung cấp những thô ng tin gì cho mô i trường  
• Dùng phân biệt cá c hàm với nhau,  
– không tồn tại 2 hàm có dòng đầu hàm giống nhau.  
01-Jan-16  
411  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Dòng đầu hàm→Tên hàm  
Là tên do người sử dụng tự định nghĩa  
• Tuâ n theo quy tắc đặt tên đối tượng  
• Nên mang ý nghĩa gợi ý chức năng của hàm  
01-Jan-16  
412  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Dò ng đầu hàm→Khai bá o cá c tham số hình thức  
• Khai bá o cá c thô ng tin cần cho hoạt động  
của hàm và các thô ng tin, kết quả tí nh toá n  
được hàm trả lại.  
– Tham số chứa dữ liệu vào cung cấp cho hàm  
– Tham số chứa dữ liệu ra mà hàm tí nh toá n được.  
• Cá c tham số sử dụng trong khai bá o hàm là  
tham số hì nh thức.  
– Nguyên tắc khai báo tham số hình thức như  
giống như khai báo một biến  
kiểu_dữ_liệu_của_tham_số tên_của_tham_số  
01-Jan-16  
413  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Dò ng đầu hàm→Khai bá o cá c tham số hình thức  
• Cá c tham số cung cấp cho hàm trong quá  
trình thực hiện hàm là tham số thực sự  
– Kiểu dữ liệu của tham số thực phải giống kiểu dữ  
liệu của tham số hình thức tương ứng với tham  
số thực sự đó,.  
• Một hàm có thể có một, nhiều hoặc không có  
tham số nào cả  
– Nếu có nhiều tham số, phải được phân cá ch với  
nhau bằng dấu phẩy.  
– khô ng có tham số vẫn phải có cặp dấu ngoặc  
đơn sau tên hàm  
01-Jan-16  
414  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Dòng đầu hàm→Kiểu dữ liệu trả về  
• Thông thường hàm sau khi được thực hiện  
sẽ trả về một giá trị kết quả tí nh toá n nào đó.  
• Để sử dụng được giá trị đó cần phải biết nó  
thuộc kiểu dữ liệu gì .  
– Kiểu dữ liệu của đối tượng tính toá n được hàm  
trả về được gọi là kiểu dữ liệu trả về của hàm.  
01-Jan-16  
415  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Dòng đầu hàm→Kiểu dữ liệu trả về  
• Trong C, kiểu dữ liệu trả về của hàm có thể  
là kiểu dữ liệu bất kì (kiểu dữ liệu có sẵn  
hoặc kiểu dữ liệu do người dùng tự định  
nghĩa) nhưng khô ng được là kiểu dữ liệu  
mảng.  
• Nếu kiểu dữ liệu trả về là kiểu void thì hàm  
không trả về giá trị nào cả.  
• Nếu không khai bá o kiểu dữ liệu trả về thì  
chương trình dịch của C sẽ ngầm hiểu rằng  
kiểu dữ liệu trả về của hàm là kiểu int.  
01-Jan-16  
416  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Thâ n hàm  
• Danh sá ch cá c câ u lệnh  
• Thường có ít nhất một lệnh return  
Họat động của hàm  
• Thực hiện lần lượt cá c lệnh cho đến khi  
– Thực hiện xong tất cả các câu lệnh có trong  
thâ n hàm  
– Gặp lệnh return  
• Cú phá p chung  
return [biểu_thức];  
01-Jan-16  
417  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Thâ n hàm (tiếp)  
Khi gặp lệnh return biểu_thức  
• Tí nh toá n giá trị của biểu_thức,  
• Lấy kết quả tí nh toán được làm giá trị trả về cho  
lời gọi hàm  
• Kết thúc việc thực hiện hàm, trở về chương trình  
đã gọi nó .  
Nếu return khô ng có phần biểu_thức,  
– Kết thúc thực hiện hàm mà không trả về giá trị  
nào cả.  
• Dùng khi hàm được khai bá o có kiểu trả về là void  
01-Jan-16  
418  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Sử dụng hàm  
Tên_hàm (DS_tham_số_thực _sự);  
Ví dụ:  
N = bp(1);N= bp(3);,…  
Lưu ý:  
• Gọi hàm thô ng qua tên hàm và cá c tham số được cung  
cấp thực sự cho hàm (tham số thực sự).  
• Nếu hàm nhận nhiều tham số thì các tham số ngăn cá ch  
nhau bởi dấu phẩy  
• Cá c tham số hì nh thức của hàm sẽ nhận cá c giá trị từ  
tham số truyền vào  
• Sau khi thực hiện xong, trở về điểm mà hàm được gọi  
01-Jan-16  
419  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Ví dụ: Cho biết kết quả thực hiện chương trì nh  
#include<stdio.h>  
3
int fun(int a){  
fun(3)  
4
a++;  
return a;  
fun(4)  
5
}
fun(5)  
int main(){  
printf("%d\n", fun(fun(fun(3))));  
return 0;  
6
}
01-Jan-16  
420  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Ví dụ: Cho biết kết quả thực hiện chương trì nh  
#include<stdio.h>  
fun(5)  
5 * fun(4)  
4 * fun(3)  
3 * fun(2)  
int fun(int n){  
if(n==0) return 1;  
else return n*fun(n-1);  
}
2 * fun(1)  
1 * fun(0)  
int main(){  
printf("%d\n", fun(5));  
return 0;  
120  
}
1
421  
01-Jan-16  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
f (x) = x5 + 5 x  
Ví dụ 1: Tính TBC f(a),f(b), f(c) nếu f(x) =  
#include <stdio.h>  
#include <math.h>  
float f(float x){  
if(x==0.0)  
return 0;  
else  
return pow(x,5)+x/fabs(x) * pow(fabs(x), 0.2);  
}
void main(){  
float a, b, c;  
printf("So 3 so thuc : "); scanf("%f%f%f",&a,&b,&c);  
printf("Ket qua %f \n",(f(a)+f(b)+f(c))/3);  
}
01-Jan-16  
422  
Chương 7: Hàm  
7.2 Khai bá o và sử dụng hàm  
Ví dụ 2: Tìm ƯSCLN của dãy số  
1. # include <stdio.h>  
2. int uscln(int a, int b) {  
3.  
4.  
while (a !=b){  
if(a > b) a = a- b;  
5.else b = b - a; 6.  
}
7.  
return a;  
8. }  
9. void main(){  
10.  
11.  
12.  
13.  
14.  
int A[100], N, i, r;  
printf("So phan tu : "); scanf("%d",&N);  
for(i=0; i < N; i++){  
printf("A[%d] = ",i+1); scanf("%d",&A[i]);  
}
15. r =A[0];  
16. for(i = 1; i < N; i++)  
17.  
r = uscln(r,A[i]);  
18. printf("Ket qua %d \n",r);  
1019-.Jan-}16  
423  
Tải về để xem bản đầy đủ
pptx 39 trang baolam 22920 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 3: Lập trình C - Chương 7: Hàm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptxbai_giang_tin_hoc_dai_cuong_phan_3_lap_trinh_c_chuong_7_ham.pptx