Как избавиться от goto

Задача

Если нужен оператор goto, то как написать программу без него.

Решение

 

Как можно переписать эту программу, чтобы избавиться от метки.

 

label lab;
var month;
begin
    lab:
    write('Введите номер месяца: ');
    readln(month);
    if not (month in [1..12]) then
        goto lab;

 

Используйте какой-нибудь цикл. Например, так:

 

var month: byte;
begin
    repeat
        write('Номер месяца : ');
        readln(month);
    until month in [1..12];
 
readln
end.

 

Однако с циклом While еще проще:

 

...
while not (month in [1..12]) do begin
    write('Номер месяца : ');
    readln(month);
end;
...

 

Тема

Циклы

Уровень

Простые задачи