Banner-baigiang-1090_logo1
Banner-baigiang-1090_logo2

Tìm kiếm theo tiêu đề

Tìm kiếm Google

Quảng cáo

Hướng dẫn sử dụng thư viện

Hỗ trợ kĩ thuật

Liên hệ quảng cáo

  • (024) 66 745 632
  • 036 286 0000
  • contact@bachkim.vn

Bài 4. Bài toán và thuật toán

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Tham khảo cùng nội dung: Bài giảng, Giáo án, E-learning, Bài mẫu, Sách giáo khoa, ...
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Lưu Thị Thu Huyền
Ngày gửi: 05h:24' 03-10-2016
Dung lượng: 1.1 MB
Số lượt tải: 328
Số lượt thích: 0 người

Câu Hỏi 1: Máy vi tính có mấy phần chính?
Câu Hỏi 2: Cho ví dụ về thiết bị đầu vào, thiết bị đầu ra.

- Máy vi tính có ba phần chính: Thiết bị đầu vào, Bộ xử lí và Thiết bị đầu ra.


- Thiết bị đầu vào: Bàn phím (Keyboard), chuột (Mouse), máy quét, …
- Thiết bị đầu ra: Màn hình, loa, máy in, máy chiếu (projector),…


Kiểm tra bài cũ

Bài 4: Bài toán và Thuật toán
(Tiết 1)
GVHD: Thầy Nguyễn Khắc Văn
SVTH: Võ Thị Vân
- Xét các yêu cầu trong sau:
Giải PT bậc 2: ax^2+bx+c=0.
Viết 1 dòng chữ ra màn hình máy tính.
Quản lí cán bộ cơ quan.
Tìm UCLN của a và b.
Xếp loại học tập cho hoc sinh trong lớp.
Bài toán
Đâu là bài toán trong tin học, đâu là bài toán trong toán học?
Bài toán trong tin học.
Bài toán trong toán học.




Các yếu tố cần quan tâm khi giải một bài toán:
Toán học: Giả thiết và kết luận (ví dụ lên bảng)
Tin học:
Đưa vào máy tính thông tin gì? Cần lấy ra thông tin gì?
Input Output


Bài toán
Khái niệm về bài toán trong Tin học: là một việc nào đó ta muốn máy tính thực hiện.


Ví dụ: Tìm UCLN của a, b.

Input: Hai số a, b.
Output: UCLN(a,b)

Một bài toán được cấu thành bởi hai thành phần cơ bản là Input và Output
Bài toán
Xác định Input, Output của bài toán
Bài toán

Input Bằng cách nào Output

Giải bài toán

Hướng dẫn các thao tác cho
máy thực hiên để tìm ra lời giải
Bài toán
Thuật toán
Bài toán

Input Thuật toán Output
(thao tác 1 → thao tác 2 → … → thao tác n)
Đinh nghĩa:
Một dãy hữu hạn các thao tác;
Các thao tác được sắp xếp theo một trình tự xác định;
Sau khi thực hiện dãy các thao tác đó từ Input ta tìm được Output của bài toán.
Thuật toán
Học bài và làm bài 1, bài 2 trong SGK và bài 1.28/17 SBT

Đọc sách và chuẩn bị bài cho tiết tiếp theo.
Dặn dò

Bài 4: Bài toán và Thuật toán
(Tiết 2)
Làm thế nào để trình bày thuật toán giải quyết một bài toán cho hợp lý, dễ hiểu và thông qua thuật toán có thể thu được Output từ Input đã cho?

 Tìm hiểu về cách mô tả thuật toán và tính chất của thuật toán).
Thuật toán
Mô tả bằng cách liệt kê.
Ví dụ: Tính diện tích hình chữ nhật.
 Xác định công thức tính S=chiều dài * chiều rộng  Xác định chiều dài chiều rộng  tính diện tích (học sinh phải làm theo thứ tự và không được đảo thứ tự giải bài toán)
