Bài giảng Kỹ Thuật lập trình - Chương 1: Tổng quan kỹ thuật lập trình - Lương Mạnh Bá
object-oriented paradigm
Mô thức hướng đối tượng thu hút được sự quan tâm và nổi tiếng từ khoảng 20 năm nay. Lý do là khả năng hỗ trợ mạnh của tính bao gói và gộp nhóm logic của các khía cạnh lập trình. Những thuộc tính này rất quan trọng khi mà kích cỡ các chương trình ngày càng lớn.
Nguyên nhân cơ bản và sâu sắc dẫn đến thành công của Mô thức này là :
Cơ sở lý thuyết đỉnh cao của Mô thức. Một CT HĐT được xây dựng với những khái niệm, tư tưởng làm cơ sở, điều đó rất quan trọng và theo cách đó tất cả các kỹ thuật cần thiết cho lập trình trở thành thứ yếu.
Gủi thông điệp giữa các objects để mô phỏng sự tiến triển theo thời gian của hàng loạt các hiện tượng trong thế giới thực.
Các đặc trưng
Nguyên lý và ý tưởng : Lý thuyết về khái niệm - concepts, và các Mô thức 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 đóng gói trong bjects
Cơ chế che dấu thông tin được sử dụng để tránh những tác động từ bên ngoài object
Các Objects 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 object
Trong phần lớn các NNLT HĐT, objects được nhóm lại trong classes
Objects trong classes 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ẻ
Classes đại diện cho concepts còn objects đại diện cho hiện tượng
Classes được tổ chức trong cây phả hệ có kế thừa
Tính kế thừa cho phép mở rộng hay chuyên biệt hóa lớp
67 trang |
Chia sẻ: hachi492 | Ngày: 07/01/2022 | Lượt xem: 360 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Kỹ Thuật lập trình - Chương 1: Tổng quan kỹ thuật lập trình - Lương Mạnh Bá, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tổng quan về KTLT (3t) Programming technique
SE Dept
Lương Mạnh Bá balm@soict.hut.edu.vn
1
Programming Languages – classifications and Program Development
2
Nội dung
Next
Develop Web pages : HTML, scripting languages, DHTML, XML, WML, và các phần mềm tạo trang web
NNLT và
phân loại NNLT
NNLT thủ tục
NNLT trực quan (Visual programming languages)
NNLT hướng đối tượng (Object-oriented programming languages)
NNLT phi thủ tục và công cụ (Nonprocedural languages and tools)
Multimedia authoring programs
6 bước của chu trình phát triển phần mềm
Six steps in the program development cycle
Sự khác biệt giữa LT cấu trúc và LT hướng đối tượng
Những cấu trúc cơ sở dùng thiết kế chương trình
Last update 8-2010
3
SE-SoICT
Chương trình máy tính và ngôn ngữ lập trình Computer Programs and Programming Languages
Computer program ?
Next
Tập hợp các lệnh chỉ dẫn cho máy tính thực hiện nhiệm vụ
Programming language — Dùng để viết các lệnh , chỉ thị
Last update 8-2010
4
SE-SoICT
programming language - NNLT
Một NNLT là 1 hệ thống các ký hiệu dùng để liên lạc, trao đổi 1 nhiệm vụ / thuật toán với máy tính , làm cho nhiệm vụ được thực thi . Nhiệm vụ được thực thi gọi là một computation , tuân thủ một độ chính xác và những quy tắc nhất quán .
Với mỗi ngôn ngữ lập trình , ta cần nắm bắt , thấu hiểu những gì ?: Có 3 thành phần căn bản của bất cứ 1 NNLT nào .
Mô thức ngôn ngữ -Language paradigm là những nguyên tắc chung cơ bản , dùng bởi LTV để xây dựng chương trình .
Cú pháp - Syntax là cách để xác định những gì là hợp lệ trong cấu trúc các câu của ngôn ngữ ; Nắm được cú pháp là cách để đọc và tạo ra các câu trong các ngôn ngữ tự nhiên , như tiếng Việt , tiếng Anh và LT. Tuy nhiên điều đó không có nghĩa là nó giúp chúng ta hiểu hết ý nghĩa của câu văn .
Ngữ nghĩa – semantic s của 1 CT trong ngôn ngữ ấy . Rõ ràng , nếu không có ngữ nghĩa, 1 NNLT sẽ chỉ là 1 mớ các câu văn vô nghĩa ; như vậy ngữ nghĩa là 1 thành phần không thể thiếu của 1 ngôn ngữ .
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át triển bởi 1 tổ chức để phục vụ cho bản thân họ .
Last update 8-2010
5
SE-SoICT
Cont
Về cơ bản , chỉ có 4 mô thức chính :
Imperative (Procedural) Paradigm (Fortran, Pascal, C, Ada, ....)
Object-Oriented Paradigm ( SmallTalk , Java, C++)
Logic Paradigm (Prolog)
Functional Paradigm (Lisp, ML, Haskell)
Những tính chất cần có với các chương trình phần mềm là :
• Tính mềm dẻo scalability / Khả năng chỉnh sửa modifiability
• Khả năng tích hợp integrability / Khả năng tái sử dụng reusability
• Tính chuyển đổi , linh hoạt , độc lập phần cứng -portability
• Hiệu năng cao -performance
• Độ tin cậy - reliability
• Dễ xây dựng
• Rõ ràng , dễ hiểu
• Ngắn gọn , xúc tích
Last update 8-2010
6
SE-SoICT
HOẠT ĐỘNG CỦA 1 CHƯƠNG TRÌNH
Computer program được nạp vào BN chính như là 1 tập các lệnh bằng ngôn ngữ máy , 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 , computer 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 mã máy được gọi là luồng điều khiển flow of control .
Last update 8-2010
7
SE-SoICT
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.
1 CT ở dạng đó gọi là machine code.
Ban đầu chúng ta phải dùng machine code để viết CT:
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
Last update 8-2010
8
SE-SoICT
ASSEMBLY LANGUAGE
NN 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 dịch (assembled) thành machine code.
Vẫn còn phức tạp , cải thiện không đáng kể
movl #0x1,n
compare:
cmpl # oxa,n
cgt end_of_loop
acddl #0x1,n
bra compare
end_of_loop:
Last update 8-2010
9
SE-SoICT
HIGH LEVEL LANGUAGE
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 .
Chính vì thế high(er ) level languages – là các ngôn ngữ lập trình gần với ngôn ngữ tự nhiên hơn – dùng các từ khóa giống tiếng anh – đã được xây dựng như : Algol , Fortran, Pascal, Basic, Ada , C,
Last update 8-2010
10
SE-SoICT
PHÂN LOẠI THEO THỜI GIAN
1940s : Machine code
1950s Khai thác sức mạnh của MT: Assembler code, Autocodes , first version of Fortran
1960s Tăng khả năng tính toán : Cobol, Lisp, Algol 60, Basic, PL/1 --- nhưng vẫn dùng phong cách lập trình cơ bản của assembly language.
1970s Bắt đầu cuộc khủng hoảng phần mềm “software crisis”:
Giảm sự phụ thuộc vào máy – Tính chuyển đổi .
Tăng sự đúng đắn của CT -Structured Programming, modular programming và information hiding.
Ví dụ : Pascal, Algol 68 and C.
Last update 8-2010
11
SE-SoICT
Continue
1980s Giảm sự phức tạp – object orientation, functional programming.
1990s Khai thác phần cứng song song và phân tán (parallel và distributed) làm cho chương trình chạy nhanh hơn , kết quả là hàng loạt ngôn ngữ mở rộng khả năng lập trình parallel cũng như các NNLT chuyên parallel như occam được xây dựng.
2000s Genetic programming languages, DNA computing, bio-computing?
Trong tương lai : Ngôn ngữ LT lượng tử : Quantium ?
Last update 8-2010
12
SE-SoICT
SOFTWARE CRISIS
Khái niệm software crisis bao gồm hàng loạt vấn đề nảy sinh trong việc phát triển phần mềm trong những năm 1960s khi muốn xây dựng những hệ thống phần mềm lớn trên cơ sở các kỹ thuật phát triễn thời đó .
Kết quả :
1. Thời gian và giá thành tăng vọt tới mức không thể chấp nhận nổi .
2. Năng suất của các LTV không đáp ứng yêu cầu .
3. Thiếu các LTV
4. Chất lượng phần mềm bị giảm , thấp .
Để giải quyết các vấn đề kể trên, chuyên ngành software engineering (SE) ra đời .
Last update 8-2010
13
SE-SoICT
CÁC THẾ HỆ NNLT LANGUAGE GENERATIONS
Generation
Classification
1st
Machine languages
2nd
Assembly languages
3rd
Procedural languages
4th
Application languages (4GLs)
5th
AI techniques, inference languages
6th
Neural networks (?), others.
Last update 8-2010
14
SE-SoICT
Computer Programs and Programming Languages
L ow-level languages và high-level languages?
p. 664
Next
High-level language
Low-levellanguage
Machine-dependent Phụ thuộc phần cứng , chỉ chạy trên một loại máy tính
M achine-independent 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
Machine và assembly languages là ngôn ngữ bậc thấp low-level
Last update 8-2010
15
SE-SoICT
PHÂN LOẠI THEO MỨC ĐỘ TRỪU TƯỢNG
Next
Level
Instructions
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ớ
Memory handling
High level
languages
Dùng các biểu thức và các dòng điều khiển xác định
Truy cập và cấp phát bộ nhớ qua các lệnh , toán tử - operators
Very high level languages
Che dấu hoàn toàn việc truy cập và tự động cấp phát bộ nhớ
Hoàn toàn trừu tượng , độc lập phần cứng
Last update 8-2010
16
SE-SoICT
DECLARATIVE và NON-DECLARATIVE PROGRAMMING
p. 666 Fig. 13-3
Next
Các ngôn ngữ có thể chia thành 2 nhóm :
Nhóm 1 gọi là Declarative ( tường thuật - chính là functional và logic languages).
Nhóm 2 gọi là Non-declarative hay procedural ( tức là các ngôn ngữ thủ tục, mệnh lệnh ).
Last update 8-2010
17
SE-SoICT
Procedural Languages – Ngôn ngữ thủ tục
Procedural language ?
p. 666
Next
Các ngôn ngữ thông dụng: BASIC, COBOL, PASCAL, C,C++ và JAVA
Sử dụng hàng loạt các từ giống tiếng Anh để viết các chỉ thị - instructions
Còn gọi là third-generation language (3GL)
Lập trình viên viết các chỉ thị hướng dẫn cho máy tính cái gì cần làm và làm như thế nào?
Click to view animation
Last update 8-2010
18
SE-SoICT
Procedural Languages
Trình dịch - C ompiler ?
Next
Là chương trình thực hiện biên dịch toàn bộ các lệnh của chương trình nguồn thành mã máy trước khi thực hiện
Last update 8-2010
19
SE-SoICT
Procedural Languages
Thông dịch - I nterpreter ?
p. 667 Fig. 13-5
Next
Là chương trình dịch và thực hiện từng dòng lệnh của chương trình.
Không tạo ra object program
Last update 8-2010
20
SE-SoICT
Procedural Languages
BASIC ?
p. 668 Fig. 13-6
Next
Được thiết kế để cho những người mới học tiếp cận một cách đơn giản NNLT
B eginner’s A ll-purpose S ymbolic I nstruction C ode
Last update 8-2010
21
SE-SoICT
Procedural Languages
COBOL ?
Next
Dùng cho các ứng dụng trong kinh tế
Các lệnh giống tiếng anh làm cho code dễ đọc , viết và chỉnh sửa
CO mmon B usiness- O riented L anguage
Last update 8-2010
22
SE-SoICT
Procedural Languages
C ?
Next
Là NNLT rất mạnh , ban đầu được thiết kế để lập trình hệ thống - write system software
Yêu cầu những kỹ năng lập trình chuyên nghiệp
Last update 8-2010
23
SE-SoICT
Object-Oriented Programming Languages
Object-oriented programming (OOP) language ?
Next
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 -reuse existing objects
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
object-oriented languages
Object là phần tử chứa đựng cả dữ liệu và các thủ tục xử lý dữ liệu
Event là hành động mà chương trình cần đáp ứng
Last update 8-2010
24
SE-SoICT
Object-Oriented Programming Languages
C++ ?
Next
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
Last update 8-2010
25
SE-SoICT
Object-Oriented Programming Languages
Java ?
Next
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
Last update 8-2010
26
SE-SoICT
Object-Oriented Programming Languages
Visual programming language ?
Next
LTV viết và phát triển chương trình trong các segments
Visual programming environment (VPE) Cho phép developers kéo và thả các objects để xd programs
Thường được dùng trong môi trường RAD (rapid application development)
Đôi khi được gọi là fifth-generation language
Cung cấp giao diện trực quan hoặc đồ họa để tạo source code
Last update 8-2010
27
SE-SoICT
Object-Oriented Programming Languages
Visual Studio .NET 2003, 2005 ?
Next
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 để xd các ct hướng đối tượng phức tạp
Step 1. LTV thiết kế giao diện người dùng - user interface.
Step 2. LTV gán các thuộc tính cho mỗi object trên form.
Step 4. LTV kiểm tra application.
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 .
Last update 8-2010
28
SE-SoICT
Object-Oriented Programming Languages
Delphi ?
Next
Là 1 công cụ lập trình trực qua mạnh
Hợp với những ứng dụng chuyên nghiệp và Web lớn
Last update 8-2010
29
SE-SoICT
Object-Oriented Programming Languages
PowerBuilder ?
Next
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
Last update 8-2010
30
SE-SoICT
Nonprocedural Languages and Program Development Tools
nonprocedural languages và program development tools ?
p. 674
Next
Nonprocedural Language LTV viết các lệnh giống tiếng anh hoặc 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
Program Development Tools 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
Last update 8-2010
31
SE-SoICT
Nonprocedural Languages and Program Development Tools
RPG (Report Program Generator)?
p. 674 Fig. 13-14
Next
Các ngôn ngữ LT phi thủ tụ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
Last update 8-2010
32
SE-SoICT
Nonprocedural Languages and Program Development Tools
NN thế hệ IV - fourth generation language ( 4GL ) ?
p. 675 Fig. 13-15
Next
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 ND quản trị dữ liệu trong CSDL quan hệ.
Last update 8-2010
33
SE-SoICT
Nonprocedural Languages and Program Development Tools
Application generator ?
Next
Là chương trình tạo mã nguồn hoặc mã máy từ các đặc tả.
Bao gồm các chương trình tạo Report , form, và tạo menu
Form cung cấp các vùng để vào dữ liệu
Last update 8-2010
34
SE-SoICT
Nonprocedural Languages and Program Development Tools
Visual Basic for Applications (VBA)?
Next
Macro programming language
Macro — Dãy các lệnh dùng để tự động hóa các công việc
Last update 8-2010
35
SE-SoICT
Web Page Development
HTML (Hypertext Markup Language)?
Next
Dùng để tạo các trang Web
Last update 8-2010
36
SE-SoICT
Web Page Development
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 ?
p. 679
Next
Counter duyệt số người thăm Web site
Image map Hình ảnh đồ họa trỏ tới URL
Script Thông dịch chương trình chạy trên client
Applet thường chạy trên client, nhưng được biên dịch
Processing form Thu thập số liệu từ visitors
Servlet applet chạy trên server
ActiveX control Là chương trình nhỏ chạy trên client
Last update 8-2010
37
SE-SoICT
Web Page Development
Common gateway interface (CGI)?
p. 680 Fig. 3-19
Next
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
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 1. LTV lưu các CGI program trong 1 thư mục đặc biệt trên Web server ví dụ / cgi -bin.
Database
CGI script —program quản trị việc gửi và nhân dữ liệu qua CGI
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ẽ automatically starts.
Step 4. CGI 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.
Last update 8-2010
38
SE-SoICT
Web Page Development
Scripting language ?
Next
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
Last update 8-2010
39
SE-SoICT
Web Page Development
Dynamic HTML (DHTML) ?
p. 682 Fig. 13-21
Next
Cho phép nhà phát triển thêm nhiều phần tử đồ họa và tương tác vào Web page
Last update 8-2010
40
SE-SoICT
Web Page Development
XHTML , XML , và WML ?
p. 682
Next
XHTML (E x tensible HTML ) tạo khả năng Web sites có thể hiện dễ ràng hơn trên các trình duyệt
XML (E x tensible M arkup L anguage) Cho phép developers có thể tạo các thẻ - tags – riêng của mình
WML ( W ireless M arkup L anguage) Cho phép developers có thể thiết kế những trang cho các trình duyệt chuyên dụng – mobil ,
Chứa các tính năng của HTML và XML
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
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
Last update 8-2010
41
SE-SoICT
FrontPage2003
FlashMX
Web Page Development
Web page authoring software ?
p. 683
Next
Tạo các trang Web hoàn hảo mà không cần dùng HTML
Tự tạo các trang HTML
Dreamweaver MX
Last update 8-2010
42
SE-SoICT
Multimedia Program Development
Multimedia authoring software ?
p. 684 Fig. 13-22
Next
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
Last update 8-2010
43
SE-SoICT
Các Programming Languages khác
p. 685
Next
ALGOL
ADA
APL
FORTH
LISP
HYPERTALK
FORTRAN
LOGO
PASCAL
MODULA-2
PILOT
SMALLTALK
PROLOG
PL/I
Last update 8-2010
44
SE-SoICT
Chu trình phát triển chương trình (PM)
Program development cycle ?
p. 686 Fig. 13-24
Next
Là các bước mà LTV dùng để xây dựng CT
Programming team — Nhóm LTV cùng xây dựng chương trình
Last update 8-2010
45
SE-SoICT
Step 1 — Analyze Requirements
Các việc cần làm khi phân tích yêu cầu ?
p. 687 Fig. 13-25
Next
Khảo sát và Thiết lập các yêu cầu
XD các mô hình phân tích
Xác định đầu vào, đầu ra và các xử lý cùng các thành phần dữ liệu.
IPO chart— Xác định đầu vào , đầu ra và các bước xử lý
Last update 8-2010
46
SE-SoICT
LTV bắt đầu với
thiết kế Tổng thể rồi đi đến thiết kế chi tiết
Step 2 — Design Solution
Những việc cần làm trong bước thiết kế giải pháp ?
p. 688
Next
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 đề
Last update 8-2010
47
SE-SoICT
Step 2 — Design Solution
Sơ đồ phân cấp chức năng - hierarchy chart ?
p. 688 Fig. 13-26
Next
Trực quan hóa các modules chương trình
Còn gọi là sơ đồ cấu trúc
Last update 8-2010
48
SE-SoICT
Step 2 — Design Solution
Object-oriented (OO) design là gì ?
p. 689 Fig. 13-27
Next
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
Last update 8-2010
49
SE-SoICT
Step 2 — Design Solution
Cấu trúc tuyển chọn
p. 690 Fig. 13-29
Next
Chỉ ra hành động tương ứng điều kiện
2 kiểu
Case control structure
If-then-else control structure — dựa theo 2 khả năng : true or false
Last update 8-2010
50
SE-SoICT
Step 2 — Design Solution
Case control structure
p. 690 Fig. 13-30
Next
Dựa theo 3 hoặc nhiều hơn các khả năng
Last update 8-2010
51
SE-SoICT
Step 2 — Design Solution
Cấu trúc lặp
p. 691 Figs. 13-31–13-32
Next
Cho phép CT thực hiện 1 hay nhiều hành động lặp đi lặp lại.
Do-while control structure — lặp khi điều kiện còn đúng
Do-until control structure — Lặp cho đến khi điều kiện đúng
Do-While Control Structure
Do-Until Control Structure
Last update 8-2010
52
SE-SoICT
Step 3 — Validate Design
Những điều cần làm trong giai đoạn này ?
p. 694
Next
Kiểm tra
độ chính xác
của program
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à CT sẽ thực hiện
LTV kiểm tra logic cho tính đúng đắn và thử tìm các lỗi logic
Desk check LTV dùng các dữ liệu thử nghiệm để kiểm tra chương trình
Structured walkthrough LTV mô tả logic của thuật toán trong khi programming team duyệt theo logic chương trình
Last update 8-2010
53
SE-SoICT
Step 4 — Implement Design
implementation ?
p. 695 Fig. 13-37
Next
Viết code : dịch từ thiết kế thành program
Syntax — Quy tắc xác định cách viết các lệnh
Comments —program documentation
Extreme programming (XP)— coding và testing ngay sau khi các yêu cầu được xác định
Last update 8-2010
54
SE-SoICT
Step 5 — Test Solution
Những việc cần làm ?
p. 696
Next
Đảm bảo CT chạy thông và cho kết qủa 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
Last update 8-2010
55
SE-SoICT
Step 6 — Document Solution
Là bước không kém quan trọng
p. 698
Next
2 hoạt động
Rà soát lại program code— loại bỏ các dead code , tức các lệnh mà CT không bao giờ gọi đến
Rà soát , hoàn thiện Tài liệu
Last update 8-2010
56
SE-SoICT
Tóm lại
Có hàng loạt các NNLT dùng để viết computer programs
Chu trình phát triển chương trình và các công cụ được dùng để làm cho quá trình này hiệu quả hơn
4 Mô thức lập trình cơ bản
Last update 8-2010
57
SE-SoICT
Bàn thêm về các Mô thức lập trình
· Programming paradigm (Mô thức lập trình)
· Là 1 khuôn mẫu - pattern dùng như một Mô thức lập trình máy tính
. Là 1 Mô thức cho 1 lớp các NNLT có cùng những đặc trưng cơ bản
· Programming technique (Kỹ thuật lập trình)
· Liên quan đến các ý tưởng thuật toán để giải quyết một lớp vấn đề tương ứng
· Ví dụ : 'Divide and conquer' và 'program development by stepwise refinement '
· Programming style (Phong cách lập trình)
. Là cách chúng ta trình bày trong 1 computer program
· Phong cách tốt giúp cho chương trình dễ hiểu , dễ đọc , dễ kiểm tra -> dễ bảo trì , cập nhật , gỡ rối , tránh bị lỗi
· Programming culture (Văn hóa lập trình)
· Tổng hợp các hành vi lập trình , thường liên quan đến các dòng ngôn ngữ lập trình
· Là tổng thể của Mô thức chính , phong cách và kỹ thuật lập trình
. Là nhân cách đạo đức trong lập trình cũng như khai thác các CT
Last update 8-2010
58
SE-SoICT
Bốn Mô thức lập trình cơ bản
Bốn Mô thức lập trình cơ bản là :
· Imperative paradigm
· Functional paradigm
· Logical paradigm
· Object-oriented paradigm
Ngoài ra :
· Visual paradigm
· Parallel paradigms
Một vài Mô thức mới khác :
Concurrent programming
Distributed programming
Extreme programming
Tuy nhiên chúng ta chỉ tập trung vào Mô thức 1 và sơ qua về 3 Mô thức cơ bản còn lại
Last update 8-2010
59
SE-SoICT
Imperative paradigm
Với Mô thức này ý tưởng cơ bản là các lệnh gây ảnh hưởng đáng kể đến trạng thái chương trình .
Mỗi imperative program bao gồm:
Declarative statements – các lệnh khai báonhằm định nghĩa các biến: tên và kiểu dữ liệu của 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
Last update 8-2010
60
SE-SoICT
Imperative paradigm
Các đặc trưng chính của Mô thức này:
Về mặt nguyên lý và ý tưởng : Công nghệ phần cứng và ý tưởng của Von Neumann
Các bước tính toán , thực hiện với mục đích kiểm soát cấu trúc điều khiển· Chúng ta gọi các bước là các mệnh lệnh - commands
Tương ứng với 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ộ
Những lệnh đặc trưng của imperative languages là : Assignment, IO, procedure calls
Các ngôn ngữ đại diện : Fortran, Algol , Pascal, Basic, C
Các thủ tục và hàm chính là hình ảnh về sự trừu tượng : che dấu các lệnh trong CT con, có thể coi CT con là 1 lệnh
Còn gọi là "Procedural programming"
Last update 8-2010
61
SE-SoICT
Functional paradigm
Functional programming trên nhiều khía cạnh là đơn giản và rõ ràng hơn imperative. Vì nguồn gốc của nó là toán học thuần túy : Lý thuyết hàm . Trong khi imperative paradigm bắt nguồn từ ý tưởng công nghệ cơ bản là digital computer, phức tạp hơn , kém rõ ràng hơn lý thuyết toán học về hàm .
Functional programming dựa trên nền tảng khái niệm toán học về hàm và 1 NNLT hàm bao gồm ít nhất những thành phần sau :
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ở - Primitive Functions.
Tập hợp các toán tử .
Last update 8-2010
62
SE-SoICT
Functional paradigm
Các đặc trưng cơ bản :
Về mặt nguyên lý và ý tưởng : Toán học và lý thuyết hàm
Các giá trị tạo được là không thể biến đổi non-mutable
Không thể thay đổi các yếu tố của giá trị hợp thành
Giống như phương thuốc , có thể tạo một phiên bản của các giá trị hợp thành : một giá trị trung gian
Trừu tượng 1 biểu thức đơn thành 1 hàm và hàm có thể tính toán như là 1 biểu thức
Các hàm là những giá trị đầu tiên
Hàm là dữ liệu hoàn chỉnh , giống như số , danh sách , ...
Thích hợp với xu hướng tính toán theo yêu cầu
Mở ra những khả năng mới
Last update 8-2010
63
SE-SoICT
Ví dụ về Functional programming
function GT(n : longint ) : longint ;
var x : longint ;
Begin
x:=1;
while (n > 0) do begin
x := x * n;
n := n 1;
end;
GT := x;
End;
Function GT(n : longint ) : Longint ;
Begin
if n=1 then GT :=1
else GT := n* GT(n-1);
End;
Với functional paradigm, ta có thể viết
GT n =
if n = 1 then 1
else n * GT(n 1);
Last update 8-2010
64
SE-SoICT
Logic paradigm
Mô thức lập trình logic hoàn toàn khác với các Mô thức còn lại .
Mô thức này đặc biệt phù hợp với những lĩnh vực liên quan đến việc rút ra những kiến thức từ những sự kiện và quan hệ cơ bản – lĩnh vực trí tuệ nhân tạo . Có vẻ như Mô thức này không gắn với những lĩnh vực tính toán nói chung .
Trả lời 1 câu hỏi thông qua việc tìm các giải pháp
Các đặc trưng :
Về nguyên tắc và ý 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.
Last update 8-2010
65
SE-SoICT
object-oriented paradigm
Mô thức hướng đối tượng thu hút được sự quan tâm và nổi tiếng từ khoảng 20 năm nay. Lý do là khả năng hỗ trợ mạnh của tính bao gói và gộp nhóm logic của các khía cạnh lập trình . Những thuộc tính này rất quan trọng khi mà kích cỡ các chương trình ngày càng lớn .
Nguyên nhân cơ bản và sâu sắc dẫn đến thành công của Mô thức này là :
Cơ sở lý thuyết đỉnh cao của Mô thức. Một CT HĐT được xây dựng với những khái niệm , tư tưởng làm cơ sở , điều đó rất quan trọng và theo cách đó tất cả các kỹ thuật cần thiết cho lập trình trở thành thứ yếu .
Gủi thông điệp giữa các objects để mô phỏng sự tiến triển theo thời gian của hàng loạt các hiện tượng trong thế giới thực.
Last update 8-2010
66
SE-SoICT
object-oriented paradigm
Các đặc trưng
Nguyên lý và ý tưởng : Lý thuyết về khái niệm - concepts , và các Mô thức 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 đóng gói trong bjects
Cơ chế che dấu thông tin được sử dụng để tránh những tác động từ bên ngoài object
Các Objects 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 object
Trong phần lớn các NNLT HĐT, objects được nhóm lại trong classes
Objects trong classes 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ẻ
Classes đại diện cho concepts còn objects đại diện cho hiện tượng
Classes được tổ chức trong cây phả hệ có kế thừa
Tính kế thừa cho phép mở rộng hay chuyên biệt hóa lớp
Last update 8-2010
67
SE-SoICT
Các file đính kèm theo tài liệu này:
- bai_giang_ky_thuat_lap_trinh_chuong_1_tong_quan_ky_thuat_lap.ppt