Module: (C++) Câu lệnh lặp có điều kiện - while


Problem

1/21

Xây dựng câu lệnh lặp với điều kiện (while)

Theory Click to read/hide

Một vòng lặp có điều kiện. Câu lệnh while
Nghiên cứu vòng lặp for, chúng tôi đã nói rằng nếu biết số lần lặp lại của bất kỳ hành động nào, thì bạn có thể rút ngắn chương trình bằng toán tử vòng lặp for. Nhưng nếu số lần lặp lại không xác định thì sao? Và điều này xảy ra khá thường xuyên.
 
Ví dụ
Ghi nhớ bản dịch của một số từ hệ thống số thập phân sang bất kỳ hệ thống số nào khác, chúng ta cần chia số (và sau đó là kết quả của phép chia) cho cơ số của hệ thống số cho đến khi chúng ta nhận được số 0 trong câu trả lời. Bao nhiêu lần chúng tôi sẽ chia sẻ là không biết. Và có khá nhiều chương trình thực hiện thuật toán như vậy. 

Làm cách nào để triển khai thuật toán nếu chúng ta không biết chính xác số lần lặp lại?

Đối với những trường hợp như vậy trong lập trình, có một câu lệnh lặp kèm theo một điều kiện. 
Trong ngôn ngữ lập trình Python, một câu lệnh vòng lặp có điều kiện bắt đầu bằng từ while và có cấu trúc như sau.
while (<condition>) 
{
  thân vòng lặp
}

Như chúng ta đã biết:
- điều kiện là một biểu thức có thể cho kết quả đúng hoặc sai (như trong câu điều kiện);
- thân vòng lặp là các lệnh được lặp lại, chúng được thụt vào.

Người vận hành hoạt động như thế nào?
1. Đầu tiên, chương trình đánh giá điều kiện trong ngoặc sau từ while. Nếu điều kiện được đáp ứng (đúng), thì chương trình sẽ thực hiện (các) câu lệnh chứa trong thân vòng lặp.
2. Sau khi thực hiện xong thân vòng lặp, chương trình quay lại kiểm tra điều kiện và kiểm tra lại.
3. Các thao tác này (kiểm tra điều kiện - thực hiện thân vòng lặp) được lặp lại cho đến khi điều kiện trở thành sai.
4. Nếu điều kiện không được đáp ứng ngay (sai) trong lần thực hiện đầu tiên của câu lệnh này, thì chương trình sẽ không bao giờ thực hiện thân vòng lặp.

Phân tích công việc của toán tử này, sẽ thấy rõ rằng thân vòng lặp phải chứa một toán tử ảnh hưởng đến điều kiện.
Ví dụ: trong một vòng lặp, giá trị của một biến được sử dụng trong một điều kiện có thể tăng lên.

Một ví dụ về chương trình mà chúng tôi sẽ gọi là "Đếm im lặng".
Hãy để chương trình đếm thay vì chúng ta, chẳng hạn đến 10.
Chương trình sẽ xuất ra các cụm từ "Bắt đầu" và "Finish", và giữa các hành động này sẽ hiển thị các số đang được tính toán.

Ví dụ như thế này:
Bắt đầu
1 2 3 4 5 6 7 8 9 10
kết thúc

Một chương trình sử dụng vòng lặp while sẽ trông như thế này: #include<iostream> sử dụng không gian tên std; chủ yếu() { int tôi; cout << "Bắt đầu\n"; tôi = 1; trong khi(i <= 10) { cout << tôi << " "; tôi ++; // Toán tử tác động đến sự thay đổi của biến trong điều kiện } cout << "\nKết thúc"; }
Trong chương trình này, chúng ta gán giá trị cho biến i = 1 - điểm bắt đầu.
Ngoài ra, miễn là giá trị của biến i không lớn hơn (nghĩa là nhỏ hơn hoặc bằng) giá trị mà chúng ta cần, thì chúng ta: 
 1. hiển thị giá trị của biến i;
 2. tăng giá trị của biến i lên 1 - toán tử này ảnh hưởng đến giá trị của điều kiện trong ngoặc. Biến i được tăng lên, nghĩa là tại một thời điểm nào đó, điều kiện i <= 10 sẽ trở thành sai. Điều này sẽ xảy ra khi i trở thành 11. Trong trường hợp này, thân vòng lặp sẽ không được thực thi nữa và chương trình sẽ thực hiện câu lệnh tiếp theo sau vòng lặp, tức là cout << "\nKết thúc".

Problem

Chạy chương trình, phân tích kết quả công việc của nó.