Buổi 4: Hàm và thủ tục
Phân rã bài toán
Hàm
Thủ tục
Các cách truyền tham số
Phạm vi và vòng đời
19 trang |
Chia sẻ: phuongt97 | Lượt xem: 437 | Lượt tải: 0
Nội dung tài liệu Bài giảng Tin đại cương - Buổi 4: Hàm và thủ tục - Lý Anh Tuấn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1
Môn học Tin đại cương
Lý Anh Tuấn
Bộ môn Khoa học máy tính, Khoa Công nghệ
thông tin, Trường đại học Thủy Lợi
2
Buổi 4: Hàm và thủ tục
Phân rã bài toán
Hàm
Thủ tục
Các cách truyền tham số
Phạm vi và vòng đời
3
Phân rã bài toán
Bài toán lớn có thể được chia thành các bài toán nhỏ
tương đối độc lập, mỗi bài toán nhỏ có thể được giải
quyết bằng một chương trình con (hàm hoặc thủ tục)
Hàm:
Trả về giá trị thông qua lời gọi
Không thao tác với dữ liệu bên ngoài hàm
Không gây ra hiệu ứng phụ
Thủ tục:
Không trả về giá trị thông qua lời gọi
Làm thay đổi giá trị của các biến tham chiếu
Có thể gây ra các hiệu ứng phụ
4
Khai báo hàm
Cách khai báo hàm
Kiểu_dữ_liệu Tên_hàm(danh_sách_tham_số_hình_thức);
Kiểu_dữ_liệu là kiểu dữ liệu trả về của hàm
danh_sách_tham_số_hình_thức là các cặp kiểu dữ
liệu, tên tham số cách nhau bởi dấu phẩy
Ví dụ:
double binhphuong(double x);
int nhan2so(int m, int n);
int phepcong(int a, int b)
5
Định nghĩa hàm
Định nghĩa hàm có dạng
Kiểu_dữ_liệu Tên_hàm(danh_sách_tham_số_hình_thức)
{ Các câu lệnh }
Các câu lệnh còn gọi là thân hàm cung cấp cách
thức tính toán để sinh ra kết quả
Ví dụ:
1. int phepcong(int a, int b){
2. int r;
3. r=a+b;
4. return(r);
5. }
6
Hàm
Trong phần thân hàm có câu trả về dạng:
return biểu_thức; // ví dụ: return(r);
Câu lệnh này làm kết thúc hàm và trả về giá trị của
biểu thức thông qua lời gọi hàm
Lời gọi hàm có dạng
Tên_hàm(danh_sách_tham_số_thực_sự)
ví dụ: z = phepcong(5, 3);
Giá trị của các tham số thực sự được dùng để khởi
tạo giá trị cho các tham số hình thức tương ứng
7
Tên hàm
Các tham số hình thức
Định nghĩa hàm
Lời gọi hàm
Các tham số thực sự
1. #include
2. using namespace std;
3. int phepcong(int a, int b)
4. {
5. int r;
6. r=a+b;
7. return (r);
8. }
9. int main(){
10. int z;
11. z = phepcong(5,3);
12. cout << "Ket qua la " << z;
13. return 0;
14. }
Hàm
8
Tên hàm
Các tham số hình thức
Khai báo hàm
Định nghĩa hàm
1. #include
2. using namespace std;
3. int phepcong(int a, int b);
4. int main(){
5. int z;
6. z = phepcong(5,3);
7. cout << "Ket qua la " << z;
8. return 0;
9. }
10. int phepcong(int a, int b)
11. {
12. int r;
13. r=a+b;
14. return (r);
15. }
Hàm
Lời gọi hàm
Các tham số thực sự
9
Khai báo thủ tục
Khai báo và định nghĩa thủ tục giống với khai báo và
định nghĩa hàm trừ việc nó không trả về giá trị
Cách khai báo thủ tục
void Tên_thủ_tục(danh_sách_tham_số_hình_thức);
ví dụ: void Loichao();
Định nghĩa thủ tục có dạng
void Tên_thủ_tục(danh_sách_tham_số_hình_thức)
{ Các câu lệnh }
nếu có câu lệnh trả về thì chỉ cần viết dưới dạng
return;
10
Thủ tục
11
Thủ tục
12
Các cách truyền tham số
Truyền theo tham trị: Truyền giá trị cho các tham số
hình thức
Các hàm và thủ tục đã định nghĩa đều sử dụng cách truyền
theo tham trị
Truyền theo tham biến: Truyền nơi lưu trữ trong bộ
nhớ của các biến thực sự cho các biến tham chiếu
Biến tham chiếu được khai báo trong danh sách các
tham số hình thức của thủ tục bằng theo cách:
kiểu_dữ_liệu & tên_biến
13
Truyền theo tham biến
14
Các cách truyền tham số
Truyền theo tham trị không làm thay đổi giá
trị của các biến được truyền
Truyền theo tham biến thì những tác động
lên biến tham chiếu trong phần thân thủ tục
đều ảnh hưởng đến biến được truyền
15
Phạm vi của biến
Biến toàn cục được khai báo bên ngoài tất cả
các hàm
Biến cục bộ được khai báo bên trong một
hàm hoặc một khối lệnh
Sau khi được khai báo, biến toàn cục có thể
sử dụng ở bất cứ chỗ nào trong chương trình
Phạm vi của biến cục bộ chỉ giới hạn trong
khối lệnh (trong cặp {}) nơi nó được khai báo
16
Phạm vi của biến
Biến toàn cục
Biến cục bộ
17
Phạm vi và vòng đời
Đa số các biến đều có phạm vi cục bộ
Các khai báo hàm và thủ tục thường có phạm vi toàn cục.
Các hằng cũng thường được khai báo ở phạm vi toàn cục
18
Phạm vi và vòng đời
Vòng đời là khoảng thời gian thuật toán có thể thực hiện việc
đọc ghi giá trị cho biến
Ví dụ:
Vòng đời của i: từ dòng 1 đến dòng 9
Vòng đời của j: từ dòng 4 đến dòng 9
Vòng đời của k: k chỉ có vòng đời khi i=3
19
Bài tập
Nhập x từ bàn phím. Tính và hiển thị lên màn hình
giá trị biểu thức sau:
y = (a3 + 2a)/ln(b2+21)
trong đó : a=2x +1 ; b=|x| +1
Viết hàm trả về phần nguyên của phép chia hai số
nguyên
Viết thủ tục trả về số đứng liền trước và số đứng sau
của tham số thứ nhất, giá trị được trả về thông qua
tham số thứ hai và thứ ba
Viết chương trình con hoán đổi giá trị hai số thực
Các file đính kèm theo tài liệu này:
- bai_giang_tin_dai_cuong_buoi_4_ham_va_thu_tuc_ly_anh_tuan.pdf