C?u tr - PowerPoint PPT Presentation

About This Presentation
Title:

C?u tr

Description:

Title: C U TR C D LI U V THU T TO N DATA STRUCTURE AND ALGORITHMS Author: User Last modified by: Dai Loi Created Date: 1/25/2006 2:54:57 PM – PowerPoint PPT presentation

Number of Views:131
Avg rating:3.0/5.0
Slides: 95
Provided by: lnduyFile
Category:
Tags: thong

less

Transcript and Presenter's Notes

Title: C?u tr


1
C?u trúc d? li?u và THU?T TOÁNData Structure
and algorithms
2
Tà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

3
N?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)

4
Chuong 0 Gi?i thi?u chung
5
N?i dung
  • C?u trúc d? li?u
  • Thu?t toán
  • Ð? ph?c t?p c?a thu?t toán

?
6
C?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.

7
Ví 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)

8
N?i dung
  • C?u trúc d? li?u
  • Thu?t toán
  • Ð? ph?c t?p c?a thu?t toán

?
9
Thu?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

10
Ví 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

11
M?i quan h? c?a CTDL và thu?t toán
CTDL Thu?t toán Chuong trình
12
Ví 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

13
Ví 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

14
Ví 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

15
Ví 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

16
Ví 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

17
N?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
  • M?t s? l?p thu?t toán

24
Ð? ph?c t?p c?a thu?t toán
  • M?t s? l?p thu?t toán

25
Ð? ph?c t?p c?a thu?t toán
  • M?t s? l?p 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"
27
Chuong 1 Ôn t?p C/C
  • (Tham kh?o tài li?u môn Phuong Pháp L?p Trình)

28
Chuong 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)

29
1. 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
30
1. 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
31
1. 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
32
Chuong 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)

?
33
2. 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
34
2. 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
35
2. 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
36
2. 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
37
2. 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
38
2. 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
39
2. 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
40
2. 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
41
2. 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
42
2. 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
43
2. 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
44
2. 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
45
2. 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
46
2. Các cú pháp co b?n
47
2. 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

48
2. 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

49
Bà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
50
Chuong 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)

?
51
3. Ð?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
52
Chuong 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)

?
53
4. 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
54
4. 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
55
4. 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
56
4. 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)
58
Chuong 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)

?
59
5. 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
60
5. 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
61
5. 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
62
5. 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

63
5. M?ng (Array)
64
5. M?ng (Array)
65
Chuong 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)

?
66
6. 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
67
Chuong 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)

?
68
7. 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
69
7. 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
70
Bà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
71
Chuong 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)

?
72
8. 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
73
8. 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
74
8. 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
75
8. C?u trúc (Structure)
  • Ví d?

Chuong 1 Ôn t?p C/C
76
Bà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
77
Chuong 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)

?
78
9. 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
79
9. 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
80
Chuong 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)

?
81
10. 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

82
10. Chu?i (String)
  • Khai báo chu?i
  • char str H,e,l,l,o,\0
  • char str Hello
  • char str Hello

83
10. 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

84
10. 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???

85
10. 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)

86
10. 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

87
Chuong 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)

?
88
11. 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)

89
11. T?p tin (File)
  • FILE f
  • File text, File binary
  • fopen, fclose, fread, fwrite, fscanf, fprintf,
    feof.

Chuong 1 Ôn t?p C/C
90
11. 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)

91
Chuong 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)

?
92
12. 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
93
12. 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
94
12. 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
Write a Comment
User Comments (0)
About PowerShow.com