In Các Mẫu Hình Học Bằng Vòng Lặp: Sao, Tam Giác, Kim Cương
Bạn có bao giờ thắc mắc làm thế nào để tạo ra những hình tam giác, kim cương hay các pattern phức tạp chỉ bằng các ký tự? Đây là một trong những bài tập kinh điển giúp bạn hiểu sâu về vòng lặp lồng nhau và tư duy logic.
Từ những hình đơn giản như tam giác vuông đến những pattern phức tạp như kim cương, mỗi hình đều ẩn chứa một logic toán học thú vị. Hãy cùng khám phá nghệ thuật ASCII art trong lập trình!
Tại Sao Cần Học Pattern Printing?
Pattern printing không chỉ là bài tập vui mà còn giúp bạn:
🧠 Phát triển tư duy logic: Phân tích mối quan hệ giữa hàng, cột
🔄 Thành thạo nested loops: Hiểu cách hoạt động của vòng lặp lồng nhau
📐 Hiểu về tọa độ và không gian: Tư duy về hệ tọa độ 2D
🎨 Sáng tạo và thẩm mỹ: Tạo ra những hình đẹp mắt
💻 Chuẩn bị cho graphics: Nền tảng cho lập trình đồ họa
Mọi pattern đều dựa trên mối quan hệ giữa:
- Hàng (row): Vòng lặp ngoài
- Cột (column): Vòng lặp trong
- Ký tự: Gì sẽ được in tại vị trí (row, col)
Phân Loại Các Loại Pattern
1. Basic Patterns - Hình Cơ Bản
Rectangle (Hình Chữ Nhật)
Đây là pattern đơn giản nhất để bắt đầu:
*****
*****
*****
*****
Logic: In n ký tự * trên m hàng.
Implementation
C++:
#include <iostream>
using namespace std;
void printRectangle(int rows, int cols) {
cout << "=== RECTANGLE " << rows << "x" << cols << " ===" << endl;
for (int i = 0; i < rows; i++) { // Vòng lặp hàng
for (int j = 0; j < cols; j++) { // Vòng lặp cột
cout << "* ";
}
cout << endl; // Xuống hàng
}
}
void printHollowRectangle(int rows, int cols) {
cout << "=== HOLLOW RECTANGLE " << rows << "x" << cols << " ===" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
// Viền: hàng đầu, hàng cuối, cột đầu, cột cuối
if (i == 0 || i == rows-1 || j == 0 || j == cols-1) {
cout << "* ";
} else {
cout << " "; // Khoảng trắng bên trong
}
}
cout << endl;
}
}
Python:
def print_rectangle(rows, cols):
print(f"=== RECTANGLE {rows}x{cols} ===")
for i in range(rows):
for j in range(cols):
print("*", end=" ")
print() # Xuống hàng
def print_hollow_rectangle(rows, cols):
print(f"=== HOLLOW RECTANGLE {rows}x{cols} ===")
for i in range(rows):
for j in range(cols):
# Viền: hàng đầu, hàng cuối, cột đầu, cột cuối
if i == 0 or i == rows-1 or j == 0 or j == cols-1:
print("*", end=" ")
else:
print(" ", end=" ")
print()