Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.103.234] |
|
Сообщ.
#1
,
|
|
|
Я переписываю программу, написанную на Fortran (не мной) на Pascal (в Delphi).
В связи с этим хотелось бы уточнить значение некоторых fortran-конструкций: 1. Значим ли оператор CONTINUE или это просто логический разделитель? Пример: go to 40 *участок понятного кода* * * * * 40 CONTINUE dy(6)=0.0 Могу я на Паскале сразу переходить на следующую после CONTINUE строку (dy(6)=0.0) или этот оператор имеет какой-то смысл, который нужно учитывать? 2. Пример: GO TO (21,13), ifv Это значит, что переход осуществляется, если ifv принимает значения 1, 2 или 0, 1? 3. Что значит строка: IF (str(j:j).eq.'*') then k=k+1 4. Что значит фрагмент кода: DO 3 I=1,N A(1,I)=B(I) A(2,I)=B(I) A(3,I)=0 3 A(4,I)=0 Спасибо за помощь |
Сообщ.
#2
,
|
|
|
Да.. после 12 лет неконтакта с Fortran-ом он кажется такой дикостью..
1) Вроде это пустой оператор 2) ..Не встречал 3) .eq. - это сравнение на равенство, а перед ним, очевидно, выбор подстроки 4) Похоже на цикл, аналог for, 3 - метка конца |
Сообщ.
#3
,
|
|
|
Fortran жил, жив и будет жить
1. Continue --- пустой оператор (нечего не делает) Нужен он для указания точки перехода по Goto или обозначает конец цикла 2. В жизни не встречал 3. Сравнивает j символ строки с '*' !!! Если символ равен звездочке то k = k + 1 и.т.д. до End If 4. Простой цикл по I от 1 до N с меткой окончания 3 ( Последняя строка находится в теле цикла) |
Сообщ.
#4
,
|
|
|
Elf
... 2. Помню такой оператор (а это, похоже, его модификация) GOTO (M1,M2,M3) I if I < 0 goto M1 if I = 0 goto M2 if I > 0 goto M3 4. Действительно простой цикл по N, но в зависимости от ключа компилятора: - выполмяется всегда, хотя бы 1 раз - даже при N < 1 или - при N < 1 переход на строку после строки с меткой 3 Сделано для совместимости со старыми версиями. |
Сообщ.
#5
,
|
|
|
...
2. это ты путаеш с арифметическим If IF (усл. выражение) M1,M2,M3 Если (усл. выражение) > 0 то на M1 Если (усл. выражение) == 0 то на M2 Если (усл. выражение) < 0 то на M3 Нашёл Это вычисляемый GOTO GO TO (M1,M2,...Mn), ifv вычисляеш значение ifv и переходиш на соответствующую метку начиная с 1 ifv = 1 то Goto M1 ifv = 2 то Goto M2 а если ifv находится вне диапазона (1...n) то выполняется следущий оператор за Goto P.S. Goto бывают : безусловный, вычисляемый и по предписанию ... 4. Вариант б) приходится на стандарт Фортран77, если использовался компилятор более старый то вариант а) |
Сообщ.
#6
,
|
|
|
Mav
Согласен с 2... Значит уже забыл (15 лет не видел FORTRAN, даже книжек под рукой нет). |