Nội dung chính
1. Phân rã bài toán
2. Hàm
3. Tham chiếu và tham trị
4. Phạm vi của biến (scope)
5. Bài tập
21 trang |
Chia sẻ: tieuaka001 | Lượt xem: 566 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Tin học đại cương - Bài 4: Chương trình con, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TIN ĐẠI CƯƠNG
Bài 4: CHƯƠNG TRÌNH CON
1
Nội dung bài trước
I Nhập và xuất dữ liệu : cin, cout
I Các hàm toán học, thư viện
I Giới thiệu về hàm : khái niệm, cách viết, cách
gọi hàm
I Bài tập
2
Nội dung chính
1. Phân rã bài toán
2. Hàm
3. Tham chiếu và tham trị
4. Phạm vi của biến (scope)
5. Bài tập
3
1. Phân rã bài toán
I Ví dụ : In ra màn hình các thông số (chu vi,
diện tích, diện tích hình tròn ngoại tiếp) của
hình chữ nhật có hai cạnh cho trước.
→ có thể chia thành nhiều phần, mỗi phần có mục
đích khác nhau :
I tính chu vi hình chữ nhật
I tính diện tích hình chữ nhật
I tính diện tích hình tròn ngoại tiếp
I in ra các thông số của hình chữ nhật
4
Ví dụ
Nếu muốn in ra thông số của rất nhiều hình chữ nhật khác nhau
thì sao ? Nếu cần sửa code thì phải sửa ở rất nhiều chỗ ?
5
Phân rã bài toán
Ưu điểm :
I Một chương trình lớn có thể được chia ra/phân rã thành
các chương trình con (hàm). Điều này giúp chương trình
lớn dễ hiểu hơn
I Chương trình con được viết một lần, và có thể được sử
dụng ở nhiều nơi
I Mỗi hàm con thường nhỏ → việc kiểm tra tính đúng đắn
của hàm đó dễ dàng hơn
I Nếu xảy ra lỗi, chỉ cần sửa hàm con mà không phải thay
đổi toàn bộ cấu trúc chương trình lớn
6
2. Hàm
Nhắc lại :
I Hàm : đoạn chương trình máy tính thực hiện một nhiệm
vụ nào đó và trả về kết quả
I Cú pháp :
()
{
//nội dung thuật toán
}
7
I các kiểu dữ liệu cơ bản của C++ (int, float,
bool,. . .)
I các kiểu dữ liệu do người lập trình tạo ra (sẽ
học sau)
I kiểu “không là kiểu gì” : void
void InGiaTri(int a)
{
cout << "a = " << a << endl ;
return ; //không bắt buộc
}
8
,
I Nguyên tắc đặt tên giống như cách đặt tên biến
I Nên đặt tên hàm thể hiện được nội dung công
việc mà hàm làm
I Danh sách các biến cần trao đổi giữa hàm và
bên ngoài
I Danh sách có thể rỗng
Ví dụ :
void xinchao()
{
cout << "Xin chao cac ban !" ;
}
9
Khai báo, triển khai, gọi hàm
Cách 1
10
Khai báo, triển khai, gọi hàm
Cách 2
11
3. Tham chiếu và tham trị
Truyền bằng tham trị Truyền bằng tham chiếu
12
Truyền bằng tham trị Truyền bằng tham số
12
Truyền bằng tham trị
là truyền giá trị của các tham số
13
Truyền bằng tham trị
“a” ở đây là một biến mới
(có một vùng nhớ mới)
Nó được copy giá trị “a” từ ngoài vào
! Mọi thay đổi của “a” bên trong hàm này
không ảnh hưởng đến “a” bên ngoài
13
Truyền bằng tham chiếu
là truyền nơi lưu trữ trong bộ nhớ của các tham số thực sự cho
các biến tham chiếu
14
“a” ở đây KHÔNG là biến mới
Vẫn trỏ vào vùng nhớ của giá trị “a” bên ngoài
! Mọi thay đổi với “a” trong hàm này
cũng chính là thay đổi với “a” bên ngoài
Truyền bằng tham số
14
Tham chiếu và tham trị
I Truyền tham trị
I Cú pháp :
( tên biến)
Ví dụ : float TrungBinhCong(float x, float y) ;
I không làm thay đổi giá trị của các biến được truyền
I Truyền tham chiếu
I Cú pháp :
(& tên biến)
Ví dụ : float TrungBinhCong(float& x, float& y) ;
I những tác động lên biến tham chiếu bên trong hàm có ảnh
hưởng đến biến được truyền
I Có thể khai báo cả tham trị và tham chiếu
trong danh sách
Ví dụ : float TrungBinhCong(float& x, float y) ;
15
Khi nào truyền tham chiếu
I Có những trường hợp bắt buộc phải dùng tham
chiếu
I Trong trường hợp nếu truyền tham chiếu hay
tham trị đều giải quyết được vấn đề :
I Sử dụng tham trị khi dữ liệu truyền cho hàm là các dạng dữ
liệu cơ bản (char, int, float, bool,. . .)
I Sử dụng tham chiếu cho các trường hợp khác (ví dụ vector,
string, . . .) để tránh việc copy dữ liệu quá lớn
16
4. Phạm vi của biến (scope)
I Biến toàn cục (global) được khai báo bên ngoài
tất cả các hàm
I Biến cục bộ (local) được khai báo bên trong
một hàm hoặc một khối lệnh (giữa hai dấu { })
I Sau khi được khai báo, biến toàn cục có thể
được sử dụng ở bất cứ chỗ nào trong chương
trình
I Phạm vi của biến cục bộ chỉ giới hạn trong khối
lệnh nơi nó được khai báo
17
Phạm vi của biến
I đa số các biến có phạm vi cục bộ
I các khai báo hàm thường có phạm vi toàn cục
I các hằng thường được khai báo ở phạm vi toàn cục
//tinh dien tich hinh tron
#include
using namespace std;
const double pi = 3.14159;
double dientich(double r)
{
double dt;
dt = pi * r * r;
return dt;
}
int main()
{
double bankinh = 2.;
cout << "Dien tich " << dientich(bankinh);
return 0;
}! !
Biến!toàn!cục!!
Biến!cục!bộ!!
18
5. Bài tập
Bài 1
Có lỗi ở chương trình dưới đây. Hãy tìm và sửa nó.
#include
using namespace std ;
void TichHaiSo(int x, int y)
{
return x * y ;
}
int main()
{
cout << TichHaiSo(4, 5) << endl ;
return 0 ;
}
19
Bài tập
Bài 2
Có lỗi ở chương trình dưới đây. Hãy tìm và sửa nó.
#include
using namespace std ;
int TichHaiSo(int x, int y)
{
int ketqua = x * y ;
}
int main()
{
cout << TichHaiSo(4) << endl ;
return 0 ;
}
20
Bài tập
Bài 3
Viết chương trình con tính tổng của ba số thực và nhân tổng
đó với 5.
Bài 4
Viết chương trình con có kiểu trả về void để chuyển đơn vị từ
g sang kg.
Bài 3
Viết chương trình con hoán đổi giá trị hai số thực.
21
Các file đính kèm theo tài liệu này:
- tin_hoc_dai_cuongbai4_9138.pdf