intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Chương 1 - Trường Đại học Ngoại ngữ - Tin học TP.HCM

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:44

14
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Kỹ thuật lập trình: Chương 1 Phát biểu bài toán, cung cấp cho người đọc những kiến thức như: Bài toán tính toán; Biểu diễn dữ liệu của bài toán; Dữ liệu vô hướng; Dữ liệu dạng danh sách; Dữ liệu dạng bảng; Dữ liệu dạng khác;...Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 1 - Trường Đại học Ngoại ngữ - Tin học TP.HCM

  1. PHÁT BIỂU BÀI TOÁN Khoa Công nghệ thông tin Trường đại học Ngoại ngữ - Tin học TP.HCM (HUFLIT)
  2. Nội dung • Bài toán tính toán • Định nghĩa "Bài toán tính toán" • Phân loại bài toán • Phát biểu bài toán • Quy trình phân tích • Biểu diễn dữ liệu của bài toán • Dữ liệu vô hướng • Dữ liệu dạng danh sách • Dữ liệu dạng bảng • Dữ liệu dạng khác 2
  3. BÀI TOÁN TÍNH TOÁN
  4. Bài toán tính toán • Bài toán tính toán • Bài toán tính toán (computational problem) là một tập các câu hỏi toán học mà máy tính có thể giải quyết được • Ví dụ: • "Given a positive integer n, determine if n is prime." • "Given a positive integer n, find a nontrivial prime factor of n." 4
  5. Bài toán tính toán • Giải quyết bài toán tính toán • Có tư duy logic, tư duy toán học cơ bản • Có tư duy tính toán/kỹ thuật lập trình (computational thinking) • Nghiên cứu các Data structures • Mảng (array) • Bảng (table) • Stack • Queue • Cây (Tree) • Set • Hash • Graph • … 5
  6. Bài toán tính toán • Giải quyết bài toán tính toán • Nghiên cứu một số loại Algorithms Nghiên cứu các phương pháp/mô hình giải quyết cho từng lĩnh vực • Graph Algorithms • Tree Algorithms • Geometric Algorithms • Algorithms on strings • Cryptographic algorithms • Machine learning algorithms • … 6
  7. Phân loại bài toán • Chúng ta có thể chia bài toán thành 4 loại: • Bài toán ra quyết định (decision problem) • Câu trả lời là: Yes hay No • "Given a positive integer n, determine if n is prime." • Bài toán tìm kiếm (search problem) • Yêu cầu: tìm các đáp án/nghiệm • "Given a positive interger n, print all prime factors of n" 7
  8. Phân loại bài toán • Bài toán đếm (counting problem) • Yêu cầu: tìm số lượng lời giải (đếm) của bài toán tìm kiếm • "Given a positive integer n, count the number of nontrivial prime factors of n." • Bài toán tối ưu (optimization problem) • Yêu cầu: tìm lời giải tối ưu nhất có thể của bài toán tìm kiếm • "Given a graph G, find a shortest path from x to y" 8
  9. Phát biểu bài toán You are given a range of positive integers from 𝑙𝑙 to 𝑟𝑟. Find Divisible Find such a pair of integers (𝑥𝑥, 𝑦𝑦) that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦. You are also asked to answer 𝑇𝑇 independent queries. If there are multiple answers, print any of them. The first line contains a single integer 𝑇𝑇 (1 ≤ 𝑇𝑇 ≤ 1000) — the number of Input Each of the next 𝑇𝑇 lines contains two integers 𝑙𝑙 and 𝑟𝑟 (1 ≤ 𝑙𝑙 ≤ 𝑟𝑟 ≤ 998244353) queries. — inclusive borders of the range. It is guaranteed that testset only includes queries, which have at least one suitable pair. Print 𝑇𝑇 lines, each line should contain the answer — two integers 𝑥𝑥 and 𝑦𝑦 such that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦. The answer in the 𝑖𝑖 − 𝑡𝑡 𝑡 line should Output correspond to the 𝑖𝑖 − 𝑡𝑡 𝑡 query from the input. If there are multiple answers, print any of them. 9
  10. Phát biểu bài toán Example input 3 1 10 3 14 1 10 output 17 39 5 10 10
  11. Phát biểu bài toán • 4 thành phần của một bài toán • Mô tả ngữ cảnh/bối cảnh/yêu cầu của bài toán You are given a range of positive integers from 𝑙𝑙 to 𝑟𝑟. Find such a pair of integers (𝑥𝑥, 𝑦𝑦) that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦. You are also asked to answer 𝑇𝑇 independent queries. If there are multiple answers, print any of them. • Mô tả input The first line contains a single integer 𝑇𝑇 (1 ≤ 𝑇𝑇 ≤ 1000) — the number of Input Each of the next 𝑇𝑇 lines contains two integers 𝑙𝑙 and 𝑟𝑟 (1 ≤ 𝑙𝑙 ≤ 𝑟𝑟 ≤ 998244353) queries. — inclusive borders of the range. It is guaranteed that testset only includes queries, which have at least one suitable pair. 11
  12. Phát biểu bài toán • 4 thành phần của một bài toán • Mô tả output Print 𝑇𝑇 lines, each line should contain the answer — two integers 𝑥𝑥 and 𝑦𝑦 such that Output 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦. The answer in the 𝑖𝑖 − 𝑡𝑡 𝑡 line should correspond to the 𝑖𝑖 − 𝑡𝑡 𝑡 query from the input. If there are multiple answers, print any of them. • Các ví dụ và giải thích ví dụ (nếu có) input output 3 17 1 10 39 3 14 5 10 1 10 12
  13. Quy trình phân tích • Bước 1. Đọc bài toán vài lần • Bước 2. Giải thử bài toán trên giấy, trên bảng • Bước 3. Đánh giá, tinh chỉnh lời giải ban đầu tốt hơn • Bước 4. Viết mã giả • Bước 5. Cài đặt chương trình • Bước 6. Kiểm tra chương trình 13
  14. Quy trình phân tích • Bước 1. Đọc bài toán vài lần • Đọc ngữ cảnh/bối cảnh/yêu cầu của bài toán • Gạch dưới những yêu cầu chính, những điều kiện ràng buộc • Đọc phần input, output của bài toán • Mục tiêu: • Hiểu bài toán • Có cảm giác thân thuộc với các khái niệm trong bài toán • Tiêu chí đánh giá: có thể mô tả/giải thích đề cho người khác 14
  15. Quy trình phân tích You are given a range of positive integers from 𝑙𝑙 to 𝑟𝑟. Find Divisible Find such a pair of integers (𝑥𝑥, 𝑦𝑦) that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦. You are also asked to answer 𝑇𝑇 independent queries. If there are multiple answers, print any of them. The first line contains a single integer 𝑇𝑇 (1 ≤ 𝑇𝑇 ≤ 1000) — the number of Input Each of the next 𝑇𝑇 lines contains two integers 𝑙𝑙 and 𝑟𝑟 (1 ≤ 𝑙𝑙 ≤ 𝑟𝑟 ≤ 998244353) queries. — inclusive borders of the range. It is guaranteed that testset only includes queries, which have at least one suitable pair. Print 𝑇𝑇 lines, each line should contain the answer — two integers 𝑥𝑥 and 𝑦𝑦 such that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦. The answer in the 𝑖𝑖 − 𝑡𝑡 𝑡 line should Output correspond to the 𝑖𝑖 − 𝑡𝑡 𝑡 query from the input. If there are multiple answers, print any of them. 15
  16. Quy trình phân tích Example input 3 1 10 3 14 1 10 output 17 39 5 10 16
  17. Quy trình phân tích • Bước 2. Thử giải quyết bài toán trên giấy/trên bảng • Giải các ví dụ trong bài toán • Lấy thêm ví dụ khác để giải, từ số nhỏ đến số lớn • Trong quá trình giải các ví dụ, hình dung/chú ý các bước cần thực hiện bằng tư duy tính toán • Mục tiêu: • Hiểu rõ bài toán hơn • Hình thành các bước giải ban đầu cho bài toán • Tiêu chí đánh giá: Có thể giải được các ví dụ cụ thể 17
  18. Quy trình phân tích • Ví dụ: 18
  19. Quy trình phân tích • Bước 3. Đánh giá, tinh chỉnh lời giải ban đầu tốt hơn • Chú ý các điều kiện ràng buộc trong bài toán • Kiểm tra lời giải ban đầu có đúng chưa • Thời gian chạy có hợp lý không • Từ lời giải ban đầu, từ mô tả bài toán • Tìm thêm các mối quan hệ • Biến đổi các quan hệ để được các bước tính toán ngắn gọn hơn • Mục tiêu: • Kiểm tra tính đúng đắn của lời giải • Cải tiến tốc độ của lời giải • Tiêu chí đánh giá: Lời giải có độ phức tạp phù hợp với ràng buộc miền giá trị các biến 19
  20. Quy trình phân tích • Bước 4. Viết mã giả • Mô tả cấu trúc dữ liệu quan trọng của bài toán • Phát họa ra giấy/trên bảng các bước của lời giải • Dự kiến các hàm, các lớp trong chương trình • Bước 5. Cài đặt chương trình • Khai báo các biến • Cài đặt từng bước của thuật toán • Suy nghĩ rõ từng lệnh trước khi viết (các lệnh được viết một cách chắc chắn, có lý do) 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0