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.
ꢀ 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
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 );
<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();
{
// 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 đủ
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:
bai_giang_nhap_mon_lap_trinh_chuong_6_ham_va_cach_to_chuc_ch.pdf

