---
url: https://docs.nemo12.com/curriculum/tin/decompose/find-pattern.md
description: >-
  Module Tin học (Decompose) 1.2: learner nhận ra chỗ lặp lại trong bài toán để
  rút gọn công việc.
---

# Module 1.2 · Find the pattern (Tìm quy luật)

Thuộc [Package 1 · Decompose](/curriculum/tin/decompose/).

| | |
| --- | --- |
| **Unit** | 3 |
| **Mastery level** | 3 tới 12 |
| **Lớp (VN)** | 3 tới 12 |
| **Key concept chính** | Patterns (Quy luật) · Development (Phát triển) |

***

## Unit 1 · Spot what repeats (Nhận ra chỗ lặp lại)

> **Tôi sẽ làm được** chỉ ra phần nào trong một công việc đang lặp đi lặp lại.

**Mastery level 3-8 · Lớp 3-9 · Patterns (Quy luật)**

| Bậc | Learner làm được gì |
| --- | --- |
| **Đang hình thành** | Viết lại từng bước một, không thấy chúng giống nhau |
| **Đạt** | Nhận ra phần lặp và gom lại thành một nhóm |
| **Vững** | Nhận ra chỗ lặp **có biến đổi nhẹ giữa các lần** |

**Bằng chứng đạt.** Learner rút gọn được một dãy hai mươi bước xuống còn ba dòng mô tả.

**Hiểu lầm thường gặp.** Chỉ lặp y hệt mới gọi là lặp. Phần lớn chỗ lặp trong lập trình đều có một thứ đổi giữa các lần, và chính thứ đổi đó sẽ thành biến đếm của vòng lặp.

**Knowledge node.** Quy luật lặp · Rút gọn công việc · Chuẩn bị cho vòng lặp

***

## Unit 2 · Same shape, different numbers (Cùng dạng, khác số liệu)

> **Tôi sẽ làm được** nhận ra hai bài toán khác nhau về số liệu nhưng giống nhau về cách giải.

**Mastery level 5-10 · Lớp 6-11 · Patterns (Quy luật)**

| Bậc | Learner làm được gì |
| --- | --- |
| **Đang hình thành** | Coi mỗi bài là một bài hoàn toàn mới |
| **Đạt** | Nhận ra bài mới cùng dạng với bài đã giải |
| **Vững** | Mô tả được **dạng chung** tách khỏi số liệu cụ thể |

**Bằng chứng đạt.** Learner giải một bài lạ bằng cách chỉ ra nó cùng dạng với bài đã làm, và nói rõ chỗ nào khác.

**Hiểu lầm thường gặp.** Đề khác chữ nghĩa nghĩa là bài khác. Rất nhiều bài chỉ khác lớp vỏ câu chuyện; nhận ra dạng chung là kỹ năng giúp learner giải được bài chưa từng gặp, và nó đúng y hệt với môn Toán.

**Knowledge node.** Dạng bài toán · Trừu tượng hoá bài toán · Chuyển giao cách giải

***

## Unit 3 · Reuse instead of rewrite (Dùng lại thay vì viết lại)

> **Tôi sẽ làm được** tách phần dùng chung ra một chỗ, thay vì chép đi chép lại.

**Mastery level 6-11 · Lớp 7-12 · Development (Phát triển)**

| Bậc | Learner làm được gì |
| --- | --- |
| **Đang hình thành** | Chép và dán đoạn code giống nhau ở nhiều chỗ |
| **Đạt** | Tách phần dùng chung ra và gọi lại |
| **Vững** | Giải thích được vì sao chép dán **gây lỗi khi cần sửa** |

**Bằng chứng đạt.** Learner sửa một quy tắc trong chương trình của mình bằng cách đổi đúng một chỗ, không phải năm chỗ.

**Hiểu lầm thường gặp.** Chép dán nhanh hơn nên tốt hơn. Nhanh lúc viết, và rất đắt lúc sửa: sửa bốn trong năm chỗ là kiểu lỗi khó tìm nhất, vì chương trình vẫn chạy và chỉ sai trong một tình huống.

**Knowledge node.** Tái sử dụng · Trùng lặp code · Chuẩn bị cho hàm · Bảo trì

***

## Dạy module này theo kiểu IB

**Concept-based.** Khái niệm dẫn dắt là *Patterns*: quy luật là thứ cho phép mô tả nhiều thứ bằng ít lời.

**Inquiry.** Khuôn vẽ hình bằng lời:

```text
Đưa một hình hoa văn lặp lại (gạch lát nền, hình thổ cẩm)
     ↓
"Hãy viết chỉ dẫn để bạn khác vẽ lại được hình này"
     ↓
Ràng buộc: chỉ dẫn KHÔNG ĐƯỢC DÀI QUÁ 5 DÒNG
     ↓
Learner buộc phải tìm ra phần lặp và viết "làm việc này 8 lần"
     ↓
"Nếu hình có 100 ô thì chỉ dẫn của em dài thêm bao nhiêu?"
```

Ràng buộc độ dài là toàn bộ sức mạnh của khuôn này. Không có nó, learner sẽ liệt kê từng ô. Có nó, learner **tự phát minh ra vòng lặp** trước khi gặp cú pháp nào, và câu hỏi cuối cho thấy giá trị thật của việc rút gọn.

[Module 1.3 · Abstract away detail →](/curriculum/tin/decompose/abstract)
