Tổ chức chương trình thành các hàm

Một phần của tài liệu Giáo trình tin học đại cương (Trang 70 - 73)

CHƯƠNG 4 HÀM VÀ TỔ CHỨC CHƯƠNG TRÌNH

4.1 Tổ chức chương trình thành các hàm

4.1.1. Khái nim chung v hàm

Xột bài toỏn ủơn giản sau: Tỡm giỏ trị lớn nhất của ba số mà giỏ trị của chỳng ủược ủưa vào từ bàn phớm. Ta tổ chức chương trỡnh thành hai hàm: hàm main và một hàm mà ta ủặt tờn là max3s. Nhiệm vụ của hàm max3s là tớnh giỏ trị lớn nhất của ba số giả ủịnh mà ta gọi là a, b, c. Nhiệm vụ của hàm main là ủọc ba giỏ trị từ bàn phớm, dựng hàm max3s ủể tớnh max của ba giỏ trị vừa ủọc ủược, ủưa kết qủa ra màn hỡnh. Chương trỡnh ủược viết như sau.

#include <stdio.h>

/* Nguyen mau ham max3s */

float max3s(float a,float b,float c);

void main() {

float x, y, z;

printf("\nNhap ba so thuc: ");

scanf("%f%f%f", &x, &y, &z);

printf("\nx = %0.2f\ny = %0.2f\nz= %0.2f\nmax = %0.2f", x, y, z, max3s(x, y, z));

}

/* Dinh nghia ham max3s */

float max3s(float a, float b, float c) {

float max;

max = a>b?a:b;

return (max>c?max:c); /* Gia tri tra ve */

}

Ghi chú:

- Nên khai báo nguyên mẫu của hàm trước khi sử dụng hàm.

- Nguyờn mẫu của hàm thực chất là dũng ủầu của hàm và thờm vào dấu chấm phẩy.

Tuy nhiờn trong nguyờn mẫu cú thể bỏ tờn cỏc ủối.

Qua chương trỡnh này cú thể rỳt ra nhiều khỏi niệm và qui tắc quan trọng liờn quan ủến việc xây dựng và sử dụng hàm:

- Mỗi hàm phải cú một tờn. Ta cú thể ủặt cho mỗi hàm một tờn bất kỳ theo cỏc qui tắc nêu trong chương 1.

- Trong cùng một chương trình, các hàm phải có tên khác nhau và mặc dù tên là tùy ý nhưng ta cũng nờn ủặt cho hàm những tờn phự hợp với chức năng của hàm.

- Hàm thường cú một vài ủối. Vớ dụ hàm max3s cú ba ủối là a, b, c. Cả ba ủối này ủều cú kiểu giỏ trị float. Cũng cú hàm khụng ủối như hàm main trong cỏc vớ dụ trờn, khi ủú vẫn phải cú cặp dấu ngoặc trũn.

http://www.ebook.edu.vn 71

- Hàm thường cho ta một giỏ trị nào ủú. Vớ dụ, hàm max3s cho giỏ trị lớn nhất của ba ủối của nú. Giỏ trị của hàm cú thể cú kiểu int, float, double, ... . Hàm max3s cú giỏ trị kiểu float. Ngoài ra cũn cú những hàm khụng cú giỏ trị trả về, khi ủú khai báo kiểu trả về của hàm là void.

4.1.2 Quy tc xây dng mt hàm

Hàm cú thể xem là một ủơn vị ủộc lập của chương trỡnh. Trong C khụng cho phộp xõy dựng một hàm bờn trong cỏc hàm khỏc. Hàm ủược viết theo thứ tự sau:

Nguyên mu hàm

Nguyờn mẫu hàm cho biết tờn hàm, cỏc ủối của hàm và kiểu giỏ trị trả về. Việc khai bỏo nguyờn mẫu hàm cho phộp sử dụng hàm trước khi ủịnh nghĩa hàm.

Nguyên mẫu hàm khai báo theo mẫu sau:

<kiểu> <tên_hàm>(

<kiểu 1> [<ủối1>,

<kiểu 2> [<ủối 2>],

…,

<kiểu n> [<ủối n>]

);

Như vậy, nguyờn mẫu của hàm khai bỏo những thụng tin tối thiểu nhất của hàm ủể cú thể sử dụng ủược hàm ủú.

Trong trường hợp hàm ủược ủịnh nghĩa trước khi sử dụng, thỡ khụng cần thiết phải khai báo nguyên mẫu.

ðịnh nghĩa hàm

ðịnh nghĩa hàm gồm hai phần: tiờu ủề và thõn hàm. Xột vớ dụ về hàm max3s:

/* Dinh nghia ham max3s */

float max3s(float a, float b, float c) {

float max;

max = a>b?a:b;

return (max>c?max:c); /* Gia tri tra ve */

}

Trong vớ dụ trờn, tiờu ủề của hàm là:

float max3s(float a, float b, float c)

Thõn hàm bắt ủầu bằng dấu { và kết thỳc bởi 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 của hàm max3s là ủoạn chương trỡnh tớnh giỏ trị lớn nhất của ba ủối a, b, c.

Trong thân hàm ta dùng thêm biến max. Cần phân biệt sự khác nhau giữa biến max và ủối a, b, c. Biến max là biến cục bộ nú chỉ cú tỏc dụng trong thõn hàm và khụng cú bất cứ một liờn hệ gỡ ủến cỏc biến của cỏc hàm khỏc trong chương trỡnh. Trỏi lại cỏc ủối a, b, c lại ủược dựng ủể trao ủổi dữ liệu giữa cỏc hàm.

Trong 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 ở những chỗ khác nhau và cũng có thể không sử dụng câu lệnh này nếu hàm không có giá trị trả về. 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. Trong vớ dụ ủang xột, giỏ trị của biểu thức này là giỏ trị lớn nhất của ba ủối a, b, c.

http://www.ebook.edu.vn 72

4.1.3 S dng hàm

Hàm ủược sử dụng bằng cỏch gọi hàm. Lời gọi hàm cú dạng sau:

<tên hàm> ([<danh sách tham số thực>])

Khi gọi hàm, cần phải truyền cho mỗi tham số một giá trị. Các giá trị này gọi là các tham số thực ủể phõn biệt với cỏc tham số ủược khai bỏo khi ủịnh nghĩa hàm (tham số hỡnh thức).

Như vậy ta có các khái niệm sau:

+ Biến toàn bộ hay biến toàn cục: là cỏc biến ủược khai bỏo ở ủầu chương trỡnh, nú cú thể sử dụng ở vị trí bất kỳ trong chương trình.

+ Biến cục bộ, biến ủịa phương: là cỏc biến ủược khai bỏo trong cỏc hàm, tại ủầu mỗi khối lệnh. Phạm vi họat ủộng của cỏc biến này là trong thõn hàm hay khối lệnh chứa nú.

+ ðối số hay tham số hỡnh thức: là cỏc biến ủược khai bỏo sau tờn hàm trong 2 dấu ngoặc tròn.

+ ðối số thực sự hay tham số thực sự: Khi sử dụng hàm, ta viết tên hàm, cặp dấu ngoặc trũn và cỏc giỏ trị trong 2 dấu ngoặc trũn nếu cú. Cỏc giỏ trị ủú ủược gọi là cỏc tham số thực sự.

Nguyờn tắc hoạt ủộng của chương trỡnh khi gặp lời gọi hàm:

Khi gặp một lời gọi hàm thỡ hàm bắt ủầu ủược thực hiện. Núi cỏch khỏc, khi mỏy gặp một lời gọi hàm ở một chỗ nào ủú của chương trỡnh, thỡ mỏy sẽ tạm rời chỗ ủú và chuyển ủến hàm tương ứng. Quỏ trỡnh ủú sẽ diễn ra theo trỡnh tự 4 bước như sau:

a/ Cấp phỏt bộ nhớ cho cỏc ủối và cỏc biến cục bộ.

b/ Gỏn giỏ trị của cỏc tham số thực cho cỏc ủối tương ứng.

c/ Thực hiện các câu lệnh trong thân hàm.

d/ Khi gặp cõu lệnh return hoặc dấu } cuối cựng của thõn hàm thỡ mỏy sẽ xoỏ cỏc ủối, cỏc biến cục bộ (giải phúng bộ nhớ của cỏc ủối, biến cục bộ) và thoỏt khỏi hàm.

Nếu trở về từ một cõu lệnh return cú chứa biểu thức thỡ giỏ trị của biểu thức ủược gỏn cho hàm. Giỏ trị của hàm sẽ ủược sử dụng trong cỏc biểu thức chứa nú.

Trong vớ dụ trờn, giỏ trị của hàm max3s(x,y,z) sẽ ủược sử dụng trong cõu lệnh printf. Núi cỏch khỏc, giỏ trị lớn nhất của ba số x, y, z sẽ ủược ủưa ra màn hỡnh.

4.1.4 Cu trúc tng quát ca chương trình

Chương trỡnh gồm nhiều hàm ủược viết theo trỡnh tự sau:

- Các #include - Các #define

- Khai bỏo cỏc ủối tượng dữ liệu ngoài (biến, mảng, cấu trỳc,...).

- Khai báo nguyên mẫu của các hàm - Hàm main

- Xõy dựng (ủịnh nghĩa) cỏc hàm

Chỳ ý: Hàm main cú thể ủặt sau hoặc xen vào giữa cỏc hàm khỏc.

http://www.ebook.edu.vn 73

Một phần của tài liệu Giáo trình tin học đại cương (Trang 70 - 73)

Tải bản đầy đủ (PDF)

(96 trang)