HƯỚNG THỦ TỤC, HÀM Khái niệm: Trong phương pháp này người ta xem chương trình là một hệ thống các thủ tục và hàm.. TRÌNH HƯỚNG ĐƠN THỂ Khái niệm: Trong phương pháp này người ta xem ch
Trang 1Chương 1
Ôn Tập
Trang 3 Bài toán: Viết chương trình nhập
họ tên, điểm toán, điểm văn của một
điểm trung bình và xuất kết quả.
2 BÀI TOÁN
Trang 43 BIẾN TOÀN CỤC
Khái niệm:Biến toàn cục là biến
được khai báo bên ngoài tất cả các hàm và được hiểu bên trong tất cả các hàm.
Thông thường biến toàn cục
được khai báo ở đầu chương trình.
Lưu ý: Biến khai báo bên trong
thân hàm main không là biến toàn cục mà là biến cục bộ của hàm main.
Trang 528. printf(“\n Van: %d” , van);
29. printf(“\n Trung binh:%f”,
dtb);
30.}
Trang 64 BIẾN CỤC BỘ
Khái niệm: Biến cục bộ là
biến đƣợc khai báo và đƣợc hiểu bên trong một phạm vi nào đó của chtrình, ra khỏi phạm vi này biến không còn đƣợc biết đến nữa vì không
biến đƣợc tự động thu hồi.
Thông thường biến cục bộ được
khai báo bên trong thân của một hàm hay một khối lệnh
Lưu ý: Một biến được khai báo
bên trong thân hàm main là biến cục bộ của hàm main.
Trang 728. printf(“\n Van: %d” , van);
29. printf(“\n Trung binh:%f” ,
dtb);
30.}
Trang 9TRÌNH C ĐƠN GIẢN
chương trình C cơ bản bao gồm 3 khối lệnh chính như sau: khối
nghĩa hàm Ba khối lệnh này được trình bày theo thứ tự của hình vẽ bên dưới.
Trang 10TRÌNH C ĐƠN GIẢN
Khối khai báo
Khối hàm main
Khối định nghĩa
1
2
3
Trang 11TRÌNH C ĐƠN GIẢN
Khối khai báo: chứa các khai
báo hàm, khai báo biến toàn cục, khai báo sử dụng thư viện, khai báo hằng, khai báo kiểu dữ liệu…
Khối hàm main: chứa duy nhất
hàm main và thân hàm của nó Trong thân hàm main chứa các lời gọi hàm cần thiết cho chương trình.
Khối định nghĩa hàm: chứa các
định nghĩa hàm đã được khai báo trong khối khai báo.
Trang 12 Bài toán: Viết chương trình nhập
họ tên, điểm toán, điểm văn của một
điểm trung bình và xuất kết quả.
5.2 CHƯƠNG TRÌNH
Trang 176 THAM SỐ VÀ HÀM
Khái niệm: Các thông số đầu
vào của một hàm đƣợc gọi là tham số của hàm.
Phân loại tham số: có 2 loại
tham số là tham trị và tham biến.
Tham trị: Không đổi
Tham biến: Thay đổi
Cấp phát bộ nhớ:
Tham trị: Cấp phát
Tham biến: Không cấp phát bộ
nhớ khi hàm được gọi thực hiện
mà sử dụng bộ nhớ của đối số
Trang 186 THAM SỐ VÀ HÀM
1. #include <conio.h>
2. #include <stdio.h>
3. void Nhap(char [],int&,int &);
4. void XuLy(int, int, float &);
5. void Xuat(char[],int,int,float);
Trang 216 THAM SỐ VÀ HÀM (tiếp)
1. void Nhap(char hoten[30],
int &toan, int &van)
Trang 2320.typedef struct HocSinh HOCSINH;
21.void Nhap(HOCSINH &);
22.void Xuat(HOCSINH);
23.void XuLy(HOCSINH&);
Trang 278 ỨNG DỤNG
Viết chương trình nhập vào một phân
số Rút gọn phân
số đó và xuất kết quả.
Trang 288 ỨNG DỤNG
Viết chương trình nhập vào tọa độ 2
phẳng Oxy Tính khoảng cách giữa
quả
Trang 299 BÀI TẬP
nhập vào một phân số.
nhập tọa độ hai điểm trong không gian Tính khoảng cách giữa chúng
Trang 30nhập vào hai phân số.
thương giữa chúng và xuất kết quả.
Trang 319 BÀI TẬP
nhập vào 2 số phức Tính tổng, hiệu, tích và xuất kết quả.
nhập vào một ngày Tìm
quả.
Trang 339 BÀI TẬP
nhập tọa tâm và bán kính của một đường tròn Tính diện tích và chu vi của đường tròn.
Trang 349 BÀI TẬP
Yêu cầu chung:
Làm tất cả các bài tập trong một workspace có tên là MSSV_BT01.
Trong workspace có 9 project tương ứng với từng bài tập.
Nộp bài tập lên hệ thống Moodle theo qui định.
Trang 35Chương 2 CÁC PHƯƠNG PHÁP
LẬP TRÌNH
Trang 361 MỤC TIÊU
Trong chương này các sinh viên
sẽ có một cái nhìn sơ bộ về các phương pháp lập trình khác nhau:
Phương pháp lập trình hướng lệnh.
Phương pháp lập trình hướng thủ tục, hàm.
Phương pháp lập trình hướng đơn thể.
Phương pháp lập trình hướng đối tượng (Tên Môn Học).
Trang 37LẬP TRÌNH HƯỚNG LỆNH
Khái niệm: Trong phương pháp này người ta xem chương trình là tập hợp các lệnh Khi đó việc viết chương trình là xác định xem chương trình gồm những lệnh nào, thứ tự thực hiện của các lệnh ra sao.
Trang 38LẬP TRÌNH HƯỚNG LỆNH
Hình vẽ
chương trình
lệnh
Trang 39HƯỚNG THỦ TỤC, HÀM
Khái niệm: Trong phương pháp này người ta xem chương trình là một hệ thống các thủ tục và hàm Trong
đó, mỗi thủ tục và hàm là một dãy các lệnh được sắp thứ tự Khi đó, việc viết chương trình là xác định xem chương trình gồm các thủ tục và hàm nào, mối quan hệ giữa chúng ra sao?
Trang 40HƯỚNG THỦ TỤC, HÀM
Hình vẽ
chương trình
LệnhHàm
void main() {
}
Khối khai báo
Thủ tục
…
Trang 41TRÌNH HƯỚNG ĐƠN THỂ
Khái niệm: Trong phương pháp này người ta xem chương trình là 1 hệ thống các đơn thể, mỗi một đơn thể là 1 hệ thống các thủ tục
và hàm Khi đó, việc viết chương trình là xác định
những đơn thể nào? Đơn thể nào đã có sẵn, đơn thể nào phải đi mua và đơn thể nào phải tự viết.
Trang 42TRÌNH HƯỚNG ĐƠN THỂ
Phân loại đơn thể: Người ta chia đơn thể thành 2 loại là đơn thể hướng dữ liệu và đơn thể hướng chức năng.
Trang 43TRÌNH HƯỚNG ĐƠN THỂ
Phân loại đơn thể
Đơn thể hướng dữ liệu: là đơn thể được thiết kế và xây dựng để phục vụ cho một kiểu dữ liệu nào đó bên trong chương trình.
Ví dụ: Thư viện string.h
Trang 44TRÌNH HƯỚNG ĐƠN THỂ
Phân loại đơn thể
Đơn thể hướng chức năng:
là đơn thể được thiết kế và
một nhóm chức năng nào
đó bên trong chương trình.
Ví dụ: Thư viện math.h
Trang 45TRÌNH HƯỚNG ĐƠN THỂ
void main() {
} Khối khai báo
chương trình
Đơn thể 2
Đơn thể n
Trang 46TRÌNH HƯỚNG ĐỐI TƯỢNG
Khái niệm: Trong phương pháp này người ta xem chương trình là một hệ thống các đối tượng Mỗi một đối tượng là sự bao bọc bên trong nó 2 thành phần:
Trang 47phần
Trang 48TRÌNH HƯỚNG ĐỐI TƯỢNG
Mỗi một đối tượng sẽ được cài đặt bên trong chương trình dưới dạng đơn thể chứa dữ liệu Thêm vào đó
tính chất kế thừa cho phép chúng ta xây dựng đối tượng mới dựa trên cơ sở đối tượng đã có.
Trang 49Chương 3 LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG VỚI C++
Trang 500 ĐẶT VẤN ĐỀ
Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh Tính điểm trung bình và xuất kết quả.
Trang 511 LỚP ĐỐI TƢỢNG (class)
Khái niệm: Lớp đối tượng tượng hiểu một cách đơn giản nhất là sự tích hợp của hai thành phần: Thành phần
Trang 521 LỚP ĐỐI TƢỢNG (class)
Ví dụ: Hãy khai báo lớp cho bài toán
được nêu ra trong phần đặt vấn đề
Trang 542 ĐỐI TƢỢNG (object)
Khái niệm: Đối tƣợng là một sự thể hiện của một lớp Trong một lớp có thể
có nhiều sự thể hiện khác nhau Nói một cách khác:
có thể có nhiều đối tƣợng cùng thuộc về một lớp.
Cú pháp khai báo đối tượng.
1 CTenLop <Tenđt>;
Trang 552 ĐỐI TƢỢNG (object)
Ví dụ 1: CHocSinh x;
Trong ví dụ trên ta nói x là một đối tượng thuộc về lớp đối tượng CHocSinh.
Ví dụ 2: CHocSinh a,b;
CHocSinh y;
Trong ví dụ trên ta nói a,b,y là
ba đối tượng thuộc về lớp đối tượng CHocSinh Nói một cách khác: Lớp đối tượng CHocSinh
có ba sự thể hiện khác nhau.
Trang 573 PHƯƠNG THỨC (method)
Ví dụ 1: Định nghĩa phương thức nhập của lớp CHocSinh.
1. void CHocSinh::Nhap()
Trang 583 PHƯƠNG THỨC (method)
Ví dụ 2: Định nghĩa phương thức XuLy của lớp CHocSinh.
1. void CHocSinh::XuLy()
2. {
3. dtb=(float)(toan+van)/2;
4. }
Trang 593 PHƯƠNG THỨC (method)
Ví dụ 3: Định nghĩa phương thức Xuat của lớp CHocSinh.
1. void CHocSinh::Xuat()
Trang 604 ĐỐI TƢỢNG HÀNH ĐỘNG
Khái niệm: Đối tượng hành động là đối tượng gọi thực hiện phương thức mà lớp đối tượng
Trang 614 ĐỐI TƯỢNG HÀNH ĐỘNG
Ví dụ 1:
1 CHocSinh hs;
2 hs.Nhap();
Trong câu lệnh thứ hai của
đoạn chương trình trên ta nói: đối tượng hs gọi thực hiện phương thức Nhập
Trang 62 Trong câu lệnh thứ hai của
đoạn chương trình trên ta nói: đối tượng a gọi thực hiện phương thức Nhập
…v v
Trang 63hotentoanvandtb
hotentoanvandtb
void Nhap()void Xuat()void XuLy()
Trang 644 ĐỐI TƢỢNG HÀNH ĐỘNG
Ví dụ 1: Định nghĩa phương thức nhập của lớp CHocSinh.
1. void CHocSinh::Nhap()
Trang 654 ĐỐI TƢỢNG HÀNH ĐỘNG
Ví dụ 2: Định nghĩa phương thức XuLy của lớp CHocSinh.
1. void CHocSinh::XuLy()
2. {
3. dtb=(float)(toan+van)/2;
4. }
Trang 664 ĐỐI TƢỢNG HÀNH ĐỘNG
Ví dụ 3: Định nghĩa phương thức Xuat của lớp CHocSinh.
1. void CHocSinh::Xuat()
Trang 67kết quả.
Chương trình
Trang 716 ỨNG DỤNG
6.1 Ứng dụng 1: Viết chương trình nhập vào một phân số Rút gọn phân số đó và xuất kết quả.
Chương trình
Trang 756 ỨNG DỤNG
6.2 Ứng dụng 2: Viết chương trình nhập
trong mặt phẳng Oxy.
giữa chúng và xuất kết quả.
Chương trình
Trang 867 BÀI TẬP VỀ NHÀ
tập của chương 01 bằng phương pháp lập trình hướng đối tượng (9 bài).
Trang 87Chương 4
SƠ LƯỢC THƯ VIỆN
IOSTREAM.H
Trang 881 VÍ DỤ DẪN NHẬP 1
Bài toán: Viết lệnh nhập giá trị cho
một số nguyên a và xuất số nguyên
ra màn hình bằng cách sử dụng thưviện iostream.h
Phong cách cũ
1. int a;
2. printf(“Nhap mot so nguyen:”);
3. scanf(“%d”,&a);
4. printf(“So nguyen vua nhap:%d”,a);
Đoạn chương trình với thư viện
Trang 892 VÍ DỤ DẪN NHẬP 2
Bài toán: Viết hàm nhập thông
tin của một phân số bằng cách
sử dụng thư viện iostream.h
Trang 91 Nhập, xuất một đối tượng phân số với
thư viện iostream.h
1 CPhanSo a;
2 cin>>a;
3 cout<<a;
Lưu ý
Ký hiệu >> được gọi là toán tử vào.
Ký hiệu << được gọi là toán tử ra.
Làm sao?
Trang 92cho lớp đối tượng CPhanSo.
Ngoài ra, trong khi giải quyết vấn đềnày ta còn sử dụng kỹ thuật hàm bạn(friend function) của phương pháp lậptrình hướng đối tượng
Một “hàm bạn” của lớp đối tượngđược phép truy xuất đến tất cả cácthành phần của đối tượng thuộc vềlớp đó bất chấp thành phần được khaibáo trong phạm vi nào
Trang 934 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 944 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 954 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 964 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 974 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 984 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 994 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 1004 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 1014 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 1024 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 1034 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 1044 GIẢI QUYẾT VẤN ĐỀ (tiếp)
Định nghĩa toán tử vào
1 istream& operator >>(istream &is,
Trang 1054 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 1064 GIẢI QUYẾT VẤN ĐỀ (tiếp)
Trang 1074 GIẢI QUYẾT VẤN ĐỀ (tiếp)
17. friend istream& operator >>
18. (istream &is,CPhanSo &x);
19. friend ostream& operator <<
20. (ostream &os,CPhanSo &x);
21. };
Trang 108 Trong câu lệnh thứ hai của đoạn
chương trình trên ta nói: hàm
operator >> được gọi thực hiện với 2đối số là cin và đối tượng a
Trong câu lệnh thứ ba của đoạn
chương trình trên ta nói: hàm
operator << được gọi thực hiện với 2đối số là cout và đối tượng a
Trang 109 Trong câu lệnh thứ hai của đoạn
chương trình trên ta nói: hàmoperator >> được gọi thực hiện 3 lần
Trong câu lệnh thứ ba của đoạn
chương trình trên ta nói: hàmoperator << được gọi thực hiện 3 lần
Trang 1107 ỨNG DỤNG
nghĩa toán tử vào và
đối tượng CNgay.
Trang 11118. friend istream& operator >>
19. (istream &is,CNgay &x);
20. friend ostream& operator <<
21. (ostream &os,CNgay &x);22.};
Trang 115Chương 5 PHƯƠNG THỨC THIẾT LẬP, PHƯƠNG THỨC PHÁ HỦY
Trang 117thức thiết lập của một lớp có nhiệm vụ thiết lập
lớp ngay khi đối tượng được khai báo.
Trang 118 Các phương thức thiết lập của lớpthuộc nhóm các phương thức khởitạo.
Trang 119PHƯƠNG THỨC THIẾT LẬP
Ta có thể chia các phương thức thiếtlập của một lớp thành 3 nhóm nhưsau:
Phương thức thiết lập mặc định (default constructor).
Phương thức thiết lập sao chép (copy constructor).
Phương thức thiết lập nhận tham số đầu vào.
Phương thức thiết lập mặc định làphương thức thiết lập các thông banđầu cho đối tượng thuộc về lớp bằngbằng những giá trị mặc định (do ngườilập trình quyết định)
Trang 120PHƯƠNG THỨC THIẾT LẬP
Phương thức thiết lập sao chép (copyconstructor) là phương thức thiết lậpnhận tham số đầu vào là một đốitượng cùng thuộc về lớp Các thôngtin ban đầu của đối tượng sẽ hoàntoàn giống thông tin của đối tượngtham số đầu vào Ngoài ra, người tacòn nói phương thức thiết lập saochép được sử dụng để tao ra đốitượng mới giống hoàn toàn đối tượng
đã có sẵn
Phương thức thiết lập nhận tham sốđầu vào là những phương thức thiếtlập ko phải là phương thức thiết lậpmặc định và phương thức thiết lậpsao chép
Trang 121PHƯƠNG THỨC THIẾT LẬP
Bài toán: Hãy khai báo và định nghĩa cácphương thức thiết lập cơ bản cho lớp đốitượng CPhanSo
Trang 124PHƯƠNG THỨC THIẾT LẬP
Định nghĩa phương thức thiết
lập khi biết đầy đủ thông tin
Trang 1251.4 HƯỚNG DẪN SỬ DỤNG 1
Hãy xem xét đoạn chương trình
sau và cho biết có bao nhiêu phương thức gọi thực hiện:
Trang 1261.5 HƯỚNG DẪN SỬ DỤNG 2
Hãy xem xét đoạn chương trình sau
và cho biết có bao nhiêu phươngthức gọi thực hiện:
Trang 127PHƯƠNG THỨC THIẾT LẬP
Khởi tạo giá trị ban đầu cho các đốitượng thuộc về lớp ngay khi các đốitượng được khai báo
Ép kiểu từ đối tượng này sang đốitượng khác
Trang 1281.7 ỨNG DỤNG
Bài toán: Hãy khai báo và định nghĩacác phương thức thiết lập cơ bản cholớp đối tượng ngày
Trang 132hủy của một lớp có nhiệm vụ
dọn dẹp “xác chết” của đối tượng khi đối tượng “đi bán
muối” Nói một cách khác,
phương thức phá hủy có nhiệm vụ thu hồi lại tất cả các tài nguyên đã cấp phát cho đối tượng khi đối tượng hết phạm vi hoạt động.
Trang 133PHƯƠNG THỨC PHÁ HỦY
Tên phương thức trùng với tên lớpnhưng có dấu ngã ở đằng trước
Không có giá trị trả về
Không có tham số đầu vào
Được tự động gọi thực hiện khi đốitượng hết phạm vi sử dụng
Phương thức phá huỷ thuộc nhóm cácphương thức xử lý
Có và chỉ có duy nhất một phươngthức phá huỷ trong 1 lớp mà thôi
Trong một quá trình sống của đốitượng có và chỉ có một lần phươngthức phá hủy được gọi thực hiện màthôi
Trang 134PHƯƠNG THỨC PHÁ HỦY
Bài toán: Hãy khai báo và định nghĩaphương thức phá hủy cho lớp đốitượng CPhanSo
Trang 1362.3 HƯỚNG DẪN SỬ DỤNG
Hãy cho biết đoạn chương trình sau
có bao nhiêu phương thức được gọithực hiện Biết rằng trong lớp đốitượng CPhanSo ta đã định nghĩa 3pttl cơ bản và phương thức phá hủy
Trang 1373 BÀI TẬP VỀ NHÀ
Hãy khai báo và định nghĩa cácphương thức thiết lập cơ bản vàphương thức phá hủy cho các lớp đốitượng sau:
Trang 138Chương 6 TOÁN T Ử GÁN (operator=)
Trang 1390 M ỤC TIÊU
Hi ểu được phương thức toán tử
gán là gì?
Hi ểu được vai trò của toán tử
gán trong l ập trình hướng đối tượng