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

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. M i ý ki n ñóng góp xin g i v : B môn Công ngh ph n m m. 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. Láng Thư ng. Khi biên so n. 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. ð ng ða. 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. tuy m c ñ trư ng có th khác nhau.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. các môn h c này là b t bu c ñ i v i m i sinh viên. Khoa Công ngh thông tin. 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. V m t n i dung. CÁC TÁC GI 3 . 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. 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. Hà N i. T i h u h t các trư ng ñ i h c và cao ñ ng nư c ta hi n nay. song yêu c u thì ngày càng nâng cao c v lý thuy t l n th c hành.

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

. 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. ð c bi t t ñ u nh ng năm 80 c a th k trư c. . ñĩa t . 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. M c dù r t khó phân ñ nh chính xác các lĩnh v c nghiên c u. chưa xác ñ nh (b t ñ nh). .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. 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 . Ngay t khi ra ñ i. 1. l p nào thì vi c tìm ñ n sinh viên A có m t ñ b t ñ nh nào ñó. băng ghi âm. 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. có m t cái gì ñó ta chưa bi t. thu t toán. truy n d n thông tin (g i là ph n c ng). Trư c th i ñi m nh n thông tin. ð 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.. là ngu n g c c a nh n th c. m i hình thành và phát tri n trong m y th p k qua. Như v y tính b t ñ nh ñã thay ñ i khi nh n thêm thông tin. lưu tr .. ð ñ t ñư c phương th c t ñ ng hóa ph i có các phương ti n k thu t. Thông tin có kh năng làm thay ñ i s hi u bi t c a con ngư i. gi s bi t thêm sinh viên A h c khoa Công ngh thông tin c a trư ng. 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. m ng máy tính và g n ñây là m ng Internet.. N u 5 . c t nghĩa. quy n sách. Thông tin v m t ñ i tư ng là các d ki n v ñ i tư ng ñó. 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. mà quan tr ng nh t là máy tính ñi n t (MTðT). chương trình (g i là ph n m m) và các thi t b tính toá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. 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ý.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. Tin h c là m t ngành khoa h c tr . 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. Bây gi .. 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 ñó. thì ñi u này ñã làm gi m ñ b t ñ nh trên. nhưng khi nói ñ n tin h c.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. cùng v i s phát tri n c a máy vi tính. Tin h c ñư c sinh ra trên mi n giáp danh c a nhi u lĩnh v c khoa 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. 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.

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

. ta s có k t qu c n tìm là (dk .16-1 = 13. ñư c ph n nguyên c a k t qu là d2. Sau ñó l y 0.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ó). Sau ñó l i l y N1 chia nguyên cho b. ñư c ph n nguyên c a k t qu là d1.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. 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 .M1 nhân v i b.160 + 4.2-1 = 14. 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. 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 .416 = D. . ð tìm bi u di n c a N trong h Cho s N= (dn-1dn-2.. r i ti n hành bi n ñ i chúng riêng bi t sang h ñ m cơ s b.. ph n th p phân còn l i sau khi l y k t qu tr ñi d1 là 0..22 + 1.162 + 3..160 + 4. Sau ñó b ng cách ghép n i các k t qu ta thu ñư c giá tr c n tìm. Ví d : 1110. L p l i quá trình ñó ñ n khi thương s Nk=0. ph n th p phân còn l i sau khi l y k t qu tr ñi d2 là 0.M1. ta chia nguyên nó cho b ñư c thương s là N1 và s dư d1. 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.161 + F.5 D3F.. .. ð bi n ñ i ph n nguyên N.. trong khi ñó con ngư i l i thư ng làm vi c trên h th p phân.16-1= 3391. ð chuy n ñ i s t h ñ m cơ s b1 sang h ñ m cơ s b2 .3.M2. sau ñó chuy n ti p s t h th p phân sang h ñ m cơ s b2.23 + 1.25 1. ñư c thương s là N2 vào s dư là d2. + d-mb-m S d ng phép toán c a h th p phân ñ tính giá tr ña th c.d-m) th p phân.12 = 1.21 + 0.. 1. d2d1).3.1 Bi n ñ i s h ñ m b t kỳ sang h th p phân: h ñ m cơ s b... 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... + d1 b1 + d0 b0 + d-1 b-1 + d-2 b-2 + .162 + 3.161 + 15..d1d0d-1d-2.M ta nhân nó v i b.20 + 1. Ví d : 5210 = ?2 . 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 + .

