Bài giảng Kỹ thuật lập trình - Chương 01: Những khái niệm cơ bản trong kỹ thuật lập trình - Vũ Thị Hương Giang

Chương trình máy tính được nạp vào bộ
nhớ chính (primary memory) như là một
tập các lệnh viết bằng ngôn ngữ mà
máy tính hiểu được, 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, máy tính
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 được gọi
là luồng điều khiển (flow of control). 
pdf 27 trang xuanthi 27/12/2022 2880
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 01: Những khái niệm cơ bản trong kỹ thuật lập trình - Vũ Thị Hương Giang", để 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:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_01_nhung_khai_niem_co_ba.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình - Chương 01: Những khái niệm cơ bản trong kỹ thuật lập trình - Vũ Thị Hương Giang

  1. 2/6/2012 I. Tổng quan về lập trình • Chương trình máy tính (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ụ • Ngôn ngữ lập trình (programming language): Dùng để viết các lệnh, chỉ thị I. TỔNG QUAN VỀ LẬP TRÌNH 1. Hoạt động của chương trình máy tính 2. Ngôn ngữ lập trình 1. Hoạt động của chương trình máy tính • Chương trình máy tính được nạp vào bộ nhớ chính (primary memory) như là một tập các lệnh viết bằng ngôn ngữ mà máy tính hiểu được, 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, máy tính 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 được gọi là luồng điều khiển (flow of control). 2
  2. 2/6/2012 2.2. Ngôn ngữ ASSEMBLY • Là bước đầu tiên của movl #0x1,n việc xây dựng cơ chế viết chương trình tiện compare: lợi hơn – thông qua các ký hiệu, từ khóa và cả cmpl #oxa,n mã máy. cgt end_of_loop • Tất nhiên, để chạy được các chương trình acddl #0x1,n này thì phải chuyển bra compare thành thành machine code. end_of_loop: • Vẫn còn phức tạp, cải thiện không đáng kể 2.3. Phân loại ngôn ngữ lập trình - Theo thời gian • 1940s: Ngôn ngữ máy tính • 1980s: Giảm sự phức tạp hiểu được – Object-oriented, functional – Machine code programming: Java • 1950s: Khai thác sức mạnh • 1990s: Khai thác triệt để các của máy tính tài nguyên – Assembler code, Fortran v.1 – Parallel, distributed computing: occam • 1960s: Tăng khả năng tính toán • 2000s: Phát triển các mô hình – Cobol, Lisp, Algol 60, Basic, tính toán mới PL/1 – genetic programming languages, DNA computing, • 1970s: Giảm sự phụ thuộc bio-computing, service-based vào máy, tăng tính đúng đắn computing của CT • . – Structured Programming, Modular Programming: Pascal, Algol 68 and C. 2.3. Phân loại ngôn ngữ lập trình - Theo mức độ trừu tượng Low-level High-level language language Machine-dependent Machine-independent Phụ thuộc phần cứng, chỉ chạy Thường không phụ thuộc phần trên một loại máy tính cứng, có thể chạy trên nhiều loại máy tính khác nhau Ví dụ ??? Ví dụ ???? High(er) level languages gần với ngôn ngữ con người hơn: Machine và assembly languages là Algol, Fortran, Pascal, Basic, ngôn ngữ bậc thấp Ada, C, 4
  3. 2/6/2012 2.4. Ngôn ngữ lập trình dạng mệnh lệnh • Trình dịch (Compiler): chương trình thực hiện biên dịch toàn bộ chương trình nguồn thành mã máy trước khi thực hiện 2.4. Ngôn ngữ lập trình dạng mệnh lệnh • Trình 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 cùng lúc – Dịch từ ngôn ngữ này sang ngôn ngữ khác, không tạo ra chương trình dạng mã máy hay assembly 2.4. Ngôn ngữ lập trình dạng mệnh lệnh • BASIC – Được thiết kế để cho những người mới học, giúp họ tiếp cận một cách đơn giản NNLT – Beginner’s All-purpose Symbolic Instruction Code 6
  4. 2/6/2012 2.5. Ngôn ngữ lập trình hướng đối tượng • C++ – 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 2.5. Ngôn ngữ lập trình hướng đối tượng • 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 2.5. Ngôn ngữ lập trình hướng đối tượng • Visual programming language Visual programming Cung cấp giao diện trực environment (VPE) Cho phép developers kéo và quan hoặc đồ họa để tạo thả các objects để xd source code programs Đôi khi được gọi là fourth-generation language LTV viết và phát triển chương trình trong các segments Thường được dùng trong môi trường RAD (rapid application development) 8
  5. 2/6/2012 2.6. Ngôn ngữ lập trình dạng tường thuật Nonprocedural Language Program Development Tools LTV viết các lệnh giống Các chương trình thân thiện tiếng anh hoac tương tác với người sử dụng được với môi trường trực quan thiết kế để trợ giúp cả LTV để nhận được các dữ liệu lẫn người sử dụng trong từ files hay database việc tạo chương trình 2.6. Ngôn ngữ lập trình dạng tường thuật • RPG (Report Program Generator) – Các ngôn ngữ LT phi thủ tục đượ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 2.6. Ngôn ngữ lập trình dạng tường thuật • NN thế hệ IV fourth-generation language (4GL) – 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 users quản trị dữ liệu trong csdl quan hệ relational DBMS 10
  6. 2/6/2012 2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các trang web • 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 ? Script Applet Servlet ActiveX Thông dịch thường chạy applet chạy control chương trình trên client, trên server Là chương chạy trên client nhưng được trình nhỏ chạy biên dịch trên client Counter Image map Processing duyệt số Hình ảnh form người thăm đồ họa trỏ Thu thập số Web site tới URL liệu từ visitors 2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các trang web • 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 – chương trình 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. Khi trong 1 thư mục đặc 1 user hiện trang Web, CGI program biệt trên Web server sẽ tự động chạy. 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. 2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các trang web • Scripting language?  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 12
  7. 2/6/2012 2.6. Ngôn ngữ lập trình dạng tường thuật - Tạo các ứng dụng đa phương tiện • Multimedia authoring software?  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 2.7. Các ngôn ngữ lập trình khác ADA ALGOL APL FORTH FORTRAN HYPERTALK LISP LOGO MODULA-2 PASCAL PILOT PL/I PROLOG SMALLTALK II. CHU TRÌNH PHÁT TRIỂN CHƢƠNG TRÌNH 14
  8. 2/6/2012 Bước 1: phân tích yêu cầu (analyze requirements) • Biểu đồ IPO: – Input, Output: danh từ, phân biệt được các dữ liệu – Process: động từ, chỉ 1 hành động duy nhất • Ví dụ: viết chương trình cho phép nhập vào 3 số, tính tổng của chúng và tính giá trị trung bình của chúng. Input Process Output Bước 1: phân tích yêu cầu (analyze requirements) Input Process Output value1, value 2, value3 read the input values value1, value 2, value3 add the numbers together Total Total, value number calculate average Average display average display total Input Process Output (n1 + n2+ n3) 3 numbers read 3 numbers / 3 compute average and total n1 + n2 + n3 print average and total Bước 2 – thiết kế giải pháp (design solution) • Những việc cần làm trong bước thiết kế giải pháp? – Phân rã bài toán thành các bài toán nhỏ hơn – Tìm giải pháp cho từng bài toán nhỏ, phát triển lên thành giải thuật – Kết hợp các giải pháp cho bài toán nhỏ thành giải pháp tổng thể cho bài toán ban đầu 16
  9. 2/6/2012 Bước 2 – thiết kế giải pháp (design solution) • Máy tính không thể tự nghĩ ra hay tự quyết định một sơ đồ hoạt động • Máy tính chỉ có thể làm chính xác những gì được yêu cầu, theo cách được yêu cầu, chứ không phải làm những gì con người muốn máy tính làm • Giải thuật là một tập các chỉ thị miêu tả cho máy tính nhiệm vụ cần làm và thứ tự thực hiện các nhiệm vụ đó. Bước 2 – thiết kế giải pháp (design solution) • Giải pháp cho mọi chương trình máy tính, dù đơn giản hay phức tạp, đều có thể được trình bày dựa trên 3 cấu trúc cơ bản sau: – Tuần tự – Chọn – Lặp • Các cấu trúc này được gọi là các cấu trúc điều khiển hay các cấu trúc logic, vì nó điều khiển logic tính toán của chương trình máy tính Bước 2 – thiết kế giải pháp (design solution) Cấu trúc tuần tự • Cấu trúc tuần tự trong một chương trình máy tính chỉ thị cho máy tính xử lý lần lượt các lệnh (statement) của chương trình theo thứ tự được chỉ ra trong chương trình 18
  10. 2/6/2012 Bước 2 – thiết kế giải pháp (design solution) Cấu trúc chọn • Single input – • Single input – • Single input – single output double output multiple output condition condition value TRUE TRUE FALSE v1 vn S1 S1 S2 S1 Sn Bước 2 – thiết kế giải pháp (design solution) Cấu trúc lặp Bước 2 – thiết kế giải pháp (design solution) Cấu trúc lặp • Cho phép lập trình viên đặc tả một hành động cần thực hiện lặp đi lặp lại và có điều kiện • Khi được sử dụng trong một chương trình, cấu trúc lặp chỉ thị cho máy tính thực hiện lặp đi lặp lại một hoặc nhiều lệnh, cho đến khi thỏa mãn điều kiện. Vào thời điểm đó, máy tính có thể kết thúc vòng lặp 20
  11. 2/6/2012 Ví dụ • Flowchart (biểu đồ luồng) là công cụ để phát triển một giải pháp thành một giải thuật – Mô tả giải thuật một cách trực quan – Sử dụng ít ký hiệu để định nghĩa giải thuật với độ khó khác nhau Start A avg= Read val1, ttl / 3 val2, val3 ttl= Print ttl, val1 + val2 + val3 avg A Stop Bước 3 – Hợp thức hóa thiết kế (validate design) • Những điều cần làm trong giai đoạn này? Kiểm tra độ chính xác LTV kiểm tra của chƣơng trình logic cho tính đúng đắn và thử tìm các lỗi logic Desk check Logic error LTV dùng các dữ liệu các sai sót khi thiết kế thử nghiệm để kiểm tra gây ra những kết quả chƣơng trình không chính xác Structured walkthrough Test data LTV mô tả logic các dữ liệu thử nghiệm của thuật toán trong khi giống như số liệu thực đội lập trình duyệt theo mà chương trình sẽ logic chương trình thực hiện Bước 4: cài đặt thiết kế (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 22
  12. 2/6/2012 III. CÁC MÔ THỨC LẬP TRÌNH 1. Mở đầu 2. Hướng mệnh lệnh 3. Hướng chức năng 4. Logic 5. Hướng đối tượng 1. Mở đầu • · Programming paradigm: mô thức lập trình – Tập các khái niệm được dùng như các khuôn mẫu để lập trình – Đại diện cho 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‘ • ‘Program development by stepwise refinement' • · Programming style: phong cách lập trình – 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 qua đến các dòng ngôn ngữ lập trình – Tổng thể của mô thức, phong cách và kỹ thuật lập trình – Nhân cách đạo đức trong lập trình cũng như khai thác các CT 1. Mở đầu • Có nhiều mô thức lập trình – Imperative paradigm – Functional paradigm – Logical paradigm – Object-oriented paradigm – Visual paradigm – Parallel paradigm – Concurrent paradigm – Distributed paradigm – Service-oriented paradigm • Chỉ xét 3 mô thức lập trình: hướng mệnh lệnh, hướng thủ tục và hướng đối tượng 24
  13. 2/6/2012 3. Mô thức lập trình hướng chức năng • Đặc trưng cơ bản: Chú trọng đến việc mô-đun hóa chương trình – Một chức năng là biểu diễn trừu tượng của một biểu thức chức năng luôn được thực thi – Giải thuật thực hiện theo từng bước – Các giá trị trả về là không thể biến đổi – Không thể thay đổi cấu trúc dữ liệu của một giá trị, nhưng có thể sao chép lại các thành phần tạo nên giá trị đó – Tính toán bằng cách gọi các chức năng thích hợp với xu hướng tính toán theo yêu cầu người dùng 3. Mô thức lập trình hướng chức năng • Ví dụ: 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; 4. Mô thức lập trình logic • Mô hình này đặc biệt phù hợp với những lĩnh vực liên quan đến việc trích rút thông tin từ những sự kiện và mối quan hệ giữa các sự kiện – lĩnh vực trí tuệ nhân tạo. • Đặ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 chân lý- 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 26