Bài giảng Tin học đại cương - Bài 3: Hàm - Phạm Xuân Cường

TIN HỌC ĐẠI CƯƠNG  
BÀI 3: HÀM  
Phạm Xuân Cường  
Khoa Công nghệ thông tin  
Nội dung bài giảng  
•
•
Phân rã vấn đề  
Định nghĩa hàm  
•
•
•
Truyền tham số  
Phạm vi của biến  
Hàm chung  
1
Phân rã vấn đề  
Phân rã vấn đề  
• Phân rã một vấn đề lớn, phức tạp thành các vấn đề nhỏ hơn,  
dễ giải quyết hơn  
√
• VD: Phân rã vấn đề tính giá trị biểu thức P =x2 + x + 1  
thành các vấn đề nhỏ hơn  
- VĐ nhỏ 1: Nhập giá trị cho x  
- VĐ nhỏ 2: Tính giá trị của P  
- VĐ nhỏ 3: In giá trị của P ra màn hình  
2
Phân rã vấn đề trong C++ dùng hàm  
• Phân rã vấn đề:  
VĐ lớn  
→
→
→
→
→
Chương trình C++  
Hàm 1  
VĐ nhỏ 1  
VĐ nhỏ 1.1  
VĐ nhỏ 1.2  
VĐ nhỏ 2  
Hàm 1.1  
Hàm 1.2  
Hàm 2  
• Các công việc dùng thường xuyên cũng thường được viết  
thành hàm (như các hàm toán học trong thư viện C++  
chuẩn)  
3
Trước đây ta đã biết cách gọi hàm trong thư viện C++ chuẩn  
#include <iostream>  
using namespace std;  
int main()  
{
double x = 1.44;  
double y = sqrt(1.44); // goi ham sqrt  
cout << y; // se in ra 1.2  
return 0;  
}
4
Bây giờ ta sẽ tự viết hàm của mình  
#include <iostream>  
using namespace std;  
// Viet ham tinh tong cua hai so  
double tinh_tong(double x,double y)  
{
double z = x + y;  
return z;  
}
int main()  
{
cout << tinh_tong(1.2, 1.3); // goi ham vua viet  
return 0;  
}
5
Định nghĩa hàm  
Định nghĩa hàm  
<kiểu> <tên hàm> (danh sách tham số)  
{
các câu lệnh  
}
• Danh sách tham số gồm không, một hoặc nhiều tham số  
(hình thức)  
- Mỗi tham số có dạng: <kiểu> <tên tham số>  
- Các tham số cách nhau bởi dấu phẩy  
• Hàm phải trả về một giá trị có kiểu phù hợp với kiểu đã khai  
báo thông qua câu lệnh sau:  
return <biểu thức>;  
6
Ví dụ định nghĩa hàm  
double tinh_tong(double x, double y)  
{
double z = x + y;  
return z;  
}
Trong ví dụ này:  
- Kiểu trả về: double  
- Tên hàm: tinh_tong  
- Danh sách tham số hình thức gồm x và y (đều có kiểu double)  
- Thân hàm (đặt giữa hai dấu ngoặc móc) gồm hai câu lệnh,  
trong đó có câu lệnh return để trả về giá trị cho hàm  
7
Gọi hàm  
• Cú pháp lời gọi hàm:  
<tên hàm> (danh sách tham số)  
• Các tham số trong lời gọi hàm được gọi là tham số thực sự  
(để phân biệt với tham số hình thức trong định nghĩa hàm)  
• Vị trí của lời gọi hàm:  
- Trong phép gán:  
double tong = tinh_tong(1.2, 1.3);  
- Trong biểu thức:  
double x = tinh_tong(1.2, 1.3) + 2;  
8
Hàm không có giá trị trả về  
• Viết theo cú pháp sau:  
void <tên hàm> (danh sách tham số)  
{
các câu lệnh  
}
• Ở đây, void là kiểu dữ liệu đặc biệt, chỉ ra rằng hàm không trả  
về giá trị → thân của hàm không có câu lệnh return <bt>;  
• Hàm không có giá trị trả về còn được gọi là thủ tục  
9
Ví dụ hàm không có giá trị trả về  
#include <iostream>  
using namespace std;  
// Viet ham in loi chao ra man hinh  
void in_loi_chao()  
{
cout << "Xin chao cac ban";  
}
int main()  
{
in_loi_chao(); // Ham kieu void dung doc lap  
// thanh mot cau lenh  
return 0;  
}
10  
Cấu trúc chương trình với hàm  
. . .  
định nghĩa hàm 1  
định nghĩa hàm 2  
int main()  
{
. . .  
gọi hàm 1  
. . .  
gọi hàm 2  
. . .  
}
11  
Làm việc với hàm  
Viết hai hàm, một tính tổng và một tính hiệu của hai số thực, sau  
đó gọi chúng trong hàm main  
#include <iostream>  
using namespace std;  
double tinh_tong(double x, double y)  
{
double t = x + y;  
return t;  
}
double tinh_hieu(double x, double y)  
{
double h = x - y;  
return h;  
}
12  
Làm việc với hàm (tiếp)  
int main()  
{
double a, b;  
cout << "Nhap so thu nhat: "; cin >> a;  
cout << "Nhap so thu hai: "; cin >> b;  
// Chu y: Trong cac dinh nghia ham luc truoc,  
// x va y la cac tham so hinh thuc, con o day  
// a va b la cac tham so thuc su.  
double tong = tinh_tong(a, b);  
double hieu = tinh_hieu(a, b);  
cout << "Tong la " << tong << endl;  
cout << "Hieu la " << hieu << endl;  
return 0;  
}
13  
Truyền tham số  
Truyền tham số cho hàm  
• Tham số hình thức là tham số trong định nghĩa hàm  
double tinh_tong(double x, double y)  
{ . . . }  
• Tham số thực sự là tham số trong lời gọi hàm  
double tong = tinh_tong(a, b);  
• Truyền tham số là quá trình truyền một tham số thực sự vào  
một tham số hình thức trong lời gọi hàm  
- Ví dụ: truyền a vào x và truyền b vào y  
14  
Hai kiểu tham số hình thức  
• Tham trị  
- Sao chép tham số thực sự sang tham số hình thức. Ví dụ: Gán  
a cho x và gán b cho y.  
- Khai báo như thông thường  
• Tham chiếu  
- Tham số hình thức và tham số thực sự đồng nhất với nhau  
- Ví dụ: x và a là một, y và b là một → nếu thay đổi x và y  
trong hàm thì a và b cũng thay đổi theo  
- Kiểu tham số này có cách khai báo riêng (sẽ xem sau)  
15  
Ví dụ về tham số kiểu tham trị  
#include <iostream>  
using namespace std;  
// n la tham so hinh thuc kieu tham tri  
void thay_doi(int n)  
{
n += 2; // Tang n len 2 don vi nhung tham so thuc su (k)  
// truyen vao n se khong bi anh huong.  
}
int main()  
{
int k = 3; // k la tham so thuc su  
cout << "Truoc khi goi ham: k = " << k << endl; // k = 3  
thay_doi(k); // gia tri cua k se duoc gan cho n  
cout << "Sau khi goi ham: k = " << k << endl; // k = 3  
return 0;  
}
16  
Tải về để xem bản đầy đủ
pdf 36 trang baolam 17360 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 3: Hàm - Phạm Xuân Cường", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_3_ham_pham_xuan_cuong.pdf