Ý Nghĩa Của Hàm Main Là Gì - Mua Trâu

int main(int argc, char *argv[])

int main (void)

public static void main(String [] args)

static void Main(string[] args)

def main():

Có lẽ bạn không lạ gì hàm main, hàm đầu tiên bạn viết khi học lập trình C, ngay cả khi chuyển sang một ngôn ngữ khác, nhất là các ngôn ngữ thừa kế từ C như C++, Java và C#, bạn cũng sẽ thấy một hàm tương tự. Đặc trưng của main là nó sẽ nhận vào các tham số (các tham số này được truyền cho chương trình đang chạy từ trên dòng lệnh) và trả về dữ liệu kiểu int hoặc void.

Khi gọi một hàm (sqrt, rand, malloc…), bạn sẽ nhận được kết quả trả về của hàm đó, vậy giá trị trả về của hàm main sẽ trả về cho ai? Và để làm gì? Vì khi main kết thúc cũng đồng nghĩa với chương trình kết thúc, nên bên trong chương trình bạn không có cách nào lấy giá trị đó (trừ khi bạn cố ý gọi main), mà giá trị này sẽ trả về cho hệ điều hành, hệ điều hành sẽ lưu lại và cho phép chương trình kế tiếp thực thi có thể đọc được. Nhờ khả năng chuyển kết quả thực thi của một chương trình cho một chương trình khác mà ta có thể viết được các chuỗi lệnh (hay các batch scripts, bash scripts…).

Hãy mở dòng lệnh Windows và thử một ví dụ sau:

dir ABC:: <ENTER>

echo %errorlevel%

Bạn sẽ thấy nó hiện số 1, bây giờ bạn gõ dir C:\ rồi gõ Enter, sau đó hiển thị lại biến %errorlevel% bằng lệnh echo, bạn sẽ thấy nó hiển thị giá trị 0. 0 và 1 chính là các giá trị trả về khác nhau từ hàm main (của lệnh dir).

Giờ ta thử thêm một chút nhé: Sau khi chạy lệnh dir xong, ta gõ tiếp lệnh sau:

if %errorlevel%==0 echo Lenh dir chay khong bi loi

Bây giờ câu thông báo “Lenh dir chay khong bi loi” sẽ chỉ hiển thị nếu bạn vừa dir một thư mục hợp lệ.

Vậy tôi nên trả về giá trị như thế nào? Có một quy ước chung là khi chương trình kết thúc không có lỗi, ta trả về 0, đây cũng là giá trị trả về nếu bạn để kiểu trả về của main là void. Mỗi giá trị tăng dần 1, 2, 3, 4… sau đó sẽ đại diện cho một lỗi – cũng theo thứ tự nghiêm trọng tăng dần. Tất nhiên khi bạn đã quy định một mã lỗi, bạn cũng phải viết tài liệu mô tả nó để người dùng biết cách sử dụng.

Ngoài errorlevel, các chương trình còn có thể giao tiếp được với nhau thông qua các kênh standard input/output, bằng cách dùng các ký hiệu như >, ,>>, |.Hãy đoán thử xem câu lệnh sau sẽ in ra gì nhé: tasklist | findstr “chrome.exe”

Bạn thử nghĩ xem có biết bao nhiêu tiềm năng khi ta có thể kết nối các lệnh hoàn toàn riêng biệt với nhau?

Series lập trình C/C++, ngôn ngữ lập trình hệ thống mạnh mẽ.

Trong bài viết này chúng ta sẽ cùng tìm hiểu về Hàm và cách sử dụng trong lập trình C/C++, với những nội dung sau:

1. Khái quát về các giai đoạn phát triển lập trình

1. Khái quát về các giai đoạn phát triển lập trình

Đến nay, lập trình đã trải qua 3 giai đoạn:

  1. Lập trình tuyến tính: Là viết hết toàn bộ chương trình vào 1 hàm duy nhất gọi là hàm main.
  2. Lập trình thủ tục, hàm: Là chia chương trình nhỏ ra thành các chương trình con. Khắc phục được nhược điểm của lập trình tuyến tính, sẽ làm cho chương trình trở nên gọn gàng, dễ bảo trì, dễ quản lý và có thể tái sử dụng được source code.
  3. Lập trình hướng đối tượng.

2. Hàm là gì? Và ý nghĩa của nó.

2. Hàm là gì? Và ý nghĩa của nó.

Hàm là một nhóm các câu lệnh cùng xử lý một nhiệm vụ cụ thể nào đó. Mỗi chương trình có ít nhất 1 hàm – main(). ・ Hàm có thể là hàm có sẵn của hệ thống như strlen(), memcpy(),… hoặc hàm do người lập trình tự định nghĩa như tinhTong(), nhapGiaTri(),… ・ Trong một chương trình thì các hàm cần phải có tên khác nhau để phân biệt chức năng mà nó thực hiện.

・ Trong C/C++ chương trình con chỉ tồn tại dưới 1 dạng duy nhất là hàm chứ không có thủ tục.

Đọc thêm: Nguyên mẫu hàm trong C/C++ là gì? Và cách sử dụng.

