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 đủ
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:
bai_giang_tin_hoc_dai_cuong_phan_3_lap_trinh_c_chuong_7_ham.pptx

