Nhập môn lập trình
Tổng quan
TS. Ngô Hữu Dũng
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
Bài 1 – Giới thiệu
Nhập môn lập trình - Tổng quan
Blog ngohuudung.blogspot.com
Email 
[email protected]
2
Nội dung
 Tổng quan lập trình
 Các thành phần cơ bản
 Nhập xuất dữ liệu và các thư viện
 Các câu lệnh có cấu trúc
 Lệnh lựa chọn - rẽ nhánh
 Thuật toán
 Vòng lặp
 Hàm – chương trình con
 Kiểu dữ liệu mảng 
 Chuỗi ký tự
Nhập môn lập trình - Tổng quan3
Tài liệu
Nhập môn lập trình - Tổng quan
 Brian W. Kernighan and Dennis M. Ritchie. The C 
Programming Language (Second Edition). Prentice-Hall. 
Englewood Cliffs, New Jersey, 1988.
 Slide, bài giảng
 Bài tập thực hành
 Bản dịch tiếng Việt: Giáo trình Ngôn ngữ lập trình C
 Tham khảo thêm
 Phạm Văn Ất. Kỹ thuật lập trình C. NXB Khoa học và Kỹ thuật, 
1995
 Randal E.Bryant and David R.O’Hallaron. Computer’s Perspective, 
2001
 Bjarne Stroustrup. The C++ Programming Language, AT&T Labs 
Murray Hill, New Jersey Addison-Wesley, 1997.
 Andy Oram and Greg Wilson, Beautiful Code, 2007
 cplusplus.com
4
Lịch trình
Nhập môn lập trình - Tổng quan
Tuần Nội dung
Lý
thuyết
Thực
hành
Kiểm
tra
Tự học
1 Giới thiệu môn học 2 4
2
Các thành phần cơ bản của Ngôn ngữ C
2
4
Nhập xuất dữ liệu và các thư viện 4
3 Các câu lệnh có cấu trúc 2 6 10
4 Vòng lặp – thuật toán 2 6 TK 10
5 Hàm – chương trình con 2 6 GK 10
6 Mảng 2 6 10
7 Mảng và chuỗi 2 6 10
8 Ôn tập 1 6 8
9 6 6
10 6 6
11 6 6
12 6 6
15 60 94
5
Kiểm tra đánh giá
Nhập môn lập trình - Tổng quan
 Lý thuyết
 Kiểm tra thường kỳ
 Thực hành
 Kiểm tra thường kỳ
 Thi giữa kỳ
 Thi cuối kỳ
 Điểm liệt: <3
 Số tín chỉ: 3
 Lý thuyết: 15
 Thực hành: 60
 Tự học: 94
6
Thảo luận
Nhập môn lập trình - Tổng quan7
 What?
 Why?
 How?
Một số gợi ý
Nhập môn lập trình - Tổng quan8
 Bám sát các nội dung thực hành (quan trọng!)
 Đọc tài liệu, slide trước khi đến lớp
 In tài liệu, slide, bài tập
 Tự đặt câu hỏi và trả lời
 Tự làm bài tập ở nhà
 Tóm tắt các nội dung chủ yếu
 Vắng học?
Chương trình?
Nhập môn lập trình - Tổng quan9
1. /* Xuất ra màn hình dòng chữ:
2. Hello world!
3. */
4. #include 
5. int main()
6. {
7. printf("Hello world! ");
8. return 0;
9. }
Các bước lập trình
Nhập môn lập trình - Tổng quan10
 Xác định rõ yêu cầu của bài toán
 Lựa chọn các biến và cấu trúc dữ liệu
 Xây dựng giải thuật (cách giải) cho bài toán
 Xây dựng trình tự để giải bài toán
 Cài đặt (viết) chương trình và biên dịch
 Chạy thử và sửa lỗi
 Hoàn thiện và tối ưu hóa
Ví dụ về các bước lập trình
Nhập môn lập trình - Tổng quan11
 Bài toán: Nhập, tính toán, xuất
 Đề bài: Viết chương trình nhập vào hai số nguyên, xuất ra
màn hình tổng của hai số nguyên đó.
 Các bước chính để giải bài toán:
 Xác định rõ yêu cầu của bài toán
 Lựa chọn các biến và cấu trúc dữ liệu
 Xây dựng giải thuật (cách giải) cho bài toán
 Xây dựng trình tự để giải bài toán
 Cài đặt (viết) và biên dịch chương trình
 Chạy thử và sửa lỗi
 Hoàn thiện và tối ưu hóa
Các bước giải bài toán
Nhập môn lập trình - Tổng quan12
 Xác định yêu cầu,
 Nhập 2 số nguyên, tính tổng, xuất ra tổng.
 Lựa chọn dữ liệu,
 Cần lưu hai số nguyên
 Cần lưu tổng hai số nguyên
 Xây dựng thuật toán và trình tự,
 Khai báo các biến để lưu trữ, bao nhiêu biến? Kiểu gì?
 Nhập vào 2 số nguyên
 Tính tổng
 Xuất kết quả
 Viết và biên dịch chương trình, 
 Chạy thử và sửa lỗi
Cấu trúc chương trình C
1. //Khai báo thư viện
2. //Chương trình chính
3. int main() 
4. {
5. // Khai báo biến 
6. // Nội dung chương trình
7. return 0; //Kết thúc
8. }
9. // Ghi chú: // là dấu chú thích, 
10. // không ảnh hưởng đến chương trình
Nhập môn lập trình - Tổng quan13
Khai báo thư viện
1. #include // Thư viện stdio.h
2. // Chứa các hàm nhập xuất cơ bản
3. // stdio : standard C input output
4. // .h : header
5. //Chương trình chính
6. int main() 
7. {
8. // Khai báo biến 
9. // Nội dung chương trình
10. return 0; //Kết thúc
11. }
Nhập môn lập trình - Tổng quan14
Khai báo biến
1. #include // Thư viện 
2. //Chương trình chính
3. int main() 
4. {
5. // Khai báo biến 
6. int x; // int: integer – số nguyên
7. int y; // Cú pháp: ;
8. int tong; // Hoặc: int x, y, tong;
9. // Nội dung chương trình
10. return 0; //Kết thúc
11. }
Nhập môn lập trình - Tổng quan15
Trình tự của chương trình
1. #include // Thư viện 
2. //Chương trình chính
3. int main() 
4. {
5. int x, y, tong; //Khai báo biến
6. // Nhập giá trị cho x và y
7. // Tính tổng
8. // Xuất ra màn hình giá trị tổng
9. return 0; //Kết thúc
10. }
Nhập môn lập trình - Tổng quan16
Lưu đồ thuật toán và Mã giả
Nhập môn lập trình - Tổng quan17
Dùng để biểu diễn, mô tả giải thuật
Problem Tính tổng
Input x, y: Integer
Output tong: Integer
READ x, y
tong = x + y
WRITE tong
END
Start
End
Read x
Read y
tong = x + y
Print tong
Nhập giá trị cho biến
1. #include // Thư viện 
2. int main() //Chương trình chính
3. {
4. int x, y, tong; //Khai báo biến
5. // Nhập giá trị cho x và y
6. scanf("%d", &x); //Nhập x
7. scanf("%d", &y); //Nhập y
8. // Tính tổng
9. // Xuất ra màn hình giá trị tổng
10. return 0; //Kết thúc
11. }
Nhập môn lập trình - Tổng quan18
Tính toán – Xử lý
1. #include //Khai báo thư viện
2. int main() //Chương trình chính
3. {
4. int x, y, tong; //Khai báo biến
5. // Nhập giá trị cho x và y
6. scanf("%d", &x); //Nhập x
7. scanf("%d", &y); //Nhập y
8. // Tính tổng
9. tong = x + y; // Phép gán
10. // Cú pháp: = ;
11. // Xuất ra màn hình giá trị tổng
12. return 0; //Kết thúc
13. }
Nhập môn lập trình - Tổng quan19
Xuất ra màn hình
1. #include //Khai báo thư viện
2. int main() //Chương trình chính
3. {
4. int x, y, tong; //Khai báo biến
5. // Nhập giá trị cho x và y
6. scanf("%d", &x); //Nhập x
7. scanf("%d", &y); //Nhập y
8. // Tính tổng
9. tong = x + y; // Phép gán
10. // Xuất ra màn hình giá trị tổng
11. printf("Tong la %d \n", tong); // Xuất
12. return 0; //Kết thúc
13. }
Nhập môn lập trình - Tổng quan20
Chương trình tính tổng tham khảo
1. #include //Khai báo thư viện
2. int main() //Chương trình chính
3. {
4. int x, y, tong; //Khai báo biến
5. printf("Nhap x: ");
6. scanf("%d", &x); //Nhập x
7. printf("Nhap y: ");
8. scanf("%d", &y); //Nhập y
9. tong = x + y; //Tính tổng
10. printf("Tong la %d \n", tong); // Xuất
11. return 0; //Kết thúc
12. }
Nhập môn lập trình - Tổng quan21
How’s it work?
22
1. #include 
2. int main() 
3. {
4. int x, y, tong;
5. printf("Nhap x: ");
6. scanf("%d", &x);
7. printf("Nhap y: ");
8. scanf("%d", &y);
9. tong = x + y;
10. printf("Tong la %d \n", tong);
11. return 0;
12. }
4 7 11
x y tong
Nhap x: 
Nhap y:
Tong la 11
4
 7
