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

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

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

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

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

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.. ph n th p phân còn l i sau khi l y k t qu tr ñi d2 là 0.12 = 1..16-1 = 13.M2.160 + 4.5 D3F. ð chuy n ñ i s t h ñ m cơ s b1 sang h ñ m cơ s b2 .. ð bi n ñ i ph n nguyên N.. ph n th p phân còn l i sau khi l y k t qu tr ñi d1 là 0.3.d1d0d-1d-2. trong khi ñó con ngư i l i thư ng làm vi c trên h th p phân. Sau ñó l i l y N1 chia nguyên cho b. Ta th c hi n theo thu t toán như sau: Phép chia nguyên 58506 : 16 3656 : 16 228 : 16 14 : 16 Như v y 5850610 = E48A16 ð bi n ñ i ph n th p phân 0. sau ñó chuy n ti p s t h th p phân sang h ñ m cơ s b2.16-1= 3391.. d2d1)..2-1 = 14. .161 + 15. 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 + . 7 Thương s 3656 228 14 0 S dư 10 8 4 14 Thương s 26 13 6 3 1 0 S dư 0 0 1 0 1 1 .M1 nhân v i b. ñư c thương s là N2 vào s dư là d2. Ta th c hi n theo thu t toán như sau: Phép chia nguyên 52 : 2 26 : 2 13 : 2 6:2 3:2 1:2 Như v y 5210 = 1101002 Ví d : 5850610 = ?16 ..416 = D. + d1 b1 + d0 b0 + d-1 b-1 + d-2 b-2 + ..20 + 1. ñư c ph n nguyên c a k t qu là d1. Ví d : 5210 = ?2 ..160 + 4.. ñư c ph n nguyên c a k t qu là d2.1 Bi n ñ i s h ñ m b t kỳ sang h th p phân: h ñ m cơ s b. ta s có k t qu c n tìm là (dk .162 + 3.3.M ta nhân nó v i b.25 1.22 + 1. 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.162 + 3.23 + 1. Sau ñó b ng cách ghép n i các k t qu ta thu ñư c giá tr c n tìm. 1. ð tìm bi u di n c a N trong h Cho s N= (dn-1dn-2.. L p l i quá trình ñó ñ n khi thương s Nk=0.2 Bi n ñ i s h th p phân sang h ñ m cơ s b t kỳ: Trư c h t c n tách ph n nguyên và ph n th p phân (n u có).. r i ti n hành bi n ñ i chúng riêng bi t sang h ñ m cơ s b. . ta chia nguyên nó cho b ñư c thương s là N1 và s dư d1.21 + 0.M1. Sau ñó l y 0.. + d-mb-m S d ng phép toán c a h th p phân ñ tính giá tr ña th c. 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.d-m) th p phân.

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

cũng như qu n lý. máy tính cơ ñi 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 . . khi ñó MTðT m i có th hi u và th c hi n. . Linux.nhân.. ngày càng hoàn thi n hơn ñ ñáp ng nh ng nhu c u ngày m t cao v qui mô.. có c u trúc g n gũi hơn v i ngôn ng c a con ngư i.2 L ch s phát tri n c a máy tính L ch s k thu t tính toán ñã có t lâu ñ i. c a ph n m m. 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. 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. 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. T khi có MTðT.tr .. G i là ngôn ng b c cao vì các ngôn ng này thư ng s d ng nh ng t khóa d a trên ti ng Anh. t nh ng năm 1960 ngư i ta ñã xây d ng các h ñi u hành cho máy tính. ch t lư ng. Windows. máy tính cơ. 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ó. làm ñư c c ng. r i ñ n bàn tính g y. Mauchly). ñ c ra b ng t bào quang ñi n. 1. g m 18000 bóng chân không. ð t ñ ng hóa m t s công vi c c a ngư i v n hành máy. k thu t tính toán ñã chuy n sang m t giai ño n m i. ð n năm 1946.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. thành l p công ty IBM Máy ENIAC (Eckert. các NNLT m i luôn xu t hi n.1: M t s m c trong l ch s phát tri n máy tính Hình 1. 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.4. khai thác các thi t b ph n c ng hi u qu hơn. Các NNLT luôn không ng ng phát tri n.. Ngày nay nói ñ n m t h th ng máy tính. M t chương trình vi t b ng m t NNLT nào ñó g i là chương trình ngu n. ñ tin c y. làm ñư c phép c ng (Blaise Pascal) Máy tính cơ. 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. 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. hòn s i. Năm Trư c CN 1642 1670 1842 1890 1946 1958 1964 1976 1981 S ki n Bàn tính g y Trung Qu c Máy tính cơ. Trên th c t . M t s h ñi u hành tiêu bi u hi n nay là: MS-DOS.1: Máy tính ñi n t ENIAC 9 .chia. ti n b liên t c c a ph n c ng.

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

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 :

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

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

Nút Start ch a ñ ng nhi u ch c năng quan tr ng c a Windows. Windows s t ñ ng n p và ch y. sau khi kh i ñ ng máy. 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.2. Windows ñã có m t quá trình phát tri n khá dài. ð t t máy ch n Turn Off Computer --> Turn Off. t gi a nh ng năm 80 c a th k 20.1. Các phiên b n ñư c s d ng ph bi n hi n nay là Windows 98. 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.2 H ñi u hành Windows 2. v i các th c ñơn (menu).0 và Windows 3.1 M t s ñ c ñi m HðH Windows là bư c phát tri n ti p theo c a MS-DOS. ñĩa 2. Sau khi ñăng nh p. 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. Các thao tác trên Windows r t tr c quan và d dàng. M i bi u tư ng trên màn hình thư ng ñ i di n cho m t chương trình. ñ kh i ñ ng l i máy ch n Turn Off Computer --> Restart. Windows 2000. s xu t hi n màn hình n n (desktop) c a Windows (các ví d ñây là trên phiên b n Windows XP). Windows XP. Nh ng phiên b n ñư c s d ng r ng rãi ñ u tiên là Windows 3.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. N u máy tính ñã cài ñ t HðH Windows. 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. Trong Start. Mu n th c hi n chương trình nào ta nháy ñúp chu t vào bi u tư ng ñó. 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. ngư i s d ng không c n ph i nh và gõ nh ng dòng l nh như trên DOS. c a s và bi u tư ng.

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

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

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

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

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

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

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

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

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

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

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

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

n

i = 1, 2, .., n

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

S

ð
Dem = Dem +1

Dem = 0

Dem

End

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

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

Input: n

i = 1, 2, .., n

i = 1, 2, .., n

ai

M2
ð

S

Input: ai

Dem = Dem +1

Dem = 0

Output: Dem

End

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

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

Input: n

i = 2, 3,..., n

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

S

ð
Max = ai

Max = a1

Output: Max

End

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

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

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

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

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

Giáo trình Tin h c ð i cương Begin Input: n i = 1. + (−1) n 1! 2! n! Ví d 4: Cho x là s th c. . 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.. .. n Input: ai S = S + ai S=0 Output: S End M t s bài toán qui v bài toán tính t ng Bài 1... Tính S = ex + 1 + x2 1 + xn 1+ x + +…+ 2 3 n +1 Ví d 2: 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. n i = 1.. n là s nguyên dương.. Tính t ng theo công th c (công th c t ng quát d ng S = f(x) + ∑ g ( x... Tính S = 2006 + x + x2 xn + . Tính S = | x+ (1+x)3 + (2+x)3 + … +(n+x)3| Ví d 3: Cho x là s th c. Mn.. n là s nguyên dương. 2. i ) ) i =1 Ví d 1: Cho x là s th c... M2. Tính s = 2006 − x +1 x + 2 x+n + − .. n là s nguyên dương. n là s nguyên dương. 2.

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

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

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

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

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

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

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

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

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

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

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

S có giá tr tuy t ñ i nh hơn 3.1.4E-4932 → 1.1. 2. 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. bao g m ki u nguyên và ki u th c.Giáo trình Tin h c ð i cương CHƯƠNG 2 .7E-308 → 1.3 Bi u di n các ki u khác qua ki u cơ b n Ki u ký t 42 .4E-38 ñư c xem b ng 0.4E-38 → 3.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. double và long double. bi n ki u th c dùng ñ lưu các giá tr th c. chúng ta s tìm hi u m t s ki u d li u cơ b n ñư c ñ nh nghĩa trong Turbo C.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.1 Các ki u d li u cơ b n Trong chương này. 2.4E+38 double 1.CÁC KI U D LI U Ki u d li u c a m t bi n hay h ng là khái ni m ch d ng thông tin c a bi n hay h ng ñó. B ng sau ch ra các ki u s nguyên và ph m vi bi u di n tương ng. Trong C cho phép s d ng ba ki u d u ph y ñ ng là float.7E+308 long double 3.4E-38 ñ n 3.1. Ví d bi n có ki u nguyên dùng ñ lưu các giá tr nguyên.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. 2. Ki u char int long ho c long int Ph m vi bi u di n -128 → 127 -32768 → 32767 -2147483648→2147483647 Kích thư c 1 byte 2 byte 4 byte Tương ng v i các ki u s nguyên có d u là các ki u s nguyên không d u.4E+38. Ph m vi bi u di n c a s double ñư c hi u theo nghĩa tương t . hay ki u d u ph y ñ ng dùng ñ lưu các giá tr th c. 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. 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 .

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful