tin hoc dai cuong

Download Tin hoc dai cuong

If you can't read please download the document

Upload: dang-sinh

Post on 30-Jun-2015

248 views

Category:

Documents


4 download

TRANSCRIPT

PGS.TS Ph m Vn t ch bin Nguy n Hi u C ng Nguy n c D Hong Vn Thng

GIO TRNH

TIN H C I CNG

TR NG I H C GIAO THNG V N T I H N I - 20081

Gio trnh Tin h c i cng M CL C L I NI U....................................................................................................................... 3 PH N 1 ................................................................................................................................. 4 I CNG V TIN H C .................................................................................................. 4 CHNG 1 NH NG KHI NI M C B N V TIN H C.......................................... 5 1.1 i t ng nghin c u c a Tin h c............................................................................ 5 1.2 Thng tin v x l thng tin ..................................................................................... 5 1.3 H m v bi u di n thng tin trong my tnh........................................................... 6 1.4 Nguyn l c a h x l thng tin t ng ................................................................. 8 1.5 C u trc my tnh ................................................................................................... 10 1.6 M t s ng d ng c a Tin h c ................................................................................. 12 CHNG 2 H I U HNH...................................................................................... 14 2.1 H i u hnh MS-DOS........................................................................................... 14 2.2 H i u hnh Windows........................................................................................... 16 CHNG 3 THU T TON ........................................................................................ 21 3.1 Khi ni m............................................................................................................... 21 3.2 M t s phng php bi u di n thu t ton ............................................................... 21 3.3 Cc c u trc c b n c a thu t ton.......................................................................... 23 3.4 M t s thu t ton gi i m t s bi ton n gi n ...................................................... 27 PH N 2 ............................................................................................................................... 32 NGN NG L P TRNH C ............................................................................................... 32 CHNG 1 - M T S KHI NI M M U ............................................................. 34 1.1 T p k t ................................................................................................................ 34 1.2 T kha .................................................................................................................. 34 1.3 Tn......................................................................................................................... 35 1.4 M t s khi ni m.................................................................................................... 35 1.5 M t s chng trnh n gi n................................................................................. 38 1.6 M t s quy t c c n nh khi vi t chng trnh ......................................................... 39 1.7 Cch th c hi n cc chng trnh trn my tnh ...................................................... 40 BI T P CHNG 1 ................................................................................................. 41 CHNG 2 - CC KI U D LI U ............................................................................... 42 2.1 Cc ki u d li u c b n .......................................................................................... 42 2.2 H ng ...................................................................................................................... 43 2.3 Bi n........................................................................................................................ 45 2.4 M ng...................................................................................................................... 46 2.5 Cc php ton trn cc ki u .................................................................................... 48 2.6 Nh p xu t d li u ................................................................................................... 52 2.7 M t s hm th ng dng........................................................................................ 56 BI T P CHNG 2 ................................................................................................. 57 CHNG 3 - CC L NH I U KHI N ....................................................................... 58 3.1 Nh c l i khi ni m v cu l nh v kh i l nh ........................................................... 58 3.2. L nh if................................................................................................................... 58 3.3 L nh for ................................................................................................................. 61 3.4 L nh while ............................................................................................................. 63 3.5 L nh do - while ...................................................................................................... 65 3.6 L nh break ............................................................................................................. 66 3.7 L nh continue......................................................................................................... 66 BI T P CHNG 3 ................................................................................................. 68 CHNG 4 - HM V T CH C CHNG TRNH .................................................. 70 4.1 T ch c chng trnh thnh cc hm ...................................................................... 70 4.2 Tham s ki u con tr .............................................................................................. 73 2

Gio trnh Tin h c i cng 4.3 quy.................................................................................................................... 79 BI T P CHNG 4 ................................................................................................. 83 CHNG 5 - C U TRC .............................................................................................. 84 5.1 nh ngha c u trc v khai bo bi n c u trc......................................................... 84 5.2 K t h p nh ngha c u trc v khai bo bi n c u trc ............................................ 84 5.3 S d ng typedef nh ngha ki u d li u c u trc ............................................... 85 5.4 Truy c p cc thnh ph n c a c u trc ..................................................................... 86 5.5 V d minh ho ....................................................................................................... 86 BI T P CHNG 5 ................................................................................................. 89 PH L C 1 - B NG M ASCII ..................................................................................... 91 PH L C 2 ..................................................................................................................... 93 DANH SCH CC HM C A TURBO C THEO TH T ABC .............................. 93

3

Gio trnh Tin h c i cng

L I NI UTin h c i cng l m t mn h c quan tr ng trong chng trnh gio d c i cng b c i h c. T i h u h t cc tr ng i h c v cao ng n c ta hi n nay, cc mn h c ny l b t bu c i v i m i sinh vin. V m t n i dung, tuy m c

tr ng c th khc nhau, song yu c u th ngy cng nng cao c v l thuy t l n th c hnh. Cu n Gio trnh Tin h c i cng ny c bin so n theo khung chng trnh c a B Gio d c v o t o dnh cho sinh vin ngnh k thu t. C u trc c a gio trnh g m 2 ph n: ph n 1 g m 3 chng trnh by nh ng ki n th c t ng quan v Tin h c, ph n 2 trnh by k thu t l p trnh cn b n b ng ngn ng C, ph n ny c nhi u v d m u v bi t p sinh vin rn luy n k nng l p trnh trn my. Khi bin so n, chng ti tham kh o cc gio trnh v ti li u gi ng d y mn h c ny c a m t s tr ng i h c cu n sch v a t yu c u cao v n i dung v a thch h p v i ng o sinh vin cc ngnh k thu t. Chng ti cng th a h ng c nh ng kinh nghi m qu c c trong qu trnh gi ng d y mn h c ny c a cc ng nghi p t i Tr ng i h c Giao thng v n t i. R t mong nh n c cc ki n ng gp c a cc c gi ch t l ng gio trnh ny ngy cng t t hn. M i ki n ng gp xin g i v : B mn Cng ngh ph n m m, Khoa Cng ngh thng tin, Tr ng i h c Giao thng v n t i, Lng Th ng, ng a, H N i. CC TC GI

3

Gio trnh Tin h c i cng

PH N 1 I CNG V TIN H C

4

Gio trnh Tin h c i cng

CHNG 1 NH NG KHI NI M C B N V TIN H C1.1 i t ng nghin c u c a Tin h cTin h c l ngnh khoa h c nghin c u v c u trc, tnh ch t v cc qu trnh x l thng tin m t cch t ng d a trn cc phng ti n k thu t. Tin h c l m t ngnh khoa h c tr , m i hnh thnh v pht tri n trong m y th p k qua. c bi t t u nh ng nm 80 c a th k tr c, cng v i s pht tri n c a my vi tnh, m ng my tnh v g n y l m ng Internet, tin h c pht tri n r t m nh v tr nn khng th thi u trong h u nh m i lnh v c c a i s ng x h i. Tin h c c sinh ra trn mi n gip danh c a nhi u lnh v c khoa h c. Hai ngnh khoa h c tr c ti p lm n n mng cho tin h c l ton h c v v t l. c trng quan tr ng c a tin h c l s truy n v x l thng tin m t cch t ng. Vi c x l thng tin tr c y cha t ra v n t ng ha v con ng i lun g n li n v i m i thao tc trong qu trnh x l thng tin. t c phng th c t ng ha ph i c cc phng ti n k thu t, m quan tr ng nh t l my tnh i n t (MTT). Phng ti n k thu t v a l cng c v a l i t ng nghin c u c a tin h c. Ngay t khi ra i, tin h c pht tri n theo hai b ph n h p thnh ch y u l: b o m ton h c, thu t ton, chng trnh (g i l ph n m m) v cc thi t b tnh ton, lu tr , truy n d n thng tin (g i l ph n c ng). Trong b n thn c ph n m m v ph n c ng l i c cc lnh v c nghin c u chuyn su hn v l thuy t v ng d ng. M c d r t kh phn nh chnh xc cc lnh v c nghin c u, ng d ng c a tin h c, nhng khi ni n tin h c, ng i ta th ng c p n: K thu t ch t o my tnh M ng my tnh K thu t l p trnh m b o ton h c cho my tnh v cc h th ng tnh ton Thu t ton v ph c t p c a thu t ton C s d li u Tr tu nhn t o ...

1.2 Thng tin v x l thng tinThng tin theo ngha thng th ng c a i s ng hng ngy c hi u nh l s thng bo, c t ngha, ... Thng tin t n t i d i nhi u d ng v c lu tr nh v t mang tin nh t bo, quy n sch, bng ghi m, a t , ... Thng tin v m t i t ng l cc d ki n v i t ng . Thng tin c kh nng lm thay i s hi u bi t c a con ng i, l ngu n g c c a nh n th c. Tr c th i i m nh n thng tin, c m t ci g ta cha bi t, cha xc nh (b t nh). Ch ng h n ta bi t sinh vin A h c H Giao thng v n t i nhng khng bi t khoa no, l p no th vi c tm n sinh vin A c m t b t nh no . By gi , gi s bi t thm sinh vin A h c khoa Cng ngh thng tin c a tr ng, th i u ny lm gi m b t nh trn. Nh v y tnh b t nh thay i khi nh n thm thng tin. Ta xt m t v d khc: N u bi t A thi t k thi h c k mn Tin h c i cng, nhng cha bi t c bao nhiu i m th vi c xc nh i m c a A c m t b t nh no . N u 5

Gio trnh Tin h c i cng bi t thm A t i m 7 ho c 8 th l ng thng tin b sung ny s lm gi m b t nh trn. Tnh b t nh c a s ki n lc u th hi n 1 trong 6 (i m c th l 5, 6, 7, 8, 9, 10) v lc sau l 1 trong 2 (i m c th l 7 ho c 8). Tnh b t nh g n li n v i khi ni m xc su t. Xc su t cng nh th b t nh cng l n, hay ni cch khc, l ng thng tin t l ngh ch v i xc su t c a s ki n. Thng tin th ng c bi u di n qua cc b k hi u. V d , ta c t p i t ng X c n bi u di n (t p cc th sinh ch ng h n). Ch n m t t p h u h n Y cc ch v s lm b ng ch ci, ta g i m t dy h u h n cc ch ci l m t t trn Y ( y l s bo danh). V i m i ph n t x X ta gn m t t y Y v g i l m c a x (Y g i l b ng m). Php t o m tng ng ny c n m b o tnh ch t v i x1x2 (x1 , x2 X) s c y1y2 (y1 , y2 Y) l m tng ng c a chng. Khi bi t m s (s bo danh), b ng php gi i m ta s tm c i t ng tng ng (th sinh). Thng tin a vo MTT ( lu tr , tnh ton, ...) th c ch t l dy cc tn hi u nh phn hay cn g i l cc bit (binary digit), n tng ng v i cc tr ng thi c a cc m ch i n t bn trong my tnh. V v y, trong x l thng tin t ng, d ng m quan tr ng c dng l m nh phn. Thng tin c m ha trn b ng ch ci g m 2 k hi u l ch s 0 v ch s 1. V d , v i b ng m ASCII, l b m tiu chu n c a M , m i k t (ch ci, ch s , k t c bi t) tng ng v i m t m 7 bit. Nh v y b ng m v i m i bit c 2 tr ng thi cho php m ha 27=128 k t . V i b ng m ANSI, hay cn g i l ASCII m r ng, m i k t c m ha b ng 8 bit, v nh v y l ng k t c th m ha c l 28=256 k t . Cu i nh ng nm 80 c a th k tr c, b ng m UNICODE c gi i thi u. B ng m ny c th s d ng 16 bit m ha m t k t , nn l ng k t c th m ha c l 216=65536 k t . Hi n nay UNICODE tr thnh m t tiu chu n c ch p nh n r ng ri v n c th m ha c cc k t c a t t c cc ngn ng trn th gi i.

