Последовательность выполнения работы 1. Графики контурных линий должны повторять рисунок индивидуального задания:
a) для каждой i-ой линии контура задать область определения и уравнение yi=fi(x); проверить уравнения в Agrapher;
b) написать программу табуляции fi(x); строки <аргумент><значение функции> записать в файлы с расширением .txt;
c) импортировать эти файлы в Agrapher для тестирования; выполнить настройки: линии – красным цветом, точки удалить;
d) сохранить график в файле Contur.agr для дальнейшего использования.
2. Описатьматематически систему неравенств, обеспечивающуюпопадание произвольной точки в область. Проверить правильность системы неравенств в AGrapher.
3. Рисунок индивидуального задания накрыть прямоугольной сеткой, в узлах которой находятся точки для проверки системы неравенств:
a) прямоугольник должен на 10-20% перекрывать заданный график с каждой из четырех сторон;
b) рекомендуемое число узлов сетки – 20-40 по каждой оси.
Определить параметры сетки: начальное и конечное значенияx иy,шаг изменения x и y.
3. Дополнить программу:
a) генерировать узлы сетки, используя ее параметры;
b) проверить каждую точку на соответствие с системой неравенств, используя единственный оператор IF;
c) записать координаты точки (x, y) в один из файлов для Agrapher:
- если точка в пределах области – в файл in.txt,
- иначе – в файл out.txt.
4. Дополнить график в Agrapher:
a) прочитать график контурных линий из файла Contur.agr;
b) импортировать таблицы из файлов in.txt и out.txt;
c) установить для точек из in.txt и out.txt разные цвета; удалить линии, соединяющие точки;
d) предъявить преподавателю график на экране.
Содержание отчета
1. Название работы, номер варианта.
2. Фамилия, имя, отчество и номер группы студента.
3. Рисунок в том виде, как он приведен в варианте задания.
4. Таблица участков графиков контурных линий (смотри пример), в которой для каждого участка указаны границы, уравнения, шаг табуляции, количество выполнений цикла.
5. Система неравенств для всех точек области.
6. Блок – схема и распечатка текста программы.
Справочная информация
Порядок действий в логических выражениях определяется приоритетом используемых операций. В приведенной ниже таблице 5 L1, L2 – логические выражения; a, b – числа или строки. В операциях отношения можно сравнивать не только числа, но и строки – они сравниваются, как в словаре (в соответствии с алфавитом).
Таблица 4.
Операции отношения и логические операции
Операция
| Фортран-77
| Фортран-90
| Приоритет
| Вычислить значения a,b
| Арифметические или строковые операции.
|
| Операции отношения
| Больше чем
| a.GT.b
| a>b
|
| Больше или равно
| а.GE.b
| a>=b
|
| Меньше чем
| а.LT.b
| a<b
|
| Меньше или равно
| а.LE.b
| a<=b
|
| Равенство
| а.EQ.b
| a= =b
|
| Неравенство
| а.NE.b
| a/=b
|
| Логические операции
| Инверсия
| .NOT.L1
|
| Логическое умножение
| L1.AND.L2
|
| Логическое сложение
| L1.OR.L2
|
| Эквивалентность
| L1.EQV.L2
|
| Неэквивалентность
| L1.NEQV.L2
|
|
Комментарии к заданию
1. Приложение Advanced Grapher распространяется бесплатно, адрес сайта http://www.alentum.com/agrapher/.
2. Напишите уравнение и выберите шаг табуляции каждой линии контура, заполните таблицу. На криволинейном участке с целью улучшения изображения в AGrapher шаг выбирается более мелкий. Для прямой выводятся две точки (без цикла).
3. Если аргумент тригонометрической функции задан в градусах, следует в программе использовать функции Sind(x), Cosd(x), Tand(x).
4. Для табуляции линий использовать оператор цикла по переменной DO x=xn,xk,step . . . enddo Здесь х – переменная цикла, xn, xk – начальное и конечное значенияx, step - шаг изменения х.
5. Количество повторений цикла рассчитывается по формуле: или
6. В системе неравенств показать объединение квадратной скобкой, пересечение – фигурной скобкой.
7. Пунктирная контурная линия на рисунке означает, что точки, лежащие на ней, не принадлежат области.
8. При составлении системы неравенств рекомендуется рассматривать область по отдельным фрагментам, что поможет в решении задачи. Система неравенств в этом случае представляется объединением групп неравенств, соответствующих этим фрагментам.
9. Рекомендуется воспользоваться симметрией заданной области, иногда это помогает уменьшить количество неравенств.
10. Генерируя точки – узлы сетки, воспользуйтесь вложенными циклами для задания их координат.
Пример
В Таблице 5 на рисунке показана область и ограничивающий ее прямоугольник. Область разбита на два фрагмента – А и В; точка находится в пределах заданной области, если она принадлежит хотя бы одному из них.
Таблица 5. Заданная область и ограничивающий ее прямоугольник
| Система неравенств:
| Границы прямоугольника, содержащего точки: x Î [– 4, + 4], y Î [– 4, + 5] . Шаг изменения координат x и y равен 0,4.
|
Таблица 6. Графики контурных линий к рисунку из Табл. 5
№
| Границы участка
| Уравнение
| Шаг цикла
| Количество точек
| Примечание
|
| x = [-3, 3]
| y = 4
y = 2
| цикла нет
|
| Горизонтальные стороны прямоугольника – сплошные.
|
| y = [2, 4]
| x = -3
x = 3
| цикла нет
|
| Вертикальные стороны прямоугольника – пунктир.
|
| a [0, 360▫]
| x = 3cos a y = 3sin a
| Step=3
| Точек цикла 121
| Параметрические уравнения окружности радиуса R=3 с центром в начале координат.
|
Рис.1. Блок-схема программы
| Программа.
Program Region ! Попадание точки в область плоскости
! студент (фамилия, имя) группа № работа № вариант №
Implicit none
Real x, y
Integeralpha !alpha-целый, Real(alpha)- вещественный
Integer,parameter::inside=1,outside=2 ! номера устройств
Logical A, B
!-------выполняемые операторы
Open(3,FILE=’3.txt’) ! координаты точек сторон прямоугольника
Open(4,FILE=’4.txt’)
Open(5,FILE=’5.txt’)
Open(6,FILE=’6.txt’)
Open(7,FILE=’7.txt’) ! координаты точек окружности
Open(inside,FILE=’in.txt’) ! координаты точек внутри области
Open(outside,FILE=’out.txt’) ! координаты точек вне области
!------табуляция сторон прямоугольника (файлы на устройствах 3 - 6)
Write(3,*)-3,4;Write(3,*)3,4 ! верхняя сторона прямоугольника
Write(4,*)-3,2;Write(4,*)3,2 ! нижняя сторона прямоугольника
Write(5,*)-3,4;Write(5,*)-3,2 ! левая сторона прямоугольника
Write(6,*)3,4;Write(6,*)3,2 ! правая сторона прямоугольника
!------окружность (файл на устройстве 7)
Do alpha=0,360,3 ! аргумент функций Sind, Cosd - в градусах, целый
x=3*Cosd(real(alpha)); y=3*Sind(real(alpha))!real()-вещ.
Write(7,*)x,y;
Enddo
! цикл по Y внутри цикла по X - перебор точек прямоугольника
Do x = -4, 4, 0.4
Do y = -4, 5, 0.4
A = y>=2 .and. y<=4 .and. abs(x)<3 ! фрагмент А
В = x*x + y*y <= 9 .and. x<=0 ! фрагмент В
If(A .or. B) then
Write(inside, *) x, y
Else
Write(outside, *) x, y
End If
End Do
End Do
End Program Region
Контрольные вопросы
1. Что называется логическим выражением, бывает ли оно смешанным? Могут ли в него входить числа?
2. Как в логическом выражении распределяются приоритеты между операциями арифметическими, логическими, отношения?
3. Пять логических операций (три основные и две дополнительные) с таблицами истинности и примерами.
4. Приоритеты выполнения логических операций в логическом выражении.
5. Шесть операций отношения с примерами.
6. Запись на Фортране логических констант. Как логическую константу “истина” задать с именем ON?
7. Integer::B=27, С=3 L1=В**1/3==С Как объявить тип переменной L1 (оператор)? Вычислите ее значение.
8. Что такое цикл в программе, управляющее выражение, параметр цикла, тело цикла?
9. Приведите стандартную блок-схему и пример
- по переменной;
- бесконечного цикла;
- итеративного цикла.
10. Объясните формулу расчета числа повторений цикла по переменной.
11. Приведите подробную блок-схему цикла по переменной.
12. Приведите блок-схемы и примеры условных операторов
- с двумя блоками;
- с одним блоком;
- без блоков.
Примеры задач контрольного задания
1. Рассчитайте число повторений цикла Do X=3.15,2.12,1.3
2. Напишите оператор цикла по переменной для вывода на экран 11 пар значений x и tg x, если x изменяется от –100о до –200о. Приведите блок-схему этого оператора.
3. Подсчитайте количество выведенных строк Doa = 22, 9, -8 Dob = 3, 19, 11 write(*, *) a, b enddo enddo Какие значения a и b будут выведены?
4. Дан фрагмент программы:
A = x>0; B = y<0; C = y**2<-x+1
L1 = B.or.A.and.C
- Объявите тип всех переменных (операторы Фортрана).
- Приведите систему неравенств и графическую интерпретацию всех логических переменных.
5.
|
| При каких значениях координат точка [x, y] находится в заштрихованной области плоскости? Опишите эти условия: a) в виде системы неравенств; b) в виде логического выражения (без промежуточных переменных)
| 6. Напишите условный оператор для вычисления переменной Y:
7. Напишите по блок-схеме фрагмент программы на Фортране.
Рис.2. Блок-схема фрагмента программы
Таблица 7.
Варианты индивидуальных заданий «Ветвления и циклы»
|