Vòng lặp do-while trong C: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn, những pháp sư lập trình tương lai! Hôm nay, chúng ta sẽ cùng nhau bắt đầu một hành trình thú vị vào thế giới của vòng lặp do-while trong C. Là giáo viên máy tính hàng xóm thân thiện của bạn, tôi sẽ hướng dẫn bạn qua khái niệm này với rất nhiều ví dụ và một chút hài hước. Vậy, hãy đội mũ suy nghĩ ảo của bạn lên, và chúng ta cùng nhảy vào!

C - Do...while loop

什么是 do-while Loop?

Trước khi chúng ta đi vào chi tiết, hãy hiểu vòng lặp do-while là gì. Hãy tưởng tượng bạn đang chơi một trò chơi mà bạn phải掷 một viên xúc xắc cho đến khi bạn được sáu. Bạn sẽ掷 xúc xắc ít nhất một lần, phải không? Đó chính xác là điều mà vòng lặp do-while làm trong lập trình - nó thực thi một khối mã ít nhất một lần trước khi kiểm tra một điều kiện.

Cú pháp của vòng lặp do-while

Bây giờ, hãy nhìn vào cú pháp của vòng lặp do-while. Đừng lo lắng nếu nó trông có vẻ đáng sợ ban đầu - chúng ta sẽ phân tích nó cùng nhau!

do {
// mã cần thực thi
} while (điều kiện);

Có một cách vui vẻ để nhớ nó: "Làm này, khi đó là đúng!" Đơn giản phải không?

Vòng lặp do-while hoạt động như thế nào?

Hãy cùng nhau đi qua cách vòng lặp do-while hoạt động:

  1. Mã bên trong khối do được thực thi.
  2. Sau khi thực thi, điều kiện trong câu lệnh while được đánh giá.
  3. Nếu điều kiện là đúng, vòng lặp quay lại bước 1.
  4. Nếu điều kiện là sai, vòng lặp kết thúc, và chương trình tiếp tục với câu lệnh tiếp theo.

Sơ đồ của vòng lặp do-while

Để trực quan hóa quá trình này, hãy nhìn vào sơ đồ:

┌─────────────────┐
│                 │
│  Bắt đầu        │
│                 │
└────────┬────────┘
│
▼
┌─────────────────┐
│                 │
│  Thực thi mã    │
│  khối           │
│                 │
└────────┬────────┘
│
▼
┌─────────────────┐
│  Đánh giá       │
│  điều kiện     │
│                 │
└────────┬────────┘
│
▼
┌───┴───┐
┌───┤ Đúng? ├───┐
│   └───────┘   │
│ Có           │ Không
│               │
│               ▼
│        ┌──────────────┐
│        │              │
│        │  Kết thúc    │
│        │              │
│        └──────────────┘
└───────────────┘

Ví dụ về vòng lặp do-while

Hãy nhìn vào một ví dụ thực tế. Nhớ trò chơi xúc xắc của chúng ta? Hãy viết mã cho nó!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
int dice;
int rolls = 0;

// Gieo种子 cho máy sinh số ngẫu nhiên
srand(time(0));

do {
//掷骰子 (sinh một số ngẫu nhiên từ 1 đến 6)
dice = rand() % 6 + 1;
rolls++;

printf("Bạn đã掷 được %d\n", dice);
} while (dice != 6);

printf("Bạn đã掷 %d lần để được 6!\n", rolls);

return 0;
}

Hãy phân tích điều này:

  1. Chúng ta bao gồm các thư viện cần thiết và thiết lập các biến.
  2. Chúng ta gieo种子 cho máy sinh số ngẫu nhiên với thời gian hiện tại.
  3. Trong vòng lặp do-while:
  • Chúng ta "掷骰子" bằng cách sinh một số ngẫu nhiên từ 1 đến 6.
  • Chúng ta tăng bộ đếm số lần掷.
  • Chúng ta in kết quả của lần掷.
  1. Vòng lặp tiếp tục miễn là chúng ta không掷 được 6.
  2. Khi chúng ta掷 được 6, chúng ta thoát khỏi vòng lặp và in số lần掷.

Chương trình này sẽ luôn chạy ít nhất một lần (bạn không thể thắng nếu không掷!), điều này hoàn hảo cho vòng lặp do-while.

Sự khác biệt giữa vòng lặp while và do-while

Bây giờ, bạn có thể tự hỏi, "Tại sao không chỉ sử dụng vòng lặp while?" Câu hỏi tuyệt vời! Hãy so sánh chúng:

Tính năng Vòng lặp while Vòng lặp do-while
Kiểm tra điều kiện Trước lần thực thi đầu tiên Sau lần thực thi đầu tiên
Số lần thực thi tối thiểu 0 1
Trường hợp sử dụng Khi bạn có thể không cần thực thi vòng lặp Khi bạn cần thực thi vòng lặp ít nhất một lần
Cú pháp while (điều kiện) { ... } do { ... } while (điều kiện);

Sự khác biệt chính là vòng lặp do-while luôn thực thi ít nhất một lần, ngay cả khi điều kiện là sai từ đầu. Nó giống như nói, "Hãy làm này một lần, và sau đó chúng ta sẽ xem chúng ta có cần làm lại không."

Khi nào nên sử dụng vòng lặp do-while

Vòng lặp do-while hoàn hảo cho các tình huống khi bạn cần:

  1. Thực thi mã ít nhất một lần trước khi kiểm tra điều kiện.
  2. Xác thực đầu vào của người dùng (bạn cần đầu vào ít nhất một lần trước khi bạn có thể kiểm tra nó).
  3. Thực hiện các chương trình menu-driven (hiển thị menu ít nhất một lần trước khi hỏi người dùng liệu họ có muốn tiếp tục hay không).

Dưới đây là một ví dụ nhanh về một chương trình menu đơn giản:

#include <stdio.h>

int main() {
int choice;

do {
printf("\nMenu:\n");
printf("1. Nói hello\n");
printf("2. Nói một câu đùa\n");
printf("3. Thoát\n");
printf("Nhập lựa chọn của bạn: ");
scanf("%d", &choice);

switch(choice) {
case 1:
printf("Hello, thế giới!\n");
break;
case 2:
printf("Tại sao các nhà khoa học không tin tưởng nguyên tử? Vì chúng làm ra mọi thứ!\n");
break;
case 3:
printf("Tạm biệt!\n");
break;
default:
printf("Lựa chọn không hợp lệ. Vui lòng thử lại.\n");
}
} while (choice != 3);

return 0;
}

Trong chương trình này, chúng ta hiển thị menu và nhận đầu vào của người dùng ít nhất một lần, vì vậy vòng lặp do-while là hoàn hảo.

Kết luận

Và thế là bạn đã hiểu được bí mật của vòng lặp do-while trong C. Nhớ rằng, giống như bất kỳ công cụ nào khác trong lập trình, vòng lặp do-while có thời điểm và nơi của nó. Chúng không phải là giải pháp cho mọi vấn đề, nhưng khi bạn cần đảm bảo rằng một điều gì đó xảy ra ít nhất một lần trước khi kiểm tra một điều kiện, chúng là cấu trúc mà bạn nên sử dụng.

Thực hành là cách tốt nhất để hoàn thiện, vì vậy đừng ngần ngại thử nghiệm với vòng lặp do-while trong các chương trình của bạn. Ai biết được? Bạn có thể chỉ cần một thời gian ngắn để掷 được sáu!

Chúc các bạn lập trình vui vẻ, và mong rằng các vòng lặp luôn ở trong favor của bạn!

Credits: Image by storyset