TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
Nhập môn lập trình Tổng quan TS. Ngô Hữu Dũng
Bài 1 – Giới thiệu
Blog Email
ngohuudung.blogspot.com ngohuudung@iuh.edu.vn
2 Nhập môn lập trình - Tổng quan
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ự
3 Nhập môn lập trình - Tổng quan
Tài liệu 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 Nhập môn lập trình - Tổng quan
Lịch trình
Tuần
Nội dung
Tự học
Lý thuyết
Thực hành
Kiểm tra
1
Giới thiệu môn học
2
4
Các thành phần cơ bản của Ngôn ngữ C
4
2
2
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
TK
6
10
5
Hàm – chương trình con
2
GK
6
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
94
60
15 Nhập môn lập trình - Tổng quan
5
Kiểm tra đánh giá 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 Nhập môn lập trình - Tổng quan
Thảo luận
What?
Why?
How?
7 Nhập môn lập trình - Tổng quan
Một số gợi ý
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?
8 Nhập môn lập trình - Tổng quan
Chương trình?
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! "); return 0;
8. 9. }
9 Nhập môn lập trình - Tổng quan
Các bước lập trình
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
10 Nhập môn lập trình - Tổng quan
Ví dụ về các bước lập trình 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
11 Nhập môn lập trình - Tổng quan
Các bước giải bài toán 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
12 Nhập môn lập trình - Tổng quan
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.
6.
// Khai báo biến // Nội dung chương trình return 0;
//Kết thúc
7. 8. } 9. // Ghi chú: // là dấu chú thích, 10. // không ảnh hưởng đến chương trình
13 Nhập môn lập trình - Tổng quan
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
: standard C input output
3. // stdio
4. // .h
: header
5. //Chương trình chính
6. int main()
7. {
8.
9.
// Khai báo biến // Nội dung chương trình return 0;
//Kết thúc
10. 11. }
14 Nhập môn lập trình - Tổng quan
Khai báo biến
1. #include
// Thư viện
2. //Chương trình chính 3. int main() 4. {
5.
6.
7.
// int: integer – số nguyên
// Cú pháp: ;
8.
9.
// Khai báo biến int x; int y; int tong; // Hoặc: int x, y, tong; // Nội dung chương trình return 0;
//Kết thúc
10. 11. }
15 Nhập môn lập trình - Tổng quan
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.
//Khai báo biến
6.
7.
8.
int x, y, tong; // Nhập giá trị cho x và y // Tính tổng // Xuất ra màn hình giá trị tổng return 0;
//Kết thúc
9. 10. }
16 Nhập môn lập trình - Tổng quan
Lưu đồ thuật toán và Mã giả
Dùng để biểu diễn, mô tả giải thuật
Start
Read x Read y
tong = x + y
Print tong
Problem Tính tổng Input x, y: Integer Output tong: Integer READ x, y tong = x + y WRITE tong END
End
17 Nhập môn lập trình - Tổng quan
Nhập giá trị cho biến
1. #include
// Thư viện
//Chương trình chính
2. int main() 3. {
4.
//Khai báo biến
5.
6.
7.
//Nhập x //Nhập y
8.
9.
int x, y, tong; // Nhập giá trị cho x và y scanf("%d", &x); scanf("%d", &y); // Tính tổng // Xuất ra màn hình giá trị tổng return 0;
//Kết thúc
10. 11. }
18 Nhập môn lập trình - Tổng quan
//Khai báo thư viện
Tính toán – Xử lý
1. #include
//Chương trình chính
2. int main() 3. { 4.
//Khai báo biến
5.
6.
7.
//Nhập x //Nhập y
8.
9.
10.
11.
int x, y, tong;
// Nhập giá trị cho x và y
scanf("%d", &x);
scanf("%d", &y);
// Tính tổng
// Phép gán
tong = x + y;
// Cú pháp: = ;
// Xuất ra màn hình giá trị tổng
//Kết thúc
return 0;
12. 13. }
Nhập môn lập trình - Tổng quan 19
Xuất ra màn hình
1. #include
//Khai báo thư viện
//Chương trình chính
2. int main() 3. { 4.
//Khai báo biến
5.
6.
7.
//Nhập x //Nhập y
8.
9.
10.
11.
// Xuất
int x, y, tong; // Nhập giá trị cho x và y scanf("%d", &x); scanf("%d", &y); // Tính tổng // Phép gán tong = x + y; // Xuất ra màn hình giá trị tổng printf("Tong la %d \n", tong); return 0;
//Kết thúc
12. 13. }
Nhập môn lập trình - Tổng quan 20
Chương trình tính tổng tham khảo
1. #include
//Khai báo thư viện
//Chương trình chính
2. int main() 3. {
4.
//Khai báo biến
5.
6.
//Nhập x
7.
8.
9.
//Nhập y //Tính tổng
10.
// Xuất
int x, y, tong; printf("Nhap x: "); scanf("%d", &x); printf("Nhap y: "); scanf("%d", &y); tong = x + y; printf("Tong la %d \n", tong); return 0;
//Kết thúc
11. 12. }
21 Nhập môn lập trình - Tổng quan
How’s it work?
1. #include
7 y
11 tong
4 x
2. int main() 3. { 4.
5.
6.
7.
Nhap x: 4 Nhap x: Nhap y: 7 Nhap y: Tong la 11 Tong la 11
8.
9.
10.
int x, y, tong; printf("Nhap x: "); scanf("%d", &x); printf("Nhap y: "); scanf("%d", &y); tong = x + y; printf("Tong la %d \n", tong); return 0;
11. 12. }
22
Nhận xét – Thư viện
Thư viện
Chứa các hàm đã được định nghĩa sẵn
Khai báo
#include
// Nhập xuất
// Toán học
#include
// Ký tự // Thời gian
23 Nhập môn lập trình - Tổng quan
Nhận xét – Chương trình chính main
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
}
24 Nhập môn lập trình - Tổng quan
Nhận xét – Biến (variable)
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
// Biến kiểu số thực // Biến kiểu ký tự
int x, y, tong, hieu, tich;// Số nguyên float thuong; char kyTu; char chuoi[50]; // Biến kiểu chuỗi ký tự
25 Nhập môn lập trình - Tổng quan
Nhận xét – Nhập dữ liệu
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("<định dạng>", &
// c: char
scanf("%d", &x); // d: decimal scanf("%i", &y); // i: integral scanf("%f", &thuong);// f: float scanf("%c", &kyTu); scanf("%s", &chuoi); // s: string
gets(
gets(chuoi);
26 Nhập môn lập trình - Tổng quan
Nhận xét – Tính toán
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)
27 Nhập môn lập trình - Tổng quan
Nhận xét – Xuất
Xuất ra màn hình dòng chữ, giá trị của biến
printf("<định dạng>",
printf("Tong: %d \n", tong); printf("Thuong: %f \n", thuong); printf("Ky tu: %c \n", kyTu); printf("Chuoi: %s \n", chuoi);
28 Nhập môn lập trình - Tổng quan
Nhận xét – Mã giả
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…
29 Nhập môn lập trình - Tổng quan
Nhận xét – Lưu đồ thuật toán
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
Data
Bắt đầu hoặc kết thúc chương trình 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
30 Nhập môn lập trình - Tổng quan
Hằng số
Đề 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?
r
DT = ? CV = ?
#define PI 3.14 const int IP = 3.14;
31 Nhập môn lập trình - Tổng quan
// PI là hằng số
Hằng số - tham khảo
1. #include
2. #define PI 3.14
3. int main()
4. {
5.
6.
7.
8.
9.
10.
11.
12.
// Bán kính float r; // Diện tích, chu vi float DT, CV; printf("Nhap ban kinh hinh tron: "); scanf("%f", &r); DT = PI * r * r; CV = 2 * PI * r; printf("Dien tich hinh tron: %.2f\n", DT); printf("Chu vi hinh tron: %.2f", CV); return 0;
13. 14. }
32 Nhập môn lập trình - Tổng quan
Xuất - Output
printf(“hello!”);
Phép toán – Operation
Một số khái niệm Thư viện – Library stdio.h, math.h Chương trình chính int main(){…}
tong = x + y;
Kiểu biến – Data type
Toán tử - Operator
int, float
+, -, *, /
Tên biến – Variable name
xA, xB
Chú thích - Comment
// Lời chú thích
Hằng số - Constant #define PI 3.14 const float PI = 3.14
Nhập - Input
Hàm - Function
scanf(“%d”,&x);
sqrt, pow, scanf, printf
33 Nhập môn lập trình - Tổng quan
Công cụ lập trình
C-Free, Dev-C, CodeBlocks, Visual Studio…
34 Nhập môn lập trình - Tổng quan
Một số trình biên dịch khác
Codeblocks: http://www.codeblocks.org/downloads/ Dev-C++: http://www.bloodshed.net/dev/devcpp.html Visual studio: http://www.visualstudio.com/en-
US/products/visual-studio-express-vs
TurboC: http://borlandc.org/download-turbo-c-3-0-for-
windows-7-windows-8-and-windows-xp/
Eclipse: http://www.eclipse.org/ide/ 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/
35 Nhập môn lập trình - Tổng quan
Giảng viên: Instructor
36 Nhập môn lập trình - Tổng quan
Tự tìm hiểu nội dung môn học Thuật toán? Algorithm
Các thao tác cơ bản
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
input Nhập output Xuất, Đếm, count Tìm kiếm, search Tính toán, calculation Trích xuất, list list Liệt kê add Thêm, remove Xóa, Sắp xếp… sort
Dãy số Chuỗi ký tự
37 Nhập môn lập trình - Tổng quan
Bài tập 1.1 – Các thao tác lập trình
38 Nhập môn lập trình - Tổng quan
Bài tập 1.1 – Các thao tác lập trình 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
39 Nhập môn lập trình - Tổng quan
Bài tập 1.2 – Tính toán
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*/
//Chương trình chính
int main() {
. . . . . . . . . . . . return 0;
// Khai báo biến // Nhập // Biểu thức, tính toán // Xuất //Kết thúc
}
40 Nhập môn lập trình - Tổng quan
Tính tổng, hiệu, tích, thương (tham khảo 1)
1.
2.
/*Khai báo thư viện*/ //Chương trình chính
3.
#include
int main()
{
4.
5.
//Khai báo
6.
7.
//Nhập x
8.
9.
10.
11.
12.
13.
//Nhập y //Biểu thức tính tổng //Biểu thức tính hiệu //Biểu thức tính tích //Biểu thức tính thương
14.
15.
16.
// Xuất tổng // Xuất hiệu // Xuất tích
17.
int x, y, tong, hieu, tich; float thuong; printf("Nhap so nguyen x: "); scanf("%d", &x); printf("Nhap so nguyen y: "); scanf("%d", &y); tong = x + y; hieu = x - y; tich = x * y; thuong = (float)x / y; printf("Tong la %d \n", tong); printf("Hieu la %d \n", hieu); printf("Tich la %d \n", tich); printf("Thuong la %f \n", thuong); // Xuất thương return 0;
//Kết thúc
18. 19. }
41 Nhập môn lập trình - Tổng quan
//Khai báo thư viện //Chương trình chính
Tính tổng, hiệu, tích, thương (tham khảo 2)
1. #include
2. int main()
3. {
4.
//Khai báo
5.
6.
7.
8.
//Nhập x, y //Tính toán
9.
10.
11.
12.
13.
int x, y, tong, hieu, tich; float thuong; printf("Nhap vao hai so nguyen: "); scanf("%d%d", &x, &y); tong = x + y; hieu = x - y; tich = x * y; thuong = (float)x / y; printf("%d + %d = %d \n", x, y, tong);// Xuất printf("%d - %d = %d \n", x, y, hieu); printf("%d * %d = %d \n", x, y, tich); printf("%d / %d = %f \n", x, y, thuong); return 0;
//Kết thúc
14. 15. }
42 Nhập môn lập trình - Tổng quan
Bài tập 1.3 – Hình chữ nhật
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.
a
Gợi ý:
Giả sử chiều dài đường chéo là c
b
DT = ? CV = ? 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
43 Nhập môn lập trình - Tổng quan
Hình chữ nhật (tham khảo)
1. #include
2. #include
3. int main()
4. {
5.
6.
// Hai cạnh // Đường chéo
7.
8.
9.
10.
11.
12.
13.
14.
15.
float a, b; float c; float dienTich, chuVi; printf("Nhap hai canh: "); scanf("%f%f", &a, &b); dienTich = a * b; chuVi = (a + b)*2; c = sqrt(a*a + b*b); printf("Dien tich: %f\n", dienTich); printf("Chu vi: %f\n", chuVi); printf("Duong cheo: %f\n", c); return 0;
Nhập môn lập trình - Tổng quan
16. 17. } 44
Bài tập 1.4 – Khoảng cách
Đề 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.
A(xA, yA)
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
B(xB, yB)
45 Nhập môn lập trình - Tổng quan
Khoảng cách (tham khảo)
1. #include
2. #include
3. int main()
4. {
5.
6.
7.
// A(xA, yA) // B(xB, yB) // Khoảng cách
8.
9.
10.
11.
12.
13.
float xA, yA; float xB, yB; float KC; printf("Nhap A(xA, yA): "); scanf("%f%f", &xA, &yA); printf("Nhap B(xB, yB): "); scanf("%f%f", &xB, &yB); KC = sqrt(pow(xA-xB,2) + pow(yA-yB,2)); printf("Khoang cach: %f\n", KC); return 0;
14. 15. }
Nhập môn lập trình - Tổng quan 46
Bài tập 1.5 – Chữ số
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
47 Nhập môn lập trình - Tổng quan

