Lệnh return giá trị trong phần thân của hàm có giá trị để

View Full Version : Lệnh return trong hàm con có ý nghĩa gì ???


zerocom

25-04-2011, 08:33 PM

Một số hàm con có lệnh return phía sau nhưng mình không hiểu ý nghĩa của nó như thế nào . Ai có thể ví dụ cho mình biết ?

Yin Yang

25-04-2011, 08:35 PM

Các tài liệu lập trình căn bản đều có giải thích phần này, nếu bạn chưa đọc thì nên đọc trước rồi hỏi tiếp.

zerocom

25-04-2011, 08:36 PM

mình đọc qua nhưng nó cho 1 ví dụ như vầy void max [int a, int b] { if[a>b] return a; else return b;

}

Yin Yang

25-04-2011, 08:39 PM

Nó cho 1 ví dụ như vậy, và bạn lên post bài như vầy mà bỏ qua phần giải thích phía sau? hàm max[] trên đơn giản là trả về số lớn hơn trong 2 số a và b truyền vào từ tham số.

Ví dụ int a= max[1,2]+max[2,3] thì sau khi thực hiện nó có dạng như sau: int a=2+3

zerocom

25-04-2011, 08:42 PM

Nếu hàm có giá trị trả về [kiểu hàm khác void] thì trong thân hàm trước khi kết thúc phải có câu lệnh trả về giá trị: return ; sau lệnh return chính là giá trị trả về của hàm, nó phải có kiểu phù hợp với kiểu của hàm được khai báo trong dòng tiêu đề. Trường hợp hàm void chúng ta có thể dùng câu lệnh return [không có giá trị] để kết thúc hàm hoặc khi thực hiện xong lệnh cuối cùng [gặp } cuối cùng] hàm cũng kết thúc. Ví dụ 1: Hàm max trả lại giá trị lớn nhất trong 2 số nguyên a, b void max [int a, int b] { if[a>b] return a; else return b;

}

Yin Yang

25-04-2011, 08:44 PM

À ko để ý, hàm max[] có kiểu trả về là void nên sẽ lỗi, lẽ ra phải là int. Bạn cứ hiểu đơn giản là giá trị của lệnh return sẽ thay thế cho lời gọi hàm trong biểu thức.

aydada

25-04-2011, 08:46 PM

hix, giáo trình nào giải thích lệnh return mà để kiểu void vậy [:X]

zerocom

25-04-2011, 08:48 PM

giáo trình ngôn ngữ c của anh langman đó bạn .

DingPhonh

25-04-2011, 08:56 PM

Ví dụ nè: int NgTO[int num] { if [num < 2] return 0; if [num == 2] return 1; if [num%2 == 0] return 0; int i; for [i = 3; i*i b]

return a; trả giá trị a về cho lệnh gọi hàm max[a, b]

kirimaru80

25-04-2011, 09:21 PM

giáo trình ngôn ngữ c của anh langman đó bạn . Hàm void cũng có thể sử dụng lệnh return, nhưng ko có tham số :]. void a[] { return;

}

beautifulsoul84hung

25-04-2011, 09:21 PM

giáo trình ngôn ngữ c của anh langman đó bạn . lệnh return cũng có trong void mà nhưng là return; thôi ^^!~

trả về ko cái j cả ^^!~

aydada

25-04-2011, 09:22 PM

cái đó thì đồng ý, nhưng không thể dùng hàm void cho hàm tìm số lớn nhất trong 2 số được

Yin Yang

25-04-2011, 09:22 PM

return là ... lẽ ra bạn đọc ví dụ phải thấy rõ rồi chứ. ví dụ: int GetOne[] { return 1; } int GetTwo[] { return 2; } thì khi gọi int i=GetOne[]+GetTwo[]

kết quả của i sẽ ra bao nhiêu?

beautifulsoul84hung

25-04-2011, 09:23 PM

À tức là lệnh return là gọi hàm phải ko ? nếu return = 0 thì ko lập lại hàm đó . Hoặc return=1,2,3... thì lặp lại 1,2,3... lần . Không biết mình hiểu thế có đúng ko ? một phát minh rất táo bạo!!!~ tôi rất mong đây sẽ là sáng kiến của thế kỷ mới. hihi ... hàm return là hàm trả về và kết thúc hàm

:D

zerocom

25-04-2011, 09:37 PM

hi hi pà con thông cảm đang học bằng ebook nên nhìu cái quá không biết @@

beautifulsoul84hung

25-04-2011, 09:39 PM

hi hi pà con thông cảm đang học bằng ebook nên nhìu cái quá không biết @@ uh!~ có ai ban đầu đã giỏi đâu bạn ko biết thì hỏi đó là điểm tốt nhưng nếu tự mình nghĩ ra thì kiến thức thu về sẽ nhiều hơn => trước khi đặt câu hỏi thì nên tìm xem liệu mình có tự tìm ra đc câu trả lời ko

zerocom

25-04-2011, 09:49 PM

Trùi phải nghĩ nhìu không ra nên post nhờ help Người ta bảo không biết phải hỏi muốn giỏi phải học mà . Tiếp tục nghiên cứu cái hàm con này hi vọng sẽ hiểu ....

À mà sao toàn thấy ebook sử dụng toàn print vs scan , nghe bạn nói là dùng cin , cout nó nhanh hơn vs tiện nữa mà hok thấy ebook[ mạng] nào có

aydada

25-04-2011, 09:53 PM

cin, cout là của C++
print và scan là của C

beautifulsoul84hung

25-04-2011, 09:55 PM

Trùi phải nghĩ nhìu không ra nên post nhờ help Người ta bảo không biết phải hỏi muốn giỏi phải học mà . Tiếp tục nghiên cứu cái hàm con này hi vọng sẽ hiểu .... À mà sao toàn thấy ebook sử dụng toàn print vs scan , nghe bạn nói là dùng cin , cout nó nhanh hơn vs tiện nữa mà hok thấy ebook[ mạng] nào có ko nhầm mình đọc ở đâu đó thì printf và scanf nhanh hơn thì pải còn nếu bạn học C thì tất nhiên dùng printf và scanf còn C++ dùng cout và cin. Nhưng bạn đừng nghĩ cout giống printf và cin giống scanf [hoàn toàn sai đấy] Ở đầu sách C++ hay dùng printf và scanf với mục đích cho người dùng tiếp cận dần với ngôn ngữ C++

peterdrew

25-04-2011, 09:58 PM

print và scan là của C Chính xác phải là của C/C++ đó em! ko nhầm mình đọc ở đâu đó thì printf và scanf nhanh hơn thì pải còn nếu bạn học C thì tất nhiên dùng printf và scanf còn C++ dùng cout và cin. Nhưng bạn đừng nghĩ cout giống printf và cin giống scanf [hoàn toàn sai đấy] Ở đầu sách C++ hay dùng printf và scanf với mục đích cho người dùng tiếp cận dần với ngôn ngữ C++

//forums.congdongcviet.com/showthread.php?t=37560, đọc cho vui thôi nhé.

zerocom

25-04-2011, 10:35 PM

Ví dụ nè: int NgTO[int num] { if [num < 2] return 0; if [num == 2] return 1; if [num%2 == 0] return 0; int i; for [i = 3; i*i b]{ alert["Số thứ nhất lớn hơn số thú hai"]; } else if [a < b]{ alert["Số thứ nhất bé hơn số thú hai"]; } else { alert["Số thứ nhất bằng số thứ hai"]; } } var a = parseInt[prompt["Nhập vào số đầu tiên"]]; var b = parseInt[prompt["Nhập vào số thứ hai"]]; compareNumber[a, b];

Với cách này có nhược điểm là ta không thể thay đổi nội dung thông báo mỗi khi sử dụng. Ví dụ thay vì so sánh hai số a và b mình cần so sánh hai số c và d với nội dung thông báo khác thì bắt buộc ta phải tạo ra hàm mới.

# Hàm có return

Mình sẽ khai báo một hàm có return về một giá trị, dựa vào giá trị này ta sẽ biết được số nào lớn hơn.

Code RUN

// Khai báo function compareNumber[a, b] { if [a > b]{ return 1; } else if [a < b]{ return 2; } else { return 3; } } // Sử dụng var a = parseInt[prompt["Nhập vào số đầu tiên"]]; var b = parseInt[prompt["Nhập vào số thứ hai"]]; var flag = compareNumber[a, b]; if [flag == 1]{ alert["Số thứ nhất lớn hơn số thú hai"]; } else if [flag == 2]{ alert["Số thứ nhất bé hơn số thú hai"]; } else { alert["Số thứ nhất bằng số thứ hai"]; }

Với cách này thì trong thân của hàm rất ngắn và dễ hiểu, tuy nhiên ở bên ngoài sử dụng thì phải code nhiều hơn. Cách này có ưu điểm như sau: Giả sử thay vì sử dụng hàm này để xuất thông báo thì mình cần sử dụng nó ở một bài toán khác thì không cần phải tạo hàm mới.

# Kết luận

Vậy khi sử dụng lệnh return trong hàm thì khi thực thi chương trình của hàm sẽ dừng lại ngay lệnh return đó, và giá trị khi gán biến cho hàm chính là giá trị của lệnh return. Ví dụ chương trình dưới đây có giá trị là 1 vì lệnh return trả về 1.

Code

function test[]{ return 1; } var a = test[]; // a = 1

Trường hợp bạn gán giá trị của biến là một hàm không có return thì nó sẽ trả về undefined.

Code

function test[]{ } var a = test[]; // a = undefined

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Video liên quan

Chủ Đề