Bài giảng lập trình căn bản với C - Công nghệ thông tin | Trường Đại học Quy Nhơn

Bài giảng lập trình căn bản với C - Công nghệ thông tin | Trường Đại học Quy Nhơn được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

Mc lc 1
Khoa Công ngh thông tin
MC L C
CHƯƠNG 1. GIỚI THIU
1.1. t toán Thu ................................................................................................... 7
1.2. Ngôn ng l p trình ..................................................................................... 9
1.3. Ngôn ng l p trình C .................................................................................. 9
1.3.1. C là ngôn ng b ............................................................................. 10 c trung
1.3.2. C là ngôn ng có c u trúc .......................................................................... 11
1.3.3. C u trúc c a m ............................................................... 12 ột chương trình C
1.3.4. Chương trình đầu tiên ................................................................................. 12
1.4. Câu h i tr c nghim và bài t p ................................................................. 15
1.4.1. Câu h c nghi m ................................................................................... 15i tr
1.4.2. Bài t p ......................................................................................................... 16
CHƯƠNG 2. BIỂU THC ( ) EXPRESSION ...................................17
2.1. Ki u d liệu cơ sở (Basic Data Type) ...................................................... 17
2.2. B u d ( ng ki liệu cơ sở Modifying the Basic Type) ........................... 17
2.3. Định danh (Identifier) .............................................................................. 18
2.4. Bi n (ế Variable) ......................................................................................... 18
2.5. H ng ( Constant) ....................................................................................... 19
2.6. Phép toán (Operator) ............................................................................... 20
2.6.1. Phép toán gán ............................................................................................. 20
2.6.2. Phép toán s h c ......................................................................................... 21
2.6.3. Phép toán quan h ........................................................................ 21 và logic
2.6.4. Phép toán ? ................................................................................................. 22
2.6.5. Phép toán bit ............................................................................................... 22
2.6.6. Phép toán ...................................................................................... 23sizeof
2.6.7. Phép toán .................................................................................... 23()[]
2.6.8. Ép ki u ........................................................................................................ 23
2.6.9. Độ ưu tiên củ a tt c các phép toán ........................................................... 24
2.7. Bi u th c ( Expression) ............................................................................. 24
2.7.1. Chuy i ki u trong bi u th c ................................................................. 24ển đổ
2.7.2. Kho ng tr ng và d u ngo ................................................................ 25 ặc đơn
2.7.3. Vi t nhanh c a phép toán gán .................................................................... 25ế
2.7.4. Các hàm toán h n ........................................................................... 25ọc cơ bả
2.8. Vào ra d n liệu cơ bả ............................................................................... 26
2.8.1. In giá tr ra màn hình (hàm ) .................................................... 26 printf()
2.8.2. Nh p d u t bàn phím (hàm ) ................................................ 29 li scanf()
2.9. M t s ví d cơ bản .................................................................................. 31
2 Lập trình cơ bản
Trường Đạ ọc Quy Nhơni h
2.10. Câu h i tr c nghi m và bài t p ............................................................... 32
2.10.1. Câu h i tr c nghi m ................................................................................. 32
2.10.2. Bài t p ....................................................................................................... 33
CHƯƠNG 3. CÂU LỆNH ( STATEMENT)..................................... 35
3.1. True và False trong C ............................................................................... 35
3.2. L nh l a ch n ( Selection)......................................................................... 35
3.2.1. L nh ....................................................................................................... 35 if
3.2.2. Các l nh l ng nhau ............................................................................... 37 if
3.2.3. Các l nh liên t c .................................................................. 38 if-else-if
3.2.4. L nh .............................................................................................. 39 switch
3.3. L nh l p ( Iteration) .................................................................................. 42
3.3.1. L nh l p .............................................................................................. 42 for
3.3.2. L nh l p .......................................................................................... 46 while
3.3.3. L nh l p ................................................................................... 47 do-wihle
3.4. L nh nh y ( Jump) ..................................................................................... 49
3.4.1. L nh .............................................................................................. 49 return
3.4.2. L nh .................................................................................................. 49 goto
3.4.3. L nh ................................................................................................ 50 break
3.4.4. L nh .......................................................................................... 50 continue
3.5. Câu h i tr c nghi m và bài t p ................................................................. 51
3.5.1. Câu h c nghi m ................................................................................... 51i tr
3.5.2. Bài t p ......................................................................................................... 53
CHƯƠNG 4. MẢNG VÀ CHUI ( ) ARRAY & STRING .............. 59
4.1. Khái ni m ................................................................................................. 59
4.2. M ng m t chi u ........................................................................................ 59
4.2.1. M t s v n .................................................................................. 59 ấn đ cơ bả
4.2.2. M t s n .................................................................................... 60 ví d cơ b
4.3. Chu kí t i ................................................................................................ 62
4.3.1. M t s v n .................................................................................. 62 ấn đ cơ bả
4.3.2. M t s n .................................................................................... 64 ví d cơ b
4.4. M ng hai chi u ......................................................................................... 66
4.4.1. M t s v n .................................................................................. 66 ấn đ cơ bả
4.4.2. M t s n .................................................................................... 67 ví d cơ b
4.4.3. M ng chu i ................................................................................................. 69
4.5. Kh i gán m t mng .................................................................................. 70
4.5.1. Kh i gán m ng m u ........................................................................... 70 t chi
4.5.2. Kh i gán m ng hai chi u ............................................................................ 70
4.5.3. Kh i gán m c ............................................................... 71 ảng không kích thướ
4.6. Câu h i tr c nghi m và bài t p ................................................................. 71
Mc lc 3
Khoa Công ngh thông tin
4.6.1. Câu h c nghi m ................................................................................... 71i tr
4.6.2. Bài t p ......................................................................................................... 73
CHƯƠNG 5. CON TRỎ ( ) POINTER ..............................................77
5.1. Khái ni m con tr ..................................................................................... 77
5.2. Bi n con tr ế .............................................................................................. 78
5.3. Phép toán trên con tr .............................................................................. 78
5.4. Bi u th c con tr ...................................................................................... 79
5.4.1. Phép toán gán ............................................................................................. 79
5.4.2. Phép toán s h c trên con tr ..................................................................... 79
5.4.3. So sánh con tr ........................................................................................... 80
5.5. Con tr và m ng ....................................................................................... 81
5.6. M ng các con tr ...................................................................................... 82
5.7. Tr gián ti p ế ............................................................................................. 83
5.8. C p phát b nh động .............................................................................. 85
5.8.1. Các hàm liên quan ...................................................................................... 85
5.8.2. C p phát b nh ng cho m ng m t chi u ............................................... 85 độ
5.8.3. C p phát b nh ng cho m ng hai chi u ................................................ 86 độ
5.9. M t s chú ý khi làm vi i con tr c v ..................................................... 90
5.9.1. Xác định con tr trước khi s dng ............................................................ 90
5.9.2. Không nên gán giá tr c cho con tr ................................................... 91 th
5.9.3. Giá tr con tr i ............................................................................... 91 thay đổ
5.10. Câu h i tr c nghi m và bài t p ............................................................... 92
5.10.1. Câu h i tr c nghi m ................................................................................. 92
5.10.2. Bài t p ....................................................................................................... 93
CHƯƠNG 6. HÀM (FUNCTION) ...................................................95
6.1. Gi i thi u .................................................................................................. 95
6.2. Các lu t ph m vi c a hàm ........................................................................ 97
6.3. L nh return ........................................................................................... 98
6.4. Tham s c a hàm ..................................................................................... 99
6.4.1. G i hàm theo tham tr và theo tham chi u ................................................. 99 ế
6.4.2. G n hàm .................................................................................... 101i mảng đế
6.4.3. Tham s trong hàm ..................................................................... 104 main()
6.5. Đệ quy ( ) Recursion ................................................................................ 105
6.6. Con tr hàm ............................................................................................ 107
6.7. Câu h i tr c nghi m và bài t p ............................................................... 110
6.7.1. Câu h c nghi m ................................................................................. 110i tr
4 Lập trình cơ bản
Trường Đạ ọc Quy Nhơni h
6.7.2. Bài t p ....................................................................................................... 112
CHƯƠNG 7. KIỂU CU TRÚC, HP, LIT KÊ VÀ KIU
NGƯỜI DÙNG ĐỊNH NGHĨA ...................................................... 115
7.1. C u trúc ( Structure) ................................................................................ 115
7.1.1. Khái ni m .................................................................................................. 115
7.1.2. M ng c u trúc ........................................................................................... 117
7.1.3. Con tr c u trúc ........................................................................................ 119
7.1.4. M ng bên trong c u trúc .......................................................................... 120
7.1.5. C u trúc bên trong c u trúc ..................................................................... 122
7.1.6. Trường bit ................................................................................................. 126
7.2. Ki u h p ( Union) ................................................................................... 126
7.3. Ki u li t kê ( Enumeration) ..................................................................... 128
7.4. Dùng toán t m b o tính kh chuy sizeof để đả n .............................. 130
7.5. Kiểu người dùng định nghĩa (User-Defined) ......................................... 131
7.6. Câu h i tr c nghi m và bài t p ............................................................... 131
7.6.1. Câu h c nghi m ................................................................................. 131i tr
7.6.2. Bài t p ....................................................................................................... 132
CHƯƠNG 8. VÀO/RA D LIU TRÊN CONSOLE ................. 137
8.1. Đọc và viết mt kí t .............................................................................. 137
8.1.2. M t v v i hàm ............................................................. 138 ấn đề getchar()
8.1.3. Bi n th c a hàm ................................................................. 138ế getchar()
8.2. Đọc và viết chu i .................................................................................... 139
8.3. Bài t p ..................................................................................................... 141
CHƯƠNG 9. ĐỌC/GHI D LIU TRÊN FILE ......................... 143
9.1. Lu ng và file .......................................................................................... 143
9.1.1. Lu ng (stream) ......................................................................................... 143
9.1.2. File ............................................................................................................ 143
9.2. Các hàm cơ s trên file ........................................................................... 144
9.2.1. Con tr ................................................................................................ 144 file
9.2.2. M m t file (hàm ..................................................................... 145 fopen())
9.2.3. Đóng một file (hàm ) ............................................................... 146fclose()
9.2.4. Đọc/ghi mt kí t ) ................................ 146trên file (hàm getc()/putc()
9.2.5. Ki i file (hàm ) ............................................................. 149m tra cu feof()
9.2.6. Đọc/ghi chui kí t trên file (hàm fgets()/fputs()) .......................... 150
9.2.7. Hàm ........................................................................................ 152rewind()
9.2.8. Hàm ........................................................................................ 153ferror()
9.2.9. Xóa m t file (hàm ) ................................................................. 155 remove()
Mc lc 5
Khoa Công ngh thông tin
9.2.10. Làm s ch m t lu ng (hàm ) ................................................... 155 fflush()
9.3. Đọc/ghi khi byte (hàm ) fread() fwrite() ................................ 156
9.4. Hàm và truy c p ng u nhiên fseek() .................................................. 158
9.5. Đọc/ghi d liu theo mu (hàm fprintf()fscanf()) ................ 160
9.6. Lung chun ........................................................................................... 162
9.6.1. ng chu n , , ................................................... 162Lu stdin stdout stderr
9.6.2. Hàm freopen() p gián ti p vào lu ng chu n ............................. 162truy c ế
9.7. Câu h i tr c nghim và bài t p ............................................................... 163
9.7.1. Câu h c nghi m ................................................................................. 164i tr
9.7.2. Bài t p ....................................................................................................... 166
CHƯƠNG 10. TIỀN X LÝ VÀ CHÚ THÍCH ........................... 169
10.1. D ng ẫn hướ #define ........................................................................... 169
10.1.1. Định nghĩa Macro tương tự như hàm ..................................................... 171
10.2. D ng ẫn hướ #error.............................................................................. 171
10.3. D ng ẫn hướ #include ......................................................................... 172
10.4. Ch biên d u ki n th ịch có điề .............................................................. 176
10.4.1. D ng , , ............................................ 176ẫn hướ #if, #else #elif #endif
10.4.2. D ng ........................................................... 178ẫn hướ #ifdef #ifndef
10.5. D ng ẫn hướ #undef.............................................................................. 178
10.6. D ng ẫn hướ defined ........................................................................... 179
10.7. D ng ẫn hướ #line................................................................................ 179
10.8. Toán t n x ti ### .................................................................... 180
10.9. Các macro định nghĩa trước ................................................................. 181
10.10. Chú thích trong C chu n .................................................................... 181
10.11. Câu h i tr c nghi m và bài t p ........................................................... 182
10.11.1. Câu h i tr c nghi m ............................................................................. 182
10.11.2. Bài t p ................................................................................................... 182
TÀI LI U THAM KH O .............................................................. 185
Chương 1. Giới thiu 7
Khoa Công ngh thông tin
CHƯƠNG 1. ỚI THIỆU GI
1.1. Thu t toán
Thut toán là dãy h u h c tính toán nh n các giá tr ạn các bướ đầu vào chuyển đổi
thành các giá tr u ra. đầ
Khi đã hình thành thuật toán, ta không xét đế ật toán đó mà n vic chng minh thu
ch chú tr n viọng đế c áp d c theo sụng các bướ hướng d k t qu mong mu n. ẫn đ ế
Vic chứng minh tính đúng củ ải đượ ến hành trướa thut toán ph c ti c khi hình thành
các bướ ện nay dùng đểc ca thut toán. Khái nim thut toán hi ch cách gii quyết
một bài toán nào đó bằng máy tính.
Các tính ch a thu t toán: t c
+ Tính chính xác: m t d u vào ch cho m t d u ra, không th liệu đầ liệu đầ
mt d t qu liệu đầu vào nhưng cho nhiu kế khác nhau.
+ Tính rõ ràng: thu t toán ph hi n b ng các câu l nh rõ ràng và có th t . i th
+ Tính ph d ng: thu t toán có th ng cho nhi u nhau. áp d đầu vào tương tự
+ Tính k t thúc: thu t toán ph i bao g m m t s h u h ế ạn các bước.
+ Tính đơn tr ật toán đư ều ngườ: mt thu c viết bi nhi i trên nhiu y tính
khác nhau đều cho kết qu ging nhau.
Để biu din thut toán ta có th s dng nhi ng có ều cách khác nhau. Thông thườ
ba cách bi u di n thu t toán: dùng ngôn ng t i dùng ngôn nhiên, dùng đồ kh
ng l p trình. d thu t toán gi c bi u di n b ng ải phương trình bậc 1 ax+b=0 đư
ngôn ng t nhiên như sau:
Bướ c 1: nếu a 0 thì thông báo m duy nhphương trình 1 nghiệ t là x=-b/a và
8 Lập trình cơ bản
Trường Đạ ọc Quy Nhơni h
kết thúc thu t toán, n ếu a=0 thì chuy ển sang bước 2.
Bước 2: nếu b=0 thông báo nghithì phương trình số m, kết thúc thut toán.
Nếu b 0 thì thông báo m, k t thúc thu t toán. phương trình vô nghiệ ế
Thut toán gi c 1 trên s nh n các giá tr u vào hai s ải phương trình bậ đầ
thực a và b. Sau hai bưc tính toán, thu t toán s cho kết qu (ph thu c vào hai giá tr
a, b tương ứng) là có nghim hoc không có nghim.
Cùng m t s d ng các hi bi u di n. t thu toán như trên, ta cũng thể u để
Vic s d ng c hi u di n thu t toán ta g kh Qui các ệu để bi ọi đồ i. ưc
hiu như sau:
, m b u và k t thúc thu t toán. : điể ắt đầ ế
: nh thông báon d liệu đầu vào, d liệu đầu ra.
: thc hi c ện các bướ tính toán c a thu t toán.
: kiểm tra điều kin.
: chuy p theo c ển đến bước tiế a thut toán.
T các hi trên, ta th tệu qui ước thut toán gi c 1 ải phương trình bậ
như hình 1-1 sau:
Hình 1-1. Sơ đồ khi bi t toán giu di n thu ải phương trình bc 1.
Begin
End
Chương 1. Giới thiu 9
Khoa Công ngh thông tin
Vic s d ng ngôn ng t kh bi u di n thu t toán m nhiên đồ ối để ục đích
để người đọ ểu làm theo các bước trong đó. Tuy nhiên, đểc hi y tính "hiu"
thc hi c c a thu t toán ta ph i s d ng m t công cện được các khác, đó chính là
ngôn ng l p trình.
1.2. Ngôn ng l p trình
Ngôn ng l p trình m t h c hi t thu t toán máy thống đư ệu hóa để
tính i hi d ng mà c y tính và con ngườ u được.
Tp h p các ch th đưc bi u th qua ngôn ng l p trình nh m m ục đích thực
hiện thao tác nào đó ọi là chương trình máy tính. được g
Lp trình là khái ni m ch i t quá trình con ngườ ạo ra chương trình máy tính thông
qua ngôn ng l nói l p trình quá trình chuy cách gi i bài ập trình. Ta cũng th n
toán b ng ngôn ng t nhiên v ngôn ng máy tính hi u th c hi c b ng ện đư
ngôn ng l p trình. c vi ng ngôn ng l t Văn bản đượ ết b ập trình để ạo nên chương trình
máy tính g i là mã ngu n.
Thao tác chuy i ngu n thành chu i các ch máy tính g i biên dển đổ th ch
chương trình. Chương trình để ọi là chương trình dị thc hin công vic trên g ch.
Ngôn ng l ng phân thành nhi u lo i khác nhau, d ngôn ng l ập trình thư p
trình b c cao, b c th p. Hay phân thành ngôn ng l ng c ập trình hướ ấu trúc, hướng đối
tượng, tuy nhiên hu hết các ngôn ng lp trình hi u nh m chung ện nay đề ững điể
đó là khóa, đị ấu trúc điề có t nh danh, kiu d liu, c u khin.
1.3. Ngôn l p trình C ng
Ngôn ng l t l u tiên b ập trình C được phát minh cài đ ần đầ i Dennis Ritchie
đưc s dng trong h điều hành . C kLinux ết qu ca mt quá trình phát trin
bắt đầu b ng ngôn ng c phát minh b ). T ngôn ng B (đượ i Ken Thompson B đã phát
trin ngôn ng C vào năm 1970.
năm 1983, thành lậ ủy ban đểp mt to ra chun ANSI (American National
Standards Intitute) định nghĩa ngôn ngữ ất 6 năm. C. Quá trình tiêu chun hóa m
Chuẩn ANSI C đã đượ ận vào tháng 12 năm 1989. Tiêu chuẩn này cũng được chp nh c
10 Lập trình cơ bản
Trường Đạ ọc Quy Nhơni h
t chc tiêu chu n qu c t (ISO) ch p nh c g i C chu n. Ngày nay, t t c ế ận đượ
các trình biên dch ngôn ng u tuân theo C chu n. C/C++ đề
1.3.1. C là ngôn ng b c trung
C thường đượ ậc trung. Điều này không nghĩa C ít c gi ngôn ng y b
mnh khó s d ng ho c ít phát tri b ển hơn các ngôn ngữ ậc cao như là Basic hoc
Pascal. C ý tưởng như một ngôn ng bc trung bi tích hp tt nht các
thành ph t hn c a ngôn ng b c cao kế p v i tính m m d o c a ngôn ng c p th p.
C cho phép l p trình v , a ch . ngu n c a ngôn ng i bit byte đị C cũng
tương thích vớ ều chương trình dịi nhi ch, nhiu h điều hành khác nhau. Ví d ta có th
d dàng chuy i m t trên h u hành DOS sang mển đổ ột chương trình C viế điề ột chương
trình C thc thi trên . Windows
Bc cao
Ada
Modula-2
Pascal
COBOL
FORTRAN
BASIC
Bc trung
Java
C++
C
FORTH
Bc th p
Macro-assembler
Assembler
Bảng 1-1. Ngôn ng C so v i các ngôn ng l p trình khác.
Tt c các ngôn ng l p trình b u h ậc cao đề tr khái ni m ki u d liu. Ki u d
liệu định nghĩa các tậ lưu trữp giá tr mt biến th tp các phép toán th
thao tác trên giá tr u d n nh t là s nguyên, kí t s c. M c đó. Kiể liệu cơ bả th
C năm kiể ệu bản, nhưng không phảu d li i mt ngôn ng định kiu mnh
như là ển đổPascal. C cho phép chuy i qua li gia các kiu d liu vi nhau. Ví d ta
có th n l n ki u kí t và ki u s trong m t bi u thtr c.
Không gi b c cao, C không ki m tra các l i th i gian th c thi. ống như ngôn ngữ
d C không ki m tra xem các biên c a m ng có tràn hay không. Các ki u ki m tra
này là trách nhi m c p trình. ủa người l
| 1/185

Preview text:

Mc lc 1
MC LC
CHƯƠNG 1. GIỚI THIU
1.1. Thuật toán ................................................................................................... 7
1.2. Ngôn ngữ lập trình ..................................................................................... 9
1.3. Ngôn ngữ lập trình C .................................................................................. 9
1.3.1. C là ngôn ng bc trung ............................................................................. 10
1.3.2. C là ngôn ng có cu trúc .......................................................................... 11
1.3.3. Cu trúc ca một chương trình C ............................................................... 12
1.3.4. Chương trình đầu tiên ................................................................................. 12
1.4. Câu hỏi trắc nghiệm và bài tập ................................................................. 15
1.4.1. Câu hi trc nghim ................................................................................... 15
1.4.2. Bài tp ......................................................................................................... 16
CHƯƠNG 2. BIỂU THC (EXPRESSION) ...................................17
2.1. Kiểu dữ liệu cơ sở (Basic Data Type) ...................................................... 17
2.2. Bổ ngữ kiểu dữ liệu cơ sở (Modifying the Basic Type) ........................... 17
2.3. Định danh (Identifier) .............................................................................. 18
2.4. Biến (Variable) ......................................................................................... 18
2.5. Hằng (Constant) ....................................................................................... 19
2.6. Phép toán (Operator) ............................................................................... 20
2.6.1. Phép toán gán ............................................................................................. 20
2.6.2. Phép toán s hc ......................................................................................... 21
2.6.3. Phép toán quan h và logic ........................................................................ 21
2.6.4. Phép toán ? ................................................................................................. 22
2.6.5. Phép toán bit ............................................................................................... 22
2.6.6. Phép toán sizeof ...................................................................................... 23
2.6.7. Phép toán () và [
] .................................................................................... 23
2.6.8. Ép kiu ........................................................................................................ 23
2.6.9. Độ ưu tiên của tt c các phép toán ........................................................... 24
2.7. Biểu thức (Expression) ............................................................................. 24
2.7.1. Chuyển đổi kiu trong biu thc ................................................................. 24
2.7.2. Khong trng và du ngoặc đơn ................................................................ 25
2.7.3. Viết nhanh ca phép toán gán .................................................................... 25
2.7.4. Các hàm toán học cơ bản ........................................................................... 25
2.8. Vào ra dữ liệu cơ bản ............................................................................... 26
2.8.1. In giá tr ra màn hình (hàm printf()) .................................................... 26
2.8.2. Nhp d liu t bàn phím (hàm scanf()) ................................................ 29
2.9. Một số ví dụ cơ bản .................................................................................. 31
Khoa Công ngh thông tin 2
Lập trình cơ bản
2.10. Câu hỏi trắc nghiệm và bài tập ............................................................... 32
2.10.1. Câu hi trc nghim ................................................................................. 32
2.10.2. Bài tp ....................................................................................................... 33
CHƯƠNG 3. CÂU LỆNH (STATEMENT).................................... .35
3.1. True và False trong C ............................................................................... 35
3.2. Lệnh lựa chọn (Selection)......................................................................... 35
3.2.1. Lnh if ....................................................................................................... 35
3.2.2. Các lnh if lng nhau ............................................................................... 37
3.2.3. Các lnh if-else-if liên tc .................................................................. 38
3.2.4. Lnh switch .............................................................................................. 39
3.3. Lệnh lặp (Iteration) .................................................................................. 42
3.3.1. Lnh lp for .............................................................................................. 42
3.3.2. Lnh lp while .......................................................................................... 46
3.3.3. Lnh lp do-wihle ................................................................................... 47
3.4. Lệnh nhảy (Jump) ..................................................................................... 49
3.4.1. Lnh return .............................................................................................. 49
3.4.2. Lnh goto .................................................................................................. 49
3.4.3. Lnh break ................................................................................................ 50
3.4.4. Lnh continue .......................................................................................... 50
3.5. Câu hỏi trắc nghiệm và bài tập ................................................................. 51
3.5.1. Câu hi trc nghim ................................................................................... 51
3.5.2. Bài tp ......................................................................................................... 53
CHƯƠNG 4. MẢNG VÀ CHUI (ARRAY & STRING) .............. 59
4.1. Khái niệm ................................................................................................. 59
4.2. Mảng một chiều ........................................................................................ 59
4.2.1. Mt s vấn đề cơ bản .................................................................................. 59
4.2.2. Mt s ví d cơ bản .................................................................................... 60
4.3. Chuỗi kí tự ................................................................................................ 62
4.3.1. Mt s vấn đề cơ bản .................................................................................. 62
4.3.2. Mt s ví d cơ bản .................................................................................... 64
4.4. Mảng hai chiều ......................................................................................... 66
4.4.1. Mt s vấn đề cơ bản .................................................................................. 66
4.4.2. Mt s ví d cơ bản .................................................................................... 67
4.4.3. Mng chui ................................................................................................. 69
4.5. Khởi gán một mảng .................................................................................. 70
4.5.1. Khi gán mng mt chiu ........................................................................... 70
4.5.2. Khi gán mng hai chiu ............................................................................ 70
4.5.3. Khi gán mảng không kích thước ............................................................... 71
4.6. Câu hỏi trắc nghiệm và bài tập ................................................................. 71
Trường Đại học Quy Nhơn
Mc lc 3
4.6.1. Câu hi trc nghim ................................................................................... 71
4.6.2. Bài tp ......................................................................................................... 73
CHƯƠNG 5. CON TRỎ (POINTER) ..............................................77
5.1. Khái niệm con trỏ ..................................................................................... 77
5.2. Biến con trỏ .............................................................................................. 78
5.3. Phép toán trên con trỏ .............................................................................. 78
5.4. Biểu thức con trỏ ...................................................................................... 79
5.4.1. Phép toán gán ............................................................................................. 79
5.4.2. Phép toán s hc trên con tr ..................................................................... 79
5.4.3. So sánh con tr ........................................................................................... 80
5.5. Con trỏ và mảng ....................................................................................... 81
5.6. Mảng các con trỏ ...................................................................................... 82
5.7. Trỏ gián tiếp ............................................................................................. 83
5.8. Cấp phát bộ nhớ độn
g .............................................................................. 85
5.8.1. Các hàm liên quan ...................................................................................... 85
5.8.2. Cp phát b nh động cho mng mt chiu ............................................... 85
5.8.3. Cp phát b nh động cho mng hai chiu ................................................ 86
5.9. Một số chú ý khi làm việc với con trỏ ..................................................... 90
5.9.1. Xác định con tr trước khi s dng ............................................................ 90
5.9.2. Không nên gán giá tr c th cho con tr ................................................... 91
5.9.3. Giá tr con tr thay đổi ............................................................................... 91
5.10. Câu hỏi trắc nghiệm và bài tập ............................................................... 92
5.10.1. Câu hi trc nghim ................................................................................. 92
5.10.2. Bài tp ....................................................................................................... 93
CHƯƠNG 6. HÀM (FUNCTION) ...................................................95
6.1. Giới thiệu .................................................................................................. 95
6.2. Các luật phạm vi của hàm ........................................................................ 97 6.3. Lệnh retur
n ........................................................................................... 98
6.4. Tham số của hàm ..................................................................................... 99
6.4.1. Gi hàm theo tham tr và theo tham chiếu ................................................. 99
6.4.2. Gi mảng đến hàm .................................................................................... 101
6.4.3. Tham s trong hàm main() ..................................................................... 104
6.5. Đệ quy (Recursion) ................................................................................ 105
6.6. Con trỏ hàm ............................................................................................ 107
6.7. Câu hỏi trắc nghiệm và bài tập ............................................................... 110
6.7.1. Câu hi trc nghim ................................................................................. 110
Khoa Công ngh thông tin 4
Lập trình cơ bản
6.7.2. Bài tp ....................................................................................................... 112
CHƯƠNG 7. KIỂU CU TRÚC, HP, LIT KÊ VÀ KIU
NGƯỜI DÙNG ĐỊNH NGHĨA ...................................................... 115
7.1. Cấu trúc (Structure) ................................................................................ 115
7.1.1. Khái nim .................................................................................................. 115
7.1.2. Mng cu trúc ........................................................................................... 117
7.1.3. Con tr cu trúc ........................................................................................ 119
7.1.4. Mng bên trong cu trúc .......................................................................... 120
7.1.5. Cu trúc bên trong cu trúc ..................................................................... 122
7.1.6. Trường bit ................................................................................................. 126
7.2. Kiểu hợp (Union) ................................................................................... 126
7.3. Kiểu liệt kê (Enumeration) ..................................................................... 128 7.4. Dùng toán tử sizeo
f để đảm bảo tính khả chuyển .............................. 130
7.5. Kiểu người dùng định nghĩa (User-Defined) ......................................... 131
7.6. Câu hỏi trắc nghiệm và bài tập ............................................................... 131
7.6.1. Câu hi trc nghim ................................................................................. 131
7.6.2. Bài tp ....................................................................................................... 132
CHƯƠNG 8. VÀO/RA D LIU TRÊN CONSOLE ................. 137
8.1. Đọc và viết một kí tự .............................................................................. 137
8.1.2. Mt vấn đề vi hàm getchar() ............................................................. 138
8.1.3. Biến th ca hàm getchar() ................................................................. 138
8.2. Đọc và viết chuỗi .................................................................................... 139
8.3. Bài tập ..................................................................................................... 141
CHƯƠNG 9. ĐỌC/GHI D LIU TRÊN FILE ......................... 143
9.1. Luồng và file .......................................................................................... 143
9.1.1. Lung (stream) ......................................................................................... 143
9.1.2. File ............................................................................................................ 143
9.2. Các hàm cơ sở trên file ........................................................................... 144
9.2.1. Con tr file ................................................................................................ 144
9.2.2. M mt file (hàm fopen()) ..................................................................... 145
9.2.3. Đóng một file (hàm fclose()) ............................................................... 146
9.2.4. Đọc/ghi mt kí t trên file (hàm getc()/putc()) ................................ 146
9.2.5. Kim tra cui file (hàm feof()) ............................................................. 149
9.2.6. Đọc/ghi chui kí t trên file (hàm fgets()/fputs()) .......................... 150
9.2.7. Hàm rewind() ........................................................................................ 152
9.2.8. Hàm ferror() ........................................................................................ 153
9.2.9. Xóa mt file (hàm remove()) ................................................................. 155
Trường Đại học Quy Nhơn
Mc lc 5
9.2.10. Làm sch mt lung (hàm fflush()) ................................................... 155
9.3. Đọc/ghi khối byte (hàm fread() và fwrite( )
) ................................ 156
9.4. Hàm fseek() và truy cập ngẫu nhiên .................................................. 158
9.5. Đọc/ghi dữ liệu theo mẫu (hàm fprintf() và fscanf()) ................ 160
9.6. Luồng chuẩn ........................................................................................... 162
9.6.1. Lung chun stdin, stdout, stderr ................................................... 162
9.6.2. Hàm freopen() truy cp gián tiếp vào lung chun ............................. 162
9.7. Câu hỏi trắc nghiệm và bài tập ............................................................... 163
9.7.1. Câu hi trc nghim ................................................................................. 164
9.7.2. Bài tp ....................................................................................................... 166
CHƯƠNG 10. TIỀN X LÝ VÀ CHÚ THÍCH.......................... .169 10.1. Dẫn hướng #defin
e ........................................................................... 169
10.1.1. Định nghĩa Macro tương tự như hàm ..................................................... 171 10.2. Dẫn hướng #erro
r.............................................................................. 171 10.3. Dẫn hướng #includ
e ......................................................................... 172
10.4. Chỉ thị biên dịch có điều kiện .............................................................. 176
10.4.1. Dẫn hướng #if, #else, #elif, #endif ............................................ 176
10.4.2. Dẫn hướng #ifdef và #ifndef ........................................................... 178 10.5. Dẫn hướng #unde
f.............................................................................. 178 10.6. Dẫn hướng define
d ........................................................................... 179 10.7. Dẫn hướng #lin
e................................................................................ 179
10.8. Toán tử tiền xử lý # và ## .................................................................... 180
10.9. Các macro định nghĩa trước ................................................................. 181
10.10. Chú thích trong C chuẩn .................................................................... 181
10.11. Câu hỏi trắc nghiệm và bài tập ........................................................... 182
10.11.1. Câu hi trc nghim ............................................................................. 182
10.11.2. Bài tp ................................................................................................... 182
TÀI LIU THAM KHO .............................................................. 185
Khoa Công ngh thông tin
Chương 1. Giới thiu 7
CHƯƠNG 1. GIỚI THIỆU
1.1. Thut toán
Thuật toán là dãy hữu hạn các bước tính toán nhận các giá trị đầu vào chuyển đổi
thành các giá trị đầu ra.
Khi đã hình thành thuật toán, ta không xét đến việc chứng minh thuật toán đó mà
chỉ chú trọng đến việc áp dụng các bước theo sự hướng dẫn để có kết quả mong muốn.
Việc chứng minh tính đúng của thuật toán phải được tiến hành trước khi hình thành
các bước của thuật toán. Khái niệm thuật toán hiện nay dùng để chỉ cách giải quyết
một bài toán nào đó bằng máy tính.
Các tính chất của thuật toán:
+ Tính chính xác: một dữ liệu đầu vào chỉ cho một dữ liệu đầu ra, không thể có
một dữ liệu đầu vào nhưng cho nhiều kết quả khác nhau.
+ Tính rõ ràng: thuật toán phải thể hiện bằng các câu lệnh rõ ràng và có thứ tự.
+ Tính phổ dụng: thuật toán có thể áp dụng cho nhiều đầu vào tương tự nhau.
+ Tính kết thúc: thuật toán phải bao gồm một số hữu hạn các bước.
+ Tính đơn trị: một thuật toán được viết bởi nhiều người trên nhiều máy tính
khác nhau đều cho kết quả giống nhau.
Để biểu diễn thuật toán ta có thể sử dụng nhiều cách khác nhau. Thông thường có
ba cách biểu diễn thuật toán: dùng ngôn ngữ tự nhiên, dùng sơ đồ khối và dùng ngôn
ngữ lập trình. Ví dụ thuật toán giải phương trình bậc 1 ax+b=0 được biểu diễn bằng
ngôn ngữ tự nhiên như sau:
Bước 1: nếu a ≠ 0 thì thông báo phương trình có 1 nghiệm duy nhất là x=-b/a và
Khoa Công ngh thông tin 8
Lập trình cơ bản
kết thúc thuật toán, nếu a=0 thì chuyển sang bước 2.
Bước 2: nếu b=0 th ìthông báo phương trình vô số nghiệm, kết thúc thuật toán.
Nếu b≠0 thì thông báo phương trình vô nghiệm, kết thúc thuật toán.
Thuật toán giải phương trình bậc 1 ở trên sẽ nhận các giá trị đầu vào là hai số
thực a và b. Sau hai bước tính toán, thuật toán sẽ cho kết quả (phụ thuộc vào hai giá trị
a, b tương ứng) là có nghiệm hoặc không có nghiệm.
Cùng một thuật toán như trên, ta cũng có thể sử dụng các kí hiệu để biểu diễn.
Việc sử dụng các kí hiệu để biểu diễn thuật toán ta gọi là sơ đồ khối. Qui ước các kí hiệu như sau: Begin End ,
: điểm bắt đầu và kết thúc thuật toán.
: nhận dữ liệu đầu vào, thông báo dữ liệu đầu ra.
: thực hiện các bước tính toán của thuật toán. : kiểm tra điều kiện.
: chuyển đến bước tiếp theo của thuật toán.
Từ các kí hiệu qui ước ở trên, ta có thể mô tả thuật toán giải phương trình bậc 1 như hình 1-1 sau:
Hình 1-1. Sơ đồ khi biu din thut toán giải phương trình bậc 1.
Trường Đại học Quy Nhơn
Chương 1. Giới thiu 9
Việc sử dụng ngôn ngữ tự nhiên và sơ đồ khối để biểu diễn thuật toán mục đích
để người đọc hiểu và làm theo các bước trong đó. Tuy nhiên, để máy tính "hiểu" và
thực hiện được các bước của thuật toán ta phải sử dụng một công cụ khác, đó chính là ngôn ngữ lập trình.
1.2. Ngôn ng lp trình
Ngôn ngữ lập trình là một hệ thống được kí hiệu hóa để mô tả thuật toán máy
tính ở dạng mà cả máy tính và con người hiểu được.
Tập hợp các chỉ thị được biểu thị qua ngôn ngữ lập trình nhằm mục đích thực
hiện thao tác nào đó được gọi là chương trình máy tính.
Lập trình là khái niệm chỉ quá trình con người tạo ra chương trình máy tính thông
qua ngôn ngữ lập trình. Ta cũng có thể nói lập trình là quá trình chuyển cách giải bài
toán bằng ngôn ngữ tự nhiên về ngôn ngữ mà máy tính hiểu và thực hiện được bằng
ngôn ngữ lập trình. Văn bản được viết bằng ngôn ngữ lập trình để tạo nên chương trình
máy tính gọi là mã nguồn.
Thao tác chuyển đổi mã nguồn thành chuỗi các chỉ thị máy tính gọi là biên dịch
chương trình. Chương trình để thực hiện công việc trên gọi là chương trình dịch.
Ngôn ngữ lập trình thường phân thành nhiều loại khác nhau, ví dụ ngôn ngữ lập
trình bậc cao, bậc thấp. Hay phân thành ngôn ngữ lập trình hướng cấu trúc, hướng đối
tượng, …tuy nhiên hầu hết các ngôn ngữ lập trình hiện nay đều có những điểm chung
đó là có từ khóa, định danh, kiểu dữ liệu, cấu trúc điều khiển.
1.3. Ngôn ng lp trình C
Ngôn ngữ lập trình C được phát minh và cài đặt lần đầu tiên bởi Dennis Ritchie
và được sử dụng trong hệ điều hành Linux. C là kết quả của một quá trình phát triển
bắt đầu bằng ngôn ngữ B (được phát minh bởi Ken Thompson). Từ ngôn ngữ B đã phát
triển ngôn ngữ C vào năm 1970.
Hè năm 1983, thành lập một ủy ban để tạo ra chuẩn ANSI (American National
Standards Intitute) định nghĩa ngôn ngữ C. Quá trình tiêu chuẩn hóa mất 6 năm.
Chuẩn ANSI C đã được chấp nhận vào tháng 12 năm 1989. Tiêu chuẩn này cũng được
Khoa Công ngh thông tin 10
Lập trình cơ bản
tổ chức tiêu chuẩn quốc tế (ISO) chấp nhận và được gọi là C chuẩn. Ngày nay, tất cả
các trình biên dịch ngôn ngữ C/C++ đều tuân theo C chuẩn.
1.3.1. C là ngôn ng bc trung
C thường được gọi là ngôn ngữ máy bậc trung. Điều này không có nghĩa là C ít
mạnh và khó sử dụng hoặc ít phát triển hơn các ngôn ngữ bậc cao như là Basic hoặc
Pascal. C có ý tưởng như là một ngôn ngữ bậc trung bởi vì nó tích hợp tốt nhất các
thành phần của ngôn ngữ bậc cao kết hợp với tính mềm dẻo của ngôn ngữ cấp thấp.
C cho phép lập trình với bit, byte và địa chỉ. Mã nguồn của ngôn ngữ C cũng
tương thích với nhiều chương trình dịch, nhiều hệ điều hành khác nhau. Ví dụ ta có thể
dễ dàng chuyển đổi một chương trình C viết trên hệ điều hành DOS sang một chương
trình C thực thi trên Windows. Bc cao Ada Modula-2 Pascal COBOL FORTRAN BASIC Bc trung Java C++ C FORTH
Bc thp Macro-assembler Assembler
Bảng 1-1. Ngôn ng C so vi các ngôn ng lp trình khác.
Tất cả các ngôn ngữ lập trình bậc cao đều hỗ trợ khái niệm kiểu dữ liệu. Kiểu dữ
liệu định nghĩa các tập giá trị mà một biến có thể lưu trữ và tập các phép toán có thể
thao tác trên giá trị đó. Kiểu dữ liệu cơ bản nhất là số nguyên, kí tự và số thực. Mặc dù
C có năm kiểu dữ liệu cơ bản, nhưng nó không phải là một ngôn ngữ định kiểu mạnh
như là Pascal. C cho phép chuyển đổi qua lại giữa các kiểu dữ liệu với nhau. Ví dụ ta
có thể trộn lẫn kiểu kí tự và kiểu số trong một biểu thức.
Không giống như ngôn ngữ bậc cao, C không kiểm tra các lỗi thời gian thực thi.
Ví dụ C không kiểm tra xem các biên của mảng có tràn hay không. Các kiểu kiểm tra
này là trách nhiệm của người lập trình.
Trường Đại học Quy Nhơn