Danh mục tài liệu

Giáo trình Lập trình căn bản (Nghề: Lập trình máy tính - Trình độ CĐ/TC): Phần 2 - Trường Cao đẳng Nghề An Giang

Số trang: 43      Loại file: pdf      Dung lượng: 525.06 KB      Lượt xem: 22      Lượt tải: 0    
Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mục tiêu của giáo trình Lập trình căn bản là phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì), xác định dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán; Thiết kế chương trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích. Mời các bạn cùng tham khảo nội dung phần 2 giáo trình dưới đây!
Nội dung trích xuất từ tài liệu:
Giáo trình Lập trình căn bản (Nghề: Lập trình máy tính - Trình độ CĐ/TC): Phần 2 - Trường Cao đẳng Nghề An Giang CHƢƠNG 5 HÀM Giới thiệu Một chƣơng trình viết trong ngôn ngữ C là một dãy các hàm. Hàm chia các bài toán lớn thành các công việc nhỏ hơn, giúp thực hiện những công việc lặp lại nào đó một cách nhanh chóng mà không phải viết lại đoạn chƣơng trình. Bài này sẽ trình bày cách viết chƣơng trình theo cấu trúc hàm, cách truyền tham số cho hàm trong lập trình, sử dụng đệ qui trong lập trình Mục tiêu - Viết chƣơng trình theo cấu trúc hàm - Vận dụng các cách truyền tham số cho hàm trong lập trình - Sử dụng đệ qui trong lập trình Nội dung chính I. KHÁI NIỆM Một chƣơng trình viết trong ngôn ngữ C là một dãy các hàm, trong đó có một hàm chính (hàm main()). Hàm chia các bài toán lớn thành các công việc nhỏ hơn, giúp thực hiện những công việc lặp lại nào đó một cách nhanh chóng mà không phải viết lại đoạn chƣơng trình. Thứ tự các hàm trong chƣơng trình là bất kỳ, song chƣơng trình bao giờ cũng đi thực hiện từ hàm main() II. KHAI BÁO HÀM type tên hàm (khai báo các đối số) { Khai báo các biến cục bộ Các câu lệnh [return[biểu thức];] } Dòng tiêu đề: Trong dòng đầu tiên của hàm chứa các thông tin về: kiểu hàm, tên hàm, kiểu và tên mỗi đối. Ví dụ: float max3s(float a, float b, float c) khai báo các đối có dạng: 57 Kiểu đối 1 tên đối 1, kiểu đối 2 tên đối 2,..., kiểu đối n tên đối n Thân hàm: Sau dòng tiêu đề là thân hàm. Thân hàm là nội dung chính của hàm bắt đầu và kết thúc bằng các dấu { }. Trong thân hàm chứa các câu lệnh cần thiết để thực hiện một yêu cầu nào đó đã đề ra cho hàm. Thân hàm có thể sử dụng một câu lệnh return, có thể dùng nhiều câu lệnh return ở các chỗ khác nhau, và cũng có thể không sử dụng câu lệnh này. Dạng tổng quát của nó là: return [biểu thức]; Giá trị của biểu thức trong câu lệnh return sẽ đƣợc gán cho hàm. Ví dụ: Xét bài toán: Tìm giá trị lớn nhất của ba số mà giá trị mà giá trị của chúng đƣợc đƣa vào bàn phím. Xây dựng chƣơng trình và tổ chức thành hai hàm: Hàm main() và hàm max3s. Nhiệm vụ của hàm max3s là tính giá trị lớn nhất của ba số đọc vào, giả sử là a,b,c. Nhiệm vụ của hàm main() là đọc ba giá trị vào từ bàn phím, rồi dùng hàm max3s để tính nhƣ trên, rồi đƣa kết quả ra màn hình. Chƣơng trình đƣợc viết nhƣ sau: #include float max3s(float a,float b,float c); /* Nguyên mẫu hàm*/ void main() { float x,y,z; printf(\n Vao ba so x,y,z:); scanf(%f%f%f,&x&y&z); printf(\n Max cua ba so x=%8.2f y=%8.2f z=%8.2f la: %8.2f, x,y,z,max3s(x,y,z)); } /* Kết thúc hàm main*/ float max3s(float a,float b,float c) { float max; max=a; 58 if (max Khi hàm khai báo không có kiểu ở trƣớc nó thì nó đƣợc mặc định là kiểu int. Không nhất thiết phải khai báo nguyên mẫu hàm. Nhƣng nói chung nên có vì nó cho phép chƣơng trình biên dịch phát hiện lỗi khi gọi hàm hay tự động việc chuyển dạng. Nguyên mẫu của hàm thực chất là dòng đầu tiên của hàm thêm vào dấu ;. Tuy nhiên trong nguyên mẫu có thể bỏ tên các đối. Hàm thƣờng có một vài đối. Ví dụ nhƣ hàm max3s có ba đối là a,b,c. cả ba đối này đều có giá trị float. Tuy nhiên, cũng có hàm không đối nhƣ hàm main. Hàm thƣờng cho ta một giá trị nào đó. Lẽ dĩ nhiên giá trị của hàm phụ thuộc vào giá trị các đối. III. KẾT QUẢ TRẢ VỀ CỦA HÀM - Hàm có thể nhận một hoặc nhiều giá trị đầu vào và trả về một giá trị thuộc kiểu dữ liệu nào đó. Kiểu dữ liệu đƣợc trả về của hàm đƣợc khai báo ở type. - Hàm có thề có hoặc không có giá trị trả về. Nếu hàm không có nhận giá trị đầu vào và không có giá trị trả về thì ở khai báo bằng từ khóa void. - Các biến hoặc biểu thức cung cấp giá trị đầu vào cho hàm đƣợc gọi là đối số. Hàm có thể thay đổi các đối số của nó. IV. CÁCH TRUYỀN THAM SỐ CHO HÀM Cho đến nay, trong tất cả các hàm chúng ta đã biết, tất cả các tham số truyền cho hàm đều đƣợc truyền theo giá trị. Điều này có nghĩa là khi chúng ta gọi hàm với các tham số, những gì chúng ta truyền cho hàm là các giá trị chứ không phải bản thân các biến. Ví dụ, giả sử chúng ta gọi hàm addition nhƣ sau: int x=5, y=3, z; z = addition ( x , y ); Trong trƣờng hợp này khi chúng ta gọi hàm addition thì các giá trị 5 and 3 đƣợc truyền cho hàm, không phải là bản thân các biến Điều đáng nói ở đây là khi chúng ta thay đổi giá trị của các biến a hay b bên trong hàm thì các biến x và y vẫn không thay đổi vì chúng đâu có đƣợc truyền cho hàm chỉ có giá trị của chúng đƣợc truyền mà thôi. 60 Hãy xét trƣờng hợp cần thao tác với một biến ngoài ở bên trong một hàm. Vì vậy ta sẽ phải truyền tham số dƣới dạng tham số biến nhƣ ở trong hàm duplicate trong ví dụ dƣới đây: // passing parameters by reference x=2, y=6, z=14 #include void duplicate (int& a, int& b, int& c) { a*=2; b*=2; c*=2; } int main () { int x=1, y=3, z=7; duplicate (x, y, z); cout Trong ví dụ trên, chúng ta đã liên kết a, b và c với các tham số khi gọi hàm (x, y và z) và mọi sự thay đổi với a bên trong hàm sẽ ảnh hƣởng đến giá trị của x và hoàn toàn tƣơng tự với b và y, c và z. Kiểu khai báo tham số theo dạng tham số biến sử dụng dấu và (&) chỉ có trong C++. Trong ngôn ngữ C chúng ta phải sử dụng con trỏ để làm việc tƣơng tự nhƣ thế. Truyền tham số dƣới dạng tham số biến cho phép một hàm trả về nhiều hơn một giá trị. V. ĐỆ QUI 1. Giới t ...

Tài liệu có liên quan: