Lập trình
C Ơ G
G Ớ Ệ
C
HƯ
Ơ
N
G
1:
G
i
Ớ
I THI
Ệ
U
7/15/2012
Chương 1: Mở ₫ầu
1.1 Giới thiệu
1
2
Giớithiệ h ề kỹ th ậtlậ tì h
1
.
2
Giới
thiệ
u c
h
ung v
ề
kỹ
th
u
ật
lậ
p
t
r
ì
n
h
1.3 Một số kỹ thuật lập trình cơ bản
1
4
Các bướcpháttriểnchương trình
1
.
4
Các
bước
phát
triển
chương
trình
1.5 Lịch sử ngôn ngữ C/C++
Chương 1: Mở đầu
2
1.1 Giới thiệu
3 tín chỉ = 45 tiết
Họctrênlớp+ thựchành
Điểm=Điểmgiữakỳ (30%)+Điểmthicuốikỳ(70%)
Khô
là
bà
it
ậ
ề hà
t
ừ
₫i
ể
i
ữ
kỳ
Khô
ng
là
m
bà
i
t
ậ
p v
ề
n
hà
:
t
r
ừ
₫i
ể
m g
i
ữ
a
kỳ
.
Thi: lậptrìnhtrêngiấy.
Mục
₫ích
môn
học
:
trang
bị
cho
sinh
viên
kiến
thức
cơ
Mục
₫ích
môn
học
:
trang
bị
cho
sinh
viên
kiến
thức
cơ
bảnvề C/C++, cấutrúcdữ liệu.
Chương 1: Mở đầu
3
Nguyên tắc học tập
Tích cực, chủ ₫ộng họcthường xuyên
ế
K
ế
thợpgiữanghegiảng, tham khảotàiliệuvàthực
hành.
Không nên học
thuộc
lòng
học
chay
Không
nên
học
thuộc
lòng
,
học
chay
Không nên mong ₫ợi nhiều vào ôn tập
Không nên dựa
dẫm
vào
các
bài
tập
mẫu
trong
sách
Không
nên
dựa
dẫm
vào
các
bài
tập
mẫu
trong
sách
Chương 1: Mở đầu
4
Công cụ học tập
Máy tính PC
Côn
g
c
ụ
l
ập
trình:
V
isual C++ 6.0
(
Visual Studio
g
ụ
ập
(
6.0), Visual C++ .NET, Borland C++ Builder
Nền ứng dụng: Win32 Console Application
Tài liệuthamkhảo:
1. GS PhạmVăn Ất: Kỹ thuậtlập trình C/C++
2
Stanley B
Lippman
Josée
Lajoie
:
C++ Primer
3
rd
Edition
2
.
Stanley
B
.
Lippman
,
Josée
Lajoie
:
C++
Primer
.
3
Edition
.
Addison-Wesley 1998.
3. Bjarne Stroustrup: The C++ Programming Language.
3
rd
Edition Addison
-
Wesley
1997
3
Edition
.
Addison
Wesley
1997
.
4. David Musser,…:C++ Programming with Standard
Template Library. 2
nd
Edition, Addison-Wesley 1998.
5
Bruce
Eckel
:
Thinking in C++
www bruceeckel com
2003
Chương 1: Mở đầu
5
.
Bruce
Eckel
:
Thinking
in
C++
.
www
.
bruceeckel
.
com
,
2003
.
5
1.2 Giới thiệu về kỹ thuật lập trình
Kỹ thuật lập trình là gì?
—Là kỹ thuật thực thi một giải pháp phần mềm
—
D
ự
a trên nền tảng một phương pháp luận
—Dùng một hoặc nhiều ngôn ngữ lập trình phù hợp với ₫ặc
thù của ứng dụng
Kỹ thuật lập trình= Kỹ thuật mã hóa?
Kỹ thuật lập trình = Tư tưởng thiết kế + Kỹ thuật mã hóa
=
Cấutrúcdữ liệu
+
Giảithuật
+
Ngôn ngữ lậptrình
Cấu
trúc
dữ
liệu
Giải
thuật
Ngôn
ngữ
lập
trình
Chương 1: Mở đầu
6
Thế nào là lập trình
Viết chương trình tính giai thừa của số 100?
Viếtmộtchương trình in ra
100
số nguyên tố ₫ầutiên?
Viết
một
chương
trình
in
ra
100
số
nguyên
tố
₫ầu
tiên?
Có phảilập trình không?
Viết một hàm tính giai thừa?
Viếtmộtch ơng trình in ra N số ng ên tố ₫ầ tiên?
Viết
một
ch
ư
ơng
trình
in
ra
N
số
ng
uy
ên
tố
₫ầ
u
tiên?
Có phảilập trình không?
Chương 1: Mở đầu
7
Thế nào là lập trình tốt?
Đúng yêu cầu của khách hàng
Tin cậy
Chương trình chạy ₫úng
—
Chương
trình
chạy
₫úng
—Chạy ít lỗi (số lượng lỗi ít, cường ₫ộ lỗi thấp)
—Mức ₫ộ lỗi nhẹ
H
iệ ất
H
iệ
u su
ất
—Chương trình nhỏ gọn, sử dụng ít bộ nhớ
—Tốc ₫ộ nhanh, sử dụng ít thời gian CPU
Hiệu quả:
—Thời gian lập trình ngắn,
—Khả năng bảo trì dễ dàng
—Giá trị sử dụng lại lớn
—Sử dụng ₫ơn giản, thân thiện
—Nhiều chức năng tiện ích
Chương 1: Mở đầu
8
Làm thế nào ₫ể lập trình tốt?
Học cách tư duy và phương pháp lập trình
—Tư duy toán học, tư duy logic, tư duy có cấu trúc, tư duy
hướng ₫ốitượng, tư duy tổng quát
hướng
₫ối
tượng,
tư
duy
tổng
quát
—Tìm hiểu về cấu trúc dữ liệu và giải thuật
Hiểu sâu về máy tính
T ơng tác giữaCPU ch ơng trình à bộ nhớ
—
T
ư
ơng
tác
giữa
CPU
,
ch
ư
ơng
trình
v
à
bộ
nhớ
—Cơ chế quản lý bộ nhớ
Nắm vững ngôn ngữ lập trình
—
Biết rõ các khả năng và hạn chế của ngôn ng
ữ
—Kỹ năng lập trình (₫ọc thông, viết thạo)
T
ự
r
è
n l
uyệ
n
t
r
ê
n m
áy
t
ính
ự èuyệ tê áyt
—Hiểu sâu ₫ược các ₫iểm nêu trên
—Rèn luyện kỹ năng lập trình
—
Thúc ₫ẩysángtạo
Chương 1: Mở đầu
Thúc
₫ẩy
sáng
tạo
9
Các nguyên tắc cơ bản
Trừu tượng hóa
Chắtlọcranhững yếutố quan trọng bỏ qua những chi tiết
Chắt
lọc
ra
những
yếu
tố
quan
trọng
,
bỏ
qua
những
chi
tiết
kém quan trọng
Đóng gói
Ch iấ àbả ệ ádữ liệ t ộti diệ
Ch
e g
iấ
u v
à
bả
o v
ệ
c
á
c
dữ
liệ
u quan
t
rọng qua m
ột
g
i
ao
diệ
n
có kiểm soát
Module hóa
Chi hỏ ₫ốit / ấ ₫ề thà h hiề dl hỏ ₫ể dễ
Chi
a n
hỏ
₫ối
t
ượng
/
v
ấ
n
₫ề
thà
n
h
n
hiề
u mo
d
u
l
e n
hỏ
₫ể
dễ
can thiệp và giải quyết
Phân cấp
Phân hạng hoặcsắpxếptrậttự ₫ốitượng theo các quan hệ
Phân
hạng
hoặc
sắp
xếp
trật
tự
₫ối
tượng
theo
các
quan
hệ
trên dưới
Chương 1: Mở đầu
10
1.3 Một số kỹ thuật lập trình cơ bản
Lập trình tuần tự
L ìhóấ ú
L
ập tr
ì
n
h
c
ó
c
ấ
u tr
ú
c
Lập trình module
Lậptrìnhhướng ₫ốitượng
Lập
trình
hướng
₫ối
tượng
Lập trình tổng quát
…
Chương 1: Mở đầu
11
Lập trình tuần tự (Sequential Programming)
Phương pháp cổ ₫iển nhất.
ồ
ỗ
ế
ế
Chương trình g
ồ
m một chu
ỗ
i các lệnh k
ế
ti
ế
p nhau.
Mức trừu tượng thấp
Đi
ề
khi
ể
h
tì hbằ álệ h ẽ há h
Đi
ề
u
khi
ể
nc
h
ương
t
r
ì
n
h
bằ
ng c
á
c
lệ
n
h
r
ẽ
n
há
n
h
,
lệnh nhảy, lệnh gọi chương trình con.
Ví dụ
ngôn ngữ ₫ặcthù
:
Ví
dụ
ngôn
ngữ
₫ặc
thù
:
— Ngôn ngữ máy
— ASSEMBLY
BASIC
—
BASIC
Chương 1: Mở đầu
12
Lập trình tuần tự: Ví dụ tính giai thừa
1: MOV AX, n
2
DEC
2
:
DEC
n
3: CMP n, 1
4
:
JMPI
4
:
JMPI
5: MUL AX, n
6
:
JMP
2
6
:
JMP
2
7: MOV n, AX
8: RET
Chương 1: Mở đầu
13
Lập trình có cấu trúc (structured programming)
Cấu trúc hóa dữ liệu (xây dựng kiểu dữ liệu) và cấu
trúc hóa chương trình ₫ể tránh các lệnh nhảy.
Phân tích và thiết kế theo trật tự từ trên xuống và
thực hiện từ dưới lên.
T
l
ậ
tì h ó ấ tú hỉ ử d á ấ tú
T
rong
l
ậ
p
t
r
ì
n
h
c
ó
c
ấ
u
t
r
ú
c c
hỉ
s
ử
d
ụng c
á
c c
ấ
u
t
r
ú
c
₫iều khiển rẽ nhánh ( if then else ), vòng lặp
(while ) và thoát ra (exit).
Ví dụ các ngôn ngữ ₫ặc thù:
— PASCAL, FORTRAN, C,
Chương 1: Mở đầu
14
Lập trình có cấu trúc: Ví dụ tính giai thừa (PASCAL)
function gthua(n: interger) : interger
var gt: interger
;
begin
gt := n;
w
hile (n >
1
)
d
o
begin
dec(n);
g
t :=
g
t
*
n;
g
g
end
gthua := gt;
end
end;
Chương 1: Mở đầu
15
Lập trình module (modular programming)
Lập trình module là một dạng cải tiến của lập trình
có cấu trúc. Chương trình ₫ược cấu trúc nghiêm ngặt
h
d ₫
ấ
l
dl
h
ơn,
d
ùng
₫
ơn vị c
ấ
u trúc
l
à mo
d
u
l
e.
Module:
Một ₫
ơ
nvị cấutrúc₫ộclập ₫ượcchuẩn hóa dùng ₫ể tạolập
—
Một
₫
ơ
n
vị
cấu
trúc
₫ộc
lập
,
₫ược
chuẩn
hóa
dùng
₫ể
tạo
lập
một hệ thống.
—Mỗi module bao gồm phần giao diện (mở) và phần thực hiện
(che giấu)
(che
giấu)
— Các module giao tiếp với nhau thông qua các giao diện ₫ược
₫ặc tả rất chính xác.
Vd b ể
V
í
d
ụ ngôn ngữ tiêu
b
i
ể
u:
— Modula-2, xây dựng trên cơ sở PASCAL, do Niclaus Wirth
thiết kế năm 1977.
Chương 1: Mở đầu
16
Lập trình hướng ₫ối tượng (object-oriented programming)
Xây dựng chương trình ứng dụng dựa trên các cấu
trúc dữ liệutrừutượng (lớp), các thể nghiệmcủacác
trúc
dữ
liệu
trừu
tượng
(lớp),
các
thể
nghiệm
của
các
cấu trúc ₫ó (₫ối tượng) và quan hệ giữa chúng (quan
hệ lớp, quan hệ ₫ối tượng).
Blbả
B
a nguyên
l
ý cơ
bả
n:
— Đóng gói dữ liệu (data encapsulation)
—
Dẫn xuất/thừa kế
(
subt
yp
in
g
/inheritance
)
(ypg )
— Đa hình/₫a xạ (polymorphism)
Ví dụ ngôn ngữ hỗ trợ tiêu biểu:
CC
—
C
++,
C
#
— Java,
—
Chương 1: Mở đầu
17
Ví dụ minh họa: Quản lý sinh viên (C++)
class Date {
int Day, Month, Year;
public:
void setDate(int, int, int);
};
class Student
{
string name;
Date dob;
int code;
public:
Student(string n, Date d, int c);
};
class StudentList {
Student* list;
public:
void addStudent(Student*);
Chương 1: Mở đầu
18
};
Lập trình tổng quát (generic programming)
Một tư duy lập trình mở, trên quan ₫iểm tổng quát
hóa tất cả những gì có thể nhằm ₫ưa ra một khuôn
ẫ iảihá
hhiề bài t á lậ tì h thể
m
ẫ
u g
iải
p
há
p c
h
o n
hiề
u
bài
t
o
á
n
lậ
p
t
r
ì
n
h
cụ
thể
.
Ưu ₫iểm:
—
Giảmtối ₫alượng mã nguồn
Giảm
tối
₫a
lượng
mã
nguồn
—Tăng nhiều lần giá trị sử dụng lại của phần mềm
—Có thể kết hợp tùy ý với các phương pháp luận khác
Tí h khả h ể
—
Tí
n
h
khả
c
h
uy
ể
n cao
Các hình thức tổng quát hóa:
—
Kiểudữ liệu
Kiểu
dữ
liệu
— Phép toán cơ bản
—Cấu trúc dữ liệu
Q ả lý bộ hớ
Chương 1: Mở đầu
—
Q
u
ả
n
lý
bộ
n
hớ
,
19
1.4 Các bước phát triển chương trình
Tạo mã nguồn chương trình
Biên dịch chương trình Æ mã ₫ích
Liên kết chương trình với các thư viện Æ chương
trình chạy ₫ược
Nạp và chạy chương trình
Chương 1: Mở đầu
20
Môi trường/công cụ phát triển
IDE (Integrated Development Environment)
—Hỗ trợ toàn bộ các bước phát triển chương trình
—
Ví dụ: MS Visual C++, Borland C++ (Builder), Visual studio
C++
Các công cụ tiêu biểu
Các
công
cụ
tiêu
biểu
— Trình soạn thảo (Editor)
— Trình biên dịch (Compiler)
T ì h liê kết(Li k )
—
T
r
ì
n
h
liê
n
kết
(Li
n
k
er
)
— Trình nạp (Loader)
— Trình gỡ rối (Debugger)
—
Trình quản lý dự án (Project Manager)
Chương 1: Mở đầu
21