PGS.

TS Ph m Văn t – ch biên Nguy n Hi u Cư ng – Nguy n ð c Dư – Hoàng Văn Thông

GIÁO TRÌNH

TIN H C ð I CƯƠNG

TRƯ NG ð I H C GIAO THÔNG V N T I HÀ N I - 2008
1

Giáo trình Tin h c ð i cương M CL C L I NÓI ð U....................................................................................................................... 3 PH N 1 ................................................................................................................................. 4 ð I CƯƠNG V TIN H C .................................................................................................. 4 CHƯƠNG 1 – NH NG KHÁI NI M CƠ B N V TIN H C.......................................... 5 1.1 ð i tư ng nghiên c u c a Tin h c............................................................................ 5 1.2 Thông tin và x lý thông tin ..................................................................................... 5 1.3 H ñ m và bi u di n thông tin trong máy tính........................................................... 6 1.4 Nguyên lý c a h x lý thông tin t ñ ng ................................................................. 8 1.5 C u trúc máy tính ................................................................................................... 10 1.6 M t s ng d ng c a Tin h c ................................................................................. 12 CHƯƠNG 2 – H ðI U HÀNH...................................................................................... 14 2.1 H ñi u hành MS-DOS........................................................................................... 14 2.2 H ñi u hành Windows........................................................................................... 16 CHƯƠNG 3 – THU T TOÁN ........................................................................................ 21 3.1 Khái ni m............................................................................................................... 21 3.2 M t s phương pháp bi u di n thu t toán ............................................................... 21 3.3 Các c u trúc cơ b n c a thu t toán.......................................................................... 23 3.4 M t s thu t toán gi i m t s bài toán ñơn gi n ...................................................... 27 PH N 2 ............................................................................................................................... 32 NGÔN NG L P TRÌNH C ............................................................................................... 32 CHƯƠNG 1 - M T S KHÁI NI M M ð U ............................................................. 34 1.1 T p ký t ................................................................................................................ 34 1.2 T khóa .................................................................................................................. 34 1.3 Tên......................................................................................................................... 35 1.4 M t s khái ni m.................................................................................................... 35 1.5 M t s chương trình ñơn gi n................................................................................. 38 1.6 M t s quy t c c n nh khi vi t chương trình ......................................................... 39 1.7 Cách th c hi n các chương trình trên máy tính ...................................................... 40 BÀI T P CHƯƠNG 1 ................................................................................................. 41 CHƯƠNG 2 - CÁC KI U D LI U ............................................................................... 42 2.1 Các 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 Các phép toán trên các ki u .................................................................................... 48 2.6 Nh p xu t d li u ................................................................................................... 52 2.7 M t s hàm thư ng dùng........................................................................................ 56 BÀI T P CHƯƠNG 2 ................................................................................................. 57 CHƯƠNG 3 - CÁC L NH ðI U KHI N ....................................................................... 58 3.1 Nh c l i khái ni m v câu 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 BÀI T P CHƯƠNG 3 ................................................................................................. 68 CHƯƠNG 4 - HÀM VÀ T CH C CHƯƠNG TRÌNH .................................................. 70 4.1 T ch c chương trình thành các hàm ...................................................................... 70 4.2 Tham s ki u con tr .............................................................................................. 73 2

Giáo trình Tin h c ð i cương 4.3 ð quy.................................................................................................................... 79 BÀI T P CHƯƠNG 4 ................................................................................................. 83 CHƯƠNG 5 - C U TRÚC .............................................................................................. 84 5.1 ð nh nghĩa c u trúc và khai báo bi n c u trúc......................................................... 84 5.2 K t h p ñ nh nghĩa c u trúc và khai báo bi n c u trúc ............................................ 84 5.3 S d ng typedef ñ ñ nh nghĩa ki u d li u c u trúc ............................................... 85 5.4 Truy c p các thành ph n c a c u trúc ..................................................................... 86 5.5 Ví d minh ho ....................................................................................................... 86 BÀI T P CHƯƠNG 5 ................................................................................................. 89 PH L C 1 - B NG MÃ ASCII ..................................................................................... 91 PH L C 2 ..................................................................................................................... 93 DANH SÁCH CÁC HÀM C A TURBO C THEO TH T ABC .............................. 93

3

Khi biên so n. Láng Thư ng. ph n này có nhi u ví d m u và bài t p ñ sinh viên rèn luy n k năng l p trình trên máy. C u trúc c a giáo trình g m 2 ph n: ph n 1 g m 3 chương trình bày nh ng ki n th c t ng quan v Tin h c. chúng tôi ñã tham kh o các giáo trình và tài li u gi ng d y môn h c này c a m t s trư ng ñ i h c ñ cu n sách v a ñ t yêu c u cao v n i dung v a thích h p v i ñông ñ o sinh viên các ngành k thu t. Hà N i. Khoa Công ngh thông tin. song yêu c u thì ngày càng nâng cao c v lý thuy t l n th c hành. Chúng tôi cũng th a hư ng ñư c nh ng kinh nghi m quý có ñư c trong quá trình gi ng d y môn h c này c a các ñ ng nghi p t i Trư ng ð i h c Giao thông v n t i. Trư ng ð i h c Giao thông v n t i. ph n 2 trình bày k thu t l p trình căn b n b ng ngôn ng C. Cu n Giáo trình Tin h c ñ i cương này ñư c biên so n theo khung chương trình c a B Giáo d c và ðào t o dành cho sinh viên ngành k thu t. CÁC TÁC GI 3 . T i h u h t các trư ng ñ i h c và cao ñ ng nư c ta hi n nay.Giáo trình Tin h c ð i cương L I NÓI ð U Tin h c ñ i cương là m t môn h c quan tr ng trong chương trình giáo d c ñ i cương b c ñ i h c. V m t n i dung. tuy m c ñ trư ng có th khác nhau. R t mong nh n ñư c các ý ki n ñóng góp c a các ñ c gi ñ ch t lư ng giáo trình này ngày càng t t hơn. M i ý ki n ñóng góp xin g i v : B môn Công ngh ph n m m. các môn h c này là b t bu c ñ i v i m i sinh viên. ð ng ða.

Giáo trình Tin h c ð i cương PH N 1 ð I CƯƠNG V TIN H C 4 .

Hai ngành khoa h c tr c ti p làm n n móng cho tin h c là toán h c và v t lý. nhưng khi nói ñ n tin h c. Thông tin v m t ñ i tư ng là các d ki n v ñ i tư ng ñó. nhưng chưa bi t ñư c bao nhiêu ñi m thì vi c xác ñ nh ñi m c a A có m t ñ b t ñ nh nào ñó. Trư c th i ñi m nh n thông tin. quy n sách. Như v y tính b t ñ nh ñã thay ñ i khi nh n thêm thông tin.. ð ñ t ñư c phương th c t ñ ng hóa ph i có các phương ti n k thu t.. m i hình thành và phát tri n trong m y th p k qua.. 1. Bây gi . ngư i ta thư ng ñ c p ñ n: K thu t ch t o máy tính M ng máy tính K thu t l p trình ð m b o toán h c cho máy tính và các h th ng tính toán Thu t toán và ñ ph c t p c a thu t toán Cơ s d li u Trí tu nhân t o . . ð c trưng quan tr ng c a tin h c là s truy n và x lý thông tin m t cách t ñ ng. Tin h c ñư c sinh ra trên mi n giáp danh c a nhi u lĩnh v c khoa h c.1 ð i tư ng nghiên c u c a Tin h c Tin h c là ngành khoa h c nghiên c u v c u trúc. l p nào thì vi c tìm ñ n sinh viên A có m t ñ b t ñ nh nào ñó. chưa xác ñ nh (b t ñ nh). tin h c ñã phát tri n theo hai b ph n h p thành ch y u là: b o ñ m toán h c. Thông tin t n t i dư i nhi u d ng và ñư c lưu tr nh v t mang tin như t báo. thì ñi u này ñã làm gi m ñ b t ñ nh trên. Ta xét m t ví d khác: N u bi t A ñã thi ñ t kỳ thi h c kỳ môn Tin h c ñ i cương. ñĩa t . M c dù r t khó phân ñ nh chính xác các lĩnh v c nghiên c u. có m t cái gì ñó ta chưa bi t. Ch ng h n ta bi t sinh viên A h c ðH Giao thông v n t i nhưng không bi t khoa nào. gi s bi t thêm sinh viên A h c khoa Công ngh thông tin c a trư ng.. m ng máy tính và g n ñây là m ng Internet. tính ch t và các quá trình x lý thông tin m t cách t ñ ng d a trên các phương ti n k thu t. ng d ng c a tin h c. . tin h c ñã phát tri n r t m nh và tr nên không th thi u trong h u như m i lĩnh v c c a ñ i s ng xã h i.Giáo trình Tin h c ð i cương CHƯƠNG 1 – NH NG KHÁI NI M CƠ B N V TIN H C 1.. Thông tin có kh năng làm thay ñ i s hi u bi t c a con ngư i. mà quan tr ng nh t là máy tính ñi n t (MTðT).. N u 5 . Trong b n thân c ph n m m và ph n c ng l i có các lĩnh v c nghiên c u chuyên sâu hơn v lý thuy t và ng d ng. c t nghĩa. chương trình (g i là ph n m m) và các thi t b tính toán. lưu tr . Ngay t khi ra ñ i. Phương ti n k thu t v a là công c v a là ñ i tư ng nghiên c u c a tin h c.2 Thông tin và x lý thông tin Thông tin theo nghĩa thông thư ng c a ñ i s ng hàng ngày ñư c hi u như là s thông báo. truy n d n thông tin (g i là ph n c ng). băng ghi âm. là ngu n g c c a nh n th c. ð c bi t t ñ u nh ng năm 80 c a th k trư c. thu t toán. Vi c x lý thông tin trư c ñây chưa ñ t ra v n ñ t ñ ng hóa và con ngư i luôn g n li n v i m i thao tác trong quá trình x lý thông tin. cùng v i s phát tri n c a máy vi tính. Tin h c là m t ngành khoa h c tr .

5. III=3. 8. B ng mã này có th s d ng 16 bit ñ mã hóa m t ký t . b-1.. XI=11.. Thông tin ñư c mã hóa trên b ng ch cái g m 2 ký hi u là ch s 0 và ch s 1. ta có t p ñ i tư ng X c n bi u di n (t p các thí sinh ch ng h n). 4. 10) và lúc sau là 1 trong 2 (ñi m có th là 7 ho c 8). hai ký hi u trong ñó ký hi u l n ñ ng trư c bi u th t ng c a hai ký hi u ñó. ch s 5 hàng trăm ch 500 ñơn v (5*102). 4. 6. 1. d ng mã quan tr ng ñư c dùng là mã nh phân. Như v y b ng mã v i m i bit có 2 tr ng thái cho phép mã hóa 27=128 ký t . 1. D=500. 3. y2 ∈ Y) là mã tương ng c a chúng. H ñ m La Mã: M i ký hi u bi u th m t giá tr (I=1. Lúc ñó các ký hi u c a h ñ m là 0. E. Thông tin thư ng ñư c bi u di n qua các b ký hi u.. ch s . x2 ∈X) s có y1≠y2 (y1 . 9... 7. ch s 5 hàng ñơn v ch 5 ñơn v .3 H ñ m và bi u di n thông tin trong máy tính H ñ m ñư c hi u như t p các ký hi u và t p các qui t c xác ñ nh dùng ñ bi u di n và tính giá tr các s . ta có th s d ng cơ s làm ch s . là b mã tiêu chu n c a M . V i b ng mã ANSI. H ñ m th p phân: S d ng 10 ký hi u (là các ch s : 0. 58 . 3. 8. . 7} h cơ s 16 dùng các ký hi u {0.. Trong tin h c. Nó có các qui t c. b t kỳ m t s nguyên b > 1 nào cũng ñ u có th ch n làm cơ s . ví d : VI=6. ta g i m t dãy h u h n các ch cái ñó là m t t trên Y ( ñây là s báo danh). C. Như v y trong h ñ m La Mã. H ñ m th p phân ch là m t trư ng h p riêng khi ch n cơ s là 10. T ng quát. 2. 5. 4. nên lư ng ký t có th mã hóa ñư c là 216=65536 ký t . b ng phép gi i mã ta s tìm ñư c ñ i tư ng tương ng (thí sinh). XXX=30. các h ñ m thư ng ñư c s d ng là: h cơ s 2 (h nh phân) ch dùng 2 ký hi u {0. Phép t o mã tương ng này c n ñ m b o tính ch t v i x1≠x2 (x1 . .. 6. . 1. 9).) th c ch t là dãy các tín hi u nh phân hay còn g i là các bit (binary digit). B. Tính b t ñ nh g n li n v i khái ni m xác su t. Ví d . Thông tin ñưa vào MTðT (ñ lưu tr . M=1000). D. 5. và như v y lư ng ký t có th mã hóa ñư c là 28=256 ký t . ñ i di n cho hai cách ñ m là: h ñ m La Mã (ñ m không theo v trí) và h ñ m th p phân (ñ m theo v trí). ký t ñ c bi t) tương ng v i m t mã 7 bit. ch s 5 hàng ch c ch 50 ñơn v (5*101). Cu i nh ng năm 80 c a th k trư c. A. ví d : 1012 . 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=5. m i ký t (ch cái. Khi bi t mã s (s báo danh). 8. 2. Xác su t càng nh thì ñ b t ñ nh càng l n. 1. Vì v y. lư ng thông tin t l ngh ch v i xác su t c a s ki n. 7. ví d : II=2. Hi n nay UNICODE ñã tr thành m t tiêu chu n ñư c ch p nh n r ng rãi vì nó có th mã hóa ñư c các ký t c a t t c các ngôn ng trên th gi i. 7. 1} h cơ s 8 dùng các ký hi u {0. m i ký t ñư c mã hóa b ng 8 bit. không ph thu c vào v trí c a nó trong bi u di n. tính toán. Khi c n phân bi t s h ñ m nào. hay còn g i là ASCII m r ng. X=10. trong x lý thông tin t ñ ng. hay nói cách khác. 3. 6. 6 . nó tương ng v i các tr ng thái c a các m ch ñi n t bên trong máy tính. S mũ c a cơ s 10 xác ñ nh giá tr ñ nh lư ng c a m i ñơn v . 2. Tính b t ñ nh c a s ki n lúc ñ u th hi n 1 trong 6 (ñi m có th là 5. 516 . 9. Ví d . S lư ng các ch s dùng trong h th p phân (10 ch s ) g i là cơ s c a h ñ m. F}. b ng mã UNICODE ñư c gi i thi u. Qui t c tính giá tr : giá tr c a m i ký hi u ph thu c vào b n thân ký hi u ñó và v trí c a nó trong bi u di n. V i m i ph n t x ∈ X ta gán m t t y ∈Y và g i là mã c a x (Y g i là b ng mã). m i ký hi u ch ñ i di n cho m t giá tr . 1. Ví d : trong s 555. 6. 2. v i b ng mã ASCII. Trư c h t hãy xét nh ng h ñ m quen thu c.Giáo trình Tin h c ð i cương bi t thêm A ñ t ñi m 7 ho c 8 thì lư ng thông tin b sung này s làm gi m ñ b t ñ nh trên. Ch n m t t p h u h n Y các ch và s làm b ng ch cái.

162 + 3. L p l i quá trình ñó ñ n khi thương s Nk=0. r i ti n hành bi n ñ i chúng riêng bi t sang h ñ m cơ s b.160 + 4. Vì th c n ph i có thu t toán ñ chuy n ñ i s t h ñ m này sang h ñ m khác.M1. ngư i ta thư ng dùng h th p phân làm trung gian: chuy n s t h ñ m cơ s b1 sang h th p phân. ñư c ph n nguyên c a k t qu là d1..2 Bi n ñ i s h th p phân sang h ñ m cơ s b t kỳ: Trư c h t c n tách ph n nguyên và ph n th p phân (n u có).16-1= 3391. ta s có k t qu c n tìm là (dk ...25 1..20 + 1. sau ñó chuy n ti p s t h th p phân sang h ñ m cơ s b2. ñư c ph n nguyên c a k t qu là d2. ð chuy n ñ i s t h ñ m cơ s b1 sang h ñ m cơ s b2 . ñư c thương s là N2 vào s dư là d2. Ví d : 1110.12 = 1. ta ti n hành theo các bư c: Vi t N dư i d ng ña th c: N = dn-1 bn-1 + dn-2 bn-2 + .3.16-1 = 13.1 Bi n ñ i s h ñ m b t kỳ sang h th p phân: h ñ m cơ s b..23 + 1.161 + F. + d1 b1 + d0 b0 + d-1 b-1 + d-2 b-2 + . Ví d : 5210 = ?2 .M ta nhân nó v i b.3...22 + 1. Sau ñó b ng cách ghép n i các k t qu ta thu ñư c giá tr c n tìm...d-m) th p phân. ð tìm bi u di n c a N trong h Cho s N= (dn-1dn-2.5 D3F. Sau ñó l i l y N1 chia nguyên cho b.161 + 15.. 7 Thương s 3656 228 14 0 S dư 10 8 4 14 Thương s 26 13 6 3 1 0 S dư 0 0 1 0 1 1 . 1.416 = D. + d-mb-m S d ng phép toán c a h th p phân ñ tính giá tr ña th c. Ta th c hi n theo thu t toán như sau: Phép chia nguyên 52 : 2 26 : 2 13 : 2 6:2 3:2 1:2 Như v y 5210 = 1101002 Ví d : 5850610 = ?16 . ph n th p phân còn l i sau khi l y k t qu tr ñi d1 là 0.d1d0d-1d-2.2-1 = 14.21 + 0.Giáo trình Tin h c ð i cương MTðT ch có th tác ñ ng tr c ti p v i các s nh phân.M1 nhân v i b.. d2d1).M2..162 + 3.. ð bi n ñ i ph n nguyên N.160 + 4. ph n th p phân còn l i sau khi l y k t qu tr ñi d2 là 0. . trong khi ñó con ngư i l i thư ng làm vi c trên h th p phân. Ta th c hi n theo thu t toán như sau: Phép chia nguyên 58506 : 16 3656 : 16 228 : 16 14 : 16 Như v y 5850610 = E48A16 ð bi n ñ i ph n th p phân 0. . ta chia nguyên nó cho b ñư c thương s là N1 và s dư d1. Sau ñó l y 0..

375 0.d1d2d3 . Ph n nguyên 13 7 14 15 .. M t t p h p các qui ư c ñ vi t nên các dòng l nh ñưa vào máy. Ngôn ng ñư c th c hi n tr c ti p d a trên qui ư c c a các m ch ñi n t trong máy g i là ngôn ng máy. Theo nghĩa ñó MTðT x lý d li u b ng s .. khi ñó tùy theo yêu c u mà quy t ñ nh d ng khi nào. . MTðT c n ph i g m ñ 5 thành ph n cơ b n: b nh ñ ghi thông tin. cho máy nh n di n và thi hành g i là ngôn ng . Các ñ dài t máy thông d ng là 8.75 1. nhưng c hai lo i d li u này khi ñưa vào máy ñ u là dãy các tín hi u nh phân. ð dài t máy là xác ñ nh. 32.8435 * 16 0.. 8 .5 1. ki m th chương trình r t khó khăn. Theo ñó thì MTðT làm vi c theo chương trình có trong b nh c a nó.. g i là t máy.10112 T ñây suy ra: 52. các thi t b nh p và thi t b xu t d li u. do v y d i s có th bi u di n ñư c bên trong máy tính là h u h n.6875 * 2 0.496 7. nó có k t thúc ho c l p vô h n. các ký hi u. nên vi c xây d ng.843510 = 0.687510 = 0..010112 Ví d : 0. ð ñ m b o nguyên t c này. Ngôn ng máy có ưu ñi m là máy hi u ñư c ngay..75 * 2 0.. 1 (g i là các bit).. bit.375 * 2 0.976 15. 16.Giáo trình Tin h c ð i cương Ti p t c l p l i quá trình này. S ñư c bi u di n dư i d ng nh phân chính là m t dãy các bit liên ti p. Ta s có k t qu c n tìm là (0.4 Nguyên lý c a h x lý thông tin t ñ ng 1.16 T ñây suy ra: 58506.5 * 2 K t qu 1.3..616 . các l nh máy ñư c bi u di n trong máy tính thông qua các dãy nh phân v i ñ dài xác ñ nh.3 Bi u di n thông tin trong máy tính: MTðT x lý c d li u s và phi s . thư ng ñư c th hi n b ng các ch s 0.936 14. ð dài t máy là ñ c trưng c a t ng h máy. M t chương trình th c ch t là m t chu i các l nh.976 * 16 . 1.936 * 16 0.843510 = E48A.D7EF. Máy tính ph i thi hành ñư c các l nh c a ngư i dùng ñưa vào.D7EF.4.) Ví d : 0.687510 = ?2 Phép nhân 0.687510 = 110100. nh m th c hi n nh ng công vi c nào ñó..843510 = ?16 Phép nhân 0.496 * 16 0. nhưng nó quá khác bi t so v i ngôn ng c a con ngư i.0 Ph n nguyên 1 0 1 1 Như v y: 0.. và nguyên lý này v n ñư c dùng làm cơ s cho h u h t các MTðT hi n nay. K t qu 13. Các s . và bit là ñơn v thông tin.16 1.. Như v y: 0. M i lo i máy có m t ngôn ng riêng. b s h c logic ñ th c hi n các tính toán... b ñi u khi n.1 Nguyên lý làm vi c c a máy tính Von Neumann là ngư i ñ xu t ra nguyên lý làm vi c c a máy tính s .

2 L ch s phát tri n c a máy tính L ch s k thu t tính toán ñã có t lâu ñ i. c a ph n m m. ta ph i hi u ñó là thi t b ph n c ng và h ñi u hành cài ñ t trên nó.chia. r i ñ n bàn tính g y. . có c u trúc g n gũi hơn v i ngôn ng c a con ngư i. k thu t tính toán ñã chuy n sang m t giai ño n m i. các NNLT m i luôn xu t hi n.Giáo trình Tin h c ð i cương T ñ u nh ng năm 60 c a th k trư c ñã b t ñ u xu t hi n nh ng ngôn ng l p trình (NNLT) b c cao. Các NNLT luôn không ng ng phát tri n. hòn s i. ti n b liên t c c a ph n c ng. Mauchly)..nhân. cũng như qu n lý. khai thác các thi t b ph n c ng hi u qu hơn. Chúng ta c n ph i có m t chương trình d ch cho NNLT ñó ñ d ch các chương trình ngu n b ng NNLT này ra ngôn ng máy. Trên th c t . ð t ñ ng hóa m t s công vi c c a ngư i v n hành máy. ñ tin c y. Các h ñi u hành ngày càng phát tri n ñ ñáp ng nhu c u không có gi i h n c a ngư i dùng và s thay ñ i.. Năm Trư c CN 1642 1670 1842 1890 1946 1958 1964 1976 1981 S ki n Bàn tính g y Trung Qu c Máy tính cơ. M t s h ñi u hành tiêu bi u hi n nay là: MS-DOS.4. Windows. G i là ngôn ng b c cao vì các ngôn ng này thư ng s d ng nh ng t khóa d a trên ti ng Anh. làm ñư c phép c ng (Blaise Pascal) Máy tính cơ. .. ð n năm 1946. t nh ng năm 1960 ngư i ta ñã xây d ng các h ñi u hành cho máy tính. khi ñó MTðT m i có th hi u và th c hi n. Ngày nay nói ñ n m t h th ng máy tính. s phát tri n c a các ngôn ng l p trình g n li n v i s phát tri n c a công ngh ph n m m và c a tin h c.1: Máy tính ñi n t ENIAC 9 . ch t lư ng. máy tính cơ.1: M t s m c trong l ch s phát tri n máy tính Hình 1. 1. Linux. thành l p công ty IBM Máy ENIAC (Eckert. máy tính cơ ñi n. làm ñư c c ng. T khi có MTðT.căn b c 2 (Leibnitz) Máy tính có th l p trình ñ tính t ñ ng (Charles Babbage) Herman Hollerith thi t k h th ng có th lưu thông tin trên bìa ñ c l . M t chương trình vi t b ng m t NNLT nào ñó g i là chương trình ngu n.tr . vi c ch t o thành công máy tính ENIAC t i M ñư c coi như m c ñánh d u s ra ñ i c a MTðT ñ u tiên trên th gi i. ngày càng hoàn thi n hơn ñ ñáp ng nh ng nhu c u ngày m t cao v qui mô.. Công c tính toán c a con ngư i b t ñ u t nh ng th r t thô sơ như ngón tay. g m 18000 bóng chân không. ñ c ra b ng t bào quang ñi n. giá 500000$ Máy tính ñ u tiên dùng bóng bán d n transitor (IBM 7090) Máy tính ñ u tiên dùng m ch tích h p IC (IBM 360) Hãng DEC gi i thi u máy vi tính VAX 11/780 Hãng IBM ñưa ra máy vi tính IBM PC B ng 1.

10 . Các máy tính l n có giá thành r t ñ t. Các máy tính mini có giá thành v a ph i. Các máy vi tính có kích thư c nh . ðã b t ñ u xu t hi n m t s NNLT b c cao như FORTRAN. Th h th tư (kho ng t sau 1980): Dùng m ch tích h p c l n VLSI. . V ng d ng. IBM 360. M t s máy lo i này là PDP.. chu t. b nh có dung lư ng l n hơn. các thi t b ngo i vi phát tri n r t m nh m . nên ñã d n ñư c s d ng r ng rãi. thư ng ñư c s d ng vào các lĩnh v c quan tr ng. các b ph n này ñóng gói thành các thi t b sau: Bo m ch ch (Mainboard ho c Motherboard) B x lý trung tâm (Center Processing Unit. ng d ng trong nhi u lĩnh v c. Th h th hai (kho ng 1955-1965): Dùng bóng bán d n thay ñèn ñi n t . c n quan tâm ñ n c y u t th i gian. COBOL. .. Các ti n b khác ph i k ñ n: xu t hi n nhi u h ñi u hành t t hơn.. h gia ñình hay ch cho cá nhân. Nhi u máy vi tính ngày nay có tính năng s d ng vư t xa các máy tính l n vào nh ng năm 1970. thích h p cho các m c ñích chuyên dùng. ñòi h i nhi u tính toán ph c t p. ch y u dùng ngôn ng máy ñ l p trình.. tính năng. b ñi u khi n.. th m chí hàng t phép tính m t giây.. t c ñ kho ng vài ch c nghìn phép tính m t giây. th ng kê. Sun 4. ngư i ta phân chia MTðT thành các lo i: Máy tính l n (mainfraim). . vi t t t là PC). . Th h th nh t (kho ng 1946-1955): Dùng bóng ñèn ñi n t .. máy v .). Gen/Blue. RAM) và b nh ngoài hay còn g i là các thi t b lưu tr (ñĩa t .. 1.. vi t t t là CPU) B nh : g m b nh trong (ROM. m t MTðT g m các b ph n chính là: b nh . k c trong nh ng công ty nh . .. Ph n m m chưa phát tri n. IBM 3090/300. ñ tin c y th p. ña chương trình..) ðư ng truy n (Bus) và các c ng giao ti p B ngu n Các thi t b ngo i vi: g m các thi t b nh p d li u (bàn phím. . các thi t b nh p/xu t d li u và các ñư ng truy n d n. Ph n m m phát tri n ña d ng.Giáo trình Tin h c ð i cương S phát tri n c a MTðT t năm 1946 ñ n nay ñã tr i qua nhi u th h . b s h c-logic. . V ng d ng. . ñĩa CD. tiêu hao nhi u năng lư ng. ñã ñư c s d ng trong t t c m i lĩnh v c. Thu c lo i này có th k ñ n các máy Cray. M i th h là m t bư c phát tri n l n và ñư c xác ñ nh căn c vào tiêu chu n k thu t và m c ñ phong phú c a ph n m m.. có kh năng s d ng b nh o. HP-300. nên d n d n ngư i ta g n như ñ ng nghĩa t PC v i t máy vi tính. Các máy vi tính xu t hi n t cu i nh ng năm 70 c a th k 20. t c ñ tính toán lên ñ n nhi u tri u.. t c ñ tính toán lên ñ n hàng tri u phép tính m t giây. ki n trúc v t lý. t c ñ tính toán ch t vài nghìn ñ n vài ch c nghìn phép tính m t giây. V t ch c v t lý. s phát tri n c a m ng máy tính. Máy vi tính c a IBM chi m th ph n l n nh t vào ñ u nh ng năm 1980. các thi t b xu t d li u (màn hình. tiêu th năng lư ng ít hơn. Chính vì th phiên b n máy vi tính ñ u tiên c a hãng IBM ñư c g i là máy tính cá nhân (Personal Computer.. Th h th ba (kho ng 1965-1980): Dùng m ch tích h p thay cho bóng bán d n.5 C u trúc máy tính V c u trúc logic. máy in. các ki n trúc song song.. D a trên kích thư c. ñã b t ñ u dùng vào các m c ñích tính toán trong qu n lý kinh t . C n lưu ý r ng cách phân lo i trên ch là tương ñ i. Th h MTðT này thư ng ch dùng trong m c ñích nghiên c u khoa h c. trư ng h c.). máy tính mini (mini computer) và máy vi tính (micro computer). giá thành r hơn các lo i máy trên.. t c ñ và quy mô x lý.

Giáo trình Tin h c ð i cương

Hình 1.2 Máy vi tính Thùng máy (case):

Hình 1.3: Máy tính xách tay (laptop)

H u h t các thi t b c a MTðT k trên ñ u ñư c ñ t bên trong thùng máy, tr m t s thi t b ngo i vi. V hình th c, thư ng có 2 ki u thùng máy: ñ t ñ ng và ñ t n m ngang. Chú ý r ng nhi u ngư i quen g i c thùng máy là CPU, g i như v y là sai vì CPU ch là b x lý trung tâm g n trên bo m ch ch , ñ t bên trong thùng máy. Bo m ch ch : Là thành ph n r t quan tr ng trong MTðT, k t n i các b ph n c a máy tính v i nhau. T t c các thành ph n c a MTðT ñ u ñư c c m tr c ti p, ho c gián ti p (thông qua cáp) vào bo m ch ch . Bo m ch ch g m các thành ph n chính: c m b x lý trung tâm (ñ c m CPU), rãnh c m b nh trong (ñ c m các thanh RAM), BIOS, các rãnh c m cho các thi t b ngo i vi (ñ c m c c màn hình, c c m ng, ...), các c ng giao ti p v i các thi t b ngo i vi, ...

Hình 1.4: Bên trong máy vi tính B x lý trung tâm (CPU): Là b não c a MTðT, và có th nói s c m nh c a máy tính ph thu c ch y u vào kh năng tính toán c a CPU. B x lý trung tâm bao g m b s h c – logic, b ñi u khi n và các thanh ghi. B s h c – logic có ch c năng th c hi n các phép tính s h c cơ b n và các phép tính logic. B ñi u khi n có ch c năng tìm n p l nh t b nh , ñi u khi n các bư c th c hi n c a chương trình. Còn các thanh ghi th c ch t là b nh t c ñ cao, m i thanh ghi có ch c năng riêng. 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 các b ph n khác trong toàn h th ng máy tính. T c ñ CPU chính là th hi n nh p ñ ng h này, ño b ng megaherz (MHz). T c ñ càng cao t c là máy tính ho t ñ ng càng nhanh. 11

Giáo trình Tin h c ð i cương H u h t các CPU s d ng hi n nay ñư c s n xu t b i các hãng n i ti ng như: Intel, AMD, Motorola.

Hình 1.5: B x lý trung tâm (CPU) B nh B nh dùng ñ lưu tr thông tin. ðơn v ñ ño lư ng thông tin là byte (vi t t t là B). M t byte th c ch t là m t dãy các bit liên ti p (8 bit). ð lưu 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 nhiên (Random Access Memory, vi t t t là RAM). ROM ch a nh ng s li u và chương trình r t cơ b n ñ máy tính có th kh i ñ ng và làm vi c. ROM ñư c các hãng s n xu t máy tính ghi s n, nó không b m t ñi khi t t máy nhưng ta không th thay ñ i d li u trong ROM. Trên th c t , khi nói ñ n b nh trong c a máy tính ngư i ta thư ng ng m hi u là RAM. RAM dùng ñ lưu tr chương trình t m th i trong khi máy ñang làm vi c. Chúng ta có th ñ c, ghi, s a xóa d li u trong RAM, nhưng do ñ c ghi b ng ñi n nên khi t t máy ho c m t ñi n thì m i thông tin lưu trong ñó s b m t h t. B nh RAM thư ng ñư c t ch c thành t ng băng (còn g i là thanh RAM), có dung lư ng 16 MB, 32 MB, 64 MB, ... Các thanh RAM ñư c c m trên bo m ch ch . Trên bo m ch ch có th c m ñư c nhi u thanh RAM. B nh RAM có t c ñ truy c p cao, nhưng không lưu ñư c d li u sau khi t t máy, vì th nh ng d li u mu n lưu tr lâu dài c n ph i ghi vào các thi t b lưu tr . Các thi t b lưu tr hi n nay r t ña d ng, g m: băng t , các lo i ñĩa t (ñĩa m m, ñĩa c ng), các lo i ñĩa quang (ñĩa CD, ñĩa DVD), ñĩa USB (USB Flash Disk), ...

Hình 1.6: B nh RAM B ngu n B ngu n chuy n ñ i ñi n lư i xoay chi u thành dòng ñ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 máy tính.

1.6 M t s

ng d ng c a Tin h c
12

Giáo trình Tin h c ð i cương Tin h c ngày nay ñã tr thành ñ ng l c s n xu t c a xã h i. MTðT khác các máy móc khác ch nó gia công thông tin ch không gia công nguyên v t li u. S n ph m c a MTðT là nh ng thông tin hư ng d n các ho t ñ ng th c ti n. Ban ñ u tin h c ch y u ph c v các v n ñ khoa h c k thu t, ngư i s d ng khi ñó cũng ch y u là nh ng nhà chuyên môn trong các lĩnh v c ñó. S phát tri n nhanh chóng c a MTðT và m ng Internet cho phép tin h c xâm nh p vào m i lĩnh v c. Do s phát tri n nhanh, m nh và r ng kh p c a tin h c nên s r t khó ñ nói h t ñư c nh ng ng d ng c a nó, dư i ñây ch tóm 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 toán h c: Mathematica: là ph n m m cho phép tính toán t ñơn gi n như các tính toán s h c ñ n ph c t p hơn, như: các bài toán v ña th c, ñ i s tuy n tính, tìm gi i h n, tìm ñ o hàm, tính tích phân, gi i phương trình vi phân, khai tri n Taylor, ... Ngoài ra ph n m m này còn cho phép v bi u ñ và ñ th . Matlab: ph n m m này có th th c hi n ñư c các tính toán tương t như Mathematica. Ngoài ra Matlab còn dùng k thu t ñ h a 3 chi u ñ thi t k các mô hình trong khoa h c k thu t ho c làm các ño n phim ho t hình ñơn gi n.

-

Ph n m m văn phòng: B ph n m m văn phòng n i ti ng nh t, có m t h u h t các máy tính hi n nay là Microsoft Office. Trong b ph n m m này có nh ng chương trình: Word: ñ so n th o, lưu tr , s a ch a, in n các văn b n. Excel: ñ t o l p, lưu tr , s a ch a, in n các b ng tính, ví d : b ng lương, b ng th ng kê bán hàng, ... PowerPoint: ñ t o l p các b n báo cáo (slide) và trình bày báo cáo. Access: là m t h qu n tr cơ s d li u. FrontPage: ñ xây d ng các trang Web. Outlook: ñ trao ñ i, qu n lý thư ñi n t , l p l ch làm vi c, ... AutoCAD: ñ t o l p và qu n lý các b n v k thu t. Soap: ñ tính toán k c u và n ñ nh l c h c. 3D Max: là m t công c m nh, có s h tr c a multimedia ñ ph c v cho công tác thi t k . CÂU H I CHƯƠNG 1 Câu 1: K tên các lĩnh v c nghiên c u c a Tin h c? Thông tin trong máy tính ñư c lưu tr , tính toán theo h ñ m nào? Câu 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? Câu 3: Nêu các khái ni m: ph n c ng máy tính, ph n m m máy tính, ngôn ng l p trình? Nêu c u t o cơ b n c a máy tính? 13

Ph n m m thi t k :

chúng ch ch y ñư c trên n n DOS. có th bao g m c d u cách. Dãy thư m c và t p tin ñó g i là ñư ng d n.) là: ph n tên và ph n m r ng. . D a trên khái ni m thư m c. N u ph i xác ñ nh thư m c ho c t p tin ñĩa khác v i ñĩa hi n hành thì c n ch ra tên ñĩa. DOS t ch c d li u trên ñĩa m t cách logic dư i d ng hình cây. DOS cho phép t ch c các t p tin thành t ng nhóm.0 ñ n 6. thư ng g i t t là DOS. Tuy nhiên. t các thư m c có th ñ n các thư m c con c a nó.Giáo trình Tin h c ð i cương CHƯƠNG 2 – H ðI U HÀNH H ñ ng c giao ti HðH t ñi u hành (HðH) là t p h p các chương trình ñ c bi t dùng ñ t ch c. ph i h p ho t a các thi t b ph n c ng.1 H ñi u hành MS-DOS M t trong nh ng HðH ñ u tiên cho các máy vi tính là MS-DOS (Microsoft Disk Operating System). g i là thư m c. nên ngay c trong Windows v n cho phép chúng ta t o ra môi trư ng DOS o. Tên ñĩa thư ng ký hi u A cho ñĩa m m. Thư m c hi n hành là thư m c mà ta ñang làm vi c. Có th ví thư m c như nh ng t h sơ ñ ch a h sơ là các t p tin. gi a hai thư m c ho c t p tin s d ng d u s chéo (\). S lư ng các HðH cho máy vi tính cũng không ít. C. Trong thư m c có th t o nh ng thư m c con c a nó. ph n m r ng không quá 3 ký t và không ch a d u cách và các ký t ñ c bi t. 2. 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. Thư m c mà bên trong không có thư m c con cũng không có t p tin nào thì g i là thư m c r ng. D cho ñĩa c ng.. MS-DOS ñã phát tri n qua nhi u phiên b n t 1. nhi u tư tư ng và qui ñ nh c a DOS v n ñư c áp d ng trong Windows. 14 . có nhi u ph n m m ñư c vi t t khi HðH Windows chưa ph bi n. 2. ñư c phân cách b ng d u ch m (. ð t tên t p tin trên DOS ph i tuân theo m t s qui t c: ph n tên không quá 8 ký t . Cách t ch c d li u trên ñĩa c a HðH Windows cũng tương t như v y. ch có ñi u trên Windows có th ñ t tên t p tin và tên thư m c v i ñ dài l n hơn. nó ñư c th hi n trên d u nh c c a DOS. M i t p tin có m t tên.. và cu i cùng “lá” là các t p tin. kèm theo d u hai ch m (:). Các thông tin này ñư c trình bày b ng cách li t kê tên các thư m c và t p tin. Có hai lo i t p tin là: t p tin d li u và t p tin chương trình. ðư 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 tính t thư m c hi n hành. g m 2 ph n.1 M t s khái ni m T p tin (file): là t p h p các thông tin ñư c t ch c lưu tr thành m t ñơn v ñ c l p. Tên thư m c cũng không ñư c ñ t quá 8 ký t .1. ñ ng ñư c t i vào b nh sau khi kh i ñ ng máy tính. Hi n nay có r t nhi u HðH cho các h máy khác nhau. t o ra môi trư ng làm vi c cho các chương trình ng d ng và p v i ngư i dùng. gi ng như khi dùng MS-DOS ñ ch y ñư c các ph n m m cũ.DOC Các ký t ñ i di n: thư ng ñư c s d ng khi ph i làm vi c v i nhi u t p tin có chung m t tính ch t nào ñó.. nhưng trên th gi i cũng như Vi t Nam t trư c t i nay s d ng ph bi n các HðH c a hãng Microsoft là MS-DOS và Windows. Ngoài ra. . Thư m c (directory): ð t o s d dàng và thu n l i trong vi c qu n lý và truy xu t ñ n các t p tin. Ví d m t ñư ng d n: C:\GIAOTRINH\THDC\CHUONG1. HðH là m t ph n m m không th thi u trên b t kỳ máy tính nào.0 r i d n ñư c thay th b i HðH Windows.. v i “g c” là ñĩa. r i phân chia ti p ra các thư m c.

1. Gi a ph n l nh và ph n thông tin phía sau ph i có ít nh t m t d u cách. <ENTER> Chuy n ñ n thư m c g c: CD\ <ENTER> 4) Xem n i dung thư m c: DIR [ñư ng d n] [tên thư m c] [/p] <ENTER> N u ch dùng DIR thì ta s xem ñư c n i dung c a thư m c hi n hành: nó có nh ng thư m c con nào. 2. còn ph n ñ t gi a d u [ và ] là ph n l a ch n. Trong cách vi t l nh sau ñây. <tên thư m c> là tên thư m c m i c n t o.4 M t s l nh làm vi c v i t p tin 1) Xóa t p tin: DEL [ñư ng d n] <tên t p tin> <ENTER> ð xác ñ nh tên t p tin c n ch rõ tên và ph n m r ng.Giáo trình Tin h c ð i cương 2. Có th s d ng các ký t ñ i di n ñ xóa cùng lúc nhi u t p tin có chung nh ng tính ch t nào ñó.. c n t o m t thư m c m i có tên MD GIAOTRINH\VANPHONG <ENTER> 2) Xóa m t thư m c r ng: RD [ñư ng d n] <tên thư m c> <ENTER> 3) Chuy n ñ n m t thư m c: CD [ñư ng d n] <tên thư m c> <ENTER> Thư m c sau khi ñư c chuy n ñ n s tr thành thư m c hi n hành. Tham s /p ñ xem t ng trang màn hình. tên các thư m c ñ xác ñ nh thư m c c n làm vi c. Ví d trên VANPHONG: ñĩa C hi n hành có thư m c GIAOTRINH. t p tin nào. Trong l nh c a DOS không phân bi t ch hoa và ch thư ng. Ví d : xóa t t c các t p tin có ph n m r ng là TMP trong thư m c THDC DEL GIAOTRINH\THDC\*.TMP <ENTER> 2) ð i tên t p tin: 15 . tùy theo yêu c u mà có c n s d ng hay không.1. Sau khi vi t xong l nh. 2. Chuy n ñ n thư m c cha: CD .3 M t s l nh làm vi c v i thư m c: 1) T o thư m c m i: MD [ñư ng d n] <tên thư m c> <ENTER> Trong ñó: [ñư ng d n] là tên ñĩa.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 trên màn hình. t c là thư m c mà ta s t o thư m c m i trong nó. ph n ñ t gi a d u < và d u > là b t bu c ph i có. dùng khi s lư ng t p tin c a thư m c c n xem l n. <ENTER> là gõ phím Enter trên bàn phím. kích thư c t ng t p tin là bao nhiêu byte. gõ phím Enter ñ th c hi n l nh ñó. n u không l nh s sai cú pháp.

