Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2012, 20:59   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Метки в Pascal/delphi. Зачем они?

Доброго времени суток!

Интересен вопрос, зачем в паскале/delphi реализованы местки(Label)?
Нет не TLabel.
По которым можно прыгать используя goto.

Если ихопасно использовать, почему они поддерживаются компилятором, и где их БЕЗОПАСНО использовать?
Человек_Борща вне форума Ответить с цитированием
Старый 11.01.2012, 21:02   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вообще-то не опасно, а считается, что их не стоит использовать из-за усложнения чтения кода при их активном использовании. А goto есть не только в Паскале. В Си/С++ аналогично.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.01.2012, 21:15   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вот и выросло поколение не знающее goto... Мир уже не торт . И куда только Земля катится?
Цитата:
почему они поддерживаются компилятором
Стандарт, традиция, совместимость...

ЗЫ. Если Вам интересно в Бейсиках раньше жил оператор GOSUB...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 11.01.2012 в 21:18.
Utkin вне форума Ответить с цитированием
Старый 11.01.2012, 21:20   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Я скорее не не знающий, я интересующийся "что можно, а что нельзя".

Последний раз редактировалось Человек_Борща; 11.01.2012 в 21:26.
Человек_Борща вне форума Ответить с цитированием
Старый 11.01.2012, 21:23   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Если ихопасно использовать, почему они поддерживаются компилятором, и где их БЕЗОПАСНО использовать?
ничего опасного нету. метки и переходы это одно из фундаментальных понятий любого языка программирования. они будут поддерживаться всегда.

это просто какая-то массовое зомбирование "уууу, нельзя использовать метки и безусловные переходы, придёт злой бабайка и убьёт тебя". основной аргумент противников меток это красивость кода.

Последний раз редактировалось rpy3uH; 11.01.2012 в 21:44.
rpy3uH вне форума Ответить с цитированием
Старый 11.01.2012, 21:48   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Никогда не делал такого, чтобы метки противоречили красивому коду.
Когда нельзя их использовать?
Человек_Борща вне форума Ответить с цитированием
Старый 11.01.2012, 21:53   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Всегда можно, но затрудняют чтение кода, если их много. Практически не использую. Но если вспомнить Fortran, PL1 - там без них было ни куда. На FoxBase начинал на персоналке - дико было без меток
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.01.2012, 22:09   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,543
По умолчанию

Странно, я начинал программирование учить еще с древних Бейсиков, где без goto как без рук, но никогда их не использую в повседневной жизни. И правда, давно пора исключить label и goto из Паскаля. По мне, так они там для тех, кто хочет перейти на Паскаль из Бейсика или другого раритета. Но реально они совсем не нужны.
Arigato вне форума Ответить с цитированием
Старый 11.01.2012, 22:17   #9
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
И правда, давно пора исключить label и goto из Паскаля.
например, есть кусок
Код:
repeat
  repeat
    repeat
      .....
      if <> then <надо выйти сразу из всех циклов, как?>
      ....
    until <>;
  until <>;

until <>;
в этом случае спасают только метки. такие дела
rpy3uH вне форума Ответить с цитированием
Старый 11.01.2012, 22:18   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
И правда, давно пора исключить label и goto из Паскаля. По мне, так они там для тех, кто хочет перейти на Паскаль из Бейсика или другого раритета. Но реально они совсем не нужны.
Не согласен. Бедные студенты, которым в универах приподовали бородатые языки
rpy3uH, можно и так. Разница лишь в скорости и погоне за каждым тактом проца.

Код:
var
BreakCycle:boolean;
begin
 repeat
  if Breakcycle then Break;
  repeat 
   if Breakcycle then Break;
      repeat 
          if A != B then BreakCycle:=True; break;
      until <>;
   until <>;
 until <>;
 
end;
У вас простой переход по метке. У меня же придётся войти в каждый из предыдущих циклов и пройти по условию.


Хм, а сколько выполняет тактов процессор за 1 строку кода?

Мне кажется, что метки это что-то очень низкое из ассемблера.

Последний раз редактировалось Человек_Борща; 11.01.2012 в 22:29.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зачем учить Pascal krot_zdes Свободное общение 52 31.05.2011 16:48
Зачем эта перменная (Delphi) reasons Помощь студентам 9 15.07.2010 22:22
Метки в Tbarseries (Delphi 7) Николай ПН Помощь студентам 0 31.03.2010 18:40
Что такое коды ASCII и зачем они?? Ларик Помощь студентам 2 27.01.2008 19:41
обновление в блоге - Ресурсы. Зачем они нужны. Pblog Обсуждение статей 0 27.05.2007 03:17