Простая рекомендация, как вообще избегать подобных ошибок. Фортран имел короткие имена переменных. Развитие технологии программирование сказало: если переменная описывает количество столбцов, то она называется – 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
Следует ПОКАЗАТЬ:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.