Tài liu hướng dn thc hành:
KĨ THUT LP TRÌNH C/C++
Trường ĐHBK Hà Ni
Khoa Đin
B môn Điu khin T động
Bài 1: Lp trình cơ s
1 Mc đích bài thc hành
Giúp hc viên làm quen vi công c lp trình Visual C++, th nghim viết chương trình theo phong cách
hướng hàm, qua đó nm vng các kiến thc lp trình cơ s như:
1) Phương pháp th hin thut toán bng các các cu trúc điu kin, vòng lp
2) Cách s dng mng, con tr, b nh động
3) Khai báo, thc hin và s dng hàm; các phương pháp truyn tham s hàm.
2 Nhim v thí nghim
2.1 Bài tp
1. Xây dng mt hàm thc hin phân loi các s chn và l trong mt dãy s nguyên, kết qu được
nh vào hai dãy s mi. S dng mng động để biu din hai dãy s kết qu sao cho b nh được
cp phát động ch va đủ dùng. Kết qu tr v ca hàm s là s các s chn trong dãy ban đầu, hay
cũng chính là chiu dài ca mt dãy kết qu.
2. Viết chương trình minh ha cách s dng hàm trong câu 1 vi hai trường hp:
- dãy s ban đầu được cha trong mt mng tĩnh và giá tr các s trong dãy được khi to
ngay khi khai báo.
- dãy s ban đầu được cha trong mt mng động và giá tr các s cn được đưa vào qua
bàn phím
Hai dãy s kết qu được đưa ra màn hình.
2.2 Nhim v chun b nhà
1) Ôn li các kiến thc cơ s nêu trong phn 1, xem li các ví d và bài tp trên lp.
2) Xây dng thut toán và viết chương trình sn trên giy (viết tay, không chp nhn bn sao!)
2.3 Nhim v trên phòng thí nghim
1) Làm quen vi Visual C++, to mt d án mi (New Project), đặt tên d án (ví d “SortApp”) và chn
“Win32 Console Application”
2) Viết hàm trên máy và lưu vào mt 2 files riêng: Header file (ví d sort.h) cha mã khai báo hàm và
file ngun (*.cpp) cha mã thc hin hàm. B sung 2 files đó vào d án. Biên dch file ngun (ví d
sort.cpp), tìm cách gii thích và sa các li biên dch (compile error).
3) Viết chương trình minh ha trong file chính (ví d sortapp.cpp). Dch toàn b d án (Build), sa các
li biên dch (compile error), li liên kết (link error) nếu có và chy th chương trình.
4) Làm quen s dng Debugger để tìm li chy (runtime error), tìm cách gii thích và sa li nếu có.
5) M menu “Project Setting” và tìm hiu ý nghĩa các thông s la chn cho d án.
6) Th nghim thay đổi cách th hin vòng lp (for... hoc while..., s dng phương pháp dch con tr
thay cho s dng ch s).
7) Th nghim không dùng mng động, mà dùng mng tĩnh để cha dãy s đầu vào và các dãy s kết
qu trong hàm. Phân tích các vn đề gp phi.
8) Ghi chép các bước thc hin để làm báo cáo.
3 Báo cáo thc hành
Mi hc viên phi làm mt báo cáo riêng, np cho cán b hướng dn thí nghim chm nht là mt tun sau
bui thc hành. Báo cáo có th viết tay hoc in, nhưng các bn sao photocopy s không được chp nhn.
Bài báo cáo phi có đủ các phn sau:
1. Toàn b mã chương trình đã chy chia làm 3 files như hướng dn trong phn 2.3
2. Mô t tng bước thc hin như hướng dn trong phn 2.3. Trong mi bước, cn nêu bt các công
vic đã làm, các vn đề đã gp phi, các li ch yếu đã gp, lý gii li và mô t cách gii quyết.
3. Nêu các vn đề mà anh (ch) thy chưa tht hiu, cn ging viên gii thích k hơn.
[1] #include <iostream.h>
[2] #include <conio.h>
[3] int phanloai(int* a, int n, int*& chan, int*& le) {
[4] int i = 0, sochan = 0;
[5] while (i < n) {
[6] if (a[i] % 2 == 0) // so chan
[7] ++sochan;
[8] ++i;
[9] }
[10] chan = new int[sochan];
[11] le = new int[n-sochan];
[12] i = 0;
[13] int ic=0,il=0;
[14] while (i < n) {
[15] if (a[i] % 2) // so le
[16] le[il++] = a[i];
[17] else
[18] chan[ic++] = a[i];
[19] ++i;
[20] }
[21] return sochan;
[22] }
[23] void print(int* a, int n) {
[24] for (int i = 0; i < n; ++i)
[25] cout << '\t' << a[i];
[26] }
[27] void main() {
[28] // mang tinh
[29] int n = 10;
[30] int as[10] = {1,2,3,4,5,6,7,8,9,10};
[31] int *c, *l;
[32] int sochan = phanloai(as,n,c,l);
[33] cout << "\nDay so ban dau:";
[34] print(as,n);
[35] cout << "\nDay so chan:";
[36] print(c,sochan);
[37] cout << "\nDay so le:";
[38] print(l,n-sochan);
[39] delete [] c; delete [] l;
[40] // mang dong
[41] cout << "\nCho chieu dai day so:";
[42] cin >> n;
[43] int *ad = new int[n];
[44] for (int i = 0; i < n; ++i) {
[45] cout << "\nad[" << i << "]=";
[46] cin >> ad[i];
[47] }
[48] sochan = phanloai(ad,n,c,l);
[49] cout << "\nDay so ban dau:";
[50] print(ad,n);
[51] cout << "\nDay so chan:";
[52] print(c,sochan);
[53] cout << "\nDay so le:";
[54] print(l,n-sochan);
[55] delete [] c; delete [] l;
[56] cout << "\n Nhan mot phim bat ky de ket thuc";
[57] cout.flush();
[58] getch();
[59] }
Các câu hi gi ý, kim tra b sung:
1. Dòng 1 và 2 có ý nghĩa gì ?
2. Ti sao các tham biến chan và le dòng 3 li có kiu int*& ?
3. Gii thích các dòng lnh 16 và 18
4. Ti sao dòng 30, ta không th viết a[n] = {...} thay cho a[10] ?
5. Ti sao dòng 39, ta không viết delete c; delete l?
6. Dòng 57 có ý nghĩa gì? Nếu xóa dòng đó đi thì sao?
Tài liu hướng dn thc hành:
KĨ THUT LP TRÌNH C/C++
Bài 2: Lp trình hướng đối tượng: Lp và chng toán t
1 Mc đích bài thc hành
Hc viên biết cách xây dng mt cu trúc d liu tiêu biu dưới dng mt lp vi các phép toán thông dng,
th nghim viết chương trình theo phong cách hướng đối tượng, qua đó nm vng các khái nim và
phương pháp thc hin như:
1) Đóng gói d liu
2) Hàm to, hàm hy, hàm to bn sao, hàm toán t gán, chng toán t
3) Tham s mc định, truyn tham s và kiu tr v
4) Xây dng mt thư vin lp
2 Nhim v thí nghim
2.1 Bài tp
1. Xây dng mt lp Vector để biu din kiu vector toán hc có các phn t (thành phn) kiu double
vi các yêu cu sau:
-th khai báo mt vector vi kích thước (s chiu) bt k. Nếu không đưa kích thước thì nó
s được mc định là 0. Tt c các phn t được khi to giá tr bng 0.
- Mt vector t qun lý b nh động, có kh năng t sao chép và thc hin phép gán tương t
như vi các kiu d liu cơ bn
-th xác định s chiu vector cho mt vector bt k
-th truy nhp tng phn t vector thông qua toán t [] vi s th t tính t 0 và toán t gi
hàm () vi s th t tính t 1.
-th thc hin các phép +, - cũng như +=, -= và các phép so sánh gia hai vector và các
phép *, / cũng như *=, /= gia mt vector và mt s thc (double), đảo du (-) và đồng du (+).
2. Viết chương trình minh ha cách s dng lp Vector câu 1. Yêu cu đưa s chiu, giá tr các phn
t qua bàn phím và kết qu thc hin ra màn hình. Định nghĩa li các toán t <<, >> tương ng để
có th s dng li.
2.2 Nhim v chun b nhà
1) Ôn li các kiến thc cơ s nêu trong phn 1, xem li các ví d và bài tp trên lp.
2) Xây dng thut toán và viết chương trình sn trên giy (viết tay, không chp nhn bn sao!)
2.3 Nhim v trên phòng thí nghim
1) To mt d án thư vin mi (New Project), đặt tên d án (ví d “Mathlib”) và chn “Win32 Static
Library”. Chp nhn các tham s mc định.
2) To mt Header file (ví d vector.h) chưa phn khai báo lp và mt file ngun (vector.cpp) cha
phn thc hin các hàm thành viên còn li. B sung 2 files đó vào d án.
3) Thc hin lp Vector theo các yêu cu nêu trong phn 2.1, dch toàn b d án (Build), tìm cách gii
thích và sa các li.
4) B sung mt d án mi “Win32 Console Application” vào trong Workspace đã có để viết chương
trình minh ha. B sung thư vin được to ra trên (mathlib.lib) vào d án và dch toàn b d án
mi, sa các li biên dch (compile error), li liên kết (link error) nếu có và chy th chương trình.
5) Th nghim thay đổi mt s kiu tham s và kiu tr v trong hàm to bn sao, hàm toán t gán và
các hàm toán hc. Phân tích các vn đề gp phi. Ghi chép các bước thc hin để làm báo cáo.
3 Báo cáo thc hành
Mi hc viên phi làm mt báo cáo riêng, np cho cán b hướng dn thí nghim chm nht là mt tun sau
bui thc hành. Bài báo cáo phi có đủ các phn sau:
1) Toàn b mã chương trình đã chy chia làm các files như hướng dn trong phn 2.3
2) Mô t tng bước thc hin như hướng dn trong phn 2.3. Trong mi bước, cn nêu bt các công
vic đã làm, các vn đề đã gp phi, các li ch yếu đã gp, lý gii li và mô t cách gii quyết.
Trường ĐHBK Hà Ni
Khoa Đin
B môn Điu khin T động
Tài liu hướng dn thc hành:
KĨ THUT LP TRÌNH C/C++
Bài 3: Dn xut lp và cơ chế đa x
1 Mc đích bài thc hành
Hc viên hiu sâu vc cơ chế tha kếđa x trong dn xut lp, qua đó nm vng các vn đề như:
1) Phân tích và mô t quan h tĩnh gia các lp đối tượng thông qua dn xut lp
2) Kim soát truy nhp thành viên lp cơ s và tác dng đối vi các lp dn xut
3) Phân bit gia hàm o và hàm thành viên thông thường, lp tru tượng và lp thông thường
4) Phân bit gia tha kế giao din và tha kế phn thc hin và các tác dng ca chúng
5) Ý nghĩa ca vic s dng con tr trong lp trình hướng đối tượng
2 Nhim v thí nghim
2.1 Bài tp
1. Xây dng mt thư vin lp (có ít nht 4 lp đối tượng) để biu din các khi hàm s dng trong mô
phng và thc hin các h thng điu khin theo phương pháp sơ đồ khi theo bài ging trên lp.
2. T chn mt ví d mô phng và viết chương trình để minh ha cách s dng thư vin hàm này.
2.2 Nhim v chun b nhà
1) Ôn li các kiến thc cơ s nêu trong phn 1, xem li các ví d trên lp.
2) V biu đồ lp và viết mã chương trình sn trên giy (viết tay, không chp nhn bn sao!)
2.3 Nhim v trên phòng thí nghim
1) To mt d án thư vin mi. Khai báo và thc hin mi lp trong mt file *.h và mt file *.cpp. B
sung các file này vào d án. Dch th d án và sa li.
2) B sung mt d án mi vào Workspace để viết chương trình minh ha cách mô phng mt h thng
s dng các lp đã xây dng. S dng mt mng động có các phn t là con tr để cha các đối
tượng (khi hàm) trong h thng. B sung thư vin đưc to ra trên vào d án mi. Dch toàn b
d án mi này, sa các li và chy th chương trình.
3) Thí nghim vi vic thay đổi quyn truy nhp (public, protected, private) ca d liu cũng như mt
s hàm thành viên lp cơ s và các lp dn xut, dch li ln lượt c hai d án để xem tác dng.
4) Thí nghim vi vic thay đổi thuc tính “virtual” ca mt s hàm thành viên lp cơ s và các lp
dn xut, dch li ln lượt c hai d án để xem tác dng.
5) Trong chương trình minh ha, th không dùng các biến con tr vào lp cơ s để to và lưu gi địa
ch các đối tượng, mà dùng biến tham chiếu hoc biến trc tiếp thông thường và tìm hiu các vn
đề gp phi trong vic to cũng như qun lý và s dng các đối tượng.
3 Báo cáo thc hành
Mi hc viên phi làm mt báo cáo riêng, np cho cán b hướng dn thí nghim chm nht là mt tun sau
bui thc hành. Báo cáo có th viết tay hoc in, nhưng các bn sao photocopy s không được chp nhn.
Bài báo cáo phi có đủ các phn sau:
1) Toàn b mã chương trình đã chy chia làm các files như hướng dn trong phn 2.3
2) Mô t tng bước thc hin như hướng dn trong phn 2.3. Trong mi bước, cn nêu bt các công
vic đã làm, các vn đề đã gp phi, các li ch yếu đã gp, lý gii li và mô t cách gii quyết.
3) Nêu các vn đề mà anh (ch) thy chưa tht hiu, cn ging viên gii thích k hơn.
Trường ĐHBK Hà Ni
Khoa Đin
B môn Điu khin T động