Sau khi ñăng nh p. Windows 2000. v i các th c ñơn (menu).2. t gi a nh ng năm 80 c a th k 20. ð t t máy ch n Turn Off Computer --> Turn Off. ch n All Programs ta s có danh sách các chương trình ñã cài ñ t trên máy. Windows s t ñ ng n p và ch y. Các thao tác trên Windows r t tr c quan và d dàng.0 và Windows 3. mu n ch y chương trình nào ch c n b m chu t vào bi u tư ng tương ng. Mu n th c hi n chương trình nào ta nháy ñúp chu t vào bi u tư ng ñó.Giáo trình Tin h c ð i cương REN [ñư ng d n] <tên t p tin> <tên m i> <ENTER> 3) Sao chép t p tin: COPY <Ngu n> <ðích> <ENTER> Trong ñó ph n <Ngu n> c n ch ra các t p tin c n sao chép và ph n <ðích> ch ra ho c thư m c s sao chép các t p tin trên vào. s xu t hi n màn hình n n (desktop) c a Windows (các ví d ñây là trên phiên b n Windows XP). ñ kh i ñ ng l i máy ch n Turn Off Computer --> Restart. ñĩa 2. d n d n thay th DOS và tr thành HðH ñư c s d ng nhi u nh t trên th gi i.2 H ñi u hành Windows 2. Thanh tác v (taskbar) phía dư i màn hình cho bi t các ng d ng nào ñang th c hi n. Khác bi t d nh n th y nh t c a Windows so v i DOS là nó có giao di n ñ h a. Các phiên b n ñư c s d ng ph bi n hi n nay là Windows 98. Nút Start ch a ñ ng nhi u ch c năng quan tr ng c a Windows. Windows XP. Windows ñã có m t quá trình phát tri n khá dài. N u máy tính ñã cài ñ t HðH Windows.1 M t s ñ c ñi m HðH Windows là bư c phát tri n ti p theo c a MS-DOS. Chúng ta cũng có th t o các bi u tư ng (shortcut) trên màn hình cho b t kỳ t p tin hay thư m c nào c n thư ng xuyên dùng t i. Nh ng phiên b n ñư c s d ng r ng rãi ñ u tiên là Windows 3. ngư i s d ng không c n ph i nh và gõ nh ng dòng l nh như trên DOS. M i bi u tư ng trên màn hình thư ng ñ i di n cho m t chương trình.1. c a s và bi u tư ng. Trong Start. sau khi kh i ñ ng máy. 16 .

1: Màn hình desktop c a Windows XP Hình 2.3 Sau khi b m ch n nút Start Hình 2.3:Sau khi ch n All Programs 17 .Giáo trình Tin h c ð i cương Hình 2.

5: Sau khi ch n Turn Off Computer Con chu t là thi t b giao ti p ch y u dùng trong giao di n ñ h a. thư ng dùng ñ kích ho t b ng ch n t c th i (b ng ch n g m nh ng ch c năng nào còn ph thu c vào ng c nh).. .. thư ng dùng ñ kích ho t m t ñ i tư ng nào ñó. ho c b m t h p phím t t: . 18 . M t s thao tác cơ b n v i chu t là: B m chu t (ho c còn g i là nháy chu t..Giáo trình Tin h c ð i cương Hình 2.E. . kích ñúp. Con chu t thư ng có hai phím: phím trái và phím ph i. B m ñúp chu t (ho c còn g i là nháy kép. b ng cách nháy ñúp vào bi u tư ng trên màn hình desktop. ta c n m chương trình Windows Explorer. B m chu t ph i là thao tác n vào nút ph i chu t. - Hình 2. nh phím b m ra.4: Sau khi ch n Log Off Hình 2. kích ñơn. ) là thao tác n vào nút trái chu t..6: B ng ch n t c th i ð th c hi n các công tác qu n lý t p tin. dùng ñ ch n m t ñ i tư ng nào ñó. Thao tác này dùng ñ di chuy n v trí hay thay ñ i kích thư c m t ñ i tư ng.) là thao tác b m nhanh 2 l n liên ti p phím trái chu t. Thao tác kéo-th : b m và gi phím trái chu t. kéo chu t t i v trí d ñ nh.

