1 / 1 / 1
Регистрация: 22.07.2017
Сообщений: 121
|
|
1 | |
Задание константы с общим доступом к ней22.07.2017, 14:11. Показов 1239. Ответов 11
Метки нет (Все метки)
Позволяет ли фортран задать данные, которые будут доступны во всех подпрограммах?
Конкретный пример. Есть n-e кол-во подпрограмм, каждая из которых будет использовать число Пи. Есть возможность задать эту константу в каком-то отдельном общедоступном модуле, вместо того, чтобы в каждой подпрограмме задавать его заново? Задать где-то отдельно константу PI и из каждого уголка программы спокойно использовать её не беспокоясь о том, что я её не задал в начале подпрограммы. Также интересует ещё один момент. Есть одна программа, которая постоянно обращается к подпрограмме, которая в свою очередь считывает несколько массивов и проводит с ними операции. То есть кол-во таких обращений может исчисляться в тысячах или миллионах раз. В итоге мы постоянно открываем файл, считываем из него массив, закрываем файл, используем массив в вычислениях, а потом, при следующем обращении к данной подпрограмме, мы проделываем всю эту процедуру заново. Сначала я решил, что какая собственно разница сколько раз мы считываем одно и то же, компьютер же не устаёт. Но потом оказалось, что программа выводит какое-то ограниченное кол-во результатов операций, а дальше действовать отказывается. Причём это кол-во постоянно разное. Сначала было 27, потом 5906. Я подумал, может происходит какое-то переполнение оперативной памяти или что-то вроде этого. Не знаю. В любом случае, надеюсь, что вы поняли, что я имел в виду, несмотря на корявость повествования. Заранее благодарю за ответ.
0
|
22.07.2017, 14:11 | |
Ответы с готовыми решениями:
11
Подскажите как программно отличить папку с открытым общим доступом от папки с закрытым общим доступом БД с общим доступом Проблема с общим доступом Управление общим доступом |
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
22.07.2017, 14:29 | 2 |
модули в фортране
также объявите ваш массив в модуле, считайте один раз.. далее он может использоваться неоднократно посредством объявления в модуле
1
|
1 / 1 / 1
Регистрация: 22.07.2017
Сообщений: 121
|
|
22.07.2017, 15:36 [ТС] | 3 |
О, спасибо большое. А есть возможность именно считать файл с массивом в самом модуле или всё-таки придётся его задать в прямом виде? Если всё-таки считать нельзя, то можно ли записать модуль вне файла основной программы, что бы потом к нему обратиться? Не хочется нагромождать массивом код основной программы.
0
|
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
22.07.2017, 15:51 | 4 |
1. в модуле массив только объявляется
2.1 в нужной подпрограмме одноразовое чтение файла и запись данных в массив, нужен признак одноразовости, чтобы при повторном проходе подпрограммы обходить чтение файла 2.2 как вариант, чтение файла сделать на первом этапе основной программы 3. в других подпрограммах достаточно подключить модуль use modulename
1
|
1 / 1 / 1
Регистрация: 22.07.2017
Сообщений: 121
|
|
22.07.2017, 20:15 [ТС] | 5 |
Krasme, не стал лишний раз изощряться и просто задал значения массивов в модули. Скажите, а есть ли вообще какой-то лимит на вывод данных в фортране? Или лимиты на вычислительные мощности, что ли. Чем всё это дело может ограничиваться?
0
|
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
22.07.2017, 20:41 | 6 |
вывод куда?
в файлы? в моей практике бывали случаи вывод по 500 файлов в 3500 строк и 20 столбцов в один запуск - никаких нареканий. заполнение данных в оперативной памяти? очевидно, что ресурс ограничивается размером озу.
1
|
1 / 1 / 1
Регистрация: 22.07.2017
Сообщений: 121
|
|
22.07.2017, 20:46 [ТС] | 7 |
Да, в файлы. К сожалению у меня случаются эти нарекания. С ОЗУ у меня не так всё плохо, чтобы возникали подобные проблемы, но эта ситуация меня напрягает. Я, например, вывожу 10000 строк по три значения в каждом. Но, если я, например, буду выводить этот же объём данных + эти же данные помноженные на два, то кол-во получаемой информации может резко сократиться не дойдя до 10000. Странно всё это.
0
|
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
22.07.2017, 21:00 | 8 |
может, дело не в выводе в файлы, а в самой программе..
1
|
1 / 1 / 1
Регистрация: 22.07.2017
Сообщений: 121
|
|
23.07.2017, 00:26 [ТС] | 9 |
Ну, это пожалуй наиболее вероятный вариант
0
|
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
25.07.2017, 15:59 | 11 |
Catstail, зачем common, когда есть module?
1
|
Модератор
|
|
25.07.2017, 16:51 | 12 |
Вероятно, Вы правы.
0
|
25.07.2017, 16:51 | |
25.07.2017, 16:51 | |
Помогаю со студенческими работами здесь
12
Папка с общим доступом БД с общим доступом на сетевой папке Проблема с общим доступом к файлам Попали принтеры с общим доступом Проблема с доступом к общим папкам!!! Проблемы с общим доступом к папке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |