Dùng hàm có giá trị trả về và hàm không có giá trị trả về khi nào

em mới học về hàm và đang phân vân là mình dùng hàm có giá trị trả về khi nào và không có giá trị trả về khi nào anh chị giúp e với

quá rõ ràng, tùy thuộc vào mình có cần trả về cái gì hay không

4 Likes

tuỳ bạn thôi, bạn có thể code mà không cần trả về cũng được. Đỡ suy nghĩ. Code mãi đến 1 lúc nào đấy sẽ biết khi nào cần phải trả về, khi nào không cần

4 Likes

Khi nào bạn cần có giá trị trả về thì dùng hàm trả về thôi. Mình thấy cái này phụ thuộc vào người viết code, chứ dùng cái nào được thì cứ dùng.

4 Likes

Thật ra thằng nào cũng trả về mà, chỉ khác cách thể hiện.

Bạn đưa thằng a vào bạn không trả gì, nhưng bạn thật ra đã thay đổi nó và biến nó thành a* rồi. Hạn chế viết cách này, vì trong project lớn nó không tường minh:

 func makeChange input:(id)a {
a.xyz = blah

}

Người ngoài nhìn nhanh không biết tại sao a bị change property xyz vì không thấy output, nên là

a* = a copy
a*.xyz = blah
return a*
}

Cách nào cũng chạy, cũng cho kết quả nhưng cách 2 ít nguy cơ hơn

2 Likes

Mình nghĩ cái này là tùy bạn. Bạn cứ code đến 1 lúc nào đó bạn sẽ hiểu khi nào cần dùng nó thôi. Mình có ví dụ này mong là bạn hiểu.
Ví dụ bạn viết chương trình cộng tích 2 phân số với thương 2 phân số. Thì bạn sẽ có 2 hàm:

float TichPhanSo()
{
   ..................
   ..................
   return phanso1*phanso2;
}

float ThuongPhanSo()
{
   ..................
   ..................
   return phanso1/phanso2;
}

thì trong hàm main bạn có thể viết lệnh in ra kết quả là :

printf("Tong hai so la: %d\n",TichPhanSo()+ThuongPhanSo());

Mình diễn đạt không tốt, bạn thông cảm :smile:

3 Likes

Tùy vào bạn có cần dữ liệu trả về hay không, do logic code của bạn thôi

3 Likes
  • Những hàm không trả về giá trị (thủ tục) thường ít được sử dụng. Nếu bạn thao tác với file, đọc từ bàn phím, in ra màn hình, thao tác với giá trị biến thì thường sử dụng nó. Thằng này đặc biệt được ưa thíchtin dùng trong giáo dục. Ví dụ như hàm in ra màn hình hình chữ nhật, hàm giảm giá trị của biến,…
    * Thực tế, với Thủ tục bạn có thể làm được mọi thứ mà hàm có thể làm (có thể bạn sẽ được làm thế khi học về tham số biến, sau này là tham chiếu)

  • Hàm trả về giá trị sử dụng khi muốn tạo ra 1 thứ mới. Khi học thì thường sử dụng để làm toán. Như hàm sprt(a), hàm này nhận vào giá trị của a và trả về giá trị của căn bậc 2 của a. Đại loại vậy. Khi học bạn sẽ được viết các hàm như hàm nhận 2 số và trả về giá trị lớn hơn, hàm tính diện tích hình chữ nhật, …
    * Thường thì, khi học sẽ thao tác với những thứ đơn giản và in luôn kết quả ra màn hình nên ít sử dụng hàm hơn.

Đó là kiến thức khi mới học pascal thôi. Thực tế (theo như mình thấy) thường sử dụng hàm không trả về giá trị khi thao tác trên object (thay đổi thuộc tính, dữ liệu bên trong nó). Còn lại, sẽ là các hàm kiểm tra điều kiện, chuyển đổi, hàm nhập xuất, tạo mới,… tất cả đều cần trả về giá trị hết

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?