Здравствуйте, night beast, Вы писали:
NB>вот конкретно этот где может пригодиться? NB>лично мне нужен был пару раз когда по быстрому на коленке делалось что-то вроде atoi или валидации
Такой трюк, только с 16-ричными числами, мне пришлось делать в 97 году на ассемблере. Из-за того, что сишный рантайм занимал целых 10кб. Всю программу на асме удалось уложить в 700байт. Была жесткая нехватка памяти и усилия того стоили.
NB>я к тому что есть более нужные вещи, и не стоит по знанию/незнанию делать какие-то выводы
Этот приём, по сути, просто получение элемента в таблице по смещению.
В книгах он хорошо разжеван. Его незнание, ессно, не проблема, но говорит много о человеке (изучает ли что-то сверх школьной программы).
Мы использовали такой подход для хранения компонентов печатных плат.
Отношение один-ко-многим. Объект ссылается на первый элемент "своей" коллекции.
Имея индекс текущего элемента и индекс первого элемента в группе вычисляется порядковый номер в коллекции.
Приём достаточно низкоуровневый, но должен же кто-то фреймворки не только использовать, но и разрабатывать
NB>тот же прием Pzz с выбором функции на мой взгляд более полезен
Да, приём неплохой.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, Pzz, Вы писали:
Pzz>Ну при всем при том, методология разработки по имени "структурное программирование" считает, что выход из середины цикла не нужен.
Почему?
Здравствуйте, Kernan, Вы писали:
Pzz>>Ну при всем при том, методология разработки по имени "структурное программирование" считает, что выход из середины цикла не нужен. K>Почему?
Потому, что суть структурного программирования заключается в том, что у программы есть структура, состоящая из стандартных "строительных" блоков: операторов if-then-else и операторов циклов. И заметим, у каждого такого блока есть ровно одна входная и ровно одна выходная точка.
Такую программу гораздо проще анализировать, и мозгами и автоматическим способом.
Здравствуйте, Pzz, Вы писали:
NB>>тот же прием Pzz с выбором функции на мой взгляд более полезен Pzz>В молодости я так сделал пару раз. Сейчас бы не стал. Просто написал в качестве курьёза.
делал бы через указатель на функцию + иф или писал бы доп. функцию?
Здравствуйте, night beast, Вы писали:
Pzz>>В молодости я так сделал пару раз. Сейчас бы не стал. Просто написал в качестве курьёза.
NB>делал бы через указатель на функцию + иф или писал бы доп. функцию?
Здравствуйте, Codealot, Вы писали:
C>Общался тут с одним чуваком по поводу ревью кода, и он не понимает, что такое цикл с выходом из середины. Вообще не знает, что это такое и зачем может быть нужно. C>Остается только гадать, как с такими знаниями можно пройти все эти зубодродительные алгоритмические собеседования. Ну и в свете этих идей о взаимозаменяемости всех, я вообще не хочу видеть код, который этот чувак может написать.
А это не нужно. IMHO выход из середины цикла (break) хреновая конструкция, запутывающая код, может это даже хорошо что он ее не знает.
Выходить надо или сразу, или разбивать код внутри на две функции. Выходить из середины — это goto по сути, в худшем его проявлении
Здравствуйте, Vzhyk2, Вы писали:
V>Здравствуйте, Codealot, Вы писали:
Н>>>Break что ли? C>>Естественно. А чем еще это может быть? V>goto, return, исключение...
Еще есть exit.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, Codealot, Вы писали:
C>>Общался тут с одним чуваком по поводу ревью кода, и он не понимает, что такое цикл с выходом из середины. Вообще не знает, что это такое и зачем может быть нужно.
Pzz>Ну при всем при том, методология разработки по имени "структурное программирование" считает, что выход из середины цикла не нужен.
Т.е., имеем цикл на 100500 итераций. На третьей получаем нужный нам результат, но все равно будем продолжать 100497 раз?
Здравствуйте, Slawa Ms, Вы писали:
Pzz>>Ну при всем при том, методология разработки по имени "структурное программирование" считает, что выход из середины цикла не нужен. SM>Т.е., имеем цикл на 100500 итераций. На третьей получаем нужный нам результат, но все равно будем продолжать 100497 раз?
Почему? Можно ж выйти по условию. Не обязательно делать goto из середины.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, Slawa Ms, Вы писали:
Pzz>>>Ну при всем при том, методология разработки по имени "структурное программирование" считает, что выход из середины цикла не нужен. SM>>Т.е., имеем цикл на 100500 итераций. На третьей получаем нужный нам результат, но все равно будем продолжать 100497 раз?
Pzz>Почему? Можно ж выйти по условию. Не обязательно делать goto из середины.
У ТС речь шла про break, по нему и выходим по условию из середины цикла. Повторяю, ситуации, когда нужно выйти из середины цикла, встречаются часто. Зачем тратить время на полный перебор? Для этого используются break и exit. Про goto речь не идет. Даже не знаю, есть он в Delphi или нет.
Здравствуйте, Codealot, Вы писали:
C>Здравствуйте, baxton_ulf, Вы писали:
_>>да конечно, можно не знать. не пройдёшь интервью да и только
C>Лишнее напоминание, насколько вопросы на собеседованиях высосаны из пальца.
это не просто знание как имплементирована atoi или parseInt — это паттерн, который может сделать твою программу быстрее и занимать меньше памяти.
мне приходилось в реальной работе применять навыки выработанные при решении задач для интервью. даже так — постоянно приходится применять. а разве тебе не помогает знание, например того, что с отсортированными коллекциями работать быстрее во многих задачах. или знание, например merging-sort — это ведь тоже паттерн, который во многих задачах применим. не только для сортировки больших коллекций.
пример из практики: лет, наверное 20 назад я видел программу намертво висящую потому, что обрабатывала коллекцию из 50К записей со сложностью O(N^2) если бы те программисты практиковали решение задач, которые "высосаны из пальца", то их алгоритм просто бы летал, а не висел по пол дня.
как то так. а ты все "из пальца" да "из пальца"