Nhận xét – Thư viện
Nhập môn lập trình - Tổng quan23
 Thư viện
 Chứa các hàm đã được định nghĩa sẵn
 Khai báo
 #include 
 #include // Nhập xuất
 #include // Thư viện chuẩn
 #include // Toán học
 #include // Chuỗi ký tự
 #include // Ký tự
 #include // Thời gian
Nhận xét – Chương trình chính main
Nhập môn lập trình - Tổng quan24
 Chương trình chính: 
 Nơi chương trình bắt đầu
 Cần duy nhất một chương trình chính
int main()
{
// nội dung chương trình
return 0; // Kết thúc
}
Nhận xét – Biến (variable)
Nhập môn lập trình - Tổng quan25
 Biến 
 Lưu trữ dữ liệu cần thiết
 Giá trị có thể thay đổi
 Có kiểu dữ liệu cụ thể (nguyên, thực, ký tự)
 Khai báo
 , ;
 int x, y, tong, hieu, tich;// Số nguyên
 float thuong; // Biến kiểu số thực
 char kyTu; // Biến kiểu ký tự
 char chuoi[50]; // Biến kiểu chuỗi ký tự
Nhận xét – Nhập dữ liệu
Nhập môn lập trình - Tổng quan26
 Nhập 
 Nhập từ bàn phím giá trị cho biến
 Nhập đúng kiểu dữ liệu tương ứng với kiểu của biến
 scanf("", &);
 scanf("%d", &x); // d: decimal
 scanf("%i", &y); // i: integral
 scanf("%f", &thuong);// f: float
 scanf("%c", &kyTu); // c: char
 scanf("%s", &chuoi); // s: string
 gets();
 gets(chuoi);
Nhận xét – Tính toán
Nhập môn lập trình - Tổng quan27
 Phép gán, biểu thức
 = ;
 tong = x + y; 
 tich = x * y;
 thuong = (float)x/y;
 trungBinhCong = (x + y)/2.0;
 Toán tử số học
 +: Cộng, -: Trừ, *: Nhân,
 /: Chia,
 %: Chia lấy dư (dành cho số nguyên)
Nhận xét – Xuất
Nhập môn lập trình - Tổng quan28
 Xuất ra màn hình dòng chữ, giá trị của biến
 printf("", ,);
 printf("Tong: %d \n", tong);
 printf("Thuong: %f \n", thuong);
 printf("Ky tu: %c \n", kyTu);
 printf("Chuoi: %s \n", chuoi);
Nhận xét – Mã giả
Nhập môn lập trình - Tổng quan29
 Dùng để biểu diễn thuật toán
 Không nhất thiết chính xác về cú pháp
 Không nhất thiết tuân theo một ngôn ngữ cụ thể
 Ví dụ một số từ khoá: READ, WRITE, IF, ELSE, 
ENDIF, FOR, ENDFOR, WHILE, ENDWHILE.
 Mỗi lệnh hoặc mỗi bước chỉ nên viết trên một dòng
 Dùng thụt đầu dòng cho các lệnh có cấu trúc
 Kết thúc lệnh bằng ENDIF, ENDFOR
Nhận xét – Lưu đồ thuật toán
Nhập môn lập trình - Tổng quan30
 Biểu diễn thuật toán bằng sơ đồ khối
Hình dạng Tên gọi Hành động
Terminator Bắt đầu hoặc kết thúc chương
trình
Data Nhập hoặc xuất dữ liệu
Process Xử lý, thực hiện một thao tác
Decision Quyết định hướng xử lý theo
điều kiện
Flow direction Hướng đi của luồng xử lý
Connector Điểm kết nối
Hằng số
Nhập môn lập trình - Tổng quan31
 Đề bài: Viết chương trình nhập vào bán kính hình tròn, 
