Thông tin tài liệu:
Trong chương 3 chúng ta sẽ tìm hiểu về hàm. Hàm là một khối lệnh thực hiện một công việc hoàn chỉnh (module), được đặt tên và được gọi thực thi nhiều lần tại nhiều vị trí trong chương trình. Hàm còn gọi là chương trình con (subroutine). Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Nhập môn lập trình C - Chương 3: HàmKhái niệm Hàm là một khối lệnh thực hiện một công việc hoàn chỉnh (module), được đặt tên và được gọi thực thi nhiều lần tại nhiều vị trí trong chương trình. Hàm còn gọi là chương trình con (subroutine) Hàm có thể được gọi từ chương trình chính (hàm main) hoặc từ 1 hàm khác. Hàm có giá trị trả về hoặc không. Nếu hàm không có giá trị trả về gọi là thủ tục (procedure)Khái niệm Có hai lọai hàm: Hàm thư viện: là những hàm đã được xây dựng sẵn. Muốn sử dụng các hàm thư viện phải khai báo thư viện chứa nó trong phần khai báo #include. Hàm do người dùng định nghĩa.Dạng tổng quát của hàm Hàm do người dùng định nghĩa returnType functionName(parameterList) { body of the function } returnType: Kiểu dữ liệu của giá trị trả về bởi hàm. Nếu hàm không trả về giá trị thì returnType là void. parameterList: Danh sách các tham số hình thức phân cách nhau bởi dấu phẩyDạng tổng quát của hàm Ví dụ: int max(int a, int b) { if(aGọi hàm Hàm khi đã định nghĩa nhưng chúng vẫn chưa được thực thi, hàm chỉ được thực thi khi được gọi. Cú pháp gọi hàm: ([Danh sách các tham số])Gọi hàm Ví dụ: Gọi hàm trong chương trình chính: void main() { int a, b, m; printf(“ a=“); scanf(“%d”,&a); printf(“ b=“); scanf(“%d”,&b); m=max(a, b); printf (“so lon nhat la: %d”, m); }Nguyên tắc hoạt động của hàm Hàm có thể được gọi từ nhiều vị trí khác nhau trong chương trình. Khi hàm được gọi, khối lệnh tương ứng của hàm được thực thi. Sau khi thực hiện xong, quyền điều khiển được trả về cho chương trình gọi.Nguyên tắc hoạt động của hàmvoid main() int uscln(int a, int b){ { int a, b, USC; a=abs(a); printf(“a=“); scanf(“%d”,&a); b=abs(b); printf(“b=“); scanf(“%d”,&b); while(a!=b) USC = uscln(a,b); { if(a>b) a-=b; printf (“USC lon nhat la: ”,USC); else b-=a;} } return a;}Tham số hình thức và tham số thực Đối với hàm có đối số (arguments), khi thực thi hàm cần khai báo danh sách các tham số để nhận giá trị từ chương trình gọi. Các tham số này được gọi là tham số hình thức Ví dụ: int min( int a, int b) { Tham số hình thức if(aTham số hình thức và tham số thực Khi gọi hàm, phải cung cấp các giá trị thật, các giá trị này được sao chép vào các tham số hình thức, các giá trị thật được gọi là tham số thực. Ví dụ: Để tìm giá trị nhỏ nhất của 2 số 5 và 6, bằng cách gọi hàm min(5, 6) Tham số thực min(int a, int b)Tham số hình thức và tham số thực Có hai cách truyền đối số vào tham số hình thức: Truyền tham trị: Sao chép giá trị của đối số vào tham số hình thức của hàm. Những thay đổi của tham số không ảnh hưởng đến giá trị của đối số Truyền tham biến Sao chép địa chỉ của đối số vào tham số hình thức. Do đó, những thay đổi đối với tham số sẽ có tác dụng trên đối sốTham số là tham chiếu Tham số làm kết quả đầu ra Tham số vừa làm đầu vào và đầu ra Dùng dấu & phía trước tên tham số khi cài đặt hàmTham số hình thức và tham số thực Ví dụ: void double(int a) { a = a*2; printf(“gia tri cua a trong ham double:%d“,a); } void main() { int a=40; double(a); printf(“
Gia tri cua a trong ham main: %d”, a); }Tham số hình thức và tham số thực Ví dụ: Khi gọi hàm double(&a); Địa chỉ của a truyền vào cho tham số hình thức của hàm: double(int &b) void double(int &b) { b *= 2; printf(“Trong hàm double a = %d“, b); } Ví dụ: viết chương trình hoán vị hai số nguyên a và b nhập từ bàn phímDùng tham chiếuPrototype (nguyên mẫu)của hàm Chương trình bắt buộc phải có prototype của hàm hoặc phải bắt buộc viết định nghĩa của hàm trước khi gọi. Prototype để loại trừ việc bắt buộc phải định nghĩa hàm trước khi gọi. Prototype khai báo giống như header của hàm Sau khi đã sử dụng prototype của hàm, ta có thể viết định nghĩa chi tiết hàm ở bất kỳ vị trí nào trong chương trìnhPrototype (nguyên mẫu)của hàm #include // Khai báo thư viện iostream.h Ví dụ: int max(int x, int y);// khai báo nguyên mẫu hàm max void main()//hàm main (sẽ gọi các hàm thực hiện) { int a, b;// khai báo biến printf(“ a=“); scanf(“%d”,&a); printf(“ b=“); scanf(“%d ...