Здравствуйте, Codealot, Вы писали:
C>Это точно не базовые конструкции языка CC>>Это как раз самые что ни на есть базовые. C>Расскажи мне, в чем смысл писать индексацию как
Т.е. ты признаёшь что это базовое свойство языка?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Т.е. ты признаёшь что это базовое свойство языка?
Извращения к числу базовых конструкций не относятся. Знать их новичкам точно не надо. А за использование надо бить палкой, чтобы лучше доходило.
Ну так на вопрос ты ответить в состоянии?
Здравствуйте, Codealot, Вы писали:
C>Извращения к числу базовых конструкций не относятся.
Что значит извращения?
Это легальное свойство языка. Особенно тернарный оператор.
C>Ну так на вопрос ты ответить в состоянии?
Перевод темы вопросом не считается.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
"цикл с выходом из середины" — лексика странная. Чел вполне мог не понять. Особенно, если чел читает книги на Инглише, а тут .... "цикл с выходом из середины" — я тож такую формулировку впервые слышу...
Может "прерывание цикла" было бы понятнее?
Здравствуйте, oncer, Вы писали:
O>"цикл с выходом из середины" — лексика странная. Чел вполне мог не понять. Особенно, если чел читает книги на Инглише, а тут .... "цикл с выходом из середины" — я тож такую формулировку впервые слышу... O>Может "прерывание цикла" было бы понятнее?
Как я уже сказал, чувак просто смотрел на код. Не надо высасывать из пальца.
сто лет на квыт не заходил
но меня порадовало когда увидел что тут всё те же люди всё так же из малюсенькой фразы раздувают километровое обсуждение)
как будто был тут вчера
Здравствуйте, cthsq, Вы писали:
C>сто лет на квыт не заходил C>но меня порадовало когда увидел что тут всё те же люди всё так же из малюсенькой фразы раздувают километровое обсуждение) C>как будто был тут вчера
Здравствуйте, cthsq, Вы писали:
C>сто лет на квыт не заходил C>но меня порадовало когда увидел что тут всё те же люди всё так же из малюсенькой фразы раздувают километровое обсуждение)
Я было пропустил недельку и насрали столько что только недавно разгрёб
И то пришлось на все темы авторства Shmj сразу пометки "прочитано" и "не показывать больше" поставить
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Философ, Вы писали:
Ф>break, return, goto, throw знаю, а вот "цикл с выходом из середины" — какая-то непонятная хрень. Никогда не слышал. Ф>Какой-то новый термин.
"Цикл с выходом из середины" — это то, ЧТО нужно получить, а break, return, goto и throw — это то, КАК этого можно достичь. Топик стартера в большей мере интересовало "что", а не "как", вот и все.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Codealot, Вы писали:
Н>>Break что ли? C>Естественно. А чем еще это может быть?
Выход из функции по-исключению выброшенному из signal-handler'a!
Н>>Ну может он просто не понял тебя. C>Он смотрел на код и сказал "а что это за странная штука и зачем нужна?"
Я отчасти с ним согласен. break -- по-сути есть замаскированный goto, нарушающий принципы структурного программирвоания.
Здравствуйте, Codealot, Вы писали:
C>Здравствуйте, Pzz, Вы писали:
Pzz>>Нет.
C>Вероятно, там предложат сделать добавочный флаг для выхода и вытащить часть переменных из цикла. Но люди без склонности к сектанству так не делают.
Здравствуйте, Codealot, Вы писали:
C>Общался тут с одним чуваком по поводу ревью кода, и он не понимает, что такое цикл с выходом из середины. Вообще не знает, что это такое и зачем может быть нужно.
Тоже поплачусь.
Работая в одной безусловно крупной софтовой фирме очень сильно удивил на код-ревью оператором do-while
без фигурных скобок. Условно: "do *x != y; while(++x);".
А уж объяснить, что в языках C/C++ есть понятие временного значения (например, возвращаемого из функции)
у которого есть в свою очередь понятие срока жизни -- вообще трудно. Не говоря уж о том, что на это
временное значение могут существовать ссылки/указатели, у которых тоже срок жизни...
Здравствуйте, fk0, Вы писали:
fk0> Я отчасти с ним согласен. break -- по-сути есть замаскированный goto, нарушающий принципы структурного программирвоания.
На самом деле нет. Но фанатикам нюансы не интересны.
Здравствуйте, fk0, Вы писали:
fk0> Я отчасти с ним согласен. break -- по-сути есть замаскированный goto, нарушающий принципы структурного программирвоания.
А циклы сами по себе — это тоже по сути замаскированные goto/jmp.
Как с ними не нарушать принципов структурного программирования?
Здравствуйте, karbofos42, Вы писали:
K>Здравствуйте, fk0, Вы писали:
fk0>> Я отчасти с ним согласен. break -- по-сути есть замаскированный goto, нарушающий принципы структурного программирвоания.
K>А циклы сами по себе — это тоже по сути замаскированные goto/jmp. K>Как с ними не нарушать принципов структурного программирования?
В этой теме кто-то сказал, что структурное программирование -- это когда программа
строится из кубиков имеющих один вход и типично один (циклы), два (условный оператор)
или множество (switch) выходов. Мне такое определение понравилось. break/goto нарушают этот принцип.
Здравствуйте, karbofos42, Вы писали:
K>Здравствуйте, fk0, Вы писали:
fk0>> Я отчасти с ним согласен. break -- по-сути есть замаскированный goto, нарушающий принципы структурного программирвоания.
K>А циклы сами по себе — это тоже по сути замаскированные goto/jmp. K>Как с ними не нарушать принципов структурного программирования?
Нет. Есть принципиальная разница между циклом с goto и циклом с использованием операторов структурного программирования:
при использовании последних все объекты создаваемые в цикле, в каждом цикле вначале заново инициализируются, а в конце
цикла неявным образом уничтожаются. И вообще могут иметь разные адреса в каждом цикле. А с goto получается чёрти что.
Здравствуйте, fk0, Вы писали:
fk0> Нет. Есть принципиальная разница между циклом с goto и циклом с использованием операторов структурного программирования: fk0>при использовании последних все объекты создаваемые в цикле, в каждом цикле вначале заново инициализируются, а в конце fk0>цикла неявным образом уничтожаются. И вообще могут иметь разные адреса в каждом цикле. А с goto получается чёрти что.
цикл на нижнем уровне — это просто условный переход jmp или как там уж это называется.
бесконечный цикл может быть представлен как безусловный переход goto.
И выполнение функции — это тоже переход на нужный адрес в памяти.
Всё это управление стеком, инициализацию переменных, очистку памяти,... добавляет компилятор.
Никто не мешает этому самому компилятору нормально обрабатывать и goto и уведомлять о существующих проблемах.
Собственно, в C# goto из цикла превращается в break.
А без дублирования return или break, как в структурном программировании предлагается сделать банальный поиск элемента в массиве?
int FindIndex(int[] arr, int value)
{
for (int i = 0; i < arr.Length; ++i)
{
if (arr[i] == value)
return i;
}
return -1;
}
даже если первый элемент подойдёт, продолжим пробегать всю коллекцию, чтобы было структурно и молодёжно?
int FindIndex(int[] arr, int value)
{
int result = -1;
for (int i = 0; i < arr.Length; ++i)
{
if (result == -1 && arr[i] == value)
result = i;
}
return result;
}
А то ведь return внутри цикла может привести к тому, что разработчик что-то забудет удалить или сделать, должна быть одна точка выхода из функции.
Я сам как-то goto не использую и редко такое нужно, но вот думаю: а зачем я для выхода из вложенных циклов горожу флаги и леплю лишние проверки, когда можно просто goto написать и перейти в нужную точку.