Máy tính ph i thi hành ñư c các l nh c a ngư i dùng ñưa vào. 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à ñ c trưng c a t ng h máy.687510 = 110100.843510 = ?16 Phép nhân 0. 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. ki m th chương trình r t khó khăn. Các s . nên vi c xây d ng. Theo nghĩa ñó MTðT x lý d li u b ng s ..496 * 16 0.) Ví d : 0. b s h c logic ñ th c hi n các tính toán.D7EF. các ký hi u. Các ñ dài t máy thông d ng là 8.936 * 16 0. nh m th c hi n nh ng công vi c nào ñó.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 .75 * 2 0.4. Ta s có k t qu c n tìm là (0.8435 * 16 0.936 14... thư ng ñư c th hi n b ng các ch s 0.. 1 (g i là các bit).3.10112 T ñây suy ra: 52. g i là t máy..843510 = E48A.010112 Ví d : 0. K t qu 13.. Ph n nguyên 13 7 14 15 . Theo ñó thì MTðT làm vi c theo chương trình có trong b nh c a nó..5 1. 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.Giáo trình Tin h c ð i cương Ti p t c l p l i quá trình này. 16.. 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. ð ñ m b o nguyên t c này. M t chương trình th c ch t là m t chu i các l nh.687510 = 0. 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... các thi t b nh p và thi t b xu t d li u. 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. khi ñó tùy theo yêu c u mà quy t ñ nh d ng khi nào. Ngôn ng máy có ưu ñi m là máy hi u ñư c ngay.6875 * 2 0. 8 .687510 = ?2 Phép nhân 0. và bit là ñơn v thông tin.75 1.976 15. 32.976 * 16 . nhưng nó quá khác bi t so v i ngôn ng c a con ngư i. cho máy nh n di n và thi hành g i là ngôn ng .4 Nguyên lý c a h x lý thông tin t ñ ng 1.D7EF.375 0.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 .16 T ñây suy ra: 58506.16 1. 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.0 Ph n nguyên 1 0 1 1 Như v y: 0. MTðT c n ph i g m ñ 5 thành ph n cơ b n: b nh ñ ghi thông tin. nó có k t thúc ho c l p vô h n. ð dài t máy là xác ñ nh...375 * 2 0. 1. Như v y: 0... bit.496 7. b ñi u khi n.843510 = 0.616 . M i lo i máy có m t ngôn ng riêng. .d1d2d3 .5 * 2 K t qu 1.

có c u trúc g n gũi hơn v i ngôn ng c a con ngư i.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. 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ô.. thành l p công ty IBM Máy ENIAC (Eckert. T khi có MTðT. . cũng như qu n lý. k thu t tính toán ñã chuy n sang m t giai ño n m i.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 . 1. 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ơ.4.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. r i ñ n bàn tính g y. 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. ð t ñ ng hóa m t s công vi c c a ngư i v n hành máy.1: M t s m c trong l ch s phát tri n máy tính Hình 1.chia. làm ñư c phép c ng (Blaise Pascal) Máy tính cơ. 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. M t s h ñi u hành tiêu bi u hi n nay là: MS-DOS. g m 18000 bóng chân không.1: Máy tính ñi n t ENIAC 9 . . 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. 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.. Các NNLT luôn không ng ng phát tri n. làm ñư c c ng. ñ tin c y. máy tính cơ ñi n. các NNLT m i luôn xu t hi n.nhân. Mauchly).. 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. khi ñó MTðT m i có th hi u và th c hi n. 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. hòn s i. Windows. khai thác các thi t b ph n c ng hi u qu hơn. M t chương trình vi t b ng m t NNLT nào ñó g i là chương trình ngu n. ch t lư ng.tr . ð n năm 1946. 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. ñ c ra b ng t bào quang ñi n. ti n b liên t c c a ph n c ng. máy tính cơ. Trên th c t .. 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ó. c a ph n m m. Linux. Ngày nay nói ñ n m t h th ng máy tính. 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.

các thi t b nh p/xu t d li u và các ñư ng truy n d n. . IBM 3090/300.. thích h p cho các m c ñích chuyên dùng. D a trên kích thư c. b nh có dung lư ng l n hơn. t c ñ tính toán lên ñ n hàng tri u phép tính m t giây. V ng d ng. Gen/Blue. b s h c-logic. máy v . C n lưu ý r ng cách phân lo i trên ch là tương ñ i. 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. Th h th tư (kho ng t sau 1980): Dùng m ch tích h p c l n VLSI. Thu c lo i này có th k ñ n các máy Cray. tiêu th năng lư ng ít hơn.) ðư 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. tiêu hao nhi u năng lư ng. . 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.. Các máy vi tính có kích thư c nh . máy in. vi t t t là PC). . t c ñ và quy mô x lý. các thi t b xu t d li u (màn hình. . giá thành r hơn các lo i máy trên. ng d ng trong nhi u lĩnh v c. ñĩa CD. 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. Sun 4.5 C u trúc máy tính V c u trúc logic. ki n trúc v t lý. Các máy tính mini có giá thành v a ph i. Ph n m m phát tri n ña d ng. ðã b t ñ u xu t hi n m t s NNLT b c cao như FORTRAN. 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 h th ba (kho ng 1965-1980): Dùng m ch tích h p thay cho bóng bán d n.).. th m chí hàng t phép tính m t giây. máy tính mini (mini computer) và máy vi tính (micro computer). V t ch c v t lý. chu t. thư ng ñư c s d ng vào các lĩnh v c quan tr ng. nên ñã d n ñư c s d ng r ng rãi. COBOL. ñ tin c y th p. c n quan tâm ñ n c y u t th i gian. vi t t t là CPU) B nh : g m b nh trong (ROM. ñã b t ñ u dùng vào các m c ñích tính toán trong qu n lý kinh t . V ng 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 . HP-300.. Các máy vi tính xu t hi n t cu i nh ng năm 70 c a th k 20. 1. ch y u dùng ngôn ng máy ñ l p trình.. 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. th ng kê. t c ñ kho ng vài ch c nghìn phép tính m t giây. IBM 360. b ñi u khi n. trư ng h c.. tính năng. ngư i ta phân chia MTðT thành các lo i: Máy tính l n (mainfraim). . m t MTðT g m các b ph n chính là: b nh . ñã ñư c s d ng trong t t c m i lĩnh v c..). M t s máy lo i này là PDP. Th h th nh t (kho ng 1946-1955): Dùng bóng ñèn ñi n t . Ph n m m chưa phát tri 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 hai (kho ng 1955-1965): Dùng bóng bán d n thay ñèn ñi n t . Th h MTðT này thư ng ch dùng trong m c ñích nghiên c u khoa h c. 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.. các thi t b ngo i vi phát tri n r t m nh m . 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. s phát tri n c a m ng máy tính. ña chương trình... t c ñ tính toán lên ñ n nhi u tri u. k c trong nh ng công ty nh . Các máy tính l n có giá thành r t ñ t. ñòi h i nhi u tính toán ph c t p. các ki n trúc song song. . .... RAM) và b nh ngoài hay còn g i là các thi t b lưu tr (ñĩa t . 10 ... h gia ñình hay ch cho cá nhân. có kh năng s d ng b nh o..

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 :

1. thư ng g i t t là DOS. Tên thư m c cũng không ñư c ñ t quá 8 ký t .. Ngoài ra. t các thư m c có th ñ n các thư m c con c a nó. D cho ñĩa c ng. S lư ng các HðH cho máy vi tính cũng không ít.) là: ph n tên và ph n m r ng. D a trên khái ni m thư m c. nhi u tư tư ng và qui ñ nh c a DOS v n ñư c áp d ng trong Windows. ñ ng ñư c t i vào b nh sau khi kh i ñ ng máy tính. g m 2 ph n. 2.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. r i phân chia ti p ra các thư m c. DOS t ch c d li u trên ñĩa m t cách logic dư i d ng hình cây. Tuy nhiên.. 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. C. Trong thư m c có th t o nh ng thư m c con c a nó. nó ñư c th hi n trên d u nh c c a DOS. Dãy thư m c và t p tin ñó g i là ñư ng d n. gi a hai thư m c ho c t p tin s d ng d u s chéo (\). 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. g i là thư m c. có th bao g m c d u cách. Có th ví thư m c như nh ng t h sơ ñ ch a h sơ là các t p tin. 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. M i t p tin có m t tên. v i “g c” là ñĩa. gi ng như khi dùng MS-DOS ñ ch y ñư c các ph n m m cũ. Ví d m t ñư ng d n: C:\GIAOTRINH\THDC\CHUONG1. ñư c phân cách b ng d u ch m (. 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. Cách t ch c d li u trên ñĩa c a HðH Windows cũng tương t như v y. MS-DOS ñã phát tri n qua nhi u phiên b n t 1. 2.. 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. 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. ðư 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.. Tên ñĩa thư ng ký hi u A cho ñĩa m m.0 ñ n 6. ph i h p ho t a các thi t b ph n c ng. chúng ch ch y ñư c trên n n DOS. và cu i cùng “lá” là các 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. . 14 . ð 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 . 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. DOS cho phép t ch c các t p tin thành t ng nhóm. .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 ñó.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).0 r i d n ñư c thay th b i HðH Windows. có nhi u ph n m m ñư c vi t t khi HðH Windows chưa ph bi 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. 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. 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. kèm theo d u hai ch m (:). nên ngay c trong Windows v n cho phép chúng ta t o ra môi trư ng DOS o.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. Hi n nay có r t nhi u HðH cho các h máy khác nhau. Thư m c hi n hành là thư m c mà ta ñang làm vi c.

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. t c là thư m c mà ta s t o thư m c m i trong nó.Giáo trình Tin h c ð i cương 2. t p tin nào.TMP <ENTER> 2) ð i tên t p tin: 15 . kích thư c t ng t p tin là bao nhiêu byte.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. Trong cách vi t l nh sau ñây. 2. n u không l nh s sai cú pháp. tên các thư m c ñ xác ñ nh thư m c c n làm vi c.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. ph n ñ t gi a d u < và d u > là b t bu c ph i có. 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\*. 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 ph n ñ t gi a d u [ và ] là ph n l a ch n. 2. <tên thư m c> là tên thư m c m i c n t 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. dùng khi s lư ng t p tin c a thư m c c n xem l n. gõ phím Enter ñ th c hi n l nh ñó. <ENTER> là gõ phím Enter trên bàn phím. Tham s /p ñ xem t ng trang màn hình.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..1. Chuy n ñ n thư m c cha: CD . tùy theo yêu c u mà có c n s d ng hay không. Sau khi vi t xong l nh. Ví d trên VANPHONG: ñĩa C hi n hành có thư m c GIAOTRINH. Trong l nh c a DOS không phân bi t ch hoa và ch thư ng.1. <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 H ñi u hành Windows 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. 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. Nút Start ch a ñ ng nhi u ch c năng quan tr ng c a Windows. ð t t máy ch n Turn Off Computer --> Turn Off. 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. Windows ñã có m t quá trình phát tri n khá dài. 16 .2. Mu n th c hi n chương trình nào ta nháy ñúp chu t vào bi u tư ng ñó. 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. Nh ng phiên b n ñư c s d ng r ng rãi ñ u tiên là Windows 3. sau khi kh i ñ ng máy. Sau khi ñăng nh p. ch n All Programs ta s có danh sách các chương trình ñã cài ñ t trên máy. Windows 2000. v i các th c ñơn (menu). 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). t gi a nh ng năm 80 c a th k 20. 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. N u máy tính ñã cài ñ t HðH Windows.1. c a s và bi u tư ng. Các phiên b n ñư c s d ng ph bi n hi n nay là Windows 98. Windows XP.1 M t s ñ c ñi m HðH Windows là bư c phát tri n ti p theo c a MS-DOS. Windows s t ñ ng n p và ch y. ñĩa 2. Trong Start. 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.0 và Windows 3. ñ kh i ñ ng l i máy ch n Turn Off Computer --> Restart.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. Các thao tác trên Windows r t tr c quan và d dàng.

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

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. 18 . - Hình 2.. .Giáo trình Tin h c ð i cương Hình 2.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.) là thao tác b m nhanh 2 l n liên ti p phím trái chu t. Con chu t thư ng có hai phím: phím trái và phím ph i. dùng ñ ch n m t ñ i tư ng nào ñó.. . kích ñơn. kích ñúp. 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). Thao tác này dùng ñ di chuy n v trí hay thay ñ i kích thư c m t ñ i tư ng. thư ng dùng ñ kích ho t m t ñ i tư ng nào ñó. Thao tác kéo-th : b m và gi phím trái chu t.4: Sau khi ch n Log Off Hình 2.E. nh phím b m ra. 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. ) là thao tác n vào nút trái chu t. ho c b m t h p phím t t: . kéo chu t t i v trí d ñ nh. 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.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...

.. 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.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 . cách t ch c này cũng gi ng như DOS. ñ ñóng m t thư m c: b m ch n bi u tư ng d u tr . Hình 2.Giáo trình Tin h c ð i cương Hình 2. 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. ta gi phím Ctrl r i l n lư t b m ch n các t p tin. 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ó.2. 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.7: Windows Explorer 2. 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. ñ 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. 19 . theo ki u. .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.

ðánh d u ch n ñ i tư ng c n sao chép. ch n Copy. Ch ng h n ñ sao chép các t p tin vào m t thư m c nào ñó. thư m c sau khi th c hi n các thao tác trên không b xóa h n. Hình 2. thư m c: Hình 2. Chú ý: các t p tin. ch vi c thay Copy b ng Cut.11: Bi u tư ng thùng rác Thao tác trong Windows Explorer ch y u s d ng chu t. vi c t h c và làm ch các thao tác. r i kéo và th vào bi u tư ng thùng rác. ch n các t p tin. ð xóa các t p tin. b m chu t ph i vào ñ i tư ng. thì ta c n gi phím Shift khi ch n ch c năng Delete. mà ch b ñưa vào thùng rác. b m chu t ph i. 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ó. b m chu t ph i. ch n Paste trên b ng ch n t c th i.9: B ng ch n khi Copy ð i tên t p tin. tr c quan. ch n ch c năng Rename trong b ng ch n. 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. N u mu n xóa h n t p tin. ch n Restore. ngoài các thao tác ñơn gi n. N u mu n thay vì sao chép. cu i cùng gõ tên m i. nơi ch a ñ i tư ng. B m chu t ph i ñ m b ng ch n t c th i. Tuy nhiên v i giao di n ñ h a. ch n ch c năng Delete trong b ng ch n ho c gõ phím Delete trên bàn phím. 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). thư m c c n ph c h i. Hình 2.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. thư m c: Ch n m t ñ i tư ng (t p tin ho c thư m c).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. Chúng tôi ch gi i thi u ñây m t s ki n th c cơ b n nh t. 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 . Xóa t p tin. thư m c nào. 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. nên t n d ng thêm kh năng kéo-th . ta có th b m ch n các t p tin ñó. N u mu n ph c h i ta ch c n vào thùng rác. vì các kh năng c a HðH Windows r t phong phú. 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.

theo ñó máy th c hi n gi i bài toán. b n thân nó không th t gi i các bài toán trong th c t ñư c. 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. b=r.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).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 . 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. không gây nh p nh ng. n u r<>0 ñ t a=b. 3. Input: a. 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). sơ ñ kh i. B n thân máy tính ch là m t v t vô chi vô giác.b. 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. 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. Do ñó. do con ngư i b o nó làm thông qua m t ngôn ng l p trình. ñâ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.1 ð c t t nhiên (Li t kê t ng bư c) 21 . mà nó ch có th th c hi n ñư c các l nh. 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 hai s nguyên dương Output: ƯSCLN c a a.Giáo trình Tin h c ð i cương CHƯƠNG 3 – THU T TOÁN 3. ð 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 ñó. 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. 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. ki m tra r<>0?. …. gi mã. không có tư duy. m i bư c các thao tác ph i rõ ràng. M t thu t toán là t t thì nó ph i ñơn gi n.2. Tính xác ñ nh: ch n. 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. 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. ti t ki m b nh và th i gian th c hi n.

2.. a≠ 0.4ac Bư c 3: Ki m tra ∆: .N u ∆>0 thì k t lu n phương trình có 2 nghi m x1=(-b + ∆ )/(2a). b=?. 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.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.. 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 . Th c hi n công vi c A n l n.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. 2. c=? c a phương trình Bư c 2: Tính ∆ = b2 .∆ )/(2a) 3.N u ∆ < 0 thì k t lu n phương trình vô nghi m . b. c là các s th c. . ban ñ u Bi n ñư c gán b ng 1. Bư c 1: Xác ñ nh các h s a=?.N u ∆ = 0 thì k t lu n phương trình có nghi p kép x1=x2=-b/(2a) . 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.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.

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ưng có m t s như c ñi m là ph i v khá nhi u.3. a≠0. d hi u. x ∈ R. b. Các bư c này ñư c s p x p theo m t tr t t nh t ñ nh. Trong ñ c t ñó ch ra bư c nào th c hi n trư c bư c nào th c hi n sau. d ki m tra.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 .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. C u trúc tu n t C u trúc r nhánh C u trúc l p 3.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. Begin Input: a. 23 . 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. c. b. 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). 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. không thu n l i cho bài toán ph c t p. 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. 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. c ng k nh. 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.

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. Ví du: Tính di n tích. N u k t qu ki m tra có giá tr ñúng s th c hi n theo nhánh ñúng.3. chu vi c a m t hình tròn bán kính r. 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 . 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. 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. n u sai s th c hi n theo nhánh sai.1 thì th t th c hi n các bư c là: th c hi n bư c 1.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. ñâ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). 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.2.

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 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. Trong mi n tác ñ ng có th bao g m m t t p c u trúc cơ b n..Giáo trình Tin h c ð i cương begin Input :a. 25 .3. 2. ði u ki n k t thúc vòng l p là m t bi u th c lôgíc. Sơ ñ kh i th hi n c u trúc Bi n = 1. .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.

S d ng sơ ñ kh i mô t thu t toán begin s = 0. Tăng giá tr n lên 1 ñơn v (n = n + 1). n end 26 .5 S ð s = s + 1/n n = n +1 s. ð 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.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. Kh i t o giá tr ban ñ u n = 0. n = 1 s < 2. s = 0. + ≥ 2. Bư c 2. tính s = s + Bư c 3. 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 + + . Ki m tra: 1 n N u s >= 2.5 thì quay l i th c hi n l i bư c 2..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ì d ng l i ta có n là giá tr c n tìm N u s < 2.5.

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

. M2.. Tính S = 2006 + x + x2 xn + . Mn.. 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 .. + (−1) n 1! 2! n! Ví d 4: Cho x là s th c.... n là s nguyên dương. .. Tính S = | x+ (1+x)3 + (2+x)3 + … +(n+x)3| Ví d 3: Cho x là s th c. + 2! n! Ví d 5: Cho n ñi m trên m t ph ng t a ñ ð các xOy: M1. i ) ) i =1 Ví d 1: Cho x là s th c. 2. n i = 1.. 2. Tính s = 2006 − x +1 x + 2 x+n + − .. n là s nguyên dương.. n là s nguyên dương. n là s nguyên dương.Giáo trình Tin h c ð i cương Begin Input: n i = 1. Tính t ng theo công th c (công th c t ng quát d ng S = f(x) + ∑ g ( x. Tính giá tr c a ña th c Pn(x) = a0 + a1x + a2x2 + … +anxn n Bài 2. Tính S = ex + 1 + x2 1 + xn 1+ x + +…+ 2 3 n +1 Ví d 2: Cho x là s th c. 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...

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).. Các bài toán qui v thu t toán tính tích Bài 1. Tính tích t t c các ph n t c a dãy. . . a2.9]? Bài 5: Cho dãy s th c x1.. Tìm ư c chung l n nh t c a 2 s ? Bài 3: Cho dãy s nguyên a1. Cho s t nhiên n. 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. 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. Cho s th c x.Giáo trình Tin h c ð i cương 3. Tính S = n! Bài 2.. 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.. x2. s t nhiên n.4 Bài toán tính tích m t dãy s Bài toán: Cho 1 dãy n s . .. 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. xn. an. 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.4. Tìm giá tr l n nh t trong s các ph n t âm c a dãy? 31 .. xn... x2...

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

có các công c m nh ñ qu n lý b nh và các thi t b ngo i vi. Trong quá trình phát tri n ñã xu t hi n nhi u phiên b n C khác nhau.b chương trình d ch r t hi u qu . năm 1990 ANSI [1] ñã xây d ng ngôn ng C chu n (ANSI C). ña phương ti n. chúng tôi cung c p nh ng ki n th c cơ s c a Turbo C. 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. Thư ng m i l nh ñi u khi n có th vi t theo nhi u d ng. Các câu l nh ph c t p ñư c gi i thi u d n d n t d ñ n khó. Sau ñó C ñã nhanh chóng ñư c s d ng trên các máy tính PC. các ng d ng x lý ñ ho .while. 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. Chương 4: trình bày cách t ch c chương trình thành các hàm. giáo viên. 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. 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. các quy t c xây d ng và s d ng hàm. Java. nh ñó vi c dùng ngôn ng C tr nên d dàng hơn. t C có th nghiên c u các ngôn ng tân ti n khác như C++. Visual C++.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. công văn ñi ñ n. 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. ñó là toán t r nhánh if. Các v n ñ lý thuy t ñư c gi i thích t m và ñư c minh ho b ng nhi u ví d . và các toán t t o l p chu trình (vòng l p) for. h c sinh. 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. C hi n ñang không ng ng phát tri n. .. 33 . 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. while. ð ti n t i s th ng nh t. Các v n ñ hay và khó ñây là con tr và k thu t ñ quy. x lý văn b n.. Ph l c 1: trình bày b ng mã ASCII.. Năm 1987 hãng Borland ñã cung c p ph n m m Turbo C . m ng.. 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. ðã 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 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 . hoá ñơn bán hàng. Trong ph n II này.. Chương 2: trình bày các ki u d li u. 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 trên Windows.. cơ s d li u. do . ti n l i. phi u xu t nh p v t tư.

