Bài giảng Kỹ thuật lập trình - Chương 01: Tổng quan về KTLT - Lương Mạnh Bá
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ọ.
File đính kèm:
- bai_giang_ky_thuat_lap_trinh_chuong_01_tong_quan_ve_ktlt_luo.ppt
Nội dung text: Bài giảng Kỹ thuật lập trình - Chương 01: Tổng quan về KTLT - Lương Mạnh Bá
- Programming Languages – classifications and Program Development 2
- 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
- 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
- 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
- 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
- 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
- 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 LastNeural update 8-2010 networksSE-SoICT (?), others . KTLT-1.14
- PHÂN LOẠI THEO MỨC ĐỘ TRỪU TƯỢNG Level Instructions Memory handling Low level Dạng bits – giống Truy cập và cấp phát languages các lệnh trực tiếp bộ nhớ machine High level Dùng các biểu Truy cập và cấp phát languages 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 Hoàn toàn trừu Che dấu hoàn toàn level tượng, độc lập việc truy cập và tự languages phần cứng động cấp phát bộ Last update 8-2010 SE-SoICT KTLT-1.16 nhớ 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à third- Các ngôn ngữ thông generation language dụng: BASIC, COBOL, (3GL) PASCAL, C,C++ và JAVA Click to view animation Last update 8-2010 SE-SoICT KTLT-1.18 p. 666 Next
- 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 SE-SoICT KTLT-1.20 p. 667 Fig. 13-5 Next
- Procedural Languages COBOL? ➢ 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 ➢ COmmon Business-Oriented Language Last update 8-2010 SE-SoICT KTLT-1.22 Next
- Object-Oriented Programming Languages Object-oriented programming (OOP) language? Dùng để hỗ trợ Lợi ích cơ bản Event-driven— C++ và Java thiết kế HĐT là khả năng tái Hướng sự kiện là các NN hoàn object-oriented sử dụng - Kiểm tra để trả toàn HĐT design reuse existing lời một tập các object-oriented objects sự kiện languages Object là Event là hành phần tử chứa động mà đựng cả dữ chương trình liệu và các cần đáp ứng thủ tục xử lý dữ liệu Last update 8-2010 SE-SoICT KTLT-1.24 Next
- Object-Oriented Programming Languages Java? ➢ 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 SE-SoICT KTLT-1.26 Next
- Object-Oriented Programming Languages Visual Studio .NET 2003, 2005? ➢ 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 Step 2. LTV gán các thiết kế giao thuộc tính cho mỗi diện người dùng object trên form. - user interface. 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. Step 4Last. LTV update kiểm 8-2010 tra SE-SoICT KTLT-1.28 application. Next
- Object-Oriented Programming Languages PowerBuilder? ➢ 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 SE-SoICT KTLT-1.30 Next
- Nonprocedural Languages and Program Development Tools RPG (Report Program Generator)? ➢ 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 SE-SoICT KTLT-1.32 p. 674 Fig. 13-14 Next
- Nonprocedural Languages and Program Development Tools Application generator? ➢ 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 SE-SoICT KTLT-1.34 Next
- Web Page Development HTML (Hypertext Markup Language)? ➢ Dùng để tạo các trang Web Last update 8-2010 SE-SoICT KTLT-1.36 Next
- Web Page Development Common gateway interface (CGI)? ➢ 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 ▪ CGI script—program quản trị việc gửi và nhân dữ liệu qua CGI Step 1. LTV lưu Step 2. Webmaster tạo 1 liên kết các CGI program giữa CGI program và Web page. trong 1 thư mục đặc Khi 1 user hiện trang Web , CGI biệt trên Web server program sẽ automatically starts. ví dụ /cgi-bin. Step 4. CGI Database Step 3. Khi user khẳng định program nhận thông submits 1 yêu cầu, nó sẽ được gửi cho tin từ database, két CGI program. CGI program kết nối hợp chúng dưới với database và lấy các ttin cho user. dạng HTML , và gửi Ví dụ user yêu cầu xem phim The cho trình duyệt Web Wizard of Oz. của User. Last update 8-2010 SE-SoICT KTLT-1.38 p. 680 Fig. 3-19 Next
- Web Page Development Dynamic HTML (DHTML)? ➢ 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 SE-SoICT KTLT-1.40 p. 682 Fig. 13-21 Next
- Web Page Development Web page authoring software? ➢ 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 Flash FrontPage MX MX 2003 Last update 8-2010 SE-SoICT KTLT-1.42 p. 683 Next
- Các Programming Languages khác ADA ALGOL APL FORTH FORTRAN HYPERTALK LISP LOGO MODULA-2 PASCAL PILOT PL/I PROLOG SMALLTALK Last update 8-2010 SE-SoICT KTLT-1.44 p. 685 Next
- Step 1 — Analyze Requirements Các việc cần làm khi phân tích yêu cầu? 1. Khảo sát và Thiết lập các yêu cầu 2. XD các mô hình phân tích 3. 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 SE-SoICT KTLT-1.46 p. 687 Fig. 13-25 Next
- Step 2 — Design Solution Sơ đồ phân cấp chức năng- hierarchy chart? ➢ 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 SE-SoICT KTLT-1.48 p. 688 Fig. 13-26 Next
- Step 2 — Design Solution Cấu trúc tuyển chọn ➢ 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 SE-SoICT KTLT-1.50 p. 690 Fig. 13-29 Next
- Step 2 — Design Solution Cấu trúc lặp ➢ 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 SE-SoICT KTLT-1.52 p. 691 Figs. 13-31–13-32 Next
- Step 4 — Implement Design implementation? ➢ 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 SE-SoICT KTLT-1.54 p. 695 Fig. 13-37 Next
- Step 6 — Document Solution Là bước không kém quan trọng ➢ 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 Rà soát, hoàn thiện đến Tài liệu Last update 8-2010 SE-SoICT KTLT-1.56 p. 698 Next
- 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 SE-SoICT KTLT-1.58
- 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 SE-SoICT KTLT-1.60
- 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 SE-SoICT KTLT-1.62
- Ví dụ về Functional programming function GT(n: longint) : longint; var x : longint; Begin Function GT(n: longint) : Longint; x:=1; Begin while (n > 0) do begin x := x * n; if n=1 then GT :=1 n := n 1; else GT := n* GT(n-1); end; GT := x; End; 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 SE-SoICT KTLT-1.64
- 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 SE-SoICT KTLT-1.66