Лабораторная работа. Циклы с предусловием (while).

Теоретические сведения

Цикл while — это цикл с предусловием, который выполняется, пока условие истинно. Синтаксис:

pascal

while условие do
begin
    // тело цикла
end;

Задание 1: Сумма чисел.

Написать программу, которая будет суммировать числа, вводимые пользователем, пока их сумма не превысит 1000.

Цель: научиться использовать цикл while для суммирования чисел.

Алгоритм:

·         Инициализировать сумму

·         Вводить числа

·         Суммировать числа

·         Проверять условие

Пример кода:

pascal

program SumNumbers;
var
    sum, number: integer;
begin
    sum := 0;
    
    writeln('Суммируем числа до достижения 1000');
    
    while sum <= 1000 do
    begin
        write('Введите число: ');
        readln(number);
        sum := sum + number;
    end;
    
    writeln('Итоговая сумма: ', sum);
end.

Задание 2: Проверка пароля.

Создать программу, которая запрашивает пароль до тех пор, пока пользователь не введёт правильный (например, “12345”).

Цель: реализовать проверку пароля с помощью цикла.

Алгоритм:

·         Задать правильный пароль

·         Запрашивать пароль

·         Сравнивать с правильным

Пример кода:

pascal

program PasswordCheck;
const
    CORRECT_PASSWORD = '12345';
var
    inputPassword: string;
begin
    writeln('Введите пароль:');
    
    while inputPassword <> CORRECT_PASSWORD do
    begin
        write('Пароль: ');
        readln(inputPassword);
        
        if inputPassword <> CORRECT_PASSWORD then
            writeln('Неверный пароль! Попробуйте снова.');
    end;
    
    writeln('Пароль верный! Доступ разрешен.');
end.

Задание 3: Генератор случайных чисел.

Написать программу, генерирующую случайные числа от 1 до 100, пока не выпадет число больше 90.

Цель: создать генератор случайных чисел с условием остановки.

Алгоритм:

·         Генерировать случайные числа

·         Проверять условие

·         Останавливаться при выполнении условия

Пример кода:

pascal

program RandomGenerator;
var
    number: integer;
begin
    randomize;
    
    writeln('Генерируем случайные числа от 1 до 100');
    
    number := random(100) + 1;
    
    while number <= 90 do
    begin
        writeln('Сгенерировано число: ', number);
        number := random(100) + 1;
    end;
    
    writeln('Последнее число: ', number, ' (больше 90)');
end.

Задание 4: Обратный отсчёт.

Создать программу, которая будет запрашивать у пользователя число и уменьшать его до нуля, пока оно положительное.

Цель: реализовать обратный отсчёт с помощью цикла.

Алгоритм:

·         Ввести начальное число

·         Уменьшать число

·         Выводить результат

Пример кода:

pascal

program Countdown;
var
    number: integer;
begin
    write('Введите число для обратного отсчёта: ');
    readln(number);
    
    while number > 0 do
    begin
        writeln(number);
        number := number - 1;
    end;
    
    writeln('Отсчёт завершён!');
end.

Задание 5: Поиск делителей.

Написать программу, находящую все делители числа, введённого пользователем, используя цикл с предусловием.

Цель: найти все делители числа с помощью цикла.

Алгоритм:

·         Ввести число

·         Найти делители

·         Вывести результат

Пример кода:

pascal

program FindDivisors;
var
    number, divisor: integer;
begin
    write('Введите число: ');
    readln(number);
    
    divisor := 1;
    
    writeln('Делители числа ', number, ':');
    
    while divisor <= number do
    begin
        if number mod divisor = 0 then
            writeln(divisor);
        divisor := divisor + 1;
    end;
end.

Контрольные вопросы

1.    В чём особенность цикла while?

2.    Как правильно организовать условие выхода из цикла?

3.    Какие типичные ошибки могут возникнуть при использовании цикла while?

4.    В каких случаях предпочтительно использовать цикл while?

5.    Чем отличается цикл while от цикла repeat-until?


Последнее изменение: среда, 5 Ноябрь 2025, 10:03