Cách sử dụng hàm trong lập trình

0
506

Hàm là một đoạn chương trình thực hiện một tác vụ được định nghĩa cụ thể, Việc phân tách chức năng thành hàm sẽ giúp chương trình dễ lập trình và dễ …

Khái niệm về hàm – function:

– Hàm là một đoạn chương trình thực hiện một tác vụ được định nghĩa cụ thể
– Các hàm được sử dụng để rút gọn cho một chuỗi các chỉ thị được thực hiện nhiều lần (khả năng sử dụng lại).
– Việc phân tách chức năng thành hàm sẽ giúp chương trình dễ lập trình và dễ hiểu khi xem xét hoạt động tổng thể
– Việc gỡ lỗi chương trình trở nên dễ dàng hơn khi cấu trúc của chương trình rõ ràng với hình thức lập trình theo module
– Chương trình cấu tạo từ các hàm cũng dễ dàng bảo trì, bởi vì sự sửa đổi khi có yêu cầu được giới hạn trong từng hàm của chương trình
image001

Các thành phần của hàm: Hàm là một đoạn chương trình dùng để giải quyết một vấn đề cụ thể nào đó. Một hàm gồm các thành phần sau:

  • Tên hàm: do người lập trình tự đặt theo qui tắc đặt tên của C++
  • Input: đầu vào của hàm
  • Output: đầu ra của hàm
  • Processing: quá trình xử lý của hàm (thuật toán)

Ví dụ: Viết hàm tính diện tích hình tròn khi biết bán kính

Tên hàm: TinhDienTichHinhTron

  • Input: bán kính
  • Output: diện tích hình tròn
  • Processing: S=bán kính * 2 * PI

Cú pháp khai báo hàm

image002
  • <kiểu trả về>: kiểu dữ liệu của input, nếu hàm không có output thì kiểu trả về là void
  • <ds tham số>: là tất cả các input của hàm (bao gồm cả kiểu dữ liệu của input và tên của input, các input cách nhau bởi dấu ,)
  • Thân hàm: thuật toán

Vi dụ: Viết hàm tính diện tích hình tròn khi biết bán kính

image004

Vi dụ: In ra màn hình n lần từ Hello, mỗi từ trên 1 dòng

image006

Cách gọi  hàm

  • Ta có thể gọi hàm ở bất kỳ vị trí nào, trong chương trình chính hoặc trong thân của một hàm khác
  • Hàm phải được khai báo ở vị trí sau phần khai báo thư viện (prototype)
  • Cách gọi hàm đối với hàm có kiểu trả về void
<Tên hàm> (<ds tham số>);

Vi dụ: Muốn in ra màn hình 10 lần từ Hello ta gọi hàm như sau:
InHello (10);

  1. Cách gọi hàm đối với hàm có kiểu trả về khác void
  2. Khai báo biến có cùng kiểu trả về với hàm
  3. Gán giá trị của hàm vào cho biến vừa khai báo
  4. Xử lý biến theo ý muốn
<tên biến> =<Tên hàm>(ds tham số);

Ví dụ:  ta có bán kính hình tròn r=6. Cần tính diện tích hình tròn rồi in diện tích đó ra màn hình ta có thể gọi như sau:

image008

Hàm đệ qui: là hàm gọi lại chính nó trong thân hàm. Xây dựng hàm đệ qui cần xác định 2 yếu tố điều kiện sau:

  • Điều kiện dừng: là trường hợp mà hàm trả về kết quả trực tiếp
  • Điều kiện đệ qui: là trường hợp và hàm gọi lại chính nó ở mức độ nhỏ hơn
image010

Vi dụ: Viết hàm tính tổng S=1 + 2 + 3 +…+ n

  • Điều kiện dừng: n=1 => S(1)=1
  • Điều kiện đệ qui: n>1: S(n)=n+S(n-1)
image012

Các bước thực hiện để giải quyết một bài toán

  • Bước 1: Xác định tên hàm, input, output, thuật toán
  • Bước 2: Cài đặt chương trình
  • Bước 3: Gọi hàm trong chương trình chính.

VD1: Viết hàm tìm ước chung của 2 số nguyên dương a và b. Viết hàm main tính ước chung lớn nhất cho 2 số nguyên nhập vào từ bàn phím, sử dụng hàm đã viết ở trên

