Tải bản đầy đủ (.ppt) (57 trang)

NGÔN NGỮ LẬP TRÌNH C - Hàm, Chương trình con docx

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 (192.55 KB, 57 trang )

Hàm – Chương trình con
NGÔN NGỮ LẬP TRÌNH C
Trường Cao Đẳng Công Nghiệp Tuy Hòa
Khoa Công nghệ Thông tin
o0o
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
2
Nội dung
1. Giới thiệu
2. Khai báo hàm
3. Xây dựng hàm
4. Danh sách tham số
5. Lời gọi hàm
6. Vấn đề truyền tham số cho hàm
7. Tham số là mảng
8. Các loại biến trong chương trình
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
3
Giới thiệu

Chương trình sẽ thế nào nếu có 1000
lệnh, tất cả đều nằm trong hàm main?

Nếu có nhiều người cùng viết 1
chương trình thì phân chia ra sao?

Nếu muốn thực hiện cùng 1 đoạn lệnh,


1 chức năng nhiều lần, tại nhiều thời
điểm khác nhau trong chương trình thì
phải làm thế nào?
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
4
Giới thiệu(2)

Vấn đề có thể được giải quyết nếu ta
chia chương trình ra thành nhiều phần
nhỏ.
11
12
2
31
32
4
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
5
Giới thiệu(3)

Mỗi phần được gọi là 1 HÀM – hay 1
chương trình con.

Ưu điểm của cách tiếp cận này:

Giảm độ phức tạp của chương trình


Tối ưu hóa mã chương trình

Tăng tính tái sử dụng của CT

Hỗ trợ khả năng làm việc tập thể
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
6
Nguyên mẫu hàm
Một số tính chất:

Khai báo cú pháp và cách sử dụng của
hàm được xây dựng

Thường được đặt ở đầu CT, sau các
khai báo tiền xử lý

Mỗi hàm chỉ có 1 nguyên mẫu, được viết
trên 1 dòng duy nhât

Còn được gọi là khai báo hàm

Có thể có hay không có
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
7
Nguyên mẫu hàm(2)

Vị trí trong chương trình:

Tiền xử lý

Các khai báo toàn cục

Kiểu, hằng

Biến

Nguyên mẫu hàm

Hàm main()

Thân các hàm tự xây dựng
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
8
Nguyên mẫu hàm(3)

Cú pháp khai báo:
[ret_type] FuncName([parameter list]);

Ghi chú:

ret_type có thể là void, 1 kiểu bình
thường hay 1 kiểu tự định nghĩa.

Kiểu trả về mặc định (không chỉ định

rõ) là int.

FuncName: Tên hàm, do LTV tự đặt.
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
9
Nguyên mẫu hàm(4)

Parameter list là tùy chọn, có thể không
có nếu hàm không cần thêm thông tin
gì.

Các tham số được ngăn cách nhau
bằng dấu phẩy (,) và có dạng như sau:
typename parametername

Tên tham số là tùy chọn trong nguyên
mẫu hàm, nhưng là bắt buộc trong
phần định nghĩa hàm
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
10
Nguyên mẫu hàm(5)
Một số ví dụ:
1. void DoIt();
2. int Func();
3. int round(float x);
4. int USCLN(unsigned a, unsigned b);

5. void GB2(float a, float b, float c);
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
11
Định nghĩa hàm (thân hàm)
Vị trí:

Sau phần khai báo toàn cục

Trước hoặc sau hàm main()

Thứ tự của các hàm là không quan
trong nếu nguyên mẫu của chúng đã
được khai báo đầy đủ

Không có khái niệm hàm lồng nhau
trong C
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
12
Định nghĩa hàm (2)
Cấu trúc chung của 1 hàm:
[ret_type] FuncName([parameter list])
{
//Các khai báo cục bộ
statements;

[return (value);]

}
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
13
Định nghĩa hàm (3)
Giải thích:

ret_type: kiểu trả về của hàm, là 1
trong các kiểu cơ bản.

ret_type cannot be an array.

ret_type là void nếu hàm không trả về
1 giá trị cụ thể nào.

FuncName: tên tự đặt, theo nguyên
tắc đặt tên.
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
14
Định nghĩa hàm (4)
Giải thích :

parameter list: tập các giá trị mà hàm cần có
để thực hiện công việc của nó.

Khai báo cục bộ: Khai báo tất cả các hằng,
biến, … được sử dụng trong hàm, không được

biết đến bởi các hàm khác.

Câu lệnh return: trả về kết quả cuối cùng, sau
khi hàm đã tính toán xong.
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
15
Định nghĩa hàm (5)
Ví dụ:
int isPrime(int N)
{
int i, flag;
flag = (N<2)?0:1;
for(i=2; flag&&i<N; i++)
if (N%i==0) flag = 0;
return (flag);
}
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
16
Định nghĩa hàm (6)
Ví dụ:
int USCLN(int a, int b)
{
int r;
r = a%b;
while (r){
a = b;

b = r;
r = a%b;
}
return (b);
}
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
17
Danh sách tham số
Function
A
inputs
outputs
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
18
Danh sách tham số (2)
Chú ý quan trọng:

Tất cả các thông tin cần cho hàm để
nó làm việc cần được truyền cho nó
thông qua tham số.

Hạn chế tối đa việc dùng các lệnh
nhập trong hàm

Hạn chế việc sử dụng các biến toàn
cục bên trong hàm

Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
19
Danh sách tham số (3)
Chú ý quan trọng:

Tất cả các kết quả của hàm cần được
trả ra bên ngoài, thông qua tham số
và thông qua câu lệnh return

Hạn chế tối đa việc dùng các lệnh
xuất trong hàm
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
20
Danh sách tham số (4)
Ví dụ 1:
int isPrime(int N)
{
int i, flag;
flag = (N<2)?0:1;
for(i=2; flag&&i<N; i++)
if (N%i==0) flag = 0;
return (flag);
}
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014

21
Danh sách tham số (5)
Ví dụ 2:
int isPrime()
{
int N, i, flag;
printf(“Input the number:”);
scanf(“%d”, &N);
flag = (N<2)?0:1;
for(i=2; flag&&i<N; i++)
if (N%i==0) flag = 0;
return (flag);
}
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
22
Danh sách tham số (6)
Ví dụ 3:
void isPrime(int N)
{
int i, flag;
flag = (N<2)?0:1;
for(i=2; flag&&i<N; i++)
if (N%i==0) flag = 0;
if (flag) printf(“%d is prime”,N);
else printf(“%d is not prime”,N);
}
Hàm - CT con
Lập trình C

Wednesday, July 9, 2014
23
Danh sách tham số (7)
Ví dụ 4:
void isPrime()
{
int N, i, flag;
printf(“Input the number:”);
scanf(“%d”, &N);
flag = (N<2)?0:1;
for(i=2; flag&&i<N; i++)
if (N%i==0) flag = 0;
if (flag) printf(“%d is prime”,N);
else printf(“%d is not prime”,N);
}
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
24
Lời gọi hàm

Một lời gọi hàm được thực hiện
bởi:

Nêu tên của hàm cần thực thi.

Truyền cho nó tất cả các tham số
mà nó cần.

Nhận lấy kết quả trả về của hàm

(nếu có)
Hàm - CT con
Lập trình C
Wednesday, July 9, 2014
25
Lời gọi hàm(2)

Một hàm có thể được gọi bởi:

Hàm main()

Một hàm khác

Hàm gọi: hàm gọi thực hiện hàm khác
và nhận kết quả.

Hàm bị gọi: hàm bị hàm khác gọi thực
thi để phục vụ hàm đó

×