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

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

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

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

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

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

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

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

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

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 :

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

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

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

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

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

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

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

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

2.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). ban ñ u Bi n ñư c gán b ng 1.. x2=(-b. 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. Bư c 1: Xác ñ nh các h s a=?.∆ )/(2a) 3. c=? c a phương trình Bư c 2: Tính ∆ = b2 . 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 . b. c là các s th c.. a≠ 0.Giáo trình Tin h c ð i cương S d ng ngôn ng t nhiên ñ bi u di n thu t toán b ng cách ch ra t ng bư c c n th c hi n c a thu t toán.2.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. .N u ∆ < 0 thì k t lu n phương trình vô nghi m .N u ∆ = 0 thì k t lu n phương trình có nghi p kép x1=x2=-b/(2a) . Th c hi n công vi c A n l n. 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.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.

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

Ví du: Tính di n tích.1 thì th t th c hi n các bư c là: th c hi n bư c 1. 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.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. ñâ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).3.2. n u sai s th c hi n theo nhánh sai. Bi u th c ñi u ki n chính là m t bi u th c lôgíc Sơ ñ kh i th hi n c u trúc r nhánh Bi u th c Lôgíc ð S Ví d : Gi i phương trình b c nh t ax + b = 0 Sơ ñ kh i th hi n thu t toán: 24 . chu vi c a m t hình tròn bán kính r. C End 3. 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. 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. N u k t qu ki m tra có giá tr ñúng s th c hi n theo nhánh ñúng.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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i + 1. j++) { if (max < a[i][j]) max = a[i][j].0. } printf("\nDay ket qua: \n"). 6. float max.0. x[j] = c. 3. &a[i]).0} . i . i++) { printf("Phan tu thu %d: ". 62 . i + 1). Trong chương trình s d ng các chu trình l ng nhau.h> float a[3][4] = { {15.h> void main() { float a[100]. 46.1. 0. } printf("Gia tri lon nhat va nho nhat cot %d la %. {34.2f". -13.0. printf("\nSo phan tu cua day: "). 35.0. } Ví d 4: Chương trình dư i ñây s nh p m t ma tr n th c c p MxN sau ñó tính các t ng c t c a ma tr n.0.2f". min). j < 4.3}. scanf("%f". for (i = 0.0}}. } 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. #include <stdio. min = a[i][0]. &n). { 1. x[i]). i < 3. i < n. max. a[i]). } } 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. for (i = 0. #include <stdio. -38. i++.2f\n". j--) { c = x[i]. scanf("%d". j = n .5. x[i] = x[j].0.2f va %. i++) printf("%8. j.Giáo trình Tin h c ð i cương for(i = 0. for (i = 0. i++) printf(“%8.0. min. -25. for(i = 0. for (j = 0. i < n.0. i < n. void main() { int i. 46. i++) { max = a[i][0]. if (min > a[i][j]) min = a[i][j]. } printf("Day so vua nhap:\n"). int n. i < j.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 h i. d u cách. d u ph y. d u móc.. < = > ? @ 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 . / 0 1 2 3 4 5 6 7 8 9 : . d u ngo c.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). 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 .. .58-64. ký t ESC (mã 27). Các mã ASCII 32-47..91-96 và 123-127 là các ký t ñ c bi t như d u ch m.

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 .

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

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

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

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

Lập trình cấu trúc. Thuật toán. Kỹ thuật lập trình. 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 C. Ngôn ngữ C Kiến thức yêu cầu môn học trước: toán học cơ sở Tên nhà xuất bản: Nhà xuất bản Giao thông vận tải . Ngôn ngữ lập trình. Sơ đồ khối. Lập trình C.

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

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

Sign up to vote on this title
UsefulNot useful