Tải bản đầy đủ (.ppt) (18 trang)

TÀI LIỆU ĐẠI HỌC - godautre PPLT-chuong 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (109.04 KB, 18 trang )

PHƯƠNG PHÁP LẬP TRÌNH


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ôn ngữ lập trình phổ dụng
hiện nay
• Các phương pháp lập trình


Chương 1.
Một số khái niệm


1. 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.


2. 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ị.


Cá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)


3. 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à:
N

 N

2
sd ( x)   xi / N    xi / N 
i 1
 i 1



2


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)


Lập trình hàm
values 
functions 
function definition 
function application 
function composition

Program = set of function definitions
Computation = function application


Mô 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)


Cách suy diễn:

1a. 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 

Lập trình logic:
values 
relations 
logical inference

Program = set of relation definitions
Computation = constructive proof (inference from
definitions)


Mô 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



Lập trình mệnh lệnh
memory cells 
values 
commands

Program = sequence of commands
Computation = sequence of state changes




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)
vì các nhóm toán tử được trừu tượng hoá thành các thủ tục.


4. 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).




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
tượng, hay viết chương trình có các phần tử của cả hai mẫu hình.




4 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


5. Nhìn lại một số ngôn ngữ lập
trình đã được học






Assembler
Turbo –pascal
C/C++
VB, C#


Đặ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


Chương 2
LẬP TRÌNH HÀM



×