Замена меток

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
Mikhail235
незнакомец
Сообщения: 4
Зарегистрирован: 06.01.2013 17:56:40

Замена меток

Сообщение Mikhail235 »

О том, что метки и, естественно goto плохое решение знают все.
Но вот столкнулся с проблемой, с которой, я уверен, сталкивается большинство:
Вводим какое-то значение, затем проверяем его и в зависимости от правильности либо продолжаем работу, либо возвращаемся с указаниями на повторение ввода. Так вот этот возврат у меня осуществляется через goto, а как решают эту проблему профессионалы.
Спасибо
Аватара пользователя
bormant
постоялец
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Сообщение bormant »

Код: Выделить всё

repeat
  write('Введите ...: ') readln(data);
  if IsValid(data) then break
  else writeln('*** ошибка ... Повторите ввод.');
until false;
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

Чисто OFF: В самом GoTo нет ничего плохого... профессионал не колеблясь поставит его там, где это упросит код, а ортодокс будет размазывать флаги и постусловия.

Добавлено спустя 1 минуту 2 секунды:
Классический пример - прерывание двойного цикла. Кто скажет, что никогда не ставил там GoTo - пусть бросит в меня камень.
Mikhail235
незнакомец
Сообщения: 4
Зарегистрирован: 06.01.2013 17:56:40

Сообщение Mikhail235 »

Спасибо, все получилось. В своих рассуждениях не учел break
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

NTFS писал(а):Классический пример - прерывание двойного цикла.

У ортодокса есть один метод - raise и потом анализ типа исключения. Если подходить филосовски, то и Continue и Exit - это goto.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

где б взять камень :-D
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Чисто OFF: В самом GoTo нет ничего плохого... профессионал не колеблясь поставит его там, где это упросит код, а ортодокс будет размазывать флаги и постусловия.

ага... просто иногда хочется за такие упрощения с goto просто медленно убивать медленно. В 99,5% случаев в pascal можно обойтись без меток. Оставлю 0,5% случаев на редкие извращения.
Ответить