(решено) GoTo или repeat until?

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

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

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 00:40:22

Mirage писал(а):не люблю не только GOTO, но и всякие BREAK, CONTINUE, EXIT в середине процедуры и т.п.

Ну вот те на... пожалуйста... доигрались...
1) А как без break остановить цикл, если например перебор по первой букве в слове и она найдена?
2) А как без continue остановить итерацию, если например первая буква ненужна, а остальные востребованы?
3) А как без exit, если всё что мне нужно программа уже нашла, а там ещё 555 555 итераций осталось... мне что ждать пока она всё пройдёт?

И я уверен, что в каком нить case test из 333 переходов GoTo - может сильно упростить понимание, особенно если, половина переходят к первому label, а вторая ко второму. И в итоге всё снова должно вернуться к GoTo. C внешними процедурами это застрелиться как сложно сделать. С циклами, тем более. А c GoTo - это будет коротенькая и понятная функция. Но пожалуйста, НИКОГДА не используйте GoTo в своих решениях, т.к. это плохой тон!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение pupsik » 02.09.2015 01:07:17

наконецто брейки и экзиты появились...

vitaly_l А почему такой маленький пример. По идее вы, большей частью, с практиками общаетесь. Которые, поймите верно, не сильно то "увлекались" подобными вопросами. Если и увлекались то давно.

Для примера: если мне скажут найти пару отличий между картинами... Я их не найду, окромя общих (кот, собака :)). Потому что я только карандашиком, в школе, ох..хо когда рисовал. И то: ёлку... А если профи дать такую задачу то, он и как мазок ложили расскажет и где кисть испортилась..

Вас тут кодом забросают. Умными речами "затолкают". А толку? Проверьте на своей шкуре. Только код побольше да посложнее. Т.е. руку набейте. Думаю: вопросы сами отпадут.

п.с.
Я этот GoTo в школе писал, на бумаге.... Да и касетники тогда жесткими были... После, я этого дела и не видел. Больше доп. процедуры и коменты (самое сложное и зачем их придумали :)). Хотя, можете у себя и GoTo. Кто вам мешает то?

Кстати: ваши 3 пунктика легко обходятся. Т.е. программа пишется без них.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 10:20:27

pupsik писал(а):Кстати: ваши 3 пунктика легко обходятся. Т.е. программа пишется без них.

Да я понимаю это всё, мне просто хотелось выяснить почему GoTo зло... Но выяснилось несколько другое,
у людей есть некий шаблон, например: "Привет всё хорошо!" и они категорически отказываются воспринимать, противоположный шаблон: "Всё хорошо, привет!". Хотя разницы, (для программы) на самом деле, никакой нет. Действия программистов в этом плане очень похожи на действия верующих, и не дай бог сказать что-то хорошее про GoTo, т.к. это вызывает мощнейшую негативную реакцию.

Однако, с GoTo программа как работала, так и будет работать, за исключением входа в циклы и из try. А во всех остальных случаях - вполне приличный оператор, но использовать его стоит крайне осторожно и максимально редко (только в самых крайних случаях, а то ... ). Я знаю, что здесь очень много профи, которые гипер сильно любят паскаль и досконально знают каждое его "рёбрышко" - это поражает и завораживает. Например, я, не могу прочитав книгу, запомнить все нужные мне вещи и они через неделю теряются. А на форуме, они запоминаются лучше, т.к. работают дополнительные механизмы мозга. А мастера, время от времени делятся очень полезными знаниями, которых даже в книжках нет - это в итоге очень сильно мне помогает. А главное потом вспомнить, всё очень просто, т.к. суть беседы ассоциативно вспоминается быстрее и практически всегда записывается мозгом в долговременную память, а потом легко её найти в своих записях на форуме. Есть правило: Используй или забудешь! - соответственно мои вопросы и всем отвечающим помогают не забыть.

PS: GoTo - никогда не пользуйтесь этим злом, т.к. сложно проследить цикл из GoTo, а вот из repeat until - просто.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение Vadim » 02.09.2015 13:24:53

Если кто-то GoTo
Применяет поутру -
Это злой игильский дядька
Ему мир не по нутру...
(Омар Хайям)
:-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: GoTo или repeat until?

Сообщение DYUMON » 02.09.2015 13:44:08

блин а что в паскале есть гото?
последний раз его использовал в qbasik )
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 13:49:07

Vadim писал(а):(Омар Хайям)

Над седой равниной моря ветер тучи собирает.
Между тучами и морем гордо реет GoTo,
черной молнии подобный...

То крылом волны касаясь,
то стрелой взмывая к тучам, он кричит, и — тучи слышат
радость в смелом крике: GoTo!

В этом крике — жажда бури!
Силу гнева, пламя страсти и уверенность в победе
слышат тучи в этом крике: GoTo!

Чайки стонут перед бурей,— стонут, мечутся над
морем и на дно его готовы спрятать
ужас свой... пред бурей: GoTo!

И гагары тоже стонут,—
им, гагарам, недоступно наслажденье битвой жизни:
гром ударов их пугает: GoTo!

Глупый пингвин робко прячет
тело жирное в утесах... Только гордый GoTo
реет смело и свободно
над седым от пены морем!

...
Последний раз редактировалось vitaly_l 02.09.2015 14:43:54, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение Vadim » 02.09.2015 14:03:12

Чтоб запутать всех врагов,
В GoTo уйти готов.
Но запутались коллеги -
Много среди них врагов...
(Омар Хайям)
:-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 14:13:18

Vadim писал(а):(Омар Хайям)

Всё мрачней и ниже тучи
опускаются над морем,
и поют, и рвутся волны к высоте за GoTo!

Гром грохочет.
В пене гнева стонут волны, с ветром споря.
Вот охватывает ветер стаи волн объятьем крепким
и бросает их с размаху в дикой злобе на утесы, разбивая
в пыль и брызги: GoTo!

Черной молнии подобный, как стрела пронзает тучи,
пену волн крылом срывает: GoTo!

Вот он носится, как демон,
— гордый, черный демон... бури!
— и смеется, и рыдает...
Он над тучами смеется, он от радости рыдает! GoTo!

В гневе грома,— чуткий демон,— он давно усталость слышит,
он уверен, что не скроют тучи солнца,— нет, не скроют!
GoTo!

Ветер воет... Гром грохочет...
Синим пламенем пылают стаи туч над бездной моря.
Море ловит стрелы молний и в своей пучине гасит: GoTo!

Точно огненные змеи, вьются в море, исчезая,
отраженья этих молний. GoTo!

— Буря! Скоро грянет буря!
Это смелый GoTo! гордо реет между молний
над ревущим гневно морем: GoTo!

то кричит пророк победы:
— Пусть сильнее грянет буря! GoTo!

...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение Лекс Айрин » 02.09.2015 15:39:20

DYUMON писал(а):блин а что в паскале есть гото?


Есть. Иногда очень даже используется.

А насчет брейков и экзистов... можете писать с ними или без них, но при компиляции/оптимизации в коде не будет и следа от них. И Goto лишний уберется.

Другое дело, что излишнее их использование говорит о квалификации программиста.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 16:11:09

Лекс Айрин писал(а):Есть. Иногда очень даже используется.

Ну уж нет!

GoTo - это переход на уровень более низкого программирования!
Зачем программисту высокого уровня переходить на более низкий уровень?
Табу! Туда нельзя высокому уровню! Табу! Там совсем другая логика! Будет конфликт в логике программиста! <== И поэтому табу!
Это я Вам говорю как программист самого высокого уровня (художник - я вообще не пишу ни каких кодеков итд, а только использую готовое ).

GoTo - это переход на уровень более низкого программирования! Что там делать? Там микросхемы... Там страшно... Там процессор...
GoTo - это прошлый век, времена неандертальцев, дикари которые добывали огонь из молний...
Ну какой разумный программист будет использовать GoTo? Да и зачем?
Без GoTo можно написать - любой код (на высоком уровне)...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение Лекс Айрин » 02.09.2015 16:30:41

vitaly_l
Ну и чо! (с)

Да это переход на уровень более низкого программирования. Да, не рекомендуется... но можно.

vitaly_l писал(а):Без GoTo можно написать - любой код (на высоком уровне)...



Я сам стараюсь его не использовать (пока удачно). Но не стану утверждать, что это нельзя делать категорически -- тогда бы его просто исключили из языка.

Кстати, любой из циклов можно представить в виде операций условного и безусловного перехода. даже не реализованный почти нигде Цикл Дейкстры.

vitaly_l писал(а):Это я Вам говорю как программист самого высокого уровня (художник - я вообще не пишу ни каких функций, а только использую готовое ).


Иногда даже самым крутым программистам приходится использовать более низкий уровень абстракции или костыли. предпочту первое.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 16:42:39

Лекс Айрин писал(а):Иногда даже самым крутым программистам приходится использовать более низкий уровень

Кстати и из цикла в цикл можно переходить, если цикл из GoTo...
Просто логика совсем другая и поэтому наложили табу, а в некоторых языках GoTo вообще убрали,
чтоб не лазили, т.к. там без знания той (низкоуровневой) логики - можно остаться навсегда.
Кто вынет несчастного программиста высокого уровня из процессора, если его туда засосёт?
Там страшно, там всё мелькает... Там дуализм карпускул... Там нано мир... Там е квадрат равно эм це квадрат (но не всегда)...

Не ходите дети в Африку гулять!
В Африке Акулы... Злые крокодилы... и коварный GoTo!
Не ходите дети в Африку гулять!

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение Лекс Айрин » 02.09.2015 16:50:50

vitaly_l, ну и где этот прекрасный мир высокой логики?
Сейчас мы как раз и программируем в достаточно низкоуровневом языке с надстройкой из классов и объектов.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: GoTo или repeat until?

Сообщение vitaly_l » 02.09.2015 17:02:31

Лекс Айрин писал(а):ну и где этот прекрасный мир высокой логики? Сейчас мы как раз и программируем в достаточно низкоуровневом языке

Сейчас Вы в первую очередь, программируете в своей голове... а уже потом переносите на низкоуровневый язык, например Pascal с надстройкой из классов и объектов.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: GoTo или repeat until?

Сообщение Лекс Айрин » 02.09.2015 17:23:14

vitaly_l,то, что я хочу запрограммировать трудновато перенести в современный паскаль... так как не хватает некоторых конструкций.

Ну и данных. Для начала придется создать набор низкоуровневых библиотек... Хочется написать паскалеподобный агенториентированный язык.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru