Giáo trình Kỹ thuật lập trình - Bài 1: Tổng quan - Trịnh Thành Trung
Viết mã nguồn chương trình (coding): dịch từ thiết kế thành
chương trình
▫ Cú pháp (Syntax): Quy tắc xác định cách viết các lệnh
▫ Chú thích (Comments): tài liệu chương trình (tài liệu trong)
▪ Lập trình nhanh (Extreme programming - XP): viết mã
nguồn và kiểm thử ngay sau khi các yêu cầu được xác định
49 trang |
Chia sẻ: huongthu9 | Lượt xem: 496 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Kỹ thuật lập trình - Bài 1: Tổng quan - Trịnh Thành Trung, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Trịnh Thành Trung (ThS)
trungtt@soict.hust.edu.vn
Bài 1
TỔNG QUAN
Nội dung
1. Khái niệm kỹ thuật lập trình
2. Tổng quan về lập trình
3. Mô thức lập trình
4. Chu trình phát triển phần mềm
1.
Khái niệm Kỹ thuật lập trình
Các khái niệm cơ bản về kỹ thuật lập trình
“ Kỹ thuật lập trình là kỹ thuật thực thi một giải
pháp phần mềm (cấu trúc
dữ liệu + giải thuật) dựa
trên nền tảng một phương
pháp luận (methodology)
và một hoặc nhiều ngôn
ngữ lập trình phù hợp với
yêu cầu đặc thù của ứng
dụng
Tổng quan
Kỹ thuật lập trình
▪ Kỹ thuật lập trình
Tư tưởng thiết kế + Kỹ thuật mã hóa
Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập
trình
▪ Kỹ thuật lập trình ≠ Phương pháp phân tích
& thiết kế(A&D)
Thế nào là
lập trình
▪Viết chương trình tính
giai thừa của 100
▪Viết chương trình in ra
100 số nguyên tố đầu
tiên
▪Giải bài toán cổ
«Vừa gà vừa chó, ba
mươi sáu con, bó lại cho
tròn, một trăm chân
chẵn»
▪Viết chương trình tính
giai thừa
▪Viết chương trình in ra
n số nguyên tố đầu tiên
▪Giải bài toán cổ
«Vừa gà vừa chó, vừa
vặn X con, bó lại cho
tròn, đủ Y chân chẵn»
Khái niệm
lập trình
Với mỗi bài toán (vấn đề) đặt ra, cần:
▪ Thiết kế giải thuật để 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
Thế nào là
lập trình tốt
Đúng / Chính xác
▪Thỏa mãn các nhiệm
vụ
▪Được khách hàng chấp
nhận
Ổn định
▪Ổn định
▪Ít lỗi hoặc lỗi nhẹ có
thể chấp nhận được
Khả năng nâng cấp
▪Dễ dàng chỉnh sửa
▪Dễ dàng nâng cấp
trong điều kiện bài
toán thay đổi
Tái sử dụng
▪Tái sử dụng hoặc kế
thừa cho bài toán khác
Thế nào là
lập trình tốt
Tương thích
▪Thích ứng tốt các môi
trường khác nhau
Hiệu suất
▪Chương trình nhỏ gọn,
ít bộ nhớ
▪Tốc độ nhanh, sử dụng
ít 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
Làm thế nào để
lập trình tốt
▪Tư duy và phương pháp lập trình
▪Hiểu sâu về máy tính
▪Nắm vững ngôn ngữ
▪Rèn luyện
2.
Tổng quan về lập trình
Hoạt động của chương trình máy tính và ngôn ngữ
lập trình
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).
▪ 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
Hoạt động của
chương trình máy tính
Ngôn ngữ
lập trình
Ngôn ngữ lập trình là một 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ó rất nhiều ngôn ngữ lập trình (khoảng hơn 1000), 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ế
Các thành phần cơ bản của
ngôn ngữ lập trình
Mô thức
▪ Language paradigm, nguyên tắc chung cơ bản của NNLT
Cú pháp
▪ Syntax, xác định cái gì là hợp lệ
Ngữ nghĩa
▪ Semantic, ghép các ký hiệu thành câu lệnh
Mã máy
Machine code
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).
Hợp 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 machine
code.
Ngôn ngữ lập
trình bậc cao
Thay vì dựa trên phần
cứng (machine-oriented)
cần tìm cơ chế dựa trên
vấn đề (problem-oriented)
để tạo chương trình.
Gần gũi với ngôn ngữ tự
nhiên hơn, thường sử dụng
các từ khóa giống tiếng
Anh
Tương lai
của ngôn ngữ lập trình?
AI neural
network
?
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
Thông dịch
interpreter
▪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
3.
Các mô thức lập trình
Programming paradigm
Các mô thức
lập trình
▪ Imperative paradigm
▪ Functional paradigm
▪ Logical paradigm
▪ Object-oriented paradigm
▪ Visual paradigm
▪ Parallel paradigm
▪ Concurrent paradigm
▪ Distributed paradigm
▪ Service-oriented paradigm
Mô thức lập trình
hướng mệnh lệnh
first do this and next do that
▪ Ý tưởng: Công nghệ số hóa phần cứng (by Von Neumann)
▪ Che giấu các lệnh trong chương trình con, coi chương
trình con là 1 lệnh
▫ Tương tự cách mô tả các công việc hàng ngày như là trình tự nấu
ăn hay sửa chữa xe cộ
Mô thức lập trình
hướng mệnh lệnh
Thành phần
▪ Declarative statements, các lệnh khai báo: cung cấp các
tên cho biến. Các biến này có thể thay đổi giá trị trong
quá trình thực hiện Chương trình.
▪ Assigment statements, lệnh gán: gán giá trị mới cho biến
▪ Program flow control statements, các lệnh điều khiển
cấu trúc chương trình: Xác định trình tự thực hiện các
lệnh trong chương trình.
▪ Module: chia chương trình thành các chương trình con:
Functions & Procedures
Mô thức lập trình
hướng chức năng
evaluate an expression and
use the resulting value for something
Nguồn gốc: lý thuyết hàm số đơn giản và rõ ràng hơn
mô thức lập trình hướng mệnh lệnh
Ngôn ngữ lập trình hướng chức năng miêu tả
Tập hợp các kiểu dữ liệu có cấu trúc
Tập hợp các hàm định nghĩa trên các kiểu dữ liệu đó
Mô thức lập trình
hướng chức năng
Thành phần
▪ Tập hợp các cấu trúc dữ liệu và các hàm liên quan
▪ Tập hợp các hàm cơ sở
▪ Tập hợp các toán tử
Đặc trưng cơ bản: module hóa chương trình
▫ Chức năng là biểu diễn của một biểu thức
▫ Giải thuật thực hiện theo từng bước
▫ Giá trị trả về là không thể biến đổi
▫ Không thể thay đổi CTDL của giá trị nhưng có thể sao chép
các thành phần tạo nên giá trị đó
▫ Tính toán bằng cách gọi các chức năng
Mô thức lập trình
hướng logic
answer a question via searching for a solution
▪ Ý tưởng: Tự động kiểm chứng trong trí tuệ nhân tạo
▪ Dựa trên các tiên đề - axioms, các quy luật suy diễn -
inference rules, và các truy vấn - queries
▪ Chương trình thực hiện từ việc tìm kiếm có hệ thống trong 1
tập các sự kiện, sử dụng 1 tập các luật để đưa ra kết luận
Mô thức lập trình
hướng đối tượng
send messages between objects to simulate a
temporal evolution of a set of real world phenomena
▪ Ý tưởng: Các khái niệm và mô hình tương tác trong thế
giới thực
▪ Dữ liệu cũng như các thao tác trên dữ liệu được bao gói
trong các đối tượng
▪ Cơ chế che giấu thông tin nội bộ được sử dụng để tránh
những tác động từ bên ngoài
▪ Các đối tượng tương tác với nhau qua việc truyền thông
điệp, đó là phép ẩn dụ cho việc thực hiện các thao tác trên 1
đối tượng
▪ Trong phần lớn các NNLT HĐT, đối tượng phân loại thành
các lớp
▫ Đối tượng trong các lớp có chung các thuộc tính, cho phép lập
trình trên lớp, thay vì lập trình trên từng đối tượng riêng lẻ
▫ Lớp đại diện cho các khái niệm còn đối tượng đại diện cho thể
hiện
▫ Lớp có tính kế thừa, cho phép mở rộng hay chuyên biệt hóa
Mô thức lập trình
hướng đối tượng
4.
Chu trình phát triển
phần mềm
Development
cycle
Bước 1: Phân tích yêu cầu
Analyse 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
Analyse requirements
Các công việc chính
▪ Thiết lập các requirements
▪ Gặp các nhà phân tích hệ thống và users
▪ Xác định input, output, processing, và các thành phần dữ
liệu
Ví dụ
IPO chart tính giá trị trung bình
▪ 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
Bước 2: Thiết kế giải pháp
Design solution
LTV bắt đầu với
thiết kế tổng thể
rồi đi đến
thiết kế chi tiết
Object-oriented
design
Structured
design, còn gọi là
top-down design
Hai hướng
tiếp cận
Phân chia
hệ thống
từng bước
thành các thủ
tục để giải
quyết vấn đề
Bước 2: Thiết kế giải pháp
Design solution
Thiết kế Sơ đồ phân cấp chức năng (hierarchy chart)
▪ Còn gọi là sơ đồ cấu trúc
▪ Trực quan hóa các module chương trình
Bước 2: Thiết kế giải pháp
Design solution
Thiết kế hướng đối tượng
▪ LTV đóng gói dữ liệu và các thủ tục xử lý
dữ liệu trong đối tượng (object)
▪ Các đối tượng được phân loại thành các
lớp (classes)
▪ Thiết kế các biểu đồ lớp thể hiện trực quan
các quan hệ phân cấp quan hệ của các lớp
Bước 2: Thiết kế giải pháp
Design solution
Thiết kế giải thuật
▪ 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ụ đó.
Cấu trúc tuần tự
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
Cấu trúc chọn
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
Cấu trúc lặp
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
Biểu đồ luồng
Flowchart
Mô tả giải thuật một cách
trực quan
Sử dụng ít ký hiệu để định
nghĩa giải thuật với độ
khó khác nhau
Ví dụ
flow chart
▪ Thiết kế biểu đồ
luồng chuyển từ số
nhị phân sang số
thập phân
Bước 3: Chứng thực thiết kế
Validate design
Kiểm tra độ chính xác của
chương trình
Logic error
các sai sót khi thiết kế
gây ra những kết quả
không chính xác
Test data
các dữ liệu thử nghiệm
giống như số liệu thực mà
chương trình sẽ thực hiện
LTV kiểm tra
tính đúng đắn bằng cách
tìm các lỗi logic (Logic
Error)
Structured Walkthrough
LTV mô tả logic
của thuật toán trong khi đội
lập trình duyệt theo logic
chương trình
Desk check
LTV dùng các dữ liệu
thử nghiệm (Test data) để
kiểm tra chương trình
Bước 4: Cài đặt thiết kế
Implement design
▪ Viết mã nguồn chương trình (coding): dịch từ thiết kế thành
chương trình
▫ Cú pháp (Syntax): Quy tắc xác định cách viết các lệnh
▫ Chú thích (Comments): tài liệu chương trình (tài liệu trong)
▪ Lập trình nhanh (Extreme programming - XP): viết mã
nguồn và kiểm thử ngay sau khi các yêu cầu được xác định
Bước 5: Kiểm thử giải pháp
Test solution
Đảm bảo chương trình chạy
thông và cho kết quả chính xác
Debugging - Tìm và sửa các lỗi
syntax và logic errors
Kiểm tra phiên bản
beta, giao cho Users
dùng thử và thu
thập phản hồi
Bước 6: Viết tài liệu cho giải pháp
Document solution
Rà soát lại program code -
loại bỏ các dead code, tức
các lệnh mà chương trình
không bao giờ gọi đến
Rà soát, hoàn thiện
documentation
Thanks!
Any questions?
Email me at trungtt@soict.hust.edu.vn
Presentation template by SlidesCarnival
Các file đính kèm theo tài liệu này:
- giao_trinh_ky_thuat_lap_trinh_bai_1_tong_quan_trinh_thanh_tr.pdf