
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.

LỜI NÓI ĐẦU
Trong thế giới công nghệ phát triển không ngừng, lập trình không chỉ là một kỹ năng
nghề nghiệp mà còn là một tƣ duy logic mạnh mẽ, giúp bạn giải quyết vấn đề hiệu quả hơn
trong mọi lĩnh vực của cuộc sống. Với phƣơng châm "Học đi đôi với hành", giáo trình này sẽ
giúp bạn tiếp cận lập trình một cách tự nhiên và bài bản nhất.
Mục tiêu của giáo trình
- Xây dựng nền tảng vững chắc: Giúp ngƣời học nắm vững các khái niệm cốt lõi nhƣ
biến, kiểu dữ liệu, cấu trúc điều khiển và các cấu trúc dữ liệu cơ bản.
- Hình thành tƣ duy logic: Rèn luyện khả năng phân tích, phân tách một vấn đề lớn thành các
phần nhỏ hơn và tìm ra giải pháp thông qua việc viết code.
- Làm quen với các ngôn ngữ lập trình: Dù đƣợc viết với một ngôn ngữ cụ thể (ví dụ: C,
Python, Java), giáo trình này tập trung vào các nguyên lý chung, giúp bạn dễ dàng chuyển đổi
sang các ngôn ngữ khác trong tƣơng lai.
Đối tƣợng độc giả
Giáo trình này phù hợp với:
- Sinh viên các ngành kỹ thuật, công nghệ thông tin.
- Học sinh phổ thông, ngƣời đi làm muốn làm quen với lập trình.
- Những ngƣời tự học và muốn có một tài liệu bài bản để bắt đầu.
Giáo trình đƣợc cấu tạo bởi chƣơng, gồm:
Chƣơng 1. Tổng quan về ngôn ngữ C
Chƣơng 2. Các thành phần cơ bản
Chƣơng 3. Các lệnh có cấu trúc
Chƣơng 4. Hàm
Chƣơng 5. Mảng
Chƣơng 6. Con trỏ
Chƣơng 7. Chuỗi ký tự
Với cấu trúc rõ ràng, từ lý thuyết đến ví dụ và bài tập thực hành, giáo trình Lập trình cơ bản
sẽ là ngƣời bạn đồng hành tin cậy, giúp bạn tự tin khám phá và làm chủ thế giới lập trình.
T/M nhómTác giả
Chủ biên
Lê Phú Thảo

Phụ lục
TUYÊN BỐ BẢN QUYỀN ............................................................................................. 1
LỜI NÓI ĐẦU ................................................................................................................. 2
Phụ lục ............................................................................................................................. 3
CHƢƠNG 1. TỔNG QUAN VỀ NGÔN NGỮ C ........................................................ 10
1. Giới thiệu về ngôn ngữ C ..................................................................................... 10
1.1. Lịch sử phát triển ........................................................................................... 10
1.1.1 Lịch sử của ngôn ngữ lập trình C bắt đầu từ đầu những năm 1970 tại Phòng
thí nghiệm Bell (Bell Labs) của AT&T ở Mỹ. ..................................................... 10
1.1.2. Các giai đoạn chuẩn hóa và phát triển chính: ...................................... 10
1.1.3. Ảnh hƣởng và vị trí của C trong thế giới lập trình ............................... 11
1.2. Sự cần thiết ................................................................................................... 12
1.2.1. Nền tảng vững chắc cho kiến thức khoa học máy tính ......................... 12
1.2.2. Ngôn ngữ "mẹ" và nền tảng cho các ngôn ngữ khác ........................... 12
1.2.3. Ứng dụng rộng rãi trong các lĩnh vực cốt lõi ........................................ 12
1.2.4. Ƣu điểm về hiệu suất và tính linh hoạt .................................................. 13
2. Các thao tác cơ bản .............................................................................................. 13
2.1. Khởi động ..................................................................................................... 13
2.2. Thoát khỏi ..................................................................................................... 14
2.2.1. Thoát Chƣơng Trình Bạn Đang Chạy (Console Program) ................. 14
2.2.2. Thoát Khỏi Môi Trƣờng Dev-C++ IDE: Cách để đóng toàn bộ ứng
dụng Dev-C++: ..................................................................................................... 14
2.3. Tạo mới, ghi một chƣơng trình C ................................................................. 14
2.3.1. Tạo một tệp nguồn (Source File) mới ......................................................... 14
2.3.2. Lƣu tệp nguồn: ............................................................................................ 14
3. Sử dụng trợ giúp ................................................................................................... 15
3.1. Sử dụng menu trợ giúp (help) ....................................................................... 15
3.2. Sử dụng các chức năng của trợ giúp ............................................................. 15
3.2.1. Truy cập Nội dung Trợ giúp (Help Contents): ...................................... 15
Đây là chức năng quan trọng nhất để tìm hiểu về cách sử dụng Dev-C++. ......... 15
3.2.2. Sử dụng Chức năng "About Dev-C++" ................................................. 15
3.2.3. Tìm kiếm trợ giúp trực tuyến (Online Help/Forums) ........................... 16
Câu hỏi ôn tập: .......................................................................................................... 16
CHƢƠNG 2. CÁC THÀNH PHẦN CƠ BẢN ............................................................. 17
1. Từ khoá và ký hiệu. ............................................................................................... 17
1.1. Từ khoá ......................................................................................................... 17
1.2. Ký hiệu ........................................................................................................... 18
2. Các kiểu dữ liệu sơ cấp ......................................................................................... 20
2.1. Kiểu số nguyên: ............................................................................................ 20
2.2. Dấu phẩy động .............................................................................................. 23
2.3. Kiểu ký tự ..................................................................................................... 25
2.3.1. Kiểu ký tự (character type) ......................................................................... 25
2.3.2. Cách Khai Báo và Khởi Tạo ................................................................... 25
2.3.3. Bảng Mã ASCII và Ý nghĩa của char .................................................... 26
2.3.4. Các Ký Tự Thoát (Escape Sequences) ................................................... 26
2.3.5. Kiểu wchar_t (Wide Character) ............................................................. 27
3. Biến, hằng, biểu thức............................................................................................ 27
3.1. Phân loại, khai báo và sử dụng biến. ............................................................ 27

3.1.1. biến (variables): ......................................................................................... 27
3.1.2. Phân Loại Biến theo Kiểu Dữ liệu .......................................................... 27
3.1.3. Khai Báo Biến ........................................................................................... 28
3.1.4. Khởi Tạo Biến ........................................................................................... 29
3.1.5. Sử dụng Biến: ........................................................................................... 29
3.2. Hằng .............................................................................................................. 31
3.2.1. Sử dụng #define (Chỉ thị tiền xử lý) ........................................................ 31
3.2.2. Sử dụng từ khóa const ............................................................................. 32
3.2.3. Sử dụng enum (Enumeration) ................................................................ 32
3.3. Biểu thức ....................................................................................................... 34
3.3.1. Các Thành Phần của Biểu Thức: Một biểu thức thƣờng đƣợc tạo thành
từ các thành phần sau: ........................................................................................... 34
3.3.2. Các Loại Biểu Thức Phổ Biến: Dựa vào loại toán tử chính, chúng ta có
thể phân loại biểu thức: ......................................................................................... 34
4. Cấu trúc một chƣơng trình ................................................................................... 36
4.1. Tiền xử lý và trình biên dịch ......................................................................... 36
4.1.1. Tiền xử lý (Preprocessing) ....................................................................... 36
4.1.2. Biên dịch (Compilation) .......................................................................... 37
4.2. Cấu trúc một chƣơng trình C ........................................................................ 39
4.3. Các thƣ viện thông dụng ............................................................................... 42
4.3.2. Thƣ Viện Đầu Vào/Đầu Ra Chuẩn (Standard Input/Output Library)
............................................................................................................................... 42
4.3.3. Thƣ Viện Chức Năng Chung (Standard Library) ................................ 43
4.3.4. Thƣ Viện Xử Lý Chuỗi (String Handling Library) .............................. 43
4.3.5. Thƣ Viện Toán Học (Mathematics Library) ......................................... 44
4.3.6. Thƣ Viện Thời Gian và Ngày Tháng (Date and Time Utilities) .......... 45
4.3.7. Các Thƣ Viện Quan Trọng Khác ........................................................... 45
5. Câu lệnh ................................................................................................................. 45
5.1. Khái niệm ....................................................................................................... 45
5.1.2. Các Loại Câu Lệnh Phổ Biến Trong C ................................................... 46
5.2. Lệnh gán và lệnh gộp ..................................................................................... 48
5.2.1. Câu Lệnh Gán (Assignment Statement): ................................................ 48
5.2.2. Lệnh Gộp (Compound Statement / Block Statement) .......................... 50
5.3. Nhập và xuất dữ liệu ...................................................................................... 51
5.3.1. Xuất Dữ Liệu (Output): Để xuất dữ liệu ra màn hình console, hàm phổ
biến nhất là printf(). .............................................................................................. 51
5.3.2. Nhập Dữ Liệu (Input): Để nhập dữ liệu từ bàn phím console, hàm phổ
biến nhất là scanf(). ............................................................................................... 51
5.3.4. Các Hàm Nhập/Xuất Ký Tự và Chuỗi Khác ............................................. 53
6. Thực thi chƣơng trình ........................................................................................... 53
Câu hỏi ôn tập: .......................................................................................................... 56
CHƢƠNG 3. CÁC LỆNH CÓ CẤU TRÚC ................................................................ 57
Giới thiệu .............................................................................................................. 57
Mục đích ............................................................................................................... 57
1. Cấu trúc rẽ nhánh ................................................................................................. 57
1.1. Dạng đầy đủ: ................................................................................................. 57
1.2. Dạng không đầy đủ ....................................................................................... 59
2. Cấu trúc lựa chọn .................................................................................................. 60

2.1 Khái niệm ........................................................................................................ 60
2.2 Cú pháp ........................................................................................................... 61
3. Cấu trúc lặp ........................................................................................................... 63
3.1. Cấu trúc lặp For ............................................................................................. 63
3.2. Cấu trúc lặp while, do while .......................................................................... 65
4. Các lệnh đặc biệt ................................................................................................... 67
4.1. Lệnh Break ..................................................................................................... 67
4.2. Lệnh Continue ................................................................................................ 70
Câu hỏi ôn tập: ........................................................................................................ 72
CHƢƠNG 4: HÀM ....................................................................................................... 73
Giới thiệu ............................................................................................................. 73
Mục đích .............................................................................................................. 73
1. Khái niệm hàm ..................................................................................................... 73
1.1. Khái niệm và phân loại .................................................................................. 73
1.2. Quy tắc hoạt động của hàm ............................................................................ 76
1.2.1. Giai Đoạn Khai Báo và Định Nghĩa Hàm: Trƣớc khi một hàm có thể
đƣợc sử dụng, nó cần đƣợc khai báo và định nghĩa.............................................. 76
2. Xây dựng hàm ....................................................................................................... 79
2.1. Định nghĩa hàm .............................................................................................. 79
2.1.1. Cấu Trúc Của Một Định Nghĩa Hàm: Một định nghĩa hàm bao gồm hai
phần chính: ............................................................................................................ 79
2.1.2. Các Thành Phần Cụ Thể. ............................................................................ 80
2.1.3. Ví Dụ Về Định Nghĩa Hàm ........................................................................ 81
2.1.4. Vị Trí Của Định Nghĩa Hàm: ..................................................................... 81
2.2. Sử dụng hàm .................................................................................................. 82
2.2.1. Khái Niệm Gọi Hàm .................................................................................. 82
2.2.2. Các Trƣờng Hợp Sử Dụng Hàm ................................................................ 83
3. Các tham số của hàm ............................................................................................ 86
3.1. Phân biệt các loại tham số .............................................................................. 86
3.1.1. Tham Số Hình Thức (Formal Parameters) và Đối Số Thực Tế (Actual
Arguments): Để hiểu rõ hơn, hãy xem xét một ví dụ: ......................................... 87
3.1.2. Các Cách Truyền Tham Số (Passing Mechanisms) .................................... 87
3.2. Cách truyền tham số....................................................................................... 90
3.2.1. Truyền Tham Số theo Giá Trị (Call by Value) ...................................... 90
3.1.2. Truyền Tham Số theo Tham Chiếu (Call by Reference) ..................... 91
3.1.3. Truyền Mảng vào Hàm (Một Trƣờng Hợp Đặc Biệt của Truyền Theo
Tham Chiếu) ........................................................................................................ 93
4. Hàm đệ quy .......................................................................................................... 94
4.1. Khái niệm đệ quy ........................................................................................... 94
4.1.1. Khái Niệm Cơ Bản Về Đệ Quy ............................................................... 94
4.1.2. Minh Họa Hoạt Động Của Đệ Quy ........................................................ 95
4.1.3. Ƣu và Nhƣợc Điểm Của Đệ Quy ............................................................ 96
4.1.4. Khi Nào Nên Dùng Đệ Quy? ................................................................... 96
4.2. Các bài toán dùng đệ quy ............................................................................... 96
4.2.1. Các Bài Toán Cơ Bản: Những bài toán này giúp bạn làm quen với cấu
trúc và tƣ duy đệ quy. ........................................................................................... 96
4.2.2. Các Bài Toán Nâng Cao Hơn .................................................................... 98
4.2.3. Các Bài Toán Quay Lui (Backtracking) .................................................. 101