xuất ra màn hình diện tích và chu vi hình tròn.
 Gợi ý:
 Hằng số PI?
 #define PI 3.14
 const int IP = 3.14;
rDT = ?
CV = ?
Hằng số - tham khảo
1. #include 
2. #define PI 3.14 // PI là hằng số
3. int main()
4. {
5. float r; // Bán kính
6. float DT, CV; // Diện tích, chu vi
7. printf("Nhap ban kinh hinh tron: ");
8. scanf("%f", &r);
9. DT = PI * r * r;
10. CV = 2 * PI * r;
11. printf("Dien tich hinh tron: %.2f\n", DT);
12. printf("Chu vi hinh tron: %.2f", CV);
13. return 0;
14. }
Nhập môn lập trình - Tổng quan32
Một số khái niệm
Nhập môn lập trình - Tổng quan33
 Thư viện – Library
 stdio.h, math.h
 Chương trình chính
 int main(){}
 Kiểu biến – Data type
 int, float
 Tên biến – Variable name
 xA, xB
 Chú thích - Comment
 // Lời chú thích
 Nhập - Input
 scanf(“%d”,&x);
 Xuất - Output
 printf(“hello!”);
 Phép toán – Operation
 tong = x + y;
 Toán tử - Operator
 +, -, *, /
 Hằng số - Constant
 #define PI 3.14
 const float PI = 3.14
 Hàm - Function
 sqrt, pow, scanf, printf
Công cụ lập trình
Nhập môn lập trình - Tổng quan34
 C-Free, Dev-C, CodeBlocks, Visual Studio
Một số trình biên dịch khác
 Codeblocks: 
 Dev-C++: 
 Visual studio: 
US/products/visual-studio-express-vs
 TurboC: 
windows-7-windows-8-and-windows-xp/
 Eclipse: 
 Netbeans: https://netbeans.org/downloads/index.html
 Ideone: Biên dịch online, hỗ trợ nhiều ngôn ngữ lập trình
https://ideone.com/
Nhập môn lập trình - Tổng quan35
Nhập môn lập trình - Tổng quan36
Giảng viên: Instructor
Tự tìm hiểu nội dung môn học
Nhập môn lập trình - Tổng quan37
 Thuật toán? Algorithm
 Cách giải bài toán
 Lệnh lựa chọn? Selection
 (Lệnh rẽ nhánh)
 if .. else, switch .. case
 Vòng lặp? Loop
 for, while, do while
 Hàm? Function
 Chương trình con
 Mảng? Array
 Dãy số
 Chuỗi ký tự
 Các thao tác cơ bản
 Nhập input
 Xuất, output
 Đếm, count
 Tìm kiếm, search
 Tính toán, calculation
 Trích xuất, list
 Liệt kê list
 Thêm, add
 Xóa, remove
 Sắp xếp sort
Bài tập 1.1 – Các thao tác lập trình
Nhập môn lập trình - Tổng quan38
Bài tập 1.1 – Các thao tác lập trình
Nhập môn lập trình - Tổng quan39
 Khởi động: Kích đôi vào biểu tượng C-Free hoặc 
Dev-C++
 Mở tập tin mới: File  New, hoặc kích vào Biểu 
tượng 2
 Lưu file nguồn: File  Save, hoặc File  Save 
as, hoặc kích Biểu tượng 3
 Gõ chương trình Hello world vào khu vực số 4
 Biên dịch, chạy chương trình, dừng chương trình ở 
khu vực số 5
 Kiểm tra và sửa lỗi biên dịch ở khu vực số 6
 Xem và kiểm tra kết quả ở màn hình số 7
Bài tập 1.2 – Tính toán
Nhập môn lập trình - Tổng quan40
 Viết chương trình nhập vào hai số nguyên, xuất ra màn 
hình tổng, hiệu, tích, và thương của của số nguyên đó.
 Gợi ý:
