IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Использование метки
Вячеслав Л.
сообщение 4.10.2009 9:45
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 227
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  3  +


Такой вопрос: вщзможно ли использованием метки (label) заменить использование цикла? И если да то как это будет выглядеть?


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
SKVOZNJAK
сообщение 17.10.2009 1:55
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Цитата
Откуда, собственно, ясно, что желание употребить Exit обусловлено неумением выбрать адекватную управляющую конструкцию.

А я давно его и не использую, goto гибче, а для аварийного выхода из программы можно и на 0 поделить, для отладки полезно.

Оператор case очень нужен и для goto

case A of
1: goto 1;
2: goto 2;
3: goto 3;
end;


Но в операторе case переменная A может быть не любого типа. Если вдруг понадобился неподдерживаемый тип, жди 100 лет пока в новом компиляторе добавят возможностей или переделывай структуру или воткни goto.

Если много раз апгрейдить эту процедуру

procedure MyProc;
begin
case A of
B: DoSomething; //коменты, зачем и когда это нужно
C: begin //коменты, зачем и когда это нужно
тут некая последовательность нужных и полезных операторов
end;
end; //case
end;


Однажды может понадобиться goto - чтобы перед case лишние операторы не выполнялись. Но лучше обходиться минимумом goto, от лишних вреда больше чем пользы, проверено.


Под масштабированием в большую сторону я понимал втыкание в программу больших и не очень кусков кода без существенной отладки. Представь некое усройство из квазиживого пластика. Стиральная машина или пылесос (или гибрид). Понадобилось приделать к нему возможности утюга. Находится нужное место, делается надрез, в него молоточком (goto) загоняется кусок пластика отрезанный от утюга. Как только утюг имплантирован, швы заровнялись, устройсройство стало больше в размерах и теперь не только пылесосит ковры но и утюжит. Так выглядит идея в идеале.
В консольных утилитах не нужно заморачиваться над интерфейсом - тот же квазиживой пластик непонятной формы. В какой-то момент ощущается нехватка некоторых опций командной строки, их нужно добавить, но существенно переделывать программу (а для этого придётся подробно её изучать) как-то не хочется, лень наверное smile.gif Но может и просто не хватить знаний\времени на другие способы.

Под маштабированием в меньшую сторону понимал немного варварский метод. Берётся готовая работающая программа или библиотека и при помощи goto отсекается всё лишнее. Код никуда не исчезает, но он никогда не будет выполняться. Например, оконная система turbo vision на турбопаскале. В описании написано: изучай всё или ничего. Но можно изучить лишь часть, воткнуть в объект goto и использовать вместо неизученного или ненужного оригинального кода свой альтернативный. Причин для использования три: лень, эксперимент и необходимость.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 17.10.2009 21:51
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(SKVOZNJAK @ 17.10.2009 2:55) *
Но лучше обходиться минимумом goto, от лишних вреда больше чем пользы, проверено.
Вот с этим полностью согласен.
От себя добавлю, что оптимальный минимум в данном случае равен нулю.
Цитата

Под масштабированием в большую сторону я понимал втыкание в программу больших и не очень кусков кода без существенной отладки. Представь некое усройство из квазиживого пластика. Стиральная машина или пылесос (или гибрид). Понадобилось приделать к нему возможности утюга. Находится нужное место, делается надрез, в него молоточком (goto) загоняется кусок пластика отрезанный от утюга. Как только утюг имплантирован, швы заровнялись, устройсройство стало больше в размерах и теперь не только пылесосит ковры но и утюжит. Так выглядит идея в идеале.
Идея как идея. Но какое отношение к ней имеет GOTO?
Не нужен он здесь.
Цитата

Под маштабированием в меньшую сторону понимал немного варварский метод. Берётся готовая работающая программа или библиотека и при помощи goto отсекается всё лишнее. Код никуда не исчезает, но он никогда не будет выполняться. Например, оконная система turbo vision на турбопаскале. В описании написано: изучай всё или ничего. Но можно изучить лишь часть, воткнуть в объект goto и использовать вместо неизученного или ненужного оригинального кода свой альтернативный. Причин для использования три: лень, эксперимент и необходимость.
Я в этом случае поступаю одним из трех способов.
1. Удаление фрагмента из программы.
2. "Комментирование" фрагмента.
3. Дополнительно ввожу логическую константу, которой присваиваю FALSE. Заключаю блок, оформленный в виде составного оператора, под условный оператор. Если мне вдруг понадобится исключенный кусок кода, переопределяю константу на TRUE.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Вячеслав Людской   Использование метки   4.10.2009 9:45
volvo   Смотря как и где используется метка... Вообще-то м...   4.10.2009 9:56
kosyak   Всегда можно обойтись без меток и Goto. Лучше их н...   4.10.2009 10:55
SKVOZNJAK   Практически любой цикл можно заменить метками, и в...   5.10.2009 0:43
andriano   Вообще-то GOTO с меткой может использоваться для о...   5.10.2009 10:03
Вячеслав Людской   Так что я понимаю, что goto'м лучше не увлекат...   5.10.2009 13:21
TarasBer   Буду стараться обходиться без goto. Но и в этом...   5.10.2009 14:53
andriano   Например выход из вложенного цикла намного проще и...   7.10.2009 6:46
Lapp   Другими словами, оператор перехода плох не сам по ...   7.10.2009 7:34
TarasBer   Другими словами, оператор перехода плох не сам по...   7.10.2009 18:57
andriano   Давайте отменим Exit, Break, Continue? Мне без р...   7.10.2009 20:33
SKVOZNJAK   Мне без разницы, ни одним из них никогда не польз...   14.10.2009 23:46
andriano   Я вместо этого: procedure MyProc; begin If A=B th...   15.10.2009 20:52
SKVOZNJAK   Спорное утверждение. Проше, пожалуй, лишь в одном...   15.10.2009 0:10
Вячеслав Людской   Действительно, буду считать, что ты мне этого не г...   5.10.2009 17:06
volvo   Сквозняк, вот ты агитируешь за GoTo, а ты пробовал...   15.10.2009 0:42
SKVOZNJAK   Я не агитирую всех и всегда использовать GOTO а ли...   15.10.2009 2:21
SKVOZNJAK   А я давно его и не использую, goto гибче, а для а...   17.10.2009 1:55
andriano   Но лучше обходиться минимумом goto, от лишних вред...   17.10.2009 21:51
SKVOZNJAK   Нужен - он тот самый оператор из которого состоит...   18.10.2009 23:45


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 16:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"