STDIO
Tìm kiếm gần đây

    Nội dung

    Khai Báo Và Định Nghĩa Hàm - Từ Khóa return

    26/01/2015
    26/03/2020
    Hàm là một khái niệm vô cùng quen thuộc với bất kỳ một lập trình viên nào. Tuy nhiên ở mỗi ngôn ngữ khác nhau thì hàm cũng có những điểm không tương đồng với nhau. Tiếp tục chuỗi bài viết về chương trình tự học C++, bài viết này xin giới thiệu về cách khai báo và định nghĩa một hàm.

    Giới thiệu

    Hàm là một khái niệm vô cùng quen thuộc với bất kỳ một lập trình viên nào. Tuy nhiên ở mỗi ngôn ngữ khác nhau thì hàm cũng có những điểm không tương đồng với nhau. Tiếp tục chuỗi bài viết về chương trình tự học C++, bài viết này xin giới thiệu về cách khai báo và định nghĩa một hàm trong C++.

    Tiền đề bài viết

    Sau bài viết về khái niệm hàm, đây là bài viết tiếp theo nằm trong chuỗi những bài viết về lập trình C++ cơ bản.

    Đối tượng hướng đến

    Bài viết dành cho những đối tượng đang trong quá trình tìm hiểu lập trình căn bản.

    Khai báo hàm

    Thông thường hàm thực hiện việc tính toán trên các tham số và cho lại giá trị kết quả, hoặc chỉ thực hiện một chức năng nào đó mà không cần trả lại kết quả. Kiểu giá trị trả về này được gọi là kiểu của hàm.

    Hàm thường được khai báo ở đầu chương trình. Cách để khai báo một hàm như sau:

    <kiểu của hàm> <tên hàm>(danh sách tham số) ;

    Trong đó:

    • Kiểu của hàm: Là kiểu dữ liệu mà hàm trả về. Nếu không có giá trị trả về thì kiểu của hàm là void. 

    • Tên hàm: Là tên của hàm, do người lập trình đặt. Tên hàm không được chứa ký tự đặt biệt, không được bắt đầu bằng số.

    • Danh sách tham số: là danh sách các tham số dùng như các biến cục bộ. Nếu có nhiều tham số, thì chúng sẽ được phân tách theo các dấu phẩy.

    Ví dụ

    int test(int);            // Hàm test có tham số kiểu int và kiểu hàm là int
    int rand();               // Không tham số, kiểu hàm (giá trị trả lại) là int
    void write(float) ;    //Hàm không trả lại giá trị (kiểu void).
    

    Định nghĩa hàm

    Cấu trúc một hàm bất kỳ được bố trí cũng giống như hàm main(). Cụ thể:

    <kiểu hàm> <tên hàm>(danh sách tham số)
    {
          dãy lệnh của hàm ;
          return (biểu thức trả về); // có thể nằm đâu đó trong dãy lệnh.
    }

    Trong đó return là để truyền dữ liệu cho nơi gọi hàm. Câu lệnh return bắt buộc là phải có đối với hàm có giá trị trả về. Và có thể có hoặc không  đối với hàm không có giá trị trả về (có kiểu trả về là void). Đối với hàm có giá trị trả về thì kèm theo sau return là một biểu thức. Kiểu giá trị của biểu thức này chính là kiểu của hàm. Tuỳ theo mục đích của hàm mà lập trình viên có thể đặt return bất cứ đâu trong dấu {} ở trên. Khi gặp return chương trình tức khắc thoát khỏi hàm và trả lại giá trị biểu thức sau return. Có thể có nhiều câu lệnh return trong hàm.

    Ví dụ

    int sum(int a, int b)
    {
          return (a+b);
    }

    Ví dụ trên định nghĩa hàm  tính tổng 2 số nguyên (kiểu int). Hàm này có 2 tham số truyền vào (số nguyên a và số nguyên b) và giá trị trả về là số nguyên a+b.

    Ví dụ

    int getMax(int a, int b)
    {
          if(a > b) return a;
          else return b;
    }

    Ví dụ trên định nghĩa hàm tìm số lớn nhất từ 2 tham số truyền vào a và b. Nếu a lớn hơn b thì trả về giá trị là a (return a), ngược lại sẽ trả về giá trị b (return b).

    Một ví dụ về hàm không có giá trị trả về:

    void printNumber(int a)
    {
          std::cout << a;
    }

    Hàm trên thực hiện công việc in một số nguyên (được truyền vào) ra màn hình console. Không có kiểu trả về nên không cần return.

    Lưu ý

    • Danh sách tham số trong khai báo hàm có thể có  hoặc không tên của biến, thong thường ta chỉ cần khai báo kiểu dữ liệu của tham số chứ không cần khai báo tên của biến. Trong khi trong định nghĩa hàm thì phải có đầy đủ.

    Ví dụ

    //Khai báo hàm
    int sum(int, int); //không cần tên biến
    int sum(int a, int b); //có tên biến
    
    //Định nghĩa hàm
    int sum(int a, int b)  // có tên biến
    {
          return (a + b);
    }

    Giải thích

    • Cuối khai báo hàm phải có dấu chấm phẩy (;), trong khi cuối dòng đầu tiên của định nghĩa hàm không có dấu chấm phẩy.
    • Hàm có thể không có tham số (danh sách tham số rỗng), tuy nhiên cặp dấu ngoặc sau tên hàm vẫn phải được viết.

    Bài viết liên quan

    Khai Báo Hàm Với C/C++

    Hàm (Function) là một khái niệm vô cùng quen thuộc đối với lập trình viên. Vậy muốn sử dụng nó thì có bao nhiêu kiểu khai báo? Và khai báo như thế nào? Bài viết này sẽ ...

    Amy Lê29/06/2015

    Khái Niệm Hàm

    Đối với một lập trình viên lâu năm mà nói thì chắn hẳn Hàm không còn là một điều gì xa lạ. Tuy nhiên đối với một người mới làm quen với lập trình thì ngay cả một kiến ...

    Ryan Lê25/01/2015

    Con Trỏ Hàm Trong C/C++

    Tương tự Windows Form, trong những game được lập trình bằng C++ cũng có những Button, và để tạo ra chúng thì không đơn giản. Vì ngoài việc xử lý hình ảnh, ...

    Tuấn Trần18/08/2015

    Hàm Trong Python - Nâng Cao

    Để tiếp tục chuỗi bài viết về chương trình hướng dẫn ngôn ngữ lập trình Python, hôm nay tôi sẽ cùng các bạn tìm hiểu sâu hơn, chi tiết hơn về hàm. Cụ thể trong bài viết ...

    Ryan Lê27/03/2015

    C++14 - Từ Khóa auto Và Khả Năng Tự Động Nhận Kiểu Khi Hiện Thực Một Hàm

    Với C++11 ta cũng biết khả năng nhận biết 1 kiểu dữ liệu với từ khóa auto, tuy nhiên với việc hiện thực 1 hàm thì thì C++11 chưa hỗ trợ khả năng nhận kiểu dữ liệu cho giá ...

    La Kiến Vinh15/09/2014

    CBP-3: Khai Báo Component Cơ Bản, Tích Hợp Component Vào Entity

    Khai báo component CAnimation để thêm hình ảnh hiển thị cho Entity, đây là một Component tiêu biểu và có liên quan đến một số Component khác nên tôi sẽ hiện thực để độc ...

    Tuấn Trần20/08/2015

    Sự Khác Biệt Giữa const Và constexpr

    Const và constexpr là một khái niệm cũ và cũng là khái niệm mới đối với một số lập trình viên, trong bài viết này tôi sẽ làm rõ hai khái niệm này để có thể giúp ích cho ...

    Nguyễn Hữu Phương09/06/2017

    9 Tính Năng Quan Trọng Trong C++11

    C++11 là một phiên bản cải tiến và nâng cấp từ C++98 (hay các bạn vẫn gọi là C++), với những tính năng mới tối ưu hơn, dễ sử dụng hơn, dễ quản lý bộ nhớ hơn, và khắc phục ...

    Lê Minh Tài13/08/2015

    Hàm Trong Python - Cơ Bản

    Hàm là một khái niệm vô cùng quen thuộc với bất kỳ một lập trình viên nào. Tuy nhiên ở mỗi ngôn ngữ khác nhau thì hàm cũng tồn tại những điểm không giống nhau. Vậy hàm ...

    Ryan Lê26/03/2015

    typedef Và enum

    Trong quá trình lập trình, việc ghi nhớ và hiểu mã nguồn nhanh là cần thiết. Trong bài viết này, tôi giới thiệu đến các bạn hai kỹ thuật giúp hỗ trợ việc ghi nhớ và dễ ...

    Lê Minh Trung12/05/2015

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    [email protected]

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020