Giáo trình Tin h c ð i cương Hình 2. ñ ñóng m t thư m c: b m ch n bi u tư ng d u tr . 19 . ta gi phím Ctrl r i l n lư t b m ch n các t p tin.8: Ch n cách s p x p các 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 . sau ñó ch n cách s p x p tương ng.) b ng cách b m chu t ph i màn hình bên ph i. .2 Các thao tác trong Windows Explorer Hi n th n i dung: Phía bên trái màn hình Windows Explorer là t ch c thư m c.2.. theo ki u. 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 vào nó. Ta có th s p x p và xem các t p tin này theo nhi u cách khác nhau (theo tên. gi phím Shift r i b m chu t vào t p tin cu i. ñ ch n nhi u t p tin không li n nhau.. cách t ch c này cũng gi ng như DOS. Hình 2.7: Windows Explorer 2. ñ ch n nhi u t p tin li n nhau ta b m chu t vào t p tin ñ u. ch n Arrange Icons By. Khi ch n m t thư m c nào ñó (b ng cách b m chu t vào nó) thì danh sách các t p tin và thư m c con c a nó xu t hi n bên ph i màn hình.

9: B ng ch n khi Copy ð i tên t p tin. CÂU H I CHƯƠNG 2 Câu 1: Nêu khái ni m HðH? K tên m t s HðH? Câu 2: Quy t c ñ t tên File trong h ñi u hành DOS? Nêu các l nh làm vi c v i thư m c. ch n các t p tin. b m chu t ph i vào ñ i tư ng. ngoài các thao tác ñơn gi n. thư m c: Ch n m t ñ i tư ng (t p tin ho c thư m c). thư m c sau khi th c hi n các thao tác trên không b xóa h n. vi c t h c và làm ch các thao tác. ch n ch c năng Delete trong b ng ch n ho c gõ phím Delete trên bàn phím. N u mu n thay vì sao chép.Giáo trình Tin h c ð i cương Sao chép ñ i tư ng (các t p tin và thư m c t thư m c ngu n sang thư m c ñích): Tìm ñ n thư m c ngu n. ð xóa các t p tin. ch n Copy. thư m c: Hình 2. thì ta c n gi phím Shift khi ch n ch c năng Delete. ta chuy n ñ i tư ng t thư m c ngu n sang thư m c ñích (ñ i tư ng ñó không còn trong thư m c ngu n). Chúng tôi ch gi i thi u ñây m t s ki n th c cơ b n nh t. cu i cùng gõ tên m i. ch n ch c năng Rename trong b ng ch n. Tuy nhiên v i giao di n ñ h a. các l nh làm vi c v i t p tin? Câu 3: Các thao tác ñ t t máy tính trong h ñi u hành Windows? 20 . Hình 2. nên t n d ng thêm kh năng kéo-th . thư m c c n ph c h i. mà ch b ñưa vào thùng rác.10: B ng ch n khi Paste Ch n m t ñ i tư ng (t p tin ho c thư m c). Cu i cùng tìm ñ n thư m c ñích. Hình 2. N u mu n xóa h n t p tin. b m chu t ph i. b m chu t ph i. vì các kh năng c a HðH Windows r t phong phú. Ch ng h n ñ sao chép các t p tin vào m t thư m c nào ñó. r i kéo và th vào bi u tư ng thùng rác. ta có th ñánh d u ch n các t p tin ñó r i kéo và th vào thư m c ñích. ch n Paste trên b ng ch n t c th i. nơi ch a ñ i tư ng. ch vi c thay Copy b ng Cut. B m chu t ph i ñ m b ng ch n t c th i. N u mu n ph c h i ta ch c n vào thùng rác. ch n Restore. thư m c nào. ta có th b m ch n các t p tin ñó. tr c quan. Chú ý: các t p tin.11: Bi u tư ng thùng rác Thao tác trong Windows Explorer ch y u s d ng chu t. không th ñ c p h t trong giáo trình này. b m chu t ph i vào ñ i tư ng. ðánh d u ch n ñ i tư ng c n sao chép. khai thác các ch c năng khác c a Windows sau khi ñã n m ñư c nh ng ki n th c cơ b n là hoàn toàn không khó. Xóa t p tin.

b=r r i quay l i làm l i Bư c 1 Thu t toán trên g m các thao tác tính s dư r. Tính ph d ng: Thu t toán có th gi i ñư c m t s bài toán trong m t l p bài toán. không có tư duy. tùy ð i lư ng vào: M i thu t toán ph i có m t ho c nhi u d li u ñ u vào ð i lư ng ra: Sau khi k t thúc thu t toán ta có th thu ñư c m t s ñ i lư ng ra là k t qu c a bài toán.b. Ví d : Thu t toán tìm ư c s chung l n nh t (USCLN) c a hai s nguyên dương a.2 M t s phương pháp bi u di n thu t toán Máy tính ñư c s d ng như là m t công c ñ h tr con ngư i gi i quy t các bài toán trong th c t . M t thu t toán là t t thì nó ph i ñơn gi n. Tính xác ñ nh: ch n. n u r<>0 ñ t a=b. b n thân nó không th t gi i các bài toán trong th c t ñư c. Do ñó. mà nó ch có th th c hi n ñư c các l nh. nh m xác ñ nh m t dãy các thao tác trên các ñ i tư ng (d li u ñ u vào) sao cho sau m t s h u h n bư c th c hi n các thao tác ñó ta ñ t ñư c m c tiêu c n làm (d li u ra là k t qu bài toán). không gây nh p nh ng.1 Khái ni m Thuât toán là m t dãy các quy t c. Có nhi u cách bi u di n thu t toán như ñ c t t nhiên (li t kê t ng bư c). do con ngư i b o nó làm thông qua m t ngôn ng l p trình. …. theo ñó máy th c hi n gi i bài toán. m i bư c các thao tác ph i rõ ràng. ti t ki m b nh và th i gian th c hi n. b=r. B n thân máy tính ch là m t v t vô chi vô giác.1 ð c t t nhiên (Li t kê t ng bư c) 21 . ñây ta làm quen v i m t s cách bi u di n thu t toán thông d ng 3. ki m tra r<>0?. Tính hình th c hóa: Thu t toán ph i có th hình th c ñư c và cài ñ t ñư c trên máy tính. b Có th mô t thu t toán này như sau: Bư c 1: Tìm s dư r c a phép chia a cho b Bư c 2: Ki m tra: N u r = 0 thì thông báo b là USCLN và k t thúc N u r<>0 thì th c hi n ñ t a=b.Giáo trình Tin h c ð i cương CHƯƠNG 3 – THU T TOÁN 3. Vì v y ñ máy có th giúp chúng ta gi i m t bài toán nào ñó thì ta c n ph i cài ñ t thu t toán gi i bài toán ñó cho máy. gi mã.2. Các ñ c trưng cơ b n c a thu t toán Thu t toán ph i có tính d ng: Thu t toán ph i k t thúc sau m t s h u h n bư c. Input: a. ð cài ñ t thu t toán cho máy ngư i cài ñ t ph i có thu t toán gi i bài toán ñó. sơ ñ kh i.b hai s nguyên dương Output: ƯSCLN c a a. 3. Tính hi u qu : M i bài toán có th có nhi u thu t toán khác nhau ñ gi i.

sau m i l n l p bi n tăng lên 1 ñơn v 7 8 A A Kí hi u kh i các thao tác th c hi n các công vi c A Kí hi u g i chương trình con A th c hi n 22 . M t s ký hi u s d ng bi u di n thu t toán: STT 1 2 3 Ký hi u begin Ý nghĩa c a ký hi u Ký hi u b t ñ u thu t toán Ký hi u k t thúc thu t toán Ký hi u nh p d li u vào Ký hi u xu t d li u ra S end Input: 4 Output: Bt Lôgíc 5 ð Bi n=1.∆ )/(2a) 3.N u ∆>0 thì k t lu n phương trình có 2 nghi m x1=(-b + ∆ )/(2a).N u ∆ < 0 thì k t lu n phương trình vô nghi m ..n Ký hi u r nhánh N u Bt Lôgíc có giá tr ðúng thì th c hi n theo nhánh ð N u Bt Lôgíc có giá tr Sai thì th c hi n theo nhánh S A 6 Ký hi u vòng l p v i s l n xác ñ nh trư c. Bư c 1: Xác ñ nh các h s a=?. c là các s th c. a≠ 0.Giáo trình Tin h c ð i cương S d ng ngôn ng t nhiên ñ bi u di n thu t toán b ng cách ch ra t ng bư c c n th c hi n c a thu t toán. c=? c a phương trình Bư c 2: Tính ∆ = b2 . .2.4ac Bư c 3: Ki m tra ∆: .2 S d ng sơ ñ kh i S d ng h th ng các kí hi u ñ bi u di n thu t toán. x2=(-b. b. 2.. ban ñ u Bi n ñư c gán b ng 1. Th c hi n công vi c A n l n. b=?.N u ∆ = 0 thì k t lu n phương trình có nghi p kép x1=x2=-b/(2a) . Ví d : Thu t toán gi i phương trình b c 2: ax2+bxc=0 v i các h s a.

b. x ∈ R. d hi u. Khi máy th c hi n nó s th c hi n theo th t các bư c ñã ñư c s p x p. Trong ñ c t ñó ch ra bư c nào th c hi n trư c bư c nào th c hi n sau.3 Các c u trúc cơ b n c a thu t toán Khi mô t thu t toán ta s d ng các c u trúc sau ñây ñ mô t . c ng k nh. b. d ki m tra. Phương pháp này ch y u s d ng cho ngư i m i l p trình và ñ bi u di n các thu t toán ñơn gi n (ít thao tác). Begin Input: a.Giáo trình Tin h c ð i cương 9 Kí hi u ch hư ng th c hi n thu t toán B ng 3. C u trúc tu n t C u trúc r nhánh C u trúc l p 3. 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.1 C u trúc tu n t Khái ni m: C u trúc tu n t là c u trúc bao g m nhi u bư c. 3. c. Trong bi u di n thu t toán b ng phương pháp ñ c t t nhiên thì các bư c ñư c s p x p tu n t . a≠0. a. 23 . x2 Output: Pt vô nghi m Output: Pt Có nghi m kép x End Sơ ñ kh i bi u di n thu t gi i phương trình b c hai ax2+bx+c=0.3. nhưng có m t s như c ñi m là ph i v khá nhi u. Các bư c này ñư c s p x p theo m t tr t t nh t ñ nh.1: M t s ký hi u dùng trong v sơ ñ kh i Ví d : Bi u di n thu t toán gi i phương trình b c 2 b ng sơ ñ kh i. Nh n xét: S d ng sơ ñ kh i ñ bi u di n thu t toán có ưu ñi m là tr c quan. không thu n l i cho bài toán ph c t p.

n u sai s th c hi n theo nhánh sai. Bi u th c ñi u ki n chính là m t bi u th c lôgíc Sơ ñ kh i th hi n c u trúc r nhánh Bi u th c Lôgíc ð S Ví d : Gi i phương trình b c nh t ax + b = 0 Sơ ñ kh i th hi n thu t toán: 24 . Sơ ñ kh i mô t thu t toán gi i bài toán trên: begin Input: r S = πr2 C = 2πr Output: S. C End 3.2 C u trúc r nhánh Khái ni m: C u trúc r nhánh là c u trúc báo cho máy c n ki m tra m t ñi u ki n nào ñó c a bài toán.1 thì th t th c hi n các bư c là: th c hi n bư c 1. ñâ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 nhánh ñúng. Ví du: Tính di n tích.2. Trong bi u di n thu t toán b ng sơ ñ kh i thì trình t th c hi n c a thu t toán ñư c th c hi n theo chi u mũi tên.3. chu vi c a m t hình tròn bán kính r. 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.Giáo trình Tin h c ð i cương Ví du: ð c t thu t toán gi i phương trình b c hai ví d trong m c 3.

3 C u trúc l p Trong l p trình chúng ta có hai d ng c u trúc l p: c u trúc l p xác ñ nh trư c và c u trúc l p không xác ñ nh trư c. b S a=0 ð b=0 S x = -b/a ð Output: Pt vô s nghi m Ouput: Pt vô nghi m Output: x end 3. 25 . ði u ki n k t thúc vòng l p là m t bi u th c lôgíc. . 2. Trong mi n tác ñ ng có th bao g m m t t p c u trúc cơ b n. Sơ ñ kh i th hi n c u trúc Bi n = 1.3.. n Mi n tác ñ ng C u trúc l p không xác ñ nh: Khái ni m: C u trúc l p không xác ñ nh là c u trúc báo cho máy l p ñi l p l i m t mi n tác ñ ng nào ñó v i s l n l p không xác ñ nh trư c.Giáo trình Tin h c ð i cương begin Input :a. C u trúc l p xác ñ nh: Khái ni m: C u trúc l p xác ñinh trư c là c u trúc báo cho máy l p ñi l p l i m t mi n tác ñ ng nào ñó v i s l n l p xác ñ nh trư c.

n end 26 . n = 1 s < 2.. Tăng giá tr n lên 1 ñơn v (n = n + 1). + ≥ 2.5 thì d ng l i ta có n là giá tr c n tìm N u s < 2. Kh i t o giá tr ban ñ u n = 0. Ki m tra: 1 n N u s >= 2. ð tìm ñư c n ta th c hi n theo thu t toán sau: S d ng phương pháp ñ c t t nhiên mô t thu t toán: Bư c 1.5 2 3 n Gi i: Theo yêu c u bài toán là c n tìm n nh nh t ñ s ≥ 2.5 thì quay l i th c hi n l i bư c 2. s = 0.5.Giáo trình Tin h c ð i cương Trong mi n tác ñ ng có th bao g m m t t p c u trúc cơ b n. Bư c 2.5 S ð s = s + 1/n n = n +1 s. Sơ ñ kh i th hi n c u trúc Bi u th c lôgíc ð Mi n tác ñ ng S Mi n tác ñ ng Ho c S Bi u th c lôgíc ð Ví d : Tìm s t nhiên n nh nh t ñ t ng s = 1 + 1 1 1 + + . tính s = s + Bư c 3. S d ng sơ ñ kh i mô t thu t toán begin s = 0..

Giáo trình Tin h c ð i cương

3.4 M t s thu t toán gi i m t s bài toán ñơn gi n
3.4.1 Bài toán ñ m Bài toán: Cho m t dãy n các ph n t a1, a2,…, an. Hãy ñ m xem trong dãy có bao nhiêu ph n t tho mãn ñi u ki n nào ñó. M t cách t nhiên thì ñ gi i bài toán trên, ta th c hi n duy t qua t ng ph n t . V i m i ph n t tho mãn ñi u ki n thì tăng bi n ñ m lên m t ñơn v . Thu t toán Bư c 1. Xác ñ nh n và các 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 mãn ñi u ki n bài toán không? N u tho mãn thì tăng bi n ñ m lên m t ñơn v . N u không tho mãn thì duy t ph n t ti p theo. Mô t thu t toán b ng sơ ñ kh i
Begin

n

i = 1, 2, .., n

i = 1, 2, .., n Bt Lôgíc ai

S

ð
Dem = Dem +1

Dem = 0

Dem

End

Ví d 1: Cho m t dãy n s nguyên. ð m xem trong dãy có bao nhiêu s ch n. Thu t toán S d ng phương pháp ñ c t t nhiên mô t thu t toán 27

Giáo trình Tin h c ð i cương Bư c 1. Xác ñ nh n và các 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ì tăng bi n ñ m lên 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 toán
Begin

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 toán ñ m các s ch n trong m t dãy s 3.4.2 Bài toán tìm giá tr l n nh t, giá tr nh nh t Trong cu c s ng th c t , hàng ngày chúng ta luôn ph i ñi tìm giá tr l n nh t, nh nh t trong m t t p ph n t . Ví d như tìm ngư i có chi u cao cao nh t (th p nh t) trong l p; tìm sinh viên 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 toán gi i bài toán này và cài ñ t nó trên máy tính ñ máy gi i giúp chúng ta thì ñó th c s là m t ng d ng có ích. Bài toán c th ñư c phát bi u như sau: Bài toán: Cho m t dãy n s b t kỳ. Hãy tìm giá tr l n nh t (nh nh t) c a dãy s ñó. ð tìm giá tr l n nh t (nh nh t) c a các ph n t trong dãy. Ta th c hi n so sánh các ph n t trong dãy v i nhau s tìm ra ñư c giá tr mong mu n. Quá trình tìm ñư c th hi n b ng thu t toán sau ñây. Thu t toán S d ng phương pháp ñ c t t nhiên môt t thu t toán Bư c 1. Xác ñ nh n và các s a1, a2, …, an Bươc 2. S d ng Max lưu 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 các ph n t a2, a3, …, an. So sánh giá tr c a ph n t ai v i Max. N u ai > Max (i=2..n) thì gán giá tr c a ai cho Max (Max = ai). N u ai < Max thì chuy n xét ph n t ti p theo. Giá tr cu i cùng lưu trong Max chính là giá tr l n nh t c a dãy s . 28

Giáo trình Tin h c ð i cương S d ng sơ ñ kh i mô t thu t toán
Begin

Input: n

i = 2, 3,..., n

i = 1, 2, .., n Max<ai Input: ai

S

ð
Max = ai

Max = a1

Output: Max

End

Thu t toán tìm giá tr l n nh t c a m t dãy s . ð i v i bài toán tìm giá tr nh nh t cũng tương t , nhưng trong phép so sánh ta ph i thay d u “<” b ng d u “>” và thay tên Max thành Min ñ phù h p v i ý nghĩa c a k t qu lưu trong nó. M t s bài toán qui v bài toán tìm max, min Bài 1. Cho t a ñ c a m t dãy n ñi m { xi , yi }i =1 trong m t ph ng. Tìm di n tích ñư ng tròn tâm O(0,0) có bán kính nh nh t ch a n ñi m trên.
n

G i ý: Bài toán này qui v bài toán tìm Max Bài 2. Cho t a ñ c a m t dãy n ñi m { xi , yi }i =1 trong m t ph ng. Tìm hình ch nh t có di n tích nh nh t và các c nh song song v i các tr c to ñ ch a n ñi m trên.
n

G i ý: Bài toán này qui v bài toán tìm c Min và Max.

3.4.3 Bài toán tính t ng m t dãy s Bài toán: Cho 1 dãy n s . Tính t ng t t c các ph n t c a dãy. Thu t toán S d ng phương pháp ñ c t t nhiên mô t thu t toán
Bư c 1. Xác ñ nh n, a1, a2, …, an Bư c 2 .Kh i t o S = 0 Bư c 3. Duy t qua t ng ph n t c a dãy s . V i ph n t ai c a dãy th c hi n S = S + ai. Sau khi duy t qua h t các ph n t ta ñư c t ng c a dãy lưu trong S.

S d ng sơ ñ kh i mô t thu t toán 29

.Giáo trình Tin h c ð i cương Begin Input: n i = 1... Tính S = ex + 1 + x2 1 + xn 1+ x + +…+ 2 3 n +1 Ví d 2: Cho x là s th c. Mn. 2. n là s nguyên dương... Tính ñ dài ñư ng g p khúc l n lư t ñi qua các ñi m trên theo th t t M1 ñ n Mn ? 30 . . 2. n Input: ai S = S + ai S=0 Output: S End M t s bài toán qui v bài toán tính t ng Bài 1.. Tính S = | x+ (1+x)3 + (2+x)3 + … +(n+x)3| Ví d 3: Cho x là s th c... + (−1) n 1! 2! n! Ví d 4: Cho x là s th c. n là s nguyên dương. + 2! n! Ví d 5: Cho n ñi m trên m t ph ng t a ñ ð các xOy: M1. n là s nguyên dương.. Tính giá tr c a ña th c Pn(x) = a0 + a1x + a2x2 + … +anxn n Bài 2. i ) ) i =1 Ví d 1: Cho x là s th c. n là s nguyên dương. Tính s = 2006 − x +1 x + 2 x+n + − ... n i = 1. M2. Tính S = 2006 + x + x2 xn + . Tính t ng theo công th c (công th c t ng quát d ng S = f(x) + ∑ g ( x.. .

4 Bài toán tính tích m t dãy s Bài toán: Cho 1 dãy n s . s t nhiên n. Tính S = n! Bài 2.9]? Bài 5: Cho dãy s th c x1. a2.4. xn. x2. Cho s t nhiên n. . Tuy nhiên khác v i thu t toán tính t ng là khi kh i gán cho ñ i lư ng lưu tr tích là 1 thay vì kh i gán 0 và thay phép + b ng phép * (nhân). Tính tích t t c các ph n t c a dãy. . Tìm giá tr l n nh t trong s các ph n t âm c a dãy? 31 .. Tìm ư c chung l n nh t c a 2 s ? Bài 3: Cho dãy s nguyên a1. an... Thu t toán tính tích c a m t dãy s cũng tương t như thu t toán tính t ng. Cho s th c x... Hãy ñ m xem có bao nhiêu b 3 ph n t liên ti p c a dãy theo th t t o thành c p s c ng? Bài 4: Cho dãy s th c x1. . Tính S = xn CÂU H I CHƯƠNG 3 V sơ ñ kh i th hi n thu t toán gi i các bài toán sau: Bài 1: Cho s nguyên dương n. xn.Giáo trình Tin h c ð i cương 3. Các bài toán qui v thu t toán tính tích Bài 1. x2. Hãy ki m tra xem n có là s nguyên t không? Bài 2: Cho 2 s nguyên dương m và n..... Hãy tính trung bình c ng các ph n t c a dãy có giá tr thu c ño n [-6..

Giáo trình Tin h c ð i cương PH N 2 NGÔN NG L P TRÌNH C 32 .

ti n l i. Các câu l nh ph c t p ñư c gi i thi u d n d n t d ñ n khó. h c sinh. cách bi u di n các giá tr d li u và cách t ch c (lưu tr ) d li u trong bi n và m ng. Trong quá trình phát tri n ñã xu t hi n nhi u phiên b n C khác nhau. Sau ñó C ñã nhanh chóng ñư c s d ng trên các máy tính PC. while. ñó là toán t r nhánh if. do . Chính vì v y C ñã ñư c ñưa vào gi ng d y cho t t c các khoa công ngh thông tin và nhi u khoa chuyên ngành k thu t khác. Trong ph n II này. Visual C++. cơ s d li u.. 33 . ðã có nhi u s n ph m ph m m m trong m i lĩnh v c vi t b ng C như h ñi u hành. Chương 4: trình bày cách t ch c chương trình thành các hàm. Các v n ñ hay và khó ñây là con tr và k thu t ñ quy. Chương 5: nói v m t ki u d li u quan tr ng là c u trúc (tương t như b n ghi c a Foxpro và Pascal) dùng ñ bi u di n các ñ i tư ng thư ng g p như thí sinh. các quy t c xây d ng và s d ng hàm..Giáo trình Tin h c ð i cương M t s gi i thi u m ñ u v Ngôn ng l p trình C Vào năm 1970 t m t ngôn ng cũ hơn g i là BCPL.. Chương 3: nói v m t l p toán t r t quan tr ng dùng ñ th hi n các thu t toán . các ng d ng x lý ñ ho . có các công c m nh ñ qu n lý b nh và các thi t b ngo i vi. Các v n ñ lý thuy t ñư c gi i thích t m và ñư c minh ho b ng nhi u ví d . Ph n II g m 5 chương và 02 ph l c Chương 1: ngoài vi c gi i thi u các khái ni m cơ b n còn ñưa ra m t s chương trình C ñơn gi n và cách th c hi n chúng trên máy ñ giúp ngư i ñ c mau chóng ti p c n v i máy tính.. Chương 2: trình bày các ki u d li u. C hi n ñang không ng ng phát tri n.while. . t C có th nghiên c u các ngôn ng tân ti n khác như C++. Thư ng m i l nh ñi u khi n có th vi t theo nhi u d ng. Dennis Ritchie và Brian Kernighan ñã ñưa ra ngôn ng C v i m c ñích ban ñ u là vi t H ñi u hành Unix trên máy mini DEC PDP-11.b chương trình d ch r t hi u qu . Ph l c 1: trình bày b ng mã ASCII. C là m t trong các ngôn ng l p trình c u trúc tiêu bi u có t c ñ x lý nhanh. Các ví d và bài t p s giúp ngư i ñ c luy n t p cách v n d ng các câu l nh ñ vi t chương trình. phi u xu t nh p v t tư. hoá ñơn bán hàng. ð ti n t i s th ng nh t. công văn ñi ñ n. Ph l c 2 gi i thi u hơn 200 hàm chu n c a C theo th t ABC ñ ti n tra c u.. giáo viên. ña phương ti n. nh ñó vi c dùng ngôn ng C tr nên d dàng hơn. Java. x lý văn b n. Năm 1987 hãng Borland ñã cung c p ph n m m Turbo C . và các toán t t o l p chu trình (vòng l p) for. C trên Windows. Trong vài năm g n ñây Trư ng ð i h c Giao thông V n t i ñã ñưa ngôn ng C vào gi ng d y trong chương trình Tin h c ð i cương. chúng tôi cung c p nh ng ki n th c cơ s c a Turbo C. năm 1990 ANSI [1] ñã xây d ng ngôn ng C chu n (ANSI C). m ng..

.2 T khóa T khóa là nh ng t ñư c ñ nh nghĩa trư c và có m t ý nghĩa hoàn toàn xác ñ nh.4ac Ký t ∆ không cho phép dùng trong ngôn ng C. ch th #include và nh ng qui t c c n lưu ý khi vi t chương trình. Các ký t ñư c nhóm l i theo nhi u cách khác nhau ñ l p lên các t . Ngôn ng C ñư c xây d ng trên b ký t sau: 26 ch cái hoa: A B C .. .M T S KHÁI NI M M ð U Chương này s gi i thi u nh ng thành ph n cơ b n c a ngôn ng l p trình C. ð c xong chương 1 b n có th l p ñư c m t s chương trình ñơn gi n. Ch ng h n khi gi i phương trình b c hai: ax2 + bx + c = 0 ta c n tính bi u th c: ∆ = b2 . các câu l nh vào ra.. vì v y ta ph i dùng m t cách ký hi u khác như d hay delta. ð có th l p ñư c m t chương trình ñ y ñ ... Ngoài ra ñ giúp b n ñ c mau chóng ti p c n v i máy. Sau ñây là các t khóa c a TURBO C: asm char do break const double case continue else 34 cdecl default enum ...) Các ký hi u ñ c bi t khác như: .0 và Turbo C++ 3.* / = ( ) Ký t g ch n i: _ ( chú ý: phân bi t v i d u ..: [] {} ?! \ & | % # $ . bi t cách th c hi n chương trình trên môi trư ng Turbo C 2. z 10 ch s : 0 1 2 . Chú ý: Khi vi t chương trình ta không ñư c s d ng b t kỳ ký hi u nào khác ngoài t p các ký t nói trên. các t l i ñư c liên k t theo m t qui t c nào ñó ñ t o thành các câu l nh. Ví d HA NOI g m 6 ký t . ñ vi t các toán t và các câu l nh.1 T p ký t M i ngôn ng l p trình ñ u ñư c xây d ng t m t b ký t nào ñó. ñó là: t p ký t .Giáo trình Tin h c ð i cương CHƯƠNG 1 .. t khóa và tên. chúng tôi s trình bày ñôi ñi u v câu l nh gán. 9 Các ký hi u toán h c như: + . Chúng thư ng ñư c s d ng ñ khai báo các ki u d li u. D u cách (space) th c s là m t kho ng tr ng dùng ñ tách các t . Z 26 ch cái thư ng: a b c .0 1. T t c nh ng ñi u nói trên là b ích và ñáng ghi nh vì chúng s ñư c thư ng xuyên s d ng sau này. 1. ð n lư t mình. . chúng tôi s gi i thi u vài chương trình ñơn gi n nhưng hoàn ch nh và cách v n hành chúng trên máy ñ nh n ñư c k t qu cu i cùng. M t chương trình bao g m nhi u câu l nh và di n ñ t m t thu t toán ñ gi i m t bài toán nào ñó. còn HANOI g m 5 ký t .

ð dài c c ñ i c a tên ñ i v i môi trư ng Turbo C m c ñ nh là 32 ký t . ð i v i bi n th c (ki u float) ta dùng t khoá float.4 M t s khái ni m 1. nó dùng ñ xác ñ nh các ñ i tư ng khác nhau trong m t chương trình. Ký t ñ u c a tên không ñư c là s . M i bi n trư c khi s d ng ñ u ph i khai báo ñ xác ñ nh ki u c a nó. T khóa ph i ñư c vi t b ng ch thư ng. ch hoa và ch thư ng ñư c xem là khác nhau. tên c u trúc. tên bi n. Các ví d ñúng v tên: a_1 BETA x1 delta_7 _x1 Các ví d sai v tên: 3XYZ_7 (Ký t ñ u tiên là s ) r#3 (s d ng ký t # ) f(x) (s d ng các d u ngo c tròn) case (trùng v i t khóa ) be ta (s d ng kho ng tr ng) X-1 (s d ng d u g ch ngang) Chú ý: Trong các tên. Vi c ñ t tên ph i tuân theo m t s quy t c: tên là m t dãy các ký t có th g m ch . Chúng ta có tên h ng. V n ñ khai báo s nói k trong chương 2. tên nhãn. bi n. như v y tên AB khác tên ab.1 Bi n Bi n là ñ i lư ng dùng ñ ch a (lưu tr ) các giá tr trong quá trình tính toán. m ng.4.. Ví d : 35 . Ch ng h n không ñư c vi t iNT mà ph i vi t int.. Có th hi u khái ni m bi n ñây gi ng như khái ni m bi n trong toán h c.. tên con tr .Giáo trình Tin h c ð i cương extern goto interrupt register sizeof typedef volatile far huge long return static union while các m c sau. tên hàm. 1. s và d u g ch n i.. ð khai báo các bi n nguyên (ki u int) ta dùng t khoá int. ñây chúng ta ch c n bi t vài ñi u sơ lư c. 1.. tên m ng. Tên không ñư c trùng v i t khóa (xem 1. .3 Tên Tên là m t khái ni m r t quan tr ng. float if near short struct unsigned for int pascal signed switch void Ý nghĩa và cách s d ng c a chúng s ñư c l n lư t gi i thi u c n nh hai ñi u: - ñây ch Không ñư c dùng t khóa ñ ñ t tên cho các h ng.2). hàm.

4. nó có th ñư c vi t trên m t ho c nhi u dòng nhưng ph i k t thúc b ng d u. 1.b.4. } Chú ý: V m t cú pháp. bi n x s nh n giá tr là 18. 1.4. ví d : { int a. Kh i l nh là m t dãy các câu l nh ñư c bao b i c p d u { và }.Giáo trình Tin h c ð i cương int a. /* khai báo các bi n x. b.b. C xem m t kh i l nh cũng như m t câu l nh riêng l . b=3. Tác d ng c a câu l nh này là: trư c tiên tính bi u th c bt và sau ñó gán giá tr tính ñư c cho bi n b.5. Nói cách khác ch nào vi t ñư c m t câu l nh thì ñó cũng có quy n ñ t m t kh i l nh.y. Ví d : Sau khi th c hi n ño n chương trình: float x. b = bt. printf("Hello"). ð c gi có th hi u ñơn gi n như sau: bi n là các ñ i lư ng dùng ñ lưu tr s li u. c ki u int */ float x. 2. m ng là 36 . Khai báo ñ u kh i l nh ñ u c a m t hàm.5. printf ("\n%6d%6d". Ví d : clsrcr(). /* khai báo các bi n a.4. Khái ni m này s ñư c ñ c p chi ti t trong 2.c[50]. a=2. m ng(1) có th ñ t l nh.2.5.c.y. (1) Các khái ni m này ñư c trình bày t p h p c a nhi u bi n.z. x = 10.2. còn bt là m t bi u th c toán h c nào ñó. 2.2 H ng H ng là các ñ i l ong có giá tr không ñ i trong chương trình. 1. Ví d : { int a. Chú ý: khái ni m gán không gi ng như khái ni m ñ ng th c trong toán h c.b).z ki u float */ S khác nhau gi a bi n ki u int và bi n ki u float là ch : bi n ki u int luôn luôn nh n giá tr nguyên trong quá trình tính toán còn bi n ki u float có th nh n c các giá tr là các s th c.a.b.4 Câu l nh và kh i l nh M i câu l nh th c hi n 1 ch c năng (công vi c) nào ñó. ñây ta có th hi u toán t gán có d ng: Trong ñó b là m t bi n.3.3 Toán t gán Câu l nh gán s nói k trong chương 2. x = 2*x . ho c có th vi t ñ u kh i Các khai báo bi n.

T ñó có th rút ra m t s k t lu n sau: Giá tr c a m t bi n hay m t m ng khai báo bên trong m t kh i l nh không th ñưa ra ñ s d ng b t kỳ ch nào bên ngoài kh i l nh ñó.t[20][30].y. { int a=4.Giáo trình Tin h c ð i cương float x. cùng in ra giá tr c a a. T bên ngoài m t kh i l nh. ngoài và m t kh i l nh bên trong. do ñó l nh printf bên trong s in giá tr c a bi n a kh i l nh bên trong. nhưng là hai bi n a khác nhau. z=b*x. ngoài các câu l nh. không th can thi p ñ n các bi n và các m ng ñư c khai báo bên trong kh i l nh. y=a*x. S các kh i l nh l ng nhau là không h n ch . Trên nhi u dòng. k t qu ñưa ra s là: a = 4 a = 5 Bi n a bên trong trùng tên v i bi n a bên ngoài. b = 5. bi n a bên trong ñã “che”2 bi n a bên ngoài. m t khi ñó hai bi n ñó là hai bi n ñ c l p cùng tên. hay nói cách khác.4. a = 3.7. printf ("a = %d\n".2f".z. 2 Bi n a bên trong ñư c ưu tiên hơn so v i bi n a bên ngoài. printf ("\ny=%8. và s m t ñi khi k t thúc kh i l nh. Các bi n ch t n t i trong kh i l nh mà bi n ñư c khai báo.z).2f\nz=%8. } S l ng nhau c a các kh i l nh Bên trong m t kh i l nh l i có th vi t các kh i l nh khác. ta có th ñưa thêm vào các l i chú thích. 1. nó ch có tác d ng ñ i v i ngư i ñ c chương trình. 37 . } ðo n chương trình trên có hai l nh printf gi ng nhau. Các l i gi i thích c n ñư c ñ t gi a d u /* và d u */ và có th ñư c vi t: Trên m t dòng. } printf("a = %d\n". a). Các chú thích này không nh hư ng ñ n k t qu h at ñ ng c a chương trình. Ví d xét ño n chương trình: { int a=5. Ph m vi ho t ñ ng c a các bi n và m ng Khi g p khai báo c a bi n và m ng. kh i l nh bên trong. máy s c p phát b nh cho bi n và m ng.y. a). V các kh i l nh l ng nhau Ta có th khai báo hai bi n ho c hàm cùng tên. x = 5.5 Chú thích Trong m t chương trình.

&r). Ví d : clrscr(). Chương trình dư i ñây tính chu vi và di n tích hình tròn theo giá tr bán kính r nh p t bàn phím. printf(“Hello”). /* Xu ng dòng và in: LAM QUEN VOI BAN */ printf("\nLAM QUEN VOI BAN"). Ví d 2.cv. Ph n chú thích s b t ñ u t d u // ñ n cu i dòng. /* Nh p m t giá tr th c ñưa vào bi n r */ scanf("%f".0 ta có th dùng d u // ñ chú thích. Câu l nh printf trong b n 2 in ñư c hai dòng. /* Chương trình in hai dòng ch .h" void main () /* hàm chính */ { /* Xu ng dòng. getch().h> void main () /* hàm chính */ { /* Xu ng dòng (\n) và in: TURBO C HAN HANH */ printf("\nTURBO C HAN HANH"). in: TURBO C HAN HANH. /* Chương trình in 2 dòng ch .dt.h" /* s d ng thư vi n vào ra chu n */ #include "conio.h" /*S d ng thêm thư vi n các hàm toán h c*/ void main() { float r. /* T m d ng máy ñ xem k t qu */ } Nh n xét: M i c u l nh printf trong b n 1 in ñư c m t dòng. Trong TC 3. // xoá màn hình // in ra màn hình dòng ch Hello 1.B n 1 */ #include <stdio. /* Tính chu vi và diên tích hình tròn 38 . /* T m d ng máy ñ xem k t qu */ } Phiên b n sau ghép hai câu l nh printf thành m t câu l nh duy nh t. ti p t c xu ng dòng r i in: LAM QUEN VOI BAN */ printf("\nTURBO C HAN HANH\nLAM QUEN VOI BAN"). getch(). Ví d 1.Giáo trình Tin h c ð i cương Trên ph n còn l i c a m t dòng. #include "stdio.h> /* s d ng thư vi n vào ra chu n */ #include <conio.5 M t s chương trình ñơn gi n Dư i ñây là các ví d nh m minh ho c u trúc c a m t chương trình C. Vi t chương trình cho hi n lên màn hình hai dòng ch : TURBO C HAN HANH LAM QUEN VOI BAN Dư i ñây là hai chương trình cùng th c hi n yêu c u ñ ra. /* Khai báo 3 bi n th c */ /* ðưa ra man hình thông báo v yêu c u nh p s li u */ printf("\nBan kinh r= "). ð c gi d dàng hi u ñư c m i câu l nh qua các gi i thích vi t gi a các d u /* */.h" #include "math.h" #include "conio.B n 2 */ #include "stdio.

