1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

44 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Giảng Kỹ Thuật Lập Trình Chương 1
Trường học Trường Đại Học Ngoại Ngữ - Tin Học TP.HCM
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Bài giảng
Thành phố Tp Hồ Chí Minh
Định dạng
Số trang 44
Dung lượng 510,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 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)

Trang 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

Trang 3

BÀI TOÁN TÍNH TOÁN

Trang 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."

Trang 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

Trang 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

Trang 7

Phân loại bài toán

• 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"

Trang 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"

Trang 9

Phát biểu bài toán

Find Divisible

You are given a range of positive integers from 𝑙𝑙 to 𝑟𝑟.

Find such a pair of integers (𝑥𝑥, 𝑦𝑦) that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦.

If there are multiple answers, print any of them.

You are also asked to answer 𝑇𝑇 independent queries.

Input

The first line contains a single integer 𝑇𝑇 (1 ≤ 𝑇𝑇 ≤ 1000) — the number of

queries.

Each of the next 𝑇𝑇 lines contains two integers 𝑙𝑙 and 𝑟𝑟 (1 ≤ 𝑙𝑙 ≤ 𝑟𝑟 ≤ 998244353)

— inclusive borders of the range.

It is guaranteed that testset only includes queries, which have at least one

suitable pair.

Output

Print 𝑇𝑇 lines, each line should contain the answer — two integers 𝑥𝑥 and 𝑦𝑦 such

that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦 The answer in the 𝑖𝑖 − 𝑡𝑡𝑡 line should

correspond to the 𝑖𝑖 − 𝑡𝑡𝑡 query from the input.

If there are multiple answers, print any of them.

Trang 10

Phát biểu bài toán

Trang 11

Phát biểu bài toán

• Mô tả ngữ cảnh/bối cảnh/yêu cầu của bài toán

• Mô tả input

You are given a range of positive integers from 𝑙𝑙 to 𝑟𝑟.

Find such a pair of integers (𝑥𝑥, 𝑦𝑦) that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦.

If there are multiple answers, print any of them.

You are also asked to answer 𝑇𝑇 independent queries.

Input

The first line contains a single integer 𝑇𝑇 (1 ≤ 𝑇𝑇 ≤ 1000) — the number of

queries.

Each of the next 𝑇𝑇 lines contains two integers 𝑙𝑙 and 𝑟𝑟 (1 ≤ 𝑙𝑙 ≤ 𝑟𝑟 ≤ 998244353)

— inclusive borders of the range.

It is guaranteed that testset only includes queries, which have at least one

suitable pair.

Trang 12

Phát biểu bài toán

• Mô tả output

• Các ví dụ và giải thích ví dụ (nếu có)

Output

Print 𝑇𝑇 lines, each line should contain the answer — two integers 𝑥𝑥 and 𝑦𝑦 such that

𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦 The answer in the 𝑖𝑖 − 𝑡𝑡𝑡 line should correspond to the 𝑖𝑖 − 𝑡𝑡𝑡 query from the input.

If there are multiple answers, print any of them.

Trang 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ả

Trang 14

Quy trình phân tích

• Bước 1 Đọc bài toán vài lầ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

• Đọ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

Trang 15

Quy trình phân tích

Find Divisible

You are given a range of positive integers from 𝑙𝑙 to 𝑟𝑟.

Find such a pair of integers (𝑥𝑥, 𝑦𝑦) that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦.

If there are multiple answers, print any of them.

You are also asked to answer 𝑇𝑇 independent queries.

Input

The first line contains a single integer 𝑇𝑇 (1 ≤ 𝑇𝑇 ≤ 1000) — the number of

queries.

Each of the next 𝑇𝑇 lines contains two integers 𝑙𝑙 and 𝑟𝑟 (1 ≤ 𝑙𝑙 ≤ 𝑟𝑟 ≤ 998244353)

— inclusive borders of the range.

It is guaranteed that testset only includes queries, which have at least one

suitable pair.

Output

Print 𝑇𝑇 lines, each line should contain the answer — two integers 𝑥𝑥 and 𝑦𝑦 such

that 𝑙𝑙 ≤ 𝑥𝑥, 𝑦𝑦 ≤ 𝑟𝑟, 𝑥𝑥 ≠ 𝑦𝑦 and 𝑥𝑥 divides 𝑦𝑦 The answer in the 𝑖𝑖 − 𝑡𝑡𝑡 line should

correspond to the 𝑖𝑖 − 𝑡𝑡𝑡 query from the input.

If there are multiple answers, print any of them.

Trang 17

Quy trình phân tích

• 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ể

• 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

Trang 18

Quy trình phân tích

• Ví dụ:

Trang 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

• 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

• 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

Trang 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

• 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)

Trang 21

• Kiểm tra logic của chương trình bằng cách bước qua từng dòng mã

• Thường một bảng desk-check lớn được dùng để theo dõi sự thay đổi

của các biến khi thuật toán chạy

Input Expected results Result achieved

Trang 22

Bài tập luyện tập 1

Repeating Cipher

Polycarp loves ciphers He has invented his own cipher called repeating.

Repeating cipher is used for strings To encrypt the string 𝑠𝑠 = 𝑠𝑠1𝑠𝑠2… 𝑠𝑠𝑚𝑚 (1 ≤ 𝑚𝑚 ≤ 10), Polycarp uses

the following algorithm:

he writes down 𝑠𝑠1 ones,

he writes down 𝑠𝑠2 twice,

he writes down 𝑠𝑠3 three times,

he writes down 𝑠𝑠𝑚𝑚 m times.

For example, if s="bab" the process is: "b" → "baa" → "baabbb" So the encrypted s="bab" is "baabbb".

Given string t — the result of encryption of some string s Your task is to decrypt it, i. e find the string s.

Input:

The first line contains integer 𝑛𝑛 (1 ≤ 𝑛𝑛 ≤ 55 — the length of the encrypted string The second line of

the input contains t — the result of encryption of some string s It contains only lowercase Latin letters

The length of t is exactly n.

It is guaranteed that the answer to the test exists.

Output:

Trang 23

Input output

z

Trang 24

Bài tập luyện tập 2

Array Stabilization

You are given an array 𝑎𝑎 consisting of 𝑛𝑛 integer numbers.

Let instability of the array be the following value: max

1≤𝑖𝑖≤𝑛𝑛 𝑎𝑎𝑖𝑖 − min1≤𝑖𝑖≤𝑛𝑛𝑎𝑎𝑖𝑖You have to remove exactly one element from this array to minimize instability of the resulting

(n−1)-elements array Your task is to calculate the minimum possible instability.

Print one integer — the minimum possible instability of the array if you have to remove exactly

one element from the array 𝑎𝑎.

Trang 25

BIỂU DIỄN DỮ LIỆU

CỦA BÀI TOÁN

Trang 26

Biểu diễn dữ liệu

Dữ liệu cơ bản

• Vô hướng (scalar)

• Danh sách (array/list/vector)

• Bảng (table/matrix)

Trang 27

Dữ liệu vô hướng

Trang 28

num = …

Trang 30

Dữ liệu dạng bảng

Đánh số dòng, số cột trên bảng

Dòng: được đánh số từ 0 → (𝑚𝑚 − 1) từ trên xuống dưới

Cột: được đánh số từ 0 → (𝑛𝑛 − 1) từ trái sang phải xuống

Phần tử (1,3)

Trang 35

Dữ liệu dạng bảng

Xuất bảng số: Mỗi dòng trong bảng xuất trên 1 dòng

for (int i=0; i<m; i++) {

for (int j=0; j<n; j++)Console.Write(a[i,j] + " ");

Trang 39

Dữ liệu dạng bảng

• Các phần tử trên đường chéo chính: 𝑎𝑎[ 𝑘𝑘 , 𝑘𝑘 ] với 𝑘𝑘: 0 → (𝑛𝑛 − 1)

Vị trí (0,0)

Vị trí (1,1) Vị trí (2,2)

Vị trí (3,3)

Trang 40

Dữ liệu dạng bảng

• Phân tích:

• Chỉ số dòng 𝑖𝑖: 0 → (𝑛𝑛 − 1)

• Chỉ số cột 𝑗𝑗: tính trên giá trị của 𝑖𝑖

• Các phần tử trên đường chéo phụ: 𝑎𝑎[ 𝑖𝑖 , ? ? ? ]

Trang 44

Phân tích bài toán

Kiểu dữ liệu cơ bản

Ngày đăng: 21/07/2023, 16:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm