Mặc dù mã giả có vẻ gần với mã hơn thuật toán, nhưng trên thực tế, mã giả ít trang trọng hơn và nó là một mô tả cấp cao hơn. Chẳng hạn, bạn có thể mô tả một máy tính chơi cờ như một mã giả như thế này:
- đặt các mảnh ban đầu trong vị trí của họ
- bảng hiển thị
- trong khi trò chơi chưa kết thúc
- di chuyển và hiển thị bảng
- nhắc nhở người dùng di chuyển
- làm cho người dùng di chuyển
Vâng, đây là mã giả, nó hữu ích như một điểm khởi đầu tốt nhưng làm nổi bật lên rất nhiều chi tiết. Nó không giải thích cho những khó khăn và biến thể thực hiện, nhưng lợi ích lớn nhất là nó cho phép bạn khái niệm hóa toàn bộ tình huống mà không phải giải quyết tất cả các chi tiết.
Bạn có thể sửa đổi nó, thêm một cấp độ như vậy:
- đặt các mảnh ban đầu trong vị trí của họ
- bảng hiển thị
- trong khi hội đồng quản trị không phải là người chơi hoặc vẽ
- lập danh sách các động thái hợp pháp của người da trắng
- chọn tốt nhất theo một số tiêu chí
- làm cho di chuyển và tính toán bảng kết quả
- xem nếu checkmate hoặc bốc thăm đã xảy ra
- bảng hiển thị
- lập danh sách các động thái hợp pháp của người da đen
- nhắc nhở người dùng di chuyển hợp pháp cho đầu vào
- làm cho di chuyển và tính toán bảng kết quả
- xem nếu checkmate hoặc bốc thăm đã xảy ra
- bảng hiển thị
Bây giờ bạn có thể viết mã giả cho từng bước chính như "lập danh sách các động thái hợp pháp của người da đen", như vậy:
- cho mỗi mảnh màu đen
- cho loại mảnh ở một vị trí nhất định
- lập danh sách các địa điểm có thể tiếp theo
Bây giờ bạn có thể thấy sức mạnh của mã giả thực sự nằm ở khả năng hiển thị toàn bộ tình huống trong một lần và sau đó cho phép bạn giải quyết chi tiết từng mảnh một. Điểm yếu là bất kỳ bước nào không phải là một bước đơn giản xác định.
Một thuật toán thường chọn một trong các bước này và chi tiết các cấu trúc dữ liệu khác nhau bằng ngôn ngữ tượng trưng để bạn có thể đáp ứng mục tiêu của bước một cách hiệu quả.
Ví dụ, get_legal_moves(board, color)
xứng đáng với một thiết kế thuật toán:
get_legal_moves(board, color):
for i,j in board_dimensions
if piece_at i,j is of color
if piece type is KNIGHT
add the following to the next moves list:
location i+1 j+2, i-1 j+2... etc
if piece type is rook
add locations:....
Bạn có thể thấy rằng thuật toán phải rất chính xác để có ích.
Nó đảm bảo một số điều: các mục tiêu sẽ được đáp ứng mà không có lỗi, trước hết và quan trọng nhất. Các bước rất chi tiết và có thể thực hiện được theo cách cơ giới hóa và các bước đó đủ nhỏ để bạn có thể sắp xếp lại chúng để tăng hiệu quả (tốc độ) mà bạn hoàn thành nhiệm vụ.