16 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện 3.3 Truyềnthamsố và trả về kếtquả Truyềnthamsố và trả về kếtquả là phương pháp cơ bản ₫ể tổ chứcquanhệ giữacáchàm(giữacácchứcnăng trong hệ thống) Ngoài ra, còn có các cách khác: —Sử dụng biếntoàncục: nói chung là không nên! —Sử dụng các tệp tin, streams: dù sao vẫnphảisử dụng tham số₫ể nói rõ tệp tin nào, streams nào —Cáccơ chế giao tiếphệ thống khác (phụ thuộcvàohệ₫iều hành, nềntảng và giao thứctruyền thông) => nói chung vẫncần các tham số bổ sung Truyềnthamsố & trả về kếtquả là mộtvấn ₫ề cốtlõitrongxây dựng và sử dụng hàm, mộttrongnhững yếutốảnh hưởng quyết ₫ịnh tớichấtlượng phầnmềm! Hàm A Hàm B Tham số (₫ầu vào) Giá trị trả về hoặc tham số ra Tham số (₫ầu vào) Giá trị trả về hoặc tham số ra a b c d ee 17 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Tham biến hình thức và tham số thựctế int SumInt(int a, int b) { } int x = 5; int k = SumInt(x, 10); int a = 2; k = SumInt(a,x); Tham biến (hình thức) Tham số (thựctế) SumInt a b x 5 k Tham biến Kếtquả trả về (không tên) Biến ₫ượcgán kếtquả trả về 18 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện 3.3.1 Truyềngiátrị int SumInt(int, int); // Function call void main() { int x = 5; int k = SumInt(x, 10); } // Function definition int SumInt(int a, int b) { } SP SP x = 5 k Ngănxếp a = 5 b = 10 k = 45 19 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Thử ví dụ₫ọctừ bàn phím #include <iostream.h> void ReadInt(const char* userPrompt, int N) { cout << userPrompt; cin >> N; } void main() { int x = 5; ReadInt("Input an integer number:", x); cout << "Now x is " << x; } Kếtquả: x không hề thay ₫ổisau₫ó. 20 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Truyềngiátrị Truyềngiátrị là cách thông thường trong C Tham biếnchỉ nhận ₫ượcbảnsaocủabiến ₫ầuvào (tham số thựctế) Thay ₫ổithambiếnchỉ làm thay ₫ổivùngnhớ cụcbộ, không làm thay ₫ổibiến ₫ầuvào Tham biếnchỉ có thể mang tham số₫ầu vào, không chứa ₫ượckếtquả (tham số ra) Truyềngiátrị khá an toàn, tránh ₫ượcmộtsố hiệu ứng phụ Truyềngiátrị trong nhiề utrường hợpkémhiệuquả do mất công sao chép dữ liệu . tớichấtlượng phầnmềm! Hàm A Hàm B Tham số (₫ầu vào) Giá trị trả về hoặc tham số ra Tham số (₫ầu vào) Giá trị trả về hoặc tham số ra a b c d ee 17 © 20 04, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Tham. 16 © 20 04, HOÀNG MINH SƠN Chương 3: Hàm và thư viện 3.3 Truyềnthamsố và trả về kếtquả Truyềnthamsố và trả về kếtquả là phương pháp cơ bản ₫ể tổ chứcquanhệ giữacáchàm(giữacácchứcnăng. hề thay ₫ổisau₫ó. 20 © 20 04, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Truyềngiátrị Truyềngiátrị là cách thông thư ng trong C Tham biếnchỉ nhận ₫ượcbảnsaocủabiến ₫ầuvào (tham số thựctế) Thay