Bài giảng Nhập môn Lập trình: Phần 3 - Hàm - Function bao gồm những nội dung về một số nguyên tắc; một số lỗi thường gặp; dạng tổng quát của hàm; truyền tham số cho hàm; truyền giá trị; truyền tham chiếu; phương thức trao đổi dữ liệu. | Hàm - Function Hàm - Function Một số nguyên tắc Cách khai báo và gọi thực hiện Prototype của hàm Truyền tham số cho hàm Biến toàn cục, biến cục bộ, biến static, biến thanh ghi, Cách thức C thực hiện các lời gọi hàm – stack. Một số nguyên tắc Các hàm trong NNLT C đều ngang cấp với nhau: Hàm không được khai báo lồng nhau. Thứ tự khai báo không quan trọng. Hàm có thể nhận và xử lý nhiều tham số hoặc không có tham số nào Hàm có thể trả về một giá trị hoặc không. Biến khai báo trong hàm F chỉ có giá trị trong F, không sử dụng được biến này trong các hàm khác được. Ví dụ: hàm tính xn double Power(double x, int n) { double result; for(result = 1; n; n--) result *= x; return result; } nhận vào 2 tham số khi được gọi kiểu của giá trị trả về giá trị được trả về qua lệnh return Ví dụ: gọi thực hiện hàm Power #include double Power(double, int); int main() { double m = Power(2, 3); printf(“ ^ 4 = %lf”, Power(, 4)); return 0; } Chỉ thị cho chương trình biết prototype của hàm Power và 4: 2 tham số thực sự Một số lỗi thường gặp #include int main() { int m = Power(2, 3); printf(“ ^ 4 = %lf”, Power(4)); return ; } Compiler không hiểu được hàm Power giá trị trả về không khớp kiểu hàm Power thiếu tham số Prototypes Dòng khai báo double Power(double, int); được hiểu là khai báo prototype của hàm Power Được dùng khi chương trình sử dụng một hàm trước khi khai báo. Khai báo prototype thông báo cho trình biên dịch biết kiểu của giá trị trả về và mô tả chi tiết về các tham số của hàm. Các hàm thư viện chuẩn được khai báo prototype trong các tập tin header (, , ). Các hàm do lập trình viên tự xây dựng phải tự khai báo prototype. Hàm: dạng tổng quát kiểu trả về tên hàm(danh sách tham số hình thức) { //khai báo các biến của hàm //các lệnh thực thi return giá trị trả về; //hàm void không có giá trị trả về } header của hàm thân (body) hàm float g=; void main() { int i = 5, j, k = 2; float f = ; d = ; } void F(int v) { double d, e = | Hàm - Function Hàm - Function Một số nguyên tắc Cách khai báo và gọi thực hiện Prototype của hàm Truyền tham số cho hàm Biến toàn cục, biến cục bộ, biến static, biến thanh ghi, Cách thức C thực hiện các lời gọi hàm – stack. Một số nguyên tắc Các hàm trong NNLT C đều ngang cấp với nhau: Hàm không được khai báo lồng nhau. Thứ tự khai báo không quan trọng. Hàm có thể nhận và xử lý nhiều tham số hoặc không có tham số nào Hàm có thể trả về một giá trị hoặc không. Biến khai báo trong hàm F chỉ có giá trị trong F, không sử dụng được biến này trong các hàm khác được. Ví dụ: hàm tính xn double Power(double x, int n) { double result; for(result = 1; n; n--) result *= x; return result; } nhận vào 2 tham số khi được gọi kiểu của giá trị trả về giá trị được trả về qua lệnh return Ví dụ: gọi thực hiện hàm Power #include double Power(double, int); int main() { double m = Power(2, 3); printf(“ ^ 4 = %lf”, Power(, 4)); return 0; } Chỉ thị cho chương trình biết prototype của hàm Power