1. Trang chủ
  2. » Công Nghệ Thông Tin

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

39 214 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 446,63 KB

Nội dung

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

w