Bài giảng Kỹ thuật lập trình - Chương 1: Những khái niệm cơ bản trong kỹ thuật lập trình - Vũ Thị Hương Giang
2/6/2012
CHƢƠNG I.
NHỮNG KHÁI NIỆM CƠ BẢN
TRONG KỸ THUẬT LẬP TRÌNH
I. Tổng quan về lập trình
II. Chu trình phát triển chương trình
III. Các mô thức lập trình
I. TỔNG QUAN VỀ LẬP TRÌNH
I. Tổng quan về lập trình
• Với mỗi bài toán, làm thế nào để:
– Thiết kế giải thuật nhằm giải quyết bài toán đó
– Cài đặt giải thuật bằng một chương trình máy tính
1
2/6/2012
I. Tổng quan về lập trình
• Chương trình máy tính (computer program): Tập
hợp các lệnh chỉ dẫn cho máy tính thực hiện
nhiệm vụ
• Ngôn ngữ lập trình (programming language):
Dùng để viết các lệnh, chỉ thị
I. TỔNG QUAN VỀ LẬP TRÌNH
1. Hoạt động của chương trình máy tính
2. Ngôn ngữ lập trình
1. Hoạt động của chương trình máy
tính
•
Chương trình máy tính được nạp vào bộ
nhớ chính (primary memory) như là một
tập các lệnh viết bằng ngôn ngữ mà
máy tính hiểu được, tức là một dãy tuần
tự các số nhị phân (binary digits).
•
•
Tại bất cứ một thời điểm nào, máy tính
sẽ ở một trạng thái (state) nào đó.
Đặc điểm cơ bản của trạng thái là con
trỏ lệnh (instruction pointer) trỏ tới lệnh
tiếp theo để thực hiện.
•
Thứ tự thực hiện các nhóm lệnh được gọi
là luồng điều khiển (flow of control).
2
2/6/2012
1. Hoạt động của chương trình máy
tính
•
Bắt đầu mỗi chu trình lệnh, CPU nhận lệnh từ bộ nhớ chính.
–
PC (Program Counter): thanh ghi giữ địa chỉ của lệnh sẽ được
nhận
–
Lệnh được nạp vào thanh ghi lệnh IR (Instruction Register)
•
Sau khi lệnh được nhận vào, nội dung PC tự động tăng để
trỏ sang lệnh kế tiếp
2. Ngôn ngữ lập trình (NNLT)
•
Một NNLT là 1 hệ thống các ký hiệu dùng để liên lạc,
trao đổi với máy tính nhằm thực thi một nhiệm vụ tính
toán.
•
Các thành phần căn bản của 1 NNLT:
Cú pháp (syntax): luật dùng để ghép các ký hiệu thành câu
lệnh, thành chương trình hợp lệ về mặt cấu trúc
–
–
Ngữ nghĩa (semantic): luật dùng để ghép các ký hiệu thành
câu lệnh, thành chương trình có ý nghĩa
•
Có rất nhiều NNLT, khoảng 1000 ngôn ngữ ( 60’s đã
có hơn 700) – phần lớn là các ngôn ngữ hàn lâm, có
mục đích riêng hay phạm vi ứng dụng hạn chế
–
–
–
Ngôn ngữ máy
Ngôn ngữ assembly
Các ngôn ngữ khác
2.1. Ngôn ngữ máy
•
Máy tính chỉ nhận các tín hiệu điện tử - có, không có -
tương ứng với các dòng bits.
•
•
Một chương trình ở dạng đó gọi là mã máy (machine code).
Ban đầu chúng ta phải dùng machine code để viết chương
trình:
Quá phức tạp, giải quyết các bài toán lớn là không tưởng
23fc 0000 0001 0000 0040
0cb9 0000 000a 0000 0040
6e0c
06b9 0000 0001 0000 0040
60e8
3
2/6/2012
2.2. Ngôn ngữ ASSEMBLY
•
Là bước đầu tiên của
việc xây dựng cơ chế
viết chương trình tiện
lợi hơn – thông qua các
ký hiệu, từ khóa và cả
mã máy.
Tất nhiên, để chạy
được các chương trình
này thì phải chuyển
thành thành machine
code.
movl
compare:
cmpl
#0x1,n
#oxa,n
cgt
end_of_loop
#0x1,n
•
•
acddl
bra
compare
end_of_loop:
Vẫn còn phức tạp, cải
thiện không đáng kể
2.3. Phân loại ngôn ngữ lập trình
- Theo thời gian
•
•
•
1940s: Ngôn ngữ máy tính
hiểu được
•
•
1980s: Giảm sự phức tạp
–
Object-oriented, functional
programming: Java
–
Machine code
1990s: Khai thác triệt để các
tài nguyên
1950s: Khai thác sức mạnh
của máy tính
–
Parallel, distributed computing:
–
Assembler code, Fortran v.1
occam
1960s: Tăng khả năng tính
toán
•
•
2000s: Phát triển các mô hình
tính toán mới
–
Cobol, Lisp, Algol 60, Basic,
PL/1
–
genetic programming
languages, DNA computing,
bio-computing, service-based
computing
•
1970s: Giảm sự phụ thuộc
vào máy, tăng tính đúng đắn
của CT
….
–
Structured Programming,
Modular Programming: Pascal,
Algol 68 and C.
2.3. Phân loại ngôn ngữ lập trình
- Theo mức độ trừu tượng
Low-level
language
High-level
language
Machine-independent
Machine-dependent
Thường không phụ thuộc phần
cứng, có thể chạy trên nhiều loại
máy tính khác nhau
Phụ thuộc phần cứng, chỉ chạy
trên một loại máy tính
Ví dụ ???
Ví dụ ????
High(er) level languages gần
với ngôn ngữ con người hơn:
Algol, Fortran, Pascal, Basic,
Ada, C, …
Machine và assembly languages là
ngôn ngữ bậc thấp
4
2/6/2012
2.3. Phân loại ngôn ngữ lập trình
- Theo mức độ trừu tượng
Level
Instructions
Memory handling
Low level
languages
Dạng bits – giống
các lệnh machine
Truy cập và cấp
phát trực tiếp bộ
nhớ
High level
languages
Dùng các biểu thức Truy cập và cấp
và các dòng điều
khiển xác định
phát bộ nhớ qua
các lệnh, toán tử -
operators
Very high level
languages
Hoàn toàn trừu
tượng, độc lập phần việc truy cập và tự
cứng
Che dấu hoàn toàn
động cấp phát bộ
nhớ
2.3. Phân loại ngôn ngữ lập trình
- Theo mục đích sử dụng
• Các ngôn ngữ lập trình cấp cao hơn ngôn ngữ
assembly và mã máy có thể được phân thành 2
nhóm:
– Declarative languages: ngôn ngữ lập trình dạng tường
thuật
•
Trả lời câu hỏi: Cần làm gì / Cần lưu trữ cái gì
•
Còn gọi là functional languages, logic languages
– Non-declarative langues: ngôn ngữ lập trình dạng phi
tường thuật
•
Trả lời câu hỏi: Làm như thế nào / Lưu trữ như thế nào
•
Còn gọi là imperative languages, procedural languages
2.4. Ngôn ngữ lập trình dạng mệnh
lệnh
Lập trình viên viết các
Sử dụng hàng loạt các
chỉ thị hƣớng dẫn cho
từ giống tiếng anh để
máy tính cai gì cần
viết các chỉ thị -
làm và làm nhƣ thế
instructions
nào
Các ngôn ngữ thông
Còn gọi là third-
dụng là BASIC, COBOL,
generation language
PASCAL, C,C++ và
(3GL)
JAVA
5
2/6/2012
2.4. Ngôn ngữ lập trình dạng mệnh
lệnh
• Trình dịch
(Compiler):
chương trình
thực hiện biên
dịch toàn bộ
chương trình
nguồn thành
mã máy trước
khi thực hiện
2.4. Ngôn ngữ lập trình dạng mệnh
lệnh
• Trình thông dịch
(Interpreter):
– là chương trình dịch và
thực hiện từng dòng
lệnh của chương trình
cùng lúc
– Dịch từ ngôn ngữ này
sang ngôn ngữ khác,
không tạo ra chương
trình dạng mã máy hay
assembly
2.4. Ngôn ngữ lập trình dạng mệnh
lệnh
• BASIC
– Được thiết kế để cho những người mới học, giúp họ tiếp
cận một cách đơn giản NNLT
– Beginner’s All-purpose Symbolic Instruction Code
6
2/6/2012
2.4. Ngôn ngữ lập trình dạng mệnh
lệnh
•
COBOL
–
Dùng cho các ứng dụng kinh doanh, thương mại
–
Các lệnh giống tiếng Anh làm cho code dễ đọc, viết và
chỉnh sửa
– Common Business-Oriented Language
2.4. Ngôn ngữ lập trình dạng mệnh
lệnh
•
C
–
Là NNLT rất mạnh, ban đầu được thiết kế để lập trình phần
mềm hệ thống
–
Yêu cầu những kỹ năng lập trình chuyên nghiệp
2.5. Ngôn ngữ lập trình hướng đối
tượng
Dùng để hỗ trợ thiết
kế HĐT
(object-oriented
design)
Lợi ích cơ bản là
khả năng tái sử
dụng
Event-driven—
Hướng sự kiện
Kiểm tra để trả lời
một tập các sự
kiện
C++ và Java
là các NN hoàn toàn
HĐT
(reuse existing
objects)
object-oriented
languages
Object là phần
tử chứa đựng
cả dữ liệu và
các thao tác
trên dữ liệu
Event là hành
động mà
chương trình
cần đáp ứng
7
2/6/2012
2.5. Ngôn ngữ lập trình hướng đối
tượng
•
C++
– Chứa đựng các
thành phần của C,
loại bỏ những nhược
điểm và thêm vào
những tính năng mới
để làm việc với
object-oriented
concepts
– Được dùng để phát
triển các Database
và
các ứng dụng Web
2.5. Ngôn ngữ lập trình hướng đối
tượng
•
Java
– Phát triển bởi Sun
Microsystems
– Giống C++ nhưng
dùng trình dịch
just-in-time (JIT)
để chuyển source
code thành
machine code
2.5. Ngôn ngữ lập trình hướng đối
tượng
• Visual programming language
Visual programming
environment (VPE) Cho
phép developers kéo và
thả các objects để xd
programs
Cung cấp giao diện trực
quan hoặc đồ họa để tạo
source code
Đôi khi được gọi là
fourth-generation
language
LTV viết và phát triển
chương trình trong các
segments
Thường được dùng trong
môi trường RAD (rapid
application development)
8
2/6/2012
2.5. Ngôn ngữ lập trình hướng đối
tượng
•
Visual Studio .NET 2003, 2005
–
–
–
Bước phát triển của visual programming languages và RAD tools
.NET là tập hợp các công nghệ cho phép program chạy trên Internet
Visual Basic .NET 2003-5 dùng để xây dưng các chương trình hướng đối tượng phức tạp
Step 1.
Step 2. LTV gán các
thuộc tính cho mỗi
object trên form.
LTV thiết kế
giao diện
người dùng -
user
interface.
Step 3. LTV
viết code để
xác định các
action cần
thực hiện đối
với các sự
kiện cần thiết.
Step 4. LTV kiểm
tra application.
2.5. Ngôn ngữ lập trình hướng đối
tượng
•
Delphi
– Là 1 công cụ lập trình trực quan mạnh
– Hợp với những ứng dụng chuyên nghiệp và Web lớn
2.5. Ngôn ngữ lập trình hướng đối
tượng
•
PowerBuilder
– Một công cụ lập trình trực quan mạnh khác
– Phù hợp với các ứng dụng Web-based hay các ứng dụng
lớn HĐT - object-oriented applications
9
2/6/2012
2.6. Ngôn ngữ lập trình dạng tường
thuật
Nonprocedural Language
Program Development
Tools
LTV viết các lệnh giống
tiếng anh hoac tương tác
với môi trường trực quan
để nhận được các dữ liệu
từ files hay database
Các chương trình thân thiện
với người sử dụng được
thiết kế để trợ giúp cả LTV
lẫn người sử dụng trong
việc tạo chương trình
2.6. Ngôn ngữ lập trình dạng tường
thuật
• RPG (Report Program Generator)
– Các ngôn ngữ LT phi thủ tục được dùng để tạo các báo
cáo, thiết lập các thao tác tính toán và cập nhật files
2.6. Ngôn ngữ lập trình dạng tường
thuật
•
NN thế hệ IV fourth-generation language (4GL)
–
Là các ngôn ngữ phi thủ tục cho phép truy cập dữ liệu trong csdl
–
NNLT 4GL thông dụng là SQL,Access, là các ngôn ngữ truy vấn .
Cho phép users quản trị dữ liệu trong csdl quan hệ relational
DBMS
10
2/6/2012
2.6. Ngôn ngữ lập trình dạng tường
thuật
• Application generator
– Là chương trình tạo source code hoặc machine code từ
các specification
– Bao gồm các chương trình tạo Report và tạo Form nhập
dữ liệu
2.6. Ngôn ngữ lập trình dạng tường
thuật
• Visual Basic for Applications (VBA)
– Macro programming language
•
Macro—Dãy các lệnh dùng để tự động hóa các công việc
2.6. Ngôn ngữ lập trình dạng tường
thuật
– HTML (Hypertext Markup Language)
– Dùng để tạo các trang Web
11
2/6/2012
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các trang web
• Các hiệu ứng đặc biệt và các phần tử tương tác
được thêm vào trang Web như thế nào ?
ActiveX
Script
Applet
Servlet
control
Là chương
trình nhỏ chạy
trên client
Thông dịch
chương trình
chạy trên client
thường chạy
trên client,
nhưng được
biên dịch
applet chạy
trên server
Processing
Counter
Image map
Hình ảnh
đồ họa trỏ
tới URL
form
Thu thập số
liệu từ
duyệt số
người thăm
Web site
visitors
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các trang web
•
Common gateway interface (CGI): Chuẩn giao tiếp xác định cách thức
Web server giao tiếp với các nguồn tài nguyên bên ngoài
CGI script /program – chương trình quản trị việc gửi và nhân dữ liệu qua CGI
Step 1. LTV lưu
các CGI program
trong 1 thư mục đặc
biệt trên Web server
Step 2. Webmaster tạo 1 liên kết
giữa CGI program và Web page. Khi
1 user hiện trang Web, CGI program
sẽ tự động chạy.
ví dụ /cgi-bin.
Step 3. Khi user khẳng định
submits 1 yêu cầu, nó sẽ được gửi cho
CGI program. CGI program kết nối
với database và lấy các ttin cho user.
Ví dụ user yêu cầu xem phim The
Wizard of Oz.
Step 4. CGI
Database
program nhận thông
tin từ database, két
hợp chúng dưới
dạng HTML, và gửi
cho trình duyệt Web
của User.
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các trang web
• Scripting language?
Rất dễ học và
dễ sử dụng
.
.
JavaScript—thêm các
nội dung động và các
phần tử tương tác vào
Web page
VBScript (Visual Basic,
Scripting Edition)—
Thêm tính thông minh
và tương tác vào Web
page
.
Perl (Practical Extraction
and Report Language)—
Có khả năng xử lý văn
bản rất mạnh
12
2/6/2012
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các trang web
Cho phép nhà phát
iều phần
tương tác
e
• Dynamic HTML (DHTML)
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các trang web
• XHTML, XML, và WML
XHTML
(Extensible HTML)
tạo khả năng Web sites có thể hiện dễ
Chứa các tính năng của HTML
và XML
ràng hơn trên các trình duyệt
XML
Server gửi toàn bộ bản ghi
cho client, tạo khả năng cho
client có thể thực hiện việc xử
lý mà không phải quay lại
server
(Extensible Markup Language)
Cho phép developers có thể tạo các
thẻ - tags – riêng của mình
WML
Sử dụng chuẩn wireless
application protocol (WAP), để
xác định cách thức các thiết bị
không dây liên lạc với Web
(Wireless Markup Language)
Cho phép developers có thể thiết kế
những trang cho các trình duyệt
chuyên dụng – mobil, …
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các trang web
• Web page authoring software?
Tạo các trang Web hoàn hảo mà không cần dùng
HTML
Tự tạo cárang HTML
Dreamweaver
MX
Flash
MX
rontPage
2003
13
2/6/2012
2.6. Ngôn ngữ lập trình dạng tường thuật
- Tạo các ứng dụng đa phương tiện
• Multimedia authoring software?
Kết hợp văn bản, đồ họa, hoạt
hình, âm thanh và video trong
1 bài trình diễn có tương tác
Sử dụng cho computer-based
training (CBT) và Web-based
training (WBT)
Software includes Toolbook,
Authorware, và Director
2.7. Các ngôn ngữ lập trình khác
ADA
ALGOL
APL
FORTH
PILOT
FORTRAN
HYPERTALK
LISP
MODULA-2
LOGO
PASCAL
PL/I
PROLOG
SMALLTALK
II. CHU TRÌNH PHÁT TRIỂN
CHƢƠNG TRÌNH
14
2/6/2012
Mô tả
Bước 1: phân tích yêu cầu
(analyze requirements)
• Phân tích hệ thống
– Dựa trên các hệ thống có thực (do con người vận hành
hoặc hệ thống tự động)
– Do các nhà phân tích hệ thống tiến hành, sẽ hiệu quả
hơn nếu phỏng vấn người dùng
– Mục tiêu:
•
Xác định xem hệ thống hiện tại đã làm được những gì, làm
như thế nào, còn tồn tại các vấn đề gì
Quyết định xem có nên thực hiện bước tiếp theo hay
không (Return-on-Investment – ROI estimation )
Bước 1: phân tích yêu cầu
(analyze requirements)
•
Thiết lập các yêu cầu của hệ thống:
–
Dựa trên sự trao đổi giữa nhà phân tích hệ thống và nhà
phân tích nghiệp vụ
–
–
Hình dung hệ thống mới: « look and feel »
Xác định
•
•
Cái gì cần thay đổi
Cần làm gì để có sự thay đổi đó (chưa quan tâm đến việc làm
như thế nào)
–
Mô tả những việc cần làm: xác định
•
•
đầu vào (input): dữ liệu nào, từ đâu đến
đầu ra (output): dữ liệu nào, « mềm » (dữ liệu xuất ra màn
hình) hay « cứng » (dữ liệu xuất ra các thiết bị khác)
•
xử lý (process): các hành động nào cần thực hiện để biến đầu
vào thành đầu ra
Vẽ biểu đồ IPO
Quyết định xem có nên thực hiện bước tiếp theo hay không
15
2/6/2012
Bước 1: phân tích yêu cầu
(analyze requirements)
•
Biểu đồ IPO:
– Input, Output: danh từ, phân biệt được các dữ liệu
– Process: động từ, chỉ 1 hành động duy nhất
•
Ví dụ: viết chương trình cho phép nhập vào 3 số, tính
tổng của chúng và tính giá trị trung bình của chúng.
Input
Process
Output
Bước 1: phân tích yêu cầu
(analyze requirements)
Input
value1, value 2,
value3
Process
Output
read the input values
value1, value 2,
value3
add the numbers together Total
Total, value number calculate average
display average
Average
display total
Input
Process
Output
(n1 + n2+ n3)
/ 3
3 numbers
read 3 numbers
compute average and total n1 + n2 + n3
print average and total
Bước 2 – thiết kế giải pháp
(design solution)
• Những việc cần làm trong bước thiết kế giải
pháp?
– Phân rã bài toán thành các bài toán nhỏ hơn
– Tìm giải pháp cho từng bài toán nhỏ, phát triển lên
thành giải thuật
– Kết hợp các giải pháp cho bài toán nhỏ thành giải pháp
tổng thể cho bài toán ban đầu
16
2/6/2012
Bước 2 – thiết kế giải pháp
(design solution)
• Những việc cần làm trong bước thiết kế giải
pháp?
Object-oriented
design
Structured
design, còn gọi là
top-down design
Chia để trị
LTV bắt đầu với
thiết kế tổng thể
rồi đi đến
thiết kế chi tiết
Bước 2 – thiết kế giải pháp
(design solution)
– Sơ đồ phân cấp chức năng (hierarchy chart) ?
•
Trực quan hóa các modules CT
•
Còn gọi là sơ đồ cấu trúc
Bước 2 – thiết kế giải pháp
(design solution)
• Object-oriented (OO) design là gì?
LTV đóng gói dữ liệu và các
thủ tục xử lý dữ liệu trong
1 object
.
Các objects được nhóm lại thành các
classes
.
Biểu đồ lớp thể hiện trực quan các quan
hệ phân cấp quan hệ của các classes
17
2/6/2012
Bước 2 – thiết kế giải pháp
(design solution)
• Máy tính không thể tự nghĩ ra hay tự quyết định
một sơ đồ hoạt động
• Máy tính chỉ có thể làm chính xác những gì được
yêu cầu, theo cách được yêu cầu, chứ không phải
làm những gì con người muốn máy tính làm
• Giải thuật là một tập các chỉ thị miêu tả cho máy
tính nhiệm vụ cần làm và thứ tự thực hiện các
nhiệm vụ đó.
Bước 2 – thiết kế giải pháp
(design solution)
• Giải pháp cho mọi chương trình máy tính, dù đơn
giản hay phức tạp, đều có thể được trình bày dựa
trên 3 cấu trúc cơ bản sau:
– Tuần tự
– Chọn
– Lặp
• Các cấu trúc này được gọi là các cấu trúc điều
khiển hay các cấu trúc logic, vì nó điều khiển
logic tính toán của chương trình máy tính
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc tuần tự
• Cấu trúc tuần tự trong một chương trình máy tính
chỉ thị cho máy tính xử lý lần lượt các lệnh
(statement) của chương trình theo thứ tự được
chỉ ra trong chương trình
18
2/6/2012
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc tuần tự
• Lệnh có thể là:
– Lệnh gán
– Lệnh vào / ra
– Lệnh ghép
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc chọn
• Dùng để ra quyết định, và sau đó thì thực hiện
một hành động dựa trên quyết định đó
• Phải chỉ ra được các hành động có khả năng được
thực hiện sau khi có quyết định
• Quyết định phụ thuộc vào các điều kiện
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc chọn
19
2/6/2012
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc chọn
•
Single input –
double output
•
Single input –
•
Single input –
single output
multiple output
condition
condition
value
TRUE
TRUE FALSE
v1
vn
S1
S1
S2
S1
…
Sn
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc lặp
Bước 2 – thiết kế giải pháp
(design solution)
Cấu trúc lặp
• Cho phép lập trình viên đặc tả một hành
động cần thực hiện lặp đi lặp lại và có điều kiện
• Khi được sử dụng trong một chương trình,
cấu trúc lặp chỉ thị cho máy tính thực hiện
lặp đi lặp lại một hoặc nhiều lệnh, cho đến khi
thỏa mãn điều kiện. Vào thời điểm đó, máy tính
có thể kết thúc vòng lặp
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 1: Những khái niệm cơ bản trong kỹ thuật lập trình - Vũ Thị Hương Giang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_ky_thuat_lap_trinh_chuong_1_nhung_khai_niem_co_ban.pdf

