Проверка умения работать с отладчиком по заданию Lab_F3. Функции и подпрограммы. Передача массивов подпрограммам. Знакомство с Операторами Ввода ФОРТРАНА-77, страница 2

Переменные C и D  в подпрограмме – это локальные переменные и их изменение не влияет на значения переменные C и D  в программе.

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

Её особенность в том, что в подпрограмме не заданы размеры массива.

Integer BN,BM, Barr(BN,BM)

Компилятор легко разбирается с ситуацией, когда размеры передаваемого массива  и принимаемого в функции массива совпадают. Для этого компилятору надо знать адрес начала массива в памяти и способ размещения массива в памяти (массив хранится в последовательных ячейках).

Учитывая это, была допущена возможность не указывать в подпрограммах размеры массива, как константы. Особенность: размеры массивов должны быть описаны РАНЬШЕ, чем массив, иначе компилятор запутается.

Обратите внимание на то, что при выводе на печать массив выводится последовательно, как хранится в памяти, т.е. по колонкам.

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

   1401  - используйте решение   задачи 1103;

   1402  - используйте решение   задачи 1401, как функцию;    ФУНКЦИЯ должна быть !!!!

   1403  - используйте функцию сортировки   задачи 1402 ;      ФУНКЦИЯ должна быть !!!!

3.  Разобрать работу программы       1404 .FOR

На прямой дощечке вбиты гвоздики - n штук. Любые два гвоздика можно соединить ниточкой. Требуется соединить какие-то пары гвоздиков ниточками так, чтобы к каждому гвоздику была привязана хотя бы одна ниточка, а суммарная длина всех ниточек была минимальна.

Решение программы исходит из следующих соображений.

Пусть n=2. Ответ очевиден   1 ----  2  ( 1 соединен с 2)

Пусть n=3. Ответ очевиден   1 ----  2  ----- 3  ( 1 соединен с 2, 2  с 3)

Пусть n=4. Ответ очевиден   1 --  2     3 --4

Пусть n=5.     Возможны 2 варианта   1--2—3   4—5   и     1 – 2    3  --4 –5

Надо выбрать из них минимальный.

В Первый вариант  входит решение для n=3, к которому добавлено последнее звено.

Во  Второй вариант  входит решение для n=4, к которому добавлено последнее звено.

Возникает идея алгоритма решения задачи:  мы можем найти ответ для нового гвоздика (следующего n), если известны предыдущие решения – для (n-2) и (n-1)  .

Будем последовательно заносить найденные ответы для n = 2, 3, …  в массив ответов.

Начальные значения заносятся в массив ответов, как готовые выражения, так как эти ответы уже получены на бумаге (см. n = 2, 3, 4) и чего им пропадать.

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

 Для отладки во  входном файле   inp1404.txt имеются  данные для очевидных начальных случаев.

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

Поставьте  курсор у исполняемой инструкции:     Do i =2, n

Build – Debug – Run to Cursor ( быстрее нажать -  Ctrl + F10) – Вы сразу «окажетесь около курсора». Это быстрый способ перемещаться по программе в нужное место.

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

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

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

Посмотрите на значения переменных i и B(i). Сравните их с теми, что Вы ожидаете для входных данных.

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

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

!     Print *, M,N

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

Остановка отладчика в любой момент   -  (Shift + F5)

Повторите внимательно весь цикл  использования отладчика. Используйте разные входные тестовые данные, редактируя файл    inp1404.txt.

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

Задание     на дом.   ПРОВЕРЯЕТСЯ  

Решите задачу 14**      Номер задания * получите у преподавателя.

!!! Внимание:   

Тестирующая система имеет только 3 тривиальных теста для проверки ввода-вывода. Нетривиальные тесты- файлы input.04 и input.05 (в каталоге Lab_F4)  будут добавлены позже. Поэтому тщательно проверьте свои решения. У Вас будет ограниченная возможность для  сдачи решения на следующем занятии.

Тщательно проверьте своё решение и сдайте его сетевой тестирующей системе.

Сданные чужие решения переводят Вас на Базовый курс обучения.

Замечания

-------------

а) Работающая Программа должна быть оформлена:

   подписана и иметь структурированный вид

УДАЛИТЕ ненужные файлы и каталог DEBUG. Фортрановские EXE-файлы имеют большой размер и нам незачем их хранить. Особо это касается тех, кто только начинает работать с компьютером и у них образуется куча EXE-файлов и куча DEBUG каталогов в разных местах.

Что необходимо знать:

1. Функции-формулы.

2.  Функции

3.  Подпрограммы

4.  Передача  массивов подпрограммам

5.  Функция сортировки

7.  Знакомство с динамическим программированием (1404)

Подготовка к следующей лабораторной работе.

Прочитайте текст следующей лабораторной работы - в каталоге next_Lab

Вопросы для «продвинутых»

-  Что в Лабораторной работе написано не правильно?

-  Что в Лабораторной работе написано плохо?

-  Что в Лабораторной работе пропущено и следует добавить?