4ac Ký t ∆ không cho phép dùng trong ngôn ng C.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. còn HANOI g m 5 ký t .: [] {} ?! \ & | % # $ . ñ vi t các toán t và các câu l nh. Ngoài ra ñ giúp b n ñ c mau chóng ti p c n v i máy..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 . Ví d HA NOI g m 6 ký t . ch th #include và nh ng qui t c c n lưu ý khi vi t chương trình..* / = ( ) Ký t g ch n i: _ ( chú ý: phân bi t v i d u . Ngôn ng C ñư c xây d ng trên b ký t sau: 26 ch cái hoa: A B C . Chúng thư ng ñư c s d ng ñ khai báo các ki u d li u.. 9 Các ký hi u toán h c như: + . 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. chúng tôi s trình bày ñôi ñi u v câu l nh gán. 1.. . t khóa và tên. bi t cách th c hi n chương trình trên môi trư ng Turbo C 2. D u cách (space) th c s là m t kho ng tr ng dùng ñ tách các t . vì v y ta ph i dùng m t cách ký hi u khác như d hay delta.. 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. ð c xong chương 1 b n có th l p ñư c m t s chương trình ñơn gi n.0 1. 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. ð n lư t mình. ð có th l p ñư c m t chương trình ñ y ñ .. 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.0 và Turbo C++ 3. 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 .. . 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 . Z 26 ch cái thư ng: a b c . các câu l nh vào ra. Các ký t ñư c nhóm l i theo nhi u cách khác nhau ñ l p lên các t . 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 ñó..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ác ký hi u ñ c bi t khác như: .. z 10 ch s : 0 1 2 .

bi n.4. ð khai báo các bi n nguyên (ki u int) ta dùng t khoá 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 m ng. ð i v i bi n th c (ki u float) ta dùng t khoá float. Chúng ta có tên h ng. 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 . ñây chúng ta ch c n bi t vài ñi u sơ lư c... .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. 1. T khóa ph i ñư c vi t b ng ch thư ng. hàm.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. M i bi n trư c khi s d ng ñ u ph i khai báo ñ xác ñ nh ki u c a nó.3 Tên Tên là m t khái ni m r t quan tr ng.. tên nhãn.. tên con tr .. tên hàm. Ch ng h n không ñư c vi t iNT mà ph i vi t int. nó dùng ñ xác ñ nh các ñ i tư ng khác nhau trong m t chương trình. 1. Ký t ñ u c a tên không ñư c là s . ch hoa và ch thư ng ñư c xem là khác nhau. Ví d : 35 .2).4 M t s khái ni m 1. s và d u g ch n i. như v y tên AB khác tên ab. ð 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 . Tên không ñư c trùng v i t khóa (xem 1. 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. m 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. V n ñ khai báo s nói k trong chương 2. tên c u trúc. tên bi n.

z.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.y. Ví d : { int a. b=3. m ng(1) có th ñ t l nh. 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. b. Kh i l nh là m t dãy các câu l nh ñư c bao b i c p d u { và }. x = 10.c. C xem m t kh i l nh cũng như m t câu l nh riêng l .5.Giáo trình Tin h c ð i cương int a. Ví d : Sau khi th c hi n ño n chương trình: float x. Chú ý: khái ni m gán không gi ng như khái ni m ñ ng th c trong toán h c. 2.2 H ng H ng là các ñ i l ong có giá tr không ñ i trong chương trình. ho c có th vi t ñ u kh i Các khai báo bi n. a=2. 1.b).b. Khái ni m này s ñư c ñ c p chi ti t trong 2.5. 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.5. ñây ta có th hi u toán t gán có d ng: Trong ñó b là m t bi n. /* khai báo các bi n x. Khai báo ñ u kh i l nh ñ u c a m t hàm.4. /* khai báo các bi n a.b. Ví d : clsrcr(). printf("Hello"). (1) Các khái ni m này ñư c trình bày t p h p c a nhi u bi n. 1.y. ví d : { int a.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 ñó. } Chú ý: V m t cú pháp. bi n x s nh n giá tr là 18.3 Toán t gán Câu l nh gán s nói k trong chương 2.c[50]. 2. 1.b.2. c ki u int */ float x. còn bt là m t bi u th c toán h c nào ñó. ð 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.a.4. m ng là 36 .4.4. 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. b = bt.2.3. printf ("\n%6d%6d". x = 2*x .

do ñó l nh printf bên trong s in giá tr c a bi n a kh i l nh bên trong.7. 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. a). x = 5. 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. T bên ngoài m t kh i l nh. ta có th ñưa thêm vào các l i chú thích. } ðo n chương trình trên có hai l nh printf gi ng nhau. y=a*x. } 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. kh i l nh bên trong. nhưng là hai bi n a khác nhau. ngoài các câu l nh. b = 5.z. z=b*x.y. { int a=4. 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 ñó.2f\nz=%8. 37 . 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. hay nói cách khác. a = 3. 2 Bi n a bên trong ñư c ưu tiên hơn so v i bi n a bên ngoài. bi n a bên trong ñã “che”2 bi n a bên ngoài. 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. và s m t ñi khi k t thúc kh i l nh. a).t[20][30]. nó ch có tác d ng ñ i v i ngư i ñ c chương trình.2f". ngoài và m t kh i l nh bên trong.5 Chú thích Trong m t chương trình. Trên nhi u dòng. 1. } printf("a = %d\n". cùng in ra giá tr c a a.y. Các bi n ch t n t i trong kh i l nh mà bi n ñư c khai báo. máy s c p phát b nh cho bi n và m ng. m t khi ñó hai bi n ñó là hai bi n ñ c l p cùng tên.Giáo trình Tin h c ð i cương float x. printf ("a = %d\n". 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.z). 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.4. S các kh i l nh l ng nhau là không h n ch . Ví d xét ño n chương trình: { int a=5. printf ("\ny=%8.

/* Tính chu vi và diên tích hình tròn 38 . Trong TC 3. /* 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"). Ví d : clrscr(). Câu l nh printf trong b n 2 in ñư c hai dòng. /* Chương trình in hai dòng ch . /* 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.B n 1 */ #include <stdio.B n 2 */ #include "stdio.h" #include "math.cv. Ví d 1.h" /*S d ng thêm thư vi n các hàm toán h c*/ void main() { float r. 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. /* Chương trình in 2 dòng ch .h> void main () /* hàm chính */ { /* Xu ng dòng (\n) và in: TURBO C HAN HANH */ printf("\nTURBO C HAN HANH").&r). getch().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.h" void main () /* hàm chính */ { /* Xu ng dòng.Giáo trình Tin h c ð i cương Trên ph n còn l i c a m t dòng. // xoá màn hình // in ra màn hình dòng ch Hello 1. Ph n chú thích s b t ñ u t d u // ñ n cu i dòng.h" #include "conio.h" /* s d ng thư vi n vào ra chu n */ #include "conio. 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. Ví d 2. #include "stdio.0 ta có th dùng d u // ñ chú thích. /* Xu ng dòng và in: LAM QUEN VOI BAN */ printf("\nLAM QUEN VOI BAN"). getch(). /* 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= "). /* Nh p m t giá tr th c ñưa vào bi n r */ scanf("%f".h> /* s d ng thư vi n vào ra chu n */ #include <conio. in: TURBO C HAN HANH. ð 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 /* */.dt. printf(“Hello”).

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

ði u này s ñư c trình bày chi ti t trong chương 4. 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. Trong chương trình trên có dùng hàm chu n printf. D ch và ch y chương trình. ho c có th thêm vài hàm khác.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. M t chương trình có th ch có m t hàm chính (main) như các ví d trên. Hàm này có trong t p stdio. Quy t c th hai là quy t c vi t các l i gi i thích.Trên ph n còn l i c a m t dòng. các l nh… } xây d ng các hàm ñã khai báo 1. như cu i m t câu l nh. Qui t c th tư nói v c u trúc c a m t chương trình. vì v y ñ u chương trình c n vi t: #include "stdio.h (trong thư m c c a C).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.. Chúng ch có tác d ng ñ i v i ngư i ñ c. Qui t c th ba là qui t c s d ng các hàm chu n. Ví d : printf("\nTURBO C HAN HANH\ \nLAM QUEN VOI BAN"). 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. ta ñ t thêm d u \ trư c khi xu ng dòng.h" Ta cũng chú ý r ng: cu i dòng này không có d u . ðâ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. . ð 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. . 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: . 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.Trên m t dòng.Trên nhi u dòng. 40 . 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. 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() { .

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

7E+308 long double 3. 2.4E-38 ñ n 3. bao g m ki u nguyên và ki u th c.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. 2. 2. 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. 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.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. 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.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 ñó.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. Ph m vi bi u di n c a s double ñư c hi u theo nghĩa tương t .4E-38 → 3.3 Bi u di n các ki u khác qua ki u cơ b n Ki u ký t 42 . hay ki u d u ph y ñ ng dùng ñ lưu các giá tr th c. Trong C cho phép s d ng ba ki u d u ph y ñ ng là float.4E+38 double 1.1. S có giá tr tuy t ñ i nh hơn 3.Giáo trình Tin h c ð i cương CHƯƠNG 2 .7E-308 → 1. bi n ki u th c dùng ñ lưu các giá tr th c.1. 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. Ví d bi n có ki u nguyên dùng ñ lưu các giá tr nguyên. B ng sau ch ra các ki u s nguyên và ph m vi bi u di n tương ng. 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.1 Các ki u d li u cơ b n Trong chương này.4E-4932 → 1. double và long double.4E+38.4E-38 ñư c xem b ng 0.1.

35 -4563. Nhóm các ký t văn b n có mã t 32 ñ n 126.2. Ch ng h n ký t mã 13 dùng ñ chuy n con tr v ñ u dòng. Hai ph n này cách nhau b i ký t e ho c E.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. ví d : 214.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. ký t 10 chuy n con tr xu ng dòng dư i (trên cùng c t). ngư i ta dùng m t s nguyên lưu mã c a ký t ñó trong b ng mã. 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. m i ký t ñư c bi u di n b ng m t s nguyên 8 bit. V i b ng mã ASCII3. b n ñ c tham kh o b ng mã này ph l c 1 43 . d u ch m th p phân và ph n th p phân. - Ki u ñúng sai Trong TC quy ñ nh r ng.0123456) (bi u di n giá tr 120. 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). 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. Ph n ñ nh tr là m t s nguyên ho c s th c d ng th p phân.Giáo trình Tin h c ð i cương ð bi u di n các ký t . 2. Các ký t này có th ñưa ra màn hình và máy in. ph n b c là m t s nguyên. 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.456E-4 0. 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.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.34 15.12E3 (bi u di n giá tr 0. Ví d : 123. ví d cho phép vi t: . Các ký t nhóm này nói chung không hi n th ra màn hình. Dư i ñây trình bày cách bi u di n các h ng trong C. Nhóm các ký t ñ ho có mã s t 127 ñ n 255. 2. 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 .0) 3 ASCII: American Standard Code for Interchange Information.48 234.

vì v y ngoài các giá tr t 0 ñ n 9..0) 2. còn dùng các ký t t a (ho c A) ñ n f (ho c F) ñ bi u di n. 0XA9 Các h ng trên cùng bi u di n m t giá tr . H ng bi u di n trong h 16 b t ñ u b ng 0x ho c 0X. Ví d : '9' tương ñương v i 57 44 .2.. Ví d : -45 4007 635 .0 là h ng th c (d u ph y ñ ng). trong h 10 là: 10*16 + 9 = 169 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 . Giá tr c a nó trong h 10 là 3*8*8 + 4*8 + 5 = 229 2.2.0. S 125 là h ng nguyên còn 125. 2.2. H ng nguyên h 8 luôn luôn nh n giá tr dương.495) (bi u di n giá tr 100000000.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. khi ñó các ch s phía sau ph i n m trong kho ng t 0 ñ n 7.5e-2 1e8 (bi u di n 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. Ví d : 0xa9 .Giáo trình Tin h c ð i cương -49. 2. Chú ý: phân bi t 125 và 125. 0xA9.2.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 .2.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. khi ñó giá tr c a h ng b ng mã ASCII c a ký t ñó. Ví d : 0345 là m t h ng nguyên h 8. 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. 0Xa9 .

0f. Vi c khai báo bi n ñư c th c hi n theo m u sau: 45 . trong ñó các ký t ñư c ñ t trong hai d u nháy kép. 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. 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. 2. ví d : float r. ví d s pi. Tên bi n là tên m t vùng nh trên RAM ñ lưu tr d li u. Trong trư ng h p này. r = 5. 'a' là h ng nguyên ñư c lưu tr trong m t byte. Ví d : #define MAX 1000 #define PI 3.3 Bi n 2. s. 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.8 ð t tên cho h ng M t s h ng có ý nghĩa ñ nh trư c.2. giá tr c a nó có th ñư c thay ñ i trong quá trình chương trình th c hi n.3. chúng ta có th s d ng chúng trong các bi u th c. ngư i ta dùng cách bi u di n v i d u \.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.2.141593 Khi ñã ñ t tên cho các h ng. chúng ta có th ñ t cho h ng ñó m t cái tên. s = PI*r*r. M i bi n c n ph i khai báo trư c khi s d ng. 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. Khai báo Như ñã ñ c p 1. 2. 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". dùng ch th #define.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.1.4. bi n là ñ i lư ng dùng ñ lưu tr các giá tr trong quá trình tính toán. ð ñ t tên cho h ng. 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 ).

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

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 . tên là a. các ph n t m ng có ñ a ch liên ti p nhau.. M i ph n t m ng có vai trò như m t bi n và ch a ñư c m t giá tr .. 2. và m ng y có th bi u di n ñư c m t b ng s th c 3 dòng. Kích thư c c a các chi u là 4 và 2. ñi u này ñã nói các m c trên. - ð i v i m ng th hai thì ki u là int. M ng c n ñư c khai báo ñ ñ nh rõ: Ki u m ng (int. - ð i v i m ng th ba thì ki u là float.4.2 Ch s m ng 47 . 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. x[2]. b[4][2]. kích thư c c a m i chi u là 3. s chi u là 2. s xác ñ nh 4 m ng: a. s chi u là m t. Ý nghĩa c a chúng như sau: - ð i v i m ng th nh t thì ki u là int. s chi u là 2. x và y. Trong b nh .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. 3 c t. tên là y. 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. kích thư c b ng 10. 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. M ng có 8 ph n t . ) Tên m ng S chi u và kích thư c m i chi u.. tên là b. M ng có 9 ph n t . Các khai báo: int a[10]. float double. 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. float x[5]. s chi u là m t. các ph n t c a m ng hai chi u ñư c s p x p theo hàng. kích thư c b ng 5. 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. Nói cách khác. x[1]. 2 c t. y[3][3]. tên là x. - ð i v i m ng th 4 thì ki u là float. Có bao nhiêu ki u bi n thì cũng có b y nhiêu ki u m ng. 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. x[3]. M ng có 5 ph n t ñư c ñánh s như sau: x[0]. b.

H ng. j là các bi n nguyên trong ñó i=2. 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. nhưng nói chung không cho phép l y ñ a ch ph n t m ng nhi u chi u. 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 . j=1. . y ñã ñư c khai báo như trên và gi s i. Trong C ñưa ra nhi u quan ni m m i v bi u th c như bi u th c gán. 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.).4.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 . Có m t vài h n ch trên các m ng nhi u chi u.. Ch ng h n có th l y ñ a ch ph n t m ng m t chi u.ví d -(a+b) nhưng không có phép +. s nguyên ñó là ph n nguyên c a thương s ). 2. ch c n hai ch s 2.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 ñó. c n hai ch s b[i][j][1] vì b là m ng hai chi u.5..5 Các phép toán trên các ki u 2. bi u th c ñi u ki n. 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ác m nh ñ logic. x. bi u th c ñư c phân thành ñúng (giá tr khác không) và sai (giá tr b ng 0). 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. 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.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. 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. Gi s a.5. bi n. S ch s ph i b ng s chi u c a m ng. ví d : 11/3 = 3 48 . ph n t m ng và hàm cũng ñư c xem là bi u th c.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ó. b.

