10/12/2025
1
Trường Đại học Thủ Dầu Một
Viện ĐT CNTT - CĐS
CƠ SỞ LẬP TRÌNH
CHƯƠNG II
GIỚI THIỆU NGÔN NGỮ C
Nội dung chương
1. Khái quát về ngôn ngữ C
2. Cấu trúc cơ bản của một chương trình C
3. Các kiểu dữ liệu cơ sở
4. Hằng & Biến
1. Khát quát về ngôn ngữ C
1.1 Giới thiệu ngôn ngữ C
Được phát triển bởi Dennis Ritchie tại Bell
Telephone năm 1972.
Tiền thân của ngôn ngữ B, KenThompson, cũng tại
Bell Telephone.
Là ngôn ngữ lập trình có cấu trúc và phân biệt chữ
Hoa - thường (case sensitive).
Chuẩn ANSI C
1.1 Giới thiệu ngôn ngữ C
Ưu điểm của C
Rất mạnh và linh động, có khả năng thể hiện bất cứ ý tưởng
nào.
Được sử dụng rộng rãi bởi các nhà lập trình chuyên nghiệp.
Có tính khả chuyển, ít thay đổi trên các hệ thống máy tính khác
nhau.
Rõ ràng, cô đọng.
Lập trình đơn thể (Module), tái sử dụng thông qua hàm.
2 3
4 5
10/12/2025
2
1.2 Môi trường lập trình
Môi trường phát triển tích hợp IDE (Integrated
Development Environment)
Biên tập chương trình nguồn (Trình EDIT).
Biên dịch chương trình (Trình COMPILE).
Chạy chương trình nguồn (Trình RUNTIME).
Sửa lỗi chương trình nguồn (Trình DEBUG).
.C/.CPP .OBJ .EXE
1.2 Môi trường lập trình
Môi trường lập trình
Visual Studio Code (tích hợp trình biên dịch cho C++)
2. Cấu trúc chương trình C
2.1 Cấu trúc chương trình
2.2 Tập các ký tự dùng trong C
2.3 Từ khóa (Keyword)
2.4 Tên/Định danh (Identifier)
2.5 Khai báo thư viện
2.6 Lệnh và khối lệnh
2.7 Lời chú thích
2.8 Quy tắc viết chương trình
2.1 Cấu trúc chương trình
Có dạng
#include “…”; // Khai báo thư viện
int x; // Khai báo các biến toàn cục
void Nhap(); // Khai báo các hàm
void main() // Phần định nghĩa hàm main
{
// Các câu lệnh
}
6 7
8 9
10/12/2025
3
2.1 Cấu trúc chương trình
Ví dụ: chương trình tính tổng 2 số
#include <stdio.h>
#include <conio.h>
void main()
{
int x, y, tong;
printf(“Nhap hai so nguyen: );
scanf(%d%d”,&x,&y); tong = x + y;
printf(“Tong hai so la %d”,tong);
getch();
}
Bài tập cấu trúc chương trình
Phác họa cấu trúc chương trình giải các bài toán
sau
Tìm ước chung lớn nhất của dãy N số
Tìm bội chung nhỏ nhất của 2 số
Tìm bội chung nhỏ nhất của dãy N số
Kiểm tra một số nguyên dương có là số nguyên tố hay không?
Liệt kê các số âm trong dãy N số nguyên dương
Tìm số chính phương đầu tiên trong dãy N số nguyên dương
Tính tích các số nguyên tố trong dãy N số nguyên dương
Giải hệ 2 phương trình bậc nhất 2 ẩn số
2.2 Các ký tự dùng trong C
Bộ chữ cái 26 ký tự latinh: A .. Z, a .. z
Bộ chữ số thập phân: 0..9
Ký hiệu toán học : + - * / = ( )
Ký tự gạch nối _ và khoảng trắng ‘
Các ký hiệu đặc biệt khác như : . , ; : [ ] { } ? ! \ & |
% # $,…
2.3 Từ khóa (Keyword)
Các từ dành riêng trong ngôn ngữ.
Phân biệt chữ hoa chữ thường.
Không thể sử dụng từ khóa để đặt tên cho biến, hàm,
tên chương trình con.
Gồm các loại:
Các từ khóa dùng để khai báo
const, enum, signed, struct, typedef,
unsigned…
10 11
12 13
10/12/2025
4
2.3 Từ khóa (Keyword)
Gồm các loại:
Các từ khóa về kiểu dữ liệu
char, double, float, int, long, short, void
Các từ khóa điều khiển
case, default, else, if, switch, break, continue, goto,
return
Các từ khóa vòng lặp
do, for, while
2.4 Tên/Định danh (Identifier)
Tên do người lập trình đặt như ( tên biến, tên hằng, tên
kiểu dữ liệu, tên hàm hay thủ tục).
Qui ước đặt tên:
Không được trùng với các từ khóa và các tên khác.
Bao gồm chữ cái, chữ số và dấu gạch dưới _ . Bắt đầu
bằng chữ cái hoặc dấu gạch dưới.
Tên phân biệt chữ hoa chữ thường.
Số ký tự tối đa 255
2.4 Tên/Định danh (Identifier)
Tên/Định danh (Identifier)
Ví dụ:
X1, X2, hay zValue, _Delta là các tên hợp lệ.
1A, Giai Phuong Trinh là các tên không hợp lệ.
Phân biệt chữ hoa chữ thường, do đó các tên sau đây khác
nhau:
A, a
BaiTap, baitap, BAITAP, bAItaP,
2.5 Khai báo thư viện
Khai báo sau chỉ thị #include có 2 cách:
#include <tên thư viện>
#include “tên thư viện”
Ví dụ:
#include <stdio.h>
#include <math.h> //Chứa các hàm toán học
14 15
16 17
10/12/2025
5
2.6 Lệnh và khối lệnh
Dấu chấm phẩy ; dùng để phân cách các câu lệnh
.
Ví dụ:
printf(“Hello World!);
printf(“\n”);
Khối lệnh gồm nhiều câu lệnh được đặt trong cặp
dấu ngoặc nhọn {}
Ví dụ:
int a, b, Min, Max;
if (a>b)
{
Max = a; Min = b;
}
2.7 Lời chú thích
Có 2 cách
// Nội dung dòng chú thích
/* Nội dung các dòng chú thích */
Ví dụ:
//MSSV: 0712078
/*Ho & Ten: NVA
Ngày sinh:
Lớp: */
2.8 Quy tắc viết chương trình
Quy tắc 1: Chương trình nên được tách thành nhiều
đơn thể(mô-đun).
Quy tắc 2: Trình bày chương trình nhất quán, rõ ràng.
Quy tắc 3: Mỗi câu lệnh nên được đặt riêng trên một
dòng để chương trình dễ đọc (debug).
Quy tắc 4: Câu lệnh phải thể hiện đúng cấu trúc
chương trình bằng cách sử dụng thụt đầu dòng hợp lý
(tab).
2.8 Quy tắc viết chương trình
Quy tắc 5: Các dấu { } bao các khối lệnh phải được
canh thẳng.
Nên viết cặp dấu { } trước rồi viết các lệnh vào giữa để
tránh thiếu các dấu ngoặc.
Các câu lệnh nằm giữa cặp dấu { } được viết thụt vào một
khoảng tab.
Quy tắc 6: Các toán tử và toán hạng trong một biểu
thức nên được tách rời nhau 1 khoảng trắng.
Quy tắc 7: Mỗi dòng lệnh kết thúc bằng dấu chấm
phẩy;
18 19
20 21
10/12/2025
6
3. Các kiểu dữ liệu cơ bản
Turbo C có 4 kiểu cơ sở sau:
Kiểu số nguyên: giá trị của nó là các số nguyên như 2912, -
1706,
Kiểu số thực: giá trị của nó là các số thực như 3.1415, 29.12, -
17.06,
Kiểu luận lý: giá trị đúng hoặc sai.
Kiểu ký tự: 256 tự trong bảng mã ASCII
.
3.1 Các kiểu số nguyên (có dấu)
Kiểu n bit có dấu có miền giá trị: –2
n – 1
… +2
n – 1
1
Miền giá trị
(Range)
Độ lớn
(Byte)
Kiểu
(Type)
–128 … +1271char
–32.768 … +32.7672int
–32.768 … +32.7672short
–2.147.483.648 … +2.147.483.6474long
3.2 Các kiểu số nguyên (không dấu)
Kiểu n bit có dấu có miền giá trị: 0… +2
n
1
Miền giá trị
(Range)
Độ lớn
(Byte)
Kiểu
(Type)
0 … 2551unsigned char
0 … 65.5352unsigned int
0 … 65.5352unsigned short
0 … 4.294.967.2954unsigned long
3.3 Các kiểu số thực (floating-point)
Ví dụ
172.06 = 1.7206*10
2
(*) Độ chính xác đơn (Single-precision) chính xác đến 7 số
lẻ.
(**) Độ chính xác kép (Double-precision) chính xác đến 19
số lẻ.
Miền giá trị
(Range)
Độ lớn
(Byte)
Kiểu
(Type)
3.4*10
–38
… 3.4*10
38
4float (*)
1.7*10
–308
… 1.7*10
308
8double (**)
22 23
24 25
10/12/2025
7
3.4 Kiểu luận lý (logic)
C ngầm định một cách không tường minh:
false (sai): giá trị 0.
true (đúng): giá trị khác 0, thường là 1.
C++: khai báo kiểu bool
Ví dụ
0 (false), 1 (true), 2 (true), 2.5 (true)
1 > 2 (0, false), 1 < 2 (1, true)
3.5 Kiểu ký tự
Ký tự 8 bit: gồm 256 ký tự trong bảng mã ASCII
Mỗi ký tự có mộtASCII từ 0 đến 255.
Ví dụ: ‘0’ là 48, ‘A là 65, ‘a’ là 97
Số ký tự
Miền giá trị
(Range)
Độ lớn
(Byte)
Kiểu
(Type)
256
-128 … 1271char
256
0 ... 2551Unsigned char
4. Hằng và Biến
4.1 Hằng
4.2 Biến
4.1 Hằng
Định nghĩa hằng trong C
Cú pháp: #define<tên hằng> <giá trị>
Ví dụ:
- #define Max 100
- #define Pi 3.14
Định nghĩa hằng trong C++
Cú pháp:
- const <kiểu dữ liệu> <tên hằng> = <giá trị>;
- const <tên hằng> = <giá trị>;
Ví dụ:
const int Max = 100;
const Pi 3.14
26 27
28 29
10/12/2025
8
4.1 Hằng
Hằng ký tự
Được viết trong dấu nháy đơn ‘’
Ví dụ: ‘A , ‘a’
Hằng chuỗi
Được viết trong dấu nháy kép “”
Ví dụ: “Nguyen Van A” , “Ky thuat Lap Trinh
Hằng số học:
Số nguyên: 10
Số thực: 5.0, 3.14
Số thực dấu chấm động: 2E5 2*10
5
30

Preview text:

10/12/2025 Nội dung chương
Trường Đại học Thủ Dầu Một 1.
Khái quát về ngôn ngữ C Viện ĐT CNTT - CĐS 2.
Cấu trúc cơ bản của một chương trình C 3.
Các kiểu dữ liệu cơ sở CƠ SỞ LẬP TRÌNH 4. Hằng & Biến CHƯƠNG II
GIỚI THIỆU NGÔN NGỮ C 2 3
1. Khát quát về ngôn ngữ C
1.1 Giới thiệu ngôn ngữ C
1.1 Giới thiệu ngôn ngữ C
 Được phát triển bởi Dennis Ritchie tại Bell Ưu điểm của C Telephone năm 1972.
– Rất mạnh và linh động, có khả năng thể hiện bất cứ ý tưởng
 Tiền thân của ngôn ngữ B, KenThompson, cũng tại nào. Bell Telephone.
– Được sử dụng rộng rãi bởi các nhà lập trình chuyên nghiệp.
 Là ngôn ngữ lập trình có cấu trúc và phân biệt chữ
– Có tính khả chuyển, ít thay đổi trên các hệ thống máy tính khác nhau.
Hoa - thường (case sensitive). – Rõ ràng, cô đọng.  Chuẩn ANSI C
– Lập trình đơn thể (Module), tái sử dụng thông qua hàm. 4 5 1 10/12/2025
1.2 Môi trường lập trình
1.2 Môi trường lập trình
Môi trường lập trình
Môi trường phát triển tích hợp IDE (Integrated
– Visual Studio Code (tích hợp trình biên dịch cho C++) Development Environment)
 Biên tập chương trình nguồn (Trình EDIT).
 Biên dịch chương trình (Trình COMPILE).
 Chạy chương trình nguồn (Trình RUNTIME).
 Sửa lỗi chương trình nguồn (Trình DEBUG). .C/.CPP .OBJ .EXE 6 7
