Что такое цикл с предусловием? В каких ситуациях он используется?
Цикл с предусловием — это цикл, в котором условие проверяется до выполнения тела цикла. Если условие истинно, тело цикла выполняется. После выполнения тела условие проверяется снова. Цикл продолжается, пока условие остается истинным.
Классический пример цикла с предусловием — цикл while.
Общая форма:
пока условие истинно: выполнить действияВ TypeScript это можно записать так:
let count = 1;
while (count <= 5) {
console.log(count);
count++;
}let count = 1;
while (count <= 5) {
console.log(count);
count++;
}package main
import "fmt"
func main() {
count := 1
for count <= 5 {
fmt.Println(count)
count++
}
}public class Example {
public static void main(String[] args) {
var count = 1;
while (count <= 5) {
System.out.println(count);
count++;
}
}
}count = 1
while count <= 5:
print(count)
count += 1Этот цикл выведет числа от 1 до 5.
Главная особенность цикла с предусловием
Тело цикла может не выполниться ни разу, если условие с самого начала ложно.
Например:
let count = 10;
while (count <= 5){
console.log(count);
count++;
}let count = 10;
while (count <= 5){
console.log(count);
count++;
}package main
import "fmt"
func main() {
count := 10
for count <= 5 {
fmt.Println(count)
count++
}
}public class Example {
public static void main(String[] args) {
var count = 10;
while (count <= 5){
System.out.println(count);
count++;
}
}
}count = 10
while count <= 5:
print(count)
count += 1Здесь условие count <= 5 изначально ложно, поэтому тело цикла не выполнится ни одного раза.
Когда используется цикл с предусловием?
Цикл с предусловием удобно использовать, когда заранее неизвестно, сколько раз нужно повторять действия, но известно условие продолжения.
Например:
- пока пользователь не ввел правильный пароль;
- пока файл не закончился;
- пока число не стало равным нулю;
- пока очередь задач не пуста;
- пока выполняется некоторое условие поиска.
Пример:
let password = '';
while (password !== '12345') {
// условно: запрашиваем пароль у пользователя
password = '12345';
}let password = '';
while (password !== '12345') {
// условно: запрашиваем пароль у пользователя
password = '12345';
}package main
func main() {
password := ""
for password != "12345" {
// условно: запрашиваем пароль у пользователя
password = "12345"
}
}public class Example {
public static void main(String[] args) {
var password = "";
while (password != "12345") {
// условно: запрашиваем пароль у пользователя
password = "12345";
}
}
}password = ''
while password != '12345':
# условно: запрашиваем пароль у пользователя
password = '12345'Важное условие правильной работы
В теле цикла должно происходить изменение данных, от которых зависит условие. Иначе цикл может стать бесконечным.
Пример ошибки:
let i = 0;
while (i < 10) {
console.log(i); // i не изменяется
}let i = 0;
while (i < 10) {
console.log(i); // i не изменяется
}package main
import "fmt"
func main() {
i := 0
for i < 10 {
fmt.Println(i) // i не изменяется
}
}public class Example {
public static void main(String[] args) {
var i = 0;
while (i < 10) {
System.out.println(i); // i не изменяется
}
}
}i = 0
while i < 10:
print(i) # i не изменяетсяТакой цикл будет выполняться бесконечно, потому что i всегда остается меньше 10.
Правильный вариант:
let i = 0;
while (i < 10) {
console.log(i);
i++;
}let i = 0;
while (i < 10) {
console.log(i);
i++;
}package main
import "fmt"
func main() {
i := 0
for i < 10 {
fmt.Println(i)
i++
}
}public class Example {
public static void main(String[] args) {
var i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
}
}i = 0
while i < 10:
print(i)
i += 1Вывод
Цикл с предусловием — это цикл, в котором условие проверяется перед каждой итерацией. Он используется, когда количество повторений заранее неизвестно, а выполнение действий зависит от некоторого условия.
Источники
- Горбатов В.А., Горбатов А.В., Горбатова М.В. Дискретная математика: Учебник для студентов втузов. - М.: АСТ, 2014. - 448 с.
- Горбатов В.А., Горбатов А.В., Горбатова М.В. Теория автоматов: учебник для втузов. - М.: АСТ, 2008. - 559 с.
- Кузнецов О. П. Дискретная математика для инженера. - Санкт-Петербург [и др.]: Лань, 2009.
- Содержание курса лекций «Языки программирования». Кафедра алгоритмических языков ВМК МГУ, 2018.
- Босова Л.Л. Информатика. Базовый курс: учебник для 10-11 классов. - М.: БИНОМ. Лаборатория знаний, 2021.
- Гладкий Ю.Н. Информатика и информационные технологии: учеб. пособие. - М.: КноРус, 2020.