
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
lượt xem 8
download

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!
Bình luận(0) Đăng nhập để gửi bình luận!
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
- 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)
- 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
- BÀI TOÁN TÍNH TOÁN
- 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
- 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
- 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
- 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
- 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
- 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
- Phát biểu bài toán Example input 3 1 10 3 14 1 10 output 17 39 5 10 10
- 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
- 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
- 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
- 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
- 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
- Quy trình phân tích Example input 3 1 10 3 14 1 10 output 17 39 5 10 16
- 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
- Quy trình phân tích • Ví dụ: 18
- 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
- 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

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p |
23 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p |
13 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p |
22 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p |
27 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p |
26 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p |
21 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p |
24 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p |
27 |
2
-
Bài giảng Kỹ thuật lập trình: Tập tin - ThS. Đặng Bình Phương
48 p |
14 |
0
-
Bài giảng Kỹ thuật lập trình: Kỹ thuật lập trình đệ quy - ThS. Đặng Bình Phương
44 p |
15 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu cấu trúc - ThS. Đặng Bình Phương
33 p |
15 |
0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p |
16 |
0
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - ThS. Đặng Bình Phương
20 p |
16 |
0
-
Bài giảng Kỹ thuật lập trình: Chuyển đổi kiểu dữ liệu và cấp phát bộ nhớ động - ThS. Đặng Bình Phương
28 p |
18 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Nâng cao) - ThS. Đặng Bình Phương
48 p |
16 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Cơ bản) - ThS. Đặng Bình Phương
40 p |
6 |
0
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p |
14 |
0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật thao tác trên bit - ThS. Đặng Bình Phương
29 p |
18 |
0


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
