Ngôn ngữ lập trình C - Chương 3 ppsx

39 214 0
Ngôn ngữ lập trình C - Chương 3 ppsx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ch Ch −¬ −¬ ng ng 3 3 C C ¸ ¸ c c ki ki Ó Ó u u d d ÷ ÷ li li Ö Ö u ph u ph ø ø c h c h î î p p Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 2 3.1 C++ v 3.1 C++ v µ µ c c ¸ ¸ c ki c ki Ó Ó u d u d ÷ ÷ li li Ö Ö u ph u ph ø ø c h c h î î p p  3.1.1 Kiu d liu trong ngôn ng lp trình – Kiu c s (vô hng) • Gm các kiu d liu kí t, s (nguyên, thc), có th c kiu lôgic. – Là các kiu c bn trong hu ht các ngôn ng lp trình. • S dng khi cn biu din các d liu nguyên t, đn gin – Kh nng biu din d liu b hn ch. – Kiu phc hp (bc cao, dn xut) • Kiu d liu phc hp: đc to thành t các kiu c s – Còn gi là kiu bc cao hay kiu dn xut. – Thc t lp trình đòi hi các kiu d liu phc tp • Kiu d liu phc hp å tính cu trúc ca d liu å tng kh nng biu din d liu. – S dng trong các chng trình đòi hi kh nng biu din d liu phc tp hn. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 3 3.1 C++ v 3.1 C++ v µ µ c c ¸ ¸ c ki c ki Ó Ó u d u d ÷ ÷ li li Ö Ö u ph u ph ø ø c h c h î î p p  3.1.2 Kiu d liu phc hp trong C++ – Các kiu d liu phc hp trong C++ • Kiu lit kê (enum) • Kiu mng: mng mt chiu, mng nhiu chiu. • Kiu cu trúc (struct): cu trúc, kiu hp (union), kiu trng bit. – Kt hp các kiu d liu trong C++ • Có th t hp các kiu c s, phc hp vi nhau. – Ví d: khai báo mt mng các cu trúc, hay khai báo mt cu trúc có thành phn là mng, … – t tên kiu d liu bng typedef trong C++ • Cú pháp: typedef tên_kiu_đã_có tên_mi; • T khóa typedef thng s dng đ đt tên mt kiu d liu phc hp å có th dùng tên đó đ khai báo bin sau này. – Trong C, typedef thng dùng đ đt tên cho kiu cu trúc. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 4 3.1 C++ v 3.1 C++ v µ µ c c ¸ ¸ c c ki ki Ó Ó u d u d ÷ ÷ li li Ö Ö u ph u ph ø ø c h c h î î p p  3.1.3 Kiu lit kê – Khái nim: tp hp các giá tr đc lit kê tng minh – Cú pháp: enum kiu_lit_kê {các_phn_t} các_bin; • VD: enum Thu {T2, T3, T4, T5, T6, T7, CN} t1, t2; • Có th có các khai báo bin th (lc b mt s thành phn), ví d không có tên kiu, tên bin hay c tên kiu ln tên bin. • Khai báo bin: Thu t3, t4; – Chú ý: trong C bin enum thc cht là bin nguyên, tên sau t khóa enum cha đc coi là tên kiu å phi khai báo bin theo cú pháp: enum kiu_lit_kê bin_lit_kê; – Chuyn kiu gia enum và int • Có th chuyn kiu t đng t enum sang int •  chuyn t kiu int sang enum phi dùng toán t ép kiu – VD: int m=2; t1=(Thu)m; – Trong C có th gán trc tip bin int cho bin enum. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 5 3.2 M 3.2 M ¶ ¶ ng ng  3.2.1 Khai báo và đnh ngha mng – Kiu mng • Là kiu d liu bao gm dãy liên tip các phn t cùng kiu. • S chiu ca mng là không gii hn. • Kích thc mng đc tính bng tng s phn t ca mng. • Mng cho phép thao tác vi mt dãy các phn t d liu mt cách thun tin hn, hiu qu hn. – Khai báo mng • Mng mt chiu: kiu_d_liu tên_mng[kích_thc]; • Mng nhiu chiu: kiu_d_liu tên_mng[kích_thc][kích_thc][…]…; • VD: int A[10]; long B[20][10]; float C[10][20][30]; Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 6 3.2 M 3.2 M ¶ ¶ ng ng  3.2.2 Thao tác vi bin mng – Truy nhp vào phn t mng • Mng mt chiu: tên_mng[ch_s] – Ch s có th là s thc å C++ t đng chuyn sang kiu nguyên. • Mng nhiu chiu: tên_mng[ch_s][ch_s][…]… – iu này th hin đnh ngha mng trong C++ ( ≠ Pascal). • Chú ý 1: C/C++ không kim tra vic tràn ch s – Vic s dng ch s vt khi phm vi cho phép có th gây li, chng hn có th làm thay đi các bin khác trong chng trình. • Chú ý 2: Tên mng là đa ch phn t đu ca mng – Tên mng là hng con tr, cha đa ch phn t đu tiên ca mng. – a ch các thành phn ca mng n chiu đc tính cho các phn t con n-1 chiu (không tính theo kiu d liu). Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 7 3.2 M 3.2 M ¶ ¶ ng ng  3.2.2 Thao tác vi bin mng – Nhp d liu cho bin mng • Nhp trc tip – S dng hàm scanf (hoc cú pháp cin>>) cho tng phn t mng. – Chú ý: trong TC 2.0 ch cho phép dùng toán t đa ch vi mng s nguyên (mng kiu int). • S dng bin trung gian – Cách này không ngn gn bng cách nhp trc tip nhng có th tin li hn khi ta cn x lý trên giá tr nhp vào trc khi gán cho mt phn t mng. • Trong thc t ta thng dùng vòng lp for đ nhp d liu. – Ch s mng là tng ng vi bin điu khin. – Mng có bao nhiêu chiu å dùng by nhiêu vòng for. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 8 3.2 M 3.2 M ¶ ¶ ng ng  3.2.2 Thao tác vi bin mng – Khi đu giá tr khi khai báo mng • Nu không khi đu, mng s đc gán giá tr 0. • Cú pháp: kiu_d_liu tên_mng[k.thc] = {g.tr_1,g.tr_2, } kiu_d_liu tên_mng[k.thc][…] = {{g.tr_1.1, g.tr_1.2, }, {g.tr_2.1, g.tr_2.2, }, } – Nu không mô t đ giá tr å các giá tr còn li đc ly ngu nhiên (thng là 0). – Nu không mô t kích thc mng å trình dch t xác đnh da vào s giá tr đc khi đu. • Không đc khai báo khi đu giá tr cho mng khai báo trong thân hàm (k c hàm main). Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 9 3.2 M 3.2 M ¶ ¶ ng ng  3.2.3 Xâu kí t – Khái nim xâu kí t • Xâu kí t là mng mt chiu các kí t (kiu char). – Trong xâu kí t có kí t kt thúc xâu ‘\0’ hay NULL (≠ kí t kiu char) å kích thc mng ln hn s ký t trong xâu là 1. • Không tn ti các phép toán so sánh, gán… trên xâu –  thc hin các phép toán này, phi vit các đon mã lnh x lý trên mng hoc dùng th vin. – Mng các xâu: • Là mng 2 chiu đc bit. • Có th đc khai báo nh là mng các con tr. • Thao tác trên mng các xâu: tng t nh thao tác trên mng thông thng. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 3.2 M 3.2 M ¶ ¶ ng ng  3.2.3 Xâu kí t – Vào/ra vi xâu kí t • Dùng hàm printf, scanf vi đnh dng %s cho bin xâu – Nên dùng ch th fflush(stdin) (hoc cin.clear() nu dùng các phép toán >> và <<) trc khi nhp xâu. • Dùng hàm puts và gets vi đi s là tên xâu. – Cho phép nhp c kí t trng (kt thúc nhp bng cách gõ Enter). • Xâu kí t có th khi đu bng mt danh sách các hng kí t hoc mt hng xâu kí t. – Hai cách này là nh nhau. – Các thao tác khác trên xâu • Tham kho các hàm x lý xâu trong th vin string.h • Các hàm thông dng: ctrcmp, strcpy, strcat, strlen, strchr… [...]... gi ng C+ + 14/10/2008 3. 4 C u tr c 3. 4.2 Thao t c v i bi n c u tr c – Kh i u cho c u tr c • C c thành ph n c a c u tr c có th kh i u nh kh i bi n thông th ng (xem thêm ph n ví d cu i ch ng) u c c – C th kh i u cho m ng c u tr c b ng c ch li t kê c c thành ph n c a chúng khi khai báo • M i chú ý i v i kh i áp d ng cho c u tr c: u cho m ng (xem ph n tr c) c ng – Ch cho phép kh i u i v i c u tr c ngoài... x c nh c c nút con n u c c a nút ang xem xét Thông th ng chúng là a ch c a c c i t ng V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5.2 C u tr c t tr – C c c u tr c t tr thông d ng: c y (ti p) • Phân lo i c y: – C nhi u c ch phân lo i, tùy theo tính ch t c a c y và s nút con c a m i nút trong c y – VD: C y nh phân: danh sách liên k t d ng c y, c m t nút g c, ... KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5.1 Con tr c u tr c – Con tr c u tr c • Khai báo con tr t i c u tr c: ki u _c u_tr c *bi n_tr ; • Thao t c v i con tr ki u c u tr c ~ con tr c c ki u kh c – Hoàn toàn áp d ng c c c phép toán a ch , phép gán, … • Truy nh p t i thành ph n t con tr c u tr c å 2 c ch vi t: – (*bi n_tr ).x //dùng c ch vi t thông th ngå r m rà, ph c t p –... nút c 2 nút con (2 nhánh) • C y nh phân: – C y nh phân là c u tr c t tr c 2 thành ph n liên k t – Hai c y con c a c y l n l t c g i là c y con trái, ph i • C i t, x lý trên c u tr c cây – S d ng con tr duy t qua c c nút trong c y – C i t chi ti t: xem tài li u tham kh o V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5 .3 Thao t c v i c u tr c d li u – C c thao t c. .. i ch c c con tr n m ng å m ng c a c c m ng – Kh c v i m ng hai chi u, c c m ng con c th c v trí b t kì å c th thao t c trên c c m ng con mà không t c ng n c c m ng ó – VD: int *p [3] ; int A[10], B[20], C[ 30 ]; p[0] = A; p[1] = B; p[2] = C; V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 3 Con trá vµ m¶ng 3. 3.2 M ng con tr và c p phát b nh – C p phát • ng ng cho m ng c p phát ng cho m ng... bi n c u tr c cùng ki u • Phép gán c u tr c s gán t ng ng d li u c c thành ph n V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 4 C u tr c 3. 4.2 Thao t c v i bi n c u tr c – Nh p d li u cho bi n c u tr c • C+ + không a ra c c ph ng ti n å ng i l p trình ph i th c hi n • Nh p tr c ti p: nh p li u cho bi n c u tr c – S d ng hàm scanf (ho c cú pháp cin>>) v i c c thành ph n c u tr c – Chú ý:... khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5.2 C u tr c t tr – C c c u tr c t tr thông d ng: c y • Khái ni m: – M i ph n t (nút) c nhi u ph n t liên k t (nút con) – T p h p nhi u c y g i là r ng • C y c nh ngh a m t c ch phi hình th c nh sau: – Ho c là c y r ng (không ch a thành ph n nào) – Ho c cây c t o thành t m t g c và c c cây con • M i nút trong c y t ng ng v i m t it ng c. .. qua c c ph n t , ph i c c c quy t c nh t nh • C c c u tr c t tr thông d ng: – Danh sách liên k t (danh sách th – C y (c y nh phân) V.S.Nam B/m KTHT, khoa CNTT, HXD ng, ng n x p, hàng i) Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5.2 C u tr c t tr – C c c u tr c t tr thông d ng: danh sách liên k t • Khái ni m: – Danh sách liên k t (m c n i) là m t c u tr c t tr trong ó m t ph n t c m t ho c. .. – bi n_tr -> x / /c ch vi t riêng cho bi n tr c u tr c – M ng c u tr c • Là m t m ng c c ph n t c ki u c u tr c • Thao t c trên m t ph n t m ng ~ thao t c trên bi n c u tr c • Khi gán tên m ng c u tr c cho m t bi n tr , hoàn toàn c th áp d ng c c quy t c x lý v i bi n tr nh ã mô t trong m c M ng V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5.2 C u tr c t tr – Khái... • C c thao t c kh c trên c y: xem tài li u tham kh o V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/10/2008 3. 5 Con trá vµ c u tr c 3. 5 .3 Thao t c v i c u tr c d li u å Bài t p l n! – c tài li u – L p trình c i ng t: • Vào/ra d li u (nên k t h p v i vào/ra t p tin (xem ch ng 5)) • C c thao t c x lý trên danh sách liên k t, ng n x p, hàng i, c y và c c c u tr c kh c • C c bài toán trên c u tr c d . khoa CNTT, HXD 3 3.1 C+ + v 3. 1 C+ + v µ µ c c ¸ ¸ c ki c ki Ó Ó u d u d ÷ ÷ li li Ö Ö u ph u ph ø ø c h c h î î p p  3. 1.2 Kiu d liu ph c hp trong C+ + – C c kiu d liu ph c hp trong C+ + •. Ch Ch −¬ −¬ ng ng 3 3 C C ¸ ¸ c c ki ki Ó Ó u u d d ÷ ÷ li li Ö Ö u ph u ph ø ø c h c h î î p p Bài ging C+ +. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 2 3. 1 C+ + v 3. 1 C+ + v µ µ c c ¸ ¸ c. c c mng – Kh c vi mng hai chiu, c c mng con c th c v trí bt kì å c th thao t c trên c c mng con mà không t c đng đn c c mng đó. – VD: int *p [3] ; int A[10], B[20], C[ 30 ]; p[0] =

Ngày đăng: 06/08/2014, 01:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan