![]() |
|
Модераторы: LSD |
![]()
|
|
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: нет Всего: 29 |
Забыл как пользоватся оператооом goto, помогите вспомнить?
|
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 162 |
А позволь спросить, ЗАЧЕМ???
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
-------------------- С уважением, г-н Посол. |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: нет Всего: 29 |
А ты что не знаешь зачем он используется...? |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
bartram, просто всегда можно обойтись без goto.
Я лично вообще им не пользуюсь. ИМХО, это некрасиво... -------------------- С уважением, г-н Посол. |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: нет Всего: 29 |
Можешь предложить альтернативу? |
|||
|
||||
| Garabar |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 15.9.2004 Репутация: нет Всего: 1 |
Ууу... приведи пример где без него не обайтись |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Приведи конкрентый код, где ты используешь goto, и попробуем сделать без goto...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Garabar |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 15.9.2004 Репутация: нет Всего: 1 |
Спорим на ящик пива не приведёт)))) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Garabar
на Дельфах, пожалуй, нет... на Барсике - запросто -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Garabar |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 15.9.2004 Репутация: нет Всего: 1 |
[/quote]на Дельфах, пожалуй, нет... на Барсике - запросто [quote] Ну мы же добропорядочные форумисты))) не забываем тему форума)))) |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Без goto в любом случае можно обойтись. Вот только видал тексты с goto, где уж лучше закрыть глаза на использование goto, чем переделывать (хотя если бы изначально правильно писались те проги, то можно было бы спокойно без goto обойтись)...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Давайте ваш код! С циклами While & Repeat всё можно решить и без break, exit и меток!!!
|
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 162 |
я бы сказал так писать как угодно, но только не с использованием goto
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Когда меня учили, мне говорили: забудь про метки и GoTo!
|
|||
|
||||
| Girder |
|
||||||||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
Лично я не вижу ни чего плохого в использовании Goto в последних версия компилятора, единственное что плохо: читабельность кода ухудшается и можно запутать компилятор в генерации оптимального кода. Рассмотрим примеры: -Компилятор "запутался"
-Компилятор справился
-Код без Goto
PS: В более ранних версиях компилятор был не такой "умный" Это сообщение отредактировал(а) Girder - 7.10.2004, 09:56 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||||||||||
|
|||||||||||||
| bartram |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: нет Всего: 29 |
Вот, вот именно это я и имел ввиду! А вы тут зачем go to без него можно обойтись! Свой пример попозже напишу... |
||||||||||||||
|
|||||||||||||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
А когда меня учили (я тогда ещё на спектруме программировал и ессно не знал что такое уайл и репит-антил). Дак вот тот человек в очень корректной форме нам хотел сказать, что goto в своих прогах используют только самые распоследние "№"%:?;%"№ и #$%#@... Я конечно ни на чего не намекаю...
bartram Давай пиши свой код с готами или алгоритм кидай. Я готов спорить на миллиард ящиков пива Это сообщение отредактировал(а) EKoshelev - 8.10.2004, 08:30 -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| Zzz |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 21.2.2003 Где: Мурманск Репутация: 1 Всего: 5 |
Ну давай: Сделать бесконечную (зацикливающуюся) программу на языке Паскаль без использования asm-вставок, циклов. Программа заносит в 300 порт "1". Программа носит учебный характер. Мой пример
Ваш пример: Это сообщение отредактировал(а) Zzz - 8.10.2004, 09:04 -------------------- Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь. "ЭВМ в инженерной практике" М. 1989г. |
||||
|
|||||
| Pakshin A. S. |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Добавлено @ 13:00
А что, прямо так и задано?! Это сообщение отредактировал(а) Pakshin A. S. - 8.10.2004, 12:59 |
||||
|
|||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Zzz
A чё вот так нельзя?
Добавлено @ 14:47 А чё-то это, блин, да... Я не понял, что значит без циклов? Чё ещё за условие такое имбицильное? -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
p0s0l спасибо... что перенес этот топик в этот раздел - где ему самое место!
PS: Большая просьба - bartram-а не обижать в последствии! Ну... у кого какие мнения? Это сообщение отредактировал(а) Girder - 8.10.2004, 19:27 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 4 Всего: 165 |
Это надуманная задача и непрактичная. я видел примеры где без goto обойтись.. точно, но не помню где в некоторых случаях оно действительно помогает, если надо быстро выпрыгнуть за пару скобок без громадины исключений и.т.д.. Добавлено @ 19:39 Всё ИМХО --------------------
|
||||
|
|||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Мне сказали, что goto - это дурной тон программирования. Метки используются только в ассемблере, а это уже совсем другая история!
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: 3 Всего: 48 |
-------------------- Account removed |
|||
|
||||
| Pakshin A. S. |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Вот два примера решения задачи без использования asm и циклов! |
||||||||
|
|||||||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Только стек-то не резиновый...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Sorry, не понял...
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Во втором случае у тебя рекурсивная процедура.
При каждом вызове в стек будет заносится адрес возврата... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Dr.Death |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 950 Регистрация: 15.7.2003 Где: Волгоград Репутация: нет Всего: 1 |
Pakshin A. S.
При вызове процедуры у тебя заноситься в стэк адрес, откуда был вызвана она, при завершении он изымается и делается return на то место, откуда была вызвана процедура. А в твоем случае получается, что никогда не будет возвращение, все время запись в стэк. А стэк у нас ограничен в размерах. -------------------- Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Хотя, признаться, есть исключение...Если прога скомпилирована для реального режима, то при переполнении стека ничего не произойдёт критичного, т.к. никакой проверки в этом режиме не происходит: просто когда в стек занесут 64кб данных, заполнение пойдёт заново...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
А как насчет этого:
|
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
Pakshin A. S. приведу два примера, но без goto.
1)
2)
В чем разница и если она? ответь... просто интересно лично твое мнение. Забыл добавить -вариант 1: R и R2 - есть бит; -вариант 2: R и R2 - размерностью больше чем один бит. Это сообщение отредактировал(а) Girder - 11.10.2004, 02:09 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Girder
Прими мое уважение за хороший анализ целесообразности применения goto. Большинство людей где-то услышали эту "аксиому" - типа goto это ацтой и повторяют это не задумываясь - а собственно почему ? Насчет задачи, где goto может быть нужен: табличные переходы. Это относится к тем, кто пишет switch с парой сотен условий. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| NightGoblin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 Репутация: нет Всего: 11 |
А, по-моему, если кто-то по ночам зажигает звезды, значит, это кому-нибудь нужно...
Или goto просто забыли убрать из C++ за ненадобностью?... Согласен, читаемость он ухудшает. Согласен, почти всегда без него можно обойтись. Но иногда (подчеркиваю - иногда, даже редко) возникают такие ситуации, что писать "кошерный" код без единого goto оборачивается существенной потерей производительности. Да и читаемость ухудшить можно и без всяких goto - неужели вам не попадались программы, нечитаемые из-за одного только форматирования? Добавлено @ 06:00 Zzz, извини, но я поддержу тех, кто сказал, что это надуманная и ненужная задача. Зачем кому-то понадобилось делать что-то без циклов?... Думаю, все же полезнее будет обсудить использование goto в реальных ситуациях... -------------------- Kernel panic: /dev/null overflow! GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y? B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981 |
|||
|
||||
| gray_k |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
-------------------- С уважением. Gray. |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
ИМХО:
- Хорошо сказано!
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Sail |
|
|||
|
Unregistered |
Гото иногда все-таки стоит использовать, например, когда надо брейкнуться сразу из 2х вложенных циклов.
Пусть надо найти в 2Д-массиве индексы первого нулевого элемента. Имхо следующий код с гото читабельнее:
|
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: 3 Всего: 48 |
В Java в таких случаях я просто ставлю return, для выхода из функции. -------------------- Account removed |
|||
|
||||
| Pakshin A. S. |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
А где тут Label & GoTo |
||||||
|
|||||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Не знаю, но ошибка тут точно есть -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Точно!
Не дописал
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: нет Всего: 93 |
Pakshin A. S.
В твоём коде аж три проверки a[i,j]<>0, а в коде с goto только одна. Как же быть с быстродействием проги? Добавлено @ 22:47 Да и действительно, с goto текст кода гораздо читабельнее и компактней (в этом примере с массивом, а не вообще ЗЫ: Сам я goto не использовал уже года два Это сообщение отредактировал(а) Дрон - 20.10.2004, 22:48 -------------------- Да. Именно так. |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Не знаю, как с быстродействием, а я читал этот "простой пример без GOTO" минуты 3 и так и не понял логики. Хотя мне не впервой разбирать большие ассемблерные листинги... -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Дрон
Надо же чем-то иногда жертвовать, тем более при современных скоростях... Представь: гонимся за быстродействием, поэтому везде пизаем GoTo и т. п. -> Получаем полнейший бред при чтении, допустим одной процедуры (очень большой), т. к. тама где-то с десяток переходов по ходу действия процедуры и несколько переходов назад... |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Это сообщение отредактировал(а) Pakshin A. S. - 22.10.2004, 17:04 |
|||
|
||||
| sergejzr |
|
||||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 7 Всего: 360 |
Дело может не в самом GOTO В Паскале есть маленькая проблемка При применении проверок итд пишется очень много слов Поэтому простенькие примеры становятся трудночитабельными Например если сравнить с Си:
Это уже легче читается
Ну а на асме этот пример читается легче всего Повторяю, вышесказанное относится к простеньким примерам Если ваш пример на 1 КБ и в нём 5 меток и 10 GOTO, прочесть и понять его слёту практически невозможно Лично я использую GOTO в маленьких функциях, строчек например на 10-20, где его работу можно конкретно проследить и понять. И всегда особенно комментирую это место. Мне кажется, что так программировать не только можно, но и желательно из за быстродействия |
||||||
|
|||||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
Это сообщение отредактировал(а) Girder - 22.10.2004, 21:59 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Zandr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Хммм... На Java, например это выглядит так:
Это сообщение отредактировал(а) Zandr - 1.11.2004, 07:31 |
||||
|
|||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 2 Всего: 154 |
Обычно для этого такой код оформляют в виде функции. Чтобы можно было выйти из вложенного цикла Return (С подобные) или Exit (Delphi) -------------------- |
|||
|
||||
| Ser9a |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 7.3.2005 Репутация: нет Всего: нет |
Все перпода говорят что GoTo есть плохой стиль.
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 7 Всего: 360 |
А раньше они говорили, что коммунизм - лучшаий строй общества.
GOTO - дело вкуса |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
Я вот даже не знаю, есть ли в php и perl`е оператор goto. А в паскале применял
|
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |