ev
UBND TỈNH THANH HĨA
TRƢỜNG CAO ĐẲNG NGHỀ CƠNG NGHIỆP THANH HĨA
GIÁO TRÌNH
LẬP TRÌNH CƠ BẢN
NGHỀ: CƠNG NGHỆ THƠNG TIN (ƢDPM)
TRÌNH ĐỘ: TRUNG CẤP
Năm 2018
TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại sách giáo trình nên các nguồn thơng tin có thể đƣợc
phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh
doanh thiếu lành mạnh sẽ bị nghiêm cấm.
2
LỜI GIỚI THIỆU
Mơ đun lập trình cơ bản cung cấp cho sinh viên những kiến thức cơ bản về
lập trình thơng qua ngơn ngữ lập trình C. Mơ đun này là nền tảng để tiếp thu hầu
hết các môn học/mô đun khác trong chƣơng trình đào tạo. Mặt khác, nắm vững
ngơn ngữ lập trình C là cơ sở phát triển các ứng dụng.
Giáo trình ―Lập trình cơ bản‖ bao gồm những kiến thức cơ bản về ngơn ngữ
lập trình C nhƣ cách khai báo biến, cấu trúc lập trình, cách xây dựng hàm, làm việc
với mảng dữ liệu, biến con trỏ, chuỗi kí tự trong C, kiểu dữ liệu cấu trúc.
Giáo trình đƣợc biên soạn dựa trên Chƣơng trình khung nghề Cơng nghệ
thơng tin (Ứng dụng phần mềm) ở trình độ Trung cấp. Tài liệu dùng cho việc
nghiên cứu, giảng dạy của giáo viên, học tập của sinh viên và cũng có thể đƣợc sử
dụng làm tài liệu tham khảo cho các lập trình viên.
Trong quá trình biên soạn giáo trình có sử dụng một số tài liệu liên quan đến
ngơn ngữ lập trình C, tuy nhiên khơng tránh khỏi thiếu sót, rất mong nhận đƣợc sự
đóng góp ý kiến của ngƣời đọc để giáo trình ngày càng hồn thiện hơn.
Xin chân thành cảm ơn!
Thanh Hóa, ngày 10 tháng 05 năm 2018
Tham gia biên soạn
1. Lê Thị Bằng
2. Vũ Thị Tuyết
3. Lê Ngọc Tâm
3
MỤC LỤC
ĐỀ MỤC
TRANG
TUYÊN BỐ BẢN QUYỀN ..................................................................................... 2
LỜI GIỚI THIỆU ................................................................................................... 3
MỤC LỤC ................................................................................................................ 4
GIÁO TRÌNH MƠ ĐUN ........................................................................................ 8
BÀI 1: GIỚI THIỆU CHUNG VỀ NGƠN NGỮ LẬP TRÌNH C .................... 10
1. MÔ TẢ THUẬT GIẢI ......................................................................................... 10
2. GIỚI THIỆU VỀ NGƠN NGỮ C VÀ MƠI TRƢỜNG LẬP TRÌNH TURBO C
2.1. Giới thiệu về ngôn ngữ C ................................................................................. 11
2.2. Môi trƣờng lập trình Turbo C .......................................................................... 12
3. VIẾT CHƢƠNG TRÌNH C ĐƠN GIẢN ............................................................. 23
3.1. Cấu trúc chƣơng trình C đơn giản .................................................................... 23
3.2. Các tập tin thƣ viện thông dụng ....................................................................... 25
3.3. Cú pháp khai báo các phần bên trong mơt chƣơng trình C.............................. 25
BÀI TẬP ................................................................................................................. 26
BÀI 2: SỬ DỤNG CÁC THÀNH PHẦN CƠ BẢN TRONG .............................. 27
1. KHAI BÁO VÀ SỬ DỤNG BIẾN....................................................................... 27
1.1. Bộ chữ viết trong C .......................................................................................... 27
1.2. Các từ khóa trong C ......................................................................................... 27
1.3. Các kiểu dữ liệu trong C .................................................................................. 28
1.4. Tên và các hằng số trong C .............................................................................. 29
1.5. Biến và biểu thức.............................................................................................. 32
2. NHẬP, XUẤT DỮ LIỆU TRONG C .................................................................. 38
2.1. Câu lệnh............................................................................................................ 38
2.2. Các lệnh đơn ..................................................................................................... 38
3. SỬ DỤNG CÁC HÀM CƠ BẢN TRONG C ...................................................... 45
BÀI TẬP ................................................................................................................. 46
BÀI 3: SỬ DỤNG CẤU TRÚC RẼ NHÁNH...................................................... 48
1. SỬ DỤNG LỆNH RẼ NHÁNH IF ...................................................................... 48
1.1. Khối lệnh .......................................................................................................... 48
1.2. Cấu trúc rẽ nhánh if .......................................................................................... 50
2. SỬ DỤNG CẤU TRÚC LỰA CHỌN ................................................................. 55
BÀI TẬP ................................................................................................................. 59
BÀI 4: SỬ DỤNG CẤU TRÚC VÒNG LẶP ...................................................... 62
1. SỬ DỤNG CẤU TRÚC VÒNG LẶP FOR ......................................................... 62
4
1.1. Khái niệm về cấu trúc vòng lặp........................................................................ 62
1.2. Vòng lặp for ..................................................................................................... 62
2. SỬ DỤNG VÒNG LẶP WHILE ......................................................................... 65
3. SỬ DỤNG VÒNG LẶP DO.. WHILE ................................................................ 67
4. CÁC CÂU LỆNH ĐẶC BIỆT ............................................................................. 70
4.1. Lệnh break ........................................................................................................ 70
4.2. Lệnh continue ................................................................................................... 70
BÀI TẬP ................................................................................................................. 71
BÀI 5: SỬ DỤNG HÀM ....................................................................................... 73
1. XÂY DỰNG HÀM .............................................................................................. 73
1.1. Khái niệm về hàm trong C ............................................................................... 73
1.2. Xây dựng một hàm ........................................................................................... 75
2. SỬ DỤNG HÀM ................................................................................................. 76
3. HÀM ĐỆ QUY .................................................................................................... 80
3.1. Định nghĩa ........................................................................................................ 80
3.2. Đặc điểm cần lƣu ý khi viết hàm đệ quy.......................................................... 81
BÀI TẬP ................................................................................................................. 81
BÀI 6. LÀM VIỆC VỚI MẢNG DỮ LIỆU ........................................................ 84
1. NHẬP/ XUẤT MẢNG MỘT CHIỀU ................................................................. 84
1.1. Khái niệm về mảng .......................................................................................... 84
1.2. Khai báo mảng ................................................................................................. 84
1.3. Truy xuất từng phần tử của mảng .................................................................... 85
2. SẮP XẾP MẢNG ................................................................................................ 88
2.1. Thuật toán ......................................................................................................... 88
2.2. Các bƣớc thực hiện........................................................................................... 88
3. CHÈN PHẦN TỬ VÀO MẢNG .......................................................................... 89
3.1. Thuật toán ......................................................................................................... 89
3.2. Các bƣớc thực hiện........................................................................................... 89
4. XÓA PHẦN TỬ MẢNG ..................................................................................... 89
4.1. Thuật toán ......................................................................................................... 89
4.2. Các bƣớc thực hiện........................................................................................... 89
5. MẢNG NHIỀU CHIỀU....................................................................................... 89
5.1 Khai báo ............................................................................................................ 89
5.2. Truy xuất từng phần tử của mảng 2 chiều........................................................ 90
BÀI TẬP ................................................................................................................. 92
BÀI 7: SỬ DỤNG BIẾN CON TRỎ .................................................................... 95
1. KHAI BÁO VÀ SỬ DỤNG BIẾN CON TRỎ .................................................... 95
5
2. THAO TÁC TRÊN CON TRỎ ............................................................................ 96
2.1. Gán địa chỉ của biến cho biến con trỏ .............................................................. 96
2.2. Nội dung của ô nhớ con trỏ chỉ tới................................................................... 96
2.3. Cấp phát vùng nhớ cho biến con trỏ ................................................................ 97
2.4. Cấp phát lại vùng nhớ cho biến con trỏ ........................................................... 98
2.5. Giải phóng vùng nhớ cho biến con trỏ ............................................................. 98
2.6. Một số phép toán trên con trỏ .......................................................................... 98
3. SỬ DỤNG CON TRỎ VÀ MẢNG MỘT CHIỀU ............................................... 99
3.1. Truy cập các phần tử mảng theo dạng con trỏ ................................................. 99
3.2. Truy xuất từng phần tử đang đƣợc quản lý bởi con trỏ theo dạng mảng ....... 101
3.3. Sử dụng con trỏ chỉ đến phần tử mảng .......................................................... 101
BÀI TẬP ............................................................................................................... 102
BÀI 8: LÀM VIỆC VỚI CHUỖI KÍ TỰ .......................................................... 104
1. NHẬP/ XUẤT CHUỖI KÍ TỰ .......................................................................... 104
1.1. Khái niệm ....................................................................................................... 104
1.2. Khai báo ......................................................................................................... 104
1.3. Nhập xuất chuỗi ............................................................................................. 105
2. SỬ DỤNG HÀM XỬ LÝ CHUỖI ..................................................................... 106
2.1. Cộng chuỗi - Hàm strcat() .............................................................................. 106
2.2. Xác định độ dài chuỗi - Hàm strlen() ............................................................ 106
2.3. Đổi một ký tự thƣờng thành ký tự hoa - Hàm toupper() ................................ 107
2.4. Đổi chuỗi chữ thƣờng thành chuỗi chữ hoa, hàm strupr() ............................. 107
2.5. Đổi chuỗi chữ hoa thành chuỗi chữ thƣờng, hàm strlwr() ............................. 107
2.6. Sao chép chuỗi, hàm strcpy() ......................................................................... 107
2.7. Sao chép một phần chuỗi, hàm strncpy() ....................................................... 108
2.8.Trích một phần chuỗi, hàm strchr()................................................................. 108
2.9. Tìm kiếm nội dung chuỗi, hàm strstr() .......................................................... 108
2.10. So sánh chuỗi, hàm strcmp() ........................................................................ 109
2.11 So sánh chuỗi, hàm stricmp() ........................................................................ 109
2.12. Khởi tạo chuỗi, hàm memset() ..................................................................... 109
2.13. Đổi từ chuỗi ra số, hàm atoi(), atof(), atol() (trong stdlib.h)........................ 109
BÀI TẬP ............................................................................................................... 110
BÀI 9: LÀM VIỆC VỚI KIỂU CẤU TRÚC .................................................... 111
1. KHAI BÁO KIỂU CẤU TRÚC TRONG C....................................................... 111
1.1. Khái niệm ....................................................................................................... 111
1.2. Định nghĩa kiểu cấu trúc ................................................................................ 111
1.3. Khai báo biến cấu trúc.................................................................................... 113
2. THAO TÁC TRÊN BIẾN KIỂU CẤU TRÚC................................................... 113
6
2.1. Truy xuất đến từng trƣờng của biến cấu trúc ................................................. 113
2.2. Khởi tạo cấu trúc ............................................................................................ 116
BÀI TẬP ............................................................................................................... 116
TÀI LIỆU THAM KHẢO .................................................................................. 118
7
GIÁO TRÌNH MƠ ĐUN
Tên mơ đun: Lập trình cơ bản
Mã mơ đun: MĐ 10
Vị trí, ý nghĩa, tính chất vai trị mơ đun:
- Vị trí mơ đun: Mơ đun đƣợc bố trí sau khi học xong các mơn học chung.
- Tính chất mơ đun: Là mơ đun bắt buộc thuộc nhóm các mơ đun trung cấp nghề
Cơng nghệ thơng tin (Ứng dụng phần mềm).
- Ý nghĩa, vai trị của mơ đun: Mô đun trang bị kiến thức cho ngƣời học về ngơn
ngữ lập trình C
Mục tiêu của mơ đun:
- Kiến thức:
+ Trình bày đƣợc các thành phần cơ bản trong giao diện làm việc của phần mềm
Turbo C.
+ Trình bày đƣợc cơng dụng của ngơn ngữ lập trình, ý nghĩa, cú pháp của các câu
lệnh dùng trong ngôn ngữ lập trình C.
+ Biết đƣợc một số thuật tốn để xử lý một số yêu cầu đơn giản.
+ Trình bày đƣợc ý nghĩa, cách khai báo, cách truy xuất với một số cấu trúc dữ
liệu.
+ Trình bày đƣợc ý nghĩa, cách khai báo, cách sử dụng hàm, mảng dữ liệu, chuỗi
kí tự.
+ Trình bày đƣợc ý nghĩa, cách khai báo, cách sử dụng biến con trỏ, kiểu cấu
trúc.
- Kỹ năng:
+ Cài đặt đƣợc một số chƣơng trình ứng dụng đơn giản bằng ngơn ngữ lập trình C;
+ Tạo và thực thi các chƣơng trình ứng dụng C.
+ Áp dụng các cấu trúc lệnh để viết đƣợc một số chƣơng trình xử lý yêu cầu đơn
giản.
+ Viết đƣợc một số hàm đơn giản và sử dụng trong các ứng dụng.
+ Xử lý đƣợc dữ liệu trên mảng và xâu ký tự.
+ Khắc phục đƣợc một số lỗi trong quá trình viết chƣơng trình C
- Năng lực tự chủ và trách nhiệm:
+ Có tính tự giác, học hỏi.
+ Có đƣợc tính sáng tạo, nghiêm túc, tích cực, linh hoạt.
- Nội dung chính:
+ Bài 1: Giới thiệu chung về ngơn ngữ lập trình C
+ Bài 2: Sử dụng các thành phần cơ bản trong C
+ Bài 3: Sử dụng câu lệnh rẽ nhánh
+ Bài 4: Sử dụng cấu trúc vòng lặp
+ Bài 5: Sử dụng hàm
8
+ Bài 6: Làm việc với mảng dữ liệu
+ Bài 7: Sử dụng biến con trỏ
+ Bài 8: Làm việc với chuỗi kí tự
+ Bài 9: Làm việc với kiểu cấu trúc
9
BÀI 1: GIỚI THIỆU CHUNG VỀ NGƠN NGỮ LẬP TRÌNH C
MÃ BÀI: MĐ10/01
Giới thiệu:
Trƣớc khi ngƣời học viết đƣợc một chƣơng trình C, ngƣời học phải biết diễn tả
đƣợc thuật giải có thể bằng ngơn ngữ tự nhiên hoặc bằng lƣu đồ khối và biết sử
dụng mơi trƣờng lập trình C
Trong giáo trình bày tập trung sử dụng phần mềm Turbo C++ để thực hiện viết
chƣơng trình C.
Mục tiêu:
- Trình bày đƣợc khái niệm về thuật giải và các cách để diễn tả thuật giải.
- Khái niệm về ngôn ngữ lập trình, sử dụng lƣu đồ để biểu diễn các giải thuật.
- Hiểu đƣợc lịch sử phát triển của ngôn ngữ C.
- Biết đƣợc những ứng dụng thực tế của ngơn ngữ lập trình C.
- Thao tác thành thạo trên môi trƣờng phát triển C.
- Sử dụng đƣợc hệ thống trợ giúp của phần mềm C.
- Nghiêm túc, chủ động tìm hiểu các tính năng của ngơn ngữ C.
Nội dung chính:
1. MƠ TẢ THUẬT GIẢI
Thuật giải: Là một tập hợp hữu hạn các thao tác (các cơng việc, các phép
tốn…..) đƣợc thực hiện theo một trình tự thích hợp.
Có nhiều cách diễn đạt thuật giải:
Bằng lời (ngôn ngữ tự nhiên)
Bằng ngơn ngữ lập trình
Bằng lƣu đồ
- Ngơn ngữ tự nhiên là ngôn ngữ của chúng ta đang sử dụng, chúng ta có thể sử
dụng ngơn ngữ tự nhiên để mơ tả giải thuật.
Ví dụ: Ta có giải thuật giải phƣơng trình bậc nhất dạng ax + b = 0 nhƣ sau:
Bƣớc 1: Nhập giá trị a, b
Bƣớc 2: Xét giá trị của a xem có bằng 0 hay khơng? Nếu a=0 thì làm bƣớc 3, nếu a
khác khơng thì làm bƣớc 4.
Bƣớc 3: (a bằng 0) Nếu b bằng 0 thì ta kết luận phƣơng trình vơ số nghiệm, nếu b
khác 0 thì ta kết luận phƣơng trình vơ nghiệm.
Bƣớc 4: (a khác 0) Ta kết luận phƣơng trình có nghiệm x=-b/a
- Ngơn ngữ lập trình: Là một hệ thống đƣợc kí hiệu hố để diễn tả những tính tốn
trong một dạng mà cả con ngƣời máy đều có thể đọc và hiểu đƣợc.
- Lƣu đồ (Flowchart): Sử dụng các kí hiệu sơ đồ hình khối để thực hiện thuật giải.
10
Hình dạng
Hành động
Bắt đầu, kết thúc
Xử lý (cơng việc thực hiện)
Lựa chọn
Đƣờng đi (Luồng xử lý)
Dữ liệu đầu vào
Bảng 1-1. Bảng kí hiệu lƣu đồ thuật tốn
Ví dụ:
Hình 1-1. Sơ đồ khối bài tốn giải phƣơng trình ax+b=0
2. GIỚI THIỆU VỀ NGƠN NGỮ C VÀ MƠI TRƢỜNG LẬP TRÌNH
TURBO C
2.1. Giới thiệu về ngôn ngữ C
C là ngôn ngữ lập trình cấp cao, đƣợc sử dụng rất phổ biến để lập trình hệ thống
cùng với Assembler và phát triển các ứng dụng.
Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie
(làm việc tại phịng thí nghiệm Bell) đã phát triển ngơn ngữ lập trình C dựa trên
ngơn ngữ BCPL (do Martin Richards đƣa ra vào năm 1967) và ngôn ngữ B
(do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 khi viết hệ điều
hành UNIX đầu tiên trên máy PDP-7) và đƣợc cài đặt lần đầu tiên trên hệ điều
hành UNIX của máy DEC PDP-11.
Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển ―Ngôn
11
ngữ lập trình C‖ và đƣợc phổ biến rộng rãi đến nay.
Lúc ban đầu, C đƣợc thiết kế nhằm lập trình trong mơi trƣờng của hệ điều hành
Unix nhằm mục đích hỗ trợ cho các cơng việc lập trình phức tạp. Nhƣng về sau,
với những nhu cầu phát triển ngày một tăng của cơng việc lập trình, C đã vƣợt qua
khn khổ của phịng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập
trình để rồi các cơng ty lập trình sử dụng một cách rộng rãi. Sau đó, các cơng ty
sản xuất phần mềm lần lƣợt đƣa ra các phiên bản hỗ trợ cho việc lập trình bằng
ngôn ngữ C và chuẩn ANSI C cũng đƣợc khai sinh từ đó.
Ngơn ngữ lập trình C là một ngơn ngữ lập trình hệ thống rất mạnh và rất ―mềm
dẻo‖, có một thƣ viện gồm rất nhiều các hàm (function) đã đƣợc tạo sẵn. Ngƣời lập
trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo
mới. Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán nên phù hợp cho việc
giải quyết các bài tốn kỹ thuật có nhiều cơng thức phức tạp. Ngoài ra, C cũng cho
phép ngƣời lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tƣợng khác. Tuy
nhiên, điều mà ngƣời mới vừa học lập trình C thƣờng gặp ―rắc rối‖ là ―hơi khó
hiểu‖ do sự ―mềm dẻo‖ của C. Dù vậy, C đƣợc phổ biến khá rộng rãi và đã trở
thành một công cụ lập trình khá mạnh, đƣợc sử dụng nhƣ là một ngơn ngữ lập trình
chủ yếu trong việc xây dựng những phần mềm hiện nay.
Ngơn ngữ C có những đặc điểm cơ bản sau:
o Tính cơ đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 tốn tử chuẩn, nhƣng
hầu hết đều đƣợc biểu diễn bằng những chuỗi ký tự ngắn gọn.
o Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập trình nhƣ
cấu trúc lựa chọn, lặp… Từ đó các chƣơng trình viết bằng C đƣợc tổ chức rõ
ràng, dễ hiểu.
o Tính tƣơng thích (compatible): C có bộ tiền xử lý và một thƣ viện
chuẩn vơ cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các
chƣơng trình viết bằng C vẫn hồn tồn tƣơng thích.
o Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp, chấp
nhận nhiều cách thể hiện, có thể thu gọn kích thƣớc của các mã lệnh làm chƣơng
trình chạy nhanh hơn.
o Biên dịch (compile): C cho phép biên dịch nhiều tập tin chƣơng trình riêng rẽ
thành các tập tin đối tƣợng (object) và liên kết (link) các đối tƣợng đó lại với nhau
thành một chƣơng trình có thể thực thi đƣợc (executable) thống nhất.
Turbo C là môi trƣờng hỗ trợ lập trình C do hãng Borland cung cấp. Mơi trƣờng
này cung cấp các chức năng nhƣ: soạn thảo chƣơng trình, dịch, thực thi chƣơng
trình… Phiên bản đƣợc sử dụng ở đây là Turbo C 3.0.
2.2. Mơi trƣờng lập trình Turbo C
a. Gọi Turbo C
Chạy Turbo C cũng giống nhƣ chạy các chƣơng trình khác trong mơi trƣờng
DOS hay Windows, màn hình sẽ xuất hiện menu của Turbo C có dạng nhƣ sau:
12
Hình 1-2. Màn hình làm việc của Turbo C++
Dịng trên cùng gọi là thanh menu (menu bar). Mỗi mục trên thanh menu lại có
thể có nhiều mục con nằm trong một menu kéo xuống.
Dòng dƣới cùng ghi chức năng của một số phím đặc biệt. Chẳng hạn khi gõ
phím F1 thì ta có đƣợc một hệ thống trợ giúp mà ta có thể tham khảo nhiều thơng
tin bổ ích.
Muốn vào thanh menu ngang ta gõ phím F10. Sau đó dùng các phím mũi tên qua
trái hoặc phải để di chuyển vùng sáng tới mục cần chọn rồi gõ phím Enter. Trong
menu kéo xuống ta lại dùng các phím mũi tên lên xuống để di chuyển vùng sáng
tới mục cần chọn rồi gõ Enter.
Ta cũng có thể chọn một mục trên thanh menu bằng cách giữ phím Alt và gõ vào
một ký tự đại diện của mục đó (ký tự có màu sắc khác với các ký tự khác). Chẳng
hạn để chọn mục File ta gõ Alt-F (F là ký tự đại diện của File)
b. Soạn thảo chương trình mới
Muốn soạn thảo một chƣơng trình mới ta chọn mục New trong menu File (File >New)
Trên màn hình sẽ xuất hiện một vùng trống để cho ta soạn thảo nội dung của
chƣơng trình. Trong q trình soạn thảo chƣơng trình ta có thể sử dụng các phím
sau:
Các phím xem thơng tin trợ giúp:
- F1: Xem tồn bộ thơng tin trong phần trợ giúp.
- Ctrl-F1: Trợ giúp theo ngữ cảnh (tức là khi con trỏ đang ở trong một từ nào đo,
chẳng hạn int mà bạn gõ phím Ctrl-F1 thì bạn sẽ có đƣợc các thơng tin về kiểu dữ
liệu int)
Các phím di chuyển con trỏ trong vùng soạn thảo chƣơng trình:
Phím
ý nghĩa
Enter
Đƣa con trỏ xuống dòng
Mũi tên đi lên
Đƣa con trỏ lên hàng trƣớc
13
Phím tắt
( tổ hợp phím)
Ctrl-E
Mũi tên đi xuống
Đƣa con trỏ xuống hàng sau
Ctrl-X
Mũi tên sang trái
Đƣa con trỏ sang trái một ký tự
Ctrl-S
Mũi tên sang phải
Đƣa con trỏ sang phải một ký tự
Ctrl-D
End
Đƣa con trỏ đến cuối dòng
Home
Đƣa con trỏ đến đầu dòng
PgUp
Đƣa con trỏ lên trang trƣớc
Ctrl-R
PgDn
Đƣa con trỏ xuống trang sau
Ctrl-C
Đƣa con trỏ sang từ bên trái
Ctrl-A
Đƣa con trỏ sang từ bên phải
Ctrl-F
Các phím xố ký tự/ dịng:
Ý nghĩa
Phím
Delete
Phím tắt
Xố ký tự tại ví trí con trỏ
Ctrl-G
BackSpace Di chuyển sang trái đồng thời xố ký tự đứng
trƣớc
con trỏ
Ctrl-H
Xố một dịng chứa con trỏ
Ctrl-Y
Xóa từ vị trí con trỏ đến cuối dịng
Ctrl-Q-Y
Xóa ký tự bên phải con trỏ
Ctrl-T
Các phím chèn ký tự/ dịng:
Insert
Thay đổi viết xen hay viết chồng
Ctrl-N
Xen một dòng trống vào trƣớc vị trí con trỏ
Sử dụng khối :
Khối là một đoạn văn bản chƣơng trình hình chữ nhật đƣợc xác định bởi đầu
khối là góc trên bên trái và cuối khối là góc dƣới bên phải của hình chữ nhật. Khi
một khối đã đƣợc xác định (trên màn hình khối có màu sắc khác chỗ bình thƣờng)
thì ta có thể chép khối, di chuyển khối, xoá khối... Sử dụng khối cho phép chúng ta
soạn thảo chƣơng trình một cách nhanh chóng. sau đây là các thao tác trên khối:
Phím tắt
Ctrl-K-B
ý nghĩa
Đánh dấu đầu khối
Ctrl-K-K Đánh dấu cuối khối
Ctrl-K-C
Chép khối vào sau vị trí con trỏ
Ctrl-K-V Chuyển khối tới sau vị trí con trỏ
Ctrl-K-Y Xố khối
14
Ctrl-K-W Ghi khối vào đĩa nhƣ một tập tin
Ctrl-K-R
Đọc khối (tập tin) từ đĩa vào sau vị trí con trỏ
Ctrl-K-H Tắt/mở khối
Ctrl-K-T
Đánh dấu từ chứa chon trỏ
Ctrl-K-P
In một khối
Các phím, phím tắt thực hiện các thao tác khác:
Phím
F10
ý nghĩa
Kích hoạt menu chính
F2
Lƣu chƣơng trình đang soạn vào đĩa
F3
Tạo tập tin mới
Phím tắt
Ctrl-K-D,
Ctrl-K-Q
Ctrl-K-S
Tab Di chuyển con trỏ một khoảng đồng thời đẩy dịng văn bản Ctrl-I
ESC Hủy bỏ thao tác lệnh
Ctrl-U
Đóng tập tin hiện tại
Alt-F3
Hiện hộp thoại tìm kiếm
Ctrl-Q-F
Hiện hộp thoại tìm kiếm và thay thế
Ctrl-Q-A
Tìm kiếm tiếp tục
Ctrl-L
Ví dụ: Bạn hãy gõ đoạn chƣơng trình sau:
#include <stdio.h>
#include<conio.h>
int
main ()
{
char ten[50];
printf(―Xin cho biet ten cua ban !‖);
scanf(―%s‖,ten);
printf(―Xin chao ban %s‖,ten);
getch();
return 0;
}
c. Ghi chương trình đang soạn thảo vào đĩa
Sử dụng File/Save hoặc gõ phím F2. Có hai trƣờng hợp xảy ra:
- Nếu chƣơng trình chƣa đƣợc ghi lần nào thì một hội thoại sẽ xuất hiện cho
phép bạn xác định tên tập tin (FileName). Tên tập tin phải tuân thủ quy cách đặt
tên của DOS và khơng cần có phần mở rộng (sẽ tự động có phần mở rộng là .C
15
hoặc .CPP sẽ nói thêm trong phần Option). Sau đó gõ phím Enter.
- Nếu chƣơng trình đã đƣợc ghi một lần rồi thì nó sẽ ghi những thay đổi bổ
sung lên tập tin chƣơng trình cũ.
Chú ý: Để đề phịng mất điện trong khi soạn thảo chƣơng trinh thỉnh thoảng bạn
nên gõ phím F2.
Quy tắc đặt tên tập tin của DOS: Tên của tập tin gồm 2 phần: Phần tên và phần
mở rộng.
o Phần tên của tập tin phải bắt đầu là 1 ký tự từ a..z (không phân biệt hoa thƣờng),
theo sau có thể là các ký tự từ a..z, các ký số từ 0..9 hay dấu gạch dƣới (_), phần
này dài tối đa là 8 ký tự.
o Phần mở rộng: phần này dài tối đa 3 ký tự.
Ví dụ: Ghi chƣơng trình vừa soạn thảo trên lên đĩa với tên là CHAO.C
d. Thực hiện chương trình
Để thực hiện chƣơng trình hãy dùng Ctrl-F9 (giữ phím Ctrl và gõ phím F9).
Ví dụ: Thực hiện chƣơng trình vừa soạn thảo xong và quan sát trên màn hình để
thấy kết quả của việc thực thi chƣơng trình sau đó gõ phím bất kỳ để trở lại với
Turbo.
e. Mở một chương trình đã có trên đĩa
Với một chƣơng trình đã có trên đĩa, ta có thể mở nó ra để thực hiện hoặc sửa
chữa bổ sung. Để mở một chƣơng trình ta dùng File/Open hoặc gõ phím F3. Sau
đó gõ tên tập tin vào hộp File Name hoặc lựa chọn tập tin trong danh sách các tập
tin rồi gõ Enter.
Ví dụ: Mở tập tin CHAO.C sau đó bổ sung để có chƣơng trình mới nhƣ sau:
#include <stdio.h>
#include<conio.h>
int main ()
{
char ten[50];
printf(―Xin cho biet ten cua ban !‖);
scanf(―%s‖,ten);
printf(―Xin chao ban %s\n ‖,ten);
printf(―Chao mung ban den voi Ngon ngu lap trinh C‖);
getch();
return 0;
}
Ghi lại chƣơng trình này (F2) và cho thực hiện (Ctrl-F9). Hãy so sánh xem có gì
khác trƣớc?
f. Thốt khỏi Turbo C và trở về DOS (hay Windows)
Dùng File/Exit hoặc Alt-X.
g. Sử dụng một số lệnh trên thanh menu
16
* Các lệnh trên menu File (Alt -F)
- Lệnh New: Dùng để tạo mới một chƣơng trình. Tên ngầm định của chƣơng trình
là NONAMEXX.C (XX là 2 số từ 00 đến 99).
Hình 1-3. Các lệnh trên menu File
- Lệnh Open: Dùng để mở một chƣơng trình đã có sẵn trên đĩa để sửa chữa, bổ
sung hoặc để thực hiện chƣơng trìnhđó. Khi tập tin đƣợc mở thì văn bản chƣơng
trình đƣợc trình bày trong vùng soạn thảo; hộp thoại Open nhƣ sau:
Hình 1-4. Mở file chƣơng trình bằng lệnh Open
Trong trƣờng hợp ta nhập vào tên tập tin chƣa tồn tại thì chƣơng trình đƣợc tạo
mới và sau này khi ta lƣu trữ, chƣơng trình đƣợc lƣu với tên đó.
- Lệnh Save: Dùng để lƣu chƣơng trình đang soạn thảo vào đĩa.
- Lệnh Save as... : Dùng để lƣu chƣơng trình đang soạn thảo với tên khác, hộp
thoại lƣu tập tin đang soạn với tên khác nhƣ sau
Hình 1-5. Cách lƣu File trong Turbo C++
17
- Lệnh: Save All: Trong lúc làm việc với Turbo C, ta có thể mở một lúc nhiều
chƣơng trình để sửa chữa, bổ sung. Lệnh Save All dùng để lƣu lại mọi thay đổi
trên tất cả các chƣơng trình đang mở ấy..
- Lệnh Change Dir ... : Dùng để đổi thƣ mục hiện hành
Hình 2-5. Đổi thƣ mục hiện hành bằng lệnh Change Dir
- Lệnh Print: Dùng để in chƣơng trình đang soạn thảo ra máy in.
- Lệnh Printer Setup ...: Dùng để thiết đặt một số thông số cho máy in.
- Lệnh Dos Shell: Dùng để thoát tạm thời về Dos, để trở lại Turbo C ta đánh EXIT.
- Lệnh Exit: Dùng để thoát khỏi C.
* Các lệnh trên menu Edit (Alt -E)
- Lệnh Undo: Dùng để hủy bỏ thao tác soạn thảo cuối cùng trên cửa số soạn thảo.
Hình 1-6. Các lệnh trên menu Edit
- Lệnh Redo: Dùng để phục hồi lại thao tác đã bị Undo cuối cùng.
- Lệnh Cut : Dùng để xóa một phần văn bản đã đƣợc đánh dấu khối, phần dữ liệu
bị xóa sẽ đƣợc lƣu vào một vùng nhớ đặc biệt gọi là Clipboard.
- Lệnh Copy: Dùng để chép phần chƣơng trình đã đƣợc đánh dấu khối vào
Clipboard.
- Lệnh Paste: Dùng để dán phần chƣơng trình đang đƣợc lƣu trong Clipboard vào
của số đang soạn thảo, bắt đầu tại vị trí của con trỏ.
- Lệnh Clear: Dùng để xóa phần dữ liệu đã đƣợc đánh dấu khối, dữ liệu bị xóa
khơng đƣợc lƣu vào Clipboard.
- Lệnh Show clipboard: Dùng để hiển thị phần chƣơng trình đang đƣợc lƣu
trong Clipboard trong một cửa sổ mới.
* Các lệnh trên menu Search (Alt -S)
- Lệnh Find ...: Dùng để tìm kiếm một cụm từ trong văn bản chƣơng trình. Nếu tìm
18
thấy thì con trỏ sẽ di chuyển đến đoạn văn bản trùng với cụm từ cần tìm; hộp thoại
Find nhƣ sau:
Hình 1-7. Các lệnh trên menu Search
Hình 1-8. Sử dụng lệnh Find
Ý nghĩa các lựa chọn trong hộp thoại trên nhƣ sau:
Case sentitive: Phân biệt chữ IN HOA với chữ in thƣờng trong khi so sánh
cụm từ cần tìm với văn bản chƣơng trình.
Whole word only: Một đoạn văn bản chƣơng trình trùng với tồn bộ cụm từ
cần tìm thì mới đƣợc xem là tìm thấy.
Regular expression: Tìm theo biểu thức
Global:Tìm trên tất cả tập tin.
Forward: Tìm đến cuối tập tin.
Selected text: Chỉ tìm trong khối văn bản đã đƣợc đánh dấu.
Backward: Tìm đến đầu tập tin.
From cursor: Bắt đầu từ vị trí con nháy.
Entire scope: Bắt đầu tại vị trí đầu tiên của khối hoặc tập tin.
- Lệnh Replace...: Dùng để tìm kiếm một đoạn văn bản nào đó, và tự động thay
bằng một đoạn văn bản khác, hộp thoại replace nhƣ sau:
19
Hình 1-9. Tìm các cụm từ Scanf và thay thế bằng scanf
- Lệnh Search again: Dùng để thực hiện lại việc tìm kiếm.
- Các lệnh cịn lại trên menu Search, các bạn sẽ tìm hiểu thêm khi thực hành trực
tiếp trên máy tính.
* Các lệnh trên menu Run (Alt -R)
- Lệnh Run : Dùng để thực thi hay "chạy" một chƣơng trình.
Hình 1-10. Các lệnh trên menu Run
- Lệnh Step over: Dùng để "chạy" chƣơng trình từng bƣớc.
- Lệnh Trace into: Dùng để chạy chƣơng trình từng bƣớc. Khác với lệnh Step over
ở chỗ: Lệnh Step over không cho chúng ta xem từng bƣớc "chạy" trong chƣơng
trình con, cịn lệnh Trace into cho chúng ta xem từng bƣớc trong chƣơng trình con.
- Các lệnh cịn lại, các bạn sẽ tìm hiểu thêm khi thực hành trên máy.
* Các lệnh trên menu Compile (Alt C)
- Lệnh Complie: Biên dịch một chƣơng trình.
Hình 1-11. Các lệnh trên menu Compile
- Lệnh Make , Build, … : Các lệnh này bạn sẽ tìm hiểu thêm khi thực hành trực
tiếp trên máy tính.
- Lệnh Information : Dùng để hiện thị các thông tin về chƣơng trình, Mode,
mơi trƣờng .
20
* Các lệnh trên menu Debug (Alt-D)
Hình 1-12. Các lệnh trên menu Debug
Trên menu Debug bao gồm một số lệnh giúp ngƣời lập trình "gỡ rối"
chƣơng trình. Ngƣời lập trình sử dụng chức năng "gỡ rối" khi gặp một số "lỗi"
về thuật toán, sử dụng biến nhớ…
- Lệnh Breakpoints: Dùng để đặt "điểm dừng" trong chƣơng trình. Khi chƣơng
trình thực thi đến "điểm dừng thì nó sẽ dừng lại" .
- Lệnh Watch : Dùng để mở một cửa sổ hiển thị kết quả trung gian của một biến
nhớ nào đó khi chạy chƣơng trình từng bƣớc.
- Lệnh Evaluate/Modify: Bạn sẽ tìm hiểu khi thực hành trực tiếp trên máy.
* Các lệnh trên menu Project (Alt- P)
Trên menu Project bao gồm các lệnh liên quan đến dự án nhƣ : đóng, mở, thêm ,
xóa các mục,…
Hình 1-13. Các lệnh trên menu Project
* Các lệnh trên menu Option (Alt -O)
Trên menu Option bao gồm các lệnh giúp ngƣời lập trình thiết đặt một số tự
chọn khi chạy chƣơng trình. Thơng thƣờng, ngƣời lập trình khơng cần phải
thiết đặt lại các tự chọn.
Hình 1-14. Các lệnh trên menu Option
- Lệnh Compiler ...: Dùng để thiết đặt lại một số thông số khi biên dịch chƣơng
trình nhƣ hình 1-15.
Phần trình bày dƣới đây thuộc về 3 mục: Directories, Enviroment và
21
Save; các phần khác sinh viên tự tìm hiểu.
- Lệnh Directories...: Dùng để đặt lại đƣờng dẫn tìm đến các tập tin cần thiết khi
biên dịch chƣơng trình nhƣ hình sau:
Hình 1-15. Bảng đặt đƣờng dẫn
+ Include directory: Thƣ mục chứa các tập tin mà chúng ta muốn đƣa vào chƣơng
trình (các tập tin .h trong dịng #include).
+ Library directory : Thƣ mục chứa các tập tin thƣ viện ( các tập tin .Lib)
+ Output directory: Thƣ mục chứa các tập tin ―đối tƣợng ― (có phần mở rộng là
.OBJ), tập tin thực thi (.exe) khi biên dịch chƣơng trình.
+ Source directory: Thƣ mục chứa các tập tin ―nguồn‖ (có phần mở rộng là .obj,
.lib).
Lệnh Environment: dùng để thiết lập môi trƣờng làm việc nhƣ:
+ Reference…: Các tham chiếu.
+ Editor: Mơi trƣờng soạn thảo gồm: tạo tập tin dự phịng khi có sự chỉnh
sửa (create backup file), chế độ viết đè (insert mode), tự động thụt đầu dòng
(indent), đổi màu từ khóa (Syntax highlighting)… Đặc biệt, trong phần này là
thiết lập phần mở rộng mặc định (Default Extension) của tập tin chƣơng trình là
C hay CPP (C Plus Plus: C++).
Hình 1-16. Môi trƣờng soạn thảo
+ Mouse...: Đặt chuột.
+ Colors…: Đặt màu.
* Các lệnh trên menu Window (Alt- W)
Trên menu Window bao gồm các lệnh thao tác đến cửa sổ nhƣ:
- Lệnh Cascade: Dùng để sắp xếp các cửa sổ.
- Lệnh Close all: Dùng để đóng tất cả các cửa sổ.
22
- Lệnh Zoom: Dùng để phóng to/ thu nhỏ cửa sổ.
- Các lệnh Tile, Refresh display, Size/ Move, Next, Previous, Close, List...: Các
bạn sẽ tìm hiểu thêm khi thực hành trực tiếp trên máy tính.
* Các lệnh trên menu Help (Alt- H)
Trên menu Help bao gồm các lệnh gọi trợ giúp khi ngƣời lập trình cần giúp đỡ
một số vấn đề nào đó nhƣ: Cú pháp câu lệnh, cách sử dụng các hàm có sẵn…
- Lệnh Contents: Hiện thị tồn bộ nội dung của phần help.
- Lệnh Index: Hiển thị bảng tìm kiếm theo chỉ mục.
- Các lệnh cịn lại, bạn sẽ tìm hiểu khi thực hành trên máy.
3. VIẾT CHƢƠNG TRÌNH C ĐƠN GIẢN
3.1. Cấu trúc chƣơng trình C đơn giản
#include<Tên tệp tin thƣ viện>
main()
{
/*Các câu lệnh */
}
Hoặc:
#include<Tên tệp tin thƣ viện>
int main()
{
/*Các câu lệnh */
return 0;
}
Ví dụ:
#include<stdio.h>
#include<conio.h>
main()
{
printf (― Xin chao lop C11-CNTT‖);
getch();
}
Hoặc:
#include<stdio.h>
#include<conio.h>
int main()
{
printf (― Xin chao lop C11-CNTT‖);
23
getch();
return 0;
}
Trong đó:
#include< tên tệp tiêu đề> : Khai báo tệp tiêu đề cần dùng trong chƣơng trình
+ stdio.h: chứa các hàm vào/ra trong C: printf, scanf
+ conio.h: chứa các hàm làm việc với màn hình: clrscr(), getch()
+ math.h: chứa các hàm toán học
+ string.h: chứa các hàm làm việc với chuỗi kí tự
main() {}: Phần thân chƣơng trình chính, là phần bắt buộc cho tât cả mọi
chƣơng trình.
+ Cặp dấu ngoặc nhọn { } thể hiện bắt đầu và kết thúc chƣơng trình
+ Một câu lệnh trong C đƣợc kết thúc bằng dấu chấm phẩy ;
+ Một câu lệnh không kết thúc bằng dấu chấm phẩy sẽ đƣợc xem nhƣ dịng lệnh
lỗi trong C
Khi viết chƣơng trình đơi lúc ta cần phải có vài lời ghi chú về 1 đoạn chƣơng
trình nào đó để dễ nhớ và dễ điều chỉnh sau này; nhất là phần nội dung ghi chú
phải khơng thuộc về chƣơng trình (khi biên dịch phần này bị bỏ qua). Trong ngơn
ngữ lập trình C, nội dung chú thích phải đƣợc viết trong cặp dấu /* và */.
//: Chú thích trên một dịng
/* ….*/: chú thích nhiều dịng
Ví dụ :
#include <stdio.h>
#include<conio.h>
main ()
{
char ten[50]; /* khai bao bien ten kieu char 50 ky tu */
/*Xuat chuoi ra man hinh*/
printf(―Xin cho biet ten cua ban !‖); scanf(―%s‖,ten);
/*Doc vao 1 chuoi la ten cua ban*/
printf(―Xin chao ban %s\n ‖,ten);
printf(―Chao mung ban den voi Ngon ngu lap trinh C‖);
/*Dung chuong trinh, cho go phim*/
getch();
}
\n : Xuống dòng
* Hàm xuất ra màn hình dạng đơn giản
printf (―Chuỗi hiển thị‖): Đƣa ra màn hình chuỗi hiển thị
24
3.2. Các tập tin thƣ viện thông dụng
Đây là các tập tin chứa các hàm thông dụng khi lập trinh C, muốn sử dụng các
hàm trong các tập tin header này thì phải khai báo
#include <Tên tập tin> ở phần đầu của chƣơng trình
stdio.h: Tập tin định nghĩa các hàm vào/ra chuẩn (standard input/output).
Gồm các hàm in dữ liệu (printf()), nhập giá trị cho biến (scanf()), nhận ký tự từ bàn
phím (getc()), in ký tự ra màn hình (putc()), nhận một dãy ký tự từ bàm phím
(gets()), in chuỗi ký tự ra màn hình (puts()), xóa vùng đệm bàn phím
(fflush()), fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw()…
conio.h: Tập tin định nghĩa các hàm vào ra trong chế độ DOS (DOS
console). Gồm các hàm clrscr(), getch(), getche(), getpass(), cgets(), cputs(),
putch(), clreol(),…
math.h: Tập tin định nghĩa các hàm tính tốn gồm các hàm abs(), sqrt(),
log(). log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),…
alloc.h: Tập tin định nghĩa các hàm liên quan đến việc quản lý bộ nhớ. Gồm các
hàm calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(), …
io.h: Tập tin định nghĩa các hàm vào ra cấp thấp. Gồm các hàm open(),
_open(), read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(),
filelength(), lock(),…
graphics.h: Tập tin định nghĩacác hàm liên quan đến đồ họa. Gồm
initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(), …
Còn nhiều tập tin khác nữa.
3.3. Cú pháp khai báo các phần bên trong mơt chƣơng trình C
a. Chỉ thị #include để sử dụng tập tin thư viện
Cú pháp:
#include <Tên tập tin> // Tên tập tin đƣợc đạt trong dấu <>
hoặc: #include ―Tên đƣờng dẫn‖
Menu Option của Turbo C có mục INCLUDE DIRECTORIES, mục này dùng để
chỉ định các tập tin thƣ viện đƣợc lƣu trữ trong thƣ mục nào.
Nếu ta dùng #include<Tên tập tin> thì Turbo C sẽ tìm tập tin thƣ viện trong thƣ
mục đã đƣợc xác định trong INCLUDE DIRECTORIES.
Ví dụ: include <stdio.h>
Nếu ta dùng #include‖Tên đƣờng dẫn‖ thì ta phải chỉ rõ tên ở đâu, tên thƣ mục
và tập tin thƣ viện.
Ví dụ: #include‖C:\\TC\\math.h‖
Trong trƣờng hợp tập tin thƣ viện nằm trong thƣ mục hiện hành thì ta chỉ cần đƣa
tên tập tin thƣ viện. Ví dụ: #include‖math.h‖.
Ví dụ:
#include <stdio.h>
#include <conio.h>
25