/* giua cac so co dat them cac ky tu khac */ printf("\na = %d. /* T m d ng máy ñ xem k t qu */ } Ví d 3: Tính x lu th a y.dt).85.cv.5 ta th y: + Câu l nh printf ñư c vi t trên 1 dòng. /* chuong trinh tinh x luy thua y */ #include "stdio.&y). y tu ban phim z=pow(x.6 M t s quy t c c n nh khi vi t chương trình Bây gi chúng ta v a gi i thích ñôi ñi u v ví d trên.d). /* In k t qu */ printf("\nChu vi=%10. y. /* giua cac so dua ra co nhung khoang trong */ printf("\n%d %f %d %f". // tinh z = x ^ y /* in ket qua tren 3 dong */ printf("\nx = %f\ny = %f\nz = %f". } Ví d 4: Minh ho kh năng ñưa ra /* chuong trinh minh hoa cac kha nang dua ra */ #include "stdio.a. v a rút ra m t s chú ý khi vi t chương trình.425.855000 -4685 123. getch().d). printf("\nChuc cac ban may man \n"). } K t qu th c hi n chương trình: Chuc cac ban may man Tong san luong hang nam tang 12 % 123-45.c.855. 39 . d = 123.y. b = %f. c = -4685.855000-4685123. // vao x.d.h" #include "math.t.t).h" void main() { int a.y). z).2f\nDien tich=%10.Giáo trình Tin h c ð i cương Dùng h ng M_PI (PI) ñã ñ nh nghĩa trong math. printf("Tong san luong hang nam tang %d %". scanf("%f%f". Quy t c ñ u tiên c n nh là: M i câu l nh có th vi t trên m t hay nhi u dòng nhưng ph i ñư c k t thúc b ng d u. float b. c = -4685.h */ cv = 2*M_PI*r.d). dt = M_PI*r*r.z.425000 a = 123.h" void main () { float x.&x. c=%d. x. d = 123.425000 123 -45.b. d=%f".43 1.2f". b = -45. t = 12.c. a = 123.b. /* giua cac so dua ra khong co khoang cach */ printf("\n%d%f%d%f". // khai bao ba bien kieu float printf("\n vao x va y "). a. b = -45.c.a.c.b. + Hai câu l nh gán ñ tính cv và dt ñư c vi t trên m t dòng. Nhìn vào ví d 2 c a 1.

Qui t c th tư nói v c u trúc c a m t chương trình. Ví d : printf("\nTURBO C HAN HANH\ \nLAM QUEN VOI BAN"). Trong chương trình trên có dùng hàm chu n printf. D ch và ch y chương trình.Trên m t dòng. Chúng ch có tác d ng ñ i v i ngư i ñ c. M t chương trình có th ch có m t hàm chính (main) như các ví d trên. ð báo cho TURBO C bi t m t chu i ký t v n còn ti p t c dòng dư i. vì v y ñ u chương trình c n vi t: #include "stdio. ðây là ph n vi c có tính ch t tác nghi p ít ñòi h i suy nghĩ và sáng t o hơn so v i công vi c l p trình. các m ng toàn c c n u có khai báo và xây d ng các hàm n u có void main() { . Quy t c th hai là quy t c vi t các l i gi i thích. ta ñ t thêm d u \ trư c khi xu ng dòng.. Tóm l i trư c khi s d ng m t hàm c n bi t nó n m trên t p nào và ph i dùng toán t #include ñ g n t p ñó vào t p chương trình c a ta. Quá trình v n hành m t chương trình trên máy tính bao g m các bư c cơ b n sau: T o t p chương trình g c ñuôi C và so n th o chương trình. . 40 . ho c có th thêm vài hàm khác.h" Ta cũng chú ý r ng: cu i dòng này không có d u . T i ñây ta có th xem c u trúc c a chương trình như sau: #include …… khai báo các bi n.7 Cách th c hi n các chương trình trên máy tính Ph n vi c còn l i sau khi ñã có chương trình là th c hi n chương trình trên máy tính ñ nh n k t qu cu i cùng.Trên ph n còn l i c a m t dòng.Trên nhi u dòng. Nh ng l i gi i thích không có tác d ng ñ i v i s làm vi c c a chương trình trên máy tính. Qui t c th ba là qui t c s d ng các hàm chu n. các l nh… } xây d ng các hàm ñã khai báo 1. Các l i gi i thích c n ñư c ñ t gi a d u /* và d u */ và có th ñư c vi t: .h (trong thư m c c a C). . như cu i m t câu l nh. ði u này s ñư c trình bày chi ti t trong chương 4. Hàm này có trong t p stdio.Giáo trình Tin h c ð i cương M t ñi m c n lưu ý ñây là cách vi t m t h ng xâu ký t (dãy ký t ñ t trong hai d u nháy kép) trên nhi u dòng.

