8/15/2017<br />
<br />
<br />
<br />
<br />
<br />
Số tín chỉ: 3 (30,15)<br />
Mã HP: INFO0621<br />
Đánh giá:<br />
<br />
<br />
<br />
Mục tiêu: Cung cấp các kiến thức cơ bản về<br />
thiết kế thuật toán và lập trình trên máy tính<br />
điện tử, làm quen với một số nguyên tắc và<br />
công cụ lập trình cơ bản<br />
<br />
ĐCC: 0.1; ĐTH: 0.3; ĐT: 06<br />
Số tín chỉ: 3<br />
Bộ môn: Tin học<br />
<br />
TM<br />
<br />
H<br />
<br />
D<br />
LT<br />
<br />
Chương 1. Tổng quan về cơ sở lập trình<br />
<br />
6<br />
<br />
6<br />
<br />
0<br />
<br />
Chương 2. Các thành phần cơ sở<br />
<br />
13<br />
<br />
9<br />
<br />
4<br />
<br />
Chương 3. Mảng, xâu và con trỏ<br />
<br />
9<br />
<br />
5<br />
<br />
4<br />
<br />
Chương 4. Hàm<br />
<br />
9<br />
<br />
4<br />
<br />
5<br />
<br />
Chương 5. Kiểu dữ liệu có cấu trúc<br />
<br />
8<br />
<br />
6<br />
<br />
2<br />
<br />
Tổng<br />
<br />
45<br />
<br />
30<br />
<br />
15<br />
<br />
Bắt buộc<br />
<br />
[1].TS Nguyễn Thị Thu Thủy. Giáo trình cơ sở lập trình.<br />
NXB Thống kế, 2014.<br />
[2]. Phạm Văn Ất. Kỹ thuật lập trình C. NXB GTVT, 2008.<br />
[3]. Phạm Hồng Thái. Cơ sở lập trình. NXB ĐHQG, 2007.<br />
<br />
TH<br />
<br />
<br />
<br />
U<br />
<br />
Số tiết<br />
<br />
M<br />
<br />
_T<br />
<br />
Chương<br />
<br />
Khuyến khích<br />
<br />
[1]. Robert Sedgewick. Cẩm nang thuật toán. NXB KHKT,<br />
1994.<br />
[2]. Quách Tuấn Ngọc. Ngôn ngữ lập trình C. NXB Thống<br />
kế, 2003.<br />
[3]. www.cprogramming.com/tutorial.html<br />
<br />
1<br />
<br />
8/15/2017<br />
<br />
1.1. Thuật toán<br />
<br />
1.1.1 Khái niệm<br />
<br />
1.2. Sơ đồ khối<br />
<br />
1.1.2 Tính chất của thuật toán<br />
<br />
1.3. Chương trình và ngôn ngữ lập trình<br />
<br />
1.1.3 Ví dụ<br />
<br />
1.4. Các phương pháp lập trình<br />
<br />
7-2010<br />
<br />
H<br />
<br />
D<br />
<br />
1.5. Kỹ thuật thiết kế chương trình<br />
<br />
Cơ sở lập trình<br />
<br />
5<br />
<br />
7-2010<br />
<br />
Cơ sở lập trình<br />
<br />
6<br />
<br />
TM<br />
Cơ sở lập trình<br />
<br />
7<br />
<br />
Tính vào (input)<br />
Tính ra (output)<br />
<br />
U<br />
<br />
7-2010<br />
<br />
M<br />
<br />
_T<br />
Khái niệm 1: Thuật toán là một dãy hữu hạn các<br />
bước được sắp xếp theo một trật tự xác định,<br />
mỗi bước mô tả chính xác các phép toán hoặc<br />
hành động cần thực hiện, để giải quyết một vấn<br />
đề.<br />
Khái niệm 2: Thuật toán là một dãy hữu hạn các<br />
thao tác, sắp xếp theo một trật tự xác định, sau<br />
khi thực hiện, từ Input ta nhận được Output cần<br />
tìm.<br />
<br />
Tính đơn định (xác định / đơn nghĩa)<br />
Tính đúng đắn<br />
<br />
Tính dừng (tính kết thúc / tính đóng)<br />
Tính phổ dụng<br />
Tính khả thi/hiệu quả<br />
<br />
7-2010<br />
<br />
Cơ sở lập trình<br />
<br />
8<br />
<br />
2<br />
<br />
8/15/2017<br />
<br />
<br />
<br />
Yêu cầu: Xây dựng thuật toán để giải phương trình:<br />
ax + b=0<br />
Trong đó a,b là các số thực được nhập vào từ bàn<br />
phím<br />
Phân tích:<br />
Input: a, b<br />
Output: kết luận về x<br />
Có 3 khả năng xảy ra:<br />
- Có một nghiệm duy nhất: x = -b/a khi a≠0.<br />
- Phương trình vô nghiệm khi a=0 và b≠0.<br />
7-2010<br />
- Phương Cơ sở lập có vô số nghiệm khi a=0 và b=0. 9<br />
trình trình<br />
<br />
<br />
Thuật toán:<br />
<br />
TM<br />
<br />
H<br />
<br />
D<br />
<br />
+ Bước 1: Nhập a, b.<br />
+ Bước 2: Kiểm tra a≠0?<br />
Nếu đúng chuyển sang bước 3.<br />
Nếu sai chuyển sang bước 5.<br />
+ Bước 3: Tính nghiệm x = -b/a.<br />
+ Bước 4: In x rồi chuyển bước 8.<br />
+ Bước 5: Kiểm tra b≠0?<br />
Nếu đúng chuyển sang bước 6.<br />
Nếu sai chuyển sang bước 7.<br />
+ Bước 6: In “PTVN”, rồi chuyển bước sang 8.<br />
+ Bước 7: In “PTCVSN”.<br />
+ Bước 8: Kết thúc.<br />
<br />
M<br />
<br />
_T<br />
Khái niệm 1: Sơ đồ khối là tập hợp các ký hiệu và<br />
<br />
1.2.1 Khái niệm<br />
<br />
U<br />
<br />
quy tắc dùng để biểu diễn thuật toán<br />
Khái niệm 2: Sơ đồ khối là cách thể hiện thuật toán<br />
bằng các hình khối hình học nối với nhau bằng đường<br />
đi có hướng<br />
<br />
1.2.2 Các cấu trúc điều khiển<br />
1.2.3 Ví dụ<br />
<br />
Các thành phần:<br />
<br />
thoi: thể hiện thao tác so sánh<br />
chữ nhật: thể hiện các phép tính toán<br />
Hình bình hành: thể hiện thao tác nhập xuất dữ liệu<br />
Hình oval: thể hiện sự bắt đầu/kết thúc của thuật toán.<br />
Các mũi tên: thể sở lập trình<br />
7-2010<br />
Cơ hiện trình tự thực hiện các thao tác 12<br />
Hình<br />
Hình<br />
<br />
7-2010<br />
<br />
Cơ sở lập trình<br />
<br />
11<br />
<br />
3<br />
<br />
8/15/2017<br />
<br />
<br />
<br />
Các khối<br />
<br />
<br />
<br />
<br />
<br />
BĐ<br />
<br />
Sơ đồ khối dạng tuần tự: Là sơ đồ khối thể hiện thuật toán<br />
gồm n khối mà khi thực hiện thuật toán với một bộ dữ liệu cụ<br />
thể sẽ lần lượt thực hiện từ khối đầu tiên đến khối cuối cùng<br />
theo thứ tự viết của nó.<br />
Sơ đồ khối dạng rẽ nhánh: Là sơ đồ khối thể hiện thuật toán<br />
gồm n nhánh mà khi thực hiện thuật toán với một bộ dữ liệu<br />
cụ thể sẽ thực hiện một trong n nhánh mà thôi.<br />
<br />
<br />
<br />
Sơ đồ khối dạng chu trình: Là sơ đồ khối thể hiện thuật toán<br />
gồm n khối mà khi thực hiện thuật toán với một bộ dữ liệu cụ<br />
thể sẽ có một số khối lặp đi lặp lại nhiều lần phụ thuộc vào<br />
một điều kiện nào đó vẫn thỏa mãn.<br />
<br />
X=-b/a<br />
a=0<br />
<br />
Khối tính toán<br />
Khối bắt đầu<br />
<br />
Khối kiểm tra điều kiện<br />
<br />
D<br />
<br />
Vào/ra a<br />
<br />
KT<br />
<br />
Hướng thực hiện.<br />
<br />
Khối kết thúc<br />
<br />
H<br />
<br />
7-2010<br />
<br />
Khối Vào/Ra<br />
<br />
Cơ sở lập trình<br />
<br />
13<br />
<br />
7-2010<br />
<br />
Cơ sở lập trình<br />
<br />
14<br />
<br />
TM<br />
M<br />
<br />
_T<br />
a) Cấu trúc tuần tự:<br />
<br />
U<br />
<br />
Có 4 dạng cơ bản.<br />
Dạng thứ nhất:<br />
Đ<br />
<br />
CV2<br />
<br />
Dạng thứ hai:<br />
<br />
S<br />
<br />
CV1<br />
<br />
ĐK<br />
<br />
CV1<br />
<br />
S<br />
<br />
Đ<br />
<br />
ĐK<br />
<br />
CV1<br />
<br />
CV2<br />
<br />
CV2<br />
CV3<br />
<br />
4<br />
<br />
8/15/2017<br />
<br />
Dạng thứ ba:<br />
ĐK1<br />
<br />
Dạng thứ tư:<br />
<br />
S<br />
<br />
CV1<br />
<br />
S<br />
<br />
CV2<br />
<br />
Đ<br />
<br />
Đ<br />
ĐK2<br />
<br />
ĐK2<br />
<br />
D<br />
<br />
Đ<br />
<br />
S<br />
<br />
CVn<br />
<br />
Dạng thứ hai:<br />
BĐK=n1<br />
<br />
BĐK=n1<br />
<br />
CV2<br />
<br />
CV lặp<br />
S<br />
<br />
ĐK lặp<br />
<br />
BĐK=BĐK +n2<br />
<br />
S<br />
<br />
CV lặp<br />
<br />
Đ<br />
<br />
CVn<br />
<br />
Đ<br />
<br />
CVn+1<br />
<br />
CVn+2<br />
<br />
H<br />
<br />
CVn+1<br />
<br />
CV1<br />
<br />
Đ<br />
<br />
ĐKn<br />
<br />
ĐKn<br />
<br />
S<br />
<br />
Có 2 dạng cơ bản.<br />
Dạng thứ nhất:<br />
<br />
...<br />
<br />
Đ<br />
<br />
...<br />
<br />
ĐK1<br />
<br />
S<br />
<br />
ĐK lặp<br />
<br />
Đ<br />
<br />
BĐK=BĐK +n2<br />
<br />
S<br />
<br />
TM<br />
M<br />
<br />
_T<br />
BĐ<br />
<br />
Xây dựng sơ đồ khối mô tả thuật toán giải phương trình:<br />
ax + b=0<br />
Trong đó a,b là các số thực được nhập vào từ bàn phím<br />
<br />
Nhập a, b<br />
<br />
U<br />
a≠0<br />
<br />
S<br />
<br />
Đ<br />
<br />
x= -b/a<br />
<br />
In x<br />
<br />
b≠0<br />
<br />
S<br />
<br />
Đ<br />
In “PTVN”<br />
<br />
In “PTCVSN”<br />
<br />
19<br />
<br />
Cơ sở lập trình<br />
<br />
8/15/<br />
2017<br />
<br />
KT<br />
<br />
5<br />
<br />