Title: C?u tr
1C?u trúc d? li?u và THU?T TOÁNData Structure
and algorithms
2Tài li?u h?c t?p
- Giáo trình
- C Data Structures, P. S. Deshpande, O. G.
Kakde - CHARLES RIVER MEDIA, INC. Hingham,
Massachusetts. - Tham kh?o
- Giáo trình C?u trúc d? li?u 1, Tr?n H?nh Nhi
Duong Anh Ð?c, Tru?ng ÐHKHTN ÐHQG TP.HCM. - Ph?n m?m l?p trình
- C-Free
- Borland C
3N?i dung môn h?c
- Chuong 0 Gi?i thi?u chung
- Chuong 1 Ôn t?p C/C
- Chuong 2 Ð? quy (Recursion)
- Chuong 3 Tìm ki?m (Searching)
- Chuong 4 S?p x?p (Sorting)
- Chuong 5 Ngan x?p - Hàng d?i (Stacks - Queues)
- Chuong 6 Danh sách liên k?t (Linked List)
- Chuong 7 Cây (Tree)
- ÔN T?P - KI?M TRA (REVIEW TEST)
4Chuong 0 Gi?i thi?u chung
5N?i dung
- C?u trúc d? li?u
- Thu?t toán
- Ð? ph?c t?p c?a thu?t toán
?
6C?u trúc d? li?u
- (1) S? t? ch?c h?p lý c?a các thành ph?n d? li?u,
- (2) T?p các thao tác d? truy c?p các thành ph?n
d? li?u. - (1) the logical arrangement of data elements,
combined with - (2) the set of operations we need to access the
elements.
7Ví d? các c?u trúc d? li?u
- M?ng (array)
- Danh sách liên k?t (linked list)
- Ngan x?p (stack)
- Hàng d?i (queue)
- Cây (tree)
-
8N?i dung
- C?u trúc d? li?u
- Thu?t toán
- Ð? ph?c t?p c?a thu?t toán
?
9Thu?t toán
- T?p các bu?c có th? tính toán du?c d? d?t du?c
k?t qu? mong mu?n - A computable set of steps to achieve a desired
result
10Ví d?
- Tính t?ng các s? nguyên l? t? 1?n
- B1 S0
- B2 i1
- B3 N?u in1 thì sang B7, ngu?c l?i sang B4
- B4 SSi
- B5 ii2
- B6 Quay l?i B3
- B7 T?ng c?n tìm là S
11M?i quan h? c?a CTDL và thu?t toán
CTDL Thu?t toán Chuong trình
12Ví d?
- M?t chuong trình qu?n lý di?m thi c?a sinh viên
c?n luu tr? các di?m s? c?a 3 sinh viên. Gi? s?
m?i sinh viên có 4 di?m s? ?ng v?i 4 môn h?c khác
nhau, d? li?u có d?ng b?ng nhu sau
13Ví d?
- Ch? xét thao tác x? lý là xu?t di?m s? các môn
c?a t?ng sinh viên. - Phuong án 1 S? d?ng m?ng m?t chi?u
- int result 12 7, 9, 5, 2, 5, 0, 9, 4, 6,
3, 7, 4 - các ph?n t? s? du?c luu tr? nhu sau
- Truy xu?t di?m s? môn j c?a sinh viên i ph?i s?
d?ng m?t công th?c xác d?nh ch? s? tuong ?ng
trong m?ng result - result(is? c?t) j
14Ví d?
- void XuatDiem() //Xu?t di?m s? c?a t?t c? sinh
viên -
- const int so_mon 4int sv,monfor (int i0
ilt12 i) - sv i/so_mon mon i so_mon coutltlt"Ði?m
môn "ltltmonltlt" c?a sv "ltltsvltlt"là" ltltresulti -
-
15Ví d?
- Ch? xét thao tác x? lý là xu?t di?m s? các môn
c?a t?ng sinh viên. - Phuong án 2 S? d?ng m?ng hai chi?u
- int result34 7, 9, 5, 2, 5, 0, 9, 4,
6, 3, 7, 4 - các ph?n t? s? du?c luu tr? nhu sau
- Truy xu?t di?m s? môn j c?a sinh viên i cung
chính là ph?n t? n?m ? v? trí (dòng i, c?t j)
trong m?ng resultij
16Ví d?
- void XuatDiem() //Xu?t di?m s? c?a t?t c? sinh
viên -
- const int so_mon 4, so_sv 3for ( int i0
iltso_sv i) for ( int j0 jltso_mon
j) coutltlt"Ði?m môn "ltlt j ltlt" c?a sv "ltlt i
ltlt"là" resultij -
17N?i dung
- C?u trúc d? li?u
- Thu?t toán
- Ð? ph?c t?p c?a thu?t toán (algorithm complexity)
?
18Ð? ph?c t?p c?a thu?t toán
- Phân tích thu?t toán
- Tính dúng
- Tính don gi?n
- Không gian
- Th?i gian ch?y c?a thu?t toán
19Ð? ph?c t?p c?a thu?t toán
- Th?i gian ch?y c?a thu?t toán
- Ðánh giá nhu th? nào
- Th?c nghi?m
- X?p x?
20Ð? ph?c t?p c?a thu?t toán
- Th?c nghi?m
- Ch?u s? h?n ch? c?a ngôn ng? l?p trình
- ?nh hu?ng b?i trình d? c?a ngu?i cài d?t
- Ch?n du?c các b? d? li?u th? d?c trung cho t?t c?
t?p các d? li?u vào c?a thu?t toán khó khan và
t?n nhi?u chi phí - Ph? thu?c nhi?u vào ph?n c?ng
21Ð? ph?c t?p c?a thu?t toán
- X?p x? ti?m c?n
- Cách thông d?ng nh?t d? dánh giá m?t thu?t toán
là ký hi?u ti?m c?n g?i là Big-O - Ð?nh nghia toán h?c c?a Big-O
- Cho f và g là hai hàm t? t?p các s? nguyên ho?c
s? th?c d?n s? th?c. Ta nói f(x) là O(g(x)) n?u
t?n t?i h?ng s? C và k sao cho f(x) C g(x)
v?i m?i x gt k - Ví d?, hàm f(x) x2 3x 2 là O(x2)
- Th?t v?y, khi x gt 2 thì x lt x2 và 2 lt 2x2
- Do dó x2 3x 2 lt 6x2
- Nghia là ta ch?n du?c C 6 và k 2
22Ð? ph?c t?p c?a thu?t toán
- M?t s? k?t qu? Big-O quan tr?ng
- Hàm da th?c
- f(x) anxn an-1xn-1 a1x a0
- Khi dó f(x) là O(xn)
- Hàm giai th?a
- f(n) n! là O(nn)
- Logarit c?a hàm giai th?a
- f(n) logn! là O(nlogn)
- Hàm di?u hòa
- H(n) 1 1/2 1/3 .. 1/n là O(logn)
23Ð? ph?c t?p c?a thu?t toán
24Ð? ph?c t?p c?a thu?t toán
25Ð? ph?c t?p c?a thu?t toán
26Ð? ph?c t?p c?a thu?t toán
- Ví d?, xét hàm sau
- Hai l?nh cout ngoài vòng l?p có d? ph?c t?p h?ng
O(1) vì không ph? thu?c vào N - S? l?nh cout trong vòng l?p b?ng v?i kích thu?c
m?ng, do dó vòng l?p có d? ph?c t?p O(N) - T?ng c?ng Hàm f có d? ph?c t?p 2 O(1) O(N)
- ? Ð? ph?c t?p O(N)
void f (int a, int n) coutltlt "N "ltlt n for
(int i 0 i lt n i ) coutltltai coutltlt
"\n"
27Chuong 1 Ôn t?p C/C
- (Tham kh?o tài li?u môn Phuong Pháp L?p Trình)
28Chuong 1 Ôn t?p C/C
?
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
291. C?u trúc chuong trình C/C
C?u trúc chuong trình C
- include stdio.h
- include conio.h
-
- void main() /ham chinh/
-
- int a7
- printf( d, a )
- getch()
-
Chuong 1 Ôn t?p C/C
301. C?u trúc chuong trình C/C
C?u trúc chuong trình C
- include iostream.h
- include conio.h
-
- void main() /ham chinh/
-
- int a7
- coutltlt a
- getch()
-
Chuong 1 Ôn t?p C/C
311. C?u trúc chuong trình C/C
- Qui cách vi?t chuong trình
- Các dòng trong cùng m?t kh?i th?ng c?t
- Kh?i con c?a m?t kh?i lùi vào ít nh?t m?t TAB
- S? d?ng th?ng nh?t các qui t?c giãn cách
- Ghi chú thích ? nh?ng ch? c?n thi?t
Chuong 1 Ôn t?p C/C
32Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
332. Các cú pháp co b?n
- Khai báo bi?n
- Khai báo và kh?i t?o bi?n
- Khai báo h?ng s?
Ki?u_d?_li?u tên_bi?n
Ki?u_d?_li?u tên_bi?n giá tr?
const Ki?u_d?_li?u tên_bi?n giá tr?
Chuong 1 Ôn t?p C/C
342. Các cú pháp co b?n
Các ki?u d? li?u co s?
Ki?u Ph?m vi bi?u di?n Kích thu?c (byte)
char -27 ? 27-1 1
int -215 ? 215-1 2
long -231?231-1 4
float 3.4E-38 ? 3.4E38 4
double 1.7E-308 ? 1.7E308 6
Chuong 1 Ôn t?p C/C
352. Các cú pháp co b?n
Các phép toán s? h?c
Phép toán Tên
c?ng
- tr?
nhân
/ chia
chia l?y ph?n du
, -- Phép tang, gi?m 1
Chuong 1 Ôn t?p C/C
362. Các cú pháp co b?n
Các phép toán so sánh
Phép toán Tên
gt l?n hon
gt l?n hon ho?c b?ng
lt nh? hon
lt nh? hon ho?c b?ng
b?ng
! khác
Chuong 1 Ôn t?p C/C
372. Các cú pháp co b?n
Các phép toán logic
Phép toán Tên g?i
AND
OR
! NOT
Chuong 1 Ôn t?p C/C
382. Các cú pháp co b?n
- Chuy?n d?i ki?u
- Trong bi?u th?c ki?u th?p hon s? du?c nâng thành
ki?u cao hon tru?c khi th?c hi?n phép toán - Ví d?
- 7 3.5
Chuong 1 Ôn t?p C/C
392. Các cú pháp co b?n
- Chuy?n d?i ki?u
- Trong phép gán Giá tr? c?a bi?u th?c v? ph?i
du?c chuy?n sang ki?u c?a bi?n v? trái - Ví d?
- int a5/2 //a?
- float b5/2 //b?
Chuong 1 Ôn t?p C/C
402. Các cú pháp co b?n
- Ép ki?u
- Cú pháp
- (Ki?u) bi?u_th?c
- Ví d?
- (float) 23
- (int) x
- float(23)
- x1.0
Chuong 1 Ôn t?p C/C
412. Các cú pháp co b?n
Các toán t? di?u khi?n
- if
- if else
- switch case
- for
- while
- do while
Chuong 1 Ôn t?p C/C
422. Các cú pháp co b?n
Toán t? di?u ki?n
- if ( bt_di?u_ki?n_1 )
- kh?i_l?nh_1
- else if ( bt_di?u_ki?n_2 )
- kh?i_l?nh_2
-
- else
- kh?i_l?nh_n
- if ( bt_di?u_ki?n )
- kh?i_l?nh
if ( bt_di?u_ki?n ) kh?i_l?nh_1 else kh?i_l?nh_2
Chuong 1 Ôn t?p C/C
432. Các cú pháp co b?n
Câu l?nh switch
- switch (bi?u_th?c_nguyên)
- case h?ng_1
- các_câu_l?nh_1
- break
- case h?ng_2
- các_câu_l?nh_2
- break
- ...
- default
- các_câu_l?nh
-
Chuong 1 Ôn t?p C/C
442. Các cú pháp co b?n
Các toán t? di?u khi?n l?p
- for (bt_kh?i_t?o bt_ki?m_tra bt_tang) kh?i_l?nh
while ( bt_di?u_khi?n ) câu_l?nh_1 câu_l?nh_
2
do kh?i_l?nh while (bt_di?u_khi?n)
Chuong 1 Ôn t?p C/C
452. Các cú pháp co b?n
- C?p phát b? nh? tinh
- Ví d? int a,b
- C?p phát b? nh? d?ng
- B? nh? cung có th? du?c c?p phát t?i th?i gian
ch?y, g?i là C?p phát d?ng (dynamic allocation) - Dùng toán t? new d? c?p phát b? nh? d?ng
- Ví d?
int P P new int
462. Các cú pháp co b?n
472. Các cú pháp co b?n
- C?p phát b? nh? d?ng
- heap vùng b? nh? d?c bi?t dành riêng cho các
bi?n d?ng. Ð? t?o m?t bi?n d?ng m?i, h? th?ng c?p
phát không gian t? heap. N?u không còn b? nh?,
new không th? c?p phát b? nh? thì nó tr? v? giá
tr? NULL - Trong l?p trình, ta nên luôn ki?m tra l?i này
- int p
- p new int
- if (p NULL)
- cout ltlt Loi cap phat bo nho\n
- exit
-
482. Các cú pháp co b?n
- H?y b? nh? d?ng
- Tr? l?i vùng b? nh? tr? b?i P, nhung không s?a
giá tr? c?a P - Dùng toán t? delete d? h?y b? nh? d?ng
- Sau khi th?c thi delete, giá tr? c?a con tr?
không xác d?nh - Ví d?
- delete P
49Bài t?p
- Vi?t chuong trình tính di?n tích, chu vi hình ch?
nh?t - Vi?t chuong trình tính di?n tích, chu vi hình
tròn
Chuong 1 Ôn t?p C/C
50Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
513. Ð?a ch? (Address)
- M?i bi?n d?u có 2 thu?c tính d?a ch? (address)
và giá tr? (value) - Trong b? nh?
- T?i d?a ch? 3 giá tr? là 45
- T?i d?a ch? 2 giá tr? là Dave
- L?y d?a ch? c?a bi?n dùng
- int y90
- cout ltlt "Value of 'y' is " ltlt y ltlt "\n"
- cout ltlt "Address of 'y' is " ltlt y ltlt "\n\n
Chuong 1 Ôn t?p C/C
52Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
534. Con tr? (Pointer)
- Là m?t bi?n mà giá tr? c?a nó ch?a m?t d?a ch?
- Ð?nh nghia m?t con tr? thêm d?u vào tru?c tên
bi?n - Ví d? int ia
- int x, p, q
- Toán t? tr? v? n?i dung c?a d?a ch? du?c ch?a
trong m?t bi?n con tr? -
Chuong 1 Ôn t?p C/C
544. Con tr? (Pointer)
- Các phép toán s? h?c trên con tr?
- Phép gán
- Phép c?ng, tr? m?t con tr? v?i m?t s? nguyên
- Tang, gi?m
- Ví d?
- int x, p, q
- p x
- p p2 // tang 2 kích thu?c b? nh? int
- q p
Chuong 1 Ôn t?p C/C
554. Con tr? (Pointer)
- includeltiostream.hgt
- includeltstdio.hgt
- void main ()
-
- int i
- int ia
- i 10
- ia i
- coutltlt" The address of i is "ltlt ia ltlt"\n"
- coutltlt" The value at that location is "ltlt i
ltlt"\n" - coutltlt" The value at that location is "ltlt ia
ltlt"\n" - ia 50
- coutltlt" The value of i is "ltlti
Chuong 1 Ôn t?p C/C
564. Con tr? (Pointer)
- int i
- int ia
- coutltlt"Dia chi cua i "ltlt i ltlt " co gia tri "ltlti
ltltendl - coutltlt" Dia chi cua ia " ltlt ia ltlt " co gia tri
" ltlt ialtltendl - i 10
- ia i
- coutltlt"sau khi gan gia tri"ltltendl
- coutltlt" Dia chi cua i "ltlt i ltlt " co gia tri
"ltlti ltltendl - coutltlt" Dia chi cua ia " ltlt ia ltlt " co gia tri
" ltlt ialtlt - " tro den "ltlt ia
Chuong 1 Ôn t?p C/C
57(No Transcript)
58Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
595. M?ng (Array)
- M?ng
- Là m?t c?u trúc d? li?u
- Là danh sách các ph?n t? có cùng ki?u
- Cho phép truy xu?t ng?u nhiên d?n các ph?n t? c?a
nó thông qua ch? s? m?ng - Khai báo
- Ví d? int a100
-
A
Ki?u_d?_li?u tên_m?ngs?_ph?n_t?
Chuong 1 Ôn t?p C/C
605. M?ng (Array)
- Ð?a ch? c?a m?i ph?n t? trong m?ng
- M?i ph?n t? trong m?ng có m?t d?a ch? trong b?
nh? - (Each element of the array has a memory address)
- Ví d?
- void printdetail (int a)
-
- for(int i 0 ilt5 i)
-
- coutltlt "value in array "ltlt ai ltlt" at
address " ltlt ai -
-
Chuong 1 Ôn t?p C/C
615. M?ng (Array)
- Truy c?p m?ng s? d?ng con tr?
- Có th? truy c?p t?ng ph?n t? c?a m?ng b?ng cách
s? d?ng con tr?
void print_usingptr(int a, int n) int
b ba coutltlt"value in array\n"
for (int i0 iltn i) coutltltbltlt"
" b
void print_usingptr(int a, int n)
coutltlt"value in array\n" for (int i0
iltn i) coutltlt(ai)ltlt" "
Chuong 1 Ôn t?p C/C
625. M?ng (Array)
- C?p phát d?ng cho m?ng và h?y m?ng
- Kích thu?c c?a m?ng d?ng không c?n là h?ng s? mà
có th? có giá tr? du?c quy?t d?nh t?i th?i gian
ch?y - new Tn c?p phát m?t m?ng g?m n d?i tu?ng ki?u
T và tr? v? m?t con tr? t?i d?u m?ng - delete p h?y m?ng mà p tr? t?i
- P ph?i tr? t?i d?u m?ng d?ng, n?u không, k?t qu?
c?a delete s? ph? thu?c vào trình biên d?ch và
lo?i d? li?u dang s? d?ng. Ta có th? nh?n du?c
l?i runtime error ho?c k?t qu? sai
635. M?ng (Array)
645. M?ng (Array)
65Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
666. M?ng con tr? (Pointer array)
- Có th? khai báo m?ng con tr? (tuong t? nhu m?ng
s?) - Trong m?ng con tr?, các ph?n t? m?ng luu con tr?
void main() int a5 int i14, i23,
i32, i41, i50 a0 i1 a1 i2
a2 i3 a3 i4 a4 i5
printarr(a)
void printarr(int a) for(int j0 jlt5
j) coutltltaj ltlt" "
Chuong 1 Ôn t?p C/C
67Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
687. M?ng hai chi?u (Two-dimensional array)
- Khai báo
- Ví d?
- int a23
- float mang105
- Không l?y d?a ch? c?a ph?n t? m?ng hai chi?u b?ng
toán t?
Ki?u_d?_li?u tên_m?ngs?_dòng s?_c?t
Chuong 1 Ôn t?p C/C
697. M?ng hai chi?u (Two-dimensional array)
- Duy?t m?ng hai chi?u s? d?ng con tr?
- Ví d?
- float pa, a23
- pa (float)a // neu khong ep kieu thi C se
canh bao - // nhung chuong trinh van chay tot
- Khi dó pa tr? t?i a00
- pa1 tr? t?i a01
- pa2 tr? t?i a02
- pa3 tr? t?i a10
- pa4 tr? t?i a11
- pa5 tr? t?i a12
Chuong 1 Ôn t?p C/C
70Bài t?p
- Vi?t chuong trình cho nh?p 1 m?ng hình ch? nh?t
và tính di?n tích, chu vi c?a chúng - Vi?t chuong trình cho nh?p 1 m?ng hình tròn và
tính di?n tích, chu vi c?a chúng
Chuong 1 Ôn t?p C/C
71Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
728. C?u trúc (Structure)
- Ðu?c s? d?ng khi c?n thao tác trên d? li?u có
nhi?u thu?c tính - Cú pháp
- Ví d?
- struct Ngay
- int thang
- int ngay
- int nam
-
struct Tên_ki?u_c?u_trúc các_thành_ph?n
Chuong 1 Ôn t?p C/C
738. C?u trúc (Structure)
- Khai báo bi?n ki?u c?u trúc (2 cách)
- Ví d?
- Ngay n
- ho?c struct Ngay ng
- Kh?i t?o cho m?t c?u trúc
- Ví d?
- struct Ngay d10,15,2004
- struct Ngay a 10,15,2004,
10,16,2004, 10,17,2004,
10,18,2004
Tên_c?u_trúc tên_bi?n struct Tên_c?u_trúc
tên_bi?n
Chuong 1 Ôn t?p C/C
748. C?u trúc (Structure)
- Truy c?p thành ph?n c?a c?u trúc
- Dùng toán t? . Tên_bi?n_c?u_trúc.Tên_thành
_ph?n - Ví d?
- Ngay d
- d.ngay 10
- d.thang 10
- d.nam 1910
Chuong 1 Ôn t?p C/C
758. C?u trúc (Structure)
Chuong 1 Ôn t?p C/C
76Bài t?p
- Vi?t chuong trình tính di?n tích, chu vi hình ch?
nh?t (yêu c?u khai báo c?u trúc hình ch? nh?t) - Vi?t chuong trình tính di?n tích, chu vi hình
tròn (yêu c?u khai báo c?u trúc hình tròn)
Chuong 1 Ôn t?p C/C
77Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
789. Con tr? c?u trúc (Structure pointer)
- Gi?ng nhu các ki?u d? li?u khác, ta có th? khai
báo con tr? c?u trúc - Ví d?
- struct Ngay p, a10, p1, b
- p a p1 b
- Truy nh?p thành ph?n c?a c?u trúc
- tên_con_tr?-gttên_thành_ph?n
- ho?c
- (tên_con_tr?).tên_thành_ph?n
Chuong 1 Ôn t?p C/C
799. Con tr? c?u trúc (Structure pointer)
includeltiostream.hgt struct student char
name30 float marks void main (
) student sv char s30 float f cingtgts
cingtgtf sv-gtname s sv-gtmarks f coutltlt"
Name is "ltlt sv-gtnameltlt"\n" coutltlt" Marks are
"ltltsv-gtmarksltlt"\n"
Chuong 1 Ôn t?p C/C
80Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
8110. Chu?i (String)
- Là m?ng các ký t? (array of char)
- K?t thúc b?i ký t? null \0 (ending with null
char \0) - Chu?i h?ng du?c t? d?ng thêm \0
- Ví d? char strHello
-
8210. Chu?i (String)
- Khai báo chu?i
- char str H,e,l,l,o,\0
- char str Hello
- char str Hello
8310. Chu?i (String)
- Hàm nh?p chu?i
- char gets(char s)
- Nh?n ký t? cho d?n khi nh?n d?u Enter
- T? d?ng thêm ký t? \0
- So sánh v?i cingtgts //????
- Hàm xu?t chu?i
- int puts(const char s)
- coutltlts
8410. Chu?i (String)
- Keyboard buffer
- char szKey "aaa"
- char s10
- do
- coutltlt"doan lai di?"
- gets(s)
- while (strcmp (szKey,s) ! 0)
- puts ("OK. corect")
- If user input aaaaaaaaaaaaa???
8510. Chu?i (String)
- M?t s? hàm v? chu?i (c?n include ltstring.hgt)
- strcpy(s1, s2)
- strcat(s1, s2)
- strlen(s1)
- strcmp(s1, s2) -gt (-1,0,1)
- strchr(s1, ch)
- strstr(s1, s2)
8610. Chu?i (String)
- Ví d?
- char s180, s280
- cout ltlt "Input the first string "
- gets(s1)
- cout ltlt "Input the second string "
- gets(s2)
- cout ltlt "Length of s1 " ltlt strlen(s1)
- cout ltlt "Length of s2 " ltlt strlen(s2)
- if (!strcmp(s1, s2))
- cout ltlt "These strings are equal\n"
- strcat(s1, s2)
- cout ltlt "s1 s2 " ltlt s1 ltlt endl
- strcpy(s1, "This is a test.\n")
- cout ltlt s1
- if (strchr(s1, 'e')) cout ltlt "e is in " ltlt s1
- if (strstr(s2, "hi")) cout ltlt "found hi in "
ltlts2
87Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
8811. T?p tin (File)
- C?n include ltio.hgt
- T?o file m?i
- FILE fp
- fpfopen(d\\test.txt", "wb"))
- Ghi n?i dung vào file
- fwrite(Address, sizeof(TYPE), count, fp)
- Ðóng file (Luu file)
- fclose(fp)
8911. T?p tin (File)
- FILE f
- File text, File binary
- fopen, fclose, fread, fwrite, fscanf, fprintf,
feof.
Chuong 1 Ôn t?p C/C
9011. T?p tin (File)
- Ð?c file
- FILE fp
- fp fopen(d\\test.txt", rb"))
- while (fwrite(Address, sizeof(TYPE), count, fp))
-
- // x? lý n?i dung d?c du?c
-
- fclose(fp)
91Chuong 1 Ôn t?p C/C
- C?u trúc chuong trình C/C
- Các cú pháp co b?n
- Ð?a ch? (Address)
- Con tr? (Pointer)
- M?ng (Array)
- M?ng con tr? (Pointer array)
- M?ng hai chi?u (Two-dimensional array)
- C?u trúc (Structure)
- Con tr? c?u trúc (Structure pointer)
- Chu?i (String)
- T?p tin (File)
- Hàm (Function)
?
9212. Hàm (Function)
- Các cú pháp d?nh nghia hàm
void Tên_Hàm (ki?u_d?_li?u tên_bi?n,) // các
khai báo bi?n, // các l?nh
Ki?u_d?_li?u Tên_Hàm (ki?u_d?_li?u
tên_bi?n,) // các khai báo bi?n, // các
l?nh return value
9312. Hàm (Function)
- Cách g?i hàm
- Chu?n b? các tham s? d? g?i cho hàm n?u có
- Khai báo bi?n tuong ?ng và cho nh?p d? li?u cho
bi?n (n?u c?n) - Hàm không tr? v? giá tr? (void)
- Tên_Hàm (tham_s?_1, tham_s?_2,)
- Hàm có tr? v? giá tr?
- Khai báo m?t bi?n có ki?u trùng v?i ki?u tr? v?
c?a hàm - Vi?t l?nh gán bi?n Tên_Hàm (tham_s?_1,
tham_s?_2,) - S? d?ng bi?n d? xu?t, tính toán, g?i hàm khác
Chuong 1 Ôn t?p C/C
9412. Hàm (Function)
- Nguyên m?u hàm (Prototype)
- Nguyên m?u hàm du?c s? d?ng d? khai báo m?t hàm
nh? dó nó có th? du?c s? d?ng trong chuong trình
tru?c khi hàm dó du?c d?nh nghia th?c s? - Công d?ng
- Giúp chuong trình m?ch l?c
- Giúp t? ch?c chuong trình
- Cho phép s? d?ng hàm tru?c khi d?nh nghia
Chuong 1 Ôn t?p C/C
95- include ltstdio.hgt
- int compute_sum (int n) / Function Prototype/
- void main()
- int lim 8, sum
- coutltlt"Main lim (before call) is ltltlimltlt\n"
- sum compute_sum(lim)
- coutltlt"Main lim (after call) is ltltlimltlt\n"
- coutltlt"The sum of integers from 1 to ltlt limltlt
is ltltsum -
- int compute_sum(int n)
- int sum0
- for(ngt0n--)
- sum n
- return sum
96- include ltstdio.hgt
- int compute_sum(int n)
- int sum0
- for(ngt0n--)
- sum n
- return sum
-
- void main()
- int lim 8, sum
- coutltlt"Main lim (before call) is ltltlimltlt\n"
- sum compute_sum(lim)
- coutltlt"Main lim (after call) is ltltlimltlt\n"
- coutltlt"The sum of integers from 1 to ltlt limltlt
is ltltsum -