2. Cấu trúc chương trình C
2.1 Cấu trúc chương trình
2.1 Cấu trúc chương trìnhCó dạng
2.2 Tập các ký tự dùng trong C
#include “…”; // Khai báo thư viện
2.3 Từ khóa (Keyword)
int x; // Khai báo các biến toàn cục
void Nhap(); // Khai báo các hàm
2.4 Tên/Định danh (Identifier)
2.5 Khai báo thư viện
void main() // Phần định nghĩa hàm main
2.6 Lệnh và khối lệnh { // Các câu lệnh 2.7 Lời chú thích }
2.8 Quy tắc viết chương trình 8 9 2 10/12/2025
2.1 Cấu trúc chương trình
Bài tập cấu trúc chương trình
Ví dụ: chương trình tính tổng 2 số
• Phác họa cấu trúc chương trình giải các bài toán #include sau #include
– Tìm ước chung lớn nhất của dãy N số void main()
– Tìm bội chung nhỏ nhất của 2 số {
– Tìm bội chung nhỏ nhất của dãy N số
int x, y, tong;
– Kiểm tra một số nguyên dương có là số nguyên tố hay không?
printf(“Nhap hai so nguyen: );
– Liệt kê các số âm trong dãy N số nguyên dương
scanf(%d%d”,&x,&y); tong = x + y;
– Tìm số chính phương đầu tiên trong dãy N số nguyên dương
printf(“Tong hai so la %d”,tong); getch();
– Tính tích các số nguyên tố trong dãy N số nguyên dương }
– Giải hệ 2 phương trình bậc nhất 2 ẩn số 10 11
2.2 Các ký tự dùng trong C
2.3 Từ khóa (Keyword)
 Bộ chữ cái 26 ký tự latinh: A .. Z, a .. z
 Các từ dành riêng trong ngôn ngữ.
 Bộ chữ số thập phân: 0..9
 Phân biệt chữ hoa chữ thường.
 Ký hiệu toán học : + - * / = ( )
 Không thể sử dụng từ khóa để đặt tên cho biến, hàm,
 Ký tự gạch nối _ và khoảng trắng ‘ ’ tên chương trình con.  Gồm các loại:
 Các ký hiệu đặc biệt khác như : . , ; : [ ] { } ? ! \ & |
−Các từ khóa dùng để khai báo % # $,…
• const, enum, signed, struct, typedef, unsigned… 12 13 3 10/12/2025
2.3 Từ khóa (Keyword)
2.4 Tên/Định danh (Identifier)  Gồm các loại:
 Tên do người lập trình đặt như ( tên biến, tên hằng, tên
− Các từ khóa về kiểu dữ liệu
kiểu dữ liệu, tên hàm hay thủ tục).
• char, double, float, int, long, short, void
− Các từ khóa điều khiển
Qui ước đặt tên:
• case, default, else, if, switch, break, continue, goto,
 Không được trùng với các từ khóa và các tên khác. return
− Các từ khóa vòng lặp
 Bao gồm chữ cái, chữ số và dấu gạch dưới _ . Bắt đầu • do, for, while
bằng chữ cái hoặc dấu gạch dưới.
 Tên phân biệt chữ hoa chữ thường.
 Số ký tự tối đa 255 14 15
2.4 Tên/Định danh (Identifier)
2.5 Khai báo thư viện
Tên/Định danh (Identifier)
 Khai báo sau chỉ thị #include có 2 cách:  Ví dụ: #include
#include “tên thư viện”
• X1, X2, hay zValue, _Delta là các tên hợp lệ.  Ví dụ:
• 1A, Giai Phuong Trinh là các tên không hợp lệ. #include
• Phân biệt chữ hoa chữ thường, do đó các tên sau đây khác
#include //Chứa các hàm toán học nhau: – A, a
– BaiTap, baitap, BAITAP, bAItaP, … 16 17 4 10/12/2025
2.6 Lệnh và khối lệnh 2.7 Lời chú thích
 Dấu chấm phẩy ; dùng để phân cách các câu lệnh. Có 2 cách
 // Nội dung dòng chú thích
Ví dụ: printf(“Hello World!);
 /* Nội dung các dòng chú thích */
printf(“\n”);Ví dụ:
 Khối lệnh gồm nhiều câu lệnh được đặt trong cặp dấu ngoặc nhọn {} //MSSV: 0712078 • Ví dụ:
int a, b, Min, Max; /*Ho & Ten: NVA
if (a>b) Ngày sinh: { Lớp: */
Max = a; Min = b; } 18 19
2.8 Quy tắc viết chương trình
2.8 Quy tắc viết chương trình
 Quy tắc 1: Chương trình nên được tách thành nhiều
 Quy tắc 5: Các dấu { } bao các khối lệnh phải được đơn thể(mô-đun). canh thẳng.
 Quy tắc 2: Trình bày chương trình nhất quán, rõ ràng.
− Nên viết cặp dấu { } trước rồi viết các lệnh vào giữa để
tránh thiếu các dấu ngoặc.
 Quy tắc 3: Mỗi câu lệnh nên được đặt riêng trên một
− Các câu lệnh nằm giữa cặp dấu { } được viết thụt vào một
dòng để chương trình dễ đọc và (debug). khoảng tab.
 Quy tắc 4: Câu lệnh phải thể hiện đúng cấu trúc
 Quy tắc 6: Các toán tử và toán hạng trong một biểu
chương trình bằng cách sử dụng thụt đầu dòng hợp lý
thức nên được tách rời nhau 1 khoảng trắng. (tab).
 Quy tắc 7: Mỗi dòng lệnh kết thúc bằng dấu chấm phẩy; 20 21 5 10/12/2025
3. Các kiểu dữ liệu cơ bản
3.1 Các kiểu số nguyên (có dấu)
Turbo C có 4 kiểu cơ sở sau:
Kiểu n bit có dấu có miền giá trị: –2n – 1 … +2n – 1 – 1
 Kiểu số nguyên: giá trị của nó là các số nguyên như 2912, - 1706, … Kiểu Độ lớn Miền giá trị
 Kiểu số thực: giá trị của nó là các số thực như 3.1415, 29.12, - (Type) (Byte) (Range) 17.06, … char 1 –128 … +127
 Kiểu luận lý: giá trị đúng hoặc sai. int 2 –32.768 … +32.767 short 2 –32.768 … +32.767
 Kiểu ký tự: 256 ký tự trong bảng mã ASCII. long 4
