1 ĐỊNH NGHĨA
Hàm (function) là một dãy các câu lệnh có thể tái sử dụng, được thiết kế để thực hiện một công việc cụ thể trong chương trình.
[< phần khai báo >]
<phần thân>
<Kiểu_trả_về> <tên_hàm> ( [khai báo các tham số hình thức])
{
[Khai báo các biến cục bộ]
[Các câu lệnh]
[return[biểu thức];]
}
Giải thích:
- <Kiểu_trả_về>: giá trị kiểu dữ liệu của dữ liệu sẽ trả về cho hàm
- <tên_hàm>: tên của hàm mà bạn muốn định nghĩa, được đặt theo qui tắc đặt tên của C
- [khai báo các tham số hình thức]: các tham số hình thức và kiểu của chúng
- [Khai báo các biến cục bộ]: khai báo các biến cục bộ, các biến này chỉ có tác dụng trong nội bộ hàm
- [return]: là lệnh thực hiện gán giá trị trả về cho hàm
- [biểu thức]: là giá trị trả về cho hàm, có thể là biến, hằng, biểu thức nhưng phải có giá trị xác định và có kiểu dữ liệu là kiểu đã khai báo cho hàm.
Các thành phần của chương trình:
a) Phần khai báo
Khai báo thư viện
Ví dụ. Khai báo thư viện
#include <stdio.h>
Khai báo hằng
Ví dụ. Khai báo hằng
const MaxN = 1000;
const PI = 3.1416;
Khai báo không gian tên
Khai báo biến
b) Phân thân chương trình
int main(){
............................
return 0;
}
2 PHÂN LOẠI
Trong nhiều ngôn ngữ lập trình, chương trình con thường gồm hai loại:
Trả về giá trị
Không trả về giá trị
Không trả về giá trị
Hàm xinchao() là chương trình con thực hiện thao tác nhất định là in ra dòng chữ "Xin chao lop 11b" nhưng không trả về giá trị nào qua tên của nó.
Vì vậy khi dùng Hàm xinchao() vào lệnh cout thì chương trình sẽ lỗi
BT 1
#include <iostream>
using namespace std;
void xinchao(){
cout<<"Xin chao lop 11b";
}
int main(){
xinchao();
return 0;
}
BT 2
#include <iostream>
using namespace std;
void nhap(int a, int b){
cout<<"bien a: "<<a<<endl<<"bien b: "<<b;
}
int main(){
nhap(2,3);
return 0;
}
BT 3
#include <iostream>
using namespace std;
void tongab(int a, int b){
int s=0;
s=a + b;
cout<<s;
}
int main(){
tongab(2,3);
return 0;
}
Có trả về giá trị
chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó.
Giá trị trả về là kết quả tính tổng của 2 số a và b nên ta có thể dùng cout để in ra màn hình
Khi không dùng lệnh cout thì sẽ không in ra được màn hình vì không lệnh hiển thị
#include <iostream>
using namespace std;
int tongab(int a, int b){
return a+b;
}
int main(){
cout<<tongab(2,3);
return 0;
}
3 CÁC BÀI TẬP VỀ HÀM
DẠNG KHÔNG TRẢ VỀ GIÁ TRỊ TRẢ VỀ
bt 1: Hàm in ra bảng cửu chương 2
void in_cuuchuong2(void)
{
for(int i=1;i<=10;i++)
printf(“2 x %d = %d\n”, i, i*2);
}
CÓ GIÁ TRỊ TRẢ VỀ
bt 2: Ta có chương trình chính (hàm main) dùng để nhập vào 2 số nguyên a,b và in ra màn hình số lớn trong 2 số
#include <stdio.h>
#include <conio.h>
int max(int a, int b)
{
return (a>b) ? a:b;
}
int main()
{
int a, b, c;
printf("\n Nhap vao 3 so a, b,c ");
scanf("%d%d%d",&a,&b,&c);
printf("\n So lon la %d",max(a, max(b,c)));
getch();
return 0;
}
BT 3: Viết hàm tìm ước chung lớn nhất giữa 2 số nguyên a, b. Cách tìm: đầu tiên ta giả sử UCLN của hai số là số nhỏ nhất trong hai số đó. Nếu điều đó không đúng thì ta giảm đi một đơn vị và cứ giảm như vậy cho tới khi nào tìm thấy UCLN
int ucln(int a, int b)
{
int u;
if (a<b)
u=a;
else
u=b;
while ((a%u !=0) || (b%u!=0))
u--;
return u;
}