На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 14 15 [16] 17 18 ...  31 32  ( Перейти к последнему сообщению )  
> goto vs break & continue , Кроха-сын пришел к отцу и спросила кроха: "goto - это хорошо?"
    Цитата korvin @
    Объясните, почему после 0,3,3 идёт 1,2,2?

    Так лучше?
      Цитата D_KEY @
      Чем это отличается от моего второго варианта?

      Тем, что я вообще уже не соображаю. =)

      Добавлено
      Цитата D_KEY @
      Так лучше?

      Да, допёрло.

      Лучше б просто сделали последовательность комбинаций, хоть это и менее эффективно, зато вообще никаких непоняток. =)
        Ого. Подтянулась тяжёлая артиллерия.
          Я что вспомнил: есть же ещё продолжения:

          ExpandedWrap disabled
            #lang racket
             
            (define i-save 0)
            (define j-save 0)
            (define k-save 0)
             
            (define (save i j k)
              (set! i-save i)
              (set! j-save j)
              (set! k-save k)
              (printf "\nsaved\n"))
             
            (define (restore)
              (printf "restored\n")
              (values i-save j-save k-save))
             
            (define N 4)
             
            (define (start #:resume? (resume? #f))
              (define-values (i j k)
                (if resume?
                    (restore)
                    (values 0 0 0)))  
              (let/cc abort
                (define (for-i i0)
                  (for ((i (in-range i0 N)))
                    (for-j i i)))
             
                (define (for-j i j0)
                  (for ((j (in-range j0 N)))
                    (for-k i j j)))
             
                (define (for-k i j k0)
                  (for ((k (in-range k0 N)))
                    (when (and (not resume?) (= i 1) (= j 2) (= k 3))
                      (save i j k)
                      (abort))
                    (printf "[~a,~a,~a], " i j k)))
                
                (for-k i j k)
                (for-j i (+ j 1))
                (for-i (+ i 1))
                (printf "\ndone\n")))
             
             
             
            (define (main)
              (start)
              (start #:resume? #t))
             
            (main)


          ExpandedWrap disabled
            [0,0,0], [0,0,1], [0,0,2], [0,0,3], [0,1,1], [0,1,2], [0,1,3], [0,2,2], [0,2,3], [0,3,3], [1,1,1], [1,1,2], [1,1,3], [1,2,2],
            saved
            restored
            [1,2,3], [1,3,3], [2,2,2], [2,2,3], [2,3,3], [3,3,3],
            done
            Даже читать не хочется :lol:
              Цитата D_KEY @
              Даже читать не хочется :lol:

              Что так? Ты ж не боишься скобок, вроде. =)
                Цитата Славян @
                Немного в сторону, но подскажите, почему бы не внедрить этакий "break break"

                В php пишется break 2; :tong:

                Добавлено
                А блин, на 16ой странице у вас вообще другая тема пошла, пойду я...
                  Цитата Serafim @
                  В php пишется break 2; :tong:
                  Везёт вам! Но сразу возникает вопрос: что означает "break 0;" или "break -1;" ?
                  1.Я бы сказал, что "break 0;" означает ассемблерный NOP - ничего не делаем. :scratch:
                  2."break -1;" означает "вход в ближайший цикл"! :crazy: Только непонятно, ближайший спереди или сзади... :blush:
                    Цитата Славян @
                    Но сразу возникает вопрос: что означает "break 0;" или "break -1;" ?

                    Очевидно, ошибку компиляции :)
                      Цитата OpenGL @
                      Очевидно, ошибку компиляции :)
                      Да логично, конечно, но хочется, чтобы это перестало быть ошибкой и вот тут и приходится задуматься над возможной допустимой реализацией такого поведения. :whistle:
                        Цитата Славян @
                        Но сразу возникает вопрос: что означает "break 0;" или "break -1;" ?

                        Сейчас - ошибку (EngineException). До версии 5.4 break 0 означало тоже самое, что и break 1, т.е. выход из цикла первого уровня.
                        Сообщение отредактировано: Serafim -
                          Цитата Славян @
                          но хочется, чтобы это перестало быть ошибкой и вот тут и приходится задуматься над возможной допустимой реализацией такого поведения.

                          Какой смысл? Давай тогда вообще break 3.1415926 или break (1 - 3i) введём, чего мелочиться-то :D
                            Смысл удаления в том, что до той же версии (5.4) внутрь break допускалось передавать переменные (т.е. можно было указывать уровень цикла с помощью int), что позволяло творить магию, которая могла породить подобные конструкции (циферку 0 и отрицательные значения (включая даже флоты и строковые типы)), дабы избежать этих проблем и упростить жизнь - оно приводилось к единице.

                            Потом это поведение вырезали (т.е. сейчас можно указывать только константные значения и только int > 0), чтоб у читающих код не было проблем с психикой, когда они видят break mt_rand(0, 9999);. Как следствие убрали это неявное приведение, т.к. никто в своём уме не будет писать break 0; - это не имеет смысла.
                            Сообщение отредактировано: Serafim -
                              Цитата OpenGL @
                              Какой смысл? Давай тогда вообще break 3.1415926
                              Да, это будет после того, как научимся работать с целыми. :yes:
                              Цитата OpenGL @
                              или break (1 - 3i) введём, чего мелочиться-то
                              Не, пока код у нас линеен - плоские переходы нельзя ввести. :yes-sad: Вот будет граф кода пушистее - там=тогда и можно будет и о таком подумать... :whistle:
                                А зря. Это был прекрасный код конём для взбунтовавшегося ИИ. Типа "коли ты такой умный, ну-ка, исполни break -i, родимый", и делов. Теперь вся надежда только на Сару или Нео.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 14 15 [16] 17 18 ...  31 32


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