Microsoft PowerPoint IP 06 Function and Organizing of C Program HàmHàm vàvà cáchcách tổtổ chứcchức chươngchương trìnhtrình CC GV GV NguyễnNguyễn Minh Minh HuyHuy chươngchương trìnhtrình CC 1Nhập môn l[.]
Trang 2Nội dung dung
Khái Khái niệm niệm hàm hàm
Truyền Truyền tham tham số số và và tầm tầm vực vực
Tổ Tổ chức chức chương chương trình trình C C.
Trang 3Nội dung dung
Khái Khái niệm niệm hàm hàm
Truyền Truyền tham tham số số và và tầm tầm vực vực
Tổ Tổ chức chức chương chương trình trình C C.
Trang 4Khái niệm niệm hàm hàm
Xét Xét chương chương trình trình sau sau::
Nhập Nhập vào vào 3 3 số số nguyên nguyên a, b, c >= 0 a, b, c >= 0.
Tính Tính và và xuất xuất S = a! + b! + c! S = a! + b! + c!.
Hãy Hãy chỉ chỉ ra ra những những phần phần trùng trùng lắp lắp của của chương chương trình trình
Điểm Điểm yếu yếu của của chương chương trình trình trùng trùng lắp lắp::
Điểm Điểm yếu yếu của của chương chương trình trình trùng trùng lắp lắp::
Tốn Tốn thời thời gian gian, , công công sức sức
Khi Khi có có thay thay đổi đổi sửa sửa nhiều nhiều chỗ chỗ
Viết Viết 1 1 lần lần, , tái tái sử sử dụng dụng lại lại nhiều nhiều lần lần
Trang 7Khái niệm niệm hàm hàm
Hàm Hàm trong trong ngôn ngôn ngữ ngữ C: C:
Một Một khối khối lệnh lệnh được được đặt đặt tên tên
Có Có thể thể gọi gọi từ từ bất bất kỳ kỳ đâu đâu trong trong chương chương trình trình
Có Có thể thể gọi gọi nhiều nhiều lần lần với với tham tham số số khác khác nhau nhau
Cấu Cấu trúc trúc của của hàm hàm::
Đầu vào
PhầnPhần khaikhai báobáo::
Tên Tên hàm hàm
Tham Tham số số đầu đầu vào vào
Kết Kết quả quả đầu đầu ra ra
Đầu ra
Trang 8Khái niệm niệm hàm hàm
Các Các bước bước sử sử dụng dụng hàm hàm trong trong C: C:
Khai Khai báo báo hàm hàm (prototype): (prototype):
Trang 9Khái niệm niệm hàm hàm
Các Các bước bước sử sử dụng dụng hàm hàm trong trong C: C:
{{
/*
/* Viết Viết khai khai báo báo biến biến
Viết Viết lệnh lệnh nhập nhập a, b, c */ a, b, c */
}}
Trang 10Nội dung dung
Khái Khái niệm niệm hàm hàm
Truyền Truyền tham tham số số và và tầm tầm vực vực
Tổ Tổ chức chức chương chương trình trình C C.
Trang 11Truyền tham tham số số và và tầm tầm vực vực
Cách Cách truyền truyền tham tham số số vào vào hàm hàm::
Truyền Truyền tham tham trị trị (pass by value): (pass by value):
TruyềnTruyền giágiá trịtrị vàovào hàmhàm
HàmHàm chỉchỉ nhậnnhận bảnbản saosao củacủa thamtham sốsố
ThamTham sốsố KHÔNG KHÔNG bịbị thaythay đổiđổi sausau khikhi truyềntruyền
ThamTham sốsố: : biếnbiến, , hằnghằng, , biểubiểu thứcthức
ThamTham sốsố: : biếnbiến, , hằnghằng, , biểubiểu thứcthức
dtb dtb = = tinhDTB tinhDTB( van ( van, , toan toan ));;
dtb
dtb = = tinhDTB tinhDTB( 6 ( 6, , 8.5 ) 8.5 );;
dtb dtb = = tinhDTB tinhDTB( van ( van + 1, + 1, toan toan ));;
//
// Biến Biến van, van, toan toan không không thay thay đổi đổi }}
Trang 12Truyền tham tham số số và và tầm tầm vực vực
Cách Cách truyền truyền tham tham số số vào vào hàm hàm::
Truyền Truyền tham tham chiếu chiếu (pass by reference) (C++): (pass by reference) (C++):
CònCòn gọigọi làlà truyềntruyền thamtham biếnbiến
HàmHàm nhậnnhận bảnbản gốcgốc củacủa thamtham sốsố
ThamTham sốsố cócó thểthể BỊ BỊ thaythay đổiđổi sausau khikhi truyềntruyền
ThamTham sốsố chỉchỉ cócó thểthể làlà biếnbiến
ThamTham sốsố chỉchỉ cócó thểthể làlà biếnbiến
KhaiKhai báobáo thamtham sốsố: : & &<<têntên thamtham sốsố>.>
dtb dtb = = tinhDTB tinhDTB( van ( van, , toan toan ));;
//
// Biến Biến van van bị bị thay thay đổi đổi
dtb dtb = = tinhDTB tinhDTB( 6 ( 6, , 8.5 ) 8.5 );; // //Sai Sai dtb
dtb = = tinhDTB tinhDTB(van + 1, (van + 1, toan toan)); //; //Sai Sai }}
Trang 13Truyền tham tham số số và và tầm tầm vực vực
Cách Cách truyền truyền tham tham số số vào vào hàm hàm::
printf
printf(“ (“Nhap Nhap diem diem toan toan = “); = “);
scanf scanf(“%d”, &(“%d”, &diem2 diem2););
dtb dtb = (van + = (van + toan toan) / 5; ) / 5;
}}
{{
int van, van, toan toan;;
float float dtb dtb;;
// van, // van, toan toan thay thay đổi đổi
nhapDiem nhapDiem(van, (van, toan toan); );
//
// dtb dtb thay thay đổi đổi
tinhDTB tinhDTB(van, (van, toan toan, , dtb dtb); );
}}
Trang 14Truyền tham tham số số và và tầm tầm vực vực
Tầm Tầm vực vực::
Phạm Phạm vi vi hoạt hoạt động động của của biến biến và và hàm hàm
Phân Phân loại loại::
ToànToàn cụccục: : hoạthoạt độngđộng trêntrên toàntoàn chươngchương trìnhtrình
CụcCục bộbộ: : hoạthoạt độngđộng trongtrong mộtmột khốikhối lệnhlệnh
Hàm Hàm p phạm hạm vi vi toàn toàn cục cục
Hàm Hàm p phạm hạm vi vi toàn toàn cục cục
Biến Biến::
BiếnBiến toàntoàn cụccục: : khaikhai báobáo ngoàingoài hàmhàm ((kểkể cảcả hàmhàm main).main)
HoạtHoạt độngđộng trêntrên toàntoàn chươngchương trìnhtrình
BiếnBiến cụccục bộbộ: : khaikhai báobáo trongtrong thânthân hàmhàm hoặchoặc khốikhối lệnhlệnh
HoạtHoạt độngđộng trongtrong thânthân hàmhàm hoặchoặc khốikhối lệnhlệnh
Trang 15Truyền tham tham số số và và tầm tầm vực vực
Tầm Tầm vực vực::
Trang 16Nội dung dung
Khái Khái niệm niệm hàm hàm
Truyền Truyền tham tham số số và và tầm tầm vực vực
Tổ Tổ chức chức chương chương trình trình C C.
Trang 17Tổ chức chức chương chương trình trình C C
Một Một quyển quyển sách sách được được tổ tổ chức chức thế thế nào nào? ?
Không Không thể thể viết viết tất tất cả cả trên trên một một trang trang giấy giấy!! !!
Trang 18Tổ chức chức chương chương trình trình C C
Cách Cách tổ tổ chức chức chương chương trình trình C: C:
Tổ Tổ chức chức giống giống một một quyển quyển sách sách
CácCác chươngchương ~ ~ cáccác file file mãmã nguồnnguồn
}
void xuat() {
}
// File xuly.cpp
int tinhToan1() {
}
int tinhToan2() {
}
Trang 19Tổ chức chức chương chương trình trình C C
Kết Kết nối nối các các file file mã mã nguồn nguồn trong trong chương chương trình trình
Làm Làm mã mã nguồn nguồn trên trên các các file file hiểu hiểu lẫn lẫn nhau nhau
Có Có đuôi đuôi file file h h
Cách Cách sử sử dụng dụng::
TạoTạo file file h h chocho file file mãmã nguồnnguồn cpp cpp
File File h h chỉchỉ chứachứa khai khai báo báo hàmhàm vàvà biếnbiến
File File cpp cpp chỉchỉ chứachứa cài cài đặt đặt hàmhàm
ĐểĐể A.cpp A.cpp hiểuhiểu mãmã nguồnnguồn củacủa B.cppB.cpp
TrongTrong A.cpp A.cpp dùngdùng #include #include “ “<<ĐườngĐường dẫndẫn B.hB.h>>” ”
Trang 20void xuat();
// File xuly.h
// Khai báo hàm int tinhToan1();
}
void xuat() {
}
// File xuly.cpp
int tinhToan1() {
}
int tinhToan2() {
}
Trang 21Tổ chức chức chương chương trình trình C C
Phương Phương pháp pháp ““chia chia để để trị trị”: ”:
Làm Làm sao sao để để ăn ăn hết hết một một con con bò bò? ?
““Nhai Nhai, , nuốt nuốt” ” được được
Để Để viết viết một một chương chương trình trình::
ChiaChia thànhthành từngtừng hàmhàm nhỏnhỏ
XửXử lýlý từngtừng hàmhàm
MỗiMỗi hàmhàm tốitối đađa 10 10 câucâu lệnhlệnh
Trang 22Tổ chức chức chương chương trình trình C C
Cây Cây phân phân rã rã chương chương trình trình::
Nhập Nhập vào vào 3 3 số số nguyên nguyên a, b, c >= 0 a, b, c >= 0.
Trang 23void nhap3so(int a, int b, int c);
long tinhTGT(int a, int b, int c);
void xuatKQ(long ketqua);
return tinhGT(a) + tinhGT(b) + tinhGT(c);
} void xuat(long ketqua) {
printf(“S = %ld”, ketqua);
}
do {
printf(“Nhap 1 so = “); scanf(“%d”, &x);
} while (x < 0);
}
long tinhGT(int n) {
Trang 24Tóm tắt tắt
Khái Khái niệm niệm hàm hàm::
Một Một khối khối lệnh lệnh được được đặt đặt tên tên
Có Có thể thể gọi gọi từ từ nhiều nhiều nơi nơi trong trong chương chương trình trình
Cách Cách truyền truyền tham tham số số::
Cách Cách thức thức đưa đưa giá giá trị trị từ từ bên bên ngoài ngoài vào vào hàm hàm
Cách Cách thức thức đưa đưa giá giá trị trị từ từ bên bên ngoài ngoài vào vào hàm hàm
Truyền Truyền tham tham trị trị::
TruyềnTruyền giágiá trịtrị vàovào hàmhàm
ThamTham sốsố: : biếnbiến, , hằnghằng, , biểubiểu thứcthức
Truyền Truyền tham tham chiếu chiếu::
TruyềnTruyền biếnbiến vàovào hàmhàm
ThamTham sốsố: : biếnbiến
Trang 25File File đuôiđuôi h, h, dùngdùng kếtkết nốinối cáccác file file mãmã nguồnnguồn
A.cpp A.cpp muốnmuốn hiểuhiểu B.cpp B.cpp #include “#include “B.hB.h””
““Chia Chia để để trị trị”: ”:
ChiaChia chươngchương trìnhtrình thànhthành cáccác hàmhàm
MỗiMỗi hàmhàm nênnên tốitối đađa 10 10 câucâu lệnhlệnh
CâyCây phânphân rãrã chươngchương trìnhtrình
Trang 26Bài tập tập
Bài Bài tập tập 6.1: 6.1:
Viết
Viết chươngchương trìnhtrình C C tìmtìm sốsố nguyênnguyên tốtố nhưnhư sausau::
((tổtổ chứcchức theotheo dạngdạng hàmhàm vàvà chiachia làmlàm nhiềunhiều file):file):
NhậpNhập vàovào sốsố nguyênnguyên N >= 0.N >= 0
TìmTìm vàvà xuấtxuất tấttất cảcả cáccác sốsố nguyênnguyên tốtố <= N.<= N
Trang 27Bài tập tập
Bài Bài tập tập 6.2: 6.2:
Viết
Viết chươngchương trìnhtrình C C tínhtính toántoán trêntrên phânphân sốsố nhưnhư sausau::
((tổtổ chứcchức theotheo dạngdạng hàmhàm vàvà chiachia làmlàm nhiềunhiều file):file):
NhậpNhập vàovào 2 2 phânphân sốsố a/b a/b vàvà c/d.c/d
NhậpNhập vàovào phépphép tínhtính (+, (+, , *, /)., *, /)
ThựcThực hiệnhiện phépphép tínhtính trêntrên 2 2 phânphân sốsố vàvà xuấtxuất kếtkết quảquả
ThựcThực hiệnhiện phépphép tínhtính trêntrên 2 2 phânphân sốsố vàvà xuấtxuất kếtkết quảquả
Trang 28Bài tập tập
Bài Bài tập tập 6.3: 6.3:
Viết
Viết chươngchương trìnhtrình C C phânphân loạiloại tam tam giácgiác nhưnhư sausau::
((tổtổ chứcchức theotheo dạngdạng hàmhàm vàvà chiachia làmlàm nhiềunhiều file):file):
NhậpNhập vàovào 3 3 sốsố thựcthực a, b, c >= 0.a, b, c >= 0
KiểmKiểm tratra xemxem a, b, c a, b, c cócó làlà 3 3 cạnhcạnh củacủa mộtmột tam tam giácgiác
NếuNếu abcabc làlà tam tam giácgiác, , hãyhãy chocho biếtbiết đóđó làlà tam tam giácgiác gìgì
NếuNếu abcabc làlà tam tam giácgiác, , hãyhãy chocho biếtbiết đóđó làlà tam tam giácgiác gìgì
Trang 29Bài tập tập
Bài Bài tập tập 6.4: 6.4:
Viết
Viết chươngchương trìnhtrình C C tínhtính tiềntiền điệnđiện nhưnhư sausau::
((tổtổ chứcchức theotheo dạngdạng hàmhàm vàvà chiachia làmlàm nhiềunhiều file):file):
NhậpNhập vàovào chỉchỉ sốsố điệnđiện cũcũ vàvà chỉchỉ sốsố điệnđiện mớimới ((theotheo kWh) >= 0.kWh) >= 0
TínhTính tiềntiền điệnđiện vàvà xuấtxuất kếtkết quảquả
Biết
Biết rằngrằng::
Biết
Biết rằngrằng::
100 kWh 100 kWh đầuđầu tiêntiên cócó đơnđơn giágiá 1242đ.1242đ
CácCác kWh kWh từtừ 101 101 đếnđến 150 150 cócó đơnđơn giágiá 1304đ.1304đ
CácCác kWh kWh từtừ 151 151 đếnđến 200 200 cócó đơnđơn giágiá 1651đ.1651đ
CácCác kWh kWh từtừ 201 201 đếnđến 300 300 cócó đơnđơn giágiá 1788đ.1788đ
CácCác kWh kWh từtừ 301 301 đếnđến 400 400 cócó đơnđơn giágiá 1912đ.1912đ
CácCác kWh kWh từtừ 401 401 trởtrở lênlên cócó đơnđơn giágiá 1962đ.1962đ
Trang 30Bài tập tập
Bài Bài tập tập 6.5: 6.5:
Viết
Viết chươngchương trìnhtrình C C mômô phỏngphỏng menu menu lựalựa chọnchọn nhưnhư sausau::
((tổtổ chứcchức theotheo dạngdạng hàmhàm vàvà chiachia làmlàm nhiềunhiều file):file):
XuấtXuất rara menu menu nhưnhư sausau::
+ + TrởTrở lạilại menu menu đểđể lựalựa chọnchọn tiếptiếp
LựaLựa chọnchọn làlà 5: 5: kếtkết thúcthúc chươngchương trìnhtrình