Nói cách khác. ta nh n ñư c giá tr 0. 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.có cùng s ưu tiên.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 ñư c th c hi n t trái sang ph i. 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. nó không áp d ng ñư c cho các giá tr ki u float và double. ví d : (a*a-b*b)/(x*x+y*y) 2.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 . 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 s h c dùng ñ vi t các công th c toán h c. khi các ñi u ki n nêu ra là ñúng thì ta nh n ñư c giá tr 1. 2. trong trư ng h p trái l i.5. các phép toán logic cho ta giá tr 1 (ñúng) ho c giá tr 0 (sai). 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.5. 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. Nói chung.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. 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. và nh hơn s ưu tiên c a * / và %.

s tr ñi 1. Ch ng h n n u n ñang có giá tr b ng 5 thì: Sau phép tính ++n. S khác nhau gi a --n và n-. 50 . ði u này x y ra trong toán t gán.. Toán t tăng ++ s c ng 1 vào toán h ng c a nó. 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. n có giá tr 6 Sau phép tính --n. còn câu l nh x = ++n. 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. Ví d : N u n b ng 5 thì câu l nh x = n++. s gán 5 cho x. còn trong phép ++n thì n ñư c tăng trư c khi nó ñư c s d ng. Vi c ch n phương án này hay phương án khác là tùy thu c ng c nh.cũng như v y. R t nhi u ví d như v y có th tìm th y trong các chương sau. toán t gi m -.. while và do while. Phép toán tăng gi m thư ng ñư c s d ng trong các toán t for. n có giá tr 4 D u phép toán ++ và -. trong vi c truy n giá tr các tham s th c s cho các ñ i (chương 4).Giáo trình Tin h c ð i cương Trong ñó a và b có th nguyên hay th c. ñ tăng hay gi m giá tr cho các bi n ñi u khi n. Trong c hai trư ng h p n ñ u tr thành 6.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). s gán 6 cho x. Ví d : 3>7 có giá tr 0 7>3 có giá tr 1 3 && 7 có giá tr 1 ! 15. 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..5.có th ñ ng trư c ho c sau toán h ng.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.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. 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. trong câu l nh return (chương 4).5. while.

ñưa ra giá tr nh nh t c a hai bi n th c a và b. 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.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. Ví d câu l nh: x = x*(y+3). khi vi t a = b = 5.5. 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. Ví d : printf("\n %8. 2.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). Trong trư ng h p các bi u th c gán có d ng như: i = i+2. Các bi u th c gán này có d ng: <bi n> <phép toán> = <bi u th c>. trong ñó v trái ñư c l p l i có th vi t g n hơn như sau: i += 2. M t s d ng khác c a toán t gán. Th t ưu tiên c a các phép toán ñư c trình bày trong b ng sau.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). 2. v ph i là m t bi u th c. 51 .Giáo trình Tin h c ð i cương Cu i cùng. Trong ñó <phép toán> là m t phép toán hai ngôi. ñ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.2f".5. có th vi t thành: x *= y+3. 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>. N u ñ t d u . vì vi c ñó có th d n ñ n các k t qu sai. a < b ? a : b).5. Ví d . Giá tr c a bi u th c gán là giá tr ñư c gán. 2. K t q a là b=5 và a=5.

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

