|
|
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
Добрый день. Суть такова: практически впервые столкнулся с фортраном, поэтому вопрос банальный, объявил переменные в одном модуле 2 массива типа integer (модуль 1) по ходу работы модуля эти переменные получили определенные значения, затем я эти массивы применяю в другом модуле, но значения их там уже не видны, хотя я эти переменные поместил в раздел COMMON, в чем я не прав? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:20 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
patrick1968, В примере пишут, что их надо объявлять common в каждом использующем модуле Example sharing variables отсюда http://www.mathcs.emory.edu/~cheung/Courses/561/Syllabus/5-Fortran/scoping.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:28 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
SiemarglВ примере пишут, что их надо объявлять common это в описания языка написано лет 60 назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:36 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
лет 60 назад на счЁтах программировали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 17:50 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
ИзопропилSiemarglВ примере пишут, что их надо объявлять common это в описания языка написано лет 60 назад.Всего лишь 40 =) Fоrtran 77 - всего лишь 1977г ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 18:00 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
Сабж. Видимость - везде 100%. Бай дефинишын, так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 18:18 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
SiemarglВсего лишь 40 =) Fоrtran 77 - всего лишь 1977г COMMON блоки несколько раньше появились )) Fortran II - 1957 годом датируется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 21:33 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
ИзопропилSiemarglВсего лишь 40 =) Fоrtran 77 - всего лишь 1977г COMMON блоки несколько раньше появились )) Fortran II - 1957 годом датируется Да. Коммон - ни при чём. В фортране все переменные имеют видимость. Коммон - общая память, несколько другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 21:45 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
ShSerge, Когда программы были маленькими, коммон был не нужен - все было в одном файле. Вот сейчас бы поспорить про недостатки языка 1957года, йубилейпля =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2017, 23:29 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
SiemarglShSerge, Когда программы были маленькими, коммон был не нужен - все было в одном файле. Вот сейчас бы поспорить про недостатки языка 1957года, йубилейпля =) О чем тут спорить? о номерах строк и метках? На этом языке сразу и вполне приемлемо мог программировать любой инженер. Имея в руках ясный и простой синтаксис, в комбинации с до сих пор не превзойденным оптимизирующим компилятором, инженер получал такой результат, от факта существования которого у "профессионального программиста" выбор оставался только между убиться ап стену или заняться взвешенным рассмотрением вариантов использования GOTO в фортране, с неминуемым признанием их вредными всех разом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 00:57 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
boobyО чем тут спорить? о номерах строк и метках? о размещении двумерных массивов в памяти, например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 02:02 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
ИзопропилboobyО чем тут спорить? о номерах строк и метках? о размещении двумерных массивов в памяти, например предлагается решать вопрос - какое направление обладает более убедительной святостью - на север или на восток? Преобразование координат вращением решает этот вопрос. И скорость просмотра непрерывного участка памяти, занимающего сплошь диапазон адресов от этого не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 02:49 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
boobyО чем тут спорить? о номерах строк и метках? На этом языке сразу и вполне приемлемо мог программировать любой инженер. Потрясающая неразборчивость (это про "приемлемо"). Что для инженера было особенно круто - так это врождённая способность языка в результате выполнения фрагмента кода Код: sql 1. 2. получить в выводе Код: sql 1. boobyИмея в руках ясный и простой синтаксис, в комбинации с до сих пор не превзойденным оптимизирующим компилятором А, понятно, просто тупой троллинг опять вылез за пределы заповедника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 12:42 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
ShSergeИзопропилпропущено... COMMON блоки несколько раньше появились )) Fortran II - 1957 годом датируется Да. Коммон - ни при чём. В фортране все переменные имеют видимость. Коммон - общая память, несколько другое. Ну, это -- способ определения разделяемой (глобальной) памяти. Если товарищь ТС поместил переменную в COMMON-блок, то во всех модулях нужно объявлять её именно через COmmon-блок. Иначе это будет просто другая переменная. COMMON-блок -- это как бы как в С глобальная переменная типа структуры, которая содержит переменные и/или массивы разных типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:01 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
Тема по-прежнему актуальна для меня, просто не могу понять этого синтаксиса фортрана, как такое вообще может быть фрагмент 1 ku1=ku-nb IF(KI.EQ.1) goto 13 140 IT=0 CALL NUM10 вот эдесь ku=5 и ku1=4 далее работа модуля NUM10 SUBROUTINE NUM10 COMMON NAS(20),NST(20),NBA(100),NCU(100) COMMON KU,KV,KT,NB,E,KU1,nam DIMENSION N202(800),KM(100) character nam*16 DO 1 I=1,ku 1 N202(I)=0 IB=1 DO 9 I=1,ku1 а вот здесь KU и KU1 уже равны 0 почему непонятно? может знает кто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 20:32 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
patrick1968, COMMON блоки (в том числе неименованные) должны иметь одинаковую структуру. имена переменных внутри блоков значения не имеют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 21:05 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
PROGRAM REG10 IMPLICIT INTEGER*2(I-N) DIMENSION MPP(10),nyb(800),npp(800) COMMON /BL1/NU(800),N10(800),N20(800),N50(800),AB(800), #N51(800),NBA(801),NCU(1600),NCB(1600),NTK(800),NT(350),NBU(20), #NAS(801),NT1(350),NYR(800) COMPLEX AST(4500),TK(350),U10(800),U(800),SN(800), #BD(800),VN(800),U101(800),SG(800) COMMON /BL2/TK,U10,U,SN,SG,NNAM(80) COMMON KU,KV,KT,NB,E,KU1,nam начало модуля 1 SUBROUTINE NUM10 c IMPLICIT INTEGER*2(I-N) COMMON NAS(20),NST(20),NBA(100),NCU(100) COMMON KU,KV,KT,NB,E,KU1,nam DIMENSION N202(800),KM(100) c $include : 'd.inc' character nam*16 начало модуля 2 вроде одинаково всё - во всяком случае данная строка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 21:40 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
patrick1968COMMON NAS(20),NST(20),NBA(100),NCU(100) COMMON KU,KV,KT,NB,E,KU1,nam это единый неименованный common блок так что разница есть https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn7v/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 21:59 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
COMMON /BL1/NU(800),N10(800),N20(800),N50(800),AB(800), #N51(800),NBA(801),NCU(1600),NCB(1600),NTK(800),NT(350),NBU(20), #NAS(801),NT1(350),NYR(800) COMPLEX AST(4500),TK(350),U10(800),U(800),SN(800), #BD(800),VN(800),U101(800),SG(800) COMMON /BL2/TK,U10,U,SN,SG,NNAM(80) COMMON /VR/KU,KV,KT,NB,E,KU1,nam common /bl3/ast,nst(4500),vn,u101,bd везде сделал так (одинаково) теперь в модуле 2 значение вообще запредельное вместо 5 у KU - 262149 чушь какая-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2017, 22:26 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
что-то всё равно ничего не понятно в этом синтаксисе фортрана, вроде всё элементарно, но ошибка есть, подскажите плиз , как во всем проекте объявить кучу переменных, чтоб они были веэде видны? COMMON /BL1/NU(800),N10(800),N20(800),N50(800),AB(800), #N51(800),NBA(801),NCU(1600),NCB(1600),NTK(800),NT(350),NBU(20), #NAS(801),NT1(350),NYR(800),KU,KV,KT,NB,E,KU1,nam так верно в каждом модуле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 21:17 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
patrick1968так верно в каждом модуле? да, в каждом(COMPLEX - не опечатка?) для начала сделайте самую простую программу из двух модулей с простым коммон блоком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 23:31 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
В FORTRAN 90 можно вот так: module pars_mod real a, b, d save end module pars_mod subroutine sub1 use pars_mod ! . . . . . end subroutine sub2 use pars_mod ! . . . . . end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 09:18 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
В Open Watcom F77 всё работает 1)Модуль 1 PROGRAM REG10 IMPLICIT INTEGER*2(I-N) DIMENSION MPP(10),nyb(800),npp(800) COMMON /BL1/NU(800),N10(800),N20(800),N50(800),AB(800), # N51(800),NBA(801),NCU(1600),NCB(1600),NTK(800),NT(350),NBU(20), # NAS(801),NT1(350),NYR(800) COMPLEX AST(4500),TK(350),U10(800),U(800),SN(800), # BD(800),VN(800),U101(800),SG(800) COMMON /BL2/TK,U10,U,SN,SG,NNAM(80) COMMON KU,KV,KT,NB,E,KU1,nam KU=5 KV=6 KT=7 WRITE(*,*)KU,KV,KT call NUM10 END 2)Модуль 2 SUBROUTINE NUM10 IMPLICIT INTEGER*2(I-N) COMMON /BL1/NU(800),N10(800),N20(800),N50(800),AB(800), # N51(800),NBA(801),NCU(1600),NCB(1600),NTK(800),NT(350),NBU(20), # NAS(801),NT1(350),NYR(800) COMPLEX AST(4500),TK(350),U10(800),U(800),SN(800), # BD(800),VN(800),U101(800),SG(800) COMMON /BL2/TK,U10,U,SN,SG,NNAM(80) COMMON KU,KV,KT,NB,E,KU1,nam WRITE(*,*)KU,KV,KT RETURN END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 10:21 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
В этом куске кода в качестве переменной для внутреннего и внешнего цикла используется одна и та же переменная I Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 12:35 |
|
||
|
Область видимости переменных в фортране
|
|||
|---|---|---|---|
|
#18+
С обычными переменными вроде раэобрался, а вот массивы остаются загадкой вроде принцип один, на не видит значения массива хоть тресни, может кто поможет Модуль 1 (главный) PROGRAM REG10 IMPLICIT INTEGER*2(I-N) DIMENSION MPP(10),nyb(800),npp(800) DIMENSION MCU(1600),NU(800),MBU(20),mbb(800) DIMENSION NAS(800),NST(800), NBA(100) ,NCU(100),NCB(100) COMMON /BL1/NAS(800),NST(800), NBA(100) ,NCU(100),NCB(100) COMMON /BL2/NU1(800), #MBA(801),MCB(1600),NTK(800),NT(350),NBU(20), #NT1(350),NYR(800) COMPLEX AST(4500),AB(1600),TK(350),U10(800),U(800),SN(800), #BD(800),VN(800),U101(800),SG(800) COMMON /BL3/TK,U10,U,SN,SG,NNAM(80) INTEGER KU,KV,KT,NB,E,KU1 COMMON /BL4/KU,KV,KT,NB,E,KU1,ab,nam DIMENSION N10(100),N20(100),N30(100),N50(100),N51(100) COMMON /BL5/N10(100),N20(100),N30(100),N50(100),N51(100) common/bl3/ ast,vn,u101,bd character nam*16 ... CALL SC10 ... Вот здесь значение массива NBA 1,2,3,4,5 CALL NUM10 ________________________________________________________ SUBROUTINE SC10(KI,iso,kust) IMPLICIT INTEGER *2(I-N) DIMENSION MCU(1600),NU(800),MBU(20),mbb(800) DIMENSION NAS(800),NST(800),NBA(100),NCU(100),NCB(100) COMMON /BL1/NAS(800),NST(800),NBA(100),NCU(100),NCB(100) COMMON /BL2/NU1(800), #MBA(801),MCB(1600),NTK(800),NT(350),NBU(20), #NT1(350),NYR(800) COMPLEX AST(4500),AB(1600),TK(350),U10(800),U(800),SN(800), #BD(800),VN(800),U101(800),SG(800) COMMON /BL3/TK,U10,U,SN,SG,NNAM(80) INTEGER KU,KV,KT,NB,E,KU1 COMMON /BL4/KU,KV,KT,NB,E,KU1,ab,nam DIMENSION N10(100),N20(100),N30(100),N50(100),N51(100) COMMON /BL5/N10(100),N20(100),N30(100),N50(100),N51(100) common/bl3/ ast,vn,u101,bd Character nam*16 ... ... Вот здесь значение массива NBA 1,2,3,4,5 ---------------------------------------------------------- SUBROUTINE NUM10 c DIMENSION MCU(1600),NU(800),MBU(20),mbb(800) DIMENSION NAS(800),NST(800),NBA(100),NCU(100),NCB(100) COMMON /BL1/NAS(800),NST(800),NBA(100),NCU(100),NCB(100) COMMON /BL2/NU1(800), #MBA(801),MCB(1600),NTK(800),NT(350),NBU(20), #NT1(350),NYR(800) COMPLEX AST(4500),AB(1600),TK(350),U10(800),U(800),SN(800), #BD(800),VN(800),U101(800),SG(800) COMMON /BL3/TK,U10,U,SN,SG,NNAM(80) INTEGER KU,KV,KT,NB,E,KU1 COMMON /BL4/KU,KV,KT,NB,E,KU1,ab,nam DIMENSION N10(100),N20(100),N30(100),N50(100),N51(100) COMMON /BL5/N10(100),N20(100),N30(100),N50(100),N51(100) common/bl3/ ast,vn,u101,bd DIMENSION N202(800),KM(100) //// а вот здесь значения NBA 0,0,0,0,0,0,0.... просто ничего не понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2017, 15:10 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39453334&tid=1340395]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
173ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 459ms |

| 0 / 0 |
