Vấn đề ngôn ngữ lập trình

Slides:



Advertisements
Similar presentations
GV: Nguyễn Thị Thúy Hiền PHÒNG GD&ĐT PHÚ VANG TRƯỜNG THCS PHÚ THƯỢNG.
Advertisements

5.
By Nguyen Minh Quy - UTEHY
LOGO JOOMLA & PHP See How easy it is! Trung tâm đào tạo lập trình viên quốc tế Aprotrain -Aptech Làm web trong 10 phút Diễn giả : Đặng Tuấn Tú.
11 B4. Phân tích dữ liệu. 22 Những nội dung chính Sử dụng thống kê trong NCKHƯD Vai trò của thống kê trong NCKHSPƯD PHÂN TÍCH DỮ LIỆU 1. Mô tả dữ liệu.
Cách trộn thư trong Office 2003 Ứng dụng để làm giấy khen, giấy mời.
Chào mừng quý thầy cô và các em TRƯỜNG THPT TRẦN VĂN KỶ TỔ LÝ – TIN - KTCN.
BÀI 3. ĐƯỜNG THẲNG VÀ MẶT PHẲNG SONG SONG SỞ GD&ĐT ĐIỆN BIÊN TRƯỜNG THCS-THPT TẢ SÌN THÀNG BÀI DỰ THI SOẠN GIẢNG E-LEARNING Chương II ĐƯỜNG THẲNG VÀ MẶT.
Javascript Giáo viên: TS. Trương Diệu Linh Bộ môn Truyền thông & Mạng
Orientation Các vấn đề về IT.
Các kiểu dữ liệu trong VB
Giáo viên: Nguyễn Ngọc Thúy Hằng Đơn vị: Trường THPT Lê Quý Đôn
BIỆN PHÁP TRÁNH THAI TỰ NHIÊN ĐỐI TƯỢNG: CĐ HỘ SINH THỜI GIAN: 4 TIẾT.
CHƯƠNG 5. CẤU TẠO ĐƯỜNG KIẾN TẠO. Nội dung chính KHÁI NIỆM CHUNG CÁC DẠNG CẤU TẠO ĐƯỜNG KIẾN TẠO CÁCH ĐO ĐẠC VÀ THU THẬP CÁC SỐ LIỆU CẤU TẠO ĐƯỜNG.
CHƯƠNG 5: PHP & MySQL (tiếp)
TRAO ĐỔI KINH NGHIỆM PHƯƠNG PHÁP ÔN LUYỆN & KỸ NĂNG THI TOEIC
1 BÀI 6 BẤM CÁP VÀ CHIA SẺ DỮ LIỆU MẠNG. 2 Nội Dung  Bấm cáp xoắn đôi đúng chuẩn Phương pháp bấm cáp chuẩn A Phương pháp bấm cáp chuẩn B  Kết nối máy.
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C/C++
Thị trường mới ThS. Nguyễn Văn Thoan
Chương 1: mạng máy tính và Internet
Kính Chào Cô và Các b ạ n thân m ế n !!!!!. HÌNH THỨC CHÍNH THỂ CỦA NHÀ NƯỚC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM VÀ MỘT SỐ NƯỚC TRÊN THẾ GIỚI. Thuyết trình.
Tác tử thông minh.
Ngôn ngữ lập trình C/C++
SỬ DỤNG EXCEL ĐỂ TRÍCH KHẤU HAO TSCĐ
Bảo mật - Mã hóa dữ liệu Nội dung trình bày :
CHƯƠNG 9 PHẦN MỀM POWERPOINT
BÀI 4 CÔNG NGHỆ THÔNG TIN VÀ CHUỖI CUNG ỨNG
© 2007 Thomson South-Western
Hướng dẫn viết đề cương nghiên cứu
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++
Kỹ Năng Ghi Nhận - Affirmation
© 2007 Thomson South-Western
OBJECT-ORIENTED ANALYSIS AND DESIGN WITH UML 2.0
Ràng buộc toàn vẹn (Integrity Constraint)
BÀI THUYẾT TRÌNH NGÔN NGŨ LẬP TRÌNH
Hệ quản trị Cơ sở dữ liệu Giới thiệu
Flow of Control.
Chương 1: Khái quát về dự án đầu tư.
Ra quyết định kinh doanh
Theo mặc định toàn bộ dung lượng dùng lưu trữ, các thư mục hiện có trong các Partition , các dịch vụ hệ thống đã được chia sẽ cho mọi người được phép sử.
Nơi Microsoft Oulook Chứa Và Data
Policy Analysis Tools of the Trade NMDUC 2009.
Con trỏ Bài 8.
Cấu hình đơn giản cho Router
Ring ? Bus ? ? Mesh ? Start ?. Ring ? Bus ? ? Mesh ? Start ?
Môn: Lập trình Hướng đối tượng (Object Oriented Programming)
Chương 6 Các chiến lược tiếp thị
TÀI LIỆU GIẢNG DẠY IC3 GS4 SPARK
GIÁO TRÌNH ĐÀO TẠO TRƯỜNG ĐẠI HỌC SÀI GÒN
Bài 8 (6 tiết): CÂY (TREE) A. CÂY VÀ CÂY NHỊ PHÂN (2 tiết)
HỆ ĐIỀU HÀNH MẠNG.
ỨNG DỤNG HIV INFO 3.0 QUẢN LÝ SỐ LIỆU NGƯỜI NHIỄM HIV/AIDS
File Transfer Protocol (FTP) là cơ chế truyền tin dưới dạng tập tin (file). Thông qua giao thức TCP/IP FTP là dịch vụ đặc biệt vì nó dùng tới 2 port Port.
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Mảng Bài 7.
BÀI 29: LỌC DỮ LIỆU TỪ DANH SÁCH DỮ LIỆU
Chương 4 - CÁC MÔ ĐUN ĐiỀU KHIỂN TRONG HỆ THỐNG CƠ ĐiỆN TỬ
1. Đổi chỗ trực tiếp – Interchange Sort
Phương pháp Nghiên cứu khoa học (SCIENTIFIC RESEARCH METHODOLOGY)
Lớp DH05LN GIÁO VIÊN PHỤ TRÁCH ThS. NGUYỄN QUỐC BÌNH
Environment, Health and Safety Policy
KỸ NĂNG LUYỆN TRÍ NHỚ ThS. Huỳnh Phạm Ngọc Lâm.
Please click through slides at your leisure
Chương 3. Lập trình trong SQL Server TRIGGER
AUDIO DROPBOX - TUTORIALS
2D Transformations Các phép biến đổi 2D
Module 2 – CSR & Corporate Strategy
SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐIỆN BIÊN TRƯỜNG THPT MÙN CHUNG
Quản trị rủi ro Những vấn đề căn bản Nguyễn Hưng Quang 07/11/2015 NHẬT HOA IC&T.
Nghiên cứuLập kế hoạch Thực thi giao tiếp Đánh giá.
Presentation transcript:

