P. 1
Tin hoc dai cuong

Tin hoc dai cuong

|Views: 320|Likes:
Được xuất bản bởiĐặng Sinh

More info:

Published by: Đặng Sinh on Mar 08, 2011
Bản quyền:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/15/2015

pdf

text

original

Sections

  • L I NÓI ð U
  • CHƯƠNG 1 – NH NG KHÁI NI M CƠ B N V TIN H C
  • 1.1 ð i tư ng nghiên c u c a Tin h c
  • 1.2 Thông tin và x lý thông tin
  • 1.3 H ñ m và bi u di n thông tin trong máy tính
  • 1.4 Nguyên lý c a h x lý thông tin t ñ ng
  • 1.5 C u trúc máy tính
  • 1.6 M t s ng d ng c a Tin h c
  • CHƯƠNG 2 – H ðI U HÀNH
  • 2.1 H ñi u hành MS-DOS
  • 2.2 H ñi u hành Windows
  • CHƯƠNG 3 – THU T TOÁN
  • 3.1 Khái ni m
  • 3.2 M t s phương pháp bi u di n thu t toán
  • 3.3 Các c u trúc cơ b n c a thu t toán
  • 3.4 M t s thu t toán gi i m t s bài toán ñơn gi n
  • CHƯƠNG 1 - M T S KHÁI NI M M ð U
  • 1.1 T p ký t
  • 1.2 T khóa
  • 1.3 Tên
  • 1.4 M t s khái ni m
  • 1.5 M t s chương trình ñơn gi n
  • 1.6 M t s quy t c c n nh khi vi t chương trình
  • 1.7 Cách th c hi n các chương trình trên máy tính
  • BÀI T P CHƯƠNG 1
  • CHƯƠNG 2 - CÁC KI U D LI U
  • 2.1 Các ki u d li u cơ b n
  • 2.2 H ng
  • 2.3 Bi n
  • 2.4 M ng
  • 2.5 Các phép toán trên các ki u
  • 2.6 Nh p xu t d li u
  • 2.7 M t s hàm thư ng dùng
  • BÀI T P CHƯƠNG 2
  • CHƯƠNG 3 - CÁC L NH ðI U KHI N
  • 3.1 Nh c l i khái ni m v câu l nh và kh i l nh
  • 3.2. L nh if
  • 3.3 L nh for
  • 3.4 L nh while
  • 3.5 L nh do - while
  • 3.6 L nh break
  • 3.7 L nh continue
  • BÀI T P CHƯƠNG 3
  • CHƯƠNG 4 - HÀM VÀ T CH C CHƯƠNG TRÌNH
  • 4.1 T ch c chương trình thành các hàm
  • 4.2 Tham s ki u con tr
  • 4.3 ð quy
  • BÀI T P CHƯƠNG 4
  • CHƯƠNG 5 - C U TRÚC
  • 5.1 ð nh nghĩa c u trúc và khai báo bi n c u trúc
  • 5.2 K t h p ñ nh nghĩa c u trúc và khai báo bi n c u trúc
  • 5.3 S d ng typedef ñ ñ nh nghĩa ki u d li u c u trúc
  • 5.3.2 S d ng typedef ñ ñ nh nghĩa ki u c u trúc
  • 5.4 Truy c p các thành ph n c a c u trúc
  • 5.5 Ví d minh ho
  • BÀI T P CHƯƠNG 5
  • PH L C 1 - B NG MÃ ASCII
  • PH L C 2

PGS.

TS Ph m Văn t – ch biên Nguy n Hi u Cư ng – Nguy n ð c Dư – Hoàng Văn Thông

GIÁO TRÌNH

TIN H C ð I CƯƠNG

TRƯ NG ð I H C GIAO THÔNG V N T I HÀ N I - 2008
1

Giáo trình Tin h c ð i cương M CL C L I NÓI ð U....................................................................................................................... 3 PH N 1 ................................................................................................................................. 4 ð I CƯƠNG V TIN H C .................................................................................................. 4 CHƯƠNG 1 – NH NG KHÁI NI M CƠ B N V TIN H C.......................................... 5 1.1 ð i tư ng nghiên c u c a Tin h c............................................................................ 5 1.2 Thông tin và x lý thông tin ..................................................................................... 5 1.3 H ñ m và bi u di n thông tin trong máy tính........................................................... 6 1.4 Nguyên lý c a h x lý thông tin t ñ ng ................................................................. 8 1.5 C u trúc máy tính ................................................................................................... 10 1.6 M t s ng d ng c a Tin h c ................................................................................. 12 CHƯƠNG 2 – H ðI U HÀNH...................................................................................... 14 2.1 H ñi u hành MS-DOS........................................................................................... 14 2.2 H ñi u hành Windows........................................................................................... 16 CHƯƠNG 3 – THU T TOÁN ........................................................................................ 21 3.1 Khái ni m............................................................................................................... 21 3.2 M t s phương pháp bi u di n thu t toán ............................................................... 21 3.3 Các c u trúc cơ b n c a thu t toán.......................................................................... 23 3.4 M t s thu t toán gi i m t s bài toán ñơn gi n ...................................................... 27 PH N 2 ............................................................................................................................... 32 NGÔN NG L P TRÌNH C ............................................................................................... 32 CHƯƠNG 1 - M T S KHÁI NI M M ð U ............................................................. 34 1.1 T p ký t ................................................................................................................ 34 1.2 T khóa .................................................................................................................. 34 1.3 Tên......................................................................................................................... 35 1.4 M t s khái ni m.................................................................................................... 35 1.5 M t s chương trình ñơn gi n................................................................................. 38 1.6 M t s quy t c c n nh khi vi t chương trình ......................................................... 39 1.7 Cách th c hi n các chương trình trên máy tính ...................................................... 40 BÀI T P CHƯƠNG 1 ................................................................................................. 41 CHƯƠNG 2 - CÁC KI U D LI U ............................................................................... 42 2.1 Các ki u d li u cơ b n .......................................................................................... 42 2.2 H ng ...................................................................................................................... 43 2.3 Bi n........................................................................................................................ 45 2.4 M ng...................................................................................................................... 46 2.5 Các phép toán trên các ki u .................................................................................... 48 2.6 Nh p xu t d li u ................................................................................................... 52 2.7 M t s hàm thư ng dùng........................................................................................ 56 BÀI T P CHƯƠNG 2 ................................................................................................. 57 CHƯƠNG 3 - CÁC L NH ðI U KHI N ....................................................................... 58 3.1 Nh c l i khái ni m v câu l nh và kh i l nh ........................................................... 58 3.2. L nh if................................................................................................................... 58 3.3 L nh for ................................................................................................................. 61 3.4 L nh while ............................................................................................................. 63 3.5 L nh do - while ...................................................................................................... 65 3.6 L nh break ............................................................................................................. 66 3.7 L nh continue......................................................................................................... 66 BÀI T P CHƯƠNG 3 ................................................................................................. 68 CHƯƠNG 4 - HÀM VÀ T CH C CHƯƠNG TRÌNH .................................................. 70 4.1 T ch c chương trình thành các hàm ...................................................................... 70 4.2 Tham s ki u con tr .............................................................................................. 73 2

Giáo trình Tin h c ð i cương 4.3 ð quy.................................................................................................................... 79 BÀI T P CHƯƠNG 4 ................................................................................................. 83 CHƯƠNG 5 - C U TRÚC .............................................................................................. 84 5.1 ð nh nghĩa c u trúc và khai báo bi n c u trúc......................................................... 84 5.2 K t h p ñ nh nghĩa c u trúc và khai báo bi n c u trúc ............................................ 84 5.3 S d ng typedef ñ ñ nh nghĩa ki u d li u c u trúc ............................................... 85 5.4 Truy c p các thành ph n c a c u trúc ..................................................................... 86 5.5 Ví d minh ho ....................................................................................................... 86 BÀI T P CHƯƠNG 5 ................................................................................................. 89 PH L C 1 - B NG MÃ ASCII ..................................................................................... 91 PH L C 2 ..................................................................................................................... 93 DANH SÁCH CÁC HÀM C A TURBO C THEO TH T ABC .............................. 93

3

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

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

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

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

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

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

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

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

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 :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 . 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 . MÃ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 KÝ T NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB MÃ 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 91 KÝ T + .Giáo trình Tin h c ð i cương PH L C 1 .58-64. d u ngo c.B NG MÃ ASCII B ký t ASCII (American Standard Code for Interchange Information) g m 256 ký ñư c phân b như sau: 32 ký t ñ u tiên là các ký t ñi u khi n không in ñư c như ký t Enter (mã 13). ký t ESC (mã 27). d u móc. d u cách. d u ph y. / 0 1 2 3 4 5 6 7 8 9 : .. . d u h i.. Các mã ASCII 32-47.

Giáo trình Tin h c ð i cương 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 CAN EM SUB ESC FS GS RS US Space ! ” # $ % & ’ ( ) * 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 C D E F G H I J K L M N O P Q R S T U 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 n o p q r s t u v w x y z { | } ~ DEL 92 .

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

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

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

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

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

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

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

You're Reading a Free Preview

Tải về
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->