Goto, отношение |
Goto, отношение |
xds |
24.01.2007 6:05
Сообщение
#21
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Цитата Это просто анархия получается. Если такое скомпилировать, то код может получиться неэффективным. Такие приёмы обычно реализуются в языках, изначально ориентированных на интерпретацию. Например, в PHP можно вызывать функции по имени из переменной. В SOS Basic можно делать "GO TO n", где n - переменная, хранящая номер строки, к которой "GO". Правда, последнее черевато большими проблемами после автоматической перенумерации строк - как пить дать, поленится разбираться в Ваших формулах, вычисляющих адрес перехода -------------------- The idiots are winning.
|
hardcase |
24.01.2007 20:26
Сообщение
#22
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Goto вполне применим. Только конструкции типа if, while, for и др. всё же не зря придумали.
В любом случае программу с goto можно преобразовать в форму из одних только циклов и ветвлений. К тому же оптимизация от использования сего оператора весьма сомнительна ввиду испоользования современных компиляторов. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
SKVOZNJAK |
5.02.2007 3:06
Сообщение
#23
|
Профи Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: 11 |
if и for никто и не выбрасывает, это же основа структурного кода. А вот while при использовании goto забываешь как пишется. Соблазн goto в халявных ресурсах алгоритма при добавлении кода. Не нужно переделывать алгоритм, втавляй сколько хочешь без подробного изучения всего участка кода.
Что происходит при выходе через goto из цикла или конструкции begin end и последующим в них возращением. Всё продолжает работать как если бы это был простой вызов процедуры. Сколько таких последовательных выходов компилятор способен запомнить? |
klem4 |
11.02.2007 20:04
Сообщение
#24
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
TarasBer |
11.02.2007 21:51
Сообщение
#25
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Я всегда использую гото в процедуре считывания файла (в остальных случаях - очень редко).
Пример (надуманный): надо считать файл. В нём имеются: числа икс и игрик - по одному байту (shortint), причёи оба должны быть по модулю не более 10. Далее - количество элементов некоторого массива (byte). Их не более чем 64. Далее - сами элементы. Причём все обязаны быть ненулевыми. Далее - число V (byte). Обязательно равно 128. Всё. Как я это бы реализовал:
Это весьма примитивный случай. И никакого злоупотребления - всё очень логично и читабельно. Можно вместо гото писать begin Close(F); Load := False; Exit; end; - но это дольше. А как этот текст выглядит в виде брек-континь, я даже думать не хочу. Так что без гото здесь можно обойтись лишь теоретически. -------------------- |
SKVOZNJAK |
16.02.2007 21:33
Сообщение
#26
|
Профи Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: 11 |
А теперь реши эту задачку открывая файл как нетипизованный.
|
TarasBer |
17.02.2007 18:36
Сообщение
#27
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
|
SKVOZNJAK |
18.02.2007 23:04
Сообщение
#28
|
Профи Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: 11 |
Смотря что считать помощью Просто по жизни пользуюсь нетипизированными файлами, там без гото крокодил не ловится. Интересно было взглянуть, насколько вырастет количество меток у независимого эксперта.
|
Game-lord |
26.05.2007 13:32
Сообщение
#29
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: 0 |
Пользуюсь, но очень редко =)
-------------------- |
andriano |
25.12.2007 23:08
Сообщение
#30
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Вопрс можно?
Спасибо. А jmp @label за goto считается? ;) А если серьезно, использовал на Фортране из соображений совместимости с FORTRAN IV до тех пор, пока не стало ясно, что уже никогда не буду пользоваться компиляторами, не поддерживающими по крайней мере Fortran 77. Если же речь идет о Паскале, то, думаю, даже не вспомню, как синтаксически правильно описать метку. |
Yevgeny |
20.01.2008 1:36
Сообщение
#31
|
The matrix has me!!! Группа: Пользователи Сообщений: 74 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Сам почти не пользуюсь, но мой препод говорит, что хороший программист отличается от плохого тем, что у плохого есть Label, а у хорошего нет!
Сам я лично считаю, что именно в паскале это не так важно, ибо никакой уважающий себя программист в паскале ничего достойного писать не будет, а в смысле обучения хорошему стилю написания кода, так сказать для разминки, в самый раз, и никакие goto тут неприемлимы!!! klem4 суперрр картинка Уважаемый, volvo, я не хотел Вас обидеть таковым отношением к паскалю, я высказал всего-лишь своё личное мнение, никому его не навязывая, никого не обзывая и не ущемляя достоинство других, и хотя я считаю, что обосновал своё именно такое отношение, не говоря при этом что-то плохое... Свободу слова по-моему никто не отменял, и правил форума я не нарушил... Вы можете занижать мою репутацию на форуме сколько хотите, но ничего этим не добъётесь, ибо я на нём зарегистрировался отнюдь не для повышения своей репутации и не для моего самоутверждения, а для своего усовершенствования, для того что бы в будущем стать достойным программистом, конечно же знающим и паскаль в том числе... Извините пожалуйста за сообщение не по теме! Сообщение отредактировано: Yevgeny - 20.01.2008 16:06 -------------------- "Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
|
Айра |
21.01.2008 15:57
Сообщение
#32
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
"Квалификация программиста обратна пропорциональна количеству операторов перехода, которые он использует в своих программах" - наш декан.. Я в принципе согласна..
|
Michael_Rybak |
21.01.2008 16:26
Сообщение
#33
|
Michael_Rybak Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Цитата Квалификация программиста обратна пропорциональна количеству операторов перехода То есть все программисты на питоне - одинаковой квалифиции |
Айра |
21.01.2008 16:40
Сообщение
#34
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
вообще это относилось к паскалю..
|
Michael_Rybak |
21.01.2008 17:02
Сообщение
#35
|
Michael_Rybak Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
категорически несогласен в любом случае
|
Айра |
22.01.2008 5:40
Сообщение
#36
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Ну на то это и голосование, у каждого свое мнение))
|
andriano |
23.01.2008 23:24
Сообщение
#37
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
Айра |
24.01.2008 5:16
Сообщение
#38
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
А по-моему, Michael_Rybak, отнес это к моим словам..
|
andriano |
24.01.2008 9:16
Сообщение
#39
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
А по-моему, Michael_Rybak, отнес это к моим словам.. Вообще-то твой вариант (с уточнениями Михаила) в несколько обобщенной форме можно представить так: W = k1*k2*k3*...*kn, где: W - квалификация программиста, k1 = N/(Ngoto+1), где: N - количество строк кода программы, Ngoto - количество операторов перехода. k2 - ? k3 - ? ... kn - ? Осталось только доопределить k2...kn. ;) |
Текстовая версия | 26.09.2024 15:59 |