Лабораторная работа. Циклы с предусловием (while).
Теоретические сведения
Цикл while — это цикл с предусловием, который выполняется, пока условие истинно. Синтаксис:
pascal
whileусловиеdo
begin// тело цикла
end;
Задание 1: Сумма чисел.
Написать программу, которая будет суммировать числа, вводимые пользователем, пока их сумма не превысит 1000.
Цель: научиться использовать цикл while для суммирования чисел.
Алгоритм:
· Инициализировать сумму
· Вводить числа
· Суммировать числа
· Проверять условие
Пример кода:
pascal
program SumNumbers;var sum, number: integer;beginsum :=0;
writeln('Суммируем числа до достижения 1000');
whilesum <=1000do
begin
write('Введите число: ');
readln(number); sum := sum + number;end;
writeln('Итоговая сумма: ', sum);
end.
Задание 2: Проверка пароля.
Создать программу, которая запрашивает пароль до тех пор, пока пользователь не введёт правильный (например, “12345”).
Цель: реализовать проверку пароля с помощью цикла.
Алгоритм:
· Задать правильный пароль
· Запрашивать пароль
· Сравнивать с правильным
Пример кода:
pascal
program PasswordCheck;constCORRECT_PASSWORD ='12345';
varinputPassword:string;
beginwriteln('Введите пароль:');
whileinputPassword <> CORRECT_PASSWORDdo
begin
write('Пароль: ');
readln(inputPassword); ifinputPassword <> CORRECT_PASSWORDthen
writeln('Неверный пароль! Попробуйте снова.');
end;
writeln('Пароль верный! Доступ разрешен.');
end.
Задание 3: Генератор случайных чисел.
Написать программу, генерирующую случайные числа от 1 до 100, пока не выпадет число больше 90.
Цель: создать генератор случайных чисел с условием остановки.
Алгоритм:
· Генерировать случайные числа
· Проверять условие
· Останавливаться при выполнении условия
Пример кода:
pascal
program RandomGenerator;var number: integer;begin randomize; writeln('Генерируем случайные числа от 1 до 100');
number := random(100) +1;
whilenumber <=90do
begin
writeln('Сгенерировано число: ', number);
number := random(100) +1;
end;
writeln('Последнее число: ', number,' (больше 90)');
end.
Задание 4: Обратный отсчёт.
Создать программу, которая будет запрашивать у пользователя число и уменьшать его до нуля, пока оно положительное.
Цель: реализовать обратный отсчёт с помощью цикла.
Алгоритм:
· Ввести начальное число
· Уменьшать число
· Выводить результат
Пример кода:
pascal
program Countdown;var number: integer;beginwrite('Введите число для обратного отсчёта: ');
readln(number);
whilenumber >0do
begin
writeln(number);number := number -1;
end;
writeln('Отсчёт завершён!');
end.
Задание 5: Поиск делителей.
Написать программу, находящую все делители числа, введённого пользователем, используя цикл с предусловием.
Цель: найти все делители числа с помощью цикла.
Алгоритм:
· Ввести число
· Найти делители
· Вывести результат
Пример кода:
pascal
program FindDivisors;var number, divisor: integer;beginwrite('Введите число: ');
readln(number); divisor :=1;
writeln('Делители числа ', number,':');
whiledivisor <= numberdo
begin
ifnumbermoddivisor =0then
writeln(divisor);divisor := divisor +1;
end;
end.
Контрольные вопросы
1. В чём особенность цикла while?
2. Как правильно организовать условие выхода из цикла?
3. Какие типичные ошибки могут возникнуть при использовании цикла while?
4. В каких случаях предпочтительно использовать цикл while?
5. Чем отличается цикл while от цикла repeat-until?