30/09/2018, 18:02

Xin hỏi về return trong hàm

Các anh chị có thể giải thích giúp em return trả về giá trị của hàm là sao không ạ? Em vẫn không hiểu được. Em cám ơn ạ

void viết 20:04 ngày 30/09/2018
  • Ví dụ hàm trong toán học f(x) = 2 * x.
    Nếu x bằng 2 thì f(x) trả về 4.
  • Trong C, f(x) được viết là:

    double f(double x) 
    {
        return 2 * x;
    }

  • Trong hàm main bạn gọi f(x) như này:
    double y = f(2);
    thì y có giá trị 4.
Nguyễn Cát Long Huy viết 20:04 ngày 30/09/2018

Mình thấy anh @ltd có ghi
void setname(string name){
name=asd}
string getname(){
return name;}
tức là sao bạn?

*grab popcorn* viết 20:17 ngày 30/09/2018

Bạn đi mua bánh mì, đưa tiệm bánh mì 10k, người ta đưa bạn ổ bánh mì.
Thì ổ bánh mì là giá trị trả về của hàm tiệm bánh mì… Và 10k là argument (tham số) của hàm.
Từ đó có thể xây dựng lại thành

int muabanhmi(int vnd) {
 int sobanhmi = vnd/10000; // 10k 1 ổ
 return sobanhmi;
}

int sobanhmidangco = muabanhmi(10000);
-> bây giờ bạn có 1 ổ bánh mì và nó được lưu trong biến sobanhmidangco

Hoặc bạn nhờ thằng bạn tính giùm phép cộng. Bạn đưa nó 2 số a và b. Nó trả lại kết quả a + b cho bạn.
Thì a+b là giá trị trả về của hàm nhờ_thằng_bạn_làm_phép_cộng với 2 tham số là a và b.

Hàm ko cần tham số cũng có giá trị trả về. Như hàm int main(). Nó return 0 để báo biết rằng ko có lỗi.
Hoặc gần gũi với ngoài đời hơn là bạn gọi thằng bạn, nó chào lại mình.
Thì lời chào lại là kết quả trả về của hàm hello_thằng_bạn. Bạn chỉ cần gọi nó là nó trả về giá trị, ko cần nhờ nó làm gì cả.
ví dụ

string hello_thang_ban() {
  return "hello huy";
}

string a = hello_thang_ban(); //gọi thằng bạn và nó trả về lại chuỗi "hello huy"

Mình giải thích có lẽ hơi khó hiểu, nên… ko hiểu chỗ nào cứ hỏi nha

void viết 20:03 ngày 30/09/2018

edit: 2 hàm này gọi là accessor, sử dụng trong Class thôi. mới học bạn không nên quan tâm làm gì.

Nguyễn Cát Long Huy viết 20:16 ngày 30/09/2018

Cám ơn bạn. Bạn giải thích thì mình hiểu nhưng vẫn còn hơi mơ hồ lắm

*grab popcorn* viết 20:10 ngày 30/09/2018

Mơ hồ chỗ nào thì show ra cho mọi người giải đáp để hết mơ hồ

Nguyễn Cát Long Huy viết 20:02 ngày 30/09/2018

Hiểu rồi bạn. Cám ơn bạn nhiều nhé <3

Nguyễn Cát Long Huy viết 20:11 ngày 30/09/2018

Vậy bạn cho mình hỏi một cái nữa nhe. Anh @ltd có ghi

class Lophoclaptrinh{
   public:
       void setname(string tengi){
          name = tengi;
          }
       string getname(){
             return name;
          }
  private:
       string name;
 };

Như vậy thì return đó là return gì vậy bạn? Mình cảm ơn nhiều nhe ^^

Nguyễn Cát Long Huy viết 20:17 ngày 30/09/2018

ủa vậy bạn cho mình hỏi nếu viết ntn thì return về gì nhe

class xinchao{
     public: 
        void setname(string hello){
             chaocacban=hello;
        }
        string getname(){
             return chaocacban;
    private:
             string chaocacban;
};
*grab popcorn* viết 20:09 ngày 30/09/2018

Cái hàm getname return về name.
tức tên của học sinh.

Nguyễn Hoàng Trung viết 20:13 ngày 30/09/2018

Cho em hỏi: sao em thấy trong C nhiều người dùng int abc () { return 0;} mà lại không dùng void ạ?

Minh Hoàng viết 20:14 ngày 30/09/2018

anh nghĩ là cho “đúng”, vì chương trình cần trả về một giá trị nào đó thể hiện trạng thái của chương trình. Ví dụ như chạy ổn không lỗi thì return 0,…

Phạm Trung Kiên viết 20:06 ngày 30/09/2018

vậy cái giá trị trả về đó là dùng để làm gì vậy bác, nó có để hiển thị, hay để làm điều gì không??

*grab popcorn* viết 20:13 ngày 30/09/2018

Làm gì thì tùy bạn thôi
Hiển thị cũng đc, lấy cái đó tính toán tiếp cũng được.
Thường dùng hàm để tách phần tính toán, xử lý phức tạp ra cho dễ sử dụng lại, dễ debug.
Lấy ví dụ, mình có hàm today là về ngày của hôm nay.
Vậy mình có thể

  1. In ra màn hình để biết hnay ngày nào
Date t = today();
print t
  1. Còn ko mình xem là mình đã già bao nhiêu ngày rồi
Date birthday = 29/2/1996
Date t = today()
print 'Bạn đã già ' + (t - birthday) + ' ngày tuổi'
Phạm Trung Kiên viết 20:04 ngày 30/09/2018

cảm ơn bác, chỗ đấy thì hiểu rồi, cơ mà viết code í, return 0; hay return 1; hay return cái gì gì đấy, thì mục đích của câu lệnh đấy là làm gì? (lỡ có hỏi ngu thì mấy bác cũng giải thích hộ cho em với, em cảm ơn nhiều lắm ạ <3)

*grab popcorn* viết 20:12 ngày 30/09/2018

À ý bạn là hàm main?
Thực chất nó báo là chương trình chạy bị lỗi thôi.
Nếu bạn xài linux, một số terminal hiển thị error code trả về khi chạy xong chương trình. Lúc đó bạn biết là à, chương trình tui bị gì mà chạy nó trả về mã lỗi này. :3 Rồi tim cách khắc phục. Nếu nó return 0 thì ko có gì, tung tăng thôi.

Một số hàm cũng học tập theo. Mượn ý tưởng đó return error code để biết hàm chạy bị lỗi gì lỗi gì chẳng hạn.
Lấy ví dụ là kiểm tra thông tin đăng ký

int validateRegisterInformation() {
 if (validatePassword == false) return 1;
 if (validateUsername == false) return 2;
 return 0;
}

int errorCode = validateRegisterInformation();
if (errorCode == 0) // ayy, không có lỗi
if (errorCode == 1) print("Bồ ơi password yêu cầu 8-32 ký tự nha");
if (errorCode == 2) print("Bồ ơi username nhập tào lao rồi nha");

Phạm Trung Kiên viết 20:09 ngày 30/09/2018

À, đã hiểu rồi, đa tạ bác nhiều lắm. Mà có thể thì có thể cho em xin thông tin gì đó để có gì em hỏi được không ạ

*grab popcorn* viết 20:12 ngày 30/09/2018

Bạn cứ reply ở đây hoặc tham gia discord của diễn đàn sẽ được mọi người giúp đỡ.
https://discord.gg/ap2uWr2

Phạm Trung Kiên viết 20:16 ngày 30/09/2018

Em cảm ơn ạ!!!

Bài liên quan
0