Ví d . 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. printf(“Tong cua %d va %d la %d”. Ví d . như in ra các giá tr c a m t ma tr n. for (i = 1. i <= 10. k t qu ñưa ra màn hình như sau: Tong cua 10 va 25 la 35 Trong ví d trên. a). } } 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 . a. a = 10. ñ ñư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. 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. khi ñó ch c n ñưa vào chu i ñi u khi n không ch a các ñ c t . trong m t s trư ng h p. m c dù s v trí c n thi t ñ in ra giá tr ñó có th nh hơn.h> void main() { int i. b. b = 25. Tuy nhiên. i++) { a*= 2. a.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. 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. 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. a = 1. thì chúng ta c n dành m t s v trí nh t ñ nh cho m t giá tr . 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 . giá tr c a a. N i dung c a xâu s ñư c ñưa ra màn hình. ñ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. i. b. a + b). có th dùng l nh: printf(“\nNhap he so da thuc: ”). Ví d . chúng ta dùng ñ c t %d. m t câu hư ng d n. printf("2 ^ %2d = %4d\n". ño n mã sau ñưa ra t ng c a hai s nguyên: int a. Trong ño n mã trên. ho c in các giá tr theo d ng c t. 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.

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

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

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

y=a+b. 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. Tìm các ch sai trong ño n chương trình float a[3]. x=%10. a[10] = 4. 456398461).2f ".2f. b=%10. h ng int. 57 . a. Tìm các ch sai trong ño n chương trình { int a = 6.2f. float b=5. h ng int h 8. } 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. Bài 3. h ng int h 16.h" void main() { printf("\na=%10. Bài 2. 4635.0f. a[0] = 5. y).3. b=%10d. d=%10d". b. Tìm các ch sai trong chương trình sau #include "stdio. -3456. } S a l i cho ñúng r i th c hi n trên máy. a[b] = 7. h ng long. } printf("\na=%10. h ng xâu kí t ). { float x = a*b.Giáo trình Tin h c ð i cương BÀI T P CHƯƠNG 2 Bài 1. y=%10. c=%10ld. Bài 4. 25e3. x. h ng kí t .2f. b = 2.

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ó. while. continue. 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. 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 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..Giáo trình Tin h c ð i cương CHƯƠNG 3 . 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). for. Kh i l nh là m t dãy các câu l nh ñ t trong các d u { }. 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.do while) Ngoài ra còn có m t s l nh khác có ch c năng b tr như break. Dư i ñây khi trình bày các l nh ñi u khi n như if.CÁC L NH ðI U KHI N M t chương trình bao g m nhi u câu l nh. 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. Các l nh ñi u khi n cho phép thay ñ i tr t t nói trên. 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. 3. ta dùng thu t ng "kh i l nh".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. Không ñư c ñ t d u ch m ph y sau d u ngo c nh n k t thúc kh i. phong phú và m nh m . ñây ta ch nh c l i vài ñi u. g i là bi u th c ñi u ki n.. switch ) T ch c chu trình (for. while. 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.4. 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. 3. 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. ðư 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.. 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. 3. .2. M i nhánh c a l nh if là m t kh i l nh khác nhau. 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.4.2.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 .

máy s tính giá tr c a bi u th c.&a. N u bi u th c ñúng máy s th c hi n kh i l nh 1.h> void main() { float a. /* Chuong trinh tinh max cua hai so thuc. 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. 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ó. else max = b. ð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. if (b > max) max = b. } 3. ð 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.max. 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. khi ñó k t thúc câu l nh ph i có d u ch m ph y. max ).max. max)./*gia tri cua a va b nhan tu ban phim*/ max = a.2f". printf("\na = %8.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. bi u th c ñi u ki n có th là m t bi u th c b t kỳ.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. &a.2.2f\nb = %8. sau ñó nh y t i các l nh vi t sau kh i l nh 2.2f\nmax = %8. b. Các kh i l nh có th là m t câu l nh ñơn. a. scanf("%f%f". 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. scanf("%f%f". 3. Ví d sau minh ho cho ho t ñ ng c a câu l nh if.2f". dung if dang 2 */ #include <stdio. printf("\nVao hai so a va b: "). 59 .b.&b)./*gia tri cua a va b nhan tu ban phim */ if (a > b) max = a.3 S l ng nhau c a l nh if Các l nh if có th l ng nhau. a. &b). b.h> void main() { float a.2f\n b = %8. 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. } /* Chuong trinh tinh max cua hai so thuc. printf("\na = %8.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ó. printf("\nVao hai so a va b: ").2f\n max = %8.

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

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

&n).0. printf("\nSo phan tu cua day: "). min = a[i][0].0. i++. 35.2f\n". j. x[i] = x[j].0. 62 . for (i = 0. #include <stdio. for(i = 0. } printf("Day so vua nhap:\n").2f va %. for (j = 0. } printf("Gia tri lon nhat va nho nhat cot %d la %. i < n. x[i]). i++) printf(“%8. max.0. i . min).0} . -38. a[i]). for (i = 0. int n. } 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.0}}. 0. i < n. } } 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. i++) printf("%8. {34. 3. { 1. } printf("\nDay ket qua: \n"). float max.5. i++) { max = a[i][0]. i + 1).1. j = n . j--) { c = x[i]. min. i < n. void main() { int i.h> void main() { float a[100]. -25.0. 46. i + 1. x[j] = c.0. 6. i < j.3}. } 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. if (min > a[i][j]) min = a[i][j]. scanf("%f". for (i = 0. i < 3.0.h> float a[3][4] = { {15. j < 4.Giáo trình Tin h c ð i cương for(i = 0.0. -13. 46. Trong chương trình s d ng các chu trình l ng nhau.2f". #include <stdio. scanf("%d". &a[i]). j++) { if (max < a[i][j]) max = a[i][j]. i++) { printf("Phan tu thu %d: ".2f".

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

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

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

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

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

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

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

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. Nhi m v c a hàm main là ñ c ba giá tr t bàn phím. float c) { float max. dùng hàm max3s ñ tính max c a ba giá tr v a ñ c ñư c.1. x. ñưa k t q a ra màn hình.float b. scanf("%f%f%f". c.1. 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 .2f". c. #include <stdio. b.1 T ch c chương trình thành các hàm 4. void main() { float x. return (max>c?max:c). printf("\nx = %0. Cũng có hàm không ñ i như hàm main trong các ví d trên. Trong cùng m t chương trình. &x. float b.2f\ny = %0. Chương này s gi i thi u các qui t c xây d ng và s d ng hàm. &y. b. 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. 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. max = a>b?a:b.Giáo trình Tin h c ð i cương CHƯƠNG 4 .2f\nmax = %0. 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. z.float c). 70 . 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.h> /* Nguyen mau ham max3s */ float max3s(float a. printf("\nNhap ba so thuc: "). } /* Dinh nghia ham max3s */ float max3s(float a. &z). 4. Chương trình ñư c vi t như sau. /* 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. z)). y. y.2f\nz= %0. 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. 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. 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. z. C ba ñ i này ñ u có ki u giá tr float.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). y. Tuy nhiên trong nguyên m u có th b tên các ñ i. max3s(x. 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. Ví d hàm max3s có ba ñ i là a. Hàm thư ng có m t vài ñ i.

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

c u trúc. c/ Th c hi n các câu l nh trong thân hàm.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. Nói cách khác. c n ph i truy n cho m i tham s m t giá tr .1.. 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). 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ó. b/ Gán giá tr c a các tham s th c cho các ñ i tương ng. 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. + ð 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. m ng.Giáo trình Tin h c ð i cương 4.3 S d ng hàm Hàm ñư c s d ng b ng cách g i hàm. c p d u ngo c tròn và các giá tr trong 2 d u ngo c tròn n u có.1. khi máy g p m t l i g i hàm m t ch nào ñó c a chương trình. y. 4.).. + ð i s th c s hay tham s th c s : Khi s d ng hàm. z s ñư c ñưa ra màn hình. Các giá tr ñó ñư c g i là các tham s th c s . 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. thì máy s t m r i ch ñó và chuy n ñ n hàm tương ng. giá tr l n nh t c a ba s x.z) s ñư c s d ng trong câu l nh printf. 72 . Nói cách khác. các bi n c c b (gi i phóng b nh c a các ñ i. 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. 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 .y.. giá tr c a hàm max3s(x. Trong ví d trên. 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. nó có th s d ng v trí b t kỳ trong chương trình. bi n ñ a phương: là các bi n ñư c khai báo trong các hàm. t i ñ u m i kh i l nh. bi n c c b ) và thoát kh i hàm. ta vi t tên hàm. Giá tr c a hàm s ñư c s d ng trong các bi u th c ch a nó. + Bi n c c b . 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. 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.

4.5.2. *px. 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. py = &y. có nghĩa là giá tr c a con tr là ñ a ch c a m t bi n nào ñó.2 Con tr Con tr là bi n dùng ñ ch a ñ a ch .2 Tham s ki u con tr Trong ph n này. pf = &y. Ví d câu l nh sau khai báo hai bi n ki u int là x. *pf. y. y và hai con tr ki u int là px và py. 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. Ví d ñ l y ñ a ch c a bi n alpha. Vì có nhi u lo i ñ a ch nên cũng có nhi u ki u con tr tương ng. Tương t . ð l y ñ a ch c a m t bi n. ð 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 . int x.. máy s c p phát cho bi n alpha m t kho ng nh g m 4 byte liên ti p. 73 . xác ñ nh m t bi n có tên là alpha có ki u float và có giá tr 30.5. . 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. Tương t câu l nh sau khai báo các con tr ki u float..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. Khi ñã có các khai báo trên thì các câu l nh sau hoàn toàn xác ñ nh. ta có con tr ki u float. m t con tr c n khai báo trư c khi s d ng. float f. *py. px = &x. ki u double. theo khai báo trên. Khi con tr px ch a ñ a ch c a bi n x thì ta nói px tr t i x. Ví d câu l nh sau là không h p l . Ta cũng ñã bi t. Cũng như ñ i v i b t kỳ m t bi n nào khác.Giáo trình Tin h c ð i cương 4.. Vi c khai báo bi n con tr ñư c th c hi n theo m u sau: <ki u> *<tên con tr >. 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. dùng phép toán &.2. Con tr ki u int dùng ñ ch a ñ a ch các bi n ki u int. &alpha 4.

ð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. 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. y. có hai ñ i lư ng liên quan. py = &y. Ví d khai báo m t m ng s nguyên: int a[100]. 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. 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ó). 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. Ta hãy xem các câu l nh sau làm gì ? float a. S d ng d ng khai báo c a con tr Xét ño n l nh sau: float x. 74 . p = &a. Trong bi u th c. px = &x. *px. K t qu là con tr q ch a ñ a ch c a bi n a.3 Qui t c s d ng con tr trong các bi u th c V i m t bi n. 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. 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. Khi m t con tr tr t i m t bi n.4 M ng và con tr Khi khai báo m t m ng.2.Giáo trình Tin h c ð i cương 4. 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. 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 . *py = 3*(*px) + 1. ñó 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. *p. *q. 4.2. *py = 3*x + 1. Khi ñó bi n mà px tr t i (bi n x) ñư c bi u di n dư i d ng *px. q = p.0. *py. khi ñó cũng có hai ñ i lư ng liên quan. y = 215. py tr t i y.3. x = 100. ñó là giá tr c a bi n và ñ a ch c a bi n. 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. Sau các l nh gán thì px tr t i x. Nói m t cách khác.

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

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

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

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

Giáo trình Tin h c ð i cương songhiem = GiaiPTBac2(a. 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. } } 4. x2).3. if (delta < 0) return 0. d hi u hơn. else if (delta == 0) { *px1 = -b/(2*a). Thông thư ng ta s vi t như sau: long giai_thua(int n) { long s. } int GiaiPTBac2(float a. float c. 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 . int i. 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. Gi s ta c n vi t m t hàm tính n giai th a. float b. s d ng ñ quy s làm chương trình ng n g n. Trong m t s trư ng h p. return 2. &x1.4*a*c. b.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. Hàm như v y g i là hàm ñ quy.3f\nx2: %. i <= n.sqrt(delta))/(2*a). delta = b*b . float *px2) { float delta. i = 1. x1). 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. &x2). } else { *px1 = (-b . return s. ta ñưa ra m t ví d ñơn gi n. float *px1."). i++) s*= i. x1. for (s = 1. 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. 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 ñó. Khi hàm g i ñ quy ñ n chính nó thì m i l n g i. else if (songhiem == 1) printf("Nghiem kep: %. ð minh h a nh ng ñi u nói trên. c.3f".3f". return 1. else printf("x1: %. if (songhiem == 0) printf("Phuong trinh vo nghiem.3 ð quy 4. *px2 = (-b + sqrt(delta))/(2*a). } M t cách khác.

cho t i khi n b ng 0.3.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 . Giá tr giai_thua(1) b ng 1. b ng 2*1. nên máy l i ti p t c g i hàm giai_thua ñ tính giai th a c a 4. l i ñư c s d ng ñ tính bi u th c tr v cho l n g i giai_thua(2).h> long giai_thua(int n) { return (n > 0)?n*giai_thua(n . Trong hàm giai_thua. do n l n hơn 0 nên giá tr tr v là n*giai_thua(n -1). } void main() { printf("%d".Giáo trình Tin h c ð i cương #include <stdio. C như v 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. Trong trư ng h p t ng quát. 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. - - 4. Khi ñó hàm giai_thua s ñư c g i ra ñ th c hi n v i tham s n b ng 5. Tuy nhiên lúc này giá tr giai_thua(4) chưa xác ñ nh. C như v y. 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. s d n t i trư ng h p suy bi n. có m t l i g i hàm giai_thua(5) ñ tính giai th a c a 5. Trong l n g i th hai này. Ta g i ñây là trư ng h p suy bi n. b ng 1*1. Và sau m t s h u h n bư c bi n ñ i ñ quy. 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). nên ti p t c c n tính giai_thua(3). giai_thua(5)).1) : 1. } 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. do n v n l n hơn 0. 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).

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. khi ñó ch c n chuy n t ng 1 t A ñ n B. printf("Nhap hai so nguyen: "). dùng B làm v trí trung gian. a. Nhi m v là ph i chuy n tháp t m t v trí A ñ n m t v trí m i B. ði u ki n khi chuy n là: M i l n ch ñư c phép chuy n m t t ng. void main() { int a. Chuy n t ng n t A ñ n B. uscln(a. b.3.". b . b)). dùng A làm v trí trung gian.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. int b) { if (a > b) return uscln(a . Cho phép s d ng thêm m t v trí trung gian C ñ ñ t các t ng. 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. b).y) n u x > y uscln(x. int).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. b. scanf("%d%d". Bài toán tháp Hà N i ñư c ñ t ra như sau: Có m t tháp g m n t ng.b.h> // Nguyen mau ham int uscln(int.y) = uscln(x. 81 .a). } Ví d 2: Bài toán tháp Hà N i.1 t ng t C ñ n B. Chuy n tháp n . 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.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. Trư ng h p x khác y có th tính ƯSCLN m t cách ñ quy như sau: uscln(x. 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). printf("USCLN cua %d va %d la %d. else if (a < b) return uscln(a. Khi ñó: uscln(x.y) = uscln(x-y. } int uscln(int a.y) = x. t ng trên nh hơn t ng dư i. &a. else return a.

A). B). void main() { int n.1. } void Chuyen(int n. n. } } 82 . printf("Nhap so tang: "). 'B'. else { Chuyen(n . Chuyen(n. int C) { if (n == 1) printf("Chuyen tang 1 tu %c sang %c\n". A. B). A. int.h> // Nguyen mau ham void Chuyen(int. C. int. Chuyen(n . int). int B. scanf("%d". 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. &n). B). C. /* Thap Ha noi */ #include <stdio. printf("Chuyen tang %d tu %c sang %c\n".1. B. int A. 'C'). 'A'.

. Chuy n v m t ma tr n ch nh t A cho trư c. Xây d ng 3 hàm s sau ñây b ng phương pháp ñ qui f(x.. y... Bài 7. B. .. Tính c c ñ i và c c ti u c a m t dãy s . f và hai ñ i ra là x. Bài 1. + an-1 xn-1 + anxn Hàm có hai ñ i là bi n nguyên n và m ng th c a. + n3 83 . .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.. 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.. xn là dãy quan sát nh n ñư c.n) = xn s(n) = (2n)!! p(n) = 13 + 23 + . Bài 6. D. Tính ña th c c p n f(x) = a0 + a1x + . Bài 3. c. b. 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. + 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 + .+ ( x n −s ) 2 d = n Trong ñó x1. . Bài 4. d. Bài 5. e. C. Nhân ma tr n A c p mxn v i véc tơ X c p n. Bài 8. Bài 2.

ñ nh nghĩa c u trúc mô t ngày tháng. Ví d . bi n ngay_sinh ki u ngày tháng ñư c khai báo như sau: struct Ngay ngay_sinh. ñ a ch . 84 . 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 .. thành ph n 2>. Ví d . b c lương.1..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. }. ngày sinh.. . int nam. 5. } <danh sách bi trúc] thành ph n 1>. ñ a ch và th m chí ngày sinh cũng v y. Ki u d li u này có th dùng ñ khai báo các bi n c u trúc. ð khai báo m t bi n c u trúc sau khi ñã ñ nh nghĩa ki u c u trúc. 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. ð ñ nh nghĩa m t c u trúc. ta vi t: struct <Tên c u trúc> danh_sách_tên_bi n_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.. 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>. M i bi n ch a ñư c m t giá tr . 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. C u trúc là m t t p h p các bi n. n>.Giáo trình Tin h c ð i cương CHƯƠNG 5 . int thang. như sau: struct Ngay { int ngay. Trong dòng khai báo trên. 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. chúng ta ñã có ki u d li u mô t ngày tháng là struct Ngay. ki u d li u là struct Ngay và tên bi n là ngay_sinh. 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. nó cho phép lưu tr và x lý các d ng thông tin ph c t p hơn. Khi ñ nh nghĩa m t c u trúc. 5.. 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..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.. <Ki u 2> <Tên thành ph n 2>. 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.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. }. Sau khi ñ nh nghĩa trên. các m ng và ñư c bi u th b i m t tên duy nh t.

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

tên c u trúc có th có.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. 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>. <Ki u 2> <Tên thành ph n 2>. Sau khi ñ nh nghĩa ki u KieuNgay. thì n i dung bi n ch có th mang m t giá tr ki u tương ng. . } KieuNgay. int nam. khi ñó toán t ñ truy c p ñ n các thành ph n c u trúc là toán t ->.).5 Ví d minh ho 86 . } <danh sách tên ki u>. còn v i cách 2 thì chúng ta ch có ki u d liêu KieuNgay.. chúng ta có th s d ng ki u d li u là struct Ngay ho c KieuNgay. 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. 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. Cách 2: không có tên c u trúc: typedef struct { int ngay. có th không. 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. 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 (. int thang. 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. Khác bi t c a hai cách này là ch : v i cách 1. Cú pháp như sau: <bi n c u trúc>. N u chúng ta làm vi c v i bi n c u trúc thông qua con tr . } KieuNgay. 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.Giáo trình Tin h c ð i cương Gi s chúng ta ñã ñ nh nghĩa ki u struct 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. ngay_kethuc.. V i cách này. int thang. 5. 5.<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. int nam.

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

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

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

P2. hóa. Bài 2. Bài 3. c ng ña th c và nhân ña th c. ð nh nghĩa ki u c u trúc mô t ña th c. P2 và P3. in ñ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. 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. Bài 4. 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. Nh p danh sách n h c sinh v i các thu c tính: h tên. S p x p danh sách theo th t gi m c a t ng ñi m. 90 . 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 ñó in danh sách thí sinh (theo th t nói trên). Tính ña th c P theo công th c: P = (P1 + P2)2 + P3 In P1. 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. Vào t bàn phím m t d y n ña th c. Khi t ng ñi m như nhau thì h c sinh có năm sinh nh hơn ñư c x p trư 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. 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.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. P3 và P. sau ñó in các s li u ra màn hình. sau ñó in chúng lên màn hình theo th t gi m c a b c. Bài 5. sau ñó vi t các hàm vào ña th c. lý.

d u h i. d u cách. ký t ESC (mã 27).58-64. d u ph y. < = > ? @ 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 .. 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 .. 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 + ..Giáo trình Tin h c ð i cương PH L C 1 . d u móc. / 0 1 2 3 4 5 6 7 8 9 : .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). .91-96 và 123-127 là các ký t ñ c bi t như d u ch m. 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 .

ñ 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. bar 16.h> <stdio. _chmod 2.h> <conio.h> <math.h> <graphics. ferror 49.h> <dos. calloc 19.h> <process.h> <math. _close 3. fclose 45.h> <conio.h> <math.h> <graphics.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> <ctype.h> <ctype. ecvt 39. cosh 31.h> <dir. atan2 12. arc 9. asin 10.h> <dos.h> <process.h> <ctype. enable 41.h> <io. chdir 21.h> <graphics. _open 5.h> <graphics. ellipse 40. drawpoly 38.h> <graphics. fillpopy 93 T p tiêu ñ <alloc.h> <ctype.h> <io.h> <conio.h> <alloc. delline 36.h> <ctype. delay 35.h> <math. circle 23. close 26. chmod 22. fabs 44.h> <dos. disable 37. fflushall 51.h> <graphics. cprintf 32. abs 7. Hàm 1. creat 33. clearviewport 25.h> <stdlib.h> <math. cscanf 34.h> <stdio.h> <graphics. ceil 20. acos 8.h> <math. abort 6.h> <stdio. fflush 50.h> <io.h> <io. exit 42.h> <math. bar3d 17. clreol T p tiêu ñ <io.h> <stdio. fcvt 47. feof 48.h> <math. fgets 53.h> <stdio. atan 11. _creat 4.h> <stdio. cabs 18. fcloseall 46.h> <io.h> <math. atoi 14.h> <graphics. coreleft 29.h> <stdio. atol 15. atof 13. cleardevive 24.h> <graphics.h> <conio. exp 43.h> Hàm 28.h> <math. cos 30.h> <stdio. fgetc 52.h> <io.

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

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

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

Lập trình cấu trúc. Thuật toán. Lập trình C. Sơ đồ khối. Kỹ thuật lập trình. 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 . Tin Đại cương.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. Ngôn ngữ lập trình. Ngôn ngữ lập trình C.

Filename: Thông tin ve giao trinh TinDC.doc Directory: C:\Documents and Settings\Administrator\Desktop\GT80\TinDC_Ebook Template: C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates\Normal.) .) Number of Characters: 307 (approx.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.

t p 1 Nhà xu t b n Khoa h c k thu t [3] Ph n m m Turbo C 3. 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 .TÀI LI U THAM KH O [1] PGS.TS Ph m Văn t K thu t l p trình C.