Cho 2 số nguyên a và b (a≠0). có thuật toán được mô tả bằng cách liệt kê như sau

Giúp mình câu này với mn ơi.Câu 2 ( 2.0 điểm ) : Trình bày thuật toán giải bài toán sau ( bằng cách liệt kê hoặc sơ đồ khối ) : Tìm giá trị lớn nhất của dãy số nguyên A = { A1 , A2 , A3 , ... , AN ) . Mô phỏng thuật toán trên với dãy A = { 5 , 1 , 3 , 18 , 6 , 5 , 20 , 4 , 103 .

1.1. Khái niệm bài toán

a. Khái niệm

b. Ví dụ

  • Tìm USCLN của 2 số nguyên dương

  • Tìm số lớn nhất trong 3 số nguyên dương a,b,c

  • Tìm nghiệm của phương trình bậc nhất: ax + b = 0 (a≠0)

1.2. Khái niệm thuật toán

a. Khái niệm

Thuật toán để giải một bài toán là:

  • Một dãy hữu hạn các thao tác (tính dừng)

  • Các thao tác được tiến hành theo một trình tự xác định (tính xác định)

  • Sau khi thực hiện xong dãy các thao tác đó ta nhận được Output của bài toán (tính đúng đắn)

b. Cách biểu diễn thuật toán

Có 2 cách để biểu diễn thuật toán:

Cho 2 số nguyên a và b (a≠0). có thuật toán được mô tả bằng cách liệt kê như sau

2. Bài tập minh họa

Câu 1: Chỉ ra Input và Outphut của bài toán: Kiểm tra tính nguyên tố.

Hướng dẫn giải:

1. Xác định bài toán

  • Input: N là một số nguyên dương

  • Output:

  • Định nghĩa: “Một số nguyên dương N là số nguyên tố nếu nó chỉ có đúng hai ước là 1 và N”

  • Tính chất:

2. Ý tưở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ố”, kết thúc;

  • Bước 3: Nếu N

  • Bước 4: \(i \leftarrow2 ;\)

  • Bước 5: Nếu i là ước của N thì đến bước 7

  • Bước 6: \(i \leftarrow 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ố”, kết thúc;

b) Sơ đồ khối

Cho 2 số nguyên a và b (a≠0). có thuật toán được mô tả bằng cách liệt kê như sau

Lưu ý: Nếu N >= 4 và không có ước trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N thì N là số nguyên tố

Câu 2: Sắp xếp bằng cách tráo đổi

Hướng dẫn giải:

1. Xác định bài toán

  • Input: Dãy A gồm N số nguyên a1, a2,…,an

  • Output: Dãy A được sắp xếp thành dãy không giảm

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

3. Xây dựng thuật toán

  • Bước 1. Nhập N, các số hạng a1, a2,…,an;

  • Bước 2. Đầu tiên gọi M là số số hạng cần so sánh, vậy M sẽ chứa giá trị của N: \(M \leftarrow N\);

  • Bước 3. Nếu số số hạng cần so sánh

  • Bước 4. M chứa giá trị mới là số phép so sánh cần thực hiện trong lượt: \(M \leftarrow M-1\). Gọi i là số thứ tự của mỗi lần so sánh, đầu tiên i 0;

  • Bước 5. Để thực hiện lần so sánh mới, i tăng lên 1 (lần so sánh thứ i)

  • Bước 6. 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ế (với số số hạng cần so sánh mới chính là M đã giảm 1 ở bước 4);

  • Bước 7. 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;

  • Bước 8. Quay lại bước 5

a) Đối chiếu, hình thành các bước liệt kê

  • Bước 1: Nhập N, các số hạng a1, a2,…,an;

  • Bước 2: \(M \leftarrow N ;\)

  • Bước 3: Nếu M

  • Bước 4: \(M \leftarrow M-1 ; i \leftarrow 0 ;\)

  • Bước 5: \( i \leftarrow 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;

b) Sơ đồ khối

Cho 2 số nguyên a và b (a≠0). có thuật toán được mô tả bằng cách liệt kê như sau

Câu 3: Tìm kiếm tuần tự

Hướng dẫn giải:

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)

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

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.

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ị khoá k;

  • Bước 2: \(i \leftarrow 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 \leftarrow 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;

b) Sơ đồ khối

Cho 2 số nguyên a và b (a≠0). có thuật toán được mô tả bằng cách liệt kê như sau

Câu 4: Tìm kiếm nhị phân

Hướng dẫn giải:

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.

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

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 thì tìm được chỉ số, kết thúc;

    • Nếu agiữa > k thì  việc tìm kiếm thu hẹp chỉ xét từ ađầu (phạm vi) \(\rightarrow\) agiữa – 1;

    • Nếu agiữa \(\rightarrow\) acuối (phạm vi).

  • Quá trình trên được lặp lại cho đến khi tìm thấy khóa k trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.

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ị khoá k;

  • Bước 2: Đầu \(\leftarrow\) 1; Cuối \(\leftarrow\) 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 chuyển sang bước 7;

  • Bước 6: Đầu \(\leftarrow\) 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.

