View
8
Download
0
Category
Preview:
Citation preview
9/6/2011
1
CU TRC D LIU V THUT TON
DATA STRUCTURE AND ALGORITHMS
1
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Ti liu hc tp
Gio trnh:
Gio trnh CTDL Khoa KHKTMT HCN TpHCM.
C & Data Structures, P. S. Deshpande, O. G. Kakde - CHARLES RIVER MEDIA, INC. Hingham, Massachusetts.
Tham kho:
Gio trnh Cu trc d liu 1, Trn Hnh Nhi Dng Anh c, Trng HKHTN HQG TP.HCM.
Phn mm lp trnh:
C-Free
Borland C++
2
Chng 1: n tp C/C++ Chng 1: n tp C/C++
nh gi kt qu
1. Kim tra gia k: thc hnh
im Kim tra gia k < 5 khng c thi kt thc mn
hc li
2. Kim tra cui k: thc hnh
im Kim tra cui k < 5 khng c thi kt thc mn
hc li
3. Bi tp ln: lm bi tp trong module
im ti < 5 khng c thi kt thc mn hc li
4. Thi kt thc mn: trc nghim
5. Kim tra thng k
3
9/6/2011
2
(Tham kho ti liu mn Phng Php Lp Trnh)
Chng 1: n tp C/C++ 28
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
29
Chng 1: n tp C/C++ Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++
#include stdio.h
#include conio.h
void main() /*ham chinh*/
{
int a=7;
printf( %d, a );
getch();
}
Cu trc chng trnh C
30
Chng 1: n tp C/C++
9/6/2011
3
Chng 1: n tp C/C++ Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++
#include iostream.h
#include conio.h
void main() /*ham chinh*/
{
int a=7;
cout
9/6/2011
4
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
Khai bo bin:
Khai bo v khi to bin:
Khai bo hng s:
34
Kiu_d_liu tn_bin;
const Kiu_d_liu tn_bin = gi tr;
Kiu_d_liu tn_bin = gi tr;
Chng 1: n tp C/C++
Chng 1: n tp C/C++
35
Kiu Phm vi biu din Kch thc (byte)
char -27 27-1 1
int -215 215-1 2
long -231231-1 4
float 3.4E-38 3.4E+38 4
double 1.7E-308 1.7E+308 6
35
Cc kiu d liu c s
2. Cc c php c bn
Chng 1: n tp C/C++
Chng 1: n tp C/C++
36
Php ton Tn
+ cng
- tr
* nhn
/ chia
% chia ly phn d
++, -- Php tng, gim 1
36
Cc php ton s hc
2. Cc c php c bn
Chng 1: n tp C/C++
9/6/2011
5
Chng 1: n tp C/C++
37
Php ton Tn
> ln hn
>= ln hn hoc bng
< nh hn
9/6/2011
6
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
Chuyn i kiu:
Trong php gn: Gi tr ca biu thc v phi c chuyn
sang kiu ca bin v tri
V d:
int a=5/2; //a=?
float b=5/2; //b=?
40
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
p kiu:
C php:
(Kiu) biu_thc
V d:
(float) 23
(int) x
float(23)
x*1.0
41
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
if
if else
switch case
for
while
do while
42
Cc ton t iu khin:
Chng 1: n tp C/C++
9/6/2011
7
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
if ( bt_iu_kin ) khi_lnh;
if ( bt_iu_kin )
khi_lnh_1
else
khi_lnh_2
if ( bt_iu_kin_1 )
khi_lnh_1
else if ( bt_iu_kin_2 )
khi_lnh_2
else
khi_lnh_n
43
Ton t iu kin
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
switch (biu_thc_nguyn) { case hng_1: cc_cu_lnh_1 [break;]
case hng_2: cc_cu_lnh_2 [break;]
...
[default:
cc_cu_lnh] }
44
Cu lnh switch
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
for (bt_khi_to; bt_kim_tra; bt_tng)
khi_lnh
while ( bt_iu_khin )
{
cu_lnh_1; cu_lnh_2;
}
do
{
khi_lnh
}while (bt_iu_khin);
45
Cc ton t iu khin lp
2. Cc c php c bn
Chng 1: n tp C/C++
9/6/2011
8
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
Cp pht b nh tnh:
V d: int a,b;
Cp pht b nh ng:
B nh cng c th c cp pht ti thi gian chy, gi l
Cp pht ng (dynamic allocation)
Dng ton t new cp pht b nh ng
V d:
46
int *P;
P = new int;
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
47
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
Cp pht b nh ng:
heap: vng b nh c bit dnh ring cho cc bin ng.
to mt bin ng mi, h thng cp pht khng gian
t heap. Nu khng cn b nh, new khng th cp pht
b nh th n tr v gi tr NULL
Trong lp trnh, ta nn lun kim tra li ny:
int *p;
p = new int;
if (p == NULL) {
cout
9/6/2011
9
Chng 1: n tp C/C++ Chng 1: n tp C/C++
2. Cc c php c bn
Hy b nh ng:
Tr li vng b nh tr bi P, nhng khng sa gi tr ca P
Dng ton t delete hy b nh ng
Sau khi thc thi delete, gi tr ca con tr khng xc nh
V d:
delete P;
49
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Bi tp
Vit chng trnh tnh din tch, chu vi hnh ch nht
Vit chng trnh tnh din tch, chu vi hnh trn
50
Chng 1: n tp C/C++
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
51
9/6/2011
10
Chng 1: n tp C/C++ Chng 1: n tp C/C++
3. a ch (Address)
Mi bin u c 2 thuc tnh: a ch (address) v gi tr (value)
Trong b nh:
+ Ti a ch 3: gi tr l 45
+ Ti a ch 2: gi tr l Dave
Ly a ch ca bin: dng &
int y=90;
cout
9/6/2011
11
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Cc php ton s hc trn con tr:
Php gn
Php cng, tr mt con tr vi mt s nguyn
Tng, gim
V d:
int x, *p, *q;
p = &x;
p = p+2; // tng 2 kch thc b nh int
q = p;
55
4. Con tr (Pointer)
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
4. Con tr (Pointer)
#include
#include
void main ()
{
int i;
int *ia;
i = 10;
ia = &i;
cout
9/6/2011
12
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
59
Chng 1: n tp C/C++ Chng 1: n tp C/C++
5. Mng (Array)
Mng:
L mt cu trc d liu
L danh sch cc phn t c cng kiu
Cho php truy xut ngu nhin n cc phn t ca n
thng qua ch s mng
Khai bo:
V d: int a[100];
60
Kiu_d_liu tn_mng[s_phn_t];
12 2 8 5 1
[0] [1] [2] [3] [4]
A
Chng 1: n tp C/C++
9/6/2011
13
Chng 1: n tp C/C++ Chng 1: n tp C/C++
5. Mng (Array)
a ch ca mi phn t trong mng:
Mi phn t trong mng c mt a ch trong b nh
(Each element of the array has a memory address)
V d:
void printdetail (int a[])
{
for(int i = 0; i
9/6/2011
14
Chng 1: n tp C/C++ Chng 1: n tp C/C++
5. Mng (Array)
64
Chng 1: n tp C/C++ Chng 1: n tp C/C++
5. Mng (Array)
65
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
66
9/6/2011
15
Chng 1: n tp C/C++ Chng 1: n tp C/C++
6. Mng con tr (Pointer array)
C th khai bo mng con tr (tng t nh mng s)
Trong mng con tr, cc phn t mng lu con tr
67
void main()
{
int *a[5];
int i1=4, i2=3, i3=2, i4=1, i5=0;
a[0] = &i1;
a[1] = &i2;
a[2] = &i3;
a[3] = &i4;
a[4] = &i5;
printarr(a);
}
void printarr(int *a[])
{
for(int j=0; j
9/6/2011
16
Chng 1: n tp C/C++ Chng 1: n tp C/C++
7. Mng hai chiu (Two-dimensional array)
Duyt mng hai chiu s dng con tr:
V d:
float *pa, a[2][3];
pa = (float*)a; // neu khong ep kieu thi C se canh bao
// nhung chuong trinh van chay tot
Khi pa tr ti a[0][0]
pa+1 tr ti a[0][1]
pa+2 tr ti a[0][2]
pa+3 tr ti a[1][0]
pa+4 tr ti a[1][1]
pa+5 tr ti a[1][2]
70
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Bi tp
Vit chng trnh cho nhp 1 mng hnh ch nht v tnh din tch, chu vi ca chng
Vit chng trnh cho nhp 1 mng hnh trn v tnh din tch, chu vi ca chng
71
Chng 1: n tp C/C++
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
72
9/6/2011
17
Chng 1: n tp C/C++ Chng 1: n tp C/C++
8. Cu trc (Structure)
c s dng khi cn thao tc trn d liu c nhiu
thuc tnh
C php:
V d:
struct Ngay { int thang;
int ngay;
int nam;
};
73
Chng 1: n tp C/C++
struct Tn_kiu_cu_trc {
cc_thnh_phn;
};
Chng 1: n tp C/C++ Chng 1: n tp C/C++
8. Cu trc (Structure)
Khai bo bin kiu cu trc (2 cch):
V d:
Ngay n;
hoc: struct Ngay ng;
Khi to cho mt cu trc:
V d: struct Ngay d={10,15,2004};
struct Ngay a[]={ {10,15,2004}, {10,16,2004}, {10,17,2004}, {10,18,2004}};
74
Tn_cu_trc tn_bin;
struct Tn_cu_trc tn_bin;
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
8. Cu trc (Structure)
Truy cp thnh phn ca cu trc:
Dng ton t .: Tn_bin_cu_trc.Tn_thnh _phn
V d:
Ngay d;
d.ngay = 10;
d.thang = 10;
d.nam = 1910;
75
Chng 1: n tp C/C++
9/6/2011
18
Chng 1: n tp C/C++ Chng 1: n tp C/C++
8. Cu trc (Structure)
V d
76
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Bi tp
Vit chng trnh tnh din tch, chu vi hnh ch nht (yu cu khai bo cu trc hnh ch nht)
Vit chng trnh tnh din tch, chu vi hnh trn (yu cu khai bo cu trc hnh trn)
77
Chng 1: n tp C/C++
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
78
9/6/2011
19
Chng 1: n tp C/C++ Chng 1: n tp C/C++
9. Con tr cu trc (Structure pointer)
Ging nh cc kiu d liu khc, ta c th khai bo con
tr cu trc
V d
struct Ngay *p, a[10], *p1, b;
p = a; p1 = &b;
Truy nhp thnh phn ca cu trc:
tn_con_tr->tn_thnh_phn
hoc :
(*tn_con_tr).tn_thnh_phn
79
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
9. Con tr cu trc (Structure pointer)
80
Chng 1: n tp C/C++
#include
struct student
{
char name[30];
float marks;
};
void main ( )
{
student *sv;
char s[30];
float f;
cin>>s;
cin>>f;
sv->name = s;
sv->marks = f;
cout
9/6/2011
20
10. Chui (String)
L mng cc k t (array of char)
Kt thc bi k t null \0 (ending with null char \0)
Chui hng c t ng thm \0
V d: char str[]=Hello;
82
10. Chui (String)
Khai bo chui:
char str[] = {H,e,l,l,o,\0};
char str[] = Hello;
char *str = Hello;
83
10. Chui (String)
Hm nhp chui:
char *gets(char *s);
Nhn k t cho n khi nhn du Enter
T ng thm k t \0
So snh vi cin>>s; //????
So snh vi cin.getline(s,length)//???
Hm xut chui:
int puts(const char *s);
cout
9/6/2011
21
10. Chui (String)
Mt s hm v chui: (cn #include )
strcpy(s1, s2)
strcat(s1, s2)
strlen(s1)
strcmp(s1, s2) -> (-1,0,1)
strchr(s1, ch)
strstr(s1, s2)
85
10. Chui (String)
V d: char s1[80], s2[80];
cout
9/6/2011
22
Chng 1: n tp C/C++ Chng 1: n tp C/C++
11. Tp tin trong C(File)
Cn #include
To file mi:
FILE *fp;
fp=fopen(d:\\test.txt", "wb"))
Ghi ni dung vo file:
fwrite(&Address, sizeof(TYPE), count, fp);
ng file (Lu file):
fclose(fp);
88
Chng 1: n tp C/C++ Chng 1: n tp C/C++
11. Tp tin trong C (File)
c file:
FILE *fp;
fp = fopen(d:\\test.txt", rb"))
while (fwrite(&Address, sizeof(TYPE), count, fp))
{
// x l ni dung c c
}
fclose(fp);
89
Chng 1: n tp C/C++ Chng 1: n tp C/C++
11. Lung trong C++
C++ cung cp cc lp sau thi hnh cc tc v vo ra trn file dng k t:
ofstream: Stream class to write on files
ifstream: Stream class to read from files
fstream: Stream class to both read and write from/to files.
90
9/6/2011
23
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Thao tc vi text-file trong C++
91
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Thao tc vi Binary file trong C++
92
write ( memory_block, size );
read ( memory_block, size );
Chng 1: n tp C/C++
1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)
93
9/6/2011
24
Chng 1: n tp C/C++ Chng 1: n tp C/C++
12. Hm (Function)
Cc c php nh ngha hm:
94
Kiu_d_liu Tn_Hm (kiu_d_liu tn_bin,) {
// cc khai bo bin, // cc lnh return value;
}
void Tn_Hm (kiu_d_liu tn_bin,) {
// cc khai bo bin, // cc lnh
}
Chng 1: n tp C/C++ Chng 1: n tp C/C++
Cch gi hm:
1. Chun b cc tham s gi cho hm nu c:
Khai bo bin tng ng v cho nhp d liu cho bin (nu cn)
2. Hm khng tr v gi tr (void):
Tn_Hm (tham_s_1, tham_s_2,);
2. Hm c tr v gi tr:
Khai bo mt bin c kiu trng vi kiu tr v ca hm
Vit lnh gn: bin = Tn_Hm (tham_s_1, tham_s_2,);
S dng bin xut, tnh ton, gi hm khc
95
12. Hm (Function)
Chng 1: n tp C/C++
Chng 1: n tp C/C++ Chng 1: n tp C/C++
12. Hm (Function)
Nguyn mu hm (Prototype)
Nguyn mu hm c s dng khai bo mt hm nh
n c th c s dng trong chng trnh trc khi
hm c nh ngha thc s
Cng dng:
Gip chng trnh mch lc
Gip t chc chng trnh
Cho php s dng hm trc khi nh ngha
96
Chng 1: n tp C/C++
9/6/2011
25
#include
int compute_sum (int n); /* Function Prototype*/
void main() {
int lim = 8, sum;
cout
Recommended