Giáo trình lập trình căn bản | Học viện Báo chí và Tuyên truyền

Các thành phần cơ bản của ngôn ngữ C. Kiểu dữ liệu, hằng, biến, mảng và biểu thức. Vào - ra dữ liệu. Các câu lệnh điều khiển. Con trỏ và hàm. Kiểu cấu trúc, kiểu hợp. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT
TH.S. TRẦN THỊ HOA
GIÁO TRÌNH
LẬP TRÌNH CĂN BẢN
Hà Nội, 2013
BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT
TH.S. TRẦN THỊ HOA
GIÁO TRÌNH
LẬP TRÌNH CĂN BẢN
Hà Nội, 2013
i
MỤC LỤC
MỤC LỤC i
DANH MỤC CÁC BẢNG vii
DANH MỤC CÁC HÌNH viii
LỜI NÓI ĐẦU ix
CHƢƠNG 1: CÁC THÀNH PHẦN CƠ BẢN CỦA GÔN NGỮ C N 1
1.1. Gii thiu ngôn ng C 1
1.2. T p ký t, t khóa, tên g i 2
1.2.1. T p k tý 2
1.2.2. T khóa 2
1.2.3. Tên g i 3
1.3. Câu lnh, kh i l nh, l i gi i thích 3
1.3.1. Câu l 3nh
1.3.2. Khi lnh 4
1.3.3. L i gii thích 4
1.4. Ch th tin biên d 5ch
1.5. C u trúc c a m ột chƣơng trình C 6
1.6. M ột vài chƣơng trình C đơn giản 7
1.7. V ận hành chƣơng trình trên máy 8
1.7.1. T o tệp chƣơng trình gốc 9
1.7.2. D ịch chƣơng trình 9
1.7.3. Chạy chƣơng trình 10
Bài t p cu ối chƣơng 11
CHƢƠNG 2: KIỂU DỮ LIỆU, HẰNG, BIẾN, MẢNG VÀ BI THỨCU 12
2.1. Kiu d liu 12
ii
2.1.1. Các kiu d liệu đơn giản thông dng 12
2.1.2. Kiu d liu lit kê 13
2.2. H ng, biến 14
2.2.1. H ng 14
2.2.2. Biến 16
2.2.3. Kiu mng 17
2.2.4. Toán t sizeof 19
2.3. Định nghĩa kiểu d liu mi 20
2.4. Biu thc 20
2.4.1. Khái ni m bi u th c 20
2.4.2. Các phép toán 21
2.4.3. Chuy ển đổi kiu giá tr 24
2.4.4. Câu l nh gán và Bi u th c gán 25
2.4.5. Biu thức điều kin 25
2.4.6. Th t ƣu tiên trong phép toán 26
Bài t p cu ối chƣơng 28
CHƢƠNG 3: VÀO A DỮ LIỆU- R 29
3.1. Hàm printf 29
3.1.1. Khai báo hàm 29
3.1.2. Chuỗi điều khi n 29
3.1.3. Đặc t 30
3.1.4. K ý t chuyn dng 31
3.1.5. Danh sách đối 32
3.1.6. Giá tr c a hàm printf 33
3.2. Hàm scanf 33
iii
3.2.1. Khai báo hàm 34
3.2.2. Danh sách đối 34
3.2.3. Dòng vào và trƣờng vào 34
3.2.4. Chu ỗi điều khi n 34
3.2.5. K ý t chuyn dng 35
3.2.6. Giá tr c a hàm scanf 37
3.3. Dòng vào stdin và các hàm scanf, gets, getchar 37
3.3.1. Hàm gets 37
3.3.2. Hàm getchar 38
3.4. Các hàm xu puts, putchar t ký t 39
3.4.1. Hàm puts 39
3.4.2. Hàm putchar 39
3.5. Các hàm vào ra trên màn hình, bàn phím 39
3.5.1. Hàm getch 39
3.5.2. Hàm getche 39
3.5.3. Hàm putch 40
3.5.4. Hàm kbhit 40
3.5.5. Hàm xóa màn hình 41
3.5.6. Hàm di chuy n con tr 41
Bài t p cu ối chƣơng 42
CHƢƠNG 4: CÁC CÂU LỆNH ĐIỀU KHIỂN 44
4.1. Các câu l nh r nhánh 44
4.1.1. Câu lnh if 44
4.1.2. Câu lnh switch 48
4.1.3. Nhãn và Câu lnh goto. 53
iv
4.2. Các câu l nh có c u trúc l p 56
4.2.1. Câu l nh for 56
4.2.2. Câu l nh while 62
4.2.3. Câu lệnh do…while 65
4.3. Câu lnh break và câu l nh continue 68
4.3.1. Câu l nh break 68
4.3.2. Câu l nh continue 69
Bài t p cu ối chƣơng 71
CHƢƠNG 5: CON TRỎ VÀ HÀM 74
5.1. Con tr 74
5.1.1. Địa ch 74
5.1.2. Con tr 74
5.2. Hàm 76
5.2.1. Cách t chc hàm 77
5.2.2. Biến/mng t động 80
5.2.3. Biến/mng ngoài 81
5.2.4. Cách truy n tham s i hàm khi g 82
5.2.5. Hàm có đối con tr 84
5.2.6. Con tr và m ng m t chi u 86
5.2.7. Con tr và m ng nhi u chi u 88
5.2.8. Hàm ki u con tr 91
5.2.9. Con tr t i hàm (Con tr hàm) 92
5.2.10. Hàm có đối là con tr hàm 94
5.2.11. Hàm đệ quy 95
Bài t p cu ối chƣơng 99
v
CHƢƠNG 6: KIỂU CẤU TRÚC, KIỂU HỢP 101
6.1. Kiu cu trúc 101
6.1.1. Định nghĩa kiểu cu trúc 101
6.1.2. Khai báo bi n c u trúc ế 103
6.1.3. Truy nh i các thành ph n c a cp t u trúc 104
6.1.4. S dng cu trúc 105
6.1.5. M ng cu trúc 107
6.1.6. Khởi đầu cho mt cu trúc và phép gán cu trúc 109
6.2. Kiu H p 110
6.2.1. Định nghĩa kiểu hp 110
6.2.2. Khai báo bi n ki p ế u h 110
6.3. C u trúc t tr và danh sách liên k t ế 114
6.3.1. C p phát b nh động 114
6.3.2. C u trúc t tr và danh sách liên k t ế 114
6.3.3. Các phép toán trên danh sách liên k t ế 116
6.3.4. Ngăn xếp 126
6.3.5. Hàng đợi 129
Bài t p cu ối chƣơng 132
CHƢƠNG 7: THAO TÁC TRÊN CÁC TỆP TIN 134
7.1. Gii thi u chung 134
7.2. Kiu nhp xut nh phân và văn bản 135
7.2.1. Kiu nh p xu t nh phân 135
7.2.2. Kiu nh p xu ất văn bản 135
7.3. Các hàm x l t p c p 2 ý 136
7.3.1. Các hàm dùng chung cho c hai ki u nh p xut 136
vi
7.3.2. Các hàm nhp xu t k ý t 139
7.3.3. Các hàm nhp xu t theo ki ểu văn bản 141
7.3.4. Các hàm nhp xu t theo ki u nh phân 147
Bài tập cuối chƣơng 153
PHỤ LỤC 1 I-1
PHỤ LỤC 2 II-1
PHỤ LỤC 3 III-1
TÀI LIỆU THAM KHẢO 153
vii
DANH MỤ C CÁC B NG
Bảng 1.1. Danh sách t khóa c ủa ngôn ng C 2
Bảng 2.1. Các phép toán hai ngôi 21
Bảng 2.2. Các phép toán với bit 22
Bảng 2.3. Các phép toán so sánh 22
Bảng 2.4. Các phép toán logic 23
Bảng 2.5. Th t ưu tiên của các phép toán 26
Bảng 3.1. Danh sách các k n d ng c a hàm printfý tự chuyể 32
Bảng 3.2. Danh sách k t n d ng và ki i cý chuyể ểu đố ủa hàm scanf 35
Bảng 7.1. Các ki u truy nh ập tệp 136
viii
DANH M C CÁC HÌNH
Hình 1.1. Màn hình so n th o c a Turbo C 9
Hình 4.1. Sơ đồ khối của câu l nh if d ạng 1 (nhánh else n t) và lối tắ ệnh
if dạng 2. 45
Hình 4.2. Sơ đồ khối của câu lệnh switch…case 50
Hình 4.3. Sơ đồ khối của câu l nh goto k t h p v i câu l nh if ế 54
Hình 4.4. Sơ đồ khối của câu l nh for 57
Hình 4.5. Sơ đồ khối của câu l nh while 63
Hình 4.6. Sơ đồ khối của câu lệnh do… while 66
ix
LỜI NÓI ĐẦU
Theo khung chƣơng trình củ ục Đào Tạ ập trình căn a B Giáo D o, L
bn là mt phn quan trng trong hc phn Tin học Đại cƣơng thuộc các khi
ngành Khoa h c T c binhiên, đặ t là ngành Công ngh thông tin.
Nhằm đáp ứng yêu cầu học tập của sinh viên bƣớc đầu làm quen với
công việc lập trình, tác giả đã biên soạn Giáo Trình Lập trình căn nhằm bản
giúp cho sinh viên có một tài liệu học tập, rèn luyện tốt khả năng lập trình, tạo
nền tảng vững chắc cho các môn học tiếp theo trong chƣơng trình đào tạo kỹ
sƣ Công nghệ thông tin.
Giáo trình bao gồm những kiến thức từ đơn giản đến phức tạp. Nội dung
của giáo trình đƣợc chia thành bảy chƣơng. Trong mỗi chƣơng đều phần
giới thiệu lý thuyết, phần bài tập mẫu và cuối cùng phần bài tập tgiải để
sinh viên tự mình kiểm tra những kiến thức và kinh nghiệm đã đƣợc học. Sau
đây là nội dung chính của các chƣơng:
- Chƣơng 1 ngoài việc giới thiệu các khái niệm bản của ngôn ngữ lập
trình C còn đƣa ra một số chƣơng trình C đơn giản 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.
- Chƣơng 2 trình bày về các kiểu dữ liệu, cách biểu diễn các giá trị dữ
liệu cách tổ chức (lƣu trữ) dữ liệu t biến mảng. Ngoài ra chƣơng rong
này còn giới thiệu về biểu thức, về các cách xử dữ liệu đơn giản nhờ các
phép toán, biểu thức và câu lệnh gán.
- Chƣơng 3 trình bày về các hàm vào ra dữ liệu trên bàn phím màn
hình.
- Chƣơng 4 trình bày về lớp toán tử rất quan trọng dùng để thể hiện các
thuật toán, đó toán trẽ nhánh if, toán tử lựa chọn switch, các toán tử tạo
lập chu trình (vòng lặp) for, while, do – while và toán tử goto.
- Chƣơng 5 trình bày cách tổ chức chƣơng trình thành các hàm, các quy
tắc xây dựng và sử dụng hàm. Các vấn đề hay và khó ở đây là con trỏ, con trỏ
hàm và kỹ thuật đệ quy.
- Chƣơng 6 trình bày về một kiểu dữ liệu quan trọng là cấu trúc, cấu trúc
tự trỏ và danh sách liên kết.
x
- Chƣơng 7 trình bày về các thao tác trên tệp nhƣ: tạo một tệp mới, ghi
dữ liệu từ bộ nhớ lên tệp, đọc dữ liệu từ tệp vào bộ nhớ,…
Khi viết, tác giả đã cố gắng để giáo trình đƣợc hoàn chỉnh, song chắc
chắn không tránh khỏi thiếu xót, vậy rất mong nhận đƣợc sự đóng góp ý
kiến của độc giả để giáo trình ngày càng hoàn thiện hơn.
Tác giả cũng xin chân thành cảm ơn các đồng nghiệp ở Khoa Công nghệ
Thông tin, Học viện Kỹ thuật Mật đã giúp đỡ, đóng góp ý kiến đhoàn
chỉnh nội dung giáo trình này.
Hà Nội, tháng 11, 2013
TÁC GIẢ
| 1/180

Preview text:

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ TH.S. TRẦN THỊ HOA GIÁO TRÌNH LẬP TRÌNH CĂN BẢN Hà Nội, 2013 BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ TH.S. TRẦN THỊ HOA GIÁO TRÌNH LẬP TRÌNH CĂN BẢN Hà Nội, 2013 MỤC LỤC MỤC LỤC i DANH MỤC CÁC BẢNG vii DANH MỤC CÁC HÌNH viii LỜI NÓI ĐẦU ix
CHƢƠNG 1: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ C 1
1.1. Giới thiệu ngôn ngữ C 1
1.2. Tập ký tự, từ khóa, tên gọi 2 1.2.1. Tập ký tự 2 1.2.2. Từ khóa 2 1.2.3. Tên gọi 3
1.3. Câu lệnh, khối lệnh, lời giải thích 3 1.3.1. Câu lện h 3 1.3.2. Khối lệnh 4 1.3.3. Lời giải thích 4
1.4. Chỉ thị tiền biên dịc h 5
1.5. Cấu trúc của một chƣơng trình C 6
1.6. Một vài chƣơng trình C đơn giản 7
1.7. Vận hành chƣơng trình trên máy 8
1.7.1. Tạo tệp chƣơng trình gốc 9 1.7.2. Dịch chƣơng trình 9 1.7.3. Chạy chƣơng trình 10 Bài tập cuối chƣơng 11
CHƢƠNG 2: KIỂU DỮ LIỆU, HẰNG, BIẾN, MẢNG VÀ BIỂU THỨC 12 2.1. Kiểu dữ liệu 12 i
2.1.1. Các kiểu dữ liệu đơn giản thông dụng 12
2.1.2. Kiểu dữ liệu liệt kê 13 2.2. Hằng, biến 14 2.2.1. Hằng 14 2.2.2. Biến 16 2.2.3. Kiểu mảng 17 2.2.4. Toán tử sizeof 19
2.3. Định nghĩa kiểu dữ liệu mới 20 2.4. Biểu thức 20
2.4.1. Khái niệm biểu thức 20 2.4.2. Các phép toán 21
2.4.3. Chuyển đổi kiểu giá trị 24
2.4.4. Câu lệnh gán và Biểu thức gán 25
2.4.5. Biểu thức điều kiện 25
2.4.6. Thứ tự ƣu tiên trong phép toán 26 Bài tập cuối chƣơng 28
CHƢƠNG 3: VÀO - RA DỮ LIỆU 29 3.1. Hàm printf 29 3.1.1. Khai báo hàm 29
3.1.2. Chuỗi điều khiển 29 3.1.3. Đặc tả 30
3.1.4. Ký tự chuyển dạng 31 3.1.5. Danh sách đối 32
3.1.6. Giá trị của hàm printf 33 3.2. Hàm scanf 33 ii 3.2.1. Khai báo hàm 34 3.2.2. Danh sách đối 34
3.2.3. Dòng vào và trƣờng vào 34
3.2.4. Chuỗi điều khiển 34
3.2.5. Ký tự chuyển dạng 35
3.2.6. Giá trị của hàm scanf 37
3.3. Dòng vào stdin và các hàm scanf, gets, getchar 37 3.3.1. Hàm gets 37 3.3.2. Hàm getchar 38
3.4. Các hàm xuất ký tự puts, putchar 39 3.4.1. Hàm puts 39 3.4.2. Hàm putchar 39
3.5. Các hàm vào ra trên màn hình, bàn phím 39 3.5.1. Hàm getch 39 3.5.2. Hàm getche 39 3.5.3. Hàm putch 40 3.5.4. Hàm kbhit 40 3.5.5. Hàm xóa màn hình 41
3.5.6. Hàm di chuyển con trỏ 41 Bài tập cuối chƣơng 42
CHƢƠNG 4: CÁC CÂU LỆNH ĐIỀU KHIỂN 44
4.1. Các câu lệnh rẽ nhánh 44 4.1.1. Câu lệnh if 44 4.1.2. Câu lệnh switch 48
4.1.3. Nhãn và Câu lệnh goto. 53 iii
4.2. Các câu lệnh có cấu trúc lặp 56 4.2.1. Câu lệnh for 56 4.2.2. Câu lệnh while 62 4.2.3. Câu lệnh do…while 65
4.3. Câu lệnh break và câu lệnh continue 68 4.3.1. Câu lệnh break 68 4.3.2. Câu lệnh continue 69 Bài tập cuối chƣơng 71
CHƢƠNG 5: CON TRỎ VÀ HÀM 74 5.1. Con trỏ 74 5.1.1. Địa chỉ 74 5.1.2. Con trỏ 74 5.2. Hàm 76 5.2.1. Cách tổ chức hàm 77
5.2.2. Biến/mảng tự động 80 5.2.3. Biến/mảng ngoài 81
5.2.4. Cách truyền tham số khi gọi hàm 82
5.2.5. Hàm có đối con trỏ 84
5.2.6. Con trỏ và mảng một chiều 86
5.2.7. Con trỏ và mảng nhiều chiều 88 5.2.8. Hàm kiểu con trỏ 91
5.2.9. Con trỏ tới hàm (Con trỏ hàm) 92
5.2.10. Hàm có đối là con trỏ hàm 94 5.2.11. Hàm đệ quy 95 Bài tập cuối chƣơng 99 iv
CHƢƠNG 6: KIỂU CẤU TRÚC, KIỂU HỢP 101 6.1. Kiểu cấu trúc 101
6.1.1. Định nghĩa kiểu cấu trúc 101
6.1.2. Khai báo biến cấu trúc 103
6.1.3. Truy nhập tới các thành phần của cấu trúc 104
6.1.4. Sử dụng cấu trúc 105 6.1.5. Mảng cấu trúc 107
6.1.6. Khởi đầu cho một cấu trúc và phép gán cấu trúc 109 6.2. Kiểu Hợp 110
6.2.1. Định nghĩa kiểu hợp 110
6.2.2. Khai báo biến kiểu hợp 110
6.3. Cấu trúc tự trỏ và danh sách liên kết 114
6.3.1. Cấp phát bộ nhớ động 114
6.3.2. Cấu trúc tự trỏ và danh sách liên kết 114
6.3.3. Các phép toán trên danh sách liên kết 116 6.3.4. Ngăn xếp 126 6.3.5. Hàng đợi 129 Bài tập cuối chƣơng 132
CHƢƠNG 7: THAO TÁC TRÊN CÁC TỆP TIN 134 7.1. Giới thiệu chung 134
7.2. Kiểu nhập xuất nhị phân và văn bản 135
7.2.1. Kiểu nhập xuất nhị phân 135
7.2.2. Kiểu nhập xuất văn bản 135
7.3. Các hàm xử lý tệp cấp 2 136
7.3.1. Các hàm dùng chung cho cả hai kiểu nhập xuất 136 v
7.3.2. Các hàm nhập xuất ký tự 139
7.3.3. Các hàm nhập xuất theo kiểu văn bản 141
7.3.4. Các hàm nhập xuất theo kiểu nhị phân 147 Bài tập cuối chƣơng 153 PHỤ LỤC 1 I-1 PHỤ LỤC 2 II-1 PHỤ LỤC 3 III-1 TÀI LIỆU THAM KHẢO 153 vi DANH MỤC CÁC BẢNG
Bảng 1.1. Danh sách từ khóa của ngôn ngữ C 2
Bảng 2.1. Các phép toán hai ngôi 21
Bảng 2.2. Các phép toán với bit 22
Bảng 2.3. Các phép toán so sánh 22
Bảng 2.4. Các phép toán logic 23
Bảng 2.5. Thứ tự ưu tiên của các phép toán 26
Bảng 3.1. Danh sách các ký tự chuyển dạng của hàm printf 32
Bảng 3.2. Danh sách ký tự chuyển dạng và kiểu đối của hàm scanf 35
Bảng 7.1. Các kiểu truy nhập tệp 136 vii DANH MỤC CÁC HÌNH
Hình 1.1. Màn hình soạn thảo của Turbo C 9
Hình 4.1. Sơ đồ khối của câu lệnh if dạng 1 (nhánh else nối tắt) và lệnh if dạng 2. 45
Hình 4.2. Sơ đồ khối của câu lệnh switch…case 50
Hình 4.3. Sơ đồ khối của câu lệnh goto kết hợp với câu lệnh if 54
Hình 4.4. Sơ đồ khối của câu lệnh for 57
Hình 4.5. Sơ đồ khối của câu lệnh while 63
Hình 4.6. Sơ đồ khối của câu lệnh do… while 66 viii LỜI NÓI ĐẦU
Theo khung chƣơng trình của Bộ Giáo Dục và Đào Tạo, Lập trình căn
bản là một phần quan trọng trong học phần Tin học Đại cƣơng thuộc các khối
ngành Khoa học Tự nhiên, đặc biệt là ngành Công nghệ thông tin.
Nhằm đáp ứng yêu cầu học tập của sinh viên bƣớc đầu làm quen với
công việc lập trình, tác giả đã biên soạn Giáo Trình Lập trình căn bản nhằm
giúp cho sinh viên có một tài liệu học tập, rèn luyện tốt khả năng lập trình, tạo
nền tảng vững chắc cho các môn học tiếp theo trong chƣơng trình đào tạo kỹ sƣ Công nghệ thông tin.
Giáo trình bao gồm những kiến thức từ đơn giản đến phức tạp. Nội dung
của giáo trình đƣợc chia thành bảy chƣơng. Trong mỗi chƣơng đều có phần
giới thiệu lý thuyết, phần bài tập mẫu và cuối cùng là phần bài tập tự giải để
sinh viên tự mình kiểm tra những kiến thức và kinh nghiệm đã đƣợc học. Sau
đây là nội dung chính của các chƣơng:
- Chƣơng 1 ngoài việc giới thiệu các khái niệm cơ bản của ngôn ngữ lập
trình C 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.
- Chƣơng 2 trình bày về các kiểu dữ liệu, 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. Ngoài ra chƣơng
này còn giới thiệu về biểu thức, về các cách xử lý dữ liệu đơn giản nhờ các
phép toán, biểu thức và câu lệnh gán.
- Chƣơng 3 trình bày về các hàm vào ra dữ liệu trên bàn phím và màn hình.
- Chƣơng 4 trình bày về lớp toán tử rất quan trọng dùng để thể hiện các
thuật toán, đó là toán tử rẽ nhánh if, toán tử lựa chọn switch, các toán tử tạo
lập chu trình (vòng lặp) for, while, do – while và toán tử goto.
- Chƣơng 5 trình bày cách tổ chức chƣơng trình thành các hàm, các quy
tắc xây dựng và sử dụng hàm. Các vấn đề hay và khó ở đây là con trỏ, con trỏ
hàm và kỹ thuật đệ quy.
- Chƣơng 6 trình bày về một kiểu dữ liệu quan trọng là cấu trúc, cấu trúc
tự trỏ và danh sách liên kết. ix
- Chƣơng 7 trình bày về các thao tác trên tệp nhƣ: tạo một tệp mới, ghi
dữ liệu từ bộ nhớ lên tệp, đọc dữ liệu từ tệp vào bộ nhớ,…
Khi viết, tác giả đã cố gắng để giáo trình đƣợc hoàn chỉnh, song chắc
chắn không tránh khỏi thiếu xót, vì vậy rất mong nhận đƣợc sự đóng góp ý
kiến của độc giả để giáo trình ngày càng hoàn thiện hơn.
Tác giả cũng xin chân thành cảm ơn các đồng nghiệp ở Khoa Công nghệ
Thông tin, Học viện Kỹ thuật Mật mã đã giúp đỡ, đóng góp ý kiến để hoàn
chỉnh nội dung giáo trình này. Hà Nội, tháng 11, 2013 TÁC GIẢ x