b) Sơ đồ khối

Cho 2 số nguyên a và b (a≠0). có thuật toán được mô tả bằng cách liệt kê như sau

3. Luyện tập

3.1. Bài tập tự luận

Câu 1: Chỉ ra Input và Outphut của bài toán: Kiểm tra tính chẵn lẻ của một số tự nhiên

Câu 2: Xây dựng thuật toán bằng cách vẽ sơ đồ khối của bài toán: Kiểm tra tính chia hết cho 5 của một số tự nhiên.

3.2. Bài tập trắc nghiệm

Câu 1: Thuật toán có tính:

A. Tính xác định, tính liên kết, tính đúng đắn

B. Tính dừng, tính liên kết, tính xác định

C. Tính dừng, tính xác định, tính đúng đắn

D. Tính tuần tự: Từ  input cho ra output

Câu 2: Thuật toán tốt là thuật toán:

A. Thời gian chạy nhanh

B. Tốn ít bộ nhớ

C. Cả A và B đều đúng

D. Tất cả các phương án đều sai

Câu 3: Trong tin học sơ đồ khối là:

A. Ngôn ngữ lập trình bậc cao

B. Sơ đồ mô tả thuật toán

C. Sơ đồ về cấu trúc máy tính

D. Sơ đồ thiết kế vi điện tử 

Câu 4: Chọn phát biểu đúng khi nói về Bài toán và thuật toán:

A. Trong phạm vi Tin học, ta có thể quan niệm bài toán là việc nào đó mà ta muốn máy tính thực hiện

B. Thuật toán (giải thuật) để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ Input của bài toán này, ta nhận được Output cần tìm

C. Sơ đồ khối là sơ đồ mô tả thuật toán

D. Cả ba câu trên đều đúng

Câu 5: Thuật toán sắp xếp bằng đổi chỗ cho dãy số A theo trật tự tăng dần dừng lại khi nào?

A. Khi M =1 và không còn sự đổi chỗ

B. Khi số lớn nhất trôi về cuối dãy

C.  Khi ai > ai + 1

D. Tất cả các phương án

Câu 6: Cho thuật toán tìm giá trị nhỏ nhất trong một dãy số nguyên sử dụng phương pháp liệt kê dưới đây:

Bước 1: Nhập N, các số hạng a1, a2,…., aN;

Bước 2: Min ←←  a1, i ←← 2;

Bước 3: Nếu i

Bước 4:

             Bước 4.1: Nếu ai > Min thì Min ←← ai;

             Bước 4.2: i ←← i+1, quay lại bước 3.

Hãy chọn những bước sai trong thuật toán trên:

A. Bước 2

B. Bước 3

C. Bước 4.1

D. Bước 4.2

Câu 7: Khi biểu diễn thuật toán bằng lưu đồ (sơ đồ khối), hình chữ nhật có ý nghĩa gì?

A. Thể hiện thao tác tính toán

B. Thể hiện thao tác so sánh

C. Quy định trình tự thực hiện các thao tác

D. Thể hiện các thao tác nhập, xuất dữ liệu

Câu 8: Input của bài toán: “Hoán đổi giá trị của hai biến số thực A và C dùng biến trung gian B” là:

A. Hai số thực A, C

B. Hai số thực A, B

C. Hai số thực B,C

D. Ba số thực A,B,C

Câu 9: Cho bài toán kiểm tra tính nguyên tố của một số nguyên dương N. Hãy xác đinh Output của bài toán này?

A. N là số nguyên tố

B. N không là số nguyên tố

C. N là số nguyên tố hoặc N không là số nguyên tố

D. Tất cả các ý trên đều sai

Câu 10: “…(1) là một dãy hữu hạn các …(2) được sắp xếp theo một trình tự xác định sao cho khi thực hiện dãy các thao tác ấy, từ …(3) của bài toán, ta nhận được …(4) cần tìm”. Các cụm từ còn thiếu lần lượt là?

A. Input – Output – thuật toán – thao tác

B. Thuật toán – thao tác – Input – Output

C. Thuật toán – thao tác – Output – Input

D. Thao tác – Thuật toán– Input – Output

4. Kết luận

Sau khi học xong bài này, các em cần nắm vững các nội dung trọng tâm:

  • Khái niệm bài toán trong Tin học

  • Khái niệm thuật toán và cách biểu diễn thuật toán

  • Một số ví dụ về thuật toán: Kiểm tra tính nguyên tố, sắp xếp bằng cách tráo đổi, tìm kiếm tuần tự, tìm kiếm nhị phân