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

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

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

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

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

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

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

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

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

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 :

Cách t ch c d li u trên ñĩa c a HðH Windows cũng tương t như v y. 2. ch có ñi u trên Windows có th ñ t tên t p tin và tên thư m c v i ñ dài l n hơn. có nhi u ph n m m ñư c vi t t khi HðH Windows chưa ph bi n. 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. gi ng như khi dùng MS-DOS ñ ch y ñư c các ph n m m cũ.0 ñ n 6.. nhi u tư tư ng và qui ñ nh c a DOS v n ñư c áp d ng trong Windows. 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. có th bao g m c d u cách. DOS cho phép t ch c các t p tin thành t ng nhóm. ð t tên t p tin trên DOS ph i tuân theo m t s qui t c: ph n tên không quá 8 ký t . 14 . Ví d m t ñư ng d n: C:\GIAOTRINH\THDC\CHUONG1. 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. v i “g c” là ñĩa. Tên ñĩa thư ng ký hi u A cho ñĩa m m. Tuy nhiê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. nhưng trên th gi i cũng như Vi t Nam t trư c t i nay s d ng ph bi n các HðH c a hãng Microsoft là MS-DOS và Windows. N u ph i xác ñ nh thư m c ho c t p tin ñĩa khác v i ñĩa hi n hành thì c n ch ra tên ñĩa.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. g i là thư m c. S lư ng các HðH cho máy vi tính cũng không ít. ñ ng ñư c t i vào b nh sau khi kh i ñ ng máy tính. thư ng g i t t là DOS. Tên thư m c cũng không ñư c ñ t quá 8 ký t . 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. C. MS-DOS ñã phát tri n qua nhi u phiên b n t 1.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). r i phân chia ti p ra các thư m c. D a trên khái ni m thư m c. và cu i cùng “lá” là các t p tin.1. Có hai lo i t p tin là: t p tin d li u và t p tin chương trình. Dãy thư m c và t p tin ñó g i là ñư ng d n. Có th ví thư m c như nh ng t h sơ ñ ch a h sơ là các t p tin.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 ñó. DOS t ch c d li u trên ñĩa m t cách logic dư i d ng hình cây. ph i h p ho t a các thi t b ph n c ng. chúng ch ch y ñư c trên n n DOS. nên ngay c trong Windows v n cho phép chúng ta t o ra môi trư ng DOS o. gi a hai thư m c ho c t p tin s d ng d u s chéo (\). D cho ñĩa c ng. . Trong thư m c có th t o nh ng thư m c con c a nó. kèm theo d u hai ch m (:).0 r i d n ñư c thay th b i HðH Windows.. 2. . ñư c phân cách b ng d u ch m (. g m 2 ph n... 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. nó ñư c th hi n trên d u nh c c a DOS. Hi n nay có r t nhi u HðH cho các h máy khác nhau. ðư 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. Ngoài ra. M i t p tin có m t tên. t các thư m c có th ñ n các thư m c con c a nó.) là: ph n tên và ph n m r ng. 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. Thư m c hi n hành là thư m c mà ta ñang làm vi c. 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 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. Ví d trên VANPHONG: ñĩa C hi n hành có thư m c GIAOTRINH. 2. tùy theo yêu c u mà có c n s d ng hay không. n u không l nh s sai cú pháp. <tên thư m c> là tên thư m c m i c n t o. 2. Trong l nh c a DOS không phân bi t ch hoa và ch thư ng. ph n ñ t gi a d u < và d u > là b t bu c ph i có. 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. <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. còn ph n ñ t gi a d u [ và ] là ph n l a ch n. gõ phím Enter ñ th c hi n l nh ñó. t c là thư m c mà ta s t o thư m c m i trong nó. Tham s /p ñ xem t ng trang màn hì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 ñó. kích thư c t ng t p tin là bao nhiêu byte. dùng khi s lư ng t p tin c a thư m c c n xem l n.1. 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\*. Trong cách vi t l nh sau ñây. Chuy n ñ n thư m c cha: CD ..1. t p tin nào.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.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.TMP <ENTER> 2) ð i tên t p tin: 15 . Sau khi vi t xong l nh.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ên các thư m c ñ xác ñ nh thư m c c n làm vi c. <ENTER> là gõ phím Enter trên bàn phím.Giáo trình Tin h c ð i cương 2.1.

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

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

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

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

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

Tính xác ñ nh: ch n. M t thu t toán là t t thì nó ph i ñơn gi n. B n thân máy tính ch là m t v t vô chi vô giác. do con ngư i b o nó làm thông qua m t ngôn ng l p trình. Do ñó. không gây nh p nh ng. …. ð 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 ñó. Input: a. 3. Tính hi u qu : M i bài toán có th có nhi u thu t toán khác nhau ñ gi i. b n thân nó không th t gi i các bài toán trong th c t ñư c. b=r. mà nó ch có th th c hi n ñư c các l nh. Các ñ c trưng cơ b n c a thu t toán Thu t toán ph i có tính d ng: Thu t toán ph i k t thúc sau m t s h u h n bư c. 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. tùy ð i lư ng vào: M i thu t toán ph i có m t ho c nhi u d li u ñ u vào ð i lư ng ra: Sau khi k t thúc thu t toán ta có th thu ñư c m t s ñ i lư ng ra là k t qu c a bài toán. b=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. m i bư c các thao tác ph i rõ ràng. 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. ti t ki m b nh và th i gian th c hi n. 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. sơ ñ kh i. gi mã.b hai s nguyên dương Output: ƯSCLN c a a.2. 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).1 ð c t t nhiên (Li t kê t ng bư c) 21 .b. 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).1 Khái ni m Thuât toán là m t dãy các quy t c. ki m tra r<>0?. Tính hình th c hóa: Thu t toán ph i có th hình th c ñư c và cài ñ t ñư c trên máy tính. ñâ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. theo ñó máy th c hi n gi i bài toán.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 . n u r<>0 ñ t a=b. không có tư duy.

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

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

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

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

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

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

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

n

i = 1, 2, .., n

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

S

ð
Dem = Dem +1

Dem = 0

Dem

End

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

Giáo trình Tin h c ð i cương Bư c 1. Xác ñ nh n và các ph n t a1, a2, ... an Bư c 2. Kh i t o m t bi n ñ m v i giá tr là 0 Bư c 3. Th c hi n duy t qua t ng ph n t . V i m i ph n t ñư c duy t, th c hi n ki m tra: N u ai chia h t cho 2 thì tăng bi n ñ m lên m t ñơn v . Ngư c l i, duy t ph n t ti p theo. S d ng sơ ñ kh i mô t thu t toán
Begin

Input: n

i = 1, 2, .., n

i = 1, 2, .., n

ai

M2
ð

S

Input: ai

Dem = Dem +1

Dem = 0

Output: Dem

End

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

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

Input: n

i = 2, 3,..., n

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

S

ð
Max = ai

Max = a1

Output: Max

End

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 . Tin Đại cương. Ngôn ngữ lập trình. Ngôn ngữ lập trình C. Sơ đồ khối. Lập trình cấu trúc. Thuật toán.Thông tin về giáo trình Tin học ĐC: Đối tượng sử dụng: sinh viên các ngành kỹ thuật Các từ khóa: Tin học Đại cương. Kỹ thuật lập trình.

doc Directory: C:\Documents and Settings\Administrator\Desktop\GT80\TinDC_Ebook Template: C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates\Normal.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.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).0 . 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.

Sign up to vote on this title
UsefulNot useful