Краткий ответ: цикл выполнит тело 1000 раз, после завершения программы значение переменной \(a\) будет равно 1000. На экран ничего не выводится, потому что в программе нет writeln.
Разбор по строкам
var
a: integer;
begin
a := 0;
while a <> 1000 do
begin
a := a + 1;
end;
end.
var a: integer;— объявляется целая переменная \(a\).begin— начало основной программы.a := 0;— переменной \(a\) присваивается начальное значение 0.while a <> 1000 do— цикл с предусловием:<>означает «не равно».
Пока \(a \ne 1000\), выполняется тело цикла.begin ... end;— тело цикла.a := a + 1;— взять текущее значение \(a\), прибавить 1 и записать обратно в \(a\).
Это именно присваивание, а не проверка равенства.end.— конец программы. Точка обязательна.
Как идут шаги
| Номер проверки | \(a\) перед проверкой | Условие \(a \ne 1000\) | Что происходит |
|---|---|---|---|
| 1 | 0 | истинно | \(a\) становится 1 |
| 2 | 1 | истинно | \(a\) становится 2 |
| 3 | 2 | истинно | \(a\) становится 3 |
| … | … | … | … |
| 1000 | 999 | истинно | \(a\) становится 1000 |
| 1001 | 1000 | ложно | цикл завершается |
То есть:
\[ 0 \to 1 \to 2 \to \dots \to 999 \to 1000 \]
После того как \(a\) стало равно 1000, программа возвращается к проверке условия:
\[ 1000 \ne 1000 \]
Это ложно, поэтому тело цикла больше не выполняется.
Итог:
- тело цикла выполнилось 1000 раз;
- условие проверялось 1001 раз;
- конечное значение \(a = 1000\);
- программа ничего не выводит на экран.
Если добавить перед последним end. строку writeln(a);, программа выведет:
1000