Bước 1: Xác định tên hàm, input, output, thuật toán

  • Tên hàm: UCLN (ước chung lớn nhất)
  • Input: 2 số nguyên a, b (kiểu int)
  • Output: ước chung lớn nhất của a,b  là 1 số nguyên
  • Sử dụng thuật toán euclid => số lần lặp của bài toán không xác định => sử dụng vòng lặp while
  • Thuật toán euclid tìm UCLN của a và b
Nếu a=b thì UCLN =a;
Nếu a>b thi UCLN(a,b)=UCLN(a-b,b)
Nếu a<b thi UCLN(a,b)=UCLN(a,b-a)

Bước 2: Cài đặt chương trình

  • Tạo project mới:  File -> new ->Project
  • Cài đặt hàm
image014
  • Gọi hàm
image016

Vd2: Viết hàm kiểm tra số nguyên dương n có phải là số nguyên tố hay không? Viết hàm main minh họa kiểm tra số nguyên nhập vào từ bàn phím có phải là số nguyên tố hay không?

Bước 1: Xác định tên hàm, input, output, thuật toán

  1. Tên hàm: ktraSNT (kiểm tra số nguyên tố)
  2. Input: 01 số nguyên dương n (kiểu int)
  3. Output: có hoặc không, đúng hoặc sai, true hoặc false => kiểu trả về là int (1: đúng, 0: sai)
  4. Thuật toán:
    Đếm số ước của n.
    So sánh số ước của n với 2. Nếu số ước bằng 2 thì đó là số nguyên tố, ngược lại không phải số nguyên tố

Bước 2: Cài đặt chương trình

  • Tạo project mới:  File -> new ->Project
    • Chọn ngôn ngữ là C++
    • Tên project:
  • Cài đặt hàm
image018
  • Gọi hàm
image020

VD3: Viết chương trình đếm các số nguyên tố trong khoảng [2:100] ?

VD4: Viết hàm tính xn bằng hàm sử dụng đệ qui

Bước 1: Xác định tên hàm, input, output, thuật toán

  1. Tên hàm: LuyThua
  2. Input: 01 số thực x, 01 số nguyên dương n
  3. Output: xn là một số thực (float)
  4. Thuật toán đệ qui
    1. Điều kiện dừng: n=0 => Lũy thừa =1
    2. Điều kiện đệ qui n>0: LuyThua(x,n)=x*LuyThua(x,n-1);

Bước 2: Cài đặt chương trình

  • Tạo project mới
  • Cài đặt hàm
image022

Bài tập tương tự

Bài tập 1.Viết hàm tính diện tích hình tam giác khi biết ba cạnh của tam giác đó. Viết hàm main minh họa
Bài tập 2.Viết hàm tính tổng các số chẵn nhỏ hơn n cho trước.
Bài tập 3.Viế thàm tính n!=1*2*3*…*n

Bài tập 4.Viết hàm tính image024 (n dấu căn)

Bài tập 5.Viết hàm tính image027 sử dụng hàm đệ qui
Bài tập 6.Viết hàm tính tổng các ước của số nguyên n. Viết hàm main minh họa
Bài tập 7.Viết hàm cho biết số ngày của một tháng khi biết tháng và năm. Viết hàm main minh họa.
Bài tập 8.Viết hàm đổi chỗ 2 số nguyên x, y. Viết hàm main minh họa
Bài tập 9.Viết hàm tìm BCNN của hai số nguyên dương a và b
Bài tập 10.Viết hàm kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không?

Bài tập 11.Viết hàm xuất số đảo của số nguyên dương n.Viết hàm main minh họa
Bài tập 12.Nhập vào số nguyên dương h, viết hàm in ra màn hình các tam giác sau
image028
Bài tập 13.Nhập n>=0.  Viết hàm tính S(n)=1-2+3-4+ … +(-1)n-1n.

Bài tập 14.Nhập n>=0.  Viết hàm tính image027

Bài tập 15.Nhập n>=0.  Viết hàm tính image031

Bài tập 16.Nhập n>=0. .Viết hàm tính image033

Xem thêm Mảng một chiều

LEAVE A REPLY