1.3 H m v bi u di n thng tin trong my tnhH m c hi u nh t p cc k hi u v t p cc qui t c xc nh dng bi u di n v tnh gi tr cc s . Tr c h t hy xt nh ng h m quen thu c, i di n cho hai cch m l: h m La M ( m khng theo v tr) v h m th p phn ( m theo v tr). H m La M: M i k hi u bi u th m t gi tr (I=1, V=5, X=10, D=500, M=1000). N c cc qui t c, ch ng h n: n k hi u ng c nh nhau cho bi t k hi u c l p l i n l n, v d : II=2, III=3, XXX=30; hai k hi u trong k hi u l n ng tr c bi u th t ng c a hai k hi u , v d : VI=6, XI=11, ... Nh v y trong h m La M, m i k hi u ch i di n cho m t gi tr , khng ph thu c vo v tr c a n trong bi u di n. H m th p phn: S d ng 10 k hi u (l cc ch s : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Qui t c tnh gi tr : gi tr c a m i k hi u ph thu c vo b n thn k hi u v v tr c a n trong bi u di n. V d : trong s 555, ch s 5 hng n v ch 5 n v , ch s 5 hng ch c ch 50 n v (5*101), ch s 5 hng trm ch 500 n v (5*102). S l ng cc ch s dng trong h th p phn (10 ch s ) g i l c s c a h m. S m c a c s 10 xc nh gi tr nh l ng c a m i n v . H m th p phn ch l m t tr ng h p ring khi ch n c s l 10. T ng qut, b t k m t s nguyn b > 1 no cng u c th ch n lm c s . Lc cc k hi u c a h m l 0, 1, 2, ..., b-1. Trong tin h c, cc h m th ng c s d ng l: h c s 2 (h nh phn) ch dng 2 k hi u {0, 1} h c s 8 dng cc k hi u {0, 1, 2, 3, 4, 5, 6, 7} h c s 16 dng cc k hi u {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}. Khi c n phn bi t s h m no, ta c th s d ng c s lm ch s , v d : 1012 , 58 , 516 . 6

Gio trnh Tin h c i cng MTT ch c th tc ng tr c ti p v i cc s nh phn, trong khi con ng i l i th ng lm vi c trn h th p phn. V th c n ph i c thu t ton chuy n i s t h m ny sang h m khc. chuy n i s t h m c s b1 sang h m c s b2 , ng i ta th ng dng h th p phn lm trung gian: chuy n s t h m c s b1 sang h th p phn, sau chuy n ti p s t h th p phn sang h m c s b2. 1.3.1 Bi n i s h m b t k sang h th p phn: h m c s b. tm bi u di n c a N trong h

Cho s N= (dn-1dn-2...d1d0d-1d-2...d-m) th p phn, ta ti n hnh theo cc b c: Vi t N d i d ng a th c:

N = dn-1 bn-1 + dn-2 bn-2 + ... + d1 b1 + d0 b0 + d-1 b-1 + d-2 b-2 + ... + d-mb-m S d ng php ton c a h th p phn tnh gi tr a th c. V d : 1110,12 = 1.23 + 1.22 + 1.21 + 0.20 + 1.2-1 = 14,5 D3F,416 = D.162 + 3.161 + F.160 + 4.16-1 = 13.162 + 3.161 + 15.160 + 4.16-1= 3391,25 1.3.2 Bi n i s h th p phn sang h m c s b t k:

Tr c h t c n tch ph n nguyn v ph n th p phn (n u c), r i ti n hnh bi n i chng ring bi t sang h m c s b. Sau b ng cch ghp n i cc k t qu ta thu c gi tr c n tm. bi n i ph n nguyn N, ta chia nguyn n cho b c thng s l N1 v s d d1. Sau l i l y N1 chia nguyn cho b, c thng s l N2 vo s d l d2, ... L p l i qu trnh n khi thng s Nk=0, ta s c k t qu c n tm l (dk ... d2d1). V d : 5210 = ?2 . Ta th c hi n theo thu t ton nh sau: Php chia nguyn 52 : 2 26 : 2 13 : 2 6:2 3:2 1:2 Nh v y 5210 = 1101002 V d : 5850610 = ?16 . Ta th c hi n theo thu t ton nh sau: Php chia nguyn 58506 : 16 3656 : 16 228 : 16 14 : 16 Nh v y 5850610 = E48A16 bi n i ph n th p phn 0,M ta nhn n v i b, c ph n nguyn c a k t qu l d1, ph n th p phn cn l i sau khi l y k t qu tr i d1 l 0,M1. Sau l y 0,M1 nhn v i b, c ph n nguyn c a k t qu l d2, ph n th p phn cn l i sau khi l y k t qu tr i d2 l 0,M2, ... 7 Thng s 3656 228 14 0 S d 10 8 4 14 Thng s 26 13 6 3 1 0 S d 0 0 1 0 1 1

Gio trnh Tin h c i cng Ti p t c l p l i qu trnh ny, n c k t thc ho c l p v h n, khi ty theo yu c u m quy t nh d ng khi no. Ta s c k t qu c n tm l (0,d1d2d3 ...) V d : 0,687510 = ?2 Php nhn 0,6875 * 2 0,375 * 2 0,75 * 2 0,5 * 2 K t qu 1,375 0,75 1,5 1,0 Ph n nguyn 1 0 1 1

Nh v y: 0,687510 = 0,10112 T y suy ra: 52,687510 = 110100,010112 V d : 0,843510 = ?16 Php nhn 0,8435 * 16 0,496 * 16 0,936 * 16 0,976 * 16 ... K t qu 13,496 7,936 14,976 15,616 ... Ph n nguyn 13 7 14 15 ...

Nh v y: 0,843510 = 0,D7EF...16 T y suy ra: 58506,843510 = E48A,D7EF...16 1.3.3 Bi u di n thng tin trong my tnh: MTT x l c d li u s v phi s , nhng c hai lo i d li u ny khi a vo my u l dy cc tn hi u nh phn, th ng c th hi n b ng cc ch s 0, 1 (g i l cc bit). Theo ngha MTT x l d li u b ng s , v bit l n v thng tin. S c bi u di n d i d ng nh phn chnh l m t dy cc bit lin ti p. Cc s , cc k hi u, cc l nh my c bi u di n trong my tnh thng qua cc dy nh phn v i di xc nh, g i l t my. di t my l c trng c a t ng h my. Cc di t my thng d ng l 8, 16, 32, ... bit. di t my l xc nh, do v y d i s c th bi u di n c bn trong my tnh l h u h n.

1.4 Nguyn l c a h x l thng tin t ng1.4.1 Nguyn l lm vi c c a my tnh Von Neumann l ng i xu t ra nguyn l lm vi c c a my tnh s , v nguyn l ny v n c dng lm c s cho h u h t cc MTT hi n nay. Theo th MTT lm vi c theo chng trnh c trong b nh c a n. m b o nguyn t c ny, MTT c n ph i g m 5 thnh ph n c b n: b nh ghi thng tin, b s h c logic th c hi n cc tnh ton, b i u khi n, cc thi t b nh p v thi t b xu t d li u. My tnh ph i thi hnh c cc l nh c a ng i dng a vo. M t chng trnh th c ch t l m t chu i cc l nh, nh m th c hi n nh ng cng vi c no . M t t p h p cc qui c vi t nn cc dng l nh a vo my, cho my nh n di n v thi hnh g i l ngn ng . Ngn ng c th c hi n tr c ti p d a trn qui c c a cc m ch i n t trong my g i l ngn ng my. M i lo i my c m t ngn ng ring. Ngn ng my c u i m l my hi u c ngay, nhng n qu khc bi t so v i ngn ng c a con ng i, nn vi c xy d ng, ki m th chng trnh r t kh khn. 8

Gio trnh Tin h c i cng T u nh ng nm 60 c a th k tr c b t u xu t hi n nh ng ngn ng l p trnh (NNLT) b c cao. G i l ngn ng b c cao v cc ngn ng ny th ng s d ng nh ng t kha d a trn ti ng Anh, c c u trc g n gi hn v i ngn ng c a con ng i. Cc NNLT lun khng ng ng pht tri n, cc NNLT m i lun xu t hi n, ngy cng hon thi n hn p ng nh ng nhu c u ngy m t cao v qui m, ch t l ng, tin c y, ... c a ph n m m. Trn th c t , s pht tri n c a cc ngn ng l p trnh g n li n v i s pht tri n c a cng ngh ph n m m v c a tin h c. M t chng trnh vi t b ng m t NNLT no g i l chng trnh ngu n. Chng ta c n ph i c m t chng trnh d ch cho NNLT d ch cc chng trnh ngu n b ng NNLT ny ra ngn ng my, khi MTT m i c th hi u v th c hi n. t ng ha m t s cng vi c c a ng i v n hnh my, cng nh qu n l, khai thc cc thi t b ph n c ng hi u qu hn, t nh ng nm 1960 ng i ta xy d ng cc h i u hnh cho my tnh. Ngy nay ni n m t h th ng my tnh, ta ph i hi u l thi t b ph n c ng v h i u hnh ci t trn n. Cc h i u hnh ngy cng pht tri n p ng nhu c u khng c gi i h n c a ng i dng v s thay i, ti n b lin t c c a ph n c ng. M t s h i u hnh tiu bi u hi n nay l: MS-DOS, Windows, Linux, ... 1.4.2 L ch s pht tri n c a my tnh L ch s k thu t tnh ton c t lu i. Cng c tnh ton c a con ng i b t u t nh ng th r t th s nh ngn tay, hn s i, r i n bn tnh g y, my tnh c, my tnh c i n. n nm 1946, vi c ch t o thnh cng my tnh ENIAC t i M c coi nh m c nh d u s ra i c a MTT u tin trn th gi i. T khi c MTT, k thu t tnh ton chuy n sang m t giai o n m i. Nm Tr c CN 1642 1670 1842 1890 1946 1958 1964 1976 1981 S ki n Bn tnh g y Trung Qu c My tnh c, lm c php c ng (Blaise Pascal) My tnh c, lm c c ng,tr ,nhn,chia,cn b c 2 (Leibnitz) My tnh c th l p trnh tnh t ng (Charles Babbage) Herman Hollerith thi t k h th ng c th lu thng tin trn ba c l , c ra b ng t bo quang i n, thnh l p cng ty IBM My ENIAC (Eckert, Mauchly), g m 18000 bng chn khng, gi 500000$ My tnh u tin dng bng bn d n transitor (IBM 7090) My tnh u tin dng m ch tch h p IC (IBM 360) Hng DEC gi i thi u my vi tnh VAX 11/780 Hng IBM a ra my vi tnh IBM PC B ng 1.1: M t s m c trong l ch s pht tri n my tnh

Hnh 1.1: My tnh i n t ENIAC 9

Gio trnh Tin h c i cng S pht tri n c a MTT t nm 1946 n nay tr i qua nhi u th h . M i th h l m t b c pht tri n l n v c xc nh cn c vo tiu chu n k thu t v m c phong ph c a ph n m m. Th h th nh t (kho ng 1946-1955): Dng bng n i n t , tin c y th p, tiu hao nhi u nng l ng, t c tnh ton ch t vi nghn n vi ch c nghn php tnh m t giy. Ph n m m cha pht tri n, ch y u dng ngn ng my l p trnh. Th h MTT ny th ng ch dng trong m c ch nghin c u khoa h c. Th h th hai (kho ng 1955-1965): Dng bng bn d n thay n i n t , tiu th nng l ng t hn, b nh c dung l ng l n hn, t c kho ng vi ch c nghn php tnh m t giy. b t u xu t hi n m t s NNLT b c cao nh FORTRAN, COBOL, ... V ng d ng, b t u dng vo cc m c ch tnh ton trong qu n l kinh t , th ng k, ... Th h th ba (kho ng 1965-1980): Dng m ch tch h p thay cho bng bn d n, t c tnh ton ln n hng tri u php tnh m t giy. Cc ti n b khc ph i k n: xu t hi n nhi u h i u hnh t t hn, c kh nng s d ng b nh o, a chng trnh, cc thi t b ngo i vi pht tri n r t m nh m . Ph n m m pht tri n a d ng, ng d ng trong nhi u lnh v c. Th h th t (kho ng t sau 1980): Dng m ch tch h p c l n VLSI, s pht tri n c a m ng my tnh, cc ki n trc song song, t c tnh ton ln n nhi u tri u, th m ch hng t php tnh m t giy. V ng d ng, c s d ng trong t t c m i lnh v c. D a trn kch th c, ki n trc v t l, tnh nng, t c v quy m x l, ng i ta phn chia MTT thnh cc lo i: My tnh l n (mainfraim), my tnh mini (mini computer) v my vi tnh (micro computer). Cc my tnh l n c gi thnh r t t, th ng c s d ng vo cc lnh v c quan tr ng, i h i nhi u tnh ton ph c t p. Thu c lo i ny c th k n cc my Cray, IBM 3090/300, Gen/Blue, ... Cc my tnh mini c gi thnh v a ph i, thch h p cho cc m c ch chuyn dng. M t s my lo i ny l PDP, HP-300, IBM 360, Sun 4, ... Cc my vi tnh xu t hi n t cu i nh ng nm 70 c a th k 20. Cc my vi tnh c kch th c nh , gi thnh r hn cc lo i my trn, nn d n c s d ng r ng ri, k c trong nh ng cng ty nh , tr ng h c, h gia nh hay ch cho c nhn. Chnh v th phin b n my vi tnh u tin c a hng IBM c g i l my tnh c nhn (Personal Computer, vi t t t l PC). My vi tnh c a IBM chi m th ph n l n nh t vo u nh ng nm 1980, nn d n d n ng i ta g n nh ng ngha t PC v i t my vi tnh. C n lu r ng cch phn lo i trn ch l tng i, c n quan tm n c y u t th i gian. Nhi u my vi tnh ngy nay c tnh nng s d ng v t xa cc my tnh l n vo nh ng nm 1970.

1.5 C u trc my tnhV c u trc logic, m t MTT g m cc b ph n chnh l: b nh , b s h c-logic, b i u khi n, cc thi t b nh p/xu t d li u v cc ng truy n d n. V t ch c v t l, cc b ph n ny ng gi thnh cc thi t b sau: Bo m ch ch (Mainboard ho c Motherboard) B x l trung tm (Center Processing Unit, vi t t t l CPU) B nh : g m b nh trong (ROM, RAM) v b nh ngoi hay cn g i l cc thi t b lu tr (a t , a CD, ...) ng truy n (Bus) v cc c ng giao ti p B ngu n Cc thi t b ngo i vi: g m cc thi t b nh p d li u (bn phm, chu t, ...), cc thi t b xu t d li u (mn hnh, my in, my v , ...), ... 10

Gio trnh Tin h c i cng

Hnh 1.2 My vi tnh Thng my (case):

Hnh 1.3: My tnh xch tay (laptop)

H u h t cc thi t b c a MTT k trn u c t bn trong thng my, tr m t s thi t b ngo i vi. V hnh th c, th ng c 2 ki u thng my: t ng v t n m ngang. Ch r ng nhi u ng i quen g i c thng my l CPU, g i nh v y l sai v CPU ch l b x l trung tm g n trn bo m ch ch , t bn trong thng my. Bo m ch ch : L thnh ph n r t quan tr ng trong MTT, k t n i cc b ph n c a my tnh v i nhau. T t c cc thnh ph n c a MTT u c c m tr c ti p, ho c gin ti p (thng qua cp) vo bo m ch ch . Bo m ch ch g m cc thnh ph n chnh: c m b x l trung tm ( c m CPU), rnh c m b nh trong ( c m cc thanh RAM), BIOS, cc rnh c m cho cc thi t b ngo i vi ( c m c c mn hnh, c c m ng, ...), cc c ng giao ti p v i cc thi t b ngo i vi, ...

Hnh 1.4: Bn trong my vi tnh B x l trung tm (CPU): L b no c a MTT, v c th ni s c m nh c a my tnh ph thu c ch y u vo kh nng tnh ton c a CPU. B x l trung tm bao g m b s h c logic, b i u khi n v cc thanh ghi. B s h c logic c ch c nng th c hi n cc php tnh s h c c b n v cc php tnh logic. B i u khi n c ch c nng tm n p l nh t b nh , i u khi n cc b c th c hi n c a chng trnh. Cn cc thanh ghi th c ch t l b nh t c cao, m i thanh ghi c ch c nng ring. CPU c m t b ph n t o ra xung nh p i u khi n ho t ng c a n v ng b s ho t ng c a cc b ph n khc trong ton h th ng my tnh. T c CPU chnh l th hi n nh p ng h ny, o b ng megaherz (MHz). T c cng cao t c l my tnh ho t ng cng nhanh. 11

Gio trnh Tin h c i cng H u h t cc CPU s d ng hi n nay c s n xu t b i cc hng n i ti ng nh: Intel, AMD, Motorola.

Hnh 1.5: B x l trung tm (CPU) B nh B nh dng lu tr thng tin. n v o l ng thng tin l byte (vi t t t l B). M t byte th c ch t l m t dy cc bit lin ti p (8 bit). lu tr m t k t trong b nh , ta c n 1 byte. Trong th c t , th ng s d ng m t s n v l b i s c a byte l: kylobyte (vi t t t l KB, 1 KB = 210 B), megabyte (vi t t t l MB, 1 MB = 210 KB), gigabyte (vi t t t l GB, 1 GB = 210 MB), tetrabyte (vi t t t l TB, 1 TB = 210 GB). B nh trong g m b nh ch c (Read Only Memory, vi t t t l ROM) v b nh truy nh p ng u nhin (Random Access Memory, vi t t t l RAM). ROM ch a nh ng s li u v chng trnh r t c b n my tnh c th kh i ng v lm vi c. ROM c cc hng s n xu t my tnh ghi s n, n khng b m t i khi t t my nhng ta khng th thay i d li u trong ROM. Trn th c t , khi ni n b nh trong c a my tnh ng i ta th ng ng m hi u l RAM. RAM dng lu tr chng trnh t m th i trong khi my ang lm vi c. Chng ta c th c, ghi, s a xa d li u trong RAM, nhng do c ghi b ng i n nn khi t t my ho c m t i n th m i thng tin lu trong s b m t h t. B nh RAM th ng c t ch c thnh t ng bng (cn g i l thanh RAM), c dung l ng 16 MB, 32 MB, 64 MB, ... Cc thanh RAM c c m trn bo m ch ch . Trn bo m ch ch c th c m c nhi u thanh RAM. B nh RAM c t c truy c p cao, nhng khng lu c d li u sau khi t t my, v th nh ng d li u mu n lu tr lu di c n ph i ghi vo cc thi t b lu tr . Cc thi t b lu tr hi n nay r t a d ng, g m: bng t , cc lo i a t (a m m, a c ng), cc lo i a quang (a CD, a DVD), a USB (USB Flash Disk), ...

Hnh 1.6: B nh RAM B ngu n B ngu n chuy n i i n l i xoay chi u thnh dng i n m t chi u i n p th p (th ng kho ng 3v n 12v) cung c p cho m i b ph n trong my tnh.

1.6 M t s

ng d ng c a Tin h c12

Gio trnh Tin h c i cng Tin h c ngy nay tr thnh ng l c s n xu t c a x h i. MTT khc cc my mc khc ch n gia cng thng tin ch khng gia cng nguyn v t li u. S n ph m c a MTT l nh ng thng tin h ng d n cc ho t ng th c ti n. Ban u tin h c ch y u ph c v cc v n khoa h c k thu t, ng i s d ng khi cng ch y u l nh ng nh chuyn mn trong cc lnh v c . S pht tri n nhanh chng c a MTT v m ng Internet cho php tin h c xm nh p vo m i lnh v c. Do s pht tri n nhanh, m nh v r ng kh p c a tin h c nn s r t kh ni h t c nh ng ng d ng c a n, d i y ch tm l c m t s ph n m m ng d ng c b n, ph bi n hi n nay. Ph m m m ton h c: Mathematica: l ph n m m cho php tnh ton t n gi n nh cc tnh ton s h c n ph c t p hn, nh: cc bi ton v a th c, i s tuy n tnh, tm gi i h n, tm o hm, tnh tch phn, gi i phng trnh vi phn, khai tri n Taylor, ... Ngoi ra ph n m m ny cn cho php v bi u v th . Matlab: ph n m m ny c th th c hi n c cc tnh ton tng t nh Mathematica. Ngoi ra Matlab cn dng k thu t h a 3 chi u thi t k cc m hnh trong khoa h c k thu t ho c lm cc o n phim ho t hnh n gi n.

-

Ph n m m vn phng: B ph n m m vn phng n i ti ng nh t, c m t h u h t cc my tnh hi n nay l Microsoft Office. Trong b ph n m m ny c nh ng chng trnh: Word: so n th o, lu tr , s a ch a, in n cc vn b n. Excel: t o l p, lu tr , s a ch a, in n cc b ng tnh, v d : b ng lng, b ng th ng k bn hng, ... PowerPoint: t o l p cc b n bo co (slide) v trnh by bo co. Access: l m t h qu n tr c s d li u. FrontPage: xy d ng cc trang Web. Outlook: trao i, qu n l th i n t , l p l ch lm vi c, ... AutoCAD: t o l p v qu n l cc b n v k thu t. Soap: tnh ton k c u v n nh l c h c. 3D Max: l m t cng c m nh, c s h tr c a multimedia ph c v cho cng tc thi t k . CU H I CHNG 1 Cu 1: K tn cc lnh v c nghin c u c a Tin h c? Thng tin trong my tnh c lu tr , tnh ton theo h m no? Cu 2: Chuy n gi tr A =1001001 t h m 2 sang h m 10? Chuy n gi tr B =32456,4235 t h m 10 sang h m 2? Chuy n gi tr C=100100010 t h m 2 sang h m 8? Cu 3: Nu cc khi ni m: ph n c ng my tnh, ph n m m my tnh, ngn ng l p trnh? Nu c u t o c b n c a my tnh? 13

Ph n m m thi t k :

Gio trnh Tin h c i cng

CHNG 2 H I U HNHH ng c giao ti HH t i u hnh (HH) l t p h p cc chng trnh c bi t dng t ch c, ph i h p ho t a cc thi t b ph n c ng, t o ra mi tr ng lm vi c cho cc chng trnh ng d ng v p v i ng i dng. HH l m t ph n m m khng th thi u trn b t k my tnh no. ng c t i vo b nh sau khi kh i ng my tnh.

Hi n nay c r t nhi u HH cho cc h my khc nhau. S l ng cc HH cho my vi tnh cng khng t, nhng trn th gi i cng nh Vi t Nam t tr c t i nay s d ng ph bi n cc HH c a hng Microsoft l MS-DOS v Windows.

2.1 H i u hnh MS-DOSM t trong nh ng HH u tin cho cc my vi tnh l MS-DOS (Microsoft Disk Operating System), th ng g i t t l DOS. MS-DOS pht tri n qua nhi u phin b n t 1.0 n 6.0 r i d n c thay th b i HH Windows. Tuy nhin, nhi u t t ng v qui nh c a DOS v n c p d ng trong Windows. Ngoi ra, c nhi u ph n m m c vi t t khi HH Windows cha ph bi n, chng ch ch y c trn n n DOS, nn ngay c trong Windows v n cho php chng ta t o ra mi tr ng DOS o, gi ng nh khi dng MS-DOS ch y c cc ph n m m c. 2.1.1 M t s khi ni m T p tin (file): l t p h p cc thng tin c t ch c lu tr thnh m t n v c l p. C hai lo i t p tin l: t p tin d li u v t p tin chng trnh. M i t p tin c m t tn, g m 2 ph n, c phn cch b ng d u ch m (.) l: ph n tn v ph n m r ng. t tn t p tin trn DOS ph i tun theo m t s qui t c: ph n tn khng qu 8 k t , ph n m r ng khng qu 3 k t v khng ch a d u cch v cc k t c bi t. Th m c (directory): t o s d dng v thu n l i trong vi c qu n l v truy xu t n cc t p tin, DOS cho php t ch c cc t p tin thnh t ng nhm, g i l th m c. C th v th m c nh nh ng t h s ch a h s l cc t p tin. Trong th m c c th t o nh ng th m c con c a n. Th m c m bn trong khng c th m c con cng khng c t p tin no th g i l th m c r ng. Th m c hi n hnh l th m c m ta ang lm vi c, n c th hi n trn d u nh c c a DOS. Tn th m c cng khng c t qu 8 k t . D a trn khi ni m th m c, DOS t ch c d li u trn a m t cch logic d i d ng hnh cy, v i g c l a, r i phn chia ti p ra cc th m c, t cc th m c c th n cc th m c con c a n, ... v cu i cng l l cc t p tin. Cch t ch c d li u trn a c a HH Windows cng tng t nh v y, ch c i u trn Windows c th t tn t p tin v tn th m c v i di l n hn, c th bao g m c d u cch. ng d n: truy c p n m t th m c hay m t t p tin ta ph i ch ra n n m u tnh t th m c hi n hnh. Cc thng tin ny c trnh by b ng cch li t k tn cc th m c v t p tin, gi a hai th m c ho c t p tin s d ng d u s cho (\). Dy th m c v t p tin g i l ng d n. N u ph i xc nh th m c ho c t p tin a khc v i a hi n hnh th c n ch ra tn a, km theo d u hai ch m (:). Tn a th ng k hi u A cho a m m, C, D cho a c ng, ... V d m t ng d n: C:\GIAOTRINH\THDC\CHUONG1.DOC Cc k t i di n: th ng c s d ng khi ph i lm vi c v i nhi u t p tin c chung m t tnh ch t no . C hai lo i k t i di n l: ? i di n cho 1 k t t i v tr n ng v * i di n cho nhi u k t k t v tr n ng. 14

Gio trnh Tin h c i cng 2.1.2 M t s qui c M t l nh c a DOS c vi t b t u t d u nh c c a DOS trn mn hnh. Gi a ph n l nh v ph n thng tin pha sau ph i c t nh t m t d u cch. Trong l nh c a DOS khng phn bi t ch hoa v ch th ng. Sau khi vi t xong l nh, g phm Enter th c hi n l nh . Trong cch vi t l nh sau y, ph n t gi a d u < v d u > l b t bu c ph i c, n u khng l nh s sai c php, cn ph n t gi a d u [ v ] l ph n l a ch n, ty theo yu c u m c c n s d ng hay khng. 2.1.3 M t s l nh lm vi c v i th m c: 1) T o th m c m i: MD [ ng d n] Trong : [ ng d n] l tn a, tn cc th m c xc nh th m c c n lm vi c, t c l th m c m ta s t o th m c m i trong n, l tn th m c m i c n t o, l g phm Enter trn bn phm. V d trn VANPHONG: a C hi n hnh c th m c GIAOTRINH, c n t o m t th m c m i c tn

