Module: Câu lệnh lặp với đ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

Khi 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 không biết số lần lặp lại thì sao? Và điều này xảy ra khá thường xuyên.
Ví dụ: hãy nhớ chuyển đổi 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. 
Điều này được triển khai như thế nào?
Đối với những trường hợp như vậy trong lập trình, có một toán tử vòng lặp với một điều kiện. 
Trong ngôn ngữ lập trình Pascal, một câu lệnh lặp điều kiện bắt đầu bằng từ while và có cấu trúc như sau. trong khi <điều kiện> bắt đầu cơ thể vòng lặp kết thúc Như chúng ta đã biết:
- điều kiện là một biểu thức, kết quả của nó có thể đúng hoặc sai (như trong câu điều kiện)
- thân vòng lặp là các lệnh cần lặp lại
- Có thể bỏ qua bắt đầukết thúc nếu thân vòng lặp chỉ gồm một toán tử

Cách hoạt động của toán tử:
1. Đầu tiên, chương trình đánh giá điều kiện 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. Cũng giống như vòng lặp for, nếu thân vòng lặp chỉ chứa một câu lệnh thì có thể bỏ qua các từ bắt đầu và kết thúc làm nổi bật thân vòng lặp.
3. 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.
4. 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.
5. Nếu ở lần thực hiện đầu tiên của toán tử này, điều kiện chưa được thỏa mãn ngay (false) 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ụ: một vòng lặp có thể tăng giá trị của một biến được sử dụng trong một điều kiện.

Một ví dụ về chương trình mà chúng tôi 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ụ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.
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ẽ như thế này. var i: số nguyên; bắt đầu     writeln('Bắt đầu');     tôi := 1;     trong khi tôi <= 10 bắt đầu         ghi(i, ' ');         tôi += 1; //Toán tử tác động đến sự thay đổi của biến trong điều kiện         kết thúc;     writeln();     writeln('Kết thúc'); kết thúc. Trong chương trình này, chúng ta gán giá trị cho biến i := 1 - gốc
Hơn nữa, miễn là chúng ta có 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ị 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, tức là đến một lúc 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à writeln();
writeln('Kết thúc');

Problem

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