Bài giảng Nhập môn lập trình - Chương 6: Hàm và cách tổ chức chương trình C - Nguyễn Minh Huy

Hàm và cách tꢀ chꢁc  
chương trình C  
GV. Nguyꢀn Minh Huy  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
1
Nꢃi dung  
ꢀ Khái niꢄm hàm.  
ꢀ Truyꢅn tham sꢆ và tꢇm vꢈc.  
ꢀ Tꢉ chꢊc chương trình C.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
2
Nꢃi dung  
ꢀ Khái niꢂm hàm.  
ꢀ Truyꢅn tham sꢆ và tꢇm vꢈc.  
ꢀ Tꢉ chꢊc chương trình C.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
3
Khái niꢄm hàm  
ꢀ Xét chương trình sau:  
ꢀ Nhꢁp vào 3 sꢆ nguyên a, b, c >= 0.  
ꢀ Tính và xuꢋt S = a! + b! + c!.  
ꢁ Hãy chꢌ ra nhꢍng phꢇn trùng lꢎp cꢏa chương trình.  
ꢀ
Điꢐm yꢑu cꢏa chương trình trùng lꢎp:  
ꢀ Tꢆn thꢒi gian, công sꢊc.  
ꢀ Khi có thay đꢉi ꢂ sꢓa nhiꢅu chꢔ.  
ꢁ Viꢑt 1 lꢇn, tái sꢓ dꢕng lꢖi nhiꢅu lꢇn.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
4
Khái niꢄm hàm  
ꢀ Phương pháp đꢗt hàm:  
ꢂ B0: Đꢗt F(x) như sau:  
ꢂ B0.1: Đꢗt T = 1.  
ꢂ B0.2: Nꢑu x > 0  
T = T * x.  
ꢂ B1: S1 = 1.  
ꢂ B2: Nꢑu a > 0  
S1 = S1 * a.  
a = a – 1.  
x = x – 1.  
Quay lꢖi B0.2.  
Quay lꢖi B2.  
ꢂ B3: S2 = 1.  
ꢂ B4: Nꢑu b > 0  
S2 = S2 * b.  
b = b – 1.  
ꢂ B1: S1 = F(a).  
ꢂ B2: S2 = F(b).  
Quay lꢖi B4.  
ꢂ B3: S3 = F(c).  
ꢂ B5: S3 = 1.  
ꢂ B6: Nꢑu c > 0  
S3 = S3 * c.  
ꢂ B4: S = S1 + S2 + S3.  
c = c – 1.  
Quay lꢖi B6.  
ꢂ B7: S = S1 + S2 + S3.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
5
Khái niꢄm hàm  
ꢀ Phương pháp đꢗt hàm:  
Đꢗt F(x)  
đúng  
S1 = S1 * a  
a > 0  
S1 = F(a)  
S2 = F(b)  
a = a ꢂ 1  
sai  
đúng  
T = T * x  
x = x ꢂ 1  
x > 0  
sai  
đúng  
đúng  
S2 = S2 * b  
b = b ꢂ 1  
b > 0  
sai  
S3 = F(c)  
S = S1 + S2 + S3  
S3 = S3 * c  
c = c ꢂ 1  
c > 0  
sai  
S = S1 + S2 + S3  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
6
Khái niꢄm hàm  
ꢀ Hàm trong ngôn ngꢍ C:  
ꢀ Mꢃt khꢆi lꢄnh đưꢘc đꢗt tên.  
ꢀ Có thꢐ gꢙi tꢚ bꢋt kỳ đâu trong chương trình.  
ꢀ Có thꢐ gꢙi nhiꢅu lꢇn vꢛi tham sꢆ khác nhau.  
ꢀ Cꢋu trúc cꢏa hàm:  
Đꢇu vào  
ꢃ Phꢇn khai báo:  
Đꢇu ra  
ꢃ Tên hàm.  
Tên hàm  
ꢃ Tham sꢆ đꢇu vào.  
ꢃ Kꢑt quꢜ đꢇu ra.  
ꢁ Đꢝnh danh hàm.  
Thân hàm  
ꢃ Phꢇn cài đꢗt: thân hàm.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
7
Khái niꢄm hàm  
ꢀ Các bưꢛc sꢓ dꢕng hàm trong C:  
ꢀ Khai báo hàm (prototype):  
<Kiꢀu trꢁ vꢂ> <Tên hàm>( <Khai báo tham sꢃ> );  
<Kiꢐu trꢜ vꢅ>: int, float, char, ꢞ, void (không trꢜ vꢅ).  
float tinhDTB( float van, float toan );  
ꢀ
Cài đꢗt hàm:  
<Kiꢀu trꢁ vꢂ> <Tên hàm>( <Khai báo tham sꢃ> )  
{
[Các câu lꢄnh]  
[return <giá trꢄ trꢁ vꢂ>;]  
}
ꢀ Gꢙi thꢈc hiꢄn hàm:  
<Tên hàm>( <Các tham sꢃ> );  
float dtb = tinhDTB(7, 8.5);  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
8
Khái niꢄm hàm  
ꢀ Các bưꢛc sꢓ dꢕng hàm trong C:  
// Cài đꢗt hàm.  
#include <stdio.h>  
long tinhGT(int n)  
{
// Khai báo hàm.  
long s = 1;  
for ( ; n > 0; nꢂꢂ)  
s = s * n;  
long tinhGT(int n);  
void main()  
{
return s;  
}
/* Viꢑt khai báo biꢑn.  
Viꢑt lꢄnh nhꢁp a, b, c. */  
// Gꢙi thꢈc hiꢄn hàm.  
S1 = tinhGT(a);  
S2 = tinhGT(b);  
S3 = tinhGT(c);  
S = S1 + S2 + S3;  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
9
Nꢃi dung  
ꢀ Khái niꢄm hàm.  
ꢀ Truyꢃn tham sꢄ và tꢅm vꢆc.  
ꢀ Tꢉ chꢊc chương trình C.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
10  
Truyꢅn tham sꢆ và tꢇm vꢈc  
ꢀ Cách truyꢅn tham sꢆ vào hàm:  
ꢀ Truyꢅn tham trꢝ (pass by value):  
ꢃ Truyꢅn giá trꢝ vào hàm.  
ꢃ Hàm chꢌ nhꢁn bꢜn sao cꢏa tham sꢆ.  
ꢃ Tham sꢆ KHÔNG bꢝ thay đꢉi sau khi truyꢅn.  
ꢃ Tham sꢆ: biꢑn, hꢟng, biꢐu thꢊc.  
void main()  
float tinhDTB( float van, float toan )  
{
{
float van, toan, dtb;  
van = van * 2;  
toan = toan * 3;  
return (van + toan) / 5;  
}
dtb = tinhDTB( van, toan );  
dtb = tinhDTB( 6, 8.5 );  
dtb = tinhDTB( van + 1, toan );  
// Biꢑn van, toan không thay đꢉi.  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
11  
Truyꢅn tham sꢆ và tꢇm vꢈc  
ꢀ Cách truyꢅn tham sꢆ vào hàm:  
ꢀ Truyꢅn tham chiꢑu (pass by reference) (C++):  
ꢃ Còn gꢙi là truyꢅn tham biꢑn.  
ꢃ Hàm nhꢁn bꢜn gꢆc cꢏa tham sꢆ.  
ꢃ Tham sꢆ có thꢐ Bꢠ thay đꢉi sau khi truyꢅn.  
ꢃ Tham sꢆ chꢌ có thꢐ là biꢑn.  
ꢃ Khai báo tham sꢆ: &<tên tham sꢆ>.  
void main()  
float tinhDTB( float &van, float toan )  
{
{
float van, toan, dtb;  
van = van * 2;  
toan = toan * 3;  
return (van + toan) / 5;  
}
dtb = tinhDTB( van, toan );  
// Biꢑn van bꢝ thay đꢉi.  
dtb = tinhDTB( 6, 8.5 );  
//Sai  
dtb = tinhDTB(van + 1, toan); //Sai  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
12  
Truyꢅn tham sꢆ và tꢇm vꢈc  
ꢀ Cách truyꢅn tham sꢆ vào hàm:  
ꢀ Ghi chú:  
ꢃ Dùng truyꢅn tham chiꢑu đꢐ trꢜ vꢅ giá trꢝ.  
ꢁ Hàm có nhiꢅu giá trꢝ trꢜ vꢅ.  
void nhapDiem( float &diem1, float &diem2 ) void main()  
{
{
printf(“Nhap diem van = “);  
scanf(“%d”, &diem1);  
int van, toan;  
float dtb;  
printf(“Nhap diem toan = “);  
scanf(“%d”, &diem2);  
// van, toan thay đꢉi  
}
nhapDiem(van, toan);  
void tinhDTB( float van, float toan, float &dtb )  
{
// dtb thay đꢉi  
tinhDTB(van, toan, dtb);  
van = van * 2;  
toan = toan * 3;  
}
dtb = (van + toan) / 5;  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
13  
Truyꢅn tham sꢆ và tꢇm vꢈc  
ꢀ Tꢇm vꢈc:  
ꢀ Phꢖm vi hoꢖt đꢃng cꢏa biꢑn và hàm.  
ꢀ Phân loꢖi:  
ꢃ Toàn cꢕc: hoꢖt đꢃng trên toàn chương trình.  
ꢃ Cꢕc bꢃ: hoꢖt đꢃng trong mꢃt khꢆi lꢄnh.  
ꢀ Hàm ꢂ phꢖm vi toàn cꢕc.  
ꢀ Biꢑn:  
ꢃ Biꢑn toàn cꢕc: khai báo ngoài hàm (kꢐ cꢜ hàm main).  
ꢁ Hoꢖt đꢃng trên toàn chương trình.  
ꢃ Biꢑn cꢕc bꢃ: khai báo trong thân hàm hoꢗc khꢆi lꢄnh.  
ꢁ Hoꢖt đꢃng trong thân hàm hoꢗc khꢆi lꢄnh.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
14  
Truyꢅn tham sꢆ và tꢇm vꢈc  
ꢀ Tꢇm vꢈc:  
float S;  
// Khai báo biꢑn toàn cꢕc.  
// Khai báo hàm.  
int tinh();  
void main()  
{
int a = S + tinh();  
while (a > 0)  
{
// Biꢑn cꢕc bꢃ hàm main.  
// Biꢑn cꢕc bꢃ vòng lꢗp.  
int b = S + tinh();  
}
}
int hamXYZ()  
{
int y = S * 2;  
// Biꢑn cꢕc bꢃ hàm tinh.  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
15  
Nꢃi dung  
ꢀ Khái niꢄm hàm.  
ꢀ Truyꢅn tham sꢆ và tꢇm vꢈc.  
ꢀ Tꢀ chꢁc chương trình C.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
16  
Tꢉ chꢊc chương trình C  
ꢀ Mꢃt quyꢐn sách đưꢘc tꢉ chꢊc thꢑ nào?  
ꢀ Không thꢐ viꢑt tꢋt cꢜ trên mꢃt trang giꢋy!!  
ꢁ Chia làm nhiꢅu chương.  
ꢁ Có mꢕc lꢕc ꢡ đꢇu.  
ꢁ Nꢃi dung các chương ꢡ sau.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
17  
Tꢉ chꢊc chương trình C  
ꢀ Cách tꢉ chꢊc chương trình C:  
ꢀ Tꢉ chꢊc giꢆng mꢃt quyꢐn sách.  
ꢃ Các chương ~ các file mã nguꢢn.  
ꢃ Mꢕc lꢕc ~ hàm main.  
ꢁ Làm sao kꢑt nꢆi các file mã nguꢢn?  
// File main.cpp  
// File nhapxuat.cpp  
// File xuly.cpp  
void main()  
{
void nhap()  
{
}
int tinhToan1()  
{
}
nhap();  
tinhToan1();  
tinhToan2();  
xuat();  
void xuat()  
{
}
int tinhToan2()  
{
}
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
18  
Tꢉ chꢊc chương trình C  
ꢀ Header file:  
ꢀ Kꢑt nꢆi các file mã nguꢢn trong chương trình.  
ꢀ Làm mã nguꢢn trên các file hiꢐu lꢣn nhau.  
ꢀ Có đuôi file .h.  
ꢀ Cách sꢓ dꢕng:  
ꢃ Tꢖo file .h cho file mã nguꢢn .cpp.  
ꢃ File .h chꢌ chꢊa khai báo hàm và biꢑn.  
ꢃ File .cpp chꢌ chꢊa cài đꢇt hàm.  
ꢃ Đꢐ A.cpp hiꢐu mã nguꢢn cꢏa B.cpp  
ꢁ Trong A.cpp dùng #include “<Đưꢒng dꢣn B.h>”  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
19  
Tꢉ chꢊc chương trình C  
ꢀ Header file:  
// File nhapxuat.h  
// File xuly.h  
// File main.cpp  
// Khai báo hàm  
// Khai báo hàm  
#include “nhapxuat.h”  
#include “xuly.h”  
void nhap();  
void xuat();  
int tinhToan1();  
int tinhToan2();  
void main()  
{
// File nhapxuat.cpp  
// File xuly.cpp  
nhap();  
tinhToan1();  
tinhToan2();  
xuat();  
void nhap()  
{
}
int tinhToan1()  
{
}
}
void xuat()  
int tinhToan2()  
{
}
{
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
20  
Tải về để xem bản đầy đủ
pdf 30 trang myanh 25080 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình - Chương 6: Hàm và cách tổ chức chương trình C - Nguyễn Minh Huy", để 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:

  • pdfbai_giang_nhap_mon_lap_trinh_chuong_6_ham_va_cach_to_chuc_ch.pdf