Giáo trình Kỹ thuật lập trình - Bài 1: Tổng quan - Trịnh Thành Trung

Viết mã nguồn chương trình (coding): dịch từ thiết kế thành chương trình ▫ Cú pháp (Syntax): Quy tắc xác định cách viết các lệnh ▫ Chú thích (Comments): tài liệu chương trình (tài liệu trong) ▪ Lập trình nhanh (Extreme programming - XP): viết mã nguồn và kiểm thử ngay sau khi các yêu cầu được xác định

pdf49 trang | Chia sẻ: huongthu9 | Lượt xem: 496 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Kỹ thuật lập trình - Bài 1: Tổng quan - Trịnh Thành Trung, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Trịnh Thành Trung (ThS) trungtt@soict.hust.edu.vn Bài 1 TỔNG QUAN Nội dung 1. Khái niệm kỹ thuật lập trình 2. Tổng quan về lập trình 3. Mô thức lập trình 4. Chu trình phát triển phần mềm 1. Khái niệm Kỹ thuật lập trình Các khái niệm cơ bản về kỹ thuật lập trình “ Kỹ thuật lập trình là kỹ thuật thực thi một giải pháp phần mềm (cấu trúc dữ liệu + giải thuật) dựa trên nền tảng một phương pháp luận (methodology) và một hoặc nhiều ngôn ngữ lập trình phù hợp với yêu cầu đặc thù của ứng dụng Tổng quan Kỹ thuật lập trình ▪ Kỹ thuật lập trình Tư tưởng thiết kế + Kỹ thuật mã hóa Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình ▪ Kỹ thuật lập trình ≠ Phương pháp phân tích & thiết kế(A&D) Thế nào là lập trình ▪Viết chương trình tính giai thừa của 100 ▪Viết chương trình in ra 100 số nguyên tố đầu tiên ▪Giải bài toán cổ «Vừa gà vừa chó, ba mươi sáu con, bó lại cho tròn, một trăm chân chẵn» ▪Viết chương trình tính giai thừa ▪Viết chương trình in ra n số nguyên tố đầu tiên ▪Giải bài toán cổ «Vừa gà vừa chó, vừa vặn X con, bó lại cho tròn, đủ Y chân chẵn» Khái niệm lập trình Với mỗi bài toán (vấn đề) đặt ra, cần: ▪ Thiết kế giải thuật để giải quyết bài toán đó ▪ Cài đặt giải thuật bằng một chương trình máy tính Thế nào là lập trình tốt Đúng / Chính xác ▪Thỏa mãn các nhiệm vụ ▪Được khách hàng chấp nhận Ổn định ▪Ổn định ▪Ít lỗi hoặc lỗi nhẹ có thể chấp nhận được Khả năng nâng cấp ▪Dễ dàng chỉnh sửa ▪Dễ dàng nâng cấp trong điều kiện bài toán thay đổi Tái sử dụng ▪Tái sử dụng hoặc kế thừa cho bài toán khác Thế nào là lập trình tốt Tương thích ▪Thích ứng tốt các môi trường khác nhau Hiệu suất ▪Chương trình nhỏ gọn, ít bộ nhớ ▪Tốc độ nhanh, sử dụng ít CPU Hiệu quả ▪Thời gian lập trình ngắn ▪Khả năng bảo trì dễ dàng ▪Giá trị sử dụng lại lớn ▪Sử dụng đơn giản, thân thiện ▪Nhiều chức năng tiện ích Làm thế nào để lập trình tốt ▪Tư duy và phương pháp lập trình ▪Hiểu sâu về máy tính ▪Nắm vững ngôn ngữ ▪Rèn luyện 2. Tổng quan về lập trình Hoạt động của chương trình máy tính và ngôn ngữ lập trình 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). ▪ Bắt đầu mỗi chu trình lệnh, CPU nhận lệnh từ bộ nhớ chính. ▫ PC (Program Counter): thanh ghi giữ địa chỉ của lệnh sẽ được nhận ▫ Lệnh được nạp vào thanh ghi lệnh IR (Instruction Register) ▪ Sau khi lệnh được nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp Hoạt động của chương trình máy tính Ngôn ngữ lập trình Ngôn ngữ lập trình là một hệ thống các ký hiệu dùng để liên lạc, trao đổi với máy tính nhằm thực thi một nhiệm vụ tính toán. Có rất nhiều ngôn ngữ lập trình (khoảng hơn 1000), phần lớn là các ngôn ngữ hàn lâm, có mục đích riêng hay phạm vi ứng dụng hạn chế Các thành phần cơ bản của ngôn ngữ lập trình Mô thức ▪ Language paradigm, nguyên tắc chung cơ bản của NNLT Cú pháp ▪ Syntax, xác định cái gì là hợp lệ Ngữ nghĩa ▪ Semantic, ghép các ký hiệu thành câu lệnh Mã máy 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. Một chương trình ở dạng đó gọi là mã máy (machine code). Hợp ngữ 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 chuyển thành machine code. Ngôn ngữ lập trình bậc cao 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. Gần gũi với ngôn ngữ tự nhiên hơn, thường sử dụng các từ khóa giống tiếng Anh Tương lai của ngôn ngữ lập trình? AI neural network ? 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 Thông dịch interpreter ▪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 3. Các mô thức lập trình Programming paradigm Các 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 Mô thức lập trình hướng mệnh lệnh first do this and next do that ▪ Ý tưởng: Công nghệ số hóa phần cứng (by Von Neumann) ▪ Che giấu các lệnh trong chương trình con, coi chương trình con là 1 lệnh ▫ Tương tự 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ộ Mô thức lập trình hướng mệnh lệnh Thành phần ▪ Declarative statements, các lệnh khai báo: cung cấp các tên cho 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 Mô thức lập trình hướng chức năng evaluate an expression and use the resulting value for something  Nguồn gốc: lý thuyết hàm số  đơn giản và rõ ràng hơn mô thức lập trình hướng mệnh lệnh  Ngôn ngữ lập trình hướng chức năng miêu tả  Tập hợp các kiểu dữ liệu có cấu trúc  Tập hợp các hàm định nghĩa trên các kiểu dữ liệu đó Mô thức lập trình hướng chức năng Thành phần ▪ 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ở ▪ Tập hợp các toán tử Đặc trưng cơ bản: module hóa chương trình ▫ Chức năng là biểu diễn của một biểu thức ▫ Giải thuật thực hiện theo từng bước ▫ Giá trị trả về là không thể biến đổi ▫ Không thể thay đổi CTDL của giá trị nhưng có thể sao chép 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 Mô thức lập trình hướng logic answer a question via searching for a solution ▪ Ý 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 Mô thức lập trình hướng đối tượng send messages between objects to simulate a temporal evolution of a set of real world phenomena ▪ Ý tưởng: Các khái niệm và mô hình 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 bao gói trong các đối tượng ▪ Cơ chế che giấu thông tin nội bộ được sử dụng để tránh những tác động từ bên ngoài ▪ Các đối tượng 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 đối tượng ▪ Trong phần lớn các NNLT HĐT, đối tượng phân loại thành các lớp ▫ Đối tượng trong các lớp 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ẻ ▫ Lớp đại diện cho các khái niệm còn đối tượng đại diện cho thể hiện ▫ Lớp có tính kế thừa, cho phép mở rộng hay chuyên biệt hóa Mô thức lập trình hướng đối tượng 4. Chu trình phát triển phần mềm Development cycle Bước 1: Phân tích yêu cầu Analyse requirements Phân tích hệ thống ▫ Dựa trên các hệ thống có thực (do con người vận hành hoặc hệ thống tự động) ▫ Do các nhà phân tích hệ thống tiến hành, sẽ hiệu quả hơn nếu phỏng vấn người dùng Mục tiêu ▹ Xác định xem hệ thống hiện tại đã làm được những gì, làm như thế nào, còn tồn tại các vấn đề gì  Quyết định xem có nên thực hiện bước tiếp theo hay không (Return-on-Investment – ROI estimation ) Bước 1: Phân tích yêu cầu Analyse requirements Các công việc chính ▪ Thiết lập các requirements ▪ Gặp các nhà phân tích hệ thống và users ▪ Xác định input, output, processing, và các thành phần dữ liệu Ví dụ IPO chart tính giá trị trung bình ▪ 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 Bước 2: Thiết kế giải pháp Design solution LTV bắt đầu với thiết kế tổng thể rồi đi đến thiết kế chi tiết 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 đề Bước 2: Thiết kế giải pháp Design solution Thiết kế Sơ đồ phân cấp chức năng (hierarchy chart) ▪ Còn gọi là sơ đồ cấu trúc ▪ Trực quan hóa các module chương trình Bước 2: Thiết kế giải pháp Design solution Thiết kế hướng đối tượng ▪ LTV đóng gói dữ liệu và các thủ tục xử lý dữ liệu trong đối tượng (object) ▪ Các đối tượng được phân loại thành các lớp (classes) ▪ Thiết kế các biểu đồ lớp thể hiện trực quan các quan hệ phân cấp quan hệ của các lớp Bước 2: Thiết kế giải pháp Design solution Thiết kế giải thuật ▪ 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ụ đó. Cấu trúc tuần tự 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 Cấu trúc chọn Phải chỉ ra được các hành động có khả năng được thực hiện sau khi có quyết định. Quyết định phụ thuộc vào các điều kiện Cấu trúc lặp 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 Biểu đồ luồng Flowchart 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 Ví dụ flow chart ▪ Thiết kế biểu đồ luồng chuyển từ số nhị phân sang số thập phân Bước 3: Chứng thực thiết kế Validate design Kiểm tra độ chính xác của chương trình 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à chương trình sẽ thực hiện LTV kiểm tra tính đúng đắn bằng cách tìm các lỗi logic (Logic Error) Structured Walkthrough LTV mô tả logic của thuật toán trong khi đội lập trình duyệt theo logic chương trình Desk check LTV dùng các dữ liệu thử nghiệm (Test data) để kiểm tra chương trình Bước 4: Cài đặt thiết kế Implement design ▪ Viết mã nguồn chương trình (coding): dịch từ thiết kế thành chương trình ▫ Cú pháp (Syntax): Quy tắc xác định cách viết các lệnh ▫ Chú thích (Comments): tài liệu chương trình (tài liệu trong) ▪ Lập trình nhanh (Extreme programming - XP): viết mã nguồn và kiểm thử ngay sau khi các yêu cầu được xác định Bước 5: Kiểm thử giải pháp Test solution Đảm bảo chương trình chạy thông và cho kết quả 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 Bước 6: Viết tài liệu cho giải pháp Document solution Rà soát lại program code - loại bỏ các dead code, tức các lệnh mà chương trình không bao giờ gọi đến Rà soát, hoàn thiện documentation Thanks! Any questions? Email me at trungtt@soict.hust.edu.vn Presentation template by SlidesCarnival

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_ky_thuat_lap_trinh_bai_1_tong_quan_trinh_thanh_tr.pdf