Chuong 1   tong quan ve lap trinh va nnlt
Upcoming SlideShare
Loading in...5
×
 

Chuong 1 tong quan ve lap trinh va nnlt

on

  • 1,120 views

 

Statistics

Views

Total Views
1,120
Views on SlideShare
1,120
Embed Views
0

Actions

Likes
0
Downloads
17
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Chuong 1   tong quan ve lap trinh va nnlt Chuong 1 tong quan ve lap trinh va nnlt Presentation Transcript

  • Lập Trình Máy Tính • Giới thiệu về lập trình máy tính • Phân tích, thiết kế và phát triển hệ thống • Phân loại
  • 6 Giai đoạn phân tích và thiết kếhệ thống• Thành phần dự án phần mềm: – Người sử dụng. – Bộ phận quản lý dự án. – Bộ phận kỹ thuật.• Quá trình phân tích và thiết kế hệ thống được chia thành 6 giai đoạn như sau: Chương 1 - Tổng quan về lập trình và NNLT 2
  • 1. Tìm hi êu vấn đề : phân tích hiện trạng, đưa giải pháp, khuyến nghị.2. Phân tích : thu thập dữ liệu, phân tích và báo cáo.3. Thiết kế : thiết kế sơ bộ, thiết kế chi tiết, báo cáo.4. Phát triển : lên kế hoạch theo dõi tiến độ, thiết lập cấu hình phần cứng, phần mềm, lập trình và kiểm tra hệ thống.5. Cài đặt : chuyển sang hệ thống mới. Đào tạo nhân lực.6. Bảo trì : kiểm tra hệ thống, thu nhận phản hồi từ phía người dùng, định kỳ đánh giá hoạt động hệ thống.- Tổng quan về lập trình và NNLT Chương 1 3
  • Lập trình• Một chương trình (program) là tập các câu lệnh (instruction) viết bằng một ngôn ngữ lập trình dùng để ra lệnh cho máy tính thực hiện các thao tác xử lý dữ liệu thành thông tin.• Lập trình là tiến trình tạo thành một chương trình. Chương 1 - Tổng quan về lập trình và NNLT 4
  • Các bước lập trình• Xác định và làm rõ vấn đề ( clarification ) : xác định đầu vào, kết xuất, các yêu cầu xử lý cần thiết.• Lên phương án giải quyết ( design ) : sử dụng các công cụ mô hình hoá để lên sơ đồ vấn đề cần giải quyết.• Viết chương trình ( coding ): sử dụng một ngôn ngữ lập trình để viết chương trình. Chương 1 - Tổng quan về lập trình và NNLT 5
  • Các bước lập trình• Kiểm tra chương trình ( test ): kiểm tra và sửa chữa các lỗi logic (bug) trong chương trình (debug).• Viết tài liệu và bảo trì chương trình ( document, maintenance ): viết hướng dẫn sử dụng, giải thích chương trình, hướng dẫn cách chạy chương trình. Chương 1 - Tổng quan về lập trình và NNLT 6
  • Ngôn ngữ lập trình• Một ngôn ngữ nhân tạo bao gồm các từ vựng cố định và một tập các quy tắc (gọi là syntax-cú pháp) dùng để lập ra các chỉ lệnh cho máy tính.• Hầu hết các chương trình đều được viết bằng cách sử dụng một trình biên tập văn bản hoặc trình xử lý để soạn ra mã nguồn (source code) Chương 1 - Tổng quan về lập trình và NNLT 7
  • Ngôn ngữ lập trình• Mã nguồn sẽ được biên dịch (compile) hoặc thông dịch (interprete) sang ngôn ngữ máy (machine code) cho máy tính có thể hiểu và thực hiện.• Có nhiều loại ngôn ngữ lập trình, và hầu hết các nhà khoa học về máy tính đều đồng ý rằng không có một ngôn ngữ duy nhất nào có đủ khả năng đáp ứng cho các yêu cầu của tất cả các lập trình viên. Chương 1 - Tổng quan về lập trình và NNLT 8
  • NNLT - Phân loại – NNLT Bậc cao• Các ngôn ngữ lập trình bậc cao (BASIC, C, Pascal, Ada, Cobol, …) cho phép lập trình viên có thể diễn đạt chương trình bằng các từ khóa và cú pháp bắt chước ngôn ngữ tự nhiên của con người• Các ngôn ngữ này được gọi là "bậc cao" vì chúng giải phóng cho các lập trình viên khỏi phải quan tâm đến vấn đề từng lệnh sẽ được máy tính thực hiện như thế nào. Chương 1 - Tổng quan về lập trình và NNLT 9
  • NNLT – Phân loại – NNLT Bậc cao• Mỗi câu lệnh trong ngôn ngữ lập trình bậc cao tương ứng với một số chỉ lệnh của ngôn ngữ máy.• Có thể viết các chương trình nhanh hơn nhiều so với khi dùng ngôn ngữ bậc thấp, như hợp ngữ (assembly language).• Tuy nhiên, việc dịch sang ngôn ngữ máy có hiệu suất thấp, không hoàn toàn tối ưu cho nên các chương trình viết theo các ngôn ngữ bậc cao chạy chậm hơn các chương trình viết theo ngôn ngữ bậc thấp. Chương 1 - Tổng quan về lập trình và NNLT 10
  • Phân loại – NNLT Bậc thấp• Các ngôn ngữ lập trình bậc thấp (hợp ngữ) cho phép lập trình viên mã hóa các chỉ lệnh với hiệu suất cao nhất có thể có.• Người lập trình phải thông thạo một cách chi tiết về các khả năng chính xác của hệ máy tính và bộ vi xử lý của nó.• Lập trình bằng hợp ngữ cũng mất nhiều thời gian hơn. Chương 1 - Tổng quan về lập trình và NNLT 11
  • 5GLs artificial intelligence 4GLs ORACLE, SEQUEL, INGRES, ... HIGH-LEVEL Fortran, COBOL, C, C++, LANGUAGES LISP, Pascal, Java, ... ASSEMBLER LANGUAGESMACHINE CODE Chương 1 - Tổng quan về lập trình và NNLT 12
  • Chuyển NN bậc cao thành NNbậc thấp - Compiler• Chương trình nguồn viết bằng NNLT bậc cao phải được “dịch” thành NN máy để máy tính có thể hiểu và thực thi lệnh.• “Dịch” bằng trình biên dịch (compiler): bộ “dịch” chuyển toàn bộ chương trình viết bằng NN bậc cao thành NN máy trước khi máy tính có thể thực hiện chương trình. – VD: COBOL, FORTRAN, C, Pascal là các ngôn ngữ sử dụng cơ chế “biên dịch” Chương 1 - Tổng quan về lập trình và NNLT 13
  • Interpreter• “Dịch” bằng trình thông dịch (interpreter): bộ “dịch” chuyển từng dòng lệnh trong chương trình viết bằng NN bậc cao thành NN máy và thực hiện từng lệnh ngay khi dịch xong lệnh đó. – VD: BASIC là ngôn ngữ sử dụng cơ chế “thông dịch” Chương 1 - Tổng quan về lập trình và NNLT 14
  • Lập trình hướng đối tượng• Object-oriented programming (OOP) là phương pháp lập trình cho phép kết hợp dữ liệu với các câu lệnh xử lý dữ liệu đó trong một “đối tượng”.• Các “đối tượng” có thể được sử dụng lại để viết các chương trình khác nhau. Chương 1 - Tổng quan về lập trình và NNLT 15
  • Lập trình trực quan• Visual programming là phương pháp viết các chương trình bằng cách kết hợp các đối tượng sẵn có thông qua các thao tác trực quan.• Cho phép viết chương trình dễ dàng, nhanh chóng hơn.VD: Visual Basic, Visual J, Visual C++, Chương 1 - Tổng quan về lập trình và NNLT 16
  • Lập trình trên Internet• Sử dụng các ngôn ngữ lập trình:• HTML – HyperText Markup Language: ngôn ngữ đánh dấu siêu văn bản.• XML – eXtensible Markup Language:• VRML – Virtual Reality Markup Language:• Java• ActiveX• Kỹ thuật khác: COM, DCOM, RMI, RPC... Chương 1 - Tổng quan về lập trình và NNLT 17
  • Ví dụ• Để ghi dòng chữ “Chao cac ban” ra màn hình. – PASCAL program GhiChu; uses CRT; begin write(“Chao cac ban”); end. – C #include <stdio.h> void main (void) { printf(“Chao cac ban”); } Chương 1 - Tổng quan về lập trình và NNLT 18
  • Tham khảo từ Web• Có thể tham khảo cách viết chương trình in ra chữ “Hello world” của hơn 200 ngôn ngữ lập trình khác nhau tại địa chỉ http://www2.latech.edu/~acm/HelloWorld.shtml Chương 1 - Tổng quan về lập trình và NNLT 19
  • Máy tính và con người Máy tính Con ngườiTốc độ tính toán Cực nhanh Chậm hoặc rất chậmĐộ bền Hàng tháng, hàng năm, Chỉ trong vài ngày, hiệu suất hiệu suất không hề thay giảm dần nếu làm việc liên tục đổiKhả năng chịu ảnh hưởng Ít bị ảnh hưởng ảnh hưởng nhiều, đặc biệt làcủa các yếu tố khách quan các yếu tố môi trườngKhả năng suy luận, giải Không có Tốtquyết vấn đềKhả năng phản ứng với Không có Tốtnhững tình huống bất ngờ Chương 1 - Tổng quan về lập trình và NNLT 20
  • Bài toán và việc giải quyết bài toánbằng máy tính• A⇒B• Bài toán: Hãy tính giá trị của biểu thức an (n nguyên dương) khi biết giá trị của a và n.• Lời giải trên máy tính• B1. a =?, n=?• B2. if n =0 thì ∀ a, kq=1, End.• B3. else (n>0) – B3.1. Nhớ giá trị của a. – B3.2. Nhớ số phép nhân đã được thực hiện (0). – B3.3. Nếu số phép nhân chưa bằng n-1, sang bước B3.4, ngược lại sang bước B3.7. – B3.4. Nhân kết quả đã nhớ với a và nhớ kết quả mới. – B3.5. Tăng số phép nhân đã thực được hiện lên 1. – B3.6. Trở về B3.3. – B3.7. Kết quả đã tính được chính là con số đã nhớ.• B4. Kết thúc Chương 1 - Tổng quan về lập trình và NNLT 21
  • Các phương pháp giải quyết bàitoán trên máy tính• Trực tiếp• Gián tiếp: chưa tìm ra lời giải chính xác của bài toán. – Thử sai • Vét cạn • Ngẫu nhiên • Mê cung – Heuristic – Trí tuệ nhân tạo Chương 1 - Tổng quan về lập trình và NNLT 22
  • Phương pháp trực tiếp• Kỹ thuật lập trình trên máy tính• 3 loại: – Lời giải chính xác bằng công thức toán học • e.g., tính tổng n số nguyên dương đầu tiên… – Lời giải gần đúng (công thức tính gần đúng) • e.g., sin, cos… – Lời giải không tường minh (đệ quy) • e.g., Cnm Chương 1 - Tổng quan về lập trình và NNLT 23
  • Phương pháp gián tiếp – Thử sai• “Trong khi chưa nghĩ ra một cách thật hay thì cứ việc rút từng cọng rơm cho đến khi rút được cái kim”.• 3 nguyên lý: – Vét cạn – Ngẫu nhiên – Mê cung• “May rủi”.• Số lượng phép thử lớn Chương 1 - Tổng quan về lập trình và NNLT 24
  • Phương pháp gián tiếp – Heuristic• Nguyên lý: – vét cạn thông minh – Tối ưu cục bộ (Greedy) – Hướng đích – Thứ tự• Ví dụ: bài toán tìm đường Chương 1 - Tổng quan về lập trình và NNLT 25
  • Phương pháp gián tiếp – trí tuệnhân tạo• Thử sai, Heuristic: trí thông minh của con người• Trí tuệ nhân tạo: trí thông minh của máy tính (bắt chước con người)• Ví dụ: bài toán đổ nước – B5: 5 lít, B8: 8 lít. – Chỉ ra cách đong để có được 2 lít nước – Giải: đưa ra các luật để máy tính tự tìm lời giải: • Luật 1: B8 rỗng -> đổ đầy B8 • Luật 2: B5 đầy -> đổ hết nước trong B5 • Luật 3: Nếu B5 chưa đầy -> đổ nước trong bình B8 sang B5 cho đến khi B5 đầy. Chương 1 - Tổng quan về lập trình và NNLT 26
  • Thuật toán vs. thuật giải• Thuật toán: “Một dãy hữu hạn các bước không mập mờ và có thể thực thi được , quá trình hành động theo các bước này phải dừng và cho được kết quả như mong muốn ”.• Các tính chất của thuật toán: – Xác định (không mập mờ, thực thi được) – Hữu hạn (hữu hạn, dừng) • E.g., Tính tổng các số nguyên dương lẻ. – Đúng (kết quả mong muốn) – Đầu vào/ đầu ra – Tính hiệu quả – Tính tổng quát Chương 1 - Tổng quan về lập trình và NNLT 27
  • Các phương pháp biểu diễn thuậttoán• Ngôn ngữ tự nhiên – Sử dụng quy tắc phân cấp (1.1, 1.1.1…) – Dài dòng, không thể hiện rỏ cấu trúc của thuật toán• Sơ đồ khối (flowchart) – Dùng hình vẻ, ký hiệu…• Mã giả (pseudo-code) – Vay mượn các cú pháp của một ngôn ngữ lập trình nào đó (Pascal, C…) – Một phần của ngôn ngữ tự nhiên Chương 1 - Tổng quan về lập trình và NNLT 28
  • Thuật toán đệ quy• Bỏ các tính chất hữu hạn, xác định, đúng đắn của thuật toán-> thuật toán đệ quy.• Tư tưởng: – Đưa bài toán hiện tại về một bài toán đồng dạng (cùng loại, cùng tính chất) nhưng ở cấp độ thấp hơn -> lần ngược để giải bài toán ở cấp độ cao hơn. – Ví dụ: Tính n! • 0!=1 (phần dừng) • n!=n*(n-1)! (phần đệ quy) Chương 1 - Tổng quan về lập trình và NNLT 29
  • Thuật giải• Nhận xét: – Có nhiều bài toán chưa có lời giải kiểu thuật toán hoặc không biết có tồn tại hay không! – Có nhiều bài toán đã có thuật toán để giải nhưng không chấp nhận đựơc vì: • Thời gian giải quá lớn • Các điều kiện cho thuật toán khó đáp ứng – Có những bài toán giải theo những cách vi phạm thuật toán nhưng vẫn chấp nhận được.• Thuật giải: bỏ tính xác định và tính đúng đắn của thuật toán Chương 1 - Tổng quan về lập trình và NNLT 30
  • Thuật giải Heuristic• Tính chất: – Thường tìm được lời giải tốt (chưa chắc: là tốt nhất) – Chi phí thấp: dễ dàng và nhanh chóng – Tự nhiên, gần gũi với cách suy nghĩ của con người.• Nguyên lý: – Vét cạn thông minh • Giới hạn không gian tìm kiếm • Tìm kiếm đặc biệt dựa vào đặc thù của bài tóan – Tham lam (Greedy) • Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng giai đoạn trong quá trình tìm kiếm lời giải – Thứ tự • Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sảt nhắm nhanh chóng đạt được một lời giải tốt Chương 1 - Tổng quan về lập trình và NNLT 31