Xin chào mọi người!
Hè tới rồi, nên mấy ngày qua mình không viết bài mới kịp 😛 (hơi chống chế). Bài viết hôm nay mình sẽ nói về hàm – một phần cực kì quan trọng nếu bạn bước chân vào lập trình. Bài viết này hơi dài nên mình sẽ cắt làm 2 phần nhé 😀

1. Bản chất của hàm

Nếu bạn có học toán thời cấp 2, 3 thì chắc sẽ biết đến hàm (ký hiệu f(x)) rồi nhỉ. Hàm trong C++ cũng tương tự, cũng có f và x, nhưng sẽ khác đôi chút. Sơ đồ công việc của hàm như sau:
input => function => output
Với:
  • input là tham số truyền vào (giống x ấy)
  • function là các đoạn code xử lý input khi nãy
  • output là giá trị trả về (có thể có hoặc không trả về)
Nhìn khá giống f(x) nhỉ? Thực sự đúng là như vậy đấy, f trong toán học là kí hiệu của từ function mà 😀 Mình nói như vậy để các bạn dễ mường tượng ra, chứ mình đang viết blog về code mà 😀

2. Cú pháp

Cú pháp khai báo của hàm như sau:
<tên kiểu> <tên hàm>(<các tham số truyền vào>,...)
{
  // Code
  // return nếu có giá trị trả về
}
Ví dụ:
#include <iostream>

using namespace std;

int Cong(int a, int b)
{
  int tong = a + b;
  return tong; // return a + b cũng được
}
void main()
{
  int a = 5, b = 6;
  cout << "Tong cua a va b: " << Cong(a,b) << endl;
}
Khi xuất ra màn hình, nó sẽ xuất “Tong cua a va b: 11”. Đó là vì chúng ta đã định nghĩa sẵn hàm Cong và sau đó gọi lại nó với 2 tham số a, b phù hợp với tham số mà ta đã định nghĩa. Ở ví dụ trên thì đơn giản, nhưng nếu làm trong những project thực tế thì 1 hàm có thể có tới hàng trăm, hàng nghìn dòng code là chuyện bình thường (với mình hơi bất thường :v)
Hàm main trong C++ cũng là 1 dạng hàm. Khi bắt đầu chương trình, nó sẽ chạy vào hàm main trước và thực thi các đoạn code trong hàm main. Nếu trong hàm main có lệnh gọi những hàm khác thì chương trình mới chạy đoạn code trong những hàm đó.
Một điều lưu ý nữa là các hàm phải được định nghĩa trước khi gọi, có nghĩa là nếu ta đặt những hàm ta tự viết dưới hàm main thì sẽ báo lỗi do chương trình chưa biên dịch tới hàm tự tạo thì ta đã gọi nó rồi. Ví dụ dưới đây là lỗi của nó:
#include <iostream>

using namespace std;

void main()
{
  int a = 5, b = 6;
  cout << "Tong cua a va b: " << Cong(a,b) << endl; // Chuong trinh se bao loi!!
}

int Cong(int a, int b)
{
  int tong = a + b;
  return tong; // return a + b cũng được
}
Vậy nếu ta muốn các hàm tự tạo nằm ở phía dưới hàm main thì sao? Trong một chương trình, việc có hàng trăm, thậm chí hàng nghìn hàm tự tạo khác nhau là chuyện bình thường. Vậy không lẽ mỗi lần chỉnh sửa hàm main, ta lại phải kéo chuột xuống “tận cùng của địa ngục” sao? :v

3. Hàm nguyên mẫu

Ở trong C++ cung cấp 1 tính năng là hàm nguyên mẫu (function prototype). Nó sẽ gọi hàm tạm thời trước khi ta định nghĩa hàm tự tạo. Chỉnh sửa lại ví dụ trên nhé:
#include <iostream>

using namespace std;

int Cong(int a, int b); // Function prototype

void main()
{
  int a = 5, b = 6;
  cout << "Tong cua a va b: " << Cong(a,b) << endl;
}

int Cong(int a, int b)
{
  int tong = a + b;
  return tong; // return a + b cũng được
}
Hàm nguyên mẫu giúp ta quản lý số lượng hàm tốt hơn, nhìn nó cũng chuyên nghiệp hơn nhỉ? Các tham số trong hàm nguyên mẫu có thể có hoặc không cần tên. Ta có thể viết:
int Cong(int, int);
Mình khuyên các bạn nên viết đầy đủ tên tham số để có thể chỉnh sửa về sau
Trên đây là bài viết về hàm trong C++ (Phần 1). Cảm ơn các bạn đã theo dõi! Hẹn gặp lại ở phần 2 😀
Đánh giá bài viết này để tác giả có động lực hơn nhé!
Axact

Administrator:

Xin chào, tôi là Nguyễn Quý Quang Huy. Tôi 14 tuổi và sinh sống tại Hoài Đức, Hà Nội. Tôi lập ra Rinne-IT Blog này nhằm chia sẻ những kiến thức mình có và những bài viết hay trên mạng do tôi tổng hợp. Blog đang trong giai đoạn phát triển nên nếu có lỗi mong các bạn bỏ qua. Tôi luôn chào đón những ý kiến phát triển từ từ các bạn. Giờ thì hãy khám phá blog của tôi nào ^_^

Bình Luận:

0 bình luận: