Khái niệm hàmmà thực hiện một nhiệm vụ nào đó chỉ cần viết một lần và sau đó ta có thể sử dụng lại hàm đó nhiều lần tại bất kỳ nơi nào trong chương trình... Ví dụ: Khi cần tính cosx ta
Trang 1NGÔN NGỮ LẬP TRÌNH C++ 1
Tuần 5
Trang 2Nội dung trình bày
Trang 3Khái niệm hàm
lần để thực hiện một công việc nào đó Ta có thể tách đoạn mã đó thành một module cụ thể Sau đó thay cho việc viết lặp đi lặp lại đoạn mã, ta chỉ cần thực hiện module nhiều lần.
Trang 4Khái niệm hàm
cho việc viết 10 lần lặp đi lặp lại các đoạn mã tính n! Ta chỉ cần viết một module tính n!, sau đó gọi module này ra 10 lần Rõ ràng sau khi module hóa, chương trình của ta xây dựng ngắn và đơn giản hơn rất nhiều.
Trang 5Khái niệm hàm
mà thực hiện một nhiệm vụ nào đó chỉ cần viết một lần và sau đó
ta có thể sử dụng lại hàm đó nhiều lần tại bất kỳ nơi nào trong chương trình.
Trang 6Ưu điểm của việc sử dụng hàm
• Các công việc để giải bài toán được phân chia
một cách rõ ràng.
• Chương trình sáng sủa, dễ đọc, dễ sửa lỗi.
• Trừu tượng hoá thủ tục: Khi một hàm được xây
dựng và kiểm tra xong, ta không cần quan tâm đến nội dung của hàm.
• Hàm giúp che giấu thông tin.
• Hàm có thể được sử dụng lại nhiều lần.
Trang 7Các thư viện hàm trong C++
sẵn nhằm mang lại sự tiện dụng cho người lập trình Ví dụ: Khi cần tính cos(x) ta chỉ cần sử dụng hàm cos trong thư viện math.h
mà không cần quan tâm hàm cos đó được lập trình như thế nào.
Ví dụ: y = cox(x);
Trang 8Các thư viện hàm trong C++
– iostream: Là thư viện hướng đối tượng cung cấp các chức năng nhập / xuất dữ liệu.
– math: Là thư viện chứa các hàm toán học
– time: Là thư viện chuyên xử lý về thời gian
– stdlib: Thư viện này bao gồm các chức năng liên quan đến việc cấp phát, giải phóng bộ nhớ; Chuyển đổi các kiểu dữ liệu; Điều khiển tiến trình; Sắp xếp và tìm kiếm dữ liệu; Một số phép tính toán học.
Trang 9Các thư viện hàm trong C++
thư viện ở phía trên cùng của chương trình theo cú pháp sau:
#include <tên thư viện.h>
– Ví dụ: Ta muốn sử dụng hàm tính căn (sqrt), hàm này nằm ở thư viện math Vậy ta cần phai báo thư viện ở đầu chương trình như sau:
#include <math.h>
Trang 10Cú pháp hàm
• Ngoài việc sử dụng các hàm có sẵn trong các thư
viện, ta có thể tự xây dựng các hàm ở bên trong chương trình.
• Hàm không có giá trị trả về:
void <tên hàm>(tham số hình thức)
{
Nội dung hàm }
tham số hình thức: Chứa giá trị đầu vào của hàm Tham số này có thể có hoặc không có Nếu có nhiều hơn một tham
số thì các tham số cách nhau bởi dấu phảy.
Trang 11Cú pháp hàm
– Ví dụ:
void DHTL(){
cout << “DAI HOC THANG LONG” << endl;
}
cách nhau bởi một dấu trống
void vietSo(int n){
for (int i = 0; i < n; i++)
cout << i << “ “;
cout << endl;
Trang 12số cách nhau bởi dấu phảy.
giá trị trả về: Là giá trị mà hàm sẽ nhận được sau khi thực hiện xong Giá trị trả về có thể là một biến số hoặc hằng số hoặc một giá trị
cụ thể Tuy nhiên giá trị trả về phải cùng kiểu giá trị với kiểu giá trị trả về.
return: Hàm kết thúc ngay sau câu lệnh return Các câu lệnh sau lệnh return không được thực hiện.
Trang 13return (float) 3.14 * r * r;
Trang 14Thực hiện hàm (gọi hàm)
• Tại một vị trí trong chương trình, khi cần sử dụng một hàm nào đó, ta cần phải gọi hàm theo cú pháp sau:
– Đối với hàm không có giá trị trả về:
Trang 15Thực hiện hàm (gọi hàm)
– Đối với hàm có giá trị trả về: Về cú pháp gọi hàm cũng giống như hàm không có giá trị trả về, tuy nhiên hàm
có giá trị trả về có thể được ghép chung vào với các biểu thức hoặc phép gán, …
Trang 16int dtHCN = dienTichHCN(x, y);
cout << “DT Hinh chu nhat la: “ << dtHCN << endl;
float dtHT = dienTichHT(sqrt(pow(x,2) + pow(y,2))); cout << “DT Hinh tron la: “ << dtHT << endl;
}
Trang 17Nguyên mẫu hàm
hàm sẽ được sử dụng trong chương trình.
phần khai báo thư viện.
Trang 21Biến toàn cục và biến cục bộ
trong chương trình Biến toàn cục được khai báo ở bên ngoài hàm và thường nằm phía dưới khai báo thư viện.
– Ví dụ:
#include <iostream.h>
int x;
void main() {
cout << x << endl;
tangX();
cout << x << endl;
} void tangX() {
x = x + 1;
}
Trang 22Biến toàn cục và biến cục bộ
• Biến cục bộ được khai báo ở bên trong một khối
lệnh và chỉ có ý nghĩa ở trong khối lệnh đó.
– Ví dụ:
#include <iostream.h>
void main(){
}
Trang 23Biến toàn cục và biến cục bộ
• Nếu biến cục bộ được khai báo ở bên trong một hàm thì nó chỉ có ý
nghĩa ở trong hàm đó.
– Ví dụ:
#include <iostream.h>
void main() {
int x = 20;
x = x + 1;
cout << “x trong ham tangX: “ << x << endl;
}
Trang 24Tham số của hàm
hàm.
thì giá trị của tham số thực sẽ được truyền vào cho tham số hình thức để thực hiện làm đầu vào cho hàm.
Trang 28Case Study: Vẽ hình
– Bạn muốn vẽ hình một em bé như dưới đây
*
* *
* * / \
/ \
/ \
/ \
/ \
/ \
– Input: Không có gì
– Output: Hình em bé
– Nhận xét: Hình em bé có thể được vẽ dựa trên các hình đơn giản
như hình tròn, hai đường giao nhau, đường nằm ngang.
Trang 29Case Study: Vẽ hình
2 Thiết kế thuật toán
1 Vẽ một hình tròn
2 Vẽ một hình tam giác
3 Vẽ hai đường giao nhau
Làm mịn (refine) thuật toán
2 Vẽ một hình tam giác
Trang 30Case Study: Vẽ hình
• Sơ đồ cấu trúc của bài toán
Vẽ hình em bé
Vẽ hình tròn Vẽ hình tam giác Vẽ hai đường giao nhau
Vẽ hai đường giao nhau Vẽ đường ngang
Trang 34/ \ / \ / \
Trang 35Giải thích
– <kiểu giá trị trả về> <tên hàm>(<danh sách đối số>)
Trang 3719 cout<<" "<<kitu_dau<<" “<<kitu_dau<<endl;
20 cout<<" “<<kitu_dau<<“ “<<kitu_dau<<endl;
21 }
=> kitu_dau là hằng cục bộ của hàm ve_hinh_tron, nó
Trang 38Hàm không có đối số
void gioi_thieu()
{
cout<<“Chuong trinh nay duoc viet boi TM17”<<endl;
cout<<“Ban quyen 2004”<<endl;
cout<<“Phien ban 2.3”<<endl;
}
Trang 39Bài tập: Vẽ hình ngôi nhà
– Bạn muốn vẽ hình một ngôi nhà như dưới đây
/ \
/ \
/ \
| |
| |
| |
-– Input: Không có gì
– Output: Hình ngôi nhà
– Nhận xét: Hình ngôi nhà có thể được vẽ bởi các đường giao
nhau, đường nằm ngang và các đường song song.
Trang 41Bài tập: Vẽ hình ngôi nhà
• Sơ đồ cấu trúc của bài toán
Vẽ hình ngôi nhà
Vẽ hình tam giác Vẽ hai đường song song Vẽ đường ngang
Vẽ hai đường giao nhau Vẽ đường ngang
Trang 45Bài tập: Vẽ hình ngôi nhà
4 Kiểm tra chương trình
/ \
/ \
/ \
| |
| |
| |
Trang 46
-Bài tập về nhà
1 Vẽ hình tàu vũ trụ
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
| |
/ \
/ \
/ \
2 Viết chữ HELLO bằng các khối kí tự