Абстрактные типы данных в Fortran 77 (Fortran-II)? - PullRequest
1 голос
/ 15 января 2010

Я пытаюсь работать в Fotran 77, и я обнаружил необходимость в древовидной структуре данных. Помимо реализации дерева с массивом, есть ли способ построить дерево с узлами указателя на другие узлы, как в стандартной реализации в большинстве языков?

Документация для этого зверя скудна, и, похоже, не существует какого-либо стандартного типа конструкции, который бы это сделал.

Мысли

Ответы [ 4 ]

5 голосов
/ 15 января 2010

Я предлагаю вам перейти на Фортран 90 или позже. FORTRAN77 и более ранние версии не имели указателей в спецификации языка, поэтому разработчики компиляторов (и пользователи) придумали целый ряд умных * способов добавления необходимой функциональности, чтобы делать именно то, что вы хотите делать. В Fortran 90 есть правильные указатели для динамических структур данных.

умный * означает, конечно, , что требует дополнительных навыков программирования и понимания памяти, указателей, ссылок и разыменования (все это чуждо большинству программистов на Фортране) с неизбежным последствием, что умные * программы не переносимы ни между компиляторами, ни между аппаратными платформами, ни между программистами .

Я не понимаю, почему вы ограничены работой в FORTRAN77 - стандарт FORTRAN77 остается синтаксически корректным и компилируемым с компиляторами Fortran 90. Конечно, вы должны интегрировать ваш новый код обработки дерева с существующей кодовой базой на старом языке, но это не значит, что вы должны писать новые модули на старом языке.

И, между прочим, FORTRAN77 был намного более современным, чем FORTRANII.

1 голос
/ 15 января 2010

Это будет намного проще в Fortran 95/2003, который имеет определяемые пользователем производные типы и типы указателей. Используя эти функции, можно настроить структуры данных, такие как связанные списки и деревья. (Типы указателей называются указателями, но они больше похожи на псевдонимы, в этом случае арифметика указателей невозможна). Fortran> = 95 имеет много улучшений по сравнению с Fortran 77. Я рекомендую не использовать Fortran 77, если не вносить незначительные изменения в унаследованный код, который находится в Fortran 77. Хорошая книга - «Fortran 95/2003 объяснено» Меткалфом, Рейдом и Cohen.

0 голосов
/ 22 января 2010

Без указателей Cray или других хакерских атак единственный способ реализовать «тип данных» - использовать параллельные массивы, каждый из которых представляет поле. Таким образом, индекс может ссылаться на создание экземпляра типа данных.

0 голосов
/ 15 января 2010

Если вы действительно застряли с Фортраном-77, вы можете использовать указатели Cray:

http://gcc.gnu.org/onlinedocs/gfortran/Cray-pointers.html

Указатели Cray нестандартны и имеют некоторые недостатки, но они дадут вам нечто похожее на указатель C. Они поддерживаются gfortran и большинством коммерческих компиляторов.

С учетом вышесказанного вам, вероятно, будет лучше использовать новые функции Fortran, такие как указатели Fortran-90 или функции C-взаимодействия в Fortran 2003.

...