MD GIAOTRINH\VANPHONG 2) Xa m t th m c r ng: RD [ ng d n] 3) Chuy n n m t th m c: CD [ ng d n] Th m c sau khi c chuy n n s tr thnh th m c hi n hnh. Chuy n n th m c cha: CD .. Chuy n n th m c g c: CD\ 4) Xem n i dung th m c: DIR [ ng d n] [tn th m c] [/p] N u ch dng DIR th ta s xem c n i dung c a th m c hi n hnh: n c nh ng th m c con no, t p tin no, kch th c t ng t p tin l bao nhiu byte. Tham s /p xem t ng trang mn hnh, dng khi s l ng t p tin c a th m c c n xem l n. 2.1.4 M t s l nh lm vi c v i t p tin 1) Xa t p tin: DEL [ ng d n] xc nh tn t p tin c n ch r tn v ph n m r ng. C th s d ng cc k t i di n xa cng lc nhi u t p tin c chung nh ng tnh ch t no . V d : xa t t c cc t p tin c ph n m r ng l TMP trong th m c THDC DEL GIAOTRINH\THDC\*.TMP 2) i tn t p tin: 15

Gio trnh Tin h c i cng REN [ ng d n] 3) Sao chp t p tin: COPY Trong ph n c n ch ra cc t p tin c n sao chp v ph n ch ra ho c th m c s sao chp cc t p tin trn vo. a

2.2 H i u hnh Windows2.2.1 M t s c i m HH Windows l b c pht tri n ti p theo c a MS-DOS. Khc bi t d nh n th y nh t c a Windows so v i DOS l n c giao di n h a, v i cc th c n (menu), c a s v bi u t ng. Cc thao tc trn Windows r t tr c quan v d dng, ng i s d ng khng c n ph i nh v g nh ng dng l nh nh trn DOS. Windows c m t qu trnh pht tri n kh di, t gi a nh ng nm 80 c a th k 20, d n d n thay th DOS v tr thnh HH c s d ng nhi u nh t trn th gi i. Nh ng phin b n c s d ng r ng ri u tin l Windows 3.0 v Windows 3.1. Cc phin b n c s d ng ph bi n hi n nay l Windows 98, Windows 2000, Windows XP. N u my tnh ci t HH Windows, sau khi kh i ng my, Windows s t ng n p v ch y. Sau khi ng nh p, s xu t hi n mn hnh n n (desktop) c a Windows (cc v d y l trn phin b n Windows XP). M i bi u t ng trn mn hnh th ng i di n cho m t chng trnh. Mu n th c hi n chng trnh no ta nhy p chu t vo bi u t ng . Chng ta cng c th t o cc bi u t ng (shortcut) trn mn hnh cho b t k t p tin hay th m c no c n th ng xuyn dng t i. Thanh tc v (taskbar) pha d i mn hnh cho bi t cc ng d ng no ang th c hi n. Nt Start ch a ng nhi u ch c nng quan tr ng c a Windows. Trong Start, ch n All Programs ta s c danh sch cc chng trnh ci t trn my, mu n ch y chng trnh no ch c n b m chu t vo bi u t ng tng ng. t t my ch n Turn Off Computer --> Turn Off, kh i ng l i my ch n Turn Off Computer --> Restart.

16

Gio trnh Tin h c i cng

Hnh 2.1: Mn hnh desktop c a Windows XP

Hnh 2.3 Sau khi b m ch n nt Start

Hnh 2.3:Sau khi ch n All Programs

17

Gio trnh Tin h c i cng

Hnh 2.4: Sau khi ch n Log Off

Hnh 2.5: Sau khi ch n Turn Off Computer

Con chu t l thi t b giao ti p ch y u dng trong giao di n h a. Con chu t th ng c hai phm: phm tri v phm ph i. M t s thao tc c b n v i chu t l: B m chu t (ho c cn g i l nhy chu t, kch n, ... ) l thao tc n vo nt tri chu t, dng ch n m t i t ng no . B m chu t ph i l thao tc n vo nt ph i chu t, th ng dng kch ho t b ng ch n t c th i (b ng ch n g m nh ng ch c nng no cn ph thu c vo ng c nh). B m p chu t (ho c cn g i l nhy kp, kch p, ...) l thao tc b m nhanh 2 l n lin ti p phm tri chu t, th ng dng kch ho t m t i t ng no . Thao tc ko-th : b m v gi phm tri chu t, ko chu t t i v tr d nh, nh phm b m ra. Thao tc ny dng di chuy n v tr hay thay i kch th c m t i t ng.

-

Hnh 2.6: B ng ch n t c th i th c hi n cc cng tc qu n l t p tin, ta c n m chng trnh Windows Explorer, b ng cch nhy p vo bi u t ng trn mn hnh desktop, ho c b m t h p phm t t: - E.

18

Gio trnh Tin h c i cng

Hnh 2.7: Windows Explorer 2.2.2 Cc thao tc trong Windows Explorer Hi n th n i dung: Pha bn tri mn hnh Windows Explorer l t ch c th m c, cch t ch c ny cng gi ng nh DOS. Khi ch n m t th m c no (b ng cch b m chu t vo n) th danh sch cc t p tin v th m c con c a n xu t hi n bn ph i mn hnh. Ta c th s p x p v xem cc t p tin ny theo nhi u cch khc nhau (theo tn, theo ki u, ...) b ng cch b m chu t ph i mn hnh bn ph i, ch n Arrange Icons By, sau ch n cch s p x p tng ng.

Hnh 2.8: Ch n cch s p x p cc bi u t ng t p tin ng m th m c: m m t th m c: b m ch n bi u t ng d u c ng , ng m t th m c: b m ch n bi u t ng d u tr . Ch n i t ng (t p tin v th m c): ch n m t t p tin (ho c th m c) ta b m chu t vo n, ch n nhi u t p tin li n nhau ta b m chu t vo t p tin u, gi phm Shift r i b m chu t vo t p tin cu i, ch n nhi u t p tin khng li n nhau, ta gi phm Ctrl r i l n l t b m ch n cc t p tin. 19

Gio trnh Tin h c i cng Sao chp i t ng (cc t p tin v th m c t th m c ngu n sang th m c ch): Tm n th m c ngu n, ni ch a i t ng. nh d u ch n i t ng c n sao chp. B m chu t ph i m b ng ch n t c th i, ch n Copy. Cu i cng tm n th m c ch, b m chu t ph i, ch n Paste trn b ng ch n t c th i. N u mu n thay v sao chp, ta chuy n i t ng t th m c ngu n sang th m c ch ( i t ng khng cn trong th m c ngu n), ch vi c thay Copy b ng Cut.

Hnh 2.9: B ng ch n khi Copy i tn t p tin, th m c:

Hnh 2.10: B ng ch n khi Paste

Ch n m t i t ng (t p tin ho c th m c), b m chu t ph i vo i t ng, ch n ch c nng Rename trong b ng ch n, cu i cng g tn m i. Xa t p tin, th m c: Ch n m t i t ng (t p tin ho c th m c), b m chu t ph i vo i t ng, ch n ch c nng Delete trong b ng ch n ho c g phm Delete trn bn phm. Ch : cc t p tin, th m c sau khi th c hi n cc thao tc trn khng b xa h n, m ch b a vo thng rc. N u mu n ph c h i ta ch c n vo thng rc, ch n cc t p tin, th m c c n ph c h i, b m chu t ph i, ch n Restore. N u mu n xa h n t p tin, th m c no, th ta c n gi phm Shift khi ch n ch c nng Delete.

Hnh 2.11: Bi u t ng thng rc Thao tc trong Windows Explorer ch y u s d ng chu t, ngoi cc thao tc n gi n, nn t n d ng thm kh nng ko-th . Ch ng h n sao chp cc t p tin vo m t th m c no , ta c th nh d u ch n cc t p tin r i ko v th vo th m c ch. xa cc t p tin, ta c th b m ch n cc t p tin , r i ko v th vo bi u t ng thng rc. Chng ti ch gi i thi u y m t s ki n th c c b n nh t, v cc kh nng c a HH Windows r t phong ph, khng th c p h t trong gio trnh ny. Tuy nhin v i giao di n h a, tr c quan, vi c t h c v lm ch cc thao tc, khai thc cc ch c nng khc c a Windows sau khi n m c nh ng ki n th c c b n l hon ton khng kh. CU H I CHNG 2 Cu 1: Nu khi ni m HH? K tn m t s HH? Cu 2: Quy t c t tn File trong h i u hnh DOS? Nu cc l nh lm vi c v i th m c, cc l nh lm vi c v i t p tin? Cu 3: Cc thao tc t t my tnh trong h i u hnh Windows? 20

Gio trnh Tin h c i cng

CHNG 3 THU T TON3.1 Khi ni mThut ton l m t dy cc quy t c, nh m xc nh m t dy cc thao tc trn cc i t ng (d li u u vo) sao cho sau m t s h u h n b c th c hi n cc thao tc ta t c m c tiu c n lm (d li u ra l k t qu bi ton). V d : Thu t ton tm c s chung l n nh t (USCLN) c a hai s nguyn dng a,b. Input: a,b hai s nguyn dng Output: SCLN c a a, b

C th m t thu t ton ny nh sau: B c 1: Tm s d r c a php chia a cho b B c 2: Ki m tra: N u r = 0 th thng bo b l USCLN v k t thc N u r0 th th c hi n t a=b, b=r r i quay l i lm l i B c 1

Thu t ton trn g m cc thao tc tnh s d r, ki m tra r0?, n u r0 t a=b, b=r. Cc c trng c b n c a thu t ton Thu t ton ph i c tnh d ng: Thu t ton ph i k t thc sau m t s h u h n b c. Tnh xc nh: ch n. m i b c cc thao tc ph i r rng, khng gy nh p nh ng, ty

i l ng vo: M i thu t ton ph i c m t ho c nhi u d li u u vo i l ng ra: Sau khi k t thc thu t ton ta c th thu c m t s i l ng ra l k t qu c a bi ton. Tnh hi u qu : M i bi ton c th c nhi u thu t ton khc nhau gi i. M t thu t ton l t t th n ph i n gi n, ti t ki m b nh v th i gian th c hi n. Tnh ph d ng: Thu t ton c th gi i c m t s bi ton trong m t l p bi ton. Tnh hnh th c ha: Thu t ton ph i c th hnh th c c v ci t c trn my tnh.

3.2 M t s phng php bi u di n thu t tonMy tnh c s d ng nh l m t cng c h tr con ng i gi i quy t cc bi ton trong th c t . B n thn my tnh ch l m t v t v chi v gic, khng c t duy. Do , b n thn n khng th t gi i cc bi ton trong th c t c, m n ch c th th c hi n c cc l nh, do con ng i b o n lm thng qua m t ngn ng l p trnh. V v y my c th gip chng ta gi i m t bi ton no th ta c n ph i ci t thu t ton gi i bi ton cho my, theo my th c hi n gi i bi ton. ci t thu t ton cho my ng i ci t ph i c thu t ton gi i bi ton . C nhi u cch bi u di n thu t ton nh c t t nhin (li t k t ng b c), s kh i, gi m, . y ta lm quen v i m t s cch bi u di n thu t ton thng d ng 3.2.1 c t t nhin (Li t k t ng b c) 21

Gio trnh Tin h c i cng S d ng ngn ng t nhin bi u di n thu t ton b ng cch ch ra t ng b c c n th c hi n c a thu t ton. V d : Thu t ton gi i phng trnh b c 2: ax2+bxc=0 v i cc h s a, b, c l cc s th c, a 0. B c 1: Xc nh cc h s a=?, b=?, c=? c a phng trnh B c 2: Tnh = b2 - 4ac B c 3: Ki m tra : - N u < 0 th k t lu n phng trnh v nghi m - N u = 0 th k t lu n phng trnh c nghi p kp x1=x2=-b/(2a) - N u >0 th k t lu n phng trnh c 2 nghi m x1=(-b + )/(2a); x2=(-b- )/(2a) 3.2.2 S d ng s kh i S d ng h th ng cc k hi u bi u di n thu t ton. M t s k hi u s d ng bi u di n thu t ton: STT 1 2 3 K hi ubegin

ngha c a k hi u K hi u b t u thu t ton K hi u k t thc thu t ton K hi u nh p d li u vo K hi u xu t d li u ra S

end

Input:

4

Output:

Bt Lgc

5 Bi n=1, 2, ..,n

K hi u r nhnh N u Bt Lgc c gi tr ng th th c hi n theo nhnh N u Bt Lgc c gi tr Sai th th c hi n theo nhnh S

A

6

K hi u vng l p v i s l n xc nh tr c. Th c hi n cng vi c A n l n, ban u Bi n c gn b ng 1, sau m i l n l p bi n tng ln 1 n v

7 8

A A

K hi u kh i cc thao tc th c hi n cc cng vi c A K hi u g i chng trnh con A th c hi n 22

Gio trnh Tin h c i cng 9 K hi u ch h ng th c hi n thu t ton B ng 3.1: M t s k hi u dng trong v s kh i V d : Bi u di n thu t ton gi i phng trnh b c 2 b ng s kh i.

Begin Input: a, b, c

Delta = b 4ac

2

Delta < 0

S

Delta = 0

S

x = -b/2a

x1 = ( b + Delta ) /(2 a ) x 2 = ( b Delta ) /(2 a )Output: Pt c 2 nghi m x1, x2

Output: Pt v nghi m

Output: Pt C nghi m kp x

End

S kh i bi u di n thu t gi i phng trnh b c hai ax2+bx+c=0, a0, a, b, c, x R. Nh n xt: S d ng s kh i bi u di n thu t ton c u i m l tr c quan, d hi u, d ki m tra, nhng c m t s nh c i m l ph i v kh nhi u, c ng k nh, khng thu n l i cho bi ton ph c t p. Phng php ny ch y u s d ng cho ng i m i l p trnh v bi u di n cc thu t ton n gi n (t thao tc).

3.3 Cc c u trc c b n c a thu t tonKhi m t thu t ton ta s d ng cc c u trc sau y m t . C u trc tu n t C u trc r nhnh C u trc l p

3.3.1 C u trc tu n t Khi ni m: C u trc tu n t l c u trc bao g m nhi u b c. Cc b c ny c s p x p theo m t tr t t nh t nh. Khi my th c hi n n s th c hi n theo th t cc b c c s p x p. Trong bi u di n thu t ton b ng phng php c t t nhin th cc b c c s p x p tu n t . Trong c t ch ra b c no th c hi n tr c b c no th c hi n sau. 23

Gio trnh Tin h c i cng V du: c t thu t ton gi i phng trnh b c hai v d trong m c 3.2.1 th th t th c hi n cc b c l: th c hi n b c 1, sau khi th c hi n xong b c 1 th th c hi n b c 2 v sau khi th c hi n xong b c 2 th th c hi n b c 3. Trong bi u di n thu t ton b ng s kh i th trnh t th c hi n c a thu t ton c th c hi n theo chi u mi tn. V du: Tnh di n tch, chu vi c a m t hnh trn bn knh r. S kh i m t thu t ton gi i bi ton trn:begin

Input: r S = r2 C = 2r

Output:

S, C

End

3.3.2 C u trc r nhnh Khi ni m: C u trc r nhnh l c u trc bo cho my c n ki m tra m t i u ki n no c a bi ton. y k t qu c a i u ki n ki m tra ch nh n m t trong hai gi tr ng () ho c sai (S). N u k t qu ki m tra c gi tr ng s th c hi n theo nhnh ng, n u sai s th c hi n theo nhnh sai. Bi u th c i u ki n chnh l m t bi u th c lgc S kh i th hi n c u trc r nhnh

Bi u th c Lgc

S

V d : Gi i phng trnh b c nh t ax + b = 0 S kh i th hi n thu t ton:

24

Gio trnh Tin h c i cng

begin

Input :a, b

Sa=0

b=0

S

x = -b/a

Output: Pt v s nghi m Ouput: Pt v nghi m Output: x

end

3.3.3 C u trc l p Trong l p trnh chng ta c hai d ng c u trc l p: c u trc l p xc nh tr c v c u trc l p khng xc nh tr c. C u trc l p xc nh: Khi ni m: C u trc l p xc inh tr c l c u trc bo cho my l p i l p l i m t mi n tc ng no v i s l n l p xc nh tr c. Trong mi n tc ng c th bao g m m t t p c u trc c b n. S kh i th hi n c u trcBi n = 1, 2, .. n

Mi n tc ng

C u trc l p khng xc nh: Khi ni m: C u trc l p khng xc nh l c u trc bo cho my l p i l p l i m t mi n tc ng no v i s l n l p khng xc nh tr c. i u ki n k t thc vng l p l m t bi u th c lgc. 25

Gio trnh Tin h c i cng Trong mi n tc ng c th bao g m m t t p c u trc c b n. S kh i th hi n c u trc

Bi u th c lgc Mi n tc ng

S

Mi n tc ng

Ho cS Bi u th c lgc

V d : Tm s t nhin n nh nh t t ng s = 1 +

1 1 1 + + ... + 2.5 2 3 n

Gi i: Theo yu c u bi ton l c n tm n nh nh t s 2.5. tm c n ta th c hi n theo thu t ton sau: S d ng phng php c t t nhin m t thu t ton: B c 1. Kh i t o gi tr ban u n = 0, s = 0. B c 2. Tng gi tr n ln 1 n v (n = n + 1), tnh s = s + B c 3. Ki m tra:

1 n

N u s >= 2.5 th d ng l i ta c n l gi tr c n tm N u s < 2.5 th quay l i th c hi n l i b c 2.

S d ng s kh i m t thu t ton

begin

s = 0, n = 1

s < 2.5

S

s = s + 1/n n = n +1 s, n

end

26

Gio trnh Tin h c i cng

3.4 M t s thu t ton gi i m t s bi ton n gi n3.4.1 Bi ton m Bi ton: Cho m t dy n cc ph n t a1, a2,, an. Hy m xem trong dy c bao nhiu ph n t tho mn i u ki n no . M t cch t nhin th gi i bi ton trn, ta th c hi n duy t qua t ng ph n t . V i m i ph n t tho mn i u ki n th tng bi n m ln m t n v . Thu t ton B c 1. Xc nh n v cc ph n t a1, a2, ... an B c 2. Kh i t o m t bi n m v i gi tr l 0 B c 3. Th c hi n duy t qua t ng ph n t . V i m i ph n t c duy t, th c hi n ki m tra xem n c tho mn i u ki n bi ton khng? N u tho mn th tng bi n m ln m t n v . N u khng tho mn th duy t ph n t ti p theo. M t thu t ton b ng s kh iBegin

n

i = 1, 2, .., n

i = 1, 2, .., n Bt Lgc ai

S

Dem = Dem +1

Dem = 0

Dem

End

V d 1: Cho m t dy n s nguyn. m xem trong dy c bao nhiu s ch n. Thu t ton S d ng phng php c t t nhin m t thu t ton 27

