Информатика 1курс
Лаб.работа F4
Цель занятия:
1. Проверка умения работать с отладчиком по заданию Lab_F3
2. Функции и подпрограммы
3. Передача массивов подпрограммам
4. Знакомство с Операторами Ввода ФОРТРАНА-77
5. Решение задачи
Чтобы Ваши файлы были Вам всегда доступны, ЗАВЕДИТЕ себе дискету (usb-drive) и храните все свои исходные файлы на ней !!! Но никогда не работайте с дискетты (дискета – расходный материал).
0. Проверьте подключения сетевых дисков:
Работа выполняется с помощью файлового менеджера TotalCommander!!
Студенты, выполняющие работу без TotalCommanderне консультируются и не опрашиваются!
Total Commander – Сеть - Подключить сетевой диск
Откроется знакомое окно подключения к сетевым дискам.
Подключите сетевые диски: ( см. Lab_D1)
T: - Tasks - X-Files\ Students\Tasks – задания для студентов
E: - Exchange - X-Files\ Students\Exchange – диск обмена файлами для студентов
( Если эти буквы зарезервированы под другие сетевые диски, то ВНАЧАЛЕ отключите сетевой диск)
Скопируйте каталог T:\Informatika\ Lab_F4 в свой каталог Inform (на диске Z).
Перейдите в каталог Lab_F4 (диск Z:)
Откройте текст лабораторной работы Lab_F4
Внимательно проверьте каталоги!!!
Вы должны быть в каталоге Z:\ Inform\Lab_F4
У Вас открыто 2 – окна: Total Commander и Текстовой Редактор (Word).
1. Проверка Lab_F3
ПРОВЕРЯЕТСЯ Решение задачи 1302
Перейдите в каталог Z:\Inform\Lab_F3 (диск Z:)
input.1310 в каталог под именем input.txt
Следует ПОКАЗАТЬ:
(Ctrl + F10, F10, F11, shift-F11, F5, shift-F5)
Продемонстрировать работу с отладчиком: ( и знание комбинаций Ctrl + F10, F10, F11, shift-F11, F5, shift-F5 )
- Запуск сеанса отладки.
- Пошаговое движение
- Движение до курсора
- Добавление элемента массива (2,1) в окно просмотра
- Заход в подпрограмму
- Пошаговое движение
- Добавление элемента массива (2,1) в окно просмотра
- Быстрое Возвращение в программу shift-F11 (без пошагового выполнения подпрограммы)
- Пошаговое движение
- Конец отладки
Продемонстрируйте всё это БЫСТРО, без переспрашивания, что надо показать.
2. Функции и подпрограммы
1. Разбор работы программы F4_1.FOR
Каждая программная компонента в Фортране компилируется отдельно, независимо от других. Поэтому компилятор должен понять всё, что встретит в тексте программы.
Всё, что мы используем в программе ДОЛЖНО БЫТЬ ОПИСАНО!!! Когда компилятор встретит при компиляции новое слово, то компилятор должен легко понять, какой тип связан с этим новым словом.
Программа использует две функции. У функций есть два идентификатора. С каждой функцией связано возвращаемое значение, например функция sin(0.2) – даёт нам вещественное значение. Поэтому в ПРОГРАММЕ !!! необходимо описать типы значений, возвращаемых этими функциями:
INTEGER F_FORM ! целый тип для функции-формулы F_FORM
Real FUNCT ! вещественный тип для функции FUNCT
F_FORM вводится, как функция-формула. Функция-формула должна располагаться после блока описания переменных, но обязательно до исполняемых операторов.
F_FORM(A,B,D)=A+B+D ! определение функции-формулы
Задаем значения переменным A, B, C = 1, 2, 3
Для их вывода используем 2 оператора вывода: для текста и для чисел
PRINT * , ' A= B= C= D='
PRINT '(1X, 4I4)', A, B, C, D
Выражение в ‘ ‘ , т.е. строка, стоящая в кавычках, задает способ вывода на печать = вид форматного преобразования:
1X – «для управления кареткой» - устаревшее
4I4 – 4 раза повторенное I4 – 4 знака для вывода значения целой (Integer) переменной таких, как A, B, C, D
Вызываем функцию-формулу.
Ей передаются фактические параметры A, B и С, поэтому сумма равна 6, хотя функция-формула использует формальный параметр D.
Затем вызываем функцию FUNCT
D=FUNCT(A,B)
Возвращаемое значение внутри функции определено, как FUNCT=A1+B1, поэтому D станет = 9.
Но у такой функции есть побочный эффект. В фортране, для простоты работы компилятора, в подпрограммы и функции всегда передается ПАМЯТЬ, т.е. передаются настоящие адреса размещения переменных в памяти. Поэтому, изменяя формальные параметры (переменные в функции) A1=3 и B1=6, мы тем самым изменяем, фактические параметры («настоящие» переменные в программе) A и B, что и показывает их распечатка.
Затем при вызове подпрограммы CALL SUBROUT(A,B) мы также передаем подпрограмме фактические значения A и B, а затем изменяем их значения в подпрограмме. Но так как принимающие формальные параметры имеют другой тип данных – REAL, а не INTEGER, то происходит преобразование типов, нами не контролируемое !!! Поэтому при обратном преобразовании от REAL к INTEGER при возврате из подпрограммы мы получаем странное значение.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.