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!
Môn: Lập trình căn bản
Trường: Học viện Báo chí và Tuyên truyền
Thông tin:
Tác giả:
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