На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (7) « Первая ... 5 6 [7]  все  ( Перейти к последнему сообщению )  
> Нелюбовь к goto
    Цитата Lucifer, 27.02.2006, 21:24:41, 1028652
    Правила некоторых компаний запрещают использование вложенных циклов

    хм... есть массив (100,100)...
    будьте любезны, пример кода, тупо ищущего максимальное значение ТОЛЬКО по ячейкам, обе координаты которых кратны 3. (РАЗУМЕЕТСЯ, БЕЗ ВЛОЖЕННЫХ ЦИКЛОВ!)


    Цитата Lucifer, 27.02.2006, 21:24:41, 1028652
    Отрывать лапы авторам таких функций

    будьте любезны, пример парсера БЕЗ РЕКУРСИИ, способного разобрать код, где вложенность достигает, к примеру, ста тысяч элементов. (пример конечно надуман, но исключительно ради наглядности. справка: рекурсию на 20 тысяч уровней вложенности я видел в реальном коде.)


    Цитата Lucifer, 27.02.2006, 21:24:41, 1028652
    Про исключения один я здесь слышал?!
    исключения, как ни странно, придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).
    Повсеместное применения исключений просто ещё раз иллюстрирует мой пример, когда goto как таковой есть, но назван другим словом, просто "чтобы не было goto". Сама идея команды безусловного перехода в определённое (как-то помеченное) место кода всё равно остаётся.
      Цитата BlackSnake @
      будьте любезны, пример кода, тупо ищущего максимальное значение ТОЛЬКО по ячейкам, обе координаты которых кратны 3. (РАЗУМЕЕТСЯ, БЕЗ ВЛОЖЕННЫХ ЦИКЛОВ!)

      На паскале (хотя, ИМХО, идиотизм это делать без вложенных циклов):
      ExpandedWrap disabled
        const
          MaxN = 100;
          MaxM = 100;
         
        function max(a,b: integer): integer; begin if a>=b then max := a else max := b; end;
         
        var
          a: array[1..MaxN,1..MaxM] of integer;
         
        function maxa: integer;
        var
          i,j,r: integer;
        begin
          i := 3;
          j := 3;
          r := -MaxInt;
          while true do
          begin
            r := max(r,a[i,j]);
            inc(j,3);
            if j > MaxM then begin inc(i,3); j := 3; end;
            if i > MaxN then break;
          end;
          maxa := r;
        end;

      Цитата BlackSnake @
      будьте любезны, пример парсера БЕЗ РЕКУРСИИ, способного разобрать код, где вложенность достигает, к примеру, ста тысяч элементов. (пример конечно надуман, но исключительно ради наглядности. справка: рекурсию на 20 тысяч уровней вложенности я видел в реальном коде.)

      Ну, допустим, рекурсию на столько (и даже больше, порядка 10^6) я тоже видел в реальном коде.
      Допустим, у нас есть грамматика следующего вида (задана БНФ):

      number ::== number|number digit
      digit ::== 0|1|2|3|4|5|6|7|8|9
      expression ::== number|leftparen expression rightparen
      leftparen ::== (
      rightparen ::== )

      Где expression --- интересующее нас выражение.
      Теперь, возьмем выражение с требуемой вложенностью 10^5: ((((....(((123)))....)))). Я утверждаю, что для того, чтобы распарсить выражения, задаваемые такой грамматикой, рекурсия не нужна.
      (Хотя, опять же, ИМХО, бред не использовать goto в коде парсера; к тому же, парсеры обычно генерируются по грамматике, и их код не нужно отлаживать, поэтому там можно почти все, что угодно)
        Цитата Lucifer, 28.02.2006, 22:55:44, 1029801
        Цитата BlackSnake @ 28.02.06, 10:03
        Цитата Lucifer, 27.02.2006 21:24:41
        Про исключения один я здесь слышал?!
        исключения, как ни странно, придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).
        А ошибка и есть исключительная ситуация


        Lucifer, мы про одно и то же говорим :) ...
        Цитата BlackSnake, 28.02.2006, 08:03:04, 1028882
        исключения придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0277 ]   [ 15 queries used ]   [ Generated: 22.04.24, 20:05 GMT ]