Professional Documents
Culture Documents
Tháng 1/2020
Chuẩn đầu ra
Hiểu được các khái niệm mở rộng trong ngôn ngữ lập
trình C++ hỗ trợ cho lập trình hướng đối tượng
Sử dụng được các mở rộng của C++ trong lập trình
Slide 2
Nội dung
Toán tử xuất
Toán tử nhập
Toán tử phạm vi
Hàm inline
Tham chiếu
Định nghĩa chồng hàm
Định nghĩa chồng toán tử
Các toán tử cấp phát và giải phóng bộ nhớ động
Bài tập
Slide 3
Toán tử xuất
Slide 4
Toán tử nhập
Slide 5
Ví dụ về toán tử xuất/nhập
Slide 6
Toán tử phạm vi
Slide 7
Toán tử phạm vi (tiếp)
Slide 8
Biến tham chiếu
Slide 10
Hàm có đối là tham chiếu
Slide 11
Hàm có đối là tham chiếu (tiếp)
Slide 12
Hàm có đối là tham chiếu (tiếp)
Slide 14
Hàm trả về tham chiếu (tiếp)
Slide 15
Tham số ngầm định của hàm
Slide 16
Tham số ngầm định của hàm (tiếp)
Slide 17
Tham số ngầm định của hàm (tiếp)
Chương trình chính:
int main() {
cout<<"Dien tich :"<<dientich(); // ok
cout<<"Dien tich :"<<dientich(3); // ok
cout<<"Dien tich :"<<dientich(2,3); // ok
cout<<"Chu vi :"<<chuvi(); // !ok
cout<<"Chu vi :"<<chuvi(3); // ok
cout<<"Chu vi :"<<chuvi(2,3); // ok
}
Slide 18
Tham số ngầm định của hàm (tiếp)
Slide 19
Hàm inline
hàm
Chương trình Lời gọi hàm
Slide 20
Hàm inline
Khi có lời gọi hàm trong chương trình thì chương
trình phải thực hiện:
• Lưu các trạng thái đang thực hiện dở.
• Lưu địa chỉ trở về.
• Chuyển sang thực hiện hàm.
• Cấp phát bộ nhớ cục bộ của hàm.
• Thực hiện hàm.
• Giải phóng vùng nhớ cục bộ.
• Khôi phục các trạng thái đã cất và thực hiện tiếp
chương trình.
Slide 21
Hàm inline (tiếp)
Slide 22
Hàm inline (tiếp)
Slide 23
Định nghĩa chồng hàm
Slide 24
Định nghĩa chồng hàm (tiếp)
Slide 25
Định nghĩa chồng hàm (tiếp)
• Hàm tìm max của 2 ký tự:
char max(char x, char y) {
return (x>y) ? x:y;
}
Chương trình chính:
int main() {
cout<<"\n Max ="<< max(2,5); // gọi hàm max nào?
cout<<"\n Max ="<< max(2.5,5.5); // gọi hàm max nào?
cout<<"\n Max ="<< max('a', ' c' ); // gọi hàm max nào?
}
Slide 26
Định nghĩa chồng toán tử
Slide 27
Định nghĩa chồng toán tử (tiếp)
Slide 28
Định nghĩa chồng toán tử (tiếp)
Sử dụng các hàm đã viết tính giá trị của biểu thức
• s = -a+b–c;
• với a, b, c, s là các phân số.
Cách viết:
• s = cong(daodau(a),tru(b,c)) hoặc
• s = tru(cong(daodau(a),b),c)
Nhận xét:
• Cách biểu diễn là không duy nhất.
• Cách biểu diễn rất phức tạp, không thể hiện rõ công thức.
Slide 29
Định nghĩa chồng toán tử (tiếp)
Slide 30
Định nghĩa chồng toán tử (tiếp)
Slide 31
Định nghĩa chồng toán tử (tiếp)
• Phép toán -
ps operator - (ps a, ps b) {
ps c;
c.ts = a.ts*b.ms - a.ms*b.ts;
c.ms = a.ms*b.ms;
return c;
}
Định nghĩa tương tự cho -, *, /, -(đảo dấu),...
Slide 32
Định nghĩa chồng toán tử (tiếp)
Slide 33
Toán tử new và delete
Toán tử new
• Dùng để cấp phát bộ nhớ động
• Cú pháp: <con trỏ> = new <type>[n] (n0)
• Chẳng hạn:
float *x = new float[50];
char *s = new char[30];
Toán tử delete
• Dùng để xoá vùng nhớ đã cấp bởi toán tử new.
• Chẳng hạn: delete x; delete s;
Slide 34
Toán tử new và delete (tiếp)
Slide 35
Bài tập
Slide 36
Bài tập (tiếp)
• Định nghĩa toán tử -(đảo dấu).
• Định nghĩa các toán tử so sánh: >, >=, <, <=, ==, !=;
• Định nghĩa các toán tử: ++, --, +=, -=, *=,/=
• Viết chương trình nhập vào 2 phân số, minh hoạ các
phép toán trên.
• Viết chương trình nhập vào 1 mảng a gồm n phân
số:
• Tính tổng, tích của mảng
• Tìm phân số lớn nhất, bé nhất.
Slide 37
Bài tập (tiếp)
Bài tập 2.2: Cho phức
• struct complex{cấu trúc số phức
float pt;
float pa;
• }
• Viết hàm nhập 1 số phức
• Viết hàm in 1 số phức
• Định nghĩa các toán tử: +, -, *.
• Viết chương trình nhập 2 số phức, tính và in ra tổng,
hiệu, tích của chúng.
Slide 38
LOGO