- •Integer diff(3, 8, -1:5) ! массивы могут быть многомерными
- •3. Учебные задачи
- •If (условие) exit
- •4. Вложенные Циклы do и работа отладчика
- •Эти же действия (Пошаговый проход) можно выполнить через меню Debug или кнопки на инструментальной панели Debug – кнопки для выполнения «шагов» отладки.
- •5. Массивы и циклы
- •- Иметь структуированный вид
- •2) Подготовьтесь к следующей лабораторной работе, прочитайте Lab_f3.Doc и условия -
Информатика 1курс
Лаб.работа F2
Цель занятия:
Знакомство с ФОРТРАНОМ
Знакомство с оболочкой Compaq Development Studio
Операторы IF, DO
Вложенные циклы
Массивы в Фортране
Отладчик
Проверка лаб.F2
Подготовка к лаб.F3
Чтобы Ваши файлы были Вам всегда доступны, ЗАВЕДИТЕ себе “флешку” и храните все свои исходные файлы на ней !!!
0. Повторение
Проверьте :
Работа выполняется с помощью файлового менеджера TotalCommander!!
Total Commander – Сеть - Подключить сетевой диск
Откроется знакомое окно подключения к сетевым дискам.
Подключите сетевые диски: ( см. Lab_F1)
T: - Tasks - X-Files\ Students\Tasks – задания для студентов
E: - Exchange - X-Files\ Students\Exchange .
( Если эти буквы зарезервированы под другие сетевые диски, то ВНАЧАЛЕ отключите сетевой диск)
Проверьте свою работу с файлами:
У Вас на диске Z: должен быть каталог – Inform ( создавали на 1 занятии).
Всё, что относится к Информатике должно быть в этом каталоге. Например, у Вас должен остаться каталог Inform\Lab_F1. ЛИШНИХ каталогов и файлов быть НЕ ДОЛЖНО. Удалите ВСЁ лишнее.
Скопируйте каталог T:\Informatika\ Lab_F2 в свой каталог Inform (на диск Z: ).
Перейдите в каталог Z:\ Inform \ Lab_F2 (диск Z:)
Откройте текст лабораторной работы Lab_F2.doc
10 мин. От начала занятия:
1. Разбор работы программы F2_1.FOR
Загрузить программу F2_1.FOR
a) Нажать (2 раза) на имя файла F2_1.FOR, автоматически вызвав оболочку Fotran’a для файлов с расширением FOR (F90).
б) Или Пуск-Программы-Compaq Visual Fortran 6 – Developer Studio
(File – Open - … - F2_1.FOR)
Программа имеет расширение FOR и по умолчанию написана в позиционной форме записи: 1-5 позиции – метка, 6 - колонка продолжения, 7-… инструкция
Обратите внимание на структуру программы, все наши программы должны
иметь такую же структуру.
НАЧАЛО
ОПИСАНИЯ
[ИНИЦИАЛИЗАЦИЯ]
Исполняемая часть
КОНЕЦ
- Блок: ИНСТРУКЦИИ ОПИСАНИЯ
DOUBLE PRECISION A,B - вещественные переменные двойной точности
Выделите мышкой оба слова DOUBLE PRECISION (или установите курсор внутрь слова) и нажмите F1 : загрузится окошко справки
COMPLEX - так вводятся комплексные переменные
CHARACTER - так вводятся текстовые переменные, здесь вводится 1 символ
- Блок: ИНСТРУКЦИИ ИНИЦИАЛИЗАЦИИ
PARAMETER(BOOL1=.FALSE.) ! инструкция PARAMETER, служит для задания значения именованных констант (логическая переменная BOOL1 теперь не может измениться в программе)
DATA I, A, B /10, 3, 123456789D+5/ ! инициализация списка переменных явным списком констант I=10, A=3, B=123456789D+5 ( D означает, что константа имеет двойную точность и значение надо умножить на 105)
- Блок: ИНСТРУКЦИИ Присваивания
Обратите внимание, что в операции Y= 1/7, осуществляется целочисленное деление, целое 1 делится на целое 7 и поэтому результат имеет такой же тип – целый, равный о затем происходит присваивание Y, с преобразованием целого значения к вещественному.
PAUSE – команда приостановки выполнения программы. PAUSE может (или не может) сопровождаться отладочной информацией: числом или строкой, разной длины под разными компиляторами
- Блок: ИНСТРУКЦИИ УПРАВЛЕНИЯ
Блоковое и логическое IF (повтор):
Блоковое IF – имеет условие в круглых скобках, затем !!! THEN. Множество альтернатив с условиями ELSE IF(…) и одна безусловная альтернатива ELSE. Заканчивается оператор END IF
IF (Условие1) THEN
Действия1
ELSE IF (Условие2) THEN
Действия2
ELSE
Действия3
END IF
Логическое IF: запись в ! одну строку, поэтому нет THEN
Следует откомпилировать, скомпоновать и запустить программу F2_1.FOR.
2. Разбор работы программы F2_2.FOR
- Блок: МАССИВЫ
Массив - данные одного типа, которые хранятся в последовательных ячейках памяти, например, значения функции в некоторых точках.
REAL ARRAY(5) в массиве ARRAY 5 элементов вещественного типа:
ARRAY(1) , ARRAY(2) , ARRAY(3) , ARRAY(4) , ARRAY(5) ,
REAL SUM(-5:30) ! SUM – массив вещественных переменных, индексы элементов массива Фортрана могут быть отрицательными. Массив начинается с элемента SUM(-5), а заканчивается элементом SUM(30), всего в массиве SUM 36 элементов.
!!! Посмотрите справку для SUM (используйте «курсорную» подсказку <F1>) . В Фортране НЕТ зарезервированных имен!!!, поэтому компилятор в данной программе будет использовать имя SUM, как идентификатор, а не как вызов функции. Такое двойное использование имен опасно из-за появления неконтролируемых ошибок. Существует простая рекомендация по именам переменных пользователя – имена переменных не должны совпадать с ключевыми словами !
Массивы могут быть многомерными, т.е. у каждого элемента массива может быть несколько индексов, что соответствует математическим и физическим понятиям,
например, функциям от нескольких переменных.
Integer diff(3, 8, -1:5) ! массивы могут быть многомерными
(размерность до 7)
DIFF - трехмерный массив, по первым 2-м измерениям индексы меняются от 1 до 3 и от 1 до 8, а по 3-му от –1 до 5
Работа с текстом в Фортране 77 достаточна громоздка, так как язык предназначен для математических расчетов.
CHARACTER S1*7, S2 *4 ! текстовые переменные S1 из 7 знаков и S2 длиной 4 знака
Если в программе требуется использовать тек
CHARACTER * (*) NAME размер NAME будет задан позже, а пока описан с помощью (*)
- Блок: ИНСТРУКЦИИ ИНИЦИАЛИЗАЦИИ
PARAMETER(Name='FileName') ! инструкция параметр служит для задания значения именованных констант (не изменяются в программной компоненте)
DATA ARRAY/1.,2.,3.,4.,5./ ! инициализация списка переменных (здесь - массива ARRAY) явным списком ВЕЩЕСТВЕННЫХ констант
DATA DIFF/168*-1/ ! использование коэффициента повторения 168
DATA (SUM(I),I=-5,30)/-5.,-4.,-3.,-2.,-1.,31*0./
! использование «неявного» DO – цикла по I
! для перебора элементов массива SUM
, т.е. это DO i= -5 , 30
SUM(i) = i-ая константа из списка констант
END DO
В разделе присваивания показано, как обращаться к отдельному элементу массива, т.е. указав индекс массива в круглых скобках, мы получаем доступ к нему по операциям чтения-записи
Следует откомпилировать, скомпоновать и запустить программу F2_2.FOR
3. Учебные задачи
На занятиях Вам даются учебные задания . Если Вам в течении 5 минут не ясен алгоритм решения, то спросите про алгоритм решения задачи.
Цель занятия – набивка и отладка программ.
Решение задач самостоятельно предполагается – дома.
Это учебные задачи. В лабораторной работе даны указания по алгоритмам их решения, которыми следует пользоваться (для обучения).
Если Вам не очевидно решение, которое Вы можете записать без остановки, то освойте технологию, предлагаемую в этом курсе.
Берете ручку и на бумаге пишете «по русски» - на естественном алгоритмическом языке, решение задачи. Если Вы не можете написать решение за 5 минут (какая маленькая потеря времени!) – зовёте преподавателя для обсуждения алгоритма решения. Затем пишете алгоритм на бумаге. ПРОВЕРЯЕТЕ – быстрый прогон с очевидными тестовыми данными и только затем переносите (быстро – не надо думать!) алгоритм на компьютер.
Нажмите по ссылке Тестирующая система по ИНФОРМАТИКЕ для 1 курса ___(НОЦ)
( Эта ссылка доступна при открытии файла T:\Informatika\onlinelink.htm )
Выберите Lab_F2. Далее – Выберите ссылку “На занятие”
Зарегистрируйтесь.
Если Вы не сделали это на занятии LAB_F1, то своё имя для входа в тестирующую систему найдите в файле: T:\Informatika\ список_ejude.txt . Пароль получите у преподавателя, сообщив своё имя и фамилию. (Запишите это имя и пароль).
Цикл с ПРЕДВАРИТЕЛЬНЫМ_УСЛОВИЕМ
DO WHILE (УСЛОВИЕ)
ОПЕРАТОРЫ
END DO
Задание: Решите задачу 1201 - использовать цикл с предусловием
В качестве условия используем остаток от деления числа на 2.
Встроенная функция MOD(A, P) -возращает остаток от деления A на P (P0).
N = MOD(28, 6) , N станет равно 4
Задание: Решите задачу 1202 - использовать цикл с предусловием
Последняя цифра числа - это остаток от деления числа на 10.
Так как в задаче требуется суммирование в цикле, то вспоминаем правило:
«Сумматор обнуляется перед циклом.»
Цикл с ПОСТ-УСЛОВИЕМ
DO
ОПЕРАТОРЫ