Gio trnh Tin h c i cng B c 1. Xc nh n v cc ph n t a1, a2, ... an B c 2. Kh i t o m t bi n m v i gi tr l 0 B c 3. Th c hi n duy t qua t ng ph n t . V i m i ph n t c duy t, th c hi n ki m tra: N u ai chia h t cho 2 th tng bi n m ln m t n v . Ng c l i, duy t ph n t ti p theo. S d ng s kh i m t thu t tonBegin

Input: n

i = 1, 2, .., n

i = 1, 2, .., n

ai

M2

S

Input: ai

Dem = Dem +1

Dem = 0

Output: Dem

End

M t thu t ton m cc s ch n trong m t dy s 3.4.2 Bi ton tm gi tr l n nh t, gi tr nh nh t Trong cu c s ng th c t , hng ngy chng ta lun ph i i tm gi tr l n nh t, nh nh t trong m t t p ph n t . V d nh tm ng i c chi u cao cao nh t (th p nh t) trong l p; tm sinh vin c i m t ng k t cao nh t (th p nh t) trong l p, trong khoa, trong tr ng,. Nh v y n u c m t thu t ton gi i bi ton ny v ci t n trn my tnh my gi i gip chng ta th th c s l m t ng d ng c ch. Bi ton c th c pht bi u nh sau: Bi ton: Cho m t dy n s b t k. Hy tm gi tr l n nh t (nh nh t) c a dy s . tm gi tr l n nh t (nh nh t) c a cc ph n t trong dy. Ta th c hi n so snh cc ph n t trong dy v i nhau s tm ra c gi tr mong mu n. Qu trnh tm c th hi n b ng thu t ton sau y. Thu t ton S d ng phng php c t t nhin mt t thu t ton B c 1. Xc nh n v cc s a1, a2, , an Bc 2. S d ng Max lu gi tr l n nh t. Gi s gi tr l n nh t l a1 (t c l Max = a1). B c 3. Duy t l n l t qua cc ph n t a2, a3, , an. So snh gi tr c a ph n t ai v i Max. N u ai > Max (i=2..n) th gn gi tr c a ai cho Max (Max = ai). N u ai < Max th chuy n xt ph n t ti p theo. Gi tr cu i cng lu trong Max chnh l gi tr l n nh t c a dy s . 28

Gio trnh Tin h c i cng S d ng s kh i m t thu t tonBegin

Input: n

i = 2, 3,..., n

i = 1, 2, .., n Max>= < b 3>7 c gi tr 0 a>=b 8>=8 c gi tr 1 a= == != && || ?: = += -= *= /= %= = &= ^= |= ,Trnh t k t h p Tri qua ph i Ph i qua tri Tri qua ph i Tri qua ph i Tri qua ph i Tri qua ph i Tri qua ph i Tri qua ph i Ph i qua tri Ph i qua tri Tri qua ph iCc php ton trn m t dng c cng th t u tin, cc php ton s u tin cao hn cc php ton hng d i.hng trn c i v i cc php ton cng m c u tin th trnh t tnh ton c th t tri qua ph i hay ng c l i. i u ny ch ra trong c t "Trnh t k t h p". vi t bi u th c m t cch chnh xc nn s d ng cc d u ngo c trn (ngo c n).2.6 Nh p xu t d li uNh p xu t d li u l cch chng ta a d li u vo chng trnh v a ra k t qu c a chng trnh. Thng th ng, d li u c a vo thng qua bn phm v k t qu c a ra mn hnh.2.6.1 a k t qu ra mn hnhC th a ra mn hnh m t dng ch , ho c cc gi tr s b ng l nh printf. L nh printf c d ng:printf (, bt1, bt2, ..., btn);y bt1, bt2,..., btn l cc bi u th c m gi tr c a chng c n c a ra mn hnh.Trong chu i i u khi n, c th ch a: K t i u khi n. Cc k t hi n th . Cc k t dng m t ki u cch a ra c a cc bi n, ta s g i chng l cc c t .M t s k t i u khi n c nh ngha tr c, th ng c d u \ pha tr c, v d k t i u khi n xu ng dng l \n, k t tab l \t. Cc k t hi n th s c a ra gi ng nh khi chng xu t hi n khi n. trong chu i i uCc c t s ch ra cch m gi tr c a cc bi u th c s c a ra. M i bi u th c c n ph i c m t c t tng ng. Khi in ra mn hnh, gi tr c a cc bi u th c s c thay th tng ng vo v tr cc c t . Sau y l m t s d ng th ng dng c a cu l nh printf.a ra m t thng bo52Gio trnh Tin h c i cngi khi chng ta ch mu n a ra m t thng bo, m t cu h ng d n, khi ch c n a vo chu i i u khi n khng ch a cc c t . N i dung c a xu s c a ra mn hnh.V d , a ra m t thng bo nh c ng i dng nh p vo h s c a a th c, c th dng l nh:printf(\nNhap he so da thuc: );Khi trn mn hnh s xu t hi n:Nhap he so da thuc:a ra cc gi tr nguynKhi mu n a ra cc k t qu l cc gi tr nguyn, chng ta dng c t %d. Sau y chng ta s xt m t s v d c th hi u c ho t ng c a c t ny. V d , o n m sau a ra t ng c a hai s nguyn:int a, b; a = 10; b = 25; printf(Tong cua %d va %d la %d, a, b, a + b);Cu l nh printf s thay th cc c t %d b ng gi tr cc bi u th c tng ng theo th t a vo. Trong o n m trn, gi tr c a a, b v a + b s l n l t c thay th vo cc v tr %d trong chu i i u khi n, k t qu a ra mn hnh nh sau:Tong cua 10 va 25 la 35Trong v d trn, gi tr c a cc bi u th c c bao nhiu ch s th b y nhiu v tr trn mn hnh c s d ng in gi tr , v d gi tr 10 c n hai v tr th my s dnh ng hai v tr in ra gi tr 10. Tuy nhin, trong m t s tr ng h p, nh in ra cc gi tr c a m t ma tr n, ho c in cc gi tr theo d ng c t, th chng ta c n dnh m t s v tr nh t nh cho m t gi tr , m c d s v tr c n thi t in ra gi tr c th nh hn. V d , o n chng trnh sau in ra gi tr cc lu th a c a 2 theo d ng c t:#include void main() { int i, a; a = 1; for (i = 1; i max) max = b; printf("\na = %8.2f\nb = %8.2f\nmax = %8.2f", a, b, max ); } /* Chuong trinh tinh max cua hai so thuc, dung if dang 2 */ #include void main() { float a,b,max; printf("\nVao hai so a va b: "); scanf("%f%f",&a,&b);/*gia tri cua a va b nhan tu ban phim */ if (a > b) max = a; else max = b; printf("\na = %8.2f\n b = %8.2f\n max = %8.2f", a, b, max); }3.2.3 S l ng nhau c a l nh ifCc l nh if c th l ng nhau. i u c ngha l: cc kh i l nh 1 v kh i l nh 2 (xem d ng 1 v d ng 2) l i c th ch a cc l nh if khc.59Gio trnh Tin h c i cng Trong tr ng h p c nhi u if v else, th m t v n quan tr ng l chng ta ph i xc nh c m nh else no thu c if no. C m t nguyn t c xc nh, l: m nh else s c g n v i if g n nh t tr c n. Tuy nhin, trnh nh m l n, nn dng c p ngo c {}. Sau y l v d gi i phng trnh b c nh t ax + b = 0 s d ng if l ng nhau.#include void main() { float a, b; printf("Nhap a, b: "); scanf("%f%f", &a, &b); if (a == 0) if (b == 0) printf("Vo so nghiem."); else printf("Vo nghiem."); else printf("x = %f", -b/a); } l a ch n m t trong nhi u tr ng h p, ta c th dng l nh if l ng nhau. V d , v i chng trnh gi i phng trnh b c 2, gi tr c a delta c th ri vo cc tr ng h p: l n hn 0, b ng 0 v nh hn 0.V i cc tr ng h p ny, cu l nh if else vi t c ph n hi khc bnh th ng, b ng cch t cu l nh if con n m cng hng v i else tr c . Sau y l v d gi i phng trnh b c 2 s d ng if l ng nhau.#include #include void main() { float a, b, c, delta; printf("Nhap a, b, c: "); scanf("%f%f%f", &a, &b, &c); delta = b*b - 4*a*c; if (delta < 0) printf("Vo nghiem."); else if (delta == 0) printf("x = %f", -b/(2*a)); else //if (delta > 0) printf("x1 = %f\nx2 = %f", (-b - sqrt(delta))/(2*a), (-b + sqrt(delta))/(2*a)); }Ch : i v i tr ng h p cu i cng c th khng c n if, nh 3.2.4 Vi t chng trnh theo c u trcv d trn. chng trnh r rng, d ki m tra v trnh nh m l n, ta nn vi t chng trnh theo cc quy t c sau:Cc cu l nh v kh i l nh n m trong m t l nh i u khi n th vi t lui vo bn ph i. Cc cu l nh v kh i l nh cng c p th vi t trn cng m t c t (th ng c t).i m u v i m cu i c a m t kh i l nh cng th ng c t.60Gio trnh Tin h c i cng3.3 L nh forL nh for cho php th c hi n m t kh i l nh m t s l n xc nh. L nh for th ng dng gi i cc bi ton c tnh chu trnh, v d nh cc bi ton v dy s , v ma tr n.3.3.1 C php c a forL nh for c d ng sau:for (; ; ) Trong c php trn: for: t kho c a l nh for. bi u th c kh i t o, bi u th c ki m tra v bi u th c tng b t bu c ph i c trong c p ngo c trn v cch nhau b i d u ch m ph y. Cc bi u th c4 ny c th v ng m t, nhng v n ph i cc d u ch m ph y. Kh i l nh, cn c g i l ph n thn c a l nh for l kh i l nh c n th c hi n nhi u l n.-Thng th ng, bi u th c kh i t o th ng c dng kh i t o gi tr cho cc bi n i u khi n, bi u th c tng dng thay i gi tr c a bi n i u khi n.3.3.2 Ho t ng c a forL nh for lm vi c theo cc b c sau: B c 1. Tnh gi tr bi u th c kh i t o. B c 2. Tnh gi tr c a bi u th c ki m tra. N u ng, t i b c 3, ng c l i thot kh i l nh for. B c 3. Th c hi n kh i l nh. B c 4. Tnh gi tr bi u th c tng, sau quay tr l i b c 2. N u bi u th c ki m tra v ng m t th n c xem l ng. trnh l p v t n, trong ph n thn c a for ph i c l nh nh y ra kh i for b ng cc l nh break, return ho c goto. Cc bi u th c trong l nh for c th l m t bi u th c ghp, t c l g m nhi u bi u th c cch nhau b i d u ph y. Trong tr ng h p , tnh ng sai c xc nh theo bi u th c cu i cng trong bi u th c ghp.Ch :--3.3.3 V d minh ho V d 1: o ng c m t dy s cho tr c./* Chuong trinh dao nguoc mot day so */ #include float x[] = { 63.2, -45.6, 70.1, 3.6, 14.5}; int n = 5; void main() { int i, j; float c;4Ch r ng, bi u th cy c th bao g m nhi u bi u th c con.61Gio trnh Tin h c i cngfor(i = 0, j = n - 1; i < j; i++, j--) { c = x[i]; x[i] = x[j]; x[j] = c; } printf("\nDay ket qua: \n"); for(i = 0; i < n; i++) printf(%8.2f", x[i]); }V d 2: Chng trnh d i y gi i quy t bi ton tm gi tr l n nh t v nh nh t trn m i hng c a ma tr n. Trong chng trnh s d ng cc chu trnh l ng nhau.#include float a[3][4] = { {15.0, 46.0, 3.5, 6.3}, {34.0, 0.0, -25.0, 35.0} , { 1.0, -13.0, 46.0, -38.0}}; void main() { int i, j; float max, min; for (i = 0; i < 3; i++) { max = a[i][0]; min = a[i][0]; for (j = 0; j < 4; j++) { if (max < a[i][j]) max = a[i][j]; if (min > a[i][j]) min = a[i][j]; } printf("Gia tri lon nhat va nho nhat cot %d la %.2f va %.2f\n", i + 1, max, min); } }V d 3: Chng trnh nh p m t dy s v in ra mn hnh dy v a nh p.#include void main() { float a[100]; int n, i ; printf("\nSo phan tu cua day: "); scanf("%d", &n); for (i = 0; i < n; i++) { printf("Phan tu thu %d: ", i + 1); scanf("%f", &a[i]); } printf("Day so vua nhap:\n"); for (i = 0; i < n; i++) printf("%8.2f", a[i]); }V d 4: Chng trnh d i y s nh p m t ma tr n th c c p MxN sau tnh cc t ng c t c a ma tr n.62Gio trnh Tin h c i cng#include #include void main() { float a[20][20], tc, tg; int m, n, i, j; printf("\nNhap so hang va so cot cua ma tran: "); scanf("%d%d", &m, &n); for (i = 1; ic?max:c); /* Gia tri tra ve */ }Ghi ch:Nn khai bo nguyn m u c a hm tr c khi s d ng hm. Nguyn m u c a hm th c ch t l dng u c a hm v thm vo d u ch m ph y. Tuy nhin trong nguyn m u c th b tn cc i.Qua chng trnh ny c th rt ra nhi u khi ni m v qui t c quan tr ng lin quan n vi c xy d ng v s d ng hm: M i hm ph i c m t tn. Ta c th t cho m i hm m t tn b t k theo cc qui t c nu trong chng 1. Trong cng m t chng trnh, cc hm ph i c tn khc nhau v m c d tn l ty nhng ta cng nn t cho hm nh ng tn ph h p v i ch c nng c a hm. Hm th ng c m t vi i. V d hm max3s c ba i l a, b, c. C ba i ny u c ki u gi tr float. Cng c hm khng i nh hm main trong cc v d trn, khi v n ph i c c p d u ngo c trn. 70Gio trnh Tin h c i cng Hm th ng cho ta m t gi tr no . V d , hm max3s cho gi tr l n nh t c a ba i c a n. Gi tr c a hm c th c ki u int, float, double, ... . Hm max3s c gi tr ki u float. Ngoi ra cn c nh ng hm khng c gi tr tr v , khi khai bo ki u tr v c a hm l void.4.1.2 Quy t c xy d ng m t hmHm c th xem l m t n v c l p c a chng trnh. Trong C khng cho php xy d ng m t hm bn trong cc hm khc. Hm c vi t theo th t sau:Nguyn m u hmNguyn m u hm cho bi t tn hm, cc i c a hm v ki u gi tr tr v . Vi c khai bo nguyn m u hm cho php s d ng hm tr c khi nh ngha hm. Nguyn m u hm khai bo theo m u sau: ( [, [], , [] );Nh v y, nguyn m u c a hm khai bo nh ng thng tin t i thi u nh t c a hm c th s d ng c hm . Trong tr ng h p hm c nh ngha tr c khi s d ng, th khng c n thi t ph i khai bo nguyn m u. nh ngha hm nh ngha hm g m hai ph n: tiu v thn hm. Xt v d v hm max3s:/* Dinh nghia ham max3s */ float max3s(float a, float b, float c) { float max; max = a>b?a:b; return (max>c?max:c); /* Gia tri tra ve */ }Trong v d trn, tiu c a hm l:float max3s(float a, float b, float c)Thn hm b t u b ng d u { v k t thc b i d u }. Trong thn hm ch a cc cu l nh c n thi t th c hi n m t yu c u no ra cho hm. Thn c a hm max3s l o n chng trnh tnh gi tr l n nh t c a ba i a, b, c. Trong thn hm ta dng thm bi n max. C n phn bi t s khc nhau gi a bi n max v i a, b, c. Bi n max l bi n c c b n ch c tc d ng trong thn hm v khng c b t c m t lin h g n cc bi n c a cc hm khc trong chng trnh. Tri l i cc i a, b, c l i c dng trao i d li u gi a cc hm. Trong thn hm c th s d ng m t cu l nh return, c th dng nhi u cu l nh return nh ng ch khc nhau v cng c th khng s d ng cu l nh ny n u hm khng c gi tr tr v . D ng t ng qut c a n l:return [];Gi tr c a bi u th c trong cu l nh return s c gn cho hm. Trong v d ang xt, gi tr c a bi u th c ny l gi tr l n nh t c a ba i a, b, c. 71Gio trnh Tin h c i cng4.1.3 S d ng hmHm c s d ng b ng cch g i hm. L i g i hm c d ng sau: ([])Khi g i hm, c n ph i truy n cho m i tham s m t gi tr . Cc gi tr ny g i l cc tham s th c phn bi t v i cc tham s c khai bo khi nh ngha hm (tham s hnh th c). Nh v y ta c cc khi ni m sau: + Bi n ton b hay bi n ton c c: l cc bi n c khai bo u chng trnh, n c th s d ng v tr b t k trong chng trnh. + Bi n c c b , bi n a phng: l cc bi n c khai bo trong cc hm, t i u m i kh i l nh. Ph m vi h at ng c a cc bi n ny l trong thn hm hay kh i l nh ch a n. + i s hay tham s hnh th c: l cc bi n c khai bo sau tn hm trong 2 d u ngo c trn. + i s th c s hay tham s th c s : Khi s d ng hm, ta vi t tn hm, c p d u ngo c trn v cc gi tr trong 2 d u ngo c trn n u c. Cc gi tr c g i l cc tham s th c s . Nguyn t c ho t ng c a chng trnh khi g p l i g i hm: Khi g p m t l i g i hm th hm b t u c th c hi n. Ni cch khc, khi my g p m t l i g i hm m t ch no c a chng trnh, th my s t m r i ch v chuy n n hm tng ng. Qu trnh s di n ra theo trnh t 4 b c nh sau: a/ C p pht b nh cho cc i v cc bi n c c b . b/ Gn gi tr c a cc tham s th c cho cc i tng ng. c/ Th c hi n cc cu l nh trong thn hm. d/ Khi g p cu l nh return ho c d u } cu i cng c a thn hm th my s xo cc i, cc bi n c c b (gi i phng b nh c a cc i, bi n c c b ) v thot kh i hm. N u tr v t m t cu l nh return c ch a bi u th c th gi tr c a bi u th c c gn cho hm. Gi tr c a hm s c s d ng trong cc bi u th c ch a n. Trong v d trn, gi tr c a hm max3s(x,y,z) s c s d ng trong cu l nh printf. Ni cch khc, gi tr l n nh t c a ba s x, y, z s c a ra mn hnh.4.1.4 C u trc t ng qut c a chng trnhChng trnh g m nhi u hm c vi t theo trnh t sau: Cc #include Cc #define Khai bo cc i t ng d li u ngoi (bi n, m ng, c u trc,...). Khai bo nguyn m u c a cc hm Hm main Xy d ng ( nh ngha) cc hmCh : Hm main c th t sau ho c xen vo gi a cc hm khc.72Gio trnh Tin h c i cng4.2 Tham s ki u con trTrong ph n ny, chng ti gi i thi u s l c v con tr trong C v ng d ng trong truy n tham s cho hm.4.2.1 a chLin quan n m t bi n ta c khi ni m: Tn bi n Ki u bi n Gi tr c a bi nV d cu l nhfloat alpha = 30.5;xc nh m t bi n c tn l alpha c ki u float v c gi tr 30.5. Ta cng bi t, theo khai bo trn, my s c p pht cho bi n alpha m t kho ng nh g m 4 byte lin ti p. a ch c a bi n l s th t c a byte u tin c a vng nh c a bi n trong b nh .M t i u c n lu l m c d a ch c a bi n l m t s nguyn nhng khng c nh ng n v i cc s nguyn thng th ng dng trong cc php tnh. l y a ch c a m t bi n, dng php ton &. V d l y a ch c a bi n alpha.&alpha4.2.2 Con trCon tr l bi n dng ch a a ch , c ngha l gi tr c a con tr l a ch c a m t bi n no . V c nhi u lo i a ch nn cng c nhi u ki u con tr tng ng. Con tr ki u int dng ch a a ch cc bi n ki u int. Tng t , ta c con tr ki u float, ki u double,... . Cng nh i v i b t k m t bi n no khc, m t con tr c n khai bo tr c khi s d ng. Vi c khai bo bi n con tr c th c hi n theo m u sau: *;V d cu l nh sau khai bo hai bi n ki u int l x, y v hai con tr ki u int l px v py.int x, y, *px, *py;Tng t cu l nh sau khai bo cc con tr ki u float.float f, *pf;Khi c cc khai bo trn th cc cu l nh sau hon ton xc nh.px = &x; py = &y;Cu l nh th nh t s gn a ch c a x cho con tr px v cu l nh th hai s gn a ch c a bi n y cho con tr py. Khi con tr px ch a a ch c a bi n x th ta ni px tr t i x. Chng ta khng c gn a ch c a m t bi n nguyn cho m t con tr ki u th c. V d cu l nh sau l khng h p l .pf = &y;73Gio trnh Tin h c i cng4.2.3 Qui t c s d ng con tr trong cc bi u th cV i m t bi n, c hai i l ng lin quan, l gi tr c a bi n v a ch c a bi n. Khi m t con tr tr t i m t bi n, khi cng c hai i l ng lin quan, l gi tr con tr (chnh l a ch c a bi n) v gi tr c a bi n m con tr ang tr t i. Trong bi u th c, tn con tr i di n cho gi tr c a con tr v d ng khai bo i di n cho gi tr bi n m con tr ang tr t i.S d ng tn con trCon tr cng l m t bi n nn khi tn c a n xu t hi n tr ng m t bi u th c th gi tr c a n s c s d ng trong bi u th c ny. Khi tn con tr ng bn tri c a m t ton t gn th gi tr c a bi u th c bn ph i (gi tr ny ph i l a ch ) c gn cho con tr . Ta hy xem cc cu l nh sau lm g ?float a, *p, *q; p = &a; q = p;Cu l nh th nh t khai bo m t bi n ki u float (bi n a) v hai con tr p v q ki u float. Cu l nh th hai s gn a ch c a bi n a cho con tr p v cu l nh th ba s gn gi tr c a p cho q. K t qu l con tr q ch a a ch c a bi n a.S d ng d ng khai bo c a con trXt o n l nh sau:float x, y, *px, *py; x = 100.0; y = 215.3; px = &x; py = &y;Sau cc l nh gn th px tr t i x, py tr t i y. Khi bi n m px tr t i (bi n x) c bi u di n d i d ng *px. Ni m t cch khc, n u con tr px tr t i bi n x th cc cch vi t x v *px l tng ng trong m i ng c nh. Theo nguyn l ny th ba cu l nh sau u c hi u l c nh nhauy = 3*x + 1; *py = 3*x + 1; *py = 3*(*px) + 1;T y c th rt ra m t k t lu n quan trong l: Khi bi t c a ch c a m t bi n th ch ng nh ng chng ta c th s d ng gi tr c a n m cn c th gn cho n m t gi tr m i (lm thay i n i dung c a n). i u ny s c p d ng nh m t phng php ch y u nh n k t qu c a hm thng qua i.4.2.4 M ng v con trKhi khai bo m t m ng, my c p pht m t vng nh dng lu gi tr cc ph n t c a m ng. V d khai bo m t m ng s nguyn:int a[100];74Gio trnh Tin h c i cng Khi my s c p pht 100 nh , m i nh c kch th c c a m t s nguyn tng ng v i m t ph n t , v cc ph n t s s p x p lin ti p nhau trong b nh , t ph n t u tin. Trong C, tn m ng chnh l a ch c a ph n t u tin c a m ng, i u c ngha l: a b ng &a[0] V tn m ng l m t a ch , nn ta c th gn cho m t con tr . V d :int *p; p = a;Nh v y gi a m ng con tr c s tng ng. Do , trong C cho php s d ng thay th gi a m ng v con tr trong m t s tr ng h p. V d , sau khi gn p b ng a th: a[4] v p[4] u bi u di n ph n t th 5 c a m ng. a[0], *a v *p cng bi u di n ph n t u tin c a m ng. Tuy nhin gi a m ng v con tr c s khc nhau. Con tr l m t bi n, v th gi tr c a n c th thay i c v ta c th gn gi tr cho m t con tr . Trong khi tn m ng l m t h ng a ch , v khi m ng c c p pht th a ch c a ph n t u tin l xc nh. V v y khng th thay i c gi tr c a tn m ng.4.2.5 Hm c i con tr i con tr th ng c s d ng trong cc tr ng h p sau y:S d ng hm thay i gi tr c a m t bi n. Truy n m t m ng vo cho hm. Tr v nhi u k t qu .S d ng hm thay i gi tr c a m t bi nNh chng ta bi t, khi truy n tham s th c cho hm, th ch c gi tr c a cc bi u th c l c s d ng. N u chng ta thay i gi tr c a i s bn trong hm, th s thay i khng nh h ng n gi tr cc bi n truy n vo cho hm. V v y, n u mu n dng hm thay i gi tr c a m t bi n, th ph i truy n a ch c a bi n thay v gi tr c a bi n. khai bo m t tham s l a ch c a m t bi n, ta khai bo tham s l m t con tr c ki u tng ng. V d sau nh ngha m t hm cho php o gi tr c a hai bi n.#include void hoan_vi(float *px, float *py) { float z; z = *px; *px = *py; *py = z; } void main() { float a = 7.6, b = 13.5; hoan_vi(&a, &b); printf("\na = %0.2f b = %0.2f", a, b); }75Gio trnh Tin h c i cng K t qu th c hi n chng trnha = 13.50 b = 7.60Ta hy xem hm hon_v lm vi c th no. Nh bi t, chng trnh b t u t cu l nh u tin trong hm main(). K t q a l bi n a nh n gi tr 7.6 v bi n b nh n gi tr 13.5. Ti p l l i g i hm hoan_vi. My s gn gi tr c a cc tham s th c cho i tng ng. Nh v y a ch c a a c gn cho con tr px , a ch c a b c gn cho con tr py. Sau my l n l t xt n cc cu l nh trong thn hm. Cu l nh th nh t s c p pht cho bi n c c b z m t kho ng nh 4 byte. Theo qui t c v s d ng con tr nu trong m c 4.2.3 th ba cu l nh ti p theo tng ng v i cc cu l nh:z = a; a = b; b = z;Nh v y a s nh n gi tr c a b v ng c l i. Ti p , my tr v hm main() v in ra nh ng dng k t q a nh ch ra trn.Truy n m t m ng m t chi u vo cho hmKhi mu n truy n m t m ng vo cho m t hm, v d nh hm in cc s h ng c a m t dy s , khi ta dng i con tr . Do m ng l a ch c a ph n t u nn ki u c a i l ki u con tr c a ki u ph n t m ng. V d , v i m ng cc ph n t int th ki u i l con tr ki u int. Khi truy n m ng vo cho hm, bn trong hm khng r s l ng ph n t c a m ng, do c n thm i ch ra s l ng ph n t c a m ng. V d sau nh ngha hai hm, m t hm nh p d li u cho m t dy s v m t hm in dy s ra mn hnh.#include // Nguyen mau ham void NhapDaySo(int *a, int n); void InDaySo(int *a, int n); void main() { int a[100]; int n; printf("Nhap so phan tu: "); scanf("%d", &n); // Nhap day so NhapDaySo(a, n); printf("Day so vua nhap:\n"); // In day so InDaySo(a, n); } void NhapDaySo(int *a, int n) { int i; for (i = 0; i < n; i++) { printf("a[%d] = ", i + 1); scanf("%d", &a[i]); } }76Gio trnh Tin h c i cngvoid InDaySo(int *a, int n) { int i; for (i = 0; i < n; i++) printf("%8d", a[i]); }Trong v d trn, cc tham s c a hai hm NhapDaySo v InDaySo c khai bo gi ng nhau, bao g m m t tham s ki u con tr nguyn v m t tham s nguyn. Tuy nhin, trong hai tr ng h p ngha tham s l khc nhau. Tham s a trong hm NhapDaySo l k t qu a ra. Tham s a trong hm InDaySo l d li u u vo. trn, m ch phn bi tV m t c php, chng ta khng phn bi t c s khc nhau c theo m c ch s d ng.V v y, khi truy n m t m ng vo cho hm m trong hm khng c nhu c u thay i gi tr c a cc ph n t c a m ng, th c th thm t kho const khi khai bo tham s . V d , hm InDaySo c th c nh ngha nh sau:void InDaySo(const int *a, int n) { int i; for (i = 0; i < n; i++) printf("%8d", a[i]); }Khi th c th xc nh ngay tham s a l d li u vo cho hm.Truy n m t m ng nhi u chi u vo cho hmTrong m t s tr ng h p, chng ta ph i truy n m t m ng nhi u chi u vo cho hm, v d nh truy n m t ma tr n vo hm in ma tr n. Khi khai bo m t tham s l m t m ng nhi u chi u, c n ph i ch ra s ph n t tng ng c a cc chi u, tr chi u u tin l khng c n thi t ph i ch ra. V d sau nh p in m t ma tr n th c theo d ng b ng, s d ng c hai c php khai bo l m ng v con tr .#include // Nguyen mau ham void NhapMaTran(float a[20][20], int, int); // Su dung dang khai bao mang void InMaTran(float a[20][20], int, int); void main() { float a[20][20]; int m, n; printf("Nhap so hang, so cot: "); scanf("%d%d", &m, &n); // Nhap ma tran NhapMaTran(a, m, n); // In ma tran InMaTran(a, 3, 3); }77Gio trnh Tin h c i cngvoid NhapMaTran(float a[20][20], int m, int n) { int i, j; float f; for (i = 0; i < m; i++) for (j = 0; j < n; j++) { printf("a[%d][%d] = ", i + 1, j + 1); scanf("%f", &f); a[i][j] = f; } } void InMaTran(float a[20][20], int m, int n) { int i, j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) printf("%8.2f", a[i][j]); printf("\n"); } }Ch : m t s trnh d ch khng cho php l y a ch c a m t ph n t m ng nhi u chi u, do chng ta ph i dng m t bi n trung gian khi nh p gi tr cc ph n t m ng, nh trong hm NhapMaTran trn. Tr v nhi u k t quM t tr ng h p m i l con tr th ng c s d ng l khi chng ta mu n hm tr v nhi u gi tr . Nh chng ta bi t, hm ch c th tr v m t gi tr d i d ng tn hm, do tr v nhi u gi tr chng ta ph i s d ng tham s l con tr . V d : khi vi t m t hm gi i phng trnh b c hai, th chng ta c n ph i tr v cc i l ng: Hm c bao nhiu nghi m (0, 1, 2). N u c nghi m, th gi tr c a nghi m l bao nhiu.Nh v y y chng ta ph i tr v ba i l ng: s nghi m, m t ho c hai nghi m (trong tr ng h p c nghi m). V d sau th hi n cch chng ta tr v nhi u k t qu ./* Chuong trinh giai phuong trinh bac hai */ #include #include // Nguyen mau ham int GiaiPTBac2(float, float, float, float*, float*); void main() { float a, b, c, x1, x2; int songhiem; printf("Nhap a, b, c: "); scanf("%f%f%f", &a, &b, &c); // Giai phuong trinh78Gio trnh Tin h c i cngsonghiem = GiaiPTBac2(a, b, c, &x1, &x2); if (songhiem == 0) printf("Phuong trinh vo nghiem."); else if (songhiem == 1) printf("Nghiem kep: %.3f", x1); else printf("x1: %.3f\nx2: %.3f", x1, x2); } int GiaiPTBac2(float a, float b, float c, float *px1, float *px2) { float delta; delta = b*b - 4*a*c; if (delta < 0) return 0; else if (delta == 0) { *px1 = -b/(2*a); return 1; } else { *px1 = (-b - sqrt(delta))/(2*a); *px2 = (-b + sqrt(delta))/(2*a); return 2; } }4.3 quy4.3.1 Khi nim chung v quyC khng nh ng cho php t hm ny g i t i hm khc, m n cn cho php t m t v tr trong thn c a m t hm g i t i chnh hm . Hm nh v y g i l hm quy. Trong m t s tr ng h p, s d ng quy s lm chng trnh ng n g n, d hi u hn. Khi hm g i quy n chnh n th m i l n g i, my s t o ra m t t p cc bi n c c b m i hon ton c l p v i cc t p bi n (c c b ) c t o ra trong cc l n g i tr c. Ta cng ch r ng: C bao nhiu l n g i t i hm th cng c b y nhiu l n thot ra kh i hm v c m i l n ra kh i hm th m t t p cc bi n c c b b xa. S tng ng gi a cc l n g i t i hm v cc l n ra kh i hm c th c hi n theo th t ng c, ngha l: L n ra u tin ng v i l n vo cu i cng v l n ra kh i hm cu i cng ng v i l n u tin g i t i hm. minh h a nh ng i u ni trn, ta a ra m t v d n gi n. Gi s ta c n vi t m t hm tnh n giai th a. Thng th ng ta s vi t nh sau:long giai_thua(int n) { long s; int i; for (s = 1, i = 1; i 0 D a vo cng th c trn ta c th xy d ng hm tnh n! m t cch quy nh sau: 79Gio trnh Tin h c i cng#include long giai_thua(int n) { return (n > 0)?n*giai_thua(n - 1) : 1; } void main() { printf("%d", giai_thua(5)); }C ch ho t ng c a hm giai_thua trong chng trnh trn c th gi i thch nh sau: Trong hm main, c m t l i g i hm giai_thua(5) tnh giai th a c a 5. Khi hm giai_thua s c g i ra th c hi n v i tham s n b ng 5. Trong hm giai_thua, do n l n hn 0 nn gi tr tr v l n*giai_thua(n -1), t c l 5*giai_thua(4). Tuy nhin lc ny gi tr giai_thua(4) cha xc nh, nn my l i ti p t c g i hm giai_thua tnh giai th a c a 4. Trong l n g i th hai ny, do n v n l n hn 0, nn ti p t c c n tnh giai_thua(3). C nh v y, cho t i khi n b ng 0, khi gi tr tr v c a l n g i giai_thua(0) l 1 v c s d ng tnh bi u th c tr v cho l n g i giai_thua(1) b ng 1*giai_thua(0), b ng 1*1. Gi tr giai_thua(1) b ng 1, l i c s d ng tnh bi u th c tr v cho l n g i giai_thua(2), b ng 2*1. C nh v y, cu i cng gi tr tr v c a l i g i giai_thua(5) trong main c gi tr b ng 5*4*3*2*1*1.--4.3.2 Cch dng quy Bi ton no c th dng quyPhng php quy th ng p d ng cho cc bi ton ph thu c tham s c hai c i m sau: Bi ton d dng gi i quy t trong m t s tr ng h p ring ng v i cc gi tr c bi t c a tham s . Ta g i y l tr ng h p suy bi n. Trong tr ng h p t ng qut, bi ton c th quy v m t bi ton cng d ng nhng gi tr tham s thay i. V sau m t s h u h n b c bi n i quy, s d n t i tr ng h p suy bi n.Ta nh n th y bi ton tnh n! nu trn th hin r t r cc c i m ny.Cch xy d ng hm quyHm quy th ng c vi t theo thu t ton sau:if (tr ng h p suy bi n) { trnh by cch gi i bi ton (gi nh c cch gi i) } else /* tr ng h p t ng qut */ { g i quy t i hm (ang l p) v i gi tr khc c a tham s }80Gio trnh Tin h c i cng4.3.3 Cc v dM c ny s trnh by m t s v d nh m minh ho cch xy d ng hm quy.V d 1: Xt bi ton tm c s chung l n nh t c a hai s nguyn dng x v y.Tr ng h p suy bi n l tr ng h p x = y. Khi : uscln(x,y) = x. Tr ng h p x khc y c th tnh SCLN m t cch quy nh sau: uscln(x,y) = uscln(x-y,y) n u x > y uscln(x,y) = uscln(x,y-x) n u x < y Chng trnh sau nh ngha hm tnh c s chung l n nh t v s d ng hm tnh c s chung l n nh t c a hai s nh p vo:#include // Nguyen mau ham int uscln(int, int); void main() { int a, b; printf("Nhap hai so nguyen: "); scanf("%d%d", &a, &b); printf("USCLN cua %d va %d la %d.", a, b, uscln(a, b)); } int uscln(int a, int b) { if (a > b) return uscln(a - b, b); else if (a < b) return uscln(a, b - a); else return a; }V d 2: Bi ton thp H N i.Bi ton thp H N i c t ra nh sau: C m t thp g m n t ng, t ng trn nh hn t ng d i. Nhi m v l ph i chuy n thp t m t v tr A n m t v tr m i B. i u ki n khi chuy n l: M i l n ch c php chuy n m t t ng. Cho php s d ng thm m t v tr trung gian C t cc t ng. Lun m b o t ng trn nh hn t ng d i m i v tr v m i th i i m.Thu t ton chuy n thp c th di n t nh sau: Tr ng h p suy bi n: n = 1, khi ch c n chuy n t ng 1 t A n B. Tr ng h p t ng qut n > 1 c th gi i quy t quy nh sau: Chuy n thp n -1 t ng t A n C, dng B lm v tr trung gian. Chuy n t ng n t A n B. Chuy n thp n - 1 t ng t C n B, dng A lm v tr trung gian. 81Gio trnh Tin h c i cng Chng trnh sau ci t thu t ton trn./* Thap Ha noi */ #include // Nguyen mau ham void Chuyen(int, int, int, int); void main() { int n; printf("Nhap so tang: "); scanf("%d", &n); Chuyen(n, 'A', 'B', 'C'); } void Chuyen(int n, int A, int B, int C) { if (n == 1) printf("Chuyen tang 1 tu %c sang %c\n", A, B); else { Chuyen(n - 1, A, C, B); printf("Chuyen tang %d tu %c sang %c\n", n, A, B); Chuyen(n - 1, C, B, A); } }82Gio trnh Tin h c i cngBI T P CHNG 4Vi t hm th c hi n cc bi ton d i y.Bi 1. Gi i h phng trnh b c nh tax + by = c dx + ey = f Hm c su i vo l a, b, c, d, e, f v hai i ra l x, y.Bi 2. Tnh a th c c p nf(x) = a0 + a1x + ... + an-1 xn-1 + anxn Hm c hai i l bi n nguyn n v m ng th c a.Bi 3. Tnh c c i v c c ti u c a m t dy s . Bi 4. Tnh gi tr trung bnh v l ch tiu chu n c a m t i l ng ng u nhin theo cng th cs=2x 1 + ... + x n n( x1 s) 2 +...+ ( x n s ) 2 d = n Trong x1, ..., xn l dy quan st nh n c.Bi 5. Nhn ma tr n A c p mxn v i vc t X c p n. Bi 6. Chuy n v m t ma tr n ch nh t A cho tr c. Bi 7. Tm t a giao i m c a hai ng th ng AB v CD khi bi t t a c a cc i m A, B, C, D. Bi 8. Xy d ng 3 hm s sau y b ng phng php quif(x,n) = xn s(n) = (2n)!! p(n) = 13 + 23 + . . . + n383Gio trnh Tin h c i cngCHNG 5 - C U TRC lu tr v x l thng tin trong my tnh ta c cc bi n v cc m ng. M i bi n ch a c m t gi tr . M ng c th xem l t p h p nhi u bi n c cng m t ki u gi tr v c bi u th b ng m t tn. C u trc c th xem nh m t s m r ng c a cc khi ni m bi n v m ng, n cho php lu tr v x l cc d ng thng tin ph c t p hn. C u trc l m t t p h p cc bi n, cc m ng v c bi u th b i m t tn duy nh t.M t v d truy n th ng v c u trc l phi u ghi lng: M i cng nhn c miu t b i m t t p h p cc thu c tnh nh tn, a ch , ngy sinh, b c lng,... M t vi trong cc thu c tnh ny l i c th l c u trc: Tn c th c nhi u thnh ph n, a ch v th m ch ngy sinh cng v y.5.1 nh ngha c u trc v khai bo bi n c u trcC u trc l ki u d li u do ng i dng t nh ngha. Khi nh ngha m t c u trc, c n ch ra tn c a ki u c u trc v cc thnh ph n c a c u trc. nh ngha m t c u trc, chng ta dng m u sau:struct { ; ; ... }; khai bo m t bi n c u trc sau khi nh ngha ki u c u trc, ta vi t:struct danh_sch_tn_bi n_c u_trc;V d , nh ngha c u trc m t ngy thng, nh sau:struct Ngay { int ngay; int thang; int nam; };Sau khi nh ngha trn, chng ta c ki u d li u m t ngy thng l struct Ngay. Ki u d li u ny c th dng khai bo cc bi n c u trc. V d , bi n ngay_sinh ki u ngy thng c khai bo nh sau:struct Ngay ngay_sinh;Ta th y vi c khai bo cc bi n c u trc cng gi ng nh khai bo cc bi n ki u d li u chu n. Trong dng khai bo trn, ki u d li u l struct Ngay v tn bi n l ngay_sinh.5.2 K t h p nh ngha c u trc v khai bo bi n c u trcTrong ph n 5.1, chng ta bi t nh ngha m t c u trc v s d ng ki u d li u khai bo cc bi n. C th k t h p c nh ngha c u trc v khai bo bi n vo m t l nh duy nh t theo m u sau:struct [Tn c u { ;84Gio trnh Tin h c i cng V i cch ny, cc bi n s c ki u l c u trc c cc thnh ph n nh c khai bo trong c p ngo c nh n {}. Tn c u trc trong tr ng h p ny c th c, c th khng. V d , nh ngha c u trc m t ngy thng ng th i khai bo bi n tu_ngay, den_ngay, ta c th dng m t trong hai cch sau:Cch 1: c tn c u trc:struct Ngay { int ngay; int thang; int nam; } tu_ngay, den_ngay;Cch 2: khng c tn c u trc:struct { int ngay; int thang; int nam; } tu_ngay, den_ngay;S khc nhau c a hai cch ny l, cch 1 v a nh ngha c u trc tn l Ngay v cc bi n c u trc tu_ngay, den_ngay. Sau nh ngha ny, ta c th dng ki u struct Ngay khai bo cc bi n khc. Cch 2 nh ngha cc bi n tu_ngay, den_ngay c ki u l m t c u trc g m ba tr ng: ngay, thang v nam. V khng t tn cho c u trc, nn sau nh ngha ngy chng ta khng th s d ng ki u d li u ny c n a, do khng th nh ngha cc bi n cng ki u v i cc bi n tu_ngay, den_ngay.5.3 S d ng typedef nh ngha ki u d li u c u trc5.3.1 nh ngha ki u b ng typedefS d ng t kho typedef, chng ta c th nh ngha cc ki u d li u m i d a trn cc ki u d li u c. M u chung cho vi c nh ngha ki u d li u b ng typedef nh nhau:typedef ;V d , nh chng ta bi t trong C khng nh ngha ki u d li u logic, m ki u d li u ny c bi u di n thng qua b t c ki u d li u no. Trong v d ny, chng ta s s d ng ki u s nguyn bi u di n ki u logic, nh ngha nh sau:typedef int BOOL, BIT;Sau nh ngha ny, chng ta c cc ki u d li u m i l BOOL, BIT, m th c ch t l ki u int. Ki u BOOL, BIT c th dng khai bo cc bi n nh sau:BOOL tiep_tuc; BIT ket_qua;o n l nh trn khai bo cc bi n tiep_tuc ki u BOOL v ket_qua ki u BIT. V m t b n ch t, cc bi n ny c ki u nguyn, tuy nhin ta coi cc bi n ny c ki u logic nn cc bi n ny ch nn nh n hai gi tr l 0 (bi u di n gi tr sai) v 1 (bi u di n gi tr ng). 5.3.2 S d ng typedef nh ngha ki u c u trcChng ta c th dng t kho typedef nh ngha ki u c u trc, cho php vi t ng n g n hn. 85Gio trnh Tin h c i cng Gi s chng ta nh ngha ki u struct Ngay, chng ta c th nh ngha ki u d li u m i tng ng ki u d li u ny nh sau:typdef struct Ngay KieuNgay;Sau khi nh ngha ki u KieuNgay, c th dng ki u d li u ny khai bo cc bi n m t cch ng n g n nh sau:KieuNgay ngay_batdau, ngay_kethuc;Chng ta c th k t h p nh ngha c u trc v i t kho typedef nh ngha ki u d li u c u trc theo m u sau:typdef struct [Tn] { ; ; ... } ;V i cch ny, tn c u trc c th c, c th khng. V d sau nh ngha ki u KieuNgay k t h p v i nh ngha c u trc theo hai cch: Cch 1: c tn c u trc:typedef struct Ngay { int ngay; int thang; int nam; } KieuNgay;Cch 2: khng c tn c u trc:typedef struct { int ngay; int thang; int nam; } KieuNgay;Khc bi t c a hai cch ny l ch : v i cch 1, chng ta c th s d ng ki u d li u l struct Ngay ho c KieuNgay, cn v i cch 2 th chng ta ch c ki u d liu KieuNgay.5.4 Truy c p cc thnh ph n c a c u trcV i m t bi n ki u nguyn hay ki u th c, th n i dung bi n ch c th mang m t gi tr ki u tng ng. M t bi n c u trc mang trong n nhi u thnh ph n khc nhau v chng ta c th lm vi c v i t ng thnh ph n ny. Vi c truy c p cc thnh ph n c a m t bi n c u trc c th th c hi n b ng ton t ch m (.). Ton t ny cho php truy c p n m t thnh ph n c u trc khi bi t tn bi n c u trc v tn thnh ph n. C php nh sau:.Trong tr ng h p thnh ph n c a c u trc l m t c u trc, khi c th p d ng ton t ny cho thnh ph n truy c p vo cc thnh ph n su hn. N u chng ta lm vi c v i bi n c u trc thng qua con tr , khi ton t truy c p n cc thnh ph n c u trc l ton t ->.5.5 V d minh ho86Gio trnh Tin h c i cng5.5.1 V d 1Nh p to c a N i m trong m t ph ng. Tnh t ng di ng g p khc i qua cc i m ny theo th t nh p vo. V i v d ny, chng ta c th dng 2 m ng s th c lu cc to x v y c a cc i m. M t cch khc l dng m t c u trc m t i m, trong x v y l cc thnh ph n c a c u trc ny. M ng cc i m l m t m ng c u trc.#include #include typedef struct { float x; float y; } DIEM, *PDIEM; // Khai bao cac nguyen mau ham void NhapDiem(PDIEM, int); float TinhDoDai(PDIEM, int); void main() { DIEM day[100]; int n; printf("Nhap so diem: "); scanf("%d", &n); NhapDiem(day, n); printf("Do dai duong gap khuc la: %.3f", TinhDoDai(day, n)); } void NhapDiem(PDIEM pDiem, int n) { DIEM diem; int i; for (i = 0; i < n; i++) { printf("x[%d] = ", i + 1); scanf("%f", &diem.x); printf("y[%d] = ", i + 1); scanf("%f", &diem.y); pDiem[i] = diem; } } float TinhDoDai(PDIEM pDiem, int n) { float do_dai, dx, dy; int i; do_dai = 0; for (i = 0; i < n - 1; i++) { dx = (pDiem[i + 1].x - pDiem[i].x); dy = (pDiem[i + 1].y - pDiem[i].y); do_dai+= sqrt(dx*dx + dy*dy); } return do_dai; }5.5.2 V d 287Gio trnh Tin h c i cng Nh p m t danh sch g m n th sinh d thi i h c, m i th sinh l m t c u trc g m cc tr ng: H v tn, Qu, i m ton, i m l, i m ho Yu c u: Nh p i m chu n sau tm v in ra mn hnh danh sch cc th sinh i h c c qu Ha Noi (Th sinh i h c n u c t ng i m khng d i i m chu n). Tm v in ra mn hnh danh sch cc th sinh c i m ton cao nh t. In ra mn hnh ton b thng tin c a n th sinh..- gi i quy t bi ton ny ta c chng trnh sau: #include #include // Dinh nghia kieu Ho so sinh vien typedef struct { char HoTen[30]; char Que[50]; float DiemToan; float DiemLy; float DiemHoa; } HSSV, *PHSSV; void NhapHSSV(PHSSV pSv, int n) { HSSV sv; int i; for (i = 0; i < n; i++) { printf("Ten sinh vien %d: ", i + 1); fflush(stdin); gets(sv.HoTen); printf("Que sinh vien %d: ", i + 1); fflush(stdin); gets(sv.Que); printf("Diem toan, ly, hoa sinh vien %d: ", i + 1); scanf("%f%f%f", &sv.DiemToan, &sv.DiemLy, &sv.DiemHoa); pSv[i] = sv; } } void InHSSV(PHSSV pSv, int n) { int i; printf("%4s %20s %20s %6s %6s %6s\n", "STT", "Ho ten", "Que quan", "Toan", "Ly", "Hoa"); for (i = 0; i < n; i++) printf("%4d %20s %20s %6.1f %6.1f %6.1f\n", i + 1, pSv[i].HoTen, pSv[i].Que, pSv[i].DiemToan, pSv[i].DiemLy, pSv[i].DiemHoa); } void main() { HSSV day[50]; int n, i; float chuan, max; printf("Nhap so sinh vien: "); scanf("%d", &n); // Nhap ds sinh vien88Gio trnh Tin h c i cngNhapHSSV(day, n); // In ds sinh vien vua nhap InHSSV(day, n); // Tim kiem cac sinh vien do que o Ha Noi printf("Nhap diem chuan: "); scanf("%f", &chuan); printf("\nDanh sach sinh vien do, que o Ha Noi:\n"); printf("%4s %20s %20s %6s %6s %6s\n", "STT", "Ho ten", "Que quan", "Toan", "Ly", "Hoa"); for (i = 0; i < n; i++) if ((day[i].DiemToan + day[i].DiemLy + day[i].DiemHoa >= chuan)&& (strcmpi(day[i].Que, "Ha Noi") == 0)) printf("%4d %20s %20s %6.1f %6.1f %6.1f\n", i + 1, day[i].HoTen, day[i].Que, day[i].DiemToan, day[i].DiemLy, day[i].DiemHoa); // Tim diem toan cao nhat max = day[0].DiemToan; for (i = 1; i < n; i++) if (max < day[i].DiemToan) max = day[i].DiemToan; // In ra danh sach sinh vien diem toan cao nhat printf("\nDanh sach sinh vien diem toan cao nhat:\n"); printf("%4s %20s %20s %6s %6s %6s\n", "STT", "Ho ten", "Que quan", "Toan", "Ly", "Hoa"); for (i = 0; i < n; i++) if (day[i].DiemToan == max) printf("%4d %20s %20s %6.1f %6.1f %6.1f\n", i + 1, day[i].HoTen, day[i].Que, day[i].DiemToan, day[i].DiemLy, day[i].DiemHoa); }Trong chng trnh trn, ta xy d ng 2 hm nh p (NhapHSSV) v in (InHSSV) danh sch sinh vin. Sau s d ng chng trong hm main. c gi c th vi t l i chng trnh trn m khng s d ng 2 hm trn b ng cch vi t tr c ti p o n chng trnh nh p v in vo trong hm main.BI T P CHNG 5Bi 1. Xy d ng m t c u trc ( ng v i phi u i m c a th sinh) g m cc thnh ph n:H tn Qu qun Tr ng Tu i S bo danhi m thitrong H tn l i l m t c u trc g m ba thnh ph n: H , tn m v tn. Qu qun cng l m t c u trc g m ba thnh ph n: x, huy n v t nh. i m thi l m t c u trc g m ba thnh ph n: ton, l, ha (i m ch m chnh xc n 1/4). 89Gio trnh Tin h c i cng c s li u t m t phi u i m c th v lu tr vo cc thnh ph n c a c u trc ni trn, sau in cc s li u ra mn hnh. Bi 2. S d ng nh ngha c u trcbi 1 : Nh p s li u c a 20 phi u i m v lu tr vo m ng c u trc ni trn. Tm ki m v in ra cc th sinh c t ng s i m ba mn l n hn 15.Bi 3. Gi s nh p s li u c a 20 phi u i m theo nh yu c u c a bi 2. Hy l p chng trnh s p x p l i cc ph n t c a m ng c u trc theo th t gi m d n c a t ng s i m, sau in danh sch th sinh (theo th t ni trn). M i th sinh s in trn m t dng g m cc thng tin:H tn Qu qun S bo danhi m ton, l, ha.Bi 4. Nh p danh sch n h c sinh v i cc thu c tnh: h tn, nm sinh v t ng i m. S p x p danh sch theo th t gi m c a t ng i m. Khi t ng i m nh nhau th h c sinh c nm sinh nh hn c x p tr c. In danh sch h c sinh s p x p sao cho t t c cc ch ci c a h tn chuy n thnh ch hoa. Bi 5. nh ngha ki u c u trc m t a th c, sau vi t cc hm vo a th c, in a th c, c ng a th c v nhn a th c. p d ng trong hm main() th c hi n cc vi c:Vo t bn phm ba a th c P1, P2 v P3. Tnh a th c P theo cng th c: P = (P1 + P2)2 + P3 In P1, P2, P3 v P. Vo t bn phm m t d y n a th c, sau in chng ln mn hnh theo th t gi m c a b c.90Gio trnh Tin h c i cngPH L C 1 - B NG M ASCIIB k t ASCII (American Standard Code for Interchange Information) g m 256 k c phn b nh sau: 32 k t u tin l cc k t i u khi n khng in c nh k t Enter (m 13), k t ESC (m 27). Cc m ASCII 32-47,58-64,91-96 v 123-127 l cc k t c bi t nh d u ch m, d u ph y, d u cch, d u ngo c, d u mc, d u h i,... Cc m ASCII 48-57 l 10 ch s Cc m ASCII 65-90 l cc ch ci hoa t A n Z Cc m ASCII 97-122 l cc ch ci th ng t a n z Cc m ASCII 128-255 l cc k t ho .M 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23K T NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETBM 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 91K T + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A BM 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109K T V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l mGio trnh Tin h c i cng 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 CAN EM SUB ESC FS GS RS US Space ! # $ % & ( ) * 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 C D E F G H I J K L M N O P Q R S T U 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 n o p q r s t u v w x y z { | } ~ DEL92Gio trnh Tin h c i cngPH L C 2 DANH SCH M T S (theo th HM C A TURBO C t ABC) bi t chi ti t, ngh c gi s d ng help c a mi tr ng TC b ng cch nh tn hm trong mi tr ng TC sau con tr d i tn hm r i nh n Ctrl + F1. Hm1. _chmod 2. _close 3. _creat 4. _open 5. abort 6. abs 7. acos 8. arc 9. asin 10. atan 11. atan2 12. atof 13. atoi 14. atol 15. bar 16. bar3d 17. cabs 18. calloc 19. ceil 20. chdir 21. chmod 22. circle 23. cleardevive 24. clearviewport 25. close 26. clreolT p tiu Hm28. coreleft 29. cos 30. cosh 31. cprintf 32. creat 33. cscanf 34. delay 35. delline 36. disable 37. drawpoly 38. ecvt 39. ellipse 40. enable 41. exit 42. exp 43. fabs 44. fclose 45. fcloseall 46. fcvt 47. feof 48. ferror 49. fflush 50. fflushall 51. fgetc 52. fgets 53. fillpopy 93T p tiu Gio trnh Tin h c i cng 27. clrscr 55. findnext 56. floodfill 57. floor 58. fmode 59. fopen 60. FP_OFF 61. FP_SEG 62. fprintf 63. fprintf 64. fputc 65. fputs 66. fread 67. free 68. fscanf 69. fseek 70. fteel 71. fwrite 72. gcvt 73. geninterrupt 74. getbkcolor 75. getc 76. getch 77. getchar 78. getche 79. getcolor 80. getcwd 81. getdate 82. getimage 54. findfirst 87. getpalette 88. getpixel 89. gets 90. gettextinfo 91. gettime 92. gettime 93. getvect 94. getviewport 95. getw 96. gotoxy 97. gotoxy 98. grapherrormsg 99. graphresult 100. imagesize 101. initgraph 102. int86 103. int86x 104. intdos 105. intdosx 106. intr 107. inxdigit 108. isalnum 109. isalpha 110. iscntrl 111. isdigit 112. isgraph 113. islower 114. isprint 115. ispunct 116. isspace 117. isupper 118. itoa 145. peek 146. peekb 94 83. getlinesettings 84. getmaxcolor 85. getmaxx 86. getmaxy 119. kbhit 120. Keep Gio trnh Tin h c i cng 121. labs 122. line 123. linerel 124. lineto 125. log 126. log10 127. lseek 128. Ltoa 129. malloc 130. memccpy 131. memchr 132. memcmp 133. memcpy 134. memicmp 135. memset 136. MK_FP 137. mkdir 138. movedata 139. movedata 140. moveto 141. nosound 142. open 143. outtext 144. outtextxy 171. setbkcolor 172. setcolor 173. setdate 174. setfillstyle ho c ho c ho c ho c ho c ho c ho c 147. perror 148. pieslice 149. poke 150. pokeb 151. pow 152. printf 153. putc 154. putch 155. putchar 156. putimage 157. putpixel 158. puts 159. putw 160. rand 161. random 162. randomize 163. read 164. realloc 165. rectangle 166. remove 167. rewind 168. rmdir 169. scanf 170. segread 200. Strncat 201. strncmp 202. strncpy 203. strnicmp 95 v Gio trnh Tin h c i cng 175. setlinestyle 176. setpalette 177. settextjustify 178. settextstyle 179. settime 180. setvect 181. setviewport 182.