Название: Программирование ветвящихся вычислительных процессов - (автор неизвестен)

Жанр: Технические

Просмотров: 1147


Аннотация

Лабораторная работа № 2

ПРОГРАММИРОВАНИЕ ВЕТВЯЩИХСЯ

ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ

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

Постановка задачи

Пусть на плоскости  x, y  задана область  D.  Требуется определить, «попадает» ли точка с координатами   (x, y)   в область   D  или нет.  Если попадает, то необходимо вычислить функцию   и переменной M, значение которой является признаком «попадания» или «непопадания», присвоить значение  M=1. В противном случае вычислить    и положить  M=2.

В каждом варианте задания область  D  можно разбить на две подобласти: D1 , D2 .  Подобласть  D1  ограничена прямыми линиями, уравнения которых нужно составить. При этом удобно использовать уравнение прямой в отрезках на осях:  .  Подобласть  D2  ограничена кривой второго порядка, уравнение которой указано в задании. Варианты заданий приведены в таблице 2.

Пояснение задачи

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

Создать на компьютере проект для решения поставленной задачи, составить и отладить программу.

Для выбранных точек получить и записать результаты счета.

Рис. 1.  Область на плоскости  x, y

 

Рассмотрим один из вариантов решения задачи. Пусть область  D  имеет вид, показанный на рис. 1, а функции    и    заданы как

.

Прямой    разобьем область  D  на две подобласти: D1  и  D2 . Уравнения прямых, ограничивающих подобласть  D1 , будут: во второй четверти  ; в третьей  .

Уравнение окружности с центром в начале координат, ограничивающей подобласть  D2  при    и   ,  имеет вид  .

Теперь можно записать, что некоторая точка   (x, y)   «попадает» в область  D, если она «попадает» в область  D1  или  D2 , т.е. если     и    и    или    и    и  .

Точка  (x, y)  «не попадает» в область D , если   

*  и ,  или    и  , или

  и  ,      или    и  .

При выполнении задания можно проводить анализ как «попадания», так и «непопадания» точки в область  D .

При составлении программы на Фортране для анализа «попадания» или «непопадания» точки в область  D  можно составить только одно логическое выражение с использованием следующих логических отношений и операций:

отношения:

операции:

(в свободном

и фиксированном форматах)

< – .LT. – меньше,

<= – .LE. – меньше или равно,

> – .GT. – больше,

>= – .GE. – больше или равно,

== – .EQ. – равно,

/= – .NE. – не равно.

(в  порядке  убывания

приоритета)

.NOT.  –  отрицание,

.AND.  –  конъюнкция («и»),

.OR.  –  дизъюнкция («или»),

.EQV.  –  эквивалентность,

.NEQV. – неэквивалентность.

Результатом вычисления отношений является одно  из двух логических значений  .TRUE.  – истина или  .FALSE.  – ложь. С помощью логических операций можно создавать сложные логические выражения, которые также могут принимать только два значения  .TRUE.  или  .FALSE.

Например, точка  (x, y)  «попадает» в область  D  (рис. 1), если логическое выражение

X<=0..AND.Y<=X+4..AND.Y>=-X-4..OR.X>0..AND.Y>=0.. AND.X**2+Y**2<=4.

принимает значение  .TRUE.  – истина.

Ветвящиеся вычислительные процессы в Фортране можно запрограммировать с помощью следующих условных операторов IF.

Логический оператор IF имеет вид

IF(L)  S

Здесь  L – логическое выражение,  S – исполняемый оператор.

Если логическое выражение L истинно, то выполняется оператор S , если оно ложно, то выполнится следующий за IF оператор, а S не выполняется.

Блочный оператор IF имеет вид

IF(L) THEN

< блок операторов 1 >

ELSE

< блок операторов 2 >

END IF

Правило выполнения: если логическое выражение L истинно, то выполняется < блок операторов 1 >, а если оно ложно, то выполняется < блок операторов 2 >. При отсутствии альтернативы  < блок операторов 2 > вместе с ELSE опускается.

При необходимости дополнительных условий используется общий вид блочного оператора IF:

IF(L) THEN

< блок операторов 1 >

ELSE IF(L+) THEN

< дополнительный блок операторов >

ELSE

< блок операторов 2 >

END IF

Здесь  L  и  L+  –  основное и дополнительное логические выражения.

Правило выполнения: если логическое выражение L истинно, то выполняется < блок операторов 1 >; если выражение L ложно, а L+ истинно, то выполняется < дополнительный  блок  операторов >; если выражение L ложно и L+ ложно, то выполняется < блок операторов 2 >. Дополнительных условий, соответствующих им логических выражений и блоков операторов может быть несколько.

Приведем пример Фортран-программы, в которой для анализа «попадания» или «непопадания» точки используется логическая переменная  C . Этой переменной присваивается значение логического выражения.  Если  C=.TRUE. ,  то  в  блочном операторе  IF (C) THEN выполняется первый блок операторов, а если C=.FALSE. , то второй блок (стоящий после  ELSE).

PROGRAM LAB2

LOGICAL C

REAL X, Y, Z

INTEGER I, M

DO I=1,8

PRINT *, ' X=?, Y=? ';  READ  '(2F7.3)', X,Y

C=X<=0..AND.Y<=X+4..AND.Y>=-X-4..OR.&

&X>0..AND.Y>=0..AND.X**2+Y**2<=4.

IF(C) THEN

PRINT *, ' YES '

Z=F1(X,Y);  M=1

ELSE

PRINT *, ' NO '

Z=F2(X,Y);  M=2

END IF

PRINT 2, X,Y,Z,C,M

END DO

2  FORMAT (' X=',F7.3,3X,'Y=',F7.3,3X,'Z=',E11.4,3X,'C=',L2,& &3X,'M=',I2/)

FUNCTION F1(X,Y)

F1=ALOG(ABS(X+Y)+1.)

END FUNCTION F1

FUNCTION F2(X,Y)

F2=EXP(1./(ABS(X)+ABS(Y)))

END FUNCTION F2

END PROGRAM LAB2

В конце программы описаны внутренние процедуры-функции F1  и  F2 . Эта программа для своего завершения требует ввести координаты 8 точек.

 

Таблица 2