Переменные 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
Вопросы для «продвинутых»
- Что в Лабораторной работе написано не правильно?
- Что в Лабораторной работе написано плохо?
- Что в Лабораторной работе пропущено и следует добавить?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.