t là các kho n ti n ñã lĩnh kỳ m t. BÀI T P CHƯƠNG 1 Bài 1. Debug và Break/Watch.Save) ñ ghi chương trình lên t p. ví d a/b = a:b). Dùng bàn phím ñ so n th o chương trình trong c a s này.0) . m c Run. sau ñó tính lk2 theo công th c trên. n là s ngày công trong tháng. sau ñó th c hi n chương trình trên máy (dùng d u * ñ bi u th phép nhân). sau ñó dùng phím F2 (ho c ch n File . Search. lk1 t bàn phím.0 (Turbo C 2. m c New ñ nh n c a s so n th o. 41 .0 ñã ñư c cài ñ t trong thư m c C:\TC++ So n th o chương trình: Vào môi trư ng c a TC++3. Th c hi n chương trình trên máy v i các s li u c th (dùng d u / ñ bi u th phép chia. Ch n menu File. m c Run.0 b ng cách kh i ñ ng t p TC.EXE trong thư m c C:\TC. Edit. Th c hi n chương trình trong TC++3. Compile.0 Gi s TC2. n. Bài 2. Khi ñó s nh n ñư c menu chính c a TC2. Run. Cho bi t lương kỳ hai c a cán b tính theo công th c: lk2 = bl * 540 *n − t 26 trong ñó bl là b c lương.Save) ñ ghi chương trình lên t p.0 g m các menu: File. D ch và ch y chương trình: B m ñ ng th i 2 phím Ctrl và F9. Chúng ta s th y trình t thao tác là r t ñơn gi n và tư ng t như nhau (ñ i v i TC2.0 và TC++3. Project.0 ñã ñư c cài ñ t trong thư m c C:\TC So n th o chương trình: Vào môi trư ng c a TC2. ho c ch n menu Run. Option. Window và Help.0 b ng cách kh i ñ ng t p TC. L p chương trình nh p bl. ð i chi u k t qu nêu trong sách v i k t qu nh n ñư c. Option. Run. Bài 3.EXE trong thư m c C:\TC++\BIN.0 (Turbo C++ 3.0 Gi s TC++3. D ch và ch y chương trình: B m ñ ng th i 2 phím Ctrl và F9. Th c hi n chương trình trong TC2.5 trên máy. Project. Khi ñó s nh n ñư c menu chính c a TC++3.0) và TC++3. ho c ch n menu Run. Compile.0 g m các menu: File. Dùng bàn phím ñ so n th o chương trình trong c a s này.Giáo trình Tin h c ð i cương Dư i ñây s trình bày cách s d ng các ph n m m TC2. Th c hi n các chương trình vi t trong m c 1. m c New ñ nh n c a s so n th o.0) ñ th c hi n chương trình. L p chương trình tính tích c a 4 s th c ñư c n p t bàn phím. sau ñó dùng phím F2 (ho c ch n File . Edit. Ch n menu File. Debug.

Kích c và ph m vi bi u di n c a chúng ñư c ch ra trong b ng dư i ñây: Ki u Ph m vi bi u di n S ch s có nghĩa 7-8 15-16 17-18 Kích thư c (byte) 4 8 10 float 3. Ph m vi bi u di n c a s double ñư c hi u theo nghĩa tương t . chúng ta s tìm hi u m t s ki u d li u cơ b n ñư c ñ nh nghĩa trong Turbo C. 2. double và long double. Các ki u s nguyên không d u ñư c thành l p b ng cách thêm t khoá unsigned vào trư c ki u s nguyên có d u tương ng.3 Bi u di n các ki u khác qua ki u cơ b n Ki u ký t 42 .1 Các ki u s nguyên Tuỳ t ng yêu c u c th mà chúng ta có th s d ng các ki u s nguyên có ph m vi bi u di n khác nhau.2 Các ki u s th c Ph m vi bi u di n 0 → 255 0 → 65535 0 → 4294967295 Kích thư c 1 byte 2 byte 4 byte Ki u s th c.4E-4932 → 1. B ng sau ch ra các ki u s nguyên không d u: Ki u unsigned char unsigned int unsigned long 2. B ng sau ch ra các ki u s nguyên và ph m vi bi u di n tương ng.7E+308 long double 3.1. Trong C cho phép s d ng ba ki u d u ph y ñ ng là float. hay ki u d u ph y ñ ng dùng ñ lưu các giá tr th c.4E-38 → 3.Giáo trình Tin h c ð i cương CHƯƠNG 2 . bi n ki u th c dùng ñ lưu các giá tr th c.1.CÁC KI U D LI U Ki u d li u c a m t bi n hay h ng là khái ni m ch d ng thông tin c a bi n hay h ng ñó. Ví d bi n có ki u nguyên dùng ñ lưu các giá tr nguyên.7E-308 → 1.4E+38. Ki u char int long ho c long int Ph m vi bi u di n -128 → 127 -32768 → 32767 -2147483648→2147483647 Kích thư c 1 byte 2 byte 4 byte Tương ng v i các ki u s nguyên có d u là các ki u s nguyên không d u. 2. 2.4E-38 ñ n 3.4E-38 ñư c xem b ng 0.1.4E+38 double 1.1 Các ki u d li u cơ b n Trong chương này.1E4932 Gi i thích: Máy có th lưu tr ñư c s ki u float có giá tr tuy t ñ i t 3. S có giá tr tuy t ñ i nh hơn 3. bao g m ki u nguyên và ki u th c.

2.Giáo trình Tin h c ð i cương ð bi u di n các ký t . H ng d u ph y ñ ng ñư c vi t theo hai cách: Cách 1 (d ng th p phân): S g m ph n nguyên. Các ký t này có th ñưa ra màn hình nhưng không in ñư c (b ng các l nh DOS). ph n b c là m t s nguyên. Ví d : 123. 2.0 Chú ý: Ph n nguyên ho c ph n th p phân có th v ng m t nhưng d u ch m không th thi u. có th phân thành 3 nhóm: Nhóm các ký t ñi u khi n có mã t 0 ñ n 31. Các ký t này có th ñưa ra màn hình và máy in. Các ký t nhóm này nói chung không hi n th ra màn hình. m i ký t ñư c bi u di n b ng m t s nguyên 8 bit. Cách 2 (d ng khoa h c hay d ng mũ): S ñư c tách thành 2 ph n là ñ nh tr và ph n b c. V i b ng mã ASCII3. 2. Hai ph n này cách nhau b i ký t e ho c E. các bi u th c có giá tr khác 0 là ñúng và ngư c l i các bi u th c có giá tr b ng 0 là sai. d u ch m th p phân và ph n th p phân.48 234. Dư i ñây trình bày cách bi u di n các h ng trong C.456E-4 0.34 15. ví d cho phép vi t: . ngư i ta dùng m t s nguyên lưu mã c a ký t ñó trong b ng mã.0) 3 ASCII: American Standard Code for Interchange Information. Ch ng h n ký t mã 13 dùng ñ chuy n con tr v ñ u dòng. Nhóm các ký t văn b n có mã t 32 ñ n 126.0123456) (bi u di n giá tr 120.1 H ng s th c (float và double) H ng s th c (h ng có giá tr th c) hay g i là H ng d u ph y ñ ng. b n ñ c tham kh o b ng mã này ph l c 1 43 .12E3 (bi u di n giá tr 0. Nhóm các ký t ñ ho có mã s t 127 ñ n 255. Ph n ñ nh tr là m t s nguyên ho c s th c d ng th p phân. ký t 10 chuy n con tr xu ng dòng dư i (trên cùng c t).2 H ng H ng là các ñ i lư ng mà giá tr c a nó không thay ñ i trong quá trình tính toán.35 -4563. - Ki u ñúng sai Trong TC quy ñ nh r ng. ví d : 214. Ví d : Ký t 0 1 2 A B a b - Mã ASCII 48 49 50 65 66 97 98 B ng mã ASCII g m 256 ký t .

Giáo trình Tin h c ð i cương -49.5 Bi u di n h ng nguyên trong h 16 H cơ s 16 c n 16 ký t ñ bi u di n các ch s . Ví d : 0345 là m t h ng nguyên h 8.2... Ví d : '9' tương ñương v i 57 44 . Ví d : 0xa9 .6 Bi u di n h ng nguyên d ng ký t Có th bi u di n m t giá tr nguyên trong kho ng t 0 ñ n 255 b ng m t ký t ñ t trong c p d u nháy ñơn. 2.3 H ng ki u long H ng ki u long ñư c bi u di n b ng cách thêm L ho c l vào cu i giá tr nguyên. Ví d : 4563946L và 4563946 là hai h ng ki u long có cùng giá tr . 0Xa9 . H ng bi u di n trong h 16 b t ñ u b ng 0x ho c 0X. Giá tr c a nó trong h 10 là 3*8*8 + 4*8 + 5 = 229 2. Ví d : -45 4007 635 . còn dùng các ký t t a (ho c A) ñ n f (ho c F) ñ bi u di n. Chú ý: phân bi t 125 và 125. 0xA9. trong h 10 là: 10*16 + 9 = 169 2.2. 0XA9 Các h ng trên cùng bi u di n m t giá tr .0.2 H ng s nguyên ki u int Là h ng s nguyên (h ng có giá tr nguyên) có giá tr trong kho ng t -32768 ñ n 32767.495) (bi u di n giá tr 100000000.5e-2 1e8 (bi u di n giá tr -0.2. vì v y ngoài các giá tr t 0 ñ n 9. khi ñó các ch s phía sau ph i n m trong kho ng t 0 ñ n 7.2.2.0 là h ng th c (d u ph y ñ ng). 2. Ví d : -4893L ho c -4893l M t s nguyên vư t ra ngoài mi n xác ñ nh c a int cũng ñư c xem là h ng ki u long.0) 2. khi ñó giá tr c a h ng b ng mã ASCII c a ký t ñó. H ng nguyên h 8 luôn luôn nh n giá tr dương.4 Bi u di n h ng nguyên trong h 8 Có th bi u di n các h ng s nguyên theo h cơ s 8 b ng cách ñ t s 0 ñ u. S 125 là h ng nguyên còn 125.

7 H ng xâu ký t H ng xâu ký t dùng ñ bi u di n m t dãy các ký t .1. bi n là ñ i lư ng dùng ñ lưu tr các giá tr trong quá trình tính toán. Vi c khai báo bi n ñư c th c hi n theo m u sau: 45 .1. Trong trư ng h p này. ví d s pi. Ký t ' " \ \n (chuy n dòng) \0 (null) Tab Backspace CR (v ñ u dòng) LF (sang trang) Chú ý: C n phân bi t 'a' và "a".141593 Khi ñã ñ t tên cho các h ng.3 Bi n 2. ngư i ta dùng cách bi u di n v i d u \. trong ñó các ký t ñư c ñ t trong hai d u nháy kép.4.Giáo trình Tin h c ð i cương 'a' tương ñương v i 97 ð bi u di n m t s h ng ñ c bi t.0f. s = PI*r*r. 2. ð ñ t tên cho h ng. giá tr c a nó có th ñư c thay ñ i trong quá trình chương trình th c hi n. và thay vì vi t tr c ti p h ng thì ta dùng tên c a h ng trong các bi u th c. 'a' là h ng nguyên ñư c lưu tr trong m t byte. ví d : "Ha noi" "Hai phong" "" /* xâu r ng */ Xâu ký t ñư c lưu tr trong máy dư i d ng m t m ng có các ph n t là các ký t riêng bi t. Trình biên d ch t ñ ng thêm ký t \0 vào cu i m i xâu (ký t \0 ñư c xem là d u hi u k t thúc c a m t xâu ký t ). chúng ta có th s d ng chúng trong các bi u th c. Ví d : #define MAX 1000 #define PI 3. Khai báo Như ñã ñ c p 1.2. chúng ta có th ñ t cho h ng ñó m t cái tên. dùng ch th #define. M i bi n c n ph i khai báo trư c khi s d ng.3. còn "a" là h ng xâu ký t ñư c lưu tr trong m t m ng hai ph n t : ph n t th nh t ch a mã ch a còn ph n t th hai ch a \0. 2. s.2. Tên bi n là tên m t vùng nh trên RAM ñ lưu tr d li u.8 ð t tên cho h ng M t s h ng có ý nghĩa ñ nh trư c. B ng sau ch ra cách bi u di n m t s h ng ñ c bi t: Cách vi t '\'' '\"' '\\' '\n' '\0' '\t' '\b' '\r' '\f' 2. ví d : float r. r = 5.

ð ch a m t d y s hay m t b ng s ta có th dùng nhi u bi n nhưng cách này không ti n l i. n u máy g p m t khai báo bi n nó s th c hi n vi c c p phát b nh cho bi n g m m t s byte liên ti p nhau tùy thu c vào ki u d li u c a bi n. Ví d : int a.1 Khái ni m v m ng.1.5 L y ñ a ch c a bi n M i bi n ñư c c p phát m t vùng nh g m m t s byte liên ti p.3. printf(“%d”. float e = -35. 46 .0. Như v y. b = 20. d = 40.4 C p phát b nh cho bi n Khi th c hi n chương trình. 2. ho c các ki u do ngư i l p trình t o ra trư c khi khai báo bi n. và v th c t hai cách này là tương ñương. cách khai báo M i bi n ch có th ch a m t giá tr . z .1.3. Vi c s d ng m ng là cách t t hơn nhi u trong nh ng trư ng h p như v y . bi n ki u float ñư c c p phát 4 byte b nh …. y. e = -35. } 2.0. float e.1.h> void main () { int a. c . như hàm scanf.t. d.3. Tên các bi n ñư c ñ t theo quy t c ñ t tên c a TC ñư c nêu trong 1. x = 23. t = 36. S hi u c a byte ñ u chính là ñ a ch c a bi n.”. t = 36. ngay sau tên bi n ta ñ t d u = và m t giá tr nào ñó thì ñây chính là cách v a khai báo v a kh i ñ u cho m t bi n.3. int d. x.1. d).2 V trí c a các khai báo bi n Các khai báo c n ñ t ngay sau d u { ñ u tiên c a thân hàm ho c c a kh i l nh và c n ñ ng trư c m i câu l nh khác. z. x = 23.4. Sau ñây là m t ví d sai v v trí c a khai báo #include <stdio. c. a = 35.1. Ki u d li u là các ki u ñã nêu trong 2.Giáo trình Tin h c ð i cương <ki u d li u> <danh_sách_tên_bi n>. /* V trí c a khai báo sai */ d = a * 2.4 M ng 2. 2. các bi n trong danh sách ñư c phân bi t nhau b i d u ph y “. sau m t câu l nh gán ch ng h n thì không ñư c khai báo n a . Ví d như bi n ki u int ñư c c p phát hai byte b nh . V y ñ ñ t ñư c ý ñ nh như ví d trên ta có th dùng các câu l nh: int a.3 Vi c kh i ñ u cho các bi n N u trong khai báo. ð a ch bi n dùng trong m t s hàm. ð nh n ñ a ch bi n ta dùng phép toán: & tên_bi n 2. y.d = 40.3. b = 20. T t nhiên ñi u này có th ñ t ñư c nh toán t gán. 2. b.

Giáo trình Tin h c ð i cương M ng có th hi u là m t t p h p nhi u ph n t có cùng m t ki u giá tr và có chung m t tên. M ng có 9 ph n t . M ng có 5 ph n t ñư c ñánh s như sau: x[0]. - ð i v i m ng th hai thì ki u là int. s chi u là m t. float x[5]. tên là b. Trong b nh . tên là y. Nói cách khác. 3 c t. x[3]. Khái ni m v ki u m ng và tên m ng cũng gi ng như khái ni m ki u bi n và tên bi n. kích thư c b ng 10.2 Ch s m ng 47 . kích thư c b ng 5. tên là a. Ta s gi i thích khái ni m s chi u và kích thư c m i chi u thông qua các ví d sau. s chi u là m t. x và y. các ph n t m ng có ñ a ch liên ti p nhau. 2. Kích thư c c a các chi u là 4 và 2. - ð i v i m ng th ba thì ki u là float. M ng có 8 ph n t . kích thư c c a m i chi u là 3. M ng c n ñư c khai báo ñ ñ nh rõ: Ki u m ng (int. float double. Các khai báo: int a[10].4. Có bao nhiêu ki u bi n thì cũng có b y nhiêu ki u m ng. x[1]. s chi u là 2. ñi u này ñã nói các m c trên. 2 c t. và m ng y có th bi u di n ñư c m t b ng s th c 3 dòng.. tên là x. các ph n t c a m ng hai chi u ñư c s p x p theo hàng. ) Tên m ng S chi u và kích thư c m i chi u. - ð i v i m ng th 4 thì ki u là float. x[2]. s xác ñ nh 4 m ng: a. y[3][3]. b. x[4] M i ph n t x[i] ch a ñư c m t giá tr ki u float và m ng x có th bi u di n ñư c m t dãy 5 s th c. M ng có 10 ph n t ñư c ñánh s như sau: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] M i ph n t a[i] ch a ñư c m t giá tr ki u int và m ng a có th bi u di n ñư c m t dãy 10 s nguyên. s chi u là 2.. Ý nghĩa c a chúng như sau: - ð i v i m ng th nh t thì ki u là int. Chú ý: Các ph n t c a m ng ñư c c p phát các kho ng nh liên ti p nhau trong b nh . chúng ñư c ñánh s và ñư c s p x p như sau: y[0][0] y[1][0] y[2][0] y[0][1] y[1][1] y[2][1] y[0][2] y[1][2] y[2][2] M i ph n t y[i][j] ch a ñư c m t giá tr ki u float. b[4][2]. M i ph n t m ng có vai trò như m t bi n và ch a ñư c m t giá tr . chúng ñư c ñánh s và ñư c s p x p như sau: b[0][0] b[1][0] b[2][0] b[3][0] b[0][1] b[1][1] b[2][1] b[3][1] M i ph n t b[i][j] ch a ñư c m t giá tr ki u int và m ng b có th bi u di n ñư c m t b ng s nguyên 4 dòng..

.4. ví d : 11/3 = 3 48 . s nguyên ñó là ph n nguyên c a thương s ). Khi ñó: a[j+i-1] b[j+i][2-i] x[j/i] y[i][j] là là là là a[2] b[3][0] x[0] y[2][1] Các cách vi t sau là sai: y[j] vì y là m ng hai chi u.). ph n t m ng và hàm cũng ñư c xem là bi u th c. Phép chia hai s nguyên s ch t c t ph n th p phân (k t qu c a phép chia 2 s nguyên là m t s nguyên. Bi u th c ñư c phân lo i theo ki u giá tr : nguyên và th c. M i bi u th c s có m t giá tr . b. ch c n hai ch s 2. H ng. M ng có t hai chi u tr lên ta nói m ng kèm s chi u (ví d m ng hai chi u.2 Phép toán s h c Các phép toán hai ngôi s h c là: Phép toán + * / % Ý nghĩa C ng Tr Nhân Chia L y ph n dư Ví d a+b a-b a*b a/b a%b Có phép toán m t ngôi . j là các bi n nguyên trong ñó i=2. Khi vi t bi u th c có th và nên dùng các d u ngo c tròn ñ th hi n ñúng trình t tính toán trong bi u th c. j=1. x. . Có m t vài h n ch trên các m ng nhi u chi u. Như v y máy s ch p nh n phép tính: &a[i] nhưng không ch p nh n phép tính &y[i][j] 2. Trong các m nh ñ logic. nhưng nói chung không cho phép l y ñ a ch ph n t m ng nhi u chi u. 2. bi n.1 Bi u th c Bi u th c là m t s k t h p gi a các phép toán và các toán h ng ñ di n ñ t m t công th c toán h c nào ñó.. Ch s c a m ng ph i có giá tr int không vư t quá kích thư c c a chi u tương ng. Trong C ñưa ra nhi u quan ni m m i v bi u th c như bi u th c gán. y ñã ñư c khai báo như trên và gi s i. c n hai ch s b[i][j][1] vì b là m ng hai chi u.5.5. bi u th c ñư c phân thành ñúng (giá tr khác không) và sai (giá tr b ng 0). Ch ng h n có th l y ñ a ch ph n t m ng m t chi u. Gi s a.3 L y ñ a ch ph n t m ng Dư i ñây khi nói m ng ta hi u là m ng m t chi u.5 Các phép toán trên các ki u 2. S ch s ph i b ng s chi u c a m ng. bi u th c ñi u ki n.ví d -(a+b) nhưng không có phép +.Giáo trình Tin h c ð i cương M t ph n t c th c a m ng ñư c xác ñ nh nh các ch s c a nó.

5. Ví d : 11%3 = 2 Các phép toán + và . Các phép so sánh có s ưu tiên th p hơn so v i các phép toán s h c. 2. Nói cách khác.Giáo trình Tin h c ð i cương Phép toán % cho ph n dư c a phép chia nguyên. trong trư ng h p trái l i.có cùng s ưu tiên. nên dùng các d u ngo c ñ tránh nh ng l i do ñ ưu tiên phép toán gây nên. Ba phép toán này l i có s th t ưu tiên nh hơn phép tr m t ngôi. cho nên bi u th c: i < n-1 ñư c hi u là: i < (n-1).4 Phép toán logic Cũng gi ng như các phép toán so sánh. Các phép toán so sánh cho trong b ng sau: Phép toán > >= < <= == != ý nghĩa Có l n hơn không ? Có l n hơn hay b ng không ? Có nh hơn không? Có nh hơn hay b ng không ? Có b ng nhau không? Có khác nhau không Ví d a>b 3>7 có giá tr 0 a>=b 8>=8 có giá tr 1 a<b 9<9 có giá tr 0 a<=b 3<=10 có giá tr 1 a==b 3==9 có giá tr 0 a!=b 3!=9 có giá tr 1 B n phép ñ u có cùng s ưu tiên. và nh hơn s ưu tiên c a * / và %. Nói chung.Trong C s d ng ba phép toán logic: Phép Ph ñ nh ! Phép Và (AND) && Phép Ho c (OR) || !a 0 1 a Khác không Khác không B ng không B ng không 49 b Khác không B ng không Khác không B ng không a&&b 1 0 0 0 a||b 1 1 1 0 Ý nghĩa c a chúng ñư c cho trong các b ng: A Khác không B ng không .5. nó không áp d ng ñư c cho các giá tr ki u float và double. hai phép sau có cùng s th t ưu tiên nhưng th p hơn s th t ưu tiên c a b n phép ñ u. các phép toán logic cho ta giá tr 1 (ñúng) ho c giá tr 0 (sai). Các phép toán s h c ñư c th c hi n t trái sang ph i. ví d : (a*a-b*b)/(x*x+y*y) 2. khi các ñi u ki n nêu ra là ñúng thì ta nh n ñư c giá tr 1.3 Các phép toán so sánh Phép toán so sánh cho ta ho c giá tr 1 (ñúng) ho c giá tr 0 (sai). Các phép toán s h c dùng ñ vi t các công th c toán h c. ta nh n ñư c giá tr 0.

chương 3 s có r t nhi u ví d v vi c s d ng các phép toán này 2. S khác nhau gi a --n và n-.có th ñ ng trư c ho c sau toán h ng. trong câu l nh return (chương 4). n có giá tr 4 D u phép toán ++ và -.5. Ch ng h n n u n ñang có giá tr b ng 5 thì: Sau phép tính ++n..Giáo trình Tin h c ð i cương Trong ñó a và b có th nguyên hay th c. toán t gi m -. s gán 5 cho x. ñ tăng hay gi m giá tr cho các bi n ñi u khi n. n có giá tr 6 Sau phép tính --n. while. 50 . Khi gán m t giá tr ki u này cho m t bi n (ho c ph n t m ng) ki u kia. s gán 6 cho x.6 có giá tr 0 Các phép toán so sánh và logic ñư c dùng ñ thi t l p ñi u ki n r nhánh trong toán t if và ñi u ki n k t thúc chu trình trong các toán t for. như v y có th vi t: ++n n++ --n n-S khác nhau c a ++n và n++ ch : Trong phép n++ thì n tăng sau khi giá tr c a nó ñã ñư c s d ng. còn trong phép ++n thì n ñư c tăng trư c khi nó ñư c s d ng. trong vi c truy n giá tr các tham s th c s cho các ñ i (chương 4)..6 Các phép toán tăng gi m C ñưa ra hai phép toán m t ngôi ñ tăng và gi m các bi n (nguyên và th c). while và do while. Toán t tăng ++ s c ng 1 vào toán h ng c a nó. còn câu l nh x = ++n.s tr ñi 1. ði u này x y ra trong toán t gán.5 Chuy n ki u Vi c chuy n ñ i ki u giá tr thư ng di n ra m t cách t ñ ng trong hai trư ng h p sau: Khi bi u th c g m các toán h ng khác ki u. Trong c hai trư ng h p n ñ u tr thành 6. Ngoài ra ta có th chuy n t m t ki u giá tr sang m t ki u b t kỳ mà ta mu n b ng phép ép ki u: (<Ki u d li u>) (<bi u th c>) Ví d : (float)(a+b) 2. R t nhi u ví d như v y có th tìm th y trong các chương sau.. Phép toán tăng gi m thư ng ñư c s d ng trong các toán t for. Ví d : 3>7 có giá tr 0 7>3 có giá tr 1 3 && 7 có giá tr 1 ! 15. Ví d : N u n b ng 5 thì câu l nh x = n++. Vi c ch n phương án này hay phương án khác là tùy thu c ng c nh.5.cũng như v y.

9 Th t ưu tiên các phép toán Các phép toán có ñ ưu tiên khác nhau. 2. 2. 2.Giáo trình Tin h c ð i cương Cu i cùng. vì vi c ñó có th d n ñ n các k t qu sai. a < b ? a : b). Giá tr c a bi u th c gán là giá tr ñư c gán.5. M t s d ng khác c a toán t gán. K t q a là b=5 và a=5. trong ñó v trái ñư c l p l i có th vi t g n hơn như sau: i += 2.5.7 Bi u th c ñi u ki n Bi u th c ñi u ki n là bi u th c có d ng: <bi u th c ki m tra> ? <bi u th c 1> : <bi u th c 2> Giá tr c a bi u th c ñi u ki n b ng giá tr c a bi u th c 1 n u bi u th c ki m tra ñúng (khác không) và b ng giá tr c a bi u th c 2 n u bi u th c ki m tra sai (b ng không).5. Bi u th c gán có th s d ng trong các phép toán và các câu l nh như các bi u th c khác. Ví d : printf("\n %8. N u ñ t d u . thì ñi u ñó có nghĩa là gán giá tr c a bi u th c b = 5 cho bi n a. vào sau bi u th c gán thì ta ñư c l nh gán: <bi n> = <bi u th c>. Ví d . ñưa ra giá tr nh nh t c a hai bi n th c a và b. Các bi u th c gán này có d ng: <bi n> <phép toán> = <bi u th c>. Th t ưu tiên c a các phép toán ñư c trình bày trong b ng sau. Ví d câu l nh: x = x*(y+3). 51 . ñi u này có nghĩa là trong cùng m t bi u th c m t s phép toán này ñư c th c hi n trư c m t s phép toán khác. m t ñi u c n lưu ý là không nên s d ng toán t tăng gi m quá tùy ti n trong các bi u th c. Trong ñó <phép toán> là m t phép toán hai ngôi.8 Câu l nh gán và bi u th c gán Bi u th c gán là bi u th c có d ng: <bi n> = <bi u th c> V trái c a bi u th c là m t bi n (hay ph n t m ng). v ph i là m t bi u th c. có th vi t thành: x *= y+3. Trong trư ng h p các bi u th c gán có d ng như: i = i+2. khi vi t a = b = 5.2f".

M i bi u th c c n ph i có m t ñ c t tương ng. ñây bt1. d li u ñư c ñưa vào thông qua bàn phím và k t qu ñư c ñưa ra màn hình.Giáo trình Tin h c ð i cương STT 1 2 3 4 5 6 7 8 9 10 11 Gi i thích: - Phép toán ( ) [] -> . 2.(type) sizeof * / % + < <= > >= == != && || ?: = += -= *= /= %= <<= >>= &= ^= |= . bt2. M t s ký t ñi u khi n ñư c ñ nh nghĩa trư c.. ð vi t bi u th c m t cách chính xác nên s d ng các d u ngo c tròn (ngo c ñơn).. Các ký t hi n th s ñư c ñưa ra gi ng như khi chúng xu t hi n khi n. Khi in ra màn hình..6 Nh p xu t d li u Nh p xu t d li u là cách chúng ta ñưa d li u vào chương trình và ñưa ra k t qu c a chương trình. . Các ký t dùng ñ mô t ki u cách ñưa ra c a các bi n. Trình t k t h p Trái qua ph i Ph i qua trái Trái qua ph i Trái qua ph i Trái qua ph i Trái qua ph i Trái qua ph i Trái qua ph i Ph i qua trái Ph i qua trái Trái qua ph i Các phép toán trên m t dòng có cùng th t ưu tiên. btn).. ði u này ch ra trong c t "Trình t k t h p". ta s g i chúng là các ñ c t . Các ký t hi n th . 2. btn là các bi u th c mà giá tr c a chúng c n ñư c ñưa ra màn hình. Trong chu i ñi u khi n.. các phép toán s ưu tiên cao hơn các phép toán hàng dư i. giá tr c a các bi u th c s ñư c thay th tương ng vào v trí các ñ c t . ví d ký t ñi u khi n xu ng dòng là \n. bt1. ho c các giá tr s b ng l nh printf..1 ðưa k t qu ra màn hình Có th ñưa ra màn hình m t dòng ch . ký t tab là \t. ðưa ra m t thông báo 52 . Thông thư ng. ! ~ & * . L nh printf có d ng: printf (<chu i ñi u khi n>. Sau ñây là m t s d ng thư ng dùng c a câu l nh printf.++ -. trong chu i ñi u Các ñ c t s ch ra cách mà giá tr c a các bi u th c s ñư c ñưa ra. hàng trên có ð i v i các phép toán cùng m c ưu tiên thì trình t tính toán có th t trái qua ph i hay ngư c l i. bt2. có th ch a: Ký t ñi u khi n. thư ng có d u \ phía trư c..6.

Ví d . Ví d . N i dung c a xâu s ñư c ñưa ra màn hình. printf(“Tong cua %d va %d la %d”. Câu l nh printf s thay th các ñ c t %d b ng giá tr các bi u th c tương ng theo th t ñưa vào. a. Tuy nhiên. i++) { a*= 2. printf("2 ^ %2d = %4d\n". i. b = 25. a = 1. a). giá tr c a a. trong m t s trư ng h p. Khi ñó trên màn hình s xu t hi n: Nhap he so da thuc: ðưa ra các giá tr nguyên Khi mu n ñưa ra các k t qu là các giá tr nguyên. ño n chương trình sau in ra giá tr các lu th a c a 2 theo d ng c t: #include <stdio. for (i = 1. ví d giá tr 10 c n hai v trí thì máy s dành ñúng hai v trí ñ in ra giá tr 10. m t câu hư ng d n.h> void main() { int i. ho c in các giá tr theo d ng c t. Ví d . m c dù s v trí c n thi t ñ in ra giá tr ñó có th nh hơn. ñ ñưa ra m t thông báo nh c ngư i dùng nh p vào h s c a ña th c. a. a + b). b. có th dùng l nh: printf(“\nNhap he so da thuc: ”). b. khi ñó ch c n ñưa vào chu i ñi u khi n không ch a các ñ c t . giá tr c a các bi u th c có bao nhiêu ch s thì b y nhiêu v trí trên màn hình ñư c s d ng ñ in giá tr . như in ra các giá tr c a m t ma tr n. Sau ñây chúng ta s xét m t s ví d ñ có th hi u ñư c ho t ñ ng c a ñ c t này. chúng ta dùng ñ c t %d. thì chúng ta c n dành m t s v trí nh t ñ nh cho m t giá tr . k t qu ñưa ra màn hình như sau: Tong cua 10 va 25 la 35 Trong ví d trên. i <= 10. ño n mã sau ñưa ra t ng c a hai s nguyên: int a. Trong ño n mã trên. } } K t qu ñưa ra như sau: 2 2 2 2 2 2 2 2 2 2 ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^ 9 ^ 10 = 2 = 4 = 8 = 16 = 32 = 64 = 128 = 256 = 512 = 1024 53 . b và a + b s l n lư t ñư c thay th vào các v trí %d trong chu i ñi u khi n. a = 10.Giáo trình Tin h c ð i cương ðôi khi chúng ta ch mu n ñưa ra m t thông báo.

ñôi khi ta không c n k t qu g m nhi u ch s th p phân như th . ví d như h và tên hay ñ a ch . printf("Dien tich hinh tron ban kinh %6. ðưa ra các giá tr th c ð ñưa ra các giá tr th c.193383 Tuy nhiên. nhưng không có ý ñ nh dành s n m t s v trí xác ñ nh. 3.14*r*r). fflush(stdin). K t qu là: Dien tich hinh tron ban kinh 2. r. } K t qu in ra là: Dien tich hinh tron ban kinh 2.19 M t trư ng h p n a là chúng ta v n mu n l y m t s lư ng ch s sau d u ph y nh t ñ nh. printf("Nhap ten ban: "). #include <stdio.h> void main() { float r. khi ñó trong ñ c t có th v ng m t s phía trư c d u ch m. 3.340000 la 17. máy s chu n b s v tr v a ñ cho giá tr ñó.Giáo trình Tin h c ð i cương Trong ví d trên. r = 2. Ví d sau tính di n tích c a m t hình tròn và ñưa k t qu ra màn hình. Sau ñây là câu l nh printf thư ng dùng nh t cho các bài d ng trên: printf("Dien tich hinh tron ban kinh %.h> void main() { char szHoTen[100]. #include <stdio. mà ch c n l y m t s lư ng ch s sau d u ph y nh t ñ nh. dùng ñ c t %s. Câu l nh printf sau s thay th cho câu l nh printf trong ño n mã trên ñ ñưa ra các k t qu l y hai ch s sau d u ph y. Trư ng h p giá tr c n in ra có s ch s l n hơn 4 v trí. } Khi ch y.34 la 17. ta ñã dành 2 v trí cho vi c in s mũ và dành 4 v trí ñ in ra các lu th a.2f\n". Ví d sau yêu c u nh p vào tên và in ra l i chào.14*r*r).34f.2f la %6. b t k các giá tr này b ng bao nhiêu. r.2f la %.14*r*r). printf("Xin chao %s". gets(szHoTen). 3. r. chúng ta dùng ñ c t %f. nh p vào m t tên và máy s in ra l i chào tương ng.34 la 17. printf("Dien tich hinh tron ban kinh %f la %f\n".19 ðưa ra các xâu ký t Khi mu n ñưa ra các giá tr là các xâu ký t . và dành 6 ký t cho vi c in ra m i giá tr . Nhap ten ban: Minh Quang Xin chao Minh Quang 54 . szHoTen). K t qu là: Dien tich hinh tron ban kinh 2.2f\n".

L nh gets có d ng: gets(<xâu ký t >) ñây. thì có th không nh p ñư c xâu do ký t return còn trong b ñ m. 25 -137 45.. -137. &f). Vi c ch ñ nh ñ r ng gi ng như ñ i v i trư ng h p s nguyên. m nh n giá tr -137 và f nh n giá tr 45. 25 -137 45. Ví d .6. n nh n giá tr 25. M t cách t ng quát câu l nh scanf có d ng: scanf("t1t2. b2. &b1. Vì v y ñ s d ng ñúng ñ n câu l nh gets.. Như v y s ñ c t b ng s bi n.3. nên thêm l nh fflush(stdin) trư c l nh gets trong m i trư ng h p. ta cũng có th dành s n ñ r ng cho giá tr in ra.&bk).&b2. bk là các bi n (ki u int và ki u float) còn t1. Trong ph n này... 2. n và m t bi n th c f. Trong chu i ñi u khi n ch nên ch a các ñ c t và các ñ c t nên vi t li n nhau.3 Cách 2: ð t c 3 giá tr trên m t dòng.. t2..Giáo trình Tin h c ð i cương V i ñ c t %s.. Nh p s nguyên.3 Sau khi nh p xong..tk". tk là các ñ c t tương ng. M i bi n ng v i m t ñ c t . s d ng trong các trư ng h p như in h tên theo c t. th c. Chú ý: N u trư c l nh gets mà có các l nh scanf.. &m. máy s d ng ñ ñ i thao tác viên vào s li u t bàn phím. 55 . Dùng ñ c t %d ñ i v i bi n nguyên và %f ñ i v i bi n th c. M t vài chú ý: Trong câu l nh scanf. xâu ký t là m t m ng ki u char. không dùng tên bi n như trong câu l nh printf mà dùng ñ a ch c a bi n b ng cách ñ t phép toán & trư c tên bi n. cách nhau b ng các d u cách. b ng cách nh n phím Enter sau m i s . 45. ñ làm s ch b ñ m (xóa h t các ký t còn trong ñó) trư c khi ñưa (nh p) giá tr m i.. Khi g p câu l nh này. chúng ta s tìm hi u cách nh p li u cho các bi n nguyên. có th dùng l nh gets. dùng l nh: scanf(“%d%d%f”.. s th c b ng scanf Câu l nh scanf có th dùng ñ nh p d li u cho các bi n nguyên. Trong ñó b1..3 cho hai bi n nguyên m. bi n th c và xâu ký t . Các giá tr c n ñư c phân cách nhau b i m t ho c vài kho ng tr ng ( ñây kho ng tr ng ñư c hi u là d u cách ho c d u xu ng dòng). &n.2 Nh p d li u t bàn phím Nh p d li u t bàn phím là m t cách thông d ng ñ n p giá tr cho các bi n ho c m ng. Thao tác viên có th s d ng m t trong các cách b m phím sau: Cách 1: M i giá tr trên m t dòng.. ñ vào 3 giá tr : 25. Nh p xâu ký t b ng gets ð nh p xâu ký t ..

pow – Tính x mũ y double pow(double x. s2 phân bi t ch thư ng và ch hoa int strcmp(char * s1. strcmp: so sánh 2 chu i s1.2 Hàm x lý chu i ký t Các hàm khai báo trong string. strcmpi: so sánh 2 chu i không phân bi t ch thư ng và ch hoa int strcmpi(char *s1. 2.6 56 .7. sqrt – Tính căn b c hai c a x double sqrt(double x) 2. T i ñây chúng tôi ch trích gi i thi u m t s ít các hàm thư ng dùng. cos – Tính cosine c a x double cos(double x) 4. char *sour) 4.7 M t s hàm thư ng dùng ð c gi xem chi ti t danh m c các hàm trong ph l c 2 c a bài gi ng. strlen: tính ñ dài c a chu i int strlen(char *s) hàm này tr v s nguyên là s ký t c a chu i s (ñ dài c a s) 6. log – Tính logarit cơ s t nhiên c a x double log(double x) 7.h ho c trong stdlib. N u hàm tr v giá tr 0 thì 2 chu i s1 và s2 là gi ng nhau. exp – Tính e mũ x double exp(double x) 5.Giáo trình Tin h c ð i cương 2.Tính logarit cơ s 10 c a x double log10(double x) 8. strrev: ñ o ngư c 1 chu i char * strrev( char *s) hàm này tr v chu i ñ o c a chu i s Các hàm strcmpi và strcpy s ñư c dùng trong các bài t p chương 6 m c 6. double y) 9. 2.h 1.1 Hàm toán h c Các hàm thu c thư vi n math. strcpy : sao chép chu i int strcpy(char *dest. abs – Tính giá tr tuy t ñ i c a s nguyên x int abs(int x). 2.h 1. char *s2) hàm này tr v 1 s nguyên là ñ l ch gi a ký t ñ u tiên c a 2 chu i.7. char *s2) hàm này ho t ñ ng gi ng hàm strcmp nhưng không phân bi t ch thư ng và ch hoa 3. labs-Tính giá tr tuy t ñ i c a s nguyên dài x long int labs(long int x) 3. fabs-Tính giá tr tuy t ñ i c a x double fabs(double x) 6. stricmp: gi ng hàm strcmpi 5.log10 . sin – Tính sine c a x double sin(double x) 10.

25e3. float b=5.2f. h ng long. h ng kí t . y=%10. d=%10d". } S a l i cho ñúng r i th c hi n trên máy. Bài 3. x.0f. -3456. a. } printf("\na=%10. Tìm các ch sai trong chương trình sau #include "stdio. b = 2. a[10] = 4. a[0] = 5. b. { float x = a*b. y). b=%10. } S a ch a b sung ñ ñư c m t chương trình hoàn ch nh sau ñó th c hi n trên máy. h ng xâu kí t ).h" void main() { printf("\na=%10. a[b] = 7.2f. Vi t chương trình in m t dòng v i n i dung sau: N = 365 B ng cách s d ng các lo i h ng khác nhau (h ng s d u ph y ñ ng. b=%10d.2f ". c=%10ld.3. x=%10.2f. Bài 2. 4635. Tìm các ch sai trong ño n chương trình float a[3]. Bài 4. y=a+b. h ng int h 16. h ng int. 57 . h ng int h 8.Giáo trình Tin h c ð i cương BÀI T P CHƯƠNG 2 Bài 1. 456398461). Tìm các ch sai trong ño n chương trình { int a = 6.

. M i nhánh c a l nh if là m t kh i l nh khác nhau.1 Nh c l i khái ni m v câu l nh và kh i l nh Trong C m i câu l nh có th vi t trên m t ho c nhi u dòng và ñư c k t thúc b ng d u ch m ph y. Xét v m t công d ng có th chia các l nh ñi u khi n thành ba nhóm chính: Nh y không ñi u ki n (goto) R nhánh (if. do ñó máy có th ñang t m t câu l nh này nh y t i th c hi n m t câu l nh khác trư c ho c sau nó. ðư ng ñi c a máy tr nên linh ho t hơn và nh v y ta có th vi t chương trình m t cách hi u qu hơn.do while) Ngoài ra còn có m t s l nh khác có ch c năng b tr như break. while.Giáo trình Tin h c ð i cương CHƯƠNG 3 . Kh i l nh tương ñương v i câu l nh riêng l v m t cú pháp. Nói cách khác có th xem câu l nh là trư ng h p riêng c a kh i l nh.. phong phú và m nh m . while. g i là bi u th c ñi u ki n. ñây ta ch nh c l i vài ñi u. Khi kh i l nh ch g m m t câu l nh thì có th b các d u ngo c nh n ñ u và cu i. Khái ni m v kh i l nh hay câu l nh h p thành ñã trình bày m c 1. Các l nh ñi u khi n cho phép thay ñ i tr t t nói trên. switch ) T ch c chu trình (for. 3. Không ñư c ñ t d u ch m ph y sau d u ngo c nh n k t thúc kh i. nhưng m i ñi u v n ñúng n u ta dùng "câu l nh" (vì câu l nh xem như trư ng h p riêng c a kh i l nh). 3. Nói cách khác.4. ta dùng thu t ng "kh i l nh". Chúng ta s th y các l nh ñi u khi n c a C có nh ng kh năng làm vi c r t linh ho t. L nh if L nh if cho phép l a ch n ñ th c hi n m t trong hai nhánh tùy thu c vào ñi u ki n ñúng (khác không) hay sai (b ng không) c a m t bi u th c. Chương này s gi i thi u cách vi t và các nguyên t c ho t ñ ng c a m t s l nh nêu trên. for. Kh i l nh là m t dãy các câu l nh ñ t trong các d u { }. Dư i ñây khi trình bày các l nh ñi u khi n như if. ch nào ñ t ñư c m t câu l nh thì ch ñó ta cũng có quy n vi t m t kh i l nh. T t c nh ng ñi u này ñư c gi i thích t m và ñư c minh h a rõ ràng trên nhi u chương trình hoàn ch nh ñã th nghi m trên máy.4. Thông thư ng các câu l nh ñư c th c hi n m t cách l n lư t theo th t mà chúng ñư c vi t ra. .1 Cú pháp c a if L nh if có hai d ng sau: D ng 1 if (<bi u th c ñi u ki n>) <kh i l nh> D ng 2 if (<bi u th c ñi u ki n>) 58 . 3.2.2.. continue.CÁC L NH ðI U KHI N M t chương trình bao g m nhi u câu l nh.

max ).h> void main() { float a.2 Ho t ñ ng c a if S ho t ñ ng c a l nh if d ng 1 Khi g p câu l nh này.2f\n max = %8.2f\nmax = %8.&a. a.2f\n b = %8. else max = b. N u bi u th c ñúng máy s th c hi n kh i l nh 1. sau ñó nh y t i các l nh vi t sau kh i l nh 2. S ho t ñ ng c a l nh if d ng 2 Trư c tiên máy s xác ñ nh giá tr c a bi u th c.3 S l ng nhau c a l nh if Các l nh if có th l ng nhau.max.h> void main() { float a. L nh if d ng 2 dùng khi mu n l a ch n m t trong hai kh i l nh ñ th c hi n. b. dung if dang 2 */ #include <stdio.b. N u bi u th c sai thì máy s không th c hi n kh i l nh 1 mà ch th c hi n kh i l nh 2 và sau ñó th c hi n các l nh vi t sau nó. 59 . max). printf("\nVao hai so a va b: "). máy s tính giá tr c a bi u th c. a./*gia tri cua a va b nhan tu ban phim */ if (a > b) max = a. ð tính giá tr l n nh t c a hai bi n a và b ta có th s d ng hai chương trình ng v i hai d ng khác nhau c a l nh if. bi u th c ñi u ki n có th là m t bi u th c b t kỳ. b. &b).&b). } 3.max.2.2f". L nh if d ng 1 dùng khi c n ki m tra ñi u ki n xem có hay không th c hi n m t kh i l nh nào ñó. dung if dang 1 */ #include <stdio.2. Ví d sau minh ho cho ho t ñ ng c a câu l nh if.b. printf("\na = %8. Các kh i l nh có th là m t câu l nh ñơn.2f"./*gia tri cua a va b nhan tu ban phim*/ max = a. scanf("%f%f". ði u ñó có nghĩa là: các 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 các l nh if khác. &a. /* Chuong trinh tinh max cua hai so thuc. khi ñó k t thúc câu l nh ph i có d u ch m ph y. scanf("%f%f". 3. if (b > max) max = b. N u bi u th c sai thì máy b qua kh i l nh và chuy n ñ n các l nh vi t sau nó.Giáo trình Tin h c ð i cương <kh i l nh 1> else <kh i l nh 2> Trong cú pháp trên. } /* Chuong trinh tinh max cua hai so thuc. N u bi u th c ñúng thì máy th c hi n kh i l nh và sau ñó th c hi n các l nh ti p theo. printf("\nVao hai so a va b: ").2f\nb = %8. printf("\na = %8.

h> #include <math. Có m t nguyên t c ñ xác ñ nh. } Chú ý: ñ i v i trư ng h p cu i cùng có th không c n if. b: "). 60 . b. &b)."). if (delta < 0) printf("Vo nghiem. } ð l a ch n m t trong nhi u trư ng h p. ði m ñ u và ñi m cu i c a m t kh i l nh cũng th ng c t."). b. &b. &a. (-b + sqrt(delta))/(2*a)). ñ tránh nh m l n. nên dùng c p ngo c {}. scanf("%f%f". b ng 0 và nh hơn 0. ñó là: m nh ñ else s ñư c g n v i if g n nh t trư c nó. Sau ñây là ví d gi i phương trình b c nh t ax + b = 0 s d ng if l ng nhau.4 Vi t chương trình theo c u trúc ví d trên. b. #include <stdio. #include <stdio. &c). ð chương trình rõ ràng. printf("Nhap a. if (a == 0) if (b == 0) printf("Vo so nghiem. Các câu l nh và kh i l nh cùng c p thì vi t trên cùng m t c t (th ng c t).h> void main() { float a. V i các trư ng h p này. như 3. ta nên vi t chương trình theo các quy t c sau: Các câu l nh và kh i l nh n m trong m t l nh ñi u khi n thì vi t lui vào bên ph i. delta.2. else printf("x = %f". c: ").4*a*c. delta = b*b . c. else //if (delta > 0) printf("x1 = %f\nx2 = %f". else if (delta == 0) printf("x = %f". -b/a). Tuy nhiên. else printf("Vo nghiem. printf("Nhap a.Giáo trình Tin h c ð i cương Trong trư ng h p có nhi u if và else. -b/(2*a)). câu l nh if – else vi t có ph n hơi khác bình thư ng. scanf("%f%f%f". v i chương trình gi i phương trình b c 2. thì m t v n ñ quan tr ng là chúng ta ph i xác ñ nh ñư c m nh ñ else nào thu c if nào. giá tr c a delta có th rơi vào các trư ng h p: l n hơn 0. b ng cách ñ t câu l nh if con n m cùng hàng v i else trư c ñó.h> void main() { float a."). Sau ñây là ví d gi i phương trình b c 2 s d ng if l ng nhau. d ki m tra và tránh nh m l n. Ví d . &a. ta có th dùng l nh if l ng nhau. (-b .sqrt(delta))/(2*a).

4 Chú ý r ng. t c là g m nhi u bi u th c cách nhau b i d u ph y. t i bư c 3. Th c hi n kh i l nh. Bư c 4. Bư c 3. 14. còn ñư c g i là ph n thân c a l nh for là kh i l nh c n th c hi n nhi u l n.6. Kh i l nh. 3. bi u th c kh i t o thư ng ñư c dùng ñ kh i t o giá tr cho các bi n ñi u khi n.3. void main() { int i.Giáo trình Tin h c ð i cương 3. j. int n = 5.5}. ngư c l i thoát kh i l nh for.2. nhưng v n ph i ñ các d u ch m ph y. Tính giá tr bi u th c tăng. <bi u th c tăng>) <kh i l nh> Trong cú pháp trên: for: t khoá c a l nh for. N u bi u th c ki m tra v ng m t thì nó ñư c xem là ñúng. <bi u th c ki m tra>. -45. bi u th c kh i t o. tính ñúng sai ñư c xác ñ nh theo bi u th c cu i cùng trong bi u th c ghép. /* Chuong trinh dao nguoc mot day so */ #include <stdio. 3. 70. Các bi u th c trong l nh for có th là m t bi u th c ghép. trong ph n thân c a for ph i có l nh nh y ra kh i for b ng các l nh break. L nh for thư ng dùng ñ gi i các bài toán có tính chu trình. Chú ý: - - 3. bi u th c ñây có th bao g m nhi u bi u th c con. v ma tr n. Bư c 2.3. float c.3 L nh for L nh for cho phép th c hi n m t kh i l nh m t s l n xác ñ nh.6. 3.3. sau ñó quay tr l i bư c 2. N u ñúng. ð tránh l p vô t n. - Thông thư ng. Các bi u th c4 này có th v ng m t.1.3 Ví d minh ho Ví d 1: ð o ngư c m t dãy s cho trư c. bi u th c tăng dùng ñ thay ñ i giá tr c a bi n ñi u khi n. Trong trư ng h p ñó. Tính giá tr c a bi u th c ki m tra. bi u th c ki m tra và bi u th c tăng b t bu c ph i ñư c trong c p ngo c tròn và cách nhau b i d u ch m ph y. Tính giá tr bi u th c kh i t o. return ho c goto. ví d như các bài toán v dãy s .h> float x[] = { 63. 61 .2 Ho t ñ ng c a for L nh for làm vi c theo các bư c sau: Bư c 1.1 Cú pháp c a for L nh for có d ng sau: for (<bi u th c kh i t o>.

2f".0. {34. for (i = 0.0.Giáo trình Tin h c ð i cương for(i = 0.0. i++) { printf("Phan tu thu %d: ".0. 6. { 1.2f va %. j = n . } Ví d 2: Chương trình dư i ñây gi i quy t bài toán tìm giá tr l n nh t và nh nh t trên m i hàng c a ma tr n.2f". i < n. printf("\nSo phan tu cua day: ").2f\n". i + 1.5. 46. i < 3. &n).1. i++) printf("%8.0. } Ví d 4: Chương trình dư i ñây s nh p m t ma tr n th c c p MxN sau ñó tính các t ng c t c a ma tr n. -25. 62 . -38. x[i]). i + 1). j. x[j] = c. scanf("%f". i++) printf(“%8. i < n. 35. j--) { c = x[i]. for (j = 0. i < n. i . min = a[i][0]. min. j < 4. for (i = 0. -13.h> float a[3][4] = { {15. 46.0.h> void main() { float a[100]. } printf("\nDay ket qua: \n"). i++. void main() { int i. i++) { max = a[i][0]. } printf("Gia tri lon nhat va nho nhat cot %d la %. } printf("Day so vua nhap:\n"). min).0} . #include <stdio. for(i = 0. } } Ví d 3: Chương trình nh p m t dãy s và in ra màn hình dãy v a nh p. if (min > a[i][j]) min = a[i][j]. i < j. int n. float max.0. j++) { if (max < a[i][j]) max = a[i][j]. a[i]). &a[i]).0.0}}. Trong chương trình s d ng các chu trình l ng nhau. x[i] = x[j]. 3. for (i = 0. scanf("%d".3}. #include <stdio. max. 0.

++i) tc += a[i][j] . 3. j. Kh i l nh. ngư c l i thoát kh i l nh while. còn g i là ph n thân c a while. Bi u th c ki m tra: b t bu c ph i ñ t trong c p ngo c tròn. sang bư c 2. scanf("%d%d". là kh i l nh c n th c hi n nhi u l n. 3. for (i = 1.2 Ho t ñ ng c a while. j <= n. tc. 63 . &m. j++) { tc = 0. 5 Cũng gi ng như trong câu l nh for.1f". &n). &tg). } /* Tinh tong cot */ for (j = 1. i. for (i = 1.h> #include <conio. j++) { printf("a[%d][%d] = ". i.1 Cú pháp c a while Cú pháp c a while có d ng: while (<bi u th c ki m tra5>) <kh i l nh> Trong cú pháp trên: while: t khoá c a l nh while. L nh while làm vi c theo các bư c sau: Bư c 1: Tính giá tr c a bi u th c ki m tra. Thông thư ng while s d ng trong các trư ng h p mà s l n l p không xác ñ nh trư c. n. Bư c 2: Th c hi n kh i l nh.4. scanf("%f". i++) for (j = 1. printf ("\nTong cot %d = %. bi u th c ki m tra ñây có th là m t dãy nhi u bi u th c. j). } } 3. int m. printf("\nNhap so hang va so cot cua ma tran: "). tc).4. i<= m.4 L nh while L nh while cho phép th c hi n m t kh i l nh nhi u l n. i <= m. a[i][j] = tg . Nh n xét: Thân c a while có th ñư c th c hi n m t l n ho c nhi u l n và cũng có th không ñư c th c hi n l n nào n u ngay t ñ u bi u th c ki m tra ñã sai.Giáo trình Tin h c ð i cương #include <stdio. tg. j <= n.h> void main() { float a[20][20]. N u bi u th c ñúng. sau ñó quay tr l i bư c 1. j.

i += 1. float y[] = {2. while ((i < n) && (a[i] >= 0)) i++. int n.2f".. s). /* Chương trinh tinh tich vo huong */ #include <stdio.0. #include <stdio. Bi u th c ki m tra có th là m t bi u th c ghép. if (i < n) printf("Phan tu am a[%d] = %d".0}.Giáo trình Tin h c ð i cương Chú ý: - ð tránh l p vô t n. i = 0. printf("\nN = %d". 8. s = 0. 3. a[i]). 3. } Ví d 3: Tìm ph n t âm ñ u tiên trong m t dãy s nguyên. i. + n > 1000. -5. int i.0.6. Tính ñúng sai ñư c xác ñ nh d a vào bi u th c cu i cùng trong dãy.2.5}. void main() { float s. n. n = 6. void main() { int i. t c là g m m t dãy các bi u th c cách nhau b i d u ph y.. n). 7. while (s <= 1000) s += ++n. while (i < 4) { s += x[i]*y[i].0. 27}.h> void main() { float s. 64 . 3. trong ph n thân c a while c n có l nh làm thay ñ i giá tr bi u th c ki m tra và c n ñ m b o t i m t lúc nào ñó thì bi u th c ki m tra s sai.h> int a[] = {2. s = 0. #include <stdio.h> float x[] = {4.3 Ví d minh ho Ví d 1: Tính tích vô hư ng c a hai véc tơ x và y. 6. } printf("\nTich vo huong = %. 4.4. 34. } Ví d 2: Chương trình dư i ñây s tìm s nguyên dương n nh nh t sao cho: 1 + 2 + .0. n = 0. i = 0. 16. 43.

thoát kh i l nh do – while. vi c ki m tra ñi u ki n k t thúc ñ t ñ u chu trình. Thu t toán trên ñư c chương trình hoá như sau. do { c = x. Kh i l nh.2 Ho t ñ ng c a do while L nh do – while th c hi n như sau: Bư c 1: Th c hi n kh i l nh. x = (x*x + a)/(2*x). /* Chuong trinh tinh can bac hai */ #include <stdio. Bư c 2: Tính giá tr bi u th c ki m tra. v i n>=0 Quá trình l p k t thúc khi | (x(n+1) . trong chu trình do while vi c ki m tra ñi u ki n k t thúc ñ t cu i chu trình. còn g i là ph n thân c a do – while là kh i l nh c n th c hi n nhi u l n.h> #include <math. Như v y thân c a chu trình bao gi cũng ñư c th c hi n ít nh t m t l n. x. 65 . 3. N u ñúng. thu t toán như sau: x(0) = a x(n+1) = ( x(n)*x(n) + a ) / ( 2*x(n) ) .5.while có d ng sau: do <kh i l nh> while (<bi u th c ki m tra>). scanf("%f"."). x = a.5.5. Bi u th c ki m tra ph i ñ t trong c p ngo c tròn (ngo c ñơn). 3.Giáo trình Tin h c ð i cương else printf("Khong co phan tu am. Khác v i hai l nh trên.1 Cú pháp c a do – while L nh do .while Trong các l nh while và for. while là các t khoá c a l nh do – while. 3. printf("\na = ").h> void main() { double a.5 L nh do .x(n)) / x(n)| < 0. Trong cú pháp trên: do. c. &a). ngư c l i. } 3.00001 Khi ñó x(n+1) ñư c xem là giá tr g n ñúng c a căn a. quay tr l i bư c 1.3 Ví d minh ho Ví d : Tính căn b c hai c a m t s nguyên a.

j. 46. /* ra khoi for j */ if ( j < 4) break. 46.1 Cú pháp c a break L nh break có d ng sau: break. {34. j < 4. 6.3 Ví d minh ho Chương trình tìm ph n t âm ñ u tiên c a m t ma tr n dư i ñây s minh h a cách s d ng các chu trình l ng nhau và cách dùng break ñ ra kh i chu trình.6. d ng l p và thoát ra kh i l nh l p.0. Khi có nhi u l nh l p l ng nhau. trong m t vài trư ng h p. 3. while hay do – while các ví d trên.5. 3.0}}.7 L nh continue L nh continue dùng ñ b t ñ u l i m t chu trình. Ghi chú: L nh break có th ñư c ñ t b t c ñâu trong thân c a các l nh l p. 3. /* ra khoi for i */ } if ((i < 3)&&(j < 4)) printf("\nPhan tu am dau tien la a(%d. -25. ñi u ki n thoát ra kh i các vòng l p này là bi u th c ki m tra sai. } 3. -13. i++) { for (j = 0. 66 .0. 0.6. a[i][j]). 3. -38. } 3.0.h> float a[3][4] = { {15.0."). void main() { int i. máy s b qua các l nh còn l i trong ph n thân c a l nh l p. 35.6 L nh break Khi s d ng các l nh l p như for. /* Chuong trinh tim phan tu am dau tien cua ma tran dùng break */ #include <stdio.0} . x).0. l nh break ch thoát ra kh i l nh l p trong cùng ch a nó.6. khi ñó có th s d ng l nh break.2 Ho t ñ ng c a break Khi g p break.0.0. Tuy nhiên.0. { 1. else printf("\nMa tran khong co phan tu am. i + 1. a. printf("Can bac hai cua %. for (i = 0.4f". ta mu n thoát ra kh i các vòng l p này ngay t c th i.%d) = %. j++) if (a[i][j] < 0) break. i < 3. j + 1.3}.Giáo trình Tin h c ð i cương } while (fabs((x-c)/c) >= 1e-5).2f".4f la %.

0. máy s b qua các l nh còn l i trong ph n thân c a l nh l p và quay l i b t ñ u vòng l p m i. { -6.2f".1 Cú pháp c a continue L nh continue có d ng: continue. void main() { int i. vi t chương trình ñ t m t ma tr n a cho trư c: Tính t ng các ph n t dương c a a.0. printf("\nTong cac phan tu duong la: %. -4.0. tongD).2f". printf("\nMax cac phan tu duong la: %. Tìm giá tr l n nh t c a các ph n t dương c a A.0. l nh continue ch có tác d ng ñ i v i l nh l p trong cùng. ð i v i while và do – while. i < 3.0. Ghi chú: L nh continue ch s d ng trong các l nh l p. j++) { if(a[i][j] <= 0) continue.7. j.0. tongD = 0.0. vòng l p m i b t ñ u t bư c tính bi u th c ki m tra.h> float a[][4] = { { 25. demD). ++demD. 3. for (i = 0. vòng l p m i b t ñ u t bư c tính bi u th c tăng.0. { 30. -2. ð i v i for. maxD).0}. if (maxD < a[i][j]) maxD = a[i][j]. maxD = 0. 5. 4. } printf("\nSo phan tu duong la: %d". -3. Khi có nhi u l nh l p l ng nhau.7. -3.Giáo trình Tin h c ð i cương 3. 0. j < 4. L nh continue có th ñ t b t c ñâu trong ph n thân c a l nh l p. i++) for(j = 0.7. #include <stdio.0}}. demD.0}.3 Ví d minh ho Cho ma tr n a. float tongD. tongD += a[i][j]. 7. } 67 . maxD. demD = 0. 0. 3.2 Ho t ñ ng c a continue Khi g p continue.0. Xác ñ nh s ph n t dương c a a.

.00001 n! Bài 4.. Bài 3.bi.... L p chương trình tính ex theo công th c x p x x x2 xn e x = 1+ + + .ci. m i dòng g m m s (dòng cu i cùng có th ít hơn). Bài 12.di) Bài 6. c. + ( −1) n 3! 5! ( 2 n − 1)! Bài 5... Yêu c u xét t t c các trư ng h p có th .. L p chương trình tính sin(x) v i ñ chính xác 0... cn. b1.. d1..bm.. L p chương trình gi i h phương trình: ax + by = c dx + ey = f các h s a. .an.bi.5 trong ñó n và a1. n và x1.. f nh n t bàn phím .( n − m + 1) m! Bài 7.. an.. Bài 13..di) max(ai.. xn nh n t bàn phím. L p chương trình vào b n dãy s a1. + a n ) 0 ... + 1 2! n! v i ñ chính xác 0. Bài 11.ci. . n) = n. L p chương trình tính t h p ch p m c a n C( m... Cho hai dãy s : a1. c1. L p chương trình tr n hai dãy trên thành m t dãy m i cũng theo th t tăng..( n − 1). Các giá tr m.. L p chương trình: Nh p m t dãy s t bàn phím... Bài 8..... L p chương trình tìm t t c các phương án có th .0001 theo công th c: sin( x) = x − x3 x5 x2n −1 + + . Bài 10. m i dòng 6 giá tr theo m u sau: ai bi ci di min(ai. an t bàn phím sau ñó in hàm f(x) trên m t dòng theo m u sau: f(x) = a1x1 + . d. c hai ñ u x p theo th t tăng. Bài 2. bn. C n có t ng s 200000ñ t 3 lo i gi y b c 1000ñ... L p chương trình tìm ph n t âm cu i cùng c a dãy a1.an. + anxn Bài 9.. các s âm ñưa vào m ng c. dn.an nh n t bàn phím.. b.. 68 ..an và b1.. L p chương trình tính 2 2 S = ( a 12 + a 2 +....... e.. Tính trung bình c ng c a các s dương và trung bình c ng c a các s âm trong dãy s trên. 2000ñ và 5000ñ.. xn trên nhi u dòng..... L c các s dương ñưa vào m ng b..Giáo trình Tin h c ð i cương BÀI T P CHƯƠNG 3 Bài 1.. Cho dãy s a1. Nh p các h s a1 ... In k t qu trên n dòng . . T c là n c n ch n sao cho xn < 0..00001. . L p chương trình in m t dãy n s th c x1.

Giáo trình Tin h c ð i cương Bài 14. L p chương trình in các s âm trên m t dòng. S p x p m t dãy s theo th t tăng d n. các s dương trên dòng ti p theo. Bài 16. Cho dãy s a1.. y c a m t dãy n ñi m. Bài 17. Bài 18. Vi t chương trình tính giá tr c a ña th c và ñ o hàm c a nó.. Bài 15. Vi t chương trình nh p to ñ x. sau ñó tìm m t c p ñi m cách xa nhau nh t. Bài 19. Vi t chương trình tính ñ nh th c c a ma tr n vuông c p n. Cho hi n lên màn hình các kí t có mã ASCII t 33 ñ n 255..an.. 69 .

Khái ni m chung v hàm Xét bài toán ñơn gi n sau: Tìm giá tr l n nh t c a ba s mà giá tr c a chúng ñư c ñưa vào t bàn phím.HÀM VÀ T CH C CHƯƠNG TRÌNH M t chương trình vi t theo ngôn ng C là m t dãy các hàm trong ñó có m t hàm chính (hàm main). Cũng có hàm không ñ i như hàm main trong các ví d trên.2f\nmax = %0.1. Ta t ch c chương trình thành hai hàm: hàm main và m t hàm mà ta ñ t tên là max3s. dùng hàm max3s ñ tính max c a ba giá tr v a ñ c ñư c. Nguyên m u c a hàm th c ch t là dòng ñ u c a hàm và thêm vào d u ch m ph y. Nhi m v c a hàm main là ñ c ba giá tr t bàn phím. khi ñó v n ph i có c p d u ngo c tròn. M t trong các ưu ñi m c a C là nó cho phép t ch c và s d ng các hàm m t cách ñơn gi n và hi u qu . 4. x. max = a>b?a:b. Ta có th ñ t cho m i hàm m t tên b t kỳ theo các qui t c nêu trong chương 1. void main() { float x.h> /* Nguyen mau ham max3s */ float max3s(float a. z. &z). c.float c). b.2f\ny = %0. Tuy nhiên trong nguyên m u có th b tên các ñ i. b. y. z)). return (max>c?max:c). Chương trình ñư c vi t như sau. #include <stdio. Nhi m v c a hàm max3s là tính giá tr l n nh t c a ba s gi ñ nh mà ta g i là a. y. Qua chương trình này có th rút ra nhi u khái ni m và qui t c quan tr ng liên quan ñ n vi c xây d ng và s d ng hàm: M i hàm ph i có m t tên.1 T ch c chương trình thành các hàm 4. C ba ñ i này ñ u có ki u giá tr float. ñưa k t q a ra màn hình.Giáo trình Tin h c ð i cương CHƯƠNG 4 . y. } /* Dinh nghia ham max3s */ float max3s(float a. scanf("%f%f%f". max3s(x. &y.float b. /* Gia tri tra ve */ } Ghi chú: Nên khai báo nguyên m u c a hàm trư c khi s d ng hàm. các hàm ph i có tên khác nhau và m c dù tên là tùy ý nhưng ta cũng nên ñ t cho hàm nh ng tên phù h p v i ch c năng c a hàm. float c) { float max. Trong cùng m t chương trình. printf("\nx = %0. &x. z. c. printf("\nNhap ba so thuc: "). Ví d hàm max3s có ba ñ i là a. M i hàm s th c hi n m t ph n vi c nào ñó và chương trình s gi i quy t c bài toán tr n v n. 70 . Chương này s gi i thi u các qui t c xây d ng và s d ng hàm.1.2f\nz= %0. Hàm thư ng có m t vài ñ i. float b. Th t c a các hàm trong chương trình là b t kỳ nhưng chương trình bao gi cũng ñư c th c hi n t hàm main.2f".

ð nh nghĩa hàm ð nh nghĩa hàm g m hai ph n: tiêu ñ và thân hàm. c l i ñư c dùng ñ trao ñ i d li u gi a các hàm. Trong thân hàm có th s d ng m t câu l nh return. float c) { float max. b. max = a>b?a:b. Bi n max là bi n c c b nó ch có tác d ng trong thân hàm và không có b t c m t liên h gì ñ n các bi n c a các hàm khác trong chương trình. c. Thân c a hàm max3s là ño n chương trình tính giá tr l n nh t c a ba ñ i a. Hàm max3s có giá tr ki u float. . b. return (max>c?max:c). float c) Thân hàm b t ñ u b ng d u { và k t thúc b i d u }. Nguyên m u hàm khai báo theo m u sau: <ki u> <tên_hàm>( <ki u 1> [<ñ i1>. float b. 4. float. Trong trư ng h p hàm ñư c ñ nh nghĩa trư c khi s d ng. Xét ví d v hàm max3s: /* Dinh nghia ham max3s */ float max3s(float a. Trong ví d ñang xét. Trong thân hàm ta dùng thêm bi n max. Như v y. 71 . giá tr c a bi u th c này là giá tr l n nh t c a ba ñ i a. c. Hàm ñư c vi t theo th t sau: Nguyên m u hàm Nguyên m u hàm cho bi t tên hàm. D ng t ng quát c a nó là: return [<bi u th c>]. b. khi ñó khai báo ki u tr v c a hàm là void. Ví d . <ki u n> [<ñ i n>] ). Trong C không cho phép xây d ng m t hàm bên trong các hàm khác. float b. <ki u 2> [<ñ i 2>]. …. Ngoài ra còn có nh ng hàm không có giá tr tr v .. hàm max3s cho giá tr l n nh t c a ba ñ i c a nó. Giá tr c a hàm có th có ki u int. Vi c khai báo nguyên m u hàm cho phép s d ng hàm trư c khi ñ nh nghĩa hàm. Giá tr c a bi u th c trong câu l nh return s ñư c gán cho hàm. thì không c n thi t ph i khai báo nguyên m u. các ñ i c a hàm và ki u giá tr tr v . Trong thân hàm ch a các câu l nh c n thi t ñ th c hi n m t yêu c u nào ñó ñã ñ ra cho hàm. double.2 Quy t c xây d ng m t hàm Hàm có th xem là m t ñơn v ñ c l p c a chương trình. nguyên m u c a hàm khai báo nh ng thông tin t i thi u nh t c a hàm ñ có th s d ng ñư c hàm ñó.. tiêu ñ c a hàm là: float max3s(float a.Giáo trình Tin h c ð i cương Hàm thư ng cho ta m t giá tr nào ñó.1. Trái l i các ñ i a. C n phân bi t s khác nhau gi a bi n max và ñ i a. /* Gia tri tra ve */ } Trong ví d trên. có th dùng nhi u câu l nh return nh ng ch khác nhau và cũng có th không s d ng câu l nh này n u hàm không có giá tr tr v . c. . b.

thì máy s t m r i ch ñó và chuy n ñ n hàm tương ng. c n ph i truy n cho m i tham s m t giá tr . ta vi t tên hàm. z s ñư c ñưa ra màn hình. Như v y ta có các khái ni m sau: + Bi n toàn b hay bi n toàn c c: là các bi n ñư c khai báo ñ u chương trình. Ph m vi h at ñ ng c a các bi n này là trong thân hàm hay kh i l nh ch a nó. c u trúc. Nói cách khác. giá tr l n nh t c a ba s x.y. 72 .. b/ Gán giá tr c a các tham s th c cho các ñ i tương ng. N u tr v t m t câu l nh return có ch a bi u th c thì giá tr c a bi u th c ñư c gán cho hàm.. bi n c c b ) và thoát kh i hàm. bi n ñ a phương: là các bi n ñư c khai báo trong các hàm.z) s ñư c s d ng trong câu l nh printf. Quá trình ñó s di n ra theo trình t 4 bư c như sau: a/ C p phát b nh cho các ñ i và các bi n c c b .3 S d ng hàm Hàm ñư c s d ng b ng cách g i hàm. khi máy g p m t l i g i hàm m t ch nào ñó c a chương trình. c/ Th c hi n các câu l nh trong thân hàm.. nó có th s d ng v trí b t kỳ trong chương trình.Giáo trình Tin h c ð i cương 4. giá tr c a hàm max3s(x. + ð i s th c s hay tham s th c s : Khi s d ng hàm.). Giá tr c a hàm s ñư c s d ng trong các bi u th c ch a nó. các bi n c c b (gi i phóng b nh c a các ñ i. y. m ng.4 C u trúc t ng quát c a chương trình Chương trình g m nhi u hàm ñư c vi t theo trình t sau: Các #include Các #define Khai báo các ñ i tư ng d li u ngoài (bi n. Khai báo nguyên m u c a các hàm Hàm main Xây d ng (ñ nh nghĩa) các hàm Chú ý: Hàm main có th ñ t sau ho c xen vào gi a các hàm khác.1. + ð i s hay tham s hình th c: là các bi n ñư c khai báo sau tên hàm trong 2 d u ngo c tròn. + Bi n c c b . Nói cách khác.1. Trong ví d trên. Các giá tr ñó ñư c g i là các tham s th c s . Các giá tr này g i là các tham s th c ñ phân bi t v i các tham s ñư c khai báo khi ñ nh nghĩa hàm (tham s hình th c). d/ Khi g p câu l nh return ho c d u } cu i cùng c a thân hàm thì máy s xoá các ñ i. Nguyên t c ho t ñ ng c a chương trình khi g p l i g i hàm: Khi g p m t l i g i hàm thì hàm b t ñ u ñư c th c hi n. c p d u ngo c tròn và các giá tr trong 2 d u ngo c tròn n u có. t i ñ u m i kh i l nh. L i g i hàm có d ng sau: <tên hàm> ([<danh sách tham s th c>]) Khi g i hàm. 4.

Tương t câu l nh sau khai báo các con tr ki u float. Ví d câu l nh sau khai báo hai bi n ki u int là x. Ta cũng ñã bi t.. float f.5. Chúng ta không ñư c gán ñ a ch c a m t bi n nguyên cho m t con tr ki u th c. *px.2.1 ð a ch Liên quan ñ n m t bi n ta ñã có khái ni m: Tên bi n Ki u bi n Giá tr c a bi n Ví d câu l nh float alpha = 30. Ví d câu l nh sau là không h p l . Khi ñã có các khai báo trên thì các câu l nh sau hoàn toàn xác ñ nh. pf = &y. có nghĩa là giá tr c a con tr là ñ a ch c a m t bi n nào ñó. int x. Khi con tr px ch a ñ a ch c a bi n x thì ta nói px tr t i x.Giáo trình Tin h c ð i cương 4. m t con tr c n khai báo trư c khi s d ng. M t ñi u c n lưu ý là m c dù ñ a ch c a bi n là m t s nguyên nhưng không ñư c ñánh ñ ng nó v i các s nguyên thông thư ng dùng trong các phép tính. ki u double.2 Tham s ki u con tr Trong ph n này. chúng tôi gi i thi u sơ lư c v con tr trong C và ng d ng trong truy n tham s cho hàm.. Cũng như ñ i v i b t kỳ m t bi n nào khác. *py. &alpha 4. xác ñ nh m t bi n có tên là alpha có ki u float và có giá tr 30. ta có con tr ki u float. Vì có nhi u lo i ñ a ch nên cũng có nhi u ki u con tr tương ng. . py = &y. 73 . ð l y ñ a ch c a m t bi n.2 Con tr Con tr là bi n dùng ñ ch a ñ a ch . *pf.. ð a ch c a bi n là s th t c a byte ñ u tiên c a vùng nh c a bi n trong b nh .2. Vi c khai báo bi n con tr ñư c th c hi n theo m u sau: <ki u> *<tên con tr >. px = &x. 4. y và hai con tr ki u int là px và py. Câu l nh th nh t s gán ñ a ch c a x cho con tr px và câu l nh th hai s gán ñ a ch c a bi n y cho con tr py. Con tr ki u int dùng ñ ch a ñ a ch các bi n ki u int. y.5. Ví d ñ l y ñ a ch c a bi n alpha. Tương t . máy s c p phát cho bi n alpha m t kho ng nh g m 4 byte liên ti p. theo khai báo trên. dùng phép toán &.

*py = 3*x + 1. p = &a. *p. T ñây có th rút 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 chúng ta có th s d ng giá tr c a nó mà còn có th gán cho nó m t giá tr m i (làm thay ñ i n i dung c a nó). Ví d khai báo m t m ng s nguyên: int a[100].2. Câu l nh th hai s gán ñ a ch c a bi n a cho con tr p và câu l nh th ba s gán giá tr c a p cho q.Giáo trình Tin h c ð i cương 4. *px. 4. máy c p phát m t vùng nh dùng ñ lưu giá tr các ph n t c a m ng. *q. px = &x. Khi ñó bi n mà px tr t i (bi n x) ñư c bi u di n dư i d ng *px. tên con tr ñ i di n cho giá tr c a con tr và d ng khai báo ñ i di n cho giá tr bi n mà con tr ñang tr t i. y. Theo nguyên lý này thì ba câu l nh sau ñ u có hi u l c như nhau y = 3*x + 1. ði u này s ñư c áp d ng như m t phương pháp ch y u ñ nh n k t qu c a hàm thông qua ñ i.4 M ng và con tr Khi khai báo m t m ng.2. S d ng d ng khai báo c a con tr Xét ño n l nh sau: float x. *py = 3*(*px) + 1. 74 . khi ñó cũng có hai ñ i lư ng liên quan. K t qu là con tr q ch a ñ a ch c a bi n a. q = p. py tr t i y. n u con tr px tr t i bi n x thì các cách vi t x và *px là tương ñương trong m i ng c nh.3 Qui t c s d ng con tr trong các bi u th c V i m t bi n. Nói m t cách khác. Khi m t con tr tr t i m t bi n. y = 215. Trong bi u th c. Ta hãy xem các câu l nh sau làm gì ? float a. *py. x = 100.3. Sau các l nh gán thì px tr t i x.0. có hai ñ i lư ng liên quan. Câu l nh th nh t khai báo m t bi n ki u float (bi n a) và hai con tr p và q ki u float. ñó là giá tr c a bi n và ñ a ch c a bi n. Khi tên con tr ñ ng bên trái c a m t toán t gán thì giá tr c a bi u th c bên ph i (giá tr này ph i là ñ a ch ) ñư c gán cho con tr . S d ng tên con tr Con tr cũng là m t bi n nên khi tên 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 này. ñó là giá tr con tr (chính là ñ a ch c a bi n) và giá tr c a bi n mà con tr ñang tr t i. py = &y.

Vì v y. Tr v nhi u k t qu . z = *px. b = 13. trong C cho phép s d ng thay th gi a m ng và con tr trong m t s trư ng h p.5. Trong C.2.5 Hàm có ñ i con tr ð i con tr thư ng ñư c s d ng trong các trư ng h p sau ñây: S d ng hàm ñ thay ñ i giá tr c a m t bi n. hoan_vi(&a. ñi u có nghĩa là: a b ng &a[0] Vì tên m ng là m t ñ a ch . &b). S d ng hàm ñ thay ñ i giá tr c a m t bi n Như chúng ta ñã bi t. ð khai báo m t tham s là ñ a ch c a m t bi n. Trong khi ñó tên m ng là m t h ng ñ a ch . *py = z. vì khi m ng ñư c c p phát thì ñ a ch c a ph n t ñ u tiên là xác ñ nh. a. } void main() { float a = 7. sau khi ñã gán p b ng a thì: a[4] và p[4] ñ u bi u di n ph n t th 5 c a m ng.h> void hoan_vi(float *px. printf("\na = %0.6. a[0]. thì s thay ñ i ñó không nh hư ng ñ n giá tr các bi n truy n vào cho hàm. b). *a và *p cùng bi u di n ph n t ñ u tiên c a m ng. Vì v y không th thay ñ i ñư c giá tr c a tên m ng. } 75 . và các ph n t s s p x p liên ti p nhau trong b nh . thì ch có giá tr c a các bi u th c là ñư c s d ng. Con tr là m t bi n.2f b = %0. *px = *py. Như v y gi a m ng con tr có s tương ñ ng. t ph n t ñ u tiên. Truy n m t m ng vào cho hàm. vì th giá tr c a nó có th thay ñ i ñư c và ta có th gán giá tr cho m t con tr . tên m ng chính là ñ a ch c a ph n t ñ u tiên c a m ng. float *py) { float z. m i ô nh có kích thư c c a m t s nguyên tương ng v i m t ph n t . thì ph i truy n ñ a ch c a bi n thay vì giá tr c a bi n. khi truy n tham s th c cho hàm. Ví d : int *p. p = a. Do ñó. nên ta có th gán cho m t con tr . n u mu n dùng hàm ñ thay ñ i giá tr c a m t bi n. Ví d . #include <stdio. N u chúng ta thay ñ i giá tr c a ñ i s bên trong hàm. Ví d sau ñ nh nghĩa m t hàm cho phép ñ o giá tr c a hai bi n. Tuy nhiên gi a m ng và con tr có s khác nhau. 4.Giáo trình Tin h c ð i cương Khi ñó máy s c p phát 100 ô nh .2f". ta khai báo tham s ñó là m t con tr có ki u tương ng.

} } 76 . scanf("%d". printf("Nhap so phan tu: "). printf("Day so vua nhap:\n"). do ñó c n thêm ñ i ch ra s lư ng ph n t c a m ng. Máy s gán giá tr c a các tham s th c cho ñ i tương ng. n). Ví d . Sau ñó máy l n lư t xét ñ n các câu l nh trong thân hàm. máy tr v hàm main() và in ra nh ng dòng k t q a như ñã ch ra trên.Giáo trình Tin h c ð i cương K t qu th c hi n chương trình a = 13. // In day so InDaySo(a. b = z. int n. Khi truy n m ng vào cho hàm. v i m ng các ph n t int thì ki u ñ i là con tr ki u int.5. K t q a là bi n a nh n giá tr 7.2. #include <stdio. i + 1). Theo qui t c v s d ng con tr nêu trong m c 4. void main() { int a[100]. scanf("%d". Ti p ñó. Câu l nh th nh t s c p phát cho bi n c c b z m t kho ng nh 4 byte. Ti p ñó là l i g i hàm hoan_vi. chương trình b t ñ u t câu l nh ñ u tiên trong hàm main(). void InDaySo(int *a. &n).h> // Nguyen mau ham void NhapDaySo(int *a. Như v y a s nh n giá tr c a b và ngư c l i. khi ñó ta dùng ñ i con tr . for (i = 0.50 b = 7. i < n. } void NhapDaySo(int *a. m t hàm nh p d li u cho m t dãy s và m t hàm in dãy s ñó ra màn hình. Như ñã bi t. Như v y ñ a ch c a a ñư c gán cho con tr px .6 và bi n b nh n giá tr 13. int n). a = b. int n) { int i.3 thì ba câu l nh ti p theo tương ñương v i các câu l nh: z = a. ñ a ch c a b ñư c gán cho con tr py. int n). &a[i]). bên trong hàm không rõ s lư ng ph n t c a m ng. i++) { printf("a[%d] = ".60 Ta hãy xem hàm hoán_v làm vi c th nào. Do m ng là ñ a ch c a ph n t ñ u nên ki u c a ñ i là ki u con tr c a ki u ph n t m ng. Truy n m t m ng m t chi u vào cho hàm Khi mu n truy n m t m ng vào cho m t hàm. n). Ví d sau ñ nh nghĩa hai hàm. // Nhap day so NhapDaySo(a. ví d như hàm in các s h ng c a m t dãy s .

s d ng c hai cú pháp khai báo là m ng và con tr . // Su dung dang khai bao mang void InMaTran(float a[20][20]. n). Ví d . 3. ví d như truy n m t ma tr n vào hàm in ma tr n. Khi khai báo m t tham s là m t m ng nhi u chi u. chúng ta ph i truy n m t m ng nhi u chi u vào cho hàm. n. i < n. int n) { int i. i < n. a[i]). so cot: "). int. 3). &n). int. } 77 . int). i++) printf("%8d". m. } Khi ñó thì có th xác ñ nh ngay tham s a là d li u vào cho hàm. thì có th thêm t khoá const khi khai báo tham s . Truy n m t m ng nhi u chi u vào cho hàm Trong m t s trư ng h p. int n) { int i. // In ma tran InMaTran(a. c n ph i ch ra s ph n t tương ng c a các chi u. } Trong ví d trên. Tham s a trong hàm InDaySo là d li u ñ u vào. Vì v y. tr chi u ñ u tiên là không c n thi t ph i ch ra. &m. i++) printf("%8d".Giáo trình Tin h c ð i cương void InDaySo(int *a. // Nhap ma tran NhapMaTran(a. chúng ta không phân bi t ñư c s khác nhau ñư c theo m c ñích s d ng. hàm InDaySo có th ñư c ñ nh nghĩa như sau: void InDaySo(const int *a. for (i = 0. mà ch phân bi t V m t cú pháp. #include <stdio.h> // Nguyen mau ham void NhapMaTran(float a[20][20]. printf("Nhap so hang. int m. Tham s a trong hàm NhapDaySo là k t qu ñưa ra. for (i = 0. scanf("%d%d". Ví d sau nh p in m t ma tr n th c theo d ng b ng. void main() { float a[20][20]. Tuy nhiên. trên. các tham s c a hai hàm NhapDaySo và InDaySo ñư c khai báo gi ng nhau. int). khi truy n m t m ng vào cho hàm mà trong hàm không có nhu c u thay ñ i giá tr c a các ph n t c a m ng. trong hai trư ng h p ý nghĩa tham s là khác nhau. a[i]). bao g m m t tham s ki u con tr nguyên và m t tham s nguyên.

} } void InMaTran(float a[20][20]. 1. j < n. int n) { int i. // Giai phuong trinh 78 .h> #include <math. printf("\n"). m t ho c hai nghi m (trong trư ng h p có nghi m). int songhiem.2f". j < n. i++) for (j = 0. Ví d sau th hi n cách chúng ta tr v nhi u k t qu . như trong hàm NhapMaTran trên. i < m. do ñó chúng ta ph i dùng m t bi n trung gian khi nh p giá tr các ph n t m ng. b. j.h> // Nguyen mau ham int GiaiPTBac2(float. c: "). j. &a. float f. } } Chú ý: m t s trình d ch không cho phép l y ñ a ch c a m t ph n t m ng nhi u chi u. i < m. Như v y ñây chúng ta ph i tr v ba ñ i lư ng: s nghi m. int m. c. float*). Ví d : khi vi t m t hàm gi i phương trình b c hai. x2.Giáo trình Tin h c ð i cương void NhapMaTran(float a[20][20]. /* Chuong trinh giai phuong trinh bac hai */ #include <stdio. thì giá tr c a nghi m là bao nhiêu. N u có nghi m. float. i + 1. int n) { int i. &b. i++) { for (j = 0. void main() { float a. for (i = 0. thì chúng ta c n ph i tr v các ñ i lư ng: Hàm ñó có bao nhiêu nghi m (0. scanf("%f%f%f". for (i = 0. 2). &c). j++) printf("%8. printf("Nhap a. j + 1). a[i][j] = f. float*. do ñó ñ tr v nhi u giá tr chúng ta ph i s d ng tham s là con tr . int m. scanf("%f". &f). x1. float. j++) { printf("a[%d][%d] = ". Như chúng ta ñã bi t. Tr v nhi u k t qu M t trư ng h p mà ñ i là con tr thư ng ñư c s d ng ñó là khi chúng ta mu n hàm tr v nhi u giá tr . a[i][j]). hàm ch có th tr v m t giá tr dư i d ng tên hàm. b.

int i. Hàm như v y g i là hàm ñ quy. float *px2) { float delta.sqrt(delta))/(2*a). } int GiaiPTBac2(float a. Trong m t s trư ng h p. nghĩa là: L n ra ñ u tiên ng v i l n vào cu i cùng và l n ra kh i hàm cu i cùng ng v i l n ñ u tiên g i t i hàm. for (s = 1. s d ng ñ quy s làm chương trình ng n g n. i++) s*= i.3 ð quy 4. else if (songhiem == 1) printf("Nghiem kep: %. i <= n. *px2 = (-b + sqrt(delta))/(2*a).3f". Gi s ta c n vi t m t hàm tính n giai th a. mà nó còn cho phép t m t v trí trong thân c a m t hàm g i t i chính hàm ñó. Thông thư ng ta s vi t như sau: long giai_thua(int n) { long s.4*a*c. return 2. if (songhiem == 0) printf("Phuong trinh vo nghiem.3f\nx2: %. &x2). i = 1. float *px1. máy s t o ra m t t p các bi n c c b m i hoàn toàn ñ c l p v i các t p bi n (c c b ) ñã ñư c t o ra trong các l n g i trư c. else if (delta == 0) { *px1 = -b/(2*a)."). } M t cách khác. ð minh h a nh ng ñi u nói trên. c.3f". return s. Ta cũng chú ý r ng: Có bao nhiêu l n g i t i hàm thì cũng có b y nhiêu l n thoát ra kh i hàm và c m i l n ra kh i hàm thì m t t p các bi n c c b b xóa. d hi u hơn. if (delta < 0) return 0. return 1. else printf("x1: %.3. &x1. float b. x1).1 Khái niêm chung v ñ quy C không nh ng cho phép t hàm này g i t i hàm khác. } } 4. } else { *px1 = (-b . ta ñưa ra m t ví d ñơn gi n. x2). S tương ng gi a các l n g i t i hàm và các l n ra kh i hàm ñư c th c hi n theo th t ngư c.Giáo trình Tin h c ð i cương songhiem = GiaiPTBac2(a. float c. Khi hàm g i ñ quy ñ n chính nó thì m i l n g i. x1. ta th y r ng n! có th tính theo công th c truy h i như sau: n!= 1 n u n = 0 n!= n*(n-1)! n u n > 0 D a vào công th c trên ta có th xây d ng hàm ñ tính n! m t cách ñ quy như sau: 79 . delta = b*b . b.

1) : 1. s d n t i trư ng h p suy bi n. b ng 2*1. có m t l i g i hàm giai_thua(5) ñ tính giai th a c a 5. Và sau m t s h u h n bư c bi n ñ i ñ quy. Trong hàm giai_thua. cu i cùng 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. C như v y. Trong trư ng h p t ng quát.h> long giai_thua(int n) { return (n > 0)?n*giai_thua(n . C như v y. nên ti p t c c n tính giai_thua(3). do n l n hơn 0 nên giá tr tr v là n*giai_thua(n -1). giai_thua(5)). Cách xây d ng hàm ñ quy Hàm ñ quy thư ng ñư c vi t theo thu t toán sau: if (trư ng h p suy bi n) { trình bày cách gi i bài toán (gi ñ nh ñã có cách gi i) } else /* trư ng h p t ng quát */ { g i ñ quy t i hàm (ñang l p) v i giá tr khác c a tham s } 80 . t c là 5*giai_thua(4). cho t i khi n b ng 0. } void main() { printf("%d". do n v n l n hơn 0. Trong l n g i th hai này. Ta nh n th y bài toán tính n! nêu trên th hiên r t rõ các ñ c ñi m này. khi ñó giá tr tr v c a l n g i giai_thua(0) là 1 và ñư c s d ng ñ tính bi u th c tr v cho l n g i giai_thua(1) b ng 1*giai_thua(0).Giáo trình Tin h c ð i cương #include <stdio. bài toán có th quy v m t bài toán cùng d ng nhưng giá tr tham s thay ñ i. - - 4.2 Cách dùng ñ quy Bài toán nào có th dùng ñ quy Phương pháp ñ quy thư ng áp d ng cho các bài toán ph thu c tham s có hai ñ c ñi m sau: Bài toán d dàng gi i quy t trong m t s trư ng h p riêng ng v i các giá tr ñ c bi t c a tham s . l i ñư c s d ng ñ tính bi u th c tr v cho l n g i giai_thua(2). Ta g i ñây là trư ng h p suy bi n.3. b ng 1*1. Tuy nhiên lúc này giá tr giai_thua(4) chưa xác ñ nh. } Cơ ch ho t ñ ng c a hàm giai_thua trong chương trình trên có th gi i thích như sau: Trong hàm main. Giá tr giai_thua(1) b ng 1. Khi ñó hàm giai_thua s ñư c g i ra ñ th c hi n v i tham s n b ng 5. nên máy l i ti p t c g i hàm giai_thua ñ tính giai th a c a 4.

else if (a < b) return uscln(a.Giáo trình Tin h c ð i cương 4. Trư ng h p suy bi n là trư ng h p x = y. else return a. uscln(a. } int uscln(int a. Thu t toán chuy n tháp có th di n ñ t như sau: Trư ng h p suy bi n: n = 1. Bài toán tháp Hà N i ñư c ñ t ra như sau: Có m t tháp g m n t ng.y) n u x > y uscln(x. Chuy n t ng n t A ñ n B. 81 . scanf("%d%d". Khi ñó: uscln(x. Trư ng h p t ng quát n > 1 có th gi i quy t ñ quy như sau: Chuy n tháp n -1 t ng t A ñ n C. Nhi m v là ph i chuy n tháp t m t v trí A ñ n m t v trí m i B. &b). b. } Ví d 2: Bài toán tháp Hà N i. b). printf("Nhap hai so nguyen: "). b. dùng A làm v trí trung gian. Trư ng h p x khác y có th tính ƯSCLN m t cách ñ quy như sau: uscln(x.1 t ng t C ñ n B. int b) { if (a > b) return uscln(a . void main() { int a. dùng B làm v trí trung gian. &a.y) = x. Luôn ñ m b o t ng trên nh hơn t ng dư i m i v trí và m i th i ñi m.3. ði u ki n khi chuy n là: M i l n ch ñư c phép chuy n m t t ng.".y-x) n u x < y Chương trình sau ñ nh nghĩa hàm tính ư c s chung l n nh t và s d ng hàm ñó ñ tính ư c s chung l n nh t c a hai s nh p vào: #include <stdio. Chuy n tháp n . printf("USCLN cua %d va %d la %d.y) = uscln(x-y. t ng trên nh hơn t ng dư i. khi ñó ch c n chuy n t ng 1 t A ñ n B. int).a).y) = uscln(x.3 Các ví d M c này s trình bày m t s ví d nh m minh ho cách xây d ng hàm ñ quy.b. b . Ví d 1: Xét bài toán tìm ư c s chung l n nh t c a hai s nguyên dương x và y. a. b)). Cho phép s d ng thêm m t v trí trung gian C ñ ñ t các t ng.h> // Nguyen mau ham int uscln(int.

scanf("%d". printf("Nhap so tang: "). 'B'. void main() { int n. else { Chuyen(n . Chuyen(n. B). } void Chuyen(int n. int B. A. B).1. C. int. /* Thap Ha noi */ #include <stdio. A. int. B).h> // Nguyen mau ham void Chuyen(int. n. C.1. A. &n). int). printf("Chuyen tang %d tu %c sang %c\n". int A. 'C'). B. int C) { if (n == 1) printf("Chuyen tang 1 tu %c sang %c\n". Chuyen(n . } } 82 . A). 'A'.Giáo trình Tin h c ð i cương Chương trình sau cài ñ t thu t toán trên.

d. Tính ña th c c p n f(x) = a0 + a1x + . f và hai ñ i ra là x. c. Bài 5. Bài 8. e. ..... Bài 6. + n3 83 . . Gi i h phương trình b c nh t ax + by = c dx + ey = f Hàm có sáu ñ i vào là a. y. Bài 2. b.Giáo trình Tin h c ð i cương BÀI T P CHƯƠNG 4 Vi t hàm th c hi n các bài toán dư i ñây. C.n) = xn s(n) = (2n)!! p(n) = 13 + 23 + . Xây d ng 3 hàm s sau ñây b ng phương pháp ñ qui f(x.. Bài 1. Bài 4. Tìm t a ñ giao ñi m c a hai ñư ng th ng AB và CD khi bi t t a ñ c a các ñi m A. Nhân ma tr n A c p mxn v i véc tơ X c p n. Bài 3. B. + an-1 xn-1 + anxn Hàm có hai ñ i là bi n nguyên n và m ng th c a..+ ( x n −s ) 2 d = n Trong ñó x1. D. . Chuy n v m t ma tr n ch nh t A cho trư c.... + x n n ( x1 − s) 2 +. Tính giá tr trung bình và ñ l ch tiêu chu n c a m t ñ i lư ng ng u nhiên theo công th c s= 2 x 1 + . xn là dãy quan sát nh n ñư c. Tính c c ñ i và c c ti u c a m t dãy s . Bài 7.

Ví d ... chúng ta dùng m u sau: struct <Tên c u trúc> { <Ki u 1> <Tên thành ph n 1>. ð ñ nh nghĩa m t c u trúc. Khi ñ nh nghĩa m t c u trúc. n>. int thang. Ki u d li u này có th dùng ñ khai báo các bi n c u trúc.. ñ nh nghĩa c u trúc mô t ngày tháng. Ví d . <Ki u 2> <Tên thành ph n 2>. Có th k t h p c ñ nh nghĩa c u trúc và khai báo bi n vào m t l nh duy nh t theo m u sau: struct [Tên c u { <Ki u 1> <Tên <Ki u 2> <Tên . M ng có th xem là t p h p nhi u bi n có cùng m t ki u giá tr và ñư c bi u th b ng m t tên. } <danh sách bi trúc] thành ph n 1>. ñ a ch . nó cho phép lưu tr và x lý các d ng thông tin ph c t p hơn. các m ng và ñư c bi u th b i m t tên duy nh t. bi n ngay_sinh ki u ngày tháng ñư c khai báo như sau: struct Ngay ngay_sinh. 5. ngày sinh.C U TRÚC ð lưu tr và x lý thông tin trong máy tính ta có các bi n và các m ng. chúng ta ñã có ki u d li u mô t ngày tháng là struct Ngay. chúng ta ñã bi t ñ nh nghĩa m t c u trúc và s d ng ki u d li u ñó ñ khai báo các bi n.. 84 . 5. M t ví d truy n th ng v c u trúc là phi u ghi lương: M i công nhân ñư c miêu t b i m t t p h p các thu c tính như tên. ð khai báo m t bi n c u trúc sau khi ñã ñ nh nghĩa ki u c u trúc. Ta th y vi c khai báo các bi n c u trúc cũng gi ng như khai báo các bi n ki u d li u chu n. b c lương. c n ch ra tên c a ki u c u trúc và các thành ph n c a c u trúc. thành ph n 2>. ta vi t: struct <Tên c u trúc> danh_sách_tên_bi n_c u_trúc. M i bi n ch a ñư c m t giá tr . C u trúc là m t t p h p các bi n. ñ a ch và th m chí ngày sinh cũng v y. int nam. }. như sau: struct Ngay { int ngay.1 ð nh nghĩa c u trúc và khai báo bi n c u trúc C u trúc là ki u d li u do ngư i dùng t ñ nh nghĩa. .1. ki u d li u là struct Ngay và tên bi n là ngay_sinh. Sau khi ñ nh nghĩa trên.. }. C u trúc có th xem như m t s m r ng c a các khái ni m bi n và m ng..2 K t h p ñ nh nghĩa c u trúc và khai báo bi n c u trúc Trong ph n 5. Trong dòng khai báo trên. M t vài trong các thu c tính này l i có th là c u trúc: Tên có th có nhi u thành ph n..Giáo trình Tin h c ð i cương CHƯƠNG 5 .

M u chung cho vi c ñ nh nghĩa ki u d li u b ng typedef như nhau: typedef <ki u> <danh sách tên>. BIT. chúng ta ñã có các ki u d li u m i là BOOL. cách 1 v a ñ nh nghĩa c u trúc tên là Ngay và các bi n c u trúc tu_ngay. nên sau ñ nh nghĩa ngày chúng ta không th s d ng ki u d li u này ñư c n a. int thang. ta có th dùng m t trong hai cách sau: Cách 1: có tên c u trúc: struct Ngay { int ngay. den_ngay. Tên c u trúc trong trư ng h p này có th có. có th không. mà th c ch t là ki u int. int thang. ta có th dùng ki u struct Ngay ñ khai báo các bi n khác. cho phép vi t ng n g n hơn. ðo n l nh trên khai báo các bi n tiep_tuc ki u BOOL và ket_qua ki u BIT.3 S d ng typedef ñ ñ nh nghĩa ki u d li u c u trúc 5. 5. Vì không ñ t tên cho c u trúc. Ví d . den_ngay. tuy nhiên ta ñã coi các bi n này có ki u logic nên các bi n này ch nên nh n hai giá tr là 0 (bi u di n giá tr sai) và 1 (bi u di n giá tr ñúng). Sau ñ nh nghĩa này. ñ nh nghĩa như sau: typedef int BOOL. Cách 2: không có tên c u trúc: struct { int ngay. den_ngay có ki u là m t c u trúc g m ba trư ng: ngay. BIT có th dùng ñ khai báo các bi n như sau: BOOL tiep_tuc. den_ngay. den_ngay. 5. V m t b n ch t.3. } tu_ngay. thang và nam. chúng ta s s d ng ki u s nguyên ñ bi u di n ki u logic.3. như chúng ta ñã bi t trong C không ñ nh nghĩa ki u d li u logic. 85 . chúng ta có th ñ nh nghĩa các ki u d li u m i d a trên các ki u d li u ñã có. Sau ñ nh nghĩa này.1 ð nh nghĩa ki u b ng typedef S d ng t khoá typedef. } tu_ngay. Ki u BOOL.Giáo trình Tin h c ð i cương V i cách này. BIT ket_qua. mà ki u d li u này ñư c bi u di n thông qua b t c ki u d li u nào. ñ nh nghĩa c u trúc mô t ngày tháng ñ ng th i khai báo bi n tu_ngay. các bi n này có ki u nguyên.2 S d ng typedef ñ ñ nh nghĩa ki u c u trúc Chúng ta có th dùng t khoá typedef ñ ñ nh nghĩa ki u c u trúc. do ñó không th ñ nh nghĩa các bi n cùng ki u v i các bi n tu_ngay. S khác nhau c a hai cách này ñó là. Ví d . Cách 2 ñ nh nghĩa các bi n tu_ngay. các bi n s có ki u là c u trúc có các thành ph n như ñư c khai báo trong c p ngo c nh n {}. int nam. int nam. BIT. den_ngay. Trong ví d này.

có th dùng ki u d li u này ñ khai báo các bi n m t cách ng n g n như sau: KieuNgay ngay_batdau. int thang. Vi c truy c p các thành ph n c a m t bi n c u trúc có th th c hi n b ng toán t ch m (. Chúng ta có th k t h p ñ nh nghĩa c u trúc v i t khoá typedef ñ ñ nh nghĩa ki u d li u c u trúc theo m u sau: typdef struct [Tên] { <Ki u 1> <Tên thành ph n 1>. V i cách này. } KieuNgay. khi ñó có th áp d ng toán t này cho thành ph n ñó ñ truy c p vào các thành ph n sâu hơn. chúng ta có th s d ng ki u d li u là struct Ngay ho c KieuNgay. Cú pháp như sau: <bi n c u trúc>. 5. thì n i dung bi n ch có th mang m t giá tr ki u tương ng.). int nam. có th không. . ngay_kethuc. <Ki u 2> <Tên thành ph n 2>.. } <danh sách tên ki u>.4 Truy c p các thành ph n c a c u trúc V i m t bi n ki u nguyên hay ki u th c.<tên thành ph n> Trong trư ng h p thành ph n c a c u trúc là m t c u trúc. Toán t này cho phép truy c p ñ n m t thành ph n c u trúc khi bi t tên bi n c u trúc và tên thành ph n. Cách 2: không có tên c u trúc: typedef struct { int ngay. N u chúng ta làm vi c v i bi n c u trúc thông qua con tr . tên c u trúc có th có.5 Ví d minh ho 86 . Ví d sau ñ nh nghĩa ki u KieuNgay k t h p v i ñ nh nghĩa c u trúc theo hai cách: Cách 1: có tên c u trúc: typedef struct Ngay { int ngay. chúng ta có th ñ nh nghĩa ki u d li u m i tương ñương ki u d li u này như sau: typdef struct Ngay KieuNgay. int thang. int nam. Sau khi ñ nh nghĩa ki u KieuNgay. còn v i cách 2 thì chúng ta ch có ki u d liêu KieuNgay. khi ñó toán t ñ truy c p ñ n các thành ph n c u trúc là toán t ->. M t bi n c u trúc mang trong nó nhi u thành ph n khác nhau và chúng ta có th làm vi c v i t ng thành ph n này. 5. Khác bi t c a hai cách này là ch : v i cách 1.Giáo trình Tin h c ð i cương Gi s chúng ta ñã ñ nh nghĩa ki u struct Ngay. } KieuNgay..

} void NhapDiem(PDIEM pDiem. int n) { DIEM diem.2 Ví d 2 87 . scanf("%d". M t cách khác là dùng m t c u trúc mô t ñi m. printf("Nhap so diem: "). int).pDiem[i]. for (i = 0. *PDIEM.Giáo trình Tin h c ð i cương 5. n). } DIEM.x).x . scanf("%f".5.y). TinhDoDai(day. // Khai bao cac nguyen mau ham void NhapDiem(PDIEM. do_dai+= sqrt(dx*dx + dy*dy). n)).y . chúng ta có th dùng 2 m ng s th c ñ lưu các to ñ x và y c a các ñi m.y). void main() { DIEM day[100]. i++) { printf("x[%d] = ". printf("y[%d] = ". int). dy = (pDiem[i + 1]. V i ví d này. } } float TinhDoDai(PDIEM pDiem. M ng các ñi m là m t m ng c u trúc. #include <stdio. float TinhDoDai(PDIEM. scanf("%f". trong ñó x và y là các thành ph n c a c u trúc này. &diem. dy.x).3f". do_dai = 0. i < n. int i. dx. Tính t ng ñ dài ñư ng g p khúc ñi qua các ñi m này theo th t nh p vào.5. pDiem[i] = diem. i++) { dx = (pDiem[i + 1].1 Ví d 1 Nh p to ñ c a N ñi m trong m t ph ng. i + 1). printf("Do dai duong gap khuc la: %.pDiem[i].h> typedef struct { float x. for (i = 0. NhapDiem(day. i < n . float y. } return do_dai. int n.1.h> #include <math. } 5. i + 1). &n). int n) { float do_dai. int i. &diem.

pSv[i].Que.DiemLy. int n) { HSSV sv. ði m toán. &sv. fflush(stdin). max. // Nhap ds sinh vien 88 .DiemHoa). i++) { printf("Ten sinh vien %d: ".h> // Dinh nghia kieu Ho so sinh vien typedef struct { char HoTen[30]. printf("Diem toan.DiemToan. i < n. i + 1).HoTen. pSv[i]. float DiemLy. for (i = 0. scanf("%f%f%f". pSv[i]. i. hoa sinh vien %d: ". "Hoa"). pSv[i].DiemHoa). - ð gi i quy t bài toán này ta có chương trình sau: #include <stdio. int n) { int i. m i thí sinh là m t c u trúc g m các trư ng: H và tên.. ði m hoá Yêu c u: Nh p ñi m chu n sau ñó tìm và in ra màn hình danh sách các thí sinh ñ ñ i h c có quê “Ha Noi” (Thí sinh ñ ñ i h c n u có t ng ñi m không dư i ñi m chu n). } void main() { HSSV day[50].HoTen). Tìm và in ra màn hình danh sách các thí sinh có ñi m toán cao nh t. int n. scanf("%d". float chuan. ly. gets(sv. &sv.h> #include <string. int i. pSv[i]. &n). fflush(stdin).1f %6. i < n.DiemLy. i++) printf("%4d %20s %20s %6. float DiemHoa. "STT". &sv. Quê. for (i = 0.1f\n". In ra màn hình toàn b thông tin c a n thí sinh. gets(sv. void NhapHSSV(PHSSV pSv. printf("Nhap so sinh vien: "). i + 1). printf("Que sinh vien %d: ". } } void InHSSV(PHSSV pSv.Que). i + 1. float DiemToan. "Ly". "Toan". pSv[i] = sv.1f %6. printf("%4s %20s %20s %6s %6s %6s\n". "Ho ten".Giáo trình Tin h c ð i cương Nh p m t danh sách g m n thí sinh d thi ñ i h c. *PHSSV.DiemToan. char Que[50]. } HSSV. "Que quan". ði m lý. i + 1).

// In ds sinh vien vua nhap InHSSV(day. "Ho ten".1f %6. day[i]. day[i]. lý. "Que quan". ð c gi có th vi t l i chương trình trên mà không s d ng 2 hàm trên b ng cách vi t tr c ti p ño n chương trình nh p và in vào trong hàm main. n).DiemToan) max = day[i].1f %6.DiemLy + day[i]. "Ha Noi") == 0)) printf("%4d %20s %20s %6. day[i]. day[i].DiemToan. day[i]. "Que quan". printf("%4s %20s %20s %6s %6s %6s\n". hóa (ñi m ch m chính xác ñ n 1/4). 89 . i + 1.DiemToan.DiemHoa). printf("\nDanh sach sinh vien do. "Hoa"). "Ly". day[i]. ta xây d ng 2 hàm nh p (NhapHSSV) và in (InHSSV) danh sách sinh viên. ði m thi là m t c u trúc g m ba thành ph n: toán.DiemHoa >= chuan)&& (strcmpi(day[i].Que. day[i]. i++) if ((day[i]. scanf("%f". i < n. day[i].DiemToan.1f\n". Quê quán cũng là m t c u trúc g m ba thành ph n: xã.1f %6. &chuan). // In ra danh sach sinh vien diem toan cao nhat printf("\nDanh sach sinh vien diem toan cao nhat:\n"). // Tim kiem cac sinh vien do que o Ha Noi printf("Nhap diem chuan: ").1f %6.DiemHoa). i < n. "Hoa"). n). "Toan". "STT". day[i].DiemLy. day[i]. i++) if (max < day[i].DiemToan == max) printf("%4d %20s %20s %6. i < n.Que. Sau ñó s d ng chúng trong hàm main.DiemToan + day[i].DiemToan. Xây d ng m t c u trúc ( ng v i phi u ñi m c a thí sinh) g m các thành ph n: H tên Quê quán Trư ng Tu i S báo danh ði m thi trong ñó H tên l i là m t c u trúc g m ba thành ph n: H . } Trong chương trình trên. tên ñ m và tên. printf("%4s %20s %20s %6s %6s %6s\n". "STT". for (i = 0. i + 1. BÀI T P CHƯƠNG 5 Bài 1. huy n và t nh. // Tim diem toan cao nhat max = day[0].1f\n". que o Ha Noi:\n").HoTen.DiemLy.HoTen. "Toan". "Ho ten". for (i = 1.Giáo trình Tin h c ð i cương NhapHSSV(day. "Ly". i++) if (day[i].Que. for (i = 0.

ð nh nghĩa ki u c u trúc mô t ña th c. Hãy l p chương trình s p x p l i các ph n t c a m ng c u trúc theo th t gi m d n c a t ng s ñi m. P3 và P. P2 và P3. sau ñó in các s li u ra màn hình. Nh p danh sách n h c sinh v i các thu c tính: h tên. P2. Gi s ñã nh p s li u c a 20 phi u ñi m theo như yêu c u c a bài 2. Tìm ki m và in ra các thí sinh có t ng s ñi m ba môn l n hơn 15. sau ñó in chúng lên màn hình theo th t gi m c a b c. Vào t bàn phím m t d y n ña th c. S d ng ñ nh nghĩa c u trúc bài 1 : Nh p s li u c a 20 phi u ñi m và lưu tr vào m ng c u trúc nói trên. in ña th c. In danh sách h c sinh ñã s p x p sao cho t t c các ch cái c a h tên chuy n thành ch hoa. Bài 3.Giáo trình Tin h c ð i cương ð c s li u t m t phi u ñi m c th và lưu tr vào các thành ph n c a c u trúc nói trên. 90 . hóa. Bài 2. lý. Khi t ng ñi m như nhau thì h c sinh có năm sinh nh hơn ñư c x p trư c. Bài 5. M i thí sinh s in trên m t dòng g m các thông tin: H tên Quê quán S báo danh ði m toán. sau ñó vi t các hàm vào ña th c. sau ñó in danh sách thí sinh (theo th t nói trên). S p x p danh sách theo th t gi m c a t ng ñi m. Tính ña th c P theo công th c: P = (P1 + P2)2 + P3 In P1. Bài 4. c ng ña th c và nhân ña th c. năm sinh và t ng ñi m. áp d ng trong hàm main() ñ th c hi n các vi c: Vào t bàn phím ba ña th c P1.

/ 0 1 2 3 4 5 6 7 8 9 : . d u h i.58-64.B NG MÃ ASCII B ký t ASCII (American Standard Code for Interchange Information) g m 256 ký ñư c phân b như sau: 32 ký t ñ u tiên là các ký t ñi u khi n không in ñư c như ký t Enter (mã 13).Giáo trình Tin h c ð i cương PH L C 1 . Các mã ASCII 48-57 là 10 ch s Các mã ASCII 65-90 là các ch cái hoa t A ñ n Z Các mã ASCII 97-122 là các ch cái thư ng t a ñ n z Các mã ASCII 128-255 là các ký t ñ ho . < = > ? @ A B MÃ 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 KÝ T V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m .91-96 và 123-127 là các ký t ñ c bi t như d u ch m. d u cách. ký t ESC (mã 27). d u ngo c. MÃ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 KÝ T NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB MÃ 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 91 KÝ T + . d u ph y.. d u móc.. . Các mã ASCII 32-47..

Giáo trình Tin h c ð i cương 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 { | } ~ DEL 92 .

fclose 45. creat 33. ñ ngh ñ c gi s d ng help c a môi trư ng TC b ng cách ñánh tên hàm trong môi trư ng TC sau ñó ñ con tr dư i tên hàm r i nh n Ctrl + F1. delline 36. chmod 22. fflush 50.h> <dos.h> <math. abs 7.h> <math.h> <stdio.h> <process. fgets 53. fgetc 52. disable 37. fcvt 47. cos 30.h> <math.h> <dos. atof 13.h> <io.h> <graphics.h> <process. _close 3. acos 8.h> <math.h> <graphics. cscanf 34.h> <alloc. exit 42. atoi 14.h> <dos. chdir 21.h> <graphics.h> <io.h> <ctype. cosh 31.h> <stdio. atan2 12.h> <stdio. _creat 4.h> <graphics. fcloseall 46. calloc 19.h> <stdio.h> <graphics.h> <ctype. asin 10.h> <math.h> <io. _open 5. ferror 49.h> <conio.h> <math.h> <ctype. atan 11. ellipse 40. cleardevive 24.h> <ctype. exp 43. circle 23. clreol T p tiêu ñ <io. arc 9.h> <math. abort 6.h> <math. Hàm 1.h> <math. fflushall 51.h> <dir. bar 16.Giáo trình Tin h c ð i cương PH L C 2 DANH SÁCH M T S (theo th HÀM C A TURBO C t ABC) ð bi t chi ti t.h> .h> <stdlib.h> <io.h> <stdio.h> <graphics. _chmod 2. fabs 44.h> Hàm 28.h> <math.h> <stdio.h> <graphics. fillpopy 93 T p tiêu ñ <alloc.h> <ctype.h> <conio. feof 48.h> <graphics.h> <conio. clearviewport 25. coreleft 29. cprintf 32.h> <io. drawpoly 38.h> <graphics. close 26.h> <stdio. ceil 20. enable 41. ecvt 39. bar3d 17.h> <io. cabs 18. atol 15. delay 35.h> <stdio.h> <conio.

h> <ctype.h> <time. free 68.h> <stdio.h> <graphics.h> .h> <stdio. fmode 59. fread 67.h> <dos.h> <stdio.h> <stdio.h> <stdio. floor 58.h> 54. fputc 65. getche 79.h> <graphics. findnext 56. intdosx 106. fopen 60. initgraph 102.h> <conio. gettime 93.h> <ctype.h> <graphics. imagesize 101. geninterrupt 74. getchar 78.h> <conio.h> <ctype. iscntrl 111.h> <graphics. fseek 70. Keep <graphics. fprintf 64.h> <ctype.h> <graphics.h> <ctype. getmaxcolor 85.h> <time.h> <conio.h> <dir. int86x 104. getw 96.h> <ctype. getpixel 89.h> <ctype. int86 103.h> <graphics. gotoxy 97.h> <graphics. gettime 92. gets 90. findfirst 87. getcolor 80.h> <dos. getviewport 95. fputs 66.h> <graphics.h> <dos.h> <dos. gettextinfo 91.h> <graphics. getdate 82.h> <dos.h> <graphics. floodfill 57.h> <conio.h> <dos. FP_OFF 61.h> <stdio. islower 114.h> 83.h> <dos.h> <math.h> <stdio. fteel 71.h> <dir. intdos 105.h> <alloc. getmaxy 119. graphresult 100.h> <dos. clrscr 55.h> <stdio. isdigit 112.h> <stdio. gotoxy 98. isalnum 109.h> <graphics.h> <dos.h> <ctype.h> <ctype.h> <ctype.h> <ctype. getvect 94. ispunct 116. fwrite 72. fprintf 63.h> <dos. kbhit 120. getmaxx 86. getpalette 88. FP_SEG 62.h> <stdio. getch 77. isprint 115. getimage <conio.h> <ctype.h> <ctype.h> <stdio.h> <stdio. peek 146.h> <dos.h> <conio.h> <math. getc 76.h> <stdio. gcvt 73. grapherrormsg 99. getlinesettings <graphics. isalpha 110. fscanf 69.h> <dos.h> 84. itoa 145. getcwd 81. isgraph 113. peekb 94 <dir. inxdigit 108.h> <graphics. isspace 117.h> <stdio.Giáo trình Tin h c ð i cương 27.h> <conio. isupper 118. intr 107. getbkcolor 75.h> <graphics.h> <dos.

h> <string.h> <stdlib.h> <stdio. perror 148.h> <string.h> ho c <string.h> <dos.h> ho c <string.h> ho c <string.h> <dos. log 126.h> <memory.h> . log10 127. lseek 128. rmdir 169. mkdir 138. printf 153.h> <graphics. remove 167.h> <graphics. Strncat 201. putpixel 158.h> <dos. strncpy 203. setdate 174.h> <string. putimage 157. random 162.h> <io. movedata 139.h> ho c <string. pieslice 149. strnicmp 95 <stdio.h> <io.h> <conio.h> <stdio.h> <graphics.h> <memory.h> <graphics.h> <dir.h> <dos.h> <memory. memicmp 135.h> <memory.h> <stdio. putc 154. putw 160. segread 200. putchar 156.h> <stdlib.h> <stdio. pokeb 151. Ltoa 129.h> <math.h> <memory.h> <stdlib.h> <io.h> <graphics. open 143.Giáo trình Tin h c ð i cương 121.h> <alloc.h> <stdio. rewind 168.h> <time.h> <graphics. read 164. setfillstyle <stdlib. lineto 125.h> 147.h> ho c <string. line 123. nosound 142.h> <graphics.h> <dos. setbkcolor 172.h> <stdio. rectangle 166.h> <graphics.h> <stdio. strncmp 202. scanf 170. MK_FP 137.h> <alloc. setcolor 173. poke 150.h> <graphics.h> <graphics. labs 122.h> <math. puts 159.h> <memory.h> <graphics.h> <graphics. memset 136. rand 161.h> <dir. linerel 124.h> ho c <string.h> <math.h> <graphics. moveto 141. memcmp 133. putch 155. memcpy 134. memchr 132. malloc 130.h> ho c <string.h> và <time. movedata 140.h> <stdio. outtext 144. pow 152.h> <mem.h> <memory. realloc 165.h> <ctype. randomize 163. memccpy 131.h> <string. outtextxy 171.

h> <string.h> <string. setwritemode 183. tan 214. write <conio.h> <math.h> <string. sin 184.h> <string.h> <string.h> <graphics. time 221. strnset 205.h> 215. strupr 212. textmode 219. window 228. ultoa 224.h> <string. settime 180. srand 190.h> <time. system 213.h> <math. strcat 191.h> <dos. Strstr 211. strpbrk 206. setpalette 177. settextstyle 179.h> 204. strlwr <graphics.h> <string.h> 96 .h> <graphics. textheight 218.h> <stdlib.h> <ctype. strcmp 193. Wherex 226. strspn 210.h> <ctype.h> <io.h> <string. tolower 222.h> <conio.h> <graphics. strcpy 195. stricmp 198.h> <conio.h> <string.h> <ctype. strcspn 196.h> <time.h> <graphics. strset 209.h> <string. sqrt 189. sleep 186. unlink 225.h> <conio. strlen 199.h> <string.h> <math.h> <dos. strdup 197. toupper 223. settextjustify 178.h> <string. textwidth 220.h> <stdio.h> <conio.h> <math. Sinh 185. wherey 227. sound 187.h> 216. textcolor 217.h> <graphics. strrev 208.Giáo trình Tin h c ð i cương 175.h> <dos.h> <math. setviewport 182.h> <graphics. setlinestyle 176. setvect 181.h> <string.h> <string. textbackground <conio. strrchr 207.h> <string.h> <stdio. strcmpi 194.h> <string.h> <string.h> <graphics.h> <process. Tanh <string. sprintf 188. strchr 192.

Thuật toán.Thông tin về giáo trình Tin học ĐC: Đối tượng sử dụng: sinh viên các ngành kỹ thuật Các từ khóa: Tin học Đại cương. Kỹ thuật lập trình. Tin Đại cương. Sơ đồ khối. Ngôn ngữ C Kiến thức yêu cầu môn học trước: toán học cơ sở Tên nhà xuất bản: Nhà xuất bản Giao thông vận tải . Ngôn ngữ lập trình. Lập trình cấu trúc. Lập trình C. Ngôn ngữ lập trình C.

dot Title: Thông tin về tác giả: Subject: Author: Nguyen Duc Du Keywords: Comments: Creation Date: 12/12/2008 9:15 PM Change Number: 4 Last Saved On: 12/15/2008 9:50 AM Last Saved By: Nguyen Duc Du Total Editing Time: 25 Minutes Last Printed On: 1/14/2004 9:54 AM As of Last Complete Printing Number of Pages: 1 Number of Words: 53 (approx.) Number of Characters: 307 (approx.) .doc Directory: C:\Documents and Settings\Administrator\Desktop\GT80\TinDC_Ebook Template: C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates\Normal.Filename: Thông tin ve giao trinh TinDC.

TS Ph m Văn t K thu t l p trình C. t p 1 Nhà xu t b n Khoa h c k thu t [3] Ph n m m Turbo C 3.TÀI LI U THAM KH O [1] PGS. cơ s và nâng cao Nhà xu t b n Khoa h c và K thu t [2] Robert Sedgewick C m nang thu t toán (b n d ch).0 .

Sign up to vote on this title
UsefulNot useful