Nội dung• Một số khái niệm • Nhìn qua về các mẫu hình lập trình và các ngôn ngữ đã học.. • Lập trình hàm và sự thể hiện trong .NET • Lập trình hướng đối tượng và sự thể hiện trong các ng
Trang 1PHƯƠNG PHÁP LẬP TRÌNH
Trang 2Nội dung
• Một số khái niệm
• Nhìn qua về các mẫu hình lập trình và các ngôn ngữ đã học.
• Lập trình hàm và sự thể hiện trong NET
• Lập trình hướng đối tượng và sự thể hiện trong các ngôn ngữ lập trình phổ dụng
hiện nay
• Các phương pháp lập trình
Trang 3Chương 1
Một số khái niệm
Trang 41 Một số định nghĩa
• Mô hình tính toán (computational model) là một tập của các giá trị
và toán tử.
• Sự tính tính (computation) là việc áp dụng một chuổi các toán tử
trên một giá trị để có một giá trị khác.
• Chương trình (program) là việc chỉ định một sự tính toán.
• Ngôn ngữ lập trình (programming language) là ký hiệu để viết các
chương trình.
• Cú pháp (syntax) của một ngôn ngữ lập trình xác định cấu trúc
hoặc dạng của chương trình.
• Ngữ nghĩa (semantics) của một ngôn ngữ lập trình mô tả quan hệ
giữa một chuowng trình và mô hình tính toán.
• Tính hữu dụng (Pragmatics) của một ngôn ngữ lập trình mô tả
các mức độ thành công mà một ngôn ngữ lập trình đáp ứng các mục tiêu của mô hình tính toán và tiện ích của nó đối với các lập trình viên
Trang 52 Dữ liệu
• Một chương trình có thẻ xem như là một hàm:
Output = Program(Input)
• Một cách nhìn khác, nó được xem như là một mô hình cho cả một miền của bài toán và thực hiện chương tình được xem như là sư mô phỏng của miền bài toán đó :
Program = Model of a problem domain
Execution of a program = simulation of the problem domain
• Dữ liệu (Data): Trong mọi trường hợp các đối tượng dữ lêệu được xem như là trung tâm của các chương trình
• Các giá trị của dữ liệu được phân thành 2 nhóm riêng biệt: giá trị đơn
(primitive) và hỗn hợp (compound)
• Các giá trị đơn (primitive values) thường là các giá trị số, logic, ký tự Liên hợp với các giá trị đơn thường là các toán tử (như các toán tử số học, toán tử logic )
• Các giá trị hỗ hợp (composite values) thường là các mảng (arrays), các bản ghi (records), các giá trị định nghĩa đệ quy (recursively defined values) Liên hợp với các giá trị hỗn hợp thường là các toán tử khởi tạo giá trị, các toán tử truy xuất mỗi thành phần của giá trị
Trang 6Các loại giá trị dữ liệu
• Các giá trị Boolean (biểu diễn giá trị logic, nói chỉ sử dụng 1 bit dữ liệu)
• Các giá trị nguyên (Integer) (miền giá trị phụ thuộc vào
số byte được sử dụng để lưu trữ)
• Các số tự nhiên (Natural number)
• Các số hữu tỷ (Rational number) (được biễu diễn bởi
cặp số nguyên)
• Các giá trị thực (Real number)
• Các giá trị ký tự (Character)
• Các giá trị liệt kê (Enumeration)
• Các kiểu dữ liệu trừu tượng (Abstract data types)
(thường sử dụng kiểu con trỏ để tham chiếu)
Trang 73 Các mô hình tính toán
Mô hình hàm (Functional Model)
• Mô hình hàm bao gồm một tập các giá trị, các hàm và các toán tử trên hàm.
• Một chương trình là một tập các định nghĩa của các hàm và sự tính toán là dựa trên hàm ứng dụng (giá trị của biểu thức)
• Ví dụ: Công thức cho độ lệch chuẩn là:
• Hàm này yêu cầu tính cả tổng các điểm và tổng bình phương của các điểm Người ta áp dụng hai hàm bậc cao là map và fold Hàm map áp dụng một hàm cho mỗi phần tử trong danh sách
và hàm fold làm giảm một danh sách bằng cách áp dụng một hàm cho phần tử đầu tiên của danh sách, kết quả của hàm là phần còn lại của danh sách Chương trình hàm viết như sau:
sd(xs) = sqrt(v)
where
n = length( xs )
v = fold( plus, map(sqr, xs ))/n - sqr( fold(plus, xs)/n)
N
i
N
i
i
i N x N x
x
sd
1
2 1
2 / / )
(
Trang 8Lập trình hàm
values functions function definition function application function composition
Program = set of function definitions Computation = function application
Trang 9Mô hình Logic (Logic Model)
• Bao gồm một tập các giá trị, các định nghĩa về quan hệ và các luật suy diễn
• Chương trình logic bao gồm các định nghĩa về các quan hệ và một sự tính toán là một phép thử
• Ví dụ: Chu vi của đường tròn:
circle(R, C) if Pi = 3.14 and C = 2 * pi * R
Biểu diễn quan hệ giữa R và C
Ví dụ thưòng được sử dụng để hiểu cách suy diễn trong lập trình logic là ví
dụ sau đây:
human(Socrates)
human(Penelope)
mortal(X) if human(X)
Để xác định xem Socrates hoặc Penelope có mortal, người ta xác định:
¬mortal(Y)
Trang 101a human(Socrates) Sự kiện (Fact) 1b human(Penelope) Sự kiện (Fact)
2 mortal(X) if human(X) Luật (Rule)
3 ¬mortal(Y) Giả sử (Assumption) 4a X = Y Từ 2 và 3
4b ¬human(Y) 5a Y = Socrates Từ 1 và 4 5b Y = Penelope
6 Mâu thuẩn 5a, 4b, và 1a; 5b, 4b và 1b
Cách suy diễn:
values
relations
logical inference
Program = set of relation definitions Computation = constructive proof (inference from definitions)
Lập trình logic:
Trang 11Mô hình mệnh lệnh (Imperative Model)
• Mô hình mệnh lệnh bao gồm một tập các giá trị chứa trạng thái và toán tử
ấn định để thay đổi trạng thái đó Trạng thái là tập các cặp tên – giá trị (name-value) của các hằng và biến
• Chương trình là chuổi các ấn định và sự tính toán là chuổi các trạng thái Mỗi bước trang tính toán là kết quả của một toán tử được ấn định
• Chuổi trạng thái:
S0-O0 S1 - Sn-1 -On-1 Sn
memory cells values
commands
Program = sequence of commands Computation = sequence of state changes
Lập trình mệnh lệnh
Trang 12• Ví dụ: Tính chu vi đường tròn:
constant pi = 3.14
input (R)
C := 2 * pi * R
Output (C)
• Việc tính toán yêu cầu xác định giá trị của R và pi từ một trạng thái và sau
đó thay đổi trạng thái C với một giá trị mới
constant pi = 3.14
R _|_, C = _|_, pi=3.14
input (R)
R x, C = _|_, pi=3.14
C := 2 * pi * R
R x, C = 2 × x × pi, pi=3.14
Output (C)
R x, C = 2 × x × pi, pi=3.14
( _|_ ký hiệu giá trị chưa được định nghĩa)
• Mô hình mệnh lệnh thường được gọi là mô hình thủ tục (procedural model)
Trang 134 Các mẫu hình lập trình
• Một mẫu hình lập trình (programming paradigm) là một kiểu lập trình mà
nó là kiểu có tính mẫu hình trong tiến hành về công nghệ phần mềm.
• Một mẫu hình lập trình cung cấp (và xác định) quan điểm mà người lập trình có về sự thực thi của chương trình
Ví dụ: trong lập trình hướng đối tượng, các lập trình viên có thể xem một
chương trình như là một tập họp của các đối tượng có tính tương tác, trong khi đó, trong lập trình hàm, một chương trình có thể được xem như là một chuỗi các đánh giá của các hàm vô hướng
• Các nhóm khác nhau trong công nghệ phần mềm đề xướng các phương
pháp khác nhau, các ngôn ngữ lập trình khác nhau (tức là các mẫu hình lập trình khác nhau)
Trang 14• Một số ngôn ngữ được thiết kế để hỗ trợ một mẫu hình đặc thù
Ví dụ:
- Java: hỗ trợ lập trình hướng đối tượng
- Haskell: hỗ trợ lập trình hàm
- Pascal: hỗ trợ lập trình cấu trúc
- Số ngôn ngữ khác lại hỗ trợ nhiều mẫu hình (Python,Common, Lisp)
• Một số mẫu hình lập trình cấm các thao tác mà chính ngôn ngữ đó có
(Chẳng hạn, lập trình cấu trúc không cho phép xử dụng lệnh goto)
• Quan hệ giữa các mẫu hình lập trình và các ngôn ngữ lập trình có thể phức tạp vì một ngôn ngữ có thể hỗ trợ nhiều mẫu hình lập trình
Ví dụ: C++ được thiết kế để hỗ trợ các phần tử của lập trình thủ tục, lập
trình hướng đối tượng
• Mặc dù vậy, những người thiết kế và những người lập trình quyết định làm thế nào để xây dựng một chương trình dùng các phần tử của mẫu hình
• Ví dụ: Người ta có thể viết một chương trình hoàn toàn theo kiểu lập trình thủ tục trong C++, cũng có thể viết chương trình hoàn toàn hướng đối
Trang 154 mẫu hình lập trình chính
• Lập trình hàm
• Lập trình logic
• Lập trình cấu trúc
• Lập trình huớng đối tượng
Trang 165 Nhìn lại một số ngôn ngữ lập
trình đã được học
• Assembler
• Turbo –pascal
• C/C++
• VB, C#
Trang 17Đặc điểm
• Khai báo kiểu dữ liệu
• Khai báo biến
• Viết các câu lệnh
• Một số đặc điểm khác biệt
Trang 18Chương 2 LẬP TRÌNH HÀM