Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2009, 02:05   #1
Charcoal
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 11
Вопрос Из Fortran'a IV в Delphi

Здравствуйте.
Пытаюсь разобратся в исходнике на Фортране, материала по нему немного
Помогите адаптировать фрагмент программы под Дельфи:

Код:
     COMMON/A/IC(20),ICR(20),AM(20,5),NIN(5),NSU(20),MVO(20),
   *NSV(20),TP(20),V(20),A(5,5),AP(5,5),APL(5,5),MK1(5),
   *MK(600,3),TK(600),MNT(5)
    COMMON/B/ N,M,NDT,KW,KL2,NPU,NSTM
    OPEN (UNIT2,NAME'DK:ND.DAT',READONLY,TYPE='OLD')
    READ (2,*) N,M,NDT,KW,KL2
    READ (2,*) (IC(I),I=1,M)
    READ (2,*) AS
    N1=N+1
    READ (2,*) (NIN(I),I=1,N1)
    READ (2,*) (MSV(I),I=1,M)
    READ (2,*) (NSU(I),I=1,M)
    READ (2,*) ((A,J),J=1,N),I=1,N)
    READ (2,*) NTSM,N1ST,NPU
    KL3=MSV(1)
10 NIN(1)=1
    DO 22 I=2,N1
22 NIN(I)=NIN(I)+NIN(I-1)
    DO 34 L=1,M
    DO 24 J=2,N1
    IR0=NIN(J)
    IF(L-IR0) 26,24,24
24 CONTINUE
26 IR1=J-1
    IR2=NSU(L)
    LB=NIN(IR2)
    LE=NIN(IR2+1)-1
    D0 28 J=LB,LE
    IR0=NSU(J)
    IF(IR0-IR1) 28,30,28
28 CONTINUE
    MVO(L)=0
    GO TO 34
30 MVO(L)=J
    IRO=MSV(L)
    IF(IR0) 999,34,32
32 MSV(L)=MVO(L)
34 CONTINUE
...
999 STOP
      END
Особый интерес вызывают (как это работает):
1. Обращения COMMON/A/... и COMMON/B/...
2. Цикл DO...CONTINUE и странные метки.
3. Операторы IF(L-R0) 26,24,24 и IF(IR0) 999,34,32
Charcoal вне форума Ответить с цитированием
Старый 05.03.2009, 01:02   #2
Charcoal
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 11
По умолчанию

Более-менее разобрался.
Непонятно только здесь
Код:
IF(L-IR0) 26,24,24
24 CONTINUE
26 IR1=J-1
Чем, собственно говоря, отличается метка 24 от 26???
Charcoal вне форума Ответить с цитированием
Старый 06.03.2009, 11:26   #3
leshasoft
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

IF(L-IR0) 26,24,24
Это арифметический оператор условного перехода,
который организует выход из цикла , если L-IR0 имеет отрицательное значение.

DO 24 J=2,N1
IR0=NIN(J)
IF(L-IR0) 26,24,24
24 CONTINUE
26 IR1=J-1

Про операторы передачи управления можно почитать вот здесь:
http://old.cs.msu.su/vm/lec/for/for58000.htm

COMMON/A/... и COMMON/B/...
Это общие блоки данных с именами A и B, которые могут использоваться в подпрограммах. Аналог глобальных переменных.

Последний раз редактировалось leshasoft; 06.03.2009 в 13:06.
leshasoft вне форума Ответить с цитированием
Старый 06.03.2009, 13:44   #4
leshasoft
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

Вот типа такого кода должно получиться

Код:
KL3:=MSV(1);
   NIN(1):=1;
for  I := 2 to N1  do begin
    NIN(I):=NIN(I)+NIN(I-1);
end;
for  L := 1 to M  do begin
for  J := 2 to N1  do begin
IR0:=NIN(J);
if (L-IR0)<0 then  break;
end;
IR1:=J-1;
IR2:=NSU(L);
LB:=NIN(IR2);
LE:=NIN(IR2+1)-1;
for J:=LB to LE do begin
IR0:=NSU(J);
if (IR0-IR1)=0 then  goto label30;
end;
MVO(L):=0;
goto label34;
label30: 
   MVO(L):=J;
IRO:=MSV(L);
if (IR0)<0 then  goto label999;
if (IR0)<0 then  goto label34;
   MSV(L):=MVO(L);
label34:
end;
label999;
end.
leshasoft вне форума Ответить с цитированием
Старый 07.03.2009, 00:51   #5
Charcoal
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 11
По умолчанию

leshasoft спасибо!
Charcoal вне форума Ответить с цитированием
Старый 07.03.2009, 01:20   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Удивляюсь, из прошлого помню еще что были (?) такие языки - Фортран, Алгол, Кобол. Еще ЭВМ была "Мрiя", программа набиралась перемычками, выход на печатающее устройство типа принтер (но не принтер - смесь печатающей машинки с ... даже не знаю как назвать).
Но вот что, неужели Фортран еще где то используется (хотя раз есть ТС, то да) ? Или где то используется в качестве учебного?
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 07.03.2009, 07:36   #7
Charcoal
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 11
По умолчанию

Цитата:
Сообщение от DeKot Посмотреть сообщение
Но вот что, неужели Фортран еще где то используется (хотя раз есть ТС, то да) ? Или где то используется в качестве учебного?
Не пугайтесь так, это из методического пособия для "...социалистических стран" 1988г. Моделирование сети связи, общие принципы не изменились, вот и приходится изучать 'рукописи' предков.
Charcoal вне форума Ответить с цитированием
Старый 10.03.2009, 08:05   #8
leshasoft
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

Цитата:
Но вот что, неужели Фортран еще где то используется (хотя раз есть ТС, то да) ? Или где то используется в качестве учебного?
У нас практически все расчётные программы.
leshasoft вне форума Ответить с цитированием
Старый 11.03.2009, 15:16   #9
Charcoal
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 11
По умолчанию

Может кто знает как воспринимать вот это:
Код:
...
      GO TO (100,100,100),A
100 Z=URAND(X)
...
Charcoal вне форума Ответить с цитированием
Старый 13.03.2009, 08:23   #10
leshasoft
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

А между этими строчками, чего нибудь было?
А то похоже на криво написанную программу.
По идее оператор GO TO(100,100,100),A это вычисляемый оператор перехода, при А = 1 на первую метку, при А = 2 на вторую метку, при А = 3 на третью метку.
urand генератор случайных чисел вещественного формата в интервале [0..1]

Последний раз редактировалось leshasoft; 13.03.2009 в 08:33.
leshasoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46
delphi 9 или delphi 2005 вопрос о работе Doget Компоненты Delphi 0 07.07.2008 08:50
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27