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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hình 1.6: B nh RAM B ngu n B ngu n chuy n ñ i ñi n lư i xoay chi u thành dòng ñi n m t chi u ñi n áp th p (thư ng kho ng 3v ñ n 12v) ñ cung c p cho m i b ph n trong máy tính.

1.6 M t s

ng d ng c a Tin h c
12

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

-

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

Ph n m m thi t k :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Các mã ASCII 32-47. d u h i. . 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 + .58-64. d u ph y... d u cách. d u ngo c.91-96 và 123-127 là các ký t ñ c bi t như d u ch m.. < = > ? @ A B MÃ 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 KÝ T V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m . / 0 1 2 3 4 5 6 7 8 9 : . d u móc. 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 . ký t ESC (mã 27).B NG MÃ ASCII B ký t ASCII (American Standard Code for Interchange Information) g m 256 ký ñư c phân b như sau: 32 ký t ñ u tiên là các ký t ñi u khi n không in ñư c như ký t Enter (mã 13).Giáo trình Tin h c ð i cương PH L C 1 .

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 .

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

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

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

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

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

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

cơ s và nâng cao Nhà xu t b n Khoa h c và K thu t [2] Robert Sedgewick C m nang thu t toán (b n d ch).TÀ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.TS Ph m Văn t K thu t l p trình C.0 .

Sign up to vote on this title
UsefulNot useful