вопрос о Fortran продолжить заявление в течение цикла - PullRequest
2 голосов
/ 01 февраля 2010

Я анализирую код на фортране и у меня простой вопрос.

Я хочу знать, что делает оператор continue в 100 и 200 в приведенном ниже коде.

Увеличивает ли он счетчики i и j? Если это так, не будет if( .not. flg ), тогда условие содержит значение flg, которое является «последним значением» flg в цикле j = i+1 to N?

    do 100 i = 1, N-1
            flg = .false.
            do 200 j = i+1, N
                if( "my condition" ) flg = .true.
200         continue

            if( .not. flg ) then
                ! do something here. 
            endif
100 continue

Ответы [ 4 ]

4 голосов
/ 01 февраля 2010

Th оператор CONTINUE просто отмечает конец цикла, обозначенный его числовым номером оператора - он ничего не увеличивает. Это, конечно, не влияет на flg в вашем коде. Вот простое объяснение его использования здесь .

4 голосов
/ 01 февраля 2010

AFAIK, ПРОДОЛЖАЙТЕ в фортране ничего не делает.

Используется только для удобства в семантике цикла DO. Это не похоже на C.

2 голосов
/ 01 февраля 2010

Это старый Фортран, который обычно использовал помеченные операторы продолжения для обозначения циклов do. Fortran 90 и более поздние версии предоставляют операторы «end do».

0 голосов
/ 17 ноября 2013

Я отвечаю спустя более трех лет после того, как вопрос был задан в феврале 2010 года, потому что я видел вопрос только сейчас и обнаружил, что ответы были бы более подробными и полными. Действительно, логическая переменная flg должна иметь «последнее значение» flg в цикле j = i + 1 до N, потому что внутренний цикл do, обозначенный меткой 200, должен выполняться от j = i + 1 до N для каждого значения i (= 1 N-1,1). Условие «мое состояние» должно играть важную роль, чтобы не сделать этот внутренний цикл тривиальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...