Xem thêm

Tin học 10 Bài 4: Bài toán và thuật toán - Giải mã ngôn ngữ lập trình

Huy Erick
Tin học 10 Bài 4 (Lý thuyết và trắc nghiệm): Bài toán và thuật toán. Đây là một bài viết chia sẻ về các khái niệm cơ bản liên quan đến bài toán và thuật...

Tin học 10 Bài 4 (Lý thuyết và trắc nghiệm): Bài toán và thuật toán. Đây là một bài viết chia sẻ về các khái niệm cơ bản liên quan đến bài toán và thuật toán trong lĩnh vực tin học. Chúng ta sẽ tìm hiểu về bài toán, khái niệm thuật toán và các tính chất cần thiết của thuật toán.

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

Bài toán là một việc mà con người muốn máy tính thực hiện. Mỗi bài toán có các yếu tố gồm "Input" (thông tin đã biết), và "Output" (thông tin cần tìm). Ví dụ, bài toán tìm ước chung lớn nhất của 2 số nguyên dương, có Input là hai số nguyên dương A, B và Output là ước chung lớn nhất của A và B.

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

a. Khái niệm: Thuật 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 ấy, từ Input của bài toán, ta nhận được Output cần tìm.

b. Biểu diễn thuật toán: Thuật toán có thể được biểu diễn bằng cách liệt kê các thao tác cần tiến hành hoặc sử dụng sơ đồ khối để mô tả thuật toán.

Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn

c. Các tính chất của 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 các thao tác.
  • Tính xác định: sau khi thực hiện một thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng một thao tác để xác định để được 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.

Một số ví dụ về thuật toán

Ví dụ 1: Kiểm tra tính nguyên tố của 1 số nguyên dương

  • 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ố".
  • Ý tưởng:

    • Đị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".
    • Nếu N = 1 thì N không là số nguyên tố.
    • Nếu 1 < N < 4 thì N là số nguyên tố.
    • N ≥ 4: Tìm ước i đầu tiên > 1 của N
      • Nếu i < N thì N không là số nguyên tố (vì N có ít nhất 3 ước 1, i, N).
      • Nếu i = N thì N là số nguyên tố.
  • 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 < 4 thì thông báo "N là số nguyên tố", 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;
    • 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.

    Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn

    Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn

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ố.

Ví dụ 2: Sắp xếp bằng cách tráo đổi

  • 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.
  • Ý 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.
  • 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;
    • 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; (Tăng i lên 1 đơn vị)
    • 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.

    Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn

Lưu ý: Cách liệt kê bằng sơ đồ khối có thể được sử dụng để mô tả thuật toán.

Ví dụ 3: Bài toán tìm kiếm

  • 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). Ví dụ: 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).
  • Ý tưởng: Tìm kiếm tuần tự được thực hiện một cách tự nhiên bằng cách 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.

  • 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: 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.

    Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn

Ví dụ 4: Tìm kiếm nhị phân

  • 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. Ví dụ: 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).
  • Ý 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 (a[giữa]), khi đó chỉ xảy ra một trong ba trường hợp:

    • Nếu a[giữa] = k thì tìm được chỉ số, kết thúc.
    • Nếu a[giữa] > k thì việc tìm kiếm thu hẹp chỉ xét từ a[đầu] (phạm vi) → a[giữa - 1].
    • Nếu a[giữa] < k việc tìm kiếm thu hẹp chỉ xét từ a[giữa + 1] → a[cuố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.

  • 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 a[giữa] = k thì thông báo chỉ số Giữa, rồi kết thúc;
    • Bước 5: Nếu a[giữa] > k thì đặt Cuối = Giữa - 1 rồi chuyển 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.

    Lý thuyết Tin học 10 Bài 4: Bài toán và thuật toán hay, ngắn gọn

Phần 2: 10 câu hỏi trắc nghiệm Tin học 10 Bài 4: Bài toán và thuật toán

Câu 1: 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 ← ai, i ← 2; Bước 3: Nếu i < N thì đưa đưa ra giá trị Min rồi kết thúc; 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 Đáp án: C Giải thích: Bước 4.1: Nếu ai > Min thì Min ← ai là sai vì nếu ai > Min, tức là có một số hạng ai lớn hơn Min. Vậy Min là nhỏ nhất nên không thể gán ai cho Min. Cần sửa là Nếu ai < Min.

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 Đáp án: C Giải thích: Thuật toán tốt là thuật toán tốn ít bộ nhớ và thời gian giúp máy tính hiểu và giải quyết một bài toán nhanh, chính xác.

Câu 3: 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 Đáp án: A Giải thích: Input của bài toán là các thông tin đã cho. Vì vậy, 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à hai số thực A, C.

Câu 4: 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 định 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 Đáp án: C Giải thích: Output là các thông tin cần tìm. Vì vậy, bài toán kiểm tra tính nguyên tố của một số nguyên dương N, Output của bài toán này là N là số nguyên tố hoặc N không là số nguyên tố.

Câu 5: "…(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 Đáp án: C Giải thích: Thuật 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 khi thực hiện dãy các thao tác ấy, từ Input của bài toán, ta nhận được Output cần tìm.

Câu 6: 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 Đáp án: A Giải thích: Khi biểu diễn thuật toán bằng sơ đồ khối (sơ đồ khối):

  • Hình chữ nhật có ý nghĩa là thể hiện thao tác tính toán.
  • Hình thoi thể hiện thao tác so sánh.
  • Các mũi tên thể hiện quy định trình tự thực hiện các thao tác.
  • Hình ô van thể hiện các thao tác nhập, xuất dữ liệu.

Câu 7: 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 Đáp án: C Giải thích:

  • Thuật toán phải kết thúc sau một số hữu hạn lần thực hiện các thao tác → tính dừng.
  • Sau khi thực hiện một thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng một thao tác để xác định để thực hiện tiếp theo → tính xác định.
  • Sau khi thuật toán kết thúc, ta phải nhận được Output của cần tìm → Tính đúng đắn.

Câu 8: 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ử Đáp án: B Giải thích: Trong tin học, sơ đồ khối là sơ đồ mô tả dãy các thao tác thể hiện thuật toán bằng một số khối và đường mũi tên.

Câu 9: 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 Đáp án: D Giải thích:

  • Bài toán là việc nào đó mà ta muốn máy tính thực hiện.
  • 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.
  • Sơ đồ khối là sơ đồ mô tả thuật toán.

Câu 10: 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 Đáp án: A Giải thích: 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:

  • M = 1 thì trong dãy có một số hạng nên không cần đổi chỗ và thuật toán kết thúc.
  • Không còn sự đổi chỗ vì với mỗi cặp số hạng liền kề trong dãy, nếu số trước lớn hơn sau ta đổi chỗ chúng cho nhau và lặp đi lặp lại, cho đến khi không còn số hạng nào đổi chỗ nữa thì dừng.

Xem thêm

1