Cách mô tả thuật toán
Một cách mô tả thuật toán phổ biến nhất là liệt kê: trình bày theo từng bước có thứ tự nhất định.
Ví du: Tìm số lớn nhất trong hai số a, b
Input: hai số a, b
Output: Max
Thuật toán:
Cách mô tả thuật toán
Input, Output?
Bước 1: Nhập 2 số a,b;
Bước 2: Max  a;
Bước 3:
Bước 3.1: Nếu b > Max thì Max  b;
Bước 3.2: Ngược lại thì Max  a;
2. Mô tả bài toán bằng sơ đồ khối

Các khối, đường được sử dụng:
Hình thoi thể hiện thao tác so sánh.
Hình chữ nhật thể hiện các phép tính toán.
Hình ô van thể hiện thao tác nhập, xuất dữ liệu.
Mũi tên quy định trình tự các thao tác.
Cách mô tả thuật toán
Tính dừng: Thuật toán phải kết thúc sau một số hữu hạn lần thực hiện.
Tính xác định: Sau khi thực hiện một thao tác thì hoặc là có đúng một thao tác xác định để thực hiện tiếp theo.
Tính đúng đắn: Sau khi thuật toán kết thúc, ta phải nhận được Output cần tìm
Tính chất của thuật toán

Bài 4: Bài toán và Thuật toán
(Tiết 3)
1. Xác định bài toán:
- Input: N là một số nguyên dương.
- Output: N là số nguyên tố hoặc N không là số nguyên tố.
2. Ý tưởng:
- Nếu N=1  N không là số nguyên tố.
- Nếu 1- Nếu N>=4: Tìm ước i đầu tiên>1 của N.
+ Nếu i + Nếu i=N  N là số nguyên tố.
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
3. Xây dựng thuật toán:
a. Cách liệt kê:
Bước 1: Nhập số nguyên dương N;
Bước 2: Nếu N=1 thì thông báo N; không là số nguyên tố rồi kết thúc;
Bước 3: Nếu N<4 thì thông báo N là số nguyên tố rồi kết thúc;
Bước 4: i2;
Bước 5: Nếu i là ước của N thì đến bước 7;
Bước 6: ii+1 rồi quay lại bước 5; (tăng I lên 1 đơn vị)
Bước 7: Nếu i=N thì thông báo N là số nguyên tố, ngược lại thì thông báo N không là số nguyên tố rồi kết thúc;
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
b. Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
 
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
 
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
Sơ đồ khối
Ví dụ: Kiểm tra tính nguyên tố của một số nguyên dương
i  2
Nhập N
N = 1?
i  i+1
N không phải là số nguyên tố
Đúng
Sai
Đúng
Sai
N < 4?
N là số nguyên tố
Đúng
Đúng
Sai
Sai
N=25
2 > 5?
i  3
3 > 5?
i  4
4 > 5?
i  5
5 > 5?
25 = 1?
25 < 4?
25 không phải là số nguyên tố
i  2
Nhập N
N = 1?
i  i+1
N không phải là số nguyên tố
Đúng
Sai
Đúng
Sai
N < 4?
N là số nguyên tố
Đúng
Đúng
Sai
Sai
N=29
2 > 5?
i  3
3 > 5?
i  4
4 > 5?
i  5
5 > 5?
29 = 1?
29 < 4?
i  6
6 > 5?
29 là số nguyên tố

Bài 4: Bài toán và Thuật toán
(Tiết 4)
Dãy A chưa được sắp xếp
Dãy A được sắp xếp
Xác định bài toán:

Input: Dãy A gồm N số nguyên a1, a2, .., an
VD: Dãy A gồm các số nguyên 2 4 8 7 1 5
Output: Dãy A được sắp xếp thành dãy không giảm
Dãy A sau khi sắp xếp: 1 2 4 5 7 8
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
2. Ý tưởng:

- Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước > số sau, ta đổi chỗ chúng cho nhau. (Các số lớn sẽ được đẩy dần về vị trí xác định cuối dãy)
- Việc này lặp lại nhiều lượt, mỗi lượt tiến hành nhiều lần so sánh cho đến khi không có sự đổi chỗ nào xảy ra nữa.

Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
3. Xây dựng thuật toán:
Nhập N, các số hạng a1, a2, .., an.
Đầu tiên gọi M là số hạng cần so sánh, vậy M sẽ chứa giá trị của N: MN
Nếu số số hạng cần so sánh < 2 thì dãy đã được sắp xếp. Kết thúc.
M chứa giá trị mới là số phép so sánh cần thực hiện trong lượt: M M-1
Gọi i là số thứ tự của mỗi lần so sánh, đầu tiên i  0.
Để thực hiện lần so sánh mới, I tăng lên lần 1 (lần so sánh thứ i)
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
3. Xây dựng thuật toán:
Nếu lần so sánh thứ i > số phép so sánh M: đã hoàn tất M số phép so sánh của lượt này.
Lặp lại bước 3, bắt đầu lượt kế tiếp (với số hạng cần so sánh mới chính là M đã giảm 1).
So sánh 2 phần tử ở lần thứ I là ai
và ai+1
Nếu ai>ai+1 thì tráo đổi 2 phần tử này.
Quay lại bước 5.
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
a. Cách liệt kê
Bước 1: Nhập N, các số hạng a1, a2,..,an;
Bước 2: M  N;
Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắp xếp, rồi kết thúc;
Bước 4: M  M-1; i 0;
Bước 5: i  i-1;
Bước 6: Nếu i> M thì quay lại bước 3;
Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
Bước 8: Quay lại bước 5;
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
b. Sơ đồ khối
Ví dụ: Bài toán sắp xếp bằng cách tráo đổi
Mô phỏng thực hiện thuật toán
6
1
5
3
7
8
10
7
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
6
5
1
3
7
8
10
7
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
6
3
1
5
7
8
10
7
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
1
5
3
6
7
8
10
7
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
1
5
3
6
7
8
10
7
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
1
5
3
6
7
8
10
7
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
10
7
1
5
7
8
3
6
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
3
6
1
5
7
8
7
10
12
4
Lần duyệt 1
Mô phỏng thực hiện thuật toán
12
4
1
5
7
8
7
10
3
6
Lần duyệt 1
Mô phỏng thực hiện thuật toán
3
6
1
5
7
8
7
10
4
12
Lần duyệt 1
Kết quả Lần duyệt 1
Mô phỏng thực hiện thuật toán
6
1
7
8
7
10
4
12
5
3
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
8
7
10
4
12
3
5
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
8
7
10
4
12
3
5
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
8
7
10
4
12
3
5
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
10
4
12
3
5
8
7
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
7
8
10
4
12
3
5
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
7
8
12
3
5
10
4
Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
7
8
4
10
12
3
5
Lần duyệt 2
Kết quả Lần duyệt 2
Mô phỏng thực hiện thuật toán
6
1
7
7
10
12
3
5
Lần duyệt 3
8
4
Mô phỏng thực hiện thuật toán
6
1
7
7
4
8
10
12
3
5
Lần duyệt 3
Kết quả Lần duyệt 3
Mô phỏng thực hiện thuật toán
6
1
7
8
10
12
3
5
Lần duyệt 4
7
4
Mô phỏng thực hiện thuật toán
6
1
7
4
7
8
10
12
3
5
Lần duyệt 4
Kết quả Lần duyệt 4
Mô phỏng thực hiện thuật toán
6
1
7
8
10
12
3
5
Lần duyệt 5
7
4
Mô phỏng thực hiện thuật toán
6
1
4
7
7
8
10
12
3
5
Lần duyệt 5
Kết quả Lần duyệt 5
Mô phỏng thực hiện thuật toán
7
1
7
8
10
12
3
5
Lần duyệt 6
6
4
Mô phỏng thực hiện thuật toán
4
1
6
7
7
8
10
12
3
5
Lần duyệt 6
Kết quả Lần duyệt 6
Mô phỏng thực hiện thuật toán
7
1
7
8
10
12
3
6
Lần duyệt 7
5
4
Mô phỏng thực hiện thuật toán
5
1
6
7
7
8
10
12
3
4
Lần duyệt 7
Kết quả Lần duyệt 7
Mô phỏng thực hiện thuật toán
5
1
6
7
7
8
10
12
3
4
Lần duyệt 8
Kết quả Lần duyệt 8
Mô phỏng thực hiện thuật toán
4
1
6
7
7
8
10
12
3
5
Lần duyệt 9
Kết quả Lần duyệt 9
Mô phỏng thực hiện thuật toán
4
1
6
7
7
8
10
12
3
5
Lần duyệt 10
Kết quả Lần duyệt 10

Bài 4: Bài toán và Thuật toán
(Tiết 5)
1. Xác định bài toán:
Input: Dãy A gồm N số nguyên khác nhau: a1, a2,…, an và một số nguyên k (khóa)
VD: Dãy A gồm các số nguyên 5 7 1 4 2 9 8 11 25 51. Và k = 2 (k=6)
Output: Vị trí I mà ai = k hoặc thông báo không tìm thấy k trong dãy.
Vị trí của 2 trong dãy là 5 (không tìm thấy 6).
Ví dụ: Bài toán tìm kiếm

2. Ý tưởng:
Tìm kiếm tuần tự được thực hiện một cách tự nhiên: lần lượt đi từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi gặp một số hạng bằng khóa hoặc dãy đã được xét hết mà không tìm thấy giá trị của khóa trên dãy.
Ví dụ: Bài toán tìm kiếm tuần tự
3. Xây dưng bài toán
a. Cách liệt kê:
Bước 1: Nhập N, các số hạng a1, a2, .. ,an và giá trị khóa k;
Bước 2: i 1;
Bước 3: Nếu ai =k thì thông báo chỉ số I, rồi kết thúc;
Bước 4: i  i+1;
Bước 5: Nếu I > N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc;
Bước 6: Quay lại bước 3;
Ví dụ: Bài toán tìm kiếm tuần tự
b. Sơ đồ khối
Ví dụ: Bài toán tìm kiếm tuần tự
Mô phỏng: Bài toán tìm kiếm tuần tự
k = 2 và N = 10
i
A[1] = 5 <> 2
A[2] = 7 <> 2
A[3] = 1 <> 2
A[4] = 4 <> 2
A[5] = 2 = 2
Với i = 5 thì A[5] = 2 = k
1. Xác định bài toán:
Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1, a2,..,an, và một số nguyên k.
VD:Dãy A gồm các số nguyên 2 4 5 6 9 21 22 30 31 33. Và k = 21 (k=25)
Output: Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy.
Vị trí của 21 trong dãy là 6 (không tìm thấy 25).
Ví dụ: Bài toán tìm kiếm nhị phân
2. Ý tưởng:
Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh vùng tìm kiếm bằng cách so sánh k với số hạng ở giữa phạm vi tìm kiếm (agiữa), khi đó chỉ xảy ra một trong ba trường hợp:
- Nếu agiữa = k =>tìm được chỉ số, kết thúc;
- Nếu agiữa > k =>việc tìm kiếm thu hẹp, chỉ xét từ agiữa+1acuối (phạm vi).
Quá trình trên được lặp lại cho đến khi tìm thấy khóa trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.
Ví dụ: Bài toán tìm kiếm nhị phân
3. Xây dựng thuật toán:
a. Cách liệt kê:
Bước 1: Nhập N, các số hạng a1, a2,.., an và giá trị khóa k;
Bước 2: Đầu  1; Cuối  N;
Bước 3: Giữa  [(Đầu + Cuối)]/2;
Bước 4: Nếu agiữa = k thì thông báo chỉ số Giữa, rồi kết thúc;
Bước 5: Nếu agiữa > k thì đặt Cuối = Giữa -1 rồi sang bước 7;
Bước 6: Đầu  Giữa + 1;
Bước 7: Nếu Đầu > Cuối thì thông báo không tìm thấy khóa k trên dãy rồi kết thúc;
Bước 8: Quay lại bước 3.
Ví dụ: Bài toán tìm kiếm nhị phân
b. Sơ đồ khối
Ví dụ: Bài toán tìm kiếm nhị phân
Mô phỏng: Bài toán tìm kiếm nhị phân
k = 21 và N = 10
Với i = Giua = 6 thì A[Giua] = 21 = k
Cảm ơn các em!
 
Gửi ý kiến