Vấn đề ngôn ngữ lập trình Dùng C/C++ để diễn đạt => Có vấn đề? Mã giả (pseudo code) Giả lập, thường là dễ hiểu, không chi tiết đến các kỹ thuật lập trình Ở cấp độ hết sức tổng quát: gần ngôn ngữ tự nhiên Hoặc rất chi tiết: như dùng ngôn ngữ tựa Pascal, tựa C++ Chương 1: Tổng quan

Giải thuật bằng mã giả Ví dụ: Mã giả của bubble sort Giải thuật 1 Algorithm Bubble sort Input: The list A of n elements is given Output: The list A is sorted 1. loop for n time 1.1. for each pair in the list 1.1.1. if it is not in ordered 1.1.1.1. exchange them End Bubble sort Input: The list A of n elements is given Output: The list A is sorted  1. for outter in 0..(n-2) 1.1. for inner in 0..(n-2- outter) 1.1.1. if Ainner+1 < Ainner 1.1.1.1. swap Ainner, Ainner+1 Chương 1: Tổng quan

Giải thuật bằng ngôn ngữ lập trình Ví dụ: Lập trình cụ thể Bubble sort Giải thuật 1: Pascal Giải thuật 2: C++ procedure BubbleSort(var A: list);  var   i,j: int;  begin    for i := 1 to n-1 do      for j := 1 to (n-1-i) do        if A[j+1] < A[j] then        begin          tmp := A[j];  A[j] := A[j+1]; A[j+1] := tmp;         end;  end; void BubbleSort(list A)  { int i, j;    for (i=0; i < n-2; i++)      for (j=0; j<(n-2-i); j++)        if (A[j+1] < A[j]) {         tmp := A[j];  A[j] := A[j+1];  A[j+1] := tmp;         }  } Chương 1: Tổng quan

So sánh mã giả và NNLT Nhận xét: Mã giả 1: gần với cách trao đổi của con người nhất nhưng khó lập trình nhất Mã giả 2: dễ lập trình hơn Phương pháp: Đầu tiên: cách giải quyết vấn đề bằng máy tính số (giải thuật bằng mã giả) Sau đó: ngôn ngữ lập trình cụ thể Học: Nhớ giải thuật (mã giả) Dùng NNLT cụ thể để minh chứng Chương 1: Tổng quan

Khai báo một class trên C++ class Student { private: int StudentID; string StudentName; public: Student(); Student(const Student &) ~Student() void operator=(const Student &) void print(); }; void main() { Student aStudent; sStudent.print(); } khai báo một lớp mới khai báo dữ liệu bên trong constructor copy constructor destructor overload assignment operator phương thức (hành vi) khai báo một đối tượng gọi phương thức Chương 1: Tổng quan

Dùng ghi chú làm rõ nghĩa 1. Ghi chú vào đầu mỗi hàm (a) Người lập trình, ngày, bản sao (b) Mục đích của hàm (c) Input, output (d) Các chỉ dẫn đến các tài liệu khác (nếu có) Có thể dùng dạng: Precondition và Postcondition 2. Ghi chú vào mỗi biến, hằng, kiểu 3. Ghi chú vào mỗi phần của chương trình 4. Ghi chú mỗi khi dùng các kỹ thuật đặc biệt Chương 1: Tổng quan

Dùng ghi chú làm rõ nghĩa – Ví dụ void Life::update() /* Pre: grid đang chứa một trạng thái của thực thể sống Post: grid sẽ chứa trạng thái tiến hóa mới của thực thể sống này */ { int row, col; int new_grid[maxrow + 2][maxcol + 2]; //Chứa trạng thái mới vào đây for (row = 1; row <= maxrow; row++) for (col = 1; col <= maxcol; col++) switch (neighbor_count(row, col)) { case 2: //Trạng thái của tế bào không đổi new_grid[row][col] = grid[row][col]; break; case 3: //Tế bào sẽ sống new_grid[row][col] = 1; break; default: //Tế bào sẽ chết new_grid[row][col] = 0; } grid[row][col] = new_grid[row][col]; //Cập nhật các tế bào cùng lúc Chương 1: Tổng quan

Trò chơi Life Luật: Một ma trận các tế bào là sống hay chết Các tế bào lân cận được tính là tám ô xung quanh Quá trình tiến hoá áp dụng cho một trạng thái hiện tại Một tế bào sống là sống ở thế hệ kế nếu có 2 hoặc 3 tế bào sống lân cận và chết trong trường hợp khác Một tế bào đang chết sẽ sống ở thế hệ kế nếu nó có chính xác 3 tế bào sống lân cận, nếu không nó vẫn chết tiếp. Tất cả các tế bào được kiểm chứng cùng một lúc để quyết định trạng thái sống, chết ở thế hệ kế Chương 1: Tổng quan

Trò chơi Life – Ví dụ Chương 1: Tổng quan

Trò chơi Life – Thiết kế phương thức Chương 1: Tổng quan

Trò chơi Life – Thiết kế class const int maxrow = 20 const maxcol = 60; class Life { public: void initialize( ); void print( ); void update( ); private: int grid[maxrow][maxcol]; int neighbor_count(int row, int col); }; Chương 1: Tổng quan

Trò chơi Life – Đếm số tế bào sống lân cận Mã C++: count = 0 for (i = row − 1; i <= row + 1; i++) for (j = col − 1; j <= col + 1; j++) count += grid[i][j]; count −= grid[row][col]; Sai chỗ nào? Nếu như row hoặc col là ngay các biên của array Các giá trị của các tế bào không là 1 hoặc 0 Chương 1: Tổng quan

Trò chơi Life – Thay đổi thiết kế Giải pháp: Thêm vào 2 cột và 2 hàng giả có giá trị luôn là 0 Khai báo dữ liệu: grid[maxrow + 2][maxcol + 2] Chương 1: Tổng quan

Trò chơi Life – Giải thuật cập nhật Algorithm Update Input: một trạng thái sống Output: trạng thái của thế hệ kế tiếp 1. Khai báo một grid mới 2. Duyệt qua toàn bộ tế bào của trạng thái hiện tại 2.1. Đếm số tế bào sống xung quanh ô hiện tại 2.2. Nếu là 2 thì trạng thái mới chính là trạng thái cũ 2.3. Nếu là 3 thì trạng thái mới là sống 2.4. Ngược lại là chết 3. Cập nhật grid mới vào trong grid cũ End Update Chương 1: Tổng quan

Trò chơi Life – Mã C++ cập nhật void Life::update() /* Pre: grid đang chứa một trạng thái của thực thể sống Post: grid sẽ chứa trạng thái tiến hóa mới của thực thể sống này */ { int row, col; int new_grid[maxrow + 2][maxcol + 2]; //Chứa trạng thái mới vào đây for (row = 1; row <= maxrow; row++) for (col = 1; col <= maxcol; col++) switch (neighbor_count(row, col)) { case 2: //Trạng thái của tế bào không đổi new_grid[row][col] = grid[row][col]; break; case 3: //Tế bào sẽ sống new_grid[row][col] = 1; break; default: //Tế bào sẽ chết new_grid[row][col] = 0; } grid[row][col] = new_grid[row][col]; //Cập nhật các tế bào cùng lúc Chương 1: Tổng quan

Kết luận Sự liên quan giữa CTDL và giải thuật: Cấu trúc dữ liệu cụ thể: chọn giải thuật Giải thuật cụ thể: chọn cấu trúc dữ liệu Cấu trúc dữ liệu trừu tượng: Dữ liệu cụ thể bên trong Các phương thức: interface ra bên ngoài Thích hợp cho phương pháp hướng đối tượng Chương 1: Tổng quan