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

Страницы работы

Содержание работы

Информатика   1курс

Лаб.работа F3

Цель занятия:

1.  Типы данных: вектора и  массивы.

2.  Знакомство с форматированным выводом данных

3.  Работа с массивами и подпрограммами

4.  Использование Общей памяти

5.  Решение задачи

Чтобы Ваши файлы были Вам всегда доступны, ЗАВЕДИТЕ себе дискетту (флеш-карту)  и храните все свои исходные файлы на ней !!!   Но никогда не работайте с дискетты (дискета – расходный материал).

0.       Проверьте    подключения сетевых дисков:

Работа выполняется с помощью файлового менеджера TotalCommander!!

Total Commander – Сеть  -  Подключить сетевой диск

Откроется знакомое окно подключения к сетевым дискам.

Подключите сетевые диски: 

T:   -  Tasks            -      X-Files\ Students\Tasks –  задания для студентов

E:   -  Exchange     -      X-Files\ Students\Exchange –  диск обмена файлами  для студентов

( Если эти буквы зарезервированы под другие сетевые диски, то ВНАЧАЛЕ отключите сетевой диск)

Скопируйте каталоги T:\Informatika\   Lab_F3   в свой каталог Inform   (на диск Z:  ).

Перейдите в каталог  Lab_F3   (диск Z:)

Откройте текст лабораторной работы Lab_F3 

Внимательно проверьте каталоги!!!

Вы должны быть в каталоге   Z:\ Inform\Lab_F3

У Вас открыто 2 – окна: Total Commander  и Текстовой Редактор (Word).

1. Опрос:    Скажите преподавателю – подготовились ли Вы к этой лабораторной работе.

2.    Разбор работы программы F3_1.FOR

Это программа, которая заполняет  матрицу числами. Зададим значения чисел  равными значениям, полученным из индексов элементов матрицы. Например, значение элемента A25 должно быть  -    25.

Создадим массив 10 строк на 9 столбцов (зарезервируем место в памяти под 90 элементов массива)

Заполним часть массива (9*9) так, как мы хотим.

Вызываем подпрограмму Out_Arr для вывода массива – CALL (англ. - вызов)

При этом передаем подпрограмме имя массива (сообщаем подпрограмме, где  в памяти располагается массив, т.е. где массив начинается, и количество строк и столбцов)

Подпрограмм Out_Arr  вводится инструкцией   SUBROUTINE и заканчивается возвратом в главную программу (инструкция RETURN ).

IMPLICIT NONE и END обязательно имеются в подпрограмме, так как   подпрограмма написанная таким способом, воспринимается компилятором, как независимая программная единица, и компилируется независимо от главной программы.

Обратите внимание на то, что в подпрограмме описан массив. При этом место в памяти для него не выделяется. Массив A1 начинается с того адреса, который передается из вызывающей программы. Новый способ индексации этих ячеек памяти задаётся  в подпрограмме. Поэтому на начальном этапе проще всего работать, когда размерности массивов в программе и подпрограмме совпадают. Рекомендуется сразу зарезервировать в памяти под массив  немного больше места, чем нам необходимо для работы по условиям задачи. Например, для этой задачи, если мы знаем, что размер массива не превосходит 10*10, следует выделить место в памяти для массива 15*15 или больше. Тогда, мы можем избежать распространенной сложной ошибки: Если при адресации к элементу массива его индексы случайно, по ошибке, выйдут на единицу за границы выделенной памяти, то может произойти сбой программы  или сбой компьютера или …

Например, пусть мы описали массив A(10,9), а обращаемся к элементу A8, 11  - возникнет типичная ошибка непредусмотренного обращения к не «своей» памяти. Разные компиляторы обрабатывают подобные ошибки по разному.

ИЗМЕНИТЕ оба размера на 15*15  (или 20,20)

Цикл DO заканчивается здесь не оператором END DO, а пустым оператором CONTINUE (англ. – продолжить). Чтобы чётко выделить, какой оператор заканчивает DO- цикл, последний оператор пометили меткой 70 и эту же метку указали в инструкции DO.

Так было принято оформлять DO-цикл в старых версиях Фортрана (версии II, IV, 77).

Печать массива осуществляется построчно. Но любой  вывод в Фортране печатает сразу всю строку и переходит на новую строку !!! аналог WRITELN на Паскале. Поэтому надо сразу сформировать всю строку, которую мы хотим напечатать.

В этом примере строка заполняется элементами массива с помощью неявного DO- цикла.

                PRINT 80, (A1(I,J), J=1,N)

Т.е.  в начале формируется строка вывода из элементов A1(I,1), A1(I,2),   , A1(I,N) , а потом эта строка выводится по «80 формату» -  PRINT 80,  и переводится строка.

80          FORMAT(20I4) – инструкция, сообщающая способ печати выходной информации

20I4 – 20 раз повторенное I4 –  4 знака для вывода значения целой (Integer) переменной,

то есть вся строка  будет печататься как целые числа в колонки по 4 знака.

Запустите программу.

Теперь изменим

        Stolb=10

Обратите внимание, что имеется  ряд( столбик) нулей, а не то, что мы ожидали увидеть.

Найдите в чём дело с помощью отладчика.

Посмотрите работу ОТЛАДЧИКА (Debug)

    Начало отладки –

Поставьте  курсор у исполняемой инструкции:     Stolb=10

   Build – Debug – Run to Cursor ( быстрее нажать -  Ctrl + F10) – Вы сразу «окажетесь около курсора»

Двигайтесь по шагам  Build – Debug – Step over  (клавиша -     F10)

В нижней части экрана появляются окна (откройте их  самостоятельно, если они не открыты  View – Debug Windows ). Variables – переменные, определенные в задаче, Watch – значения выражений, которые можно самостоятельно ввести.

При движении по шагам значения переменных, показанные в окнах отладки, будут изменяться.

 Дойдите до инструкции Call ( чтобы дойти быстро, вспомните, как дойти до курсора)

 – зайдите внутрь этой подпрограммы:   Build – Debug – Step into  (F11)

Посмотрите на значения переменных N и M. Сравните их с теми, что Вы передали подпрограмме.

Научитесь пользоваться окошком Watch : Добавьте в него для просмотра элемент массива А1(1, 2) – должно быть 12

   Выполните программу до конца – Build – Debug – Run – (F5)

Прервать работу отладчика в любой момент времени можно нажав   -   shift - F5

К такому же результату (нахождению ошибки) можно придти, если изначально на все вводы и передачи ставить «эхо-печать», т.е. контролировать правильность передач с помощью вывода значений:  см.

!             Print *, M,N

-  После отладки эту строку легко убрать, «закомментировав»

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Методические указания и пособия
Размер файла:
69 Kb
Скачали:
0