Типы данных: вектора и массивы. Знакомство с форматированным выводом данных. Работа с массивами и подпрограммами. Использование Общей памяти, страница 2

Исправьте программу и запомните, где какие индексы у строк и столбцов

Простая рекомендация, как вообще избегать подобных ошибок. Фортран имел короткие имена переменных. Развитие технологии программирование сказало: если переменная описывает количество столбцов, то она называется – columns, ncol, stolb и т.д., а для строк используют – rows, nrow, strok  и т.д. Тогда в программе с помощью прочтения легко находятся опечатки.

Исправьте подпрограмму, используя ЗВУЧАЩИЕ идентификаторы.

Эта исправленная подпрограмма понадобится Вам при решении задач с матрицами.

Повторите внимательно весь цикл  использования отладчика.

3.    Разбор работы программы F3_2.FOR

F3_2.FOR  почти такая же программа, как F3_1.FOR, но здесь осуществлен другой способ передачи данных между программой и подпрограммой.  

В операционной системе  Windows существует «Общая память», которая используется, как буфер обмена между разными программами. В этот буфер можно положить 1 порцию любой информации. Аналогичный  буфер был придуман и для Фортрана. Он называется COMMON (Общая) память, и устроен похоже. Программные компоненты, знают где находится адрес COMMON памяти и могут прочитать оттуда переменные. Надо только указать программным компонентам какие (по типу) переменные там лежат и сколько их.

        COMMON   A, Strok, Stolb

- для хранения переменных A, Strok, Stolb будет использована Общая (COMMON) память

        INTEGER  A(20,20)                    

        INTEGER  Strok, Stolb

- первые 400 ячеек (по 4 байта) используются для целочисленного массива

- и ещё 2 ячейки (по 4 байта) используются для 2-х целых переменных.

Компилятор очень не замысловат, и проще ему всё писать точно и аккуратно:

COMMON–описания    должны совпадать по типам и размерам !!!

Или ещё проще – ОНИ ДОЛЖНЫ СОВПАДАТЬ посимвольно !!!

Обратите внимание при вызове подпрограммы у нас нет передачи никаких параметров ( в скобках ничего не стоит). И в подпрограмме тоже нет приема никаких параметров ( в скобках ничего не стоит). Но программа работает, за счёт использования обращения к Общей памяти.

Выполните учебные задания и отошлите решения сетевой тестирующей системе.

Задание (учебное):      Решите задачу  1301

Для чтения массива, записанного в строку, используйте оператор неявного DO-цикла 

READ(1,*) (A(i),i=1,N)

Задание (учебное):     Решите задачу  1302

Для чтения матрицы  можно

1)  организовать перебор по строкам входного файла и в цикле использовать оператор неявного DO-цикла 

READ(1,*) (A(i,j),  j=1,столб.)

2)  использовать операторы неявного DO-цикла  типа

READ (1,*) ((   массив(i- строки  , j - столбцы),  j=1,N_столбцы),   i=1,N_строки)

Для вывода матрицы используйте подпрограмму печати из примера F3_1.FOR

Используйте вариант подпрограммы, исправленный на занятии.

После сдачи задачи 1302  тестирующей системе, продемонстрируйте преподавателю умение работать с отладчиком программ.

Для демонстрации выполнения задания скопируйте файл

input.08    в  Вашем рабочем каталоге под именем   input.txt   

Следует ПОКАЗАТЬ: