Bài giảng Kỹ thuật lập trình - Chương 1: Tổng quan về kỹ thuật lập trình - Lương Mạnh Bá

Tổng quan về KTLT (3t)  
Programming technique  
SE Dept  
<SE-SoICT-HUT>  
Lương Mạnh Bá  
1
Programming  
Languages –  
classifications and  
Program  
Development  
2
Nội dung  
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  
Multimedia  
authoring programs  
NNLT thꢀ tꢁc  
6 bưꢃc cꢀa chu trình phát triển phần mềm  
Six steps in the program development cycle  
NNLT trꢂc quan (Visual programming languages)  
Sꢂ khác biệt giữa LT cꢆu trꢇc và  
LT hưꢃng đꢄi tưꢅng  
NNLT hưꢃng đꢄi tưꢅng (Object-oriented  
programming languages)  
NNLT phi thꢀ tꢁc và công cꢁ (Nonprocedural  
languages and tools)  
Những cꢆu trꢇc cơ sở dùng thiết kế chương trình  
Last update 8-2010  
SE-SoICT  
KTLT-1.3  
Next  
Chương trình máy tính và ngôn ngữ lập trình  
Computer Programs and Programming Languages  
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ụ  
▪ Programming language—Dùng để viết các lệnh, chỉ thị  
Last update 8-2010  
SE-SoICT  
KTLT-1.4  
Next  
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 – semantics 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  
SE-SoICT  
KTLT-1.5  
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  
SE-SoICT  
KTLT-1.6  
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  
SE-SoICT  
KTLT-1.7  
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  
SE-SoICT  
KTLT-1.8  
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.  
movl #0x1,n  
compare:  
cmpl #oxa,n  
cgt end_of_loop  
acddl #0x1,n  
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.  
bra compare  
end_of_loop:  
Vẫn còn phức tạp, cải thiện  
không đáng kể  
Last update 8-2010  
SE-SoICT  
KTLT-1.9  
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  
SE-SoICT  
KTLT-1.10  
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”:  
1. Giảm sự phụ thuộc vào máy – Tính chuyển đổi.  
2. 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  
SE-SoICT  
KTLT-1.11  
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  
SE-SoICT  
KTLT-1.12  
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  
SE-SoICT  
KTLT-1.13  
CÁC THẾ HỆ NNLT  
LANGUAGE GENERATIONS  
Generation  
Classification  
1st  
Machine languages  
2nd Assembly languages  
3rd  
4th  
5th  
6th  
Procedural languages  
Application languages (4GLs)  
AI techniques, inference languages  
Neural networks (?), others….
Computer Programs and Programming Languages  
Low-level languages và high-level languages?  
Low-level  
language  
High-level  
language  
Machine-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-dependent  
Phꢁ thuộc phần cứng, chỉ chạy trên  
một loại máy tính  
Machine và assembly languages là  
ngôn ngữ bậc thꢆp low-level  
Last update 8-2010  
SE-SoICT  
KTLT-1.15  
p. 664  
Next  
PHÂN LOẠI THEO MỨC ĐỘ TRỪU TƯỢNG  
Level  
Instructions Memory handling  
Low level  
languages  
High level  
languages  
Dạng bits – giống Truy cập và cấp phát  
các lệnh  
machine  
trực tiếp bộ nhớ  
Dùng các biểu Truy cập và cấp phát  
thức và các  
bộ nhớ qua các  
dòng điều khiển lệnh, toán tử -  
xác định  
operators  
Very high  
level  
Che dấu hoàn toàn  
Hoàn toàn trừu  
việc truy cập và tự  
động cấp phát bộ  
nhớ  
tượng, độc lập  
languages  
phần cứng  
Last update 8-2010  
SE-SoICT  
KTLT-1.16  
Next  
DECLARATIVE và NON-DECLARATIVE  
PROGRAMMING  
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  
SE-SoICT  
KTLT-1.17  
p. 666 Fig. 13-3  
Next  
Procedural Languages – Ngôn ngữ thủ tục  
Procedural language?  
Lập trình viên viết các chỉ  
Sử dụng hàng loạt các từ  
thị hướng dẫn cho máy  
giống tiếng Anh để viết  
tính cái gì cần làm và làm  
các chỉ thị - instructions  
như thế nào?  
Còn gọi là thir-  
generation language  
GL)  
Các ngôn ngữ thông  
dụng: BASIC, COBOL,  
PASCAL, C,C++ và JAVA  
Click to view animation  
Last update 8-2010  
SE-SoICT  
KTLT-1.18  
p. 666  
Next  
Procedural Languages  
Trình dịch - Compiler?  
➢ 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  
Procedural Languages  
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.  
➢ Không tạo ra object  
program  
Last update 8-2010  
KTLT-1.20  
p. 667 Fig. 13-5  
Next  
Tải về để xem bản đầy đủ
ppt 67 trang Thùy Anh 18600 Free
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: Tổng quan về kỹ thuật lập trình - Lương Mạnh Bá", để 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:

  • pptbai_giang_ky_thuat_lap_trinh_chuong_1_tong_quan_ve_ky_thuat.ppt