#include /*Khai báo thư viện*/
int main() //Chương trình chính
{
. . . // Khai báo biến
. . . // Nhập
. . . // Biểu thức, tính toán
. . . // Xuất
return 0; //Kết thúc
}
Tính tổng, hiệu, tích, thương (tham khảo 1)
Nhập môn lập trình - Tổng quan41
1. #include /*Khai báo thư viện*/
2. int main() //Chương trình chính
3. {
4. int x, y, tong, hieu, tich;
5. float thuong; //Khai báo
6. printf("Nhap so nguyen x: ");
7. scanf("%d", &x); //Nhập x
8. printf("Nhap so nguyen y: ");
9. scanf("%d", &y); //Nhập y
10. tong = x + y; //Biểu thức tính tổng
11. hieu = x - y; //Biểu thức tính hiệu
12. tich = x * y; //Biểu thức tính tích
13. thuong = (float)x / y; //Biểu thức tính thương
14. printf("Tong la %d \n", tong); // Xuất tổng
15. printf("Hieu la %d \n", hieu); // Xuất hiệu
16. printf("Tich la %d \n", tich); // Xuất tích
17. printf("Thuong la %f \n", thuong); // Xuất thương
18. return 0; //Kết thúc
19. }
Tính tổng, hiệu, tích, thương (tham khảo 2)
Nhập môn lập trình - Tổng quan42
1. #include //Khai báo thư viện
2. int main() //Chương trình chính
3. {
4. int x, y, tong, hieu, tich; //Khai báo
5. float thuong;
6. printf("Nhap vao hai so nguyen: ");
7. scanf("%d%d", &x, &y); //Nhập x, y
8. tong = x + y; hieu = x - y; //Tính toán
9. tich = x * y; thuong = (float)x / y;
10. printf("%d + %d = %d \n", x, y, tong);// Xuất
11. printf("%d - %d = %d \n", x, y, hieu);
12. printf("%d * %d = %d \n", x, y, tich);
13. printf("%d / %d = %f \n", x, y, thuong);
14. return 0; //Kết thúc
15. }
Bài tập 1.3 – Hình chữ nhật
Nhập môn lập trình - Tổng quan43
Viết chương trình nhập vào hai cạnh của hình chữ nhật, xuất 
ra màn hình diện tích, chu vi và chiều dài đường chéo của 
hình chữ nhật.
 Gợi ý:
 Giả sử chiều dài đường chéo là c
 c2 = a2 + b2
 Tính căn bậc hai
 Hàm sqrt(x) =  
 Hàm sqrt thuộc thư viện math.h
a
b
DT = ?
CV = ? c = ?
Hình chữ nhật (tham khảo)
1. #include 
2. #include 
3. int main()
4. {
5. float a, b; // Hai cạnh
6. float c; // Đường chéo
7. float dienTich, chuVi;
8. printf("Nhap hai canh: ");
9. scanf("%f%f", &a, &b);
10. dienTich = a * b; 
11. chuVi = (a + b)*2;
12. c = sqrt(a*a + b*b);
13. printf("Dien tich: %f\n", dienTich);
14. printf("Chu vi: %f\n", chuVi);
15. printf("Duong cheo: %f\n", c);
16. return 0;
17. }
Nhập môn lập trình - Tổng quan44
Bài tập 1.4 – Khoảng cách
Nhập môn lập trình - Tổng quan45
 Đề bài: Viết chương trình nhập vào tọa độ của hai điểm
A(xA, yA) và B(xB, yB), xuất ra màn hình khoảng cách
giữa hai điểm.
 Gợi ý:
 Thư viện math.h?
 Hàm sqrt tính căn bậc hai
 sqrt(x):  
 Hàm pow tính lũy thừa
 pow(x, 2): x2
A(xA, yA)
B(xB, yB)
Khoảng cách (tham khảo)
1. #include 
2. #include 
3. int main()
4. {
5. float xA, yA; // A(xA, yA)
6. float xB, yB; // B(xB, yB)
7. float KC; // Khoảng cách
8. printf("Nhap A(xA, yA): ");
9. scanf("%f%f", &xA, &yA);
10. printf("Nhap B(xB, yB): ");
11. scanf("%f%f", &xB, &yB);
12. KC = sqrt(pow(xA-xB,2) + pow(yA-yB,2));
13. printf("Khoang cach: %f\n", KC);
14. return 0;
15. }
Nhập môn lập trình - Tổng quan46
Bài tập 1.5 – Chữ số
Nhập môn lập trình - Tổng quan47
 Viết chương trình nhập vào một số nguyên có hai chữ số, 
xuất ra màn hình chữ số hàng chục và chữ số hàng đơn vị 
của số nguyên ấy.
 Gợi ý:
 Số hàng chục: Dùng phép chia lấy phần nguyên, ví 
dụ: chuc = so / 10;
 Số hàng đơn vị: Dùng phép chia lấy dư, ví dụ donvi
= so % 10;
 Yêu cầu: Phân biệt hai phép chia lấy dư và chia lấy 
nguyên