– Ý nghĩa của hàm: Hàm là một chương trình con thực hiện một khối công việc được lặp đi lặp lại nhiều lần trong khi chạy chương trình hoặc dùng tách một khối công việc cụ thể để chương trình đỡ phức tạp.

  • Dễ bảo trì, dễ quản lý: Việc chia nhỏ 1 chương trình lớn thành các hàm sẽ giúp chúng ta dễ quản lý, khi cần bảo trì hay nâng cấp thì dễ dàng và nhanh chóng chỉ cần chỉnh sửa tại chức năng mà hàm đó đảm nhận.
  • Có thể tái sử dụng code: nếu trong chương trình có một số lệnh, hoặc công việc nào đó có xử lý giống hoặc tương tự nhau cần lặp đi lặp lại nhiều lần ở các vị trí khác nhau, để khỏi mất thời gian và công sức sao chép những dãy lệnh đó chúng ta nên tổ chức và xây dựng nó thành một hàm, chỗ nào trong chương trình cần thực hiện công việc đó thì chỉ cần gọi hàm đó mà thôi.

3. Cú pháp khai báo và nguyên tắc hoạt động của hàm

3. Cú pháp khai báo và nguyên tắc hoạt động của hàm

■ 1.Cú pháp khai báo:

<Kiểu dữ liệu trả về> <Tên hàm>( <Danh sách tham số nếu có> ) { // Các câu lệnh thực hiện //... <return Giá trị trả về nếu có> }

*** Trong đó:

  • Kiểu dữ liệu trả về: là kiểu giá trị mà hàm trả về. Một hàm có thể trả về hoặc không trả về giá trị nào: ・ Kiểu trả về có thể là: int, float, bool, char,…

    ・ Không trả về giá trị gì thì sẽ dùng: void

  • Tên hàm: Nên đặt tên gợi nhớ đến công việc/ xử lý mà hàm thực hiện.
  • Danh sách tham số nếu có: Mỗi hàm có thể có 1, hoặc nhiều, hoặc không có tham số. Tham số gồm [Kiểu dữ liệu và tên biến dùng làm tham số]
  • Các câu lệnh thực hiện: là tập hợp các câu lệnh xác định nhiệm vụ của hàm.
  • Giá trị trả về nếu có: Nếu <Kiểu dữ liệu trả về> là void thì sẽ không có return, khác void thì có return giá trị về kiểu dữ liệu tương ứng đó.

*** Tham số truyền cho hàm sẽ gồm 3 loại (sẽ được trình bày chi tiết ở bài Cách truyền tham trị, tham chiếu trong lập trình C/C++)

  1. Tham trị
  2. Tham chiếu
  3. Con trỏ

■ 2.Nguyên tắc hoạt động của hàm:

  1. Khi hàm được gọi ở bất kỳ chỗ nào trong chương trình thì hàm sẽ bắt đầu được thực hiện, tức sẽ rời chỗ đó để đi đến thực hiện hàm được gọi.
  2. Nếu là hàm có tham số thì chương trình sẽ thực hiện truyền tham số thực cho các tham số hình thức tương ứng trong hàm.
  3. Chương trình bắt đầu thực hiện lần lượt các câu lệnh trong thân hàm đến khi nào lệnh return hoặc dấu kết thúc hàm } thì dừng lại, và thoát khỏi hàm trở về vị trí chương trình đã gọi nó và thực hiện tiếp các câu lệnh của chương trình.
  4. Nếu hàm trả về giá trị thì giá trị của biểu thức return trong hàm sẽ là giá trị của hàm.

4. Các bước để viết 1 hàm và ví dụ minh họa

4. Các bước để viết 1 hàm và ví dụ minh họa

■ Các bước để viết 1 hàm:

  1. Xác định xem hàm đó có trả về giá trị hay không? Nếu không thì sử dụng Kiểu là void, nếu có thì giá trị trả về thuộc loại kiểu dữ liệu nào: int/ float/ char/ bool/ …
  2. Xác định xem hàm đó làm công việc gì? Để đặt tên hàm cho nó gợi nhớ tới công việc hàm sẽ thực hiện.
  3. Xác định xem tham số trong hàm cần những gì? Để mà hỗ trợ trong quá trình xử lý tính toán.
  4. Cài đặt cho hàm, tức là định nghĩa hàm.

■ Ví dụ: nhập vào 2 số nguyên a, b. Tính tổng, hiệu của 2 số nguyên đó.

#include <stdio.h> #include <conio.h> /* B1. Hàm có trả về giá trị kiểu int * B2. Hàm tính tổng 2 số => tên hàm TinhTong, hoặc TinhTong2So * B3. Vì hàm tính tổng 2 số nên cần tham số là 2 biến kiểu nguyên */ int TinhTong(int a, int b) { /* B4. Định nghĩa hàm */ int tong = a + b; return tong; } /* Hàm tính hiệu 2 số */ int TinhHieu(int a, int b) { return a - b; } int main() { // Khai báo biến int a, b, tong, hieu; // Nhập 2 số nguyên printf( "Nhap vao a = " ); scanf_s( "%d", &a ); printf( "Nhap vao b = " ); scanf_s( "%d", &b ); tong = TinhTong( a, b ); printf( "Tong cua 2 so la: %d\n", tong ); hieu = TinhHieu( a, b ); printf( "Hieu cua 2 so la: %d\n", hieu ); getch(); return 0; }

– Ở ví dụ trên ta thấy, ở phần nhập số nguyên thì code là giống nhau chỉ khác nhau 2 chữ a, b. Giả sử muốn nhập vào 5 số thì cần copy-paste 5 lần. Do đó ta nên viết phần nhập số nguyên thành 1 hàm để có thể tái sử dụng code và tránh trùng lặp. Để làm được điều này thì sau khi đọc bài viết Cách truyền tham trị, tham chiếu trong lập trình C/C++ các bạn làm thử xem sao nhé.

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

3.3 10 votes

Đánh giá bài viết

Từ khóa » Hàm Main Là Gì