–2.147.483.648 … +2.147.483.647 22 23
3.2 Các kiểu số nguyên (không dấu)
3.3 Các kiểu số thực (floating-point)
Kiểu n bit có dấu có miền giá trị: 0… +2n – 1  Ví dụ • 172.06 = 1.7206*102 Kiểu Độ lớn Miền giá trị Kiểu Độ lớn Miền giá trị (Type) (Byte) (Range) (Type) (Byte) (Range) float (*) 3.4*10–38 … 3.4*1038 4 unsigned char 1 0 … 255 double (**) 1.7*10–308 … 1.7*10308 8 unsigned int 2 0 … 65.535 unsigned short 2 0 … 65.535
• (*) Độ chính xác đơn (Single-precision) chính xác đến 7 số unsigned long 4 0 … 4.294.967.295 lẻ.
• (**) Độ chính xác kép (Double-precision) chính xác đến 19 số lẻ. 24 25 6 10/12/2025
3.4 Kiểu luận lý (logic) 3.5 Kiểu ký tự
 C ngầm định một cách không tường minh:
 Ký tự 8 bit: gồm 256 ký tự trong bảng mã ASCII • false (sai): giá trị 0.
• true (đúng): giá trị khác 0, thường là 1.
 Mỗi ký tự có một mã ASCII từ 0 đến 255.  C++: khai báo kiểu bool
Ví dụ: ‘0’ là 48, ‘A’ là 65, ‘a’ là 97  Ví dụ
• 0 (false), 1 (true), 2 (true), 2.5 (true) Kiểu Độ lớn Miền giá trị Số ký tự
• 1 > 2 (0, false), 1 < 2 (1, true) (Type) (Byte) (Range) char 1 -128 … 127 256 Unsigned char 1 0 ... 255 256 26 27 4. Hằng và Biến 4.1 Hằng 4.1 Hằng
Định nghĩa hằng trong C 4.2 Biến • Cú pháp: #define • Ví dụ: - #define Max 100 - #define Pi 3.14
Định nghĩa hằng trong C++ • Cú pháp: - const = ; - const = ;
• Ví dụ: const int Max = 100; const Pi 3.14 28 29 7 10/12/2025 4.1 HằngHằng ký tự
• Được viết trong dấu nháy đơn ‘’ • Ví dụ: ‘A’ , ‘a’  Hằng chuỗi
• Được viết trong dấu nháy kép “” • Ví dụ:
“Nguyen Van A” , “Ky thuat Lap Trinh”  Hằng số học: • Số nguyên: 10 • Số thực: 5.0, 3.14
• Số thực dấu chấm động: 2E5  2*105 30 8