powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / этот страшный ужасный GoTo
25 сообщений из 76, страница 2 из 4
этот страшный ужасный GoTo
    #38096518
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов
Как-то ты не совсем корректно формулируешь мысль - почем ты одному GOTO сопоставляешь бесчисленные комбинации флагов выхода из циклов?
1. Если у нас бесчисленные комбинации флагов выхода из циклов, то тогда у нас будут бесчисленные переходы GOTO.
2. Вопрос, что лучше, бесчисленные переходы GOTO или бесчисленные комбинации флагов выхода из циклов?

От бесчисленных переходов GOTO голова кругом пойдет.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096524
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

кстати на заметку, в Бабсике можно сразу покинуть 3 цикла при желании

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
        For i As Integer = 1 To 100
            Do
                While True
                    Exit For
                End While
            Loop
        Next i


без всяких там GoTo как написано в педивикии
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096571
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, а в JavaScript есть break
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096649
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУCat2В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов
Как-то ты не совсем корректно формулируешь мысль - почем ты одному GOTO сопоставляешь бесчисленные комбинации флагов выхода из циклов?
1. Если у нас бесчисленные комбинации флагов выхода из циклов, то тогда у нас будут бесчисленные переходы GOTO.
2. Вопрос, что лучше, бесчисленные переходы GOTO или бесчисленные комбинации флагов выхода из циклов?



От бесчисленных переходов GOTO голова кругом пойдет.
Речь о выходе из цикла нижнего уровня.
Для каждого из вложенных циклов в общем случае нужен свой флаг выхода.
Переменные должны описываться рядом с их использованием. Нет глобальным переменным! - это тоже спорный подход.
Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096673
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ерунда это все. На том-же ассемблере вообще без гоуту шага не ступишь. :)
Но, вообще, последнее время надобности не возникало.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096686
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
В функцию оформить и выйти ретурном.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096697
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Edd.DragonCat2Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
В функцию оформить и выйти ретурном.
Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов?

GOTO - полезный оператор. Присутствует во всех языках программирования, ориентированных на решение практических задач.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096711
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2десяти уровней вложенности циклов

Часто у вас такие циклы?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096717
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAНа том-же ассемблере вообще без гоуту шага не ступишь. :)
это кажется. Каждый лишний переход - срыв конвейера.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096721
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Речь о выходе из цикла нижнего уровня.
Для каждого из вложенных циклов в общем случае нужен свой флаг выхода.
Переменные должны описываться рядом с их использованием. Нет глобальным переменным! - это тоже спорный подход.
Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
Решение классическое и старо как мир, его уже озвучили. Собственно, разделение логики кода на составляющие методы - бест практис. Писать код процедурно в одном методе под тысячи строк - зло, за которое нужно расстреливать.

Cat2Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов?
А сколько признаков будет, столько и напиши функий. На практике больше трех вложенностей я не встречал, и то поискать эти примеры нужно, сейчас не упомню. Если в твоем коде слишком большая вложенность по признакам, проблема не в функциях, а в архитектуре кода. На кол архитектора.

Cat2GOTO - полезный оператор
GOTO - зло, от которого нужно отказываться при любом раскладе.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096731
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилYUBAНа том-же ассемблере вообще без гоуту шага не ступишь. :)
это кажется. Каждый лишний переход - срыв конвейера.Вызов функции в языках высокого уровня, по существу и есть гоуту. В ассемблере это явно как переход на адрес.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096745
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAВ ассемблере это явно как переход на адрес.
не путайте JUMP и CALL
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096747
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096754
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилне путайте JUMP и CALLМодификации. :) И, кстати, не везде это есть.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096755
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAИзопропилне путайте JUMP и CALLМодификации. :) И, кстати, не везде это есть.
BALR 14,0 ?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096831
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
int superPuperCountProc()
{
	for()
	{
		return 1;

		for()
		{
			return 2;

			for()
			{
				return 3;

				for()
				{
					return 4;

					for()
					{
						return 5;

						for()
						{

						}
					}
				}
			}
		}
	}
	
	return 0;
}


int main()
{
	superPuperCountProc();
}



И еще раз - вопрос не в том, что краше, а в том, чтобы не взрывать ни компилятору, ни себе башню. Это плохо, что во всех языках есть goto. Без него всем было бы чуточку легче. Кому-то меньше зубодробительной логики по разбору кода, а кому-то меньше потенциальных проблем (хорошо, если компилятор чего подскажет, а если нет?).
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096968
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon
Гавнокод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
int superPuperCountProc()
{
	for()
	{
		return 1;

		for()
		{
			return 2;

			for()
			{
				return 3;

				for()
				{
					return 4;

					for()
					{
						return 5;

						for()
						{

						}
					}
				}
			}
		}
	}
	
	return 0;
}


int main()
{
	superPuperCountProc();
}



Мда. За такую "архитектуру" нужно выпроваживать в зал расстрела...
Только разделение логики на методы спасут отца русской демократии.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096980
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

Хм, как вариант для рефакторинга очень даже ничего.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096982
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТолько разделение логики на методы спасут отца русской демократии.
а любая я ли логика поддаётся эффективному разделению на методы?
а вдрух я реализую конечный пулемёт автомат. там не то что без готу не обойтись , но и на методы делить то трудновато.

и в конце концов на методы делить мона тогда , когда более менее ясно , как дальше двигаться, а если поведение метода окончательно не определено, то рано его делить на под методы.
был метод какой то ( матрицу обкатывал в рекурсии), который при создании трудно было разделить. вот он и получился строк 200-300 , уж не помню точно. да , потом его разпили удачно , но только потом.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096988
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erа любая я ли логика поддаётся эффективному разделению на методы?
Вопрос из разряда теории "всегда ли можно оптимизировать код". Всегда, даже если ты максимально оптимизировал код, это не означает, что он больше не поддается оптимизации. Думай, как можно структурировать и декомпозировать логику и уйти от лапшекода.

beg-in-erа вдрух я реализую конечный пулемёт автомат. там не то что без готу не обойтись , но и на методы делить то трудновато.
Слабо пример привести, в котором не обойтись без GOTO? Если "трудновато" декомпозировать - это не означает, что это нельзя сделать.

beg-in-erи в конце концов на методы делить мона тогда , когда более менее ясно , как дальше двигаться, а если поведение метода окончательно не определено, то рано его делить на под методы.
Если не ясно, "как дальше двигаться" - рано писать программу. Нужен анализ и обследование предметной области. Когда будет представление, тогда можно автоматизировать процессы. А так ты просто сотрясаешь воздух сферическими конями в вакууме.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096999
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbeg-in-erа любая я ли логика поддаётся эффективному разделению на методы?Вопрос из разряда теории "всегда ли можно оптимизировать код". Всегда, даже если ты максимально оптимизировал код, это не означает, что он больше не поддается оптимизации. Думай, как можно структурировать и декомпозировать логику и уйти от лапшекода.

пропущено...Всегда можно, но не всегда нужно.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097030
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсли "трудновато" декомпозировать - это не означает, что это нельзя сделать.
понятно что всё можно , но иногда оно может пойти во вред. или затраты по времени будут ощутимы.

авторЕсли не ясно, "как дальше двигаться" - рано писать программу
речь не о проге , а об конкретном алгоритме. т.е. тогда , когда мы знаем , что хотим получить , но не знаем точно как это сделать
1. Либо много альтернатив, и выбрать изначально правильную невозможно
2. Либо при создании первичной реализации алгоритма получаются промежуточные данные, которые уже в последствии и делают основу конечной реализации. Без этих данных реализацию построить невозможно, а на бумаге это не просчитать.

в частности тогда шла речь о реализации алгоритма Литтла, ака метод ветвей и границ. как он работает , я чесно говоря до сих пор не понимаю ( т.е. я не до конца въехал, почему он таки даёт почти правильный результат , и почему он иногда даёт не всегда оптимальный результат)

как раз для таких случаев goto просто незаменим. и меня уже не переубедить никогда в том , что goto надо отправлять на свалку, что он вреден, что он колечит мозг.
goto это лишь удобный метод достижения поставленной задачи. но как атомное оружие в программировании , его надо юзать с умом, там где он реально необходим, где все for, while.... курят в сторонке
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097040
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er1. Либо много альтернатив, и выбрать изначально правильную невозможно
Ну так берем и тестируем алгоритмы. Более выйгрышное по каким-то там определенным параметров забираем себе.

beg-in-er2. Либо при создании первичной реализации алгоритма получаются промежуточные данные, которые уже в последствии и делают основу конечной реализации. Без этих данных реализацию построить невозможно, а на бумаге это не просчитать.
Ну так выноси расчет и взаимодействие с этими данными в отдельный слой, тем самым декомпозируя основной алгоритм.

beg-in-erкак раз для таких случаев goto просто незаменим.
Мне нравится твоя логика, ты пишешь, что не знаешь как он работает и что не разобрался с этим алгоритмом, но точно уверен в необходимости GOTO. Зачет
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097077
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМне нравится твоя логика, ты пишешь, что не знаешь как он работает и что не разобрался с этим алгоритмом, но точно уверен в необходимости GOTO. Зачет
я знаю как работает его реализация, Но я до конца не понял ( тогда) почему работает сам алгоритм. почему он находит почти лучший вариант. и это непонимание не относится к программированию никаким боком. так что твой "зачёт" - мимо кассы.

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

поясню свою мысль. когда шла та реализация - необходимо было найти решение транспортной задачи с доп моментами.
на рассмотрении были "муравьи", "генетика" и "ветви" (куда же без них).
что генетические алгоритмы , что муравьные вроде давали результат, но что то с доп моментами с ними было плохо.
пришлось лезть в метод ветвей и границ, в реализации Литтла, получить промежуточные данные,
на основании которых и был выведен новый алгоритм, который выполнял поставленную задачу за приемлемое время.
Оптимизация NP полной задачи это не таблицу в БД добавить. тут надо найти правильное/приемлемое решение.
и заранее вычислить конечную реализацию просто невозможно. необходимо пройти по всем кругам.

и тут не применим ваш график буровых работ для служащих ВВС (с) стандартные подходы тут не подходят.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097078
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
жим 165
приседание 235
шестой десяток
рубаху не использую, только пояс ( и то после травмы)
а есть на форуме кто еще железом балуется?

130-210-180
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 2 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / этот страшный ужасный GoTo
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]