Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Разветвляющийся вычислительный процесс






 

Пример 3. Определить попадание точки с координатами (x, y) в область S (см. рис. 2).

Сформулируем логическое условие попадания точки с координатами (x, y) в область S.

Уравнение окружности, которая ограничивает область S в первом и втором квадранте системы координат XOY имеет вид:

.



Введём логическую переменную FLAG: типа BOOLEAN;

 

Тогда величину FLAG, которая принимает значение TRUE, в том случае, когда точка с координатами (x, y) принадлежит области S, можно найти по формуле:

FLAG : = (X > = -A) AND (X < = A) AND ((Y < = (A * A – X * X) ^ (1 / 2) AND (Y > = 0)) OR ((Y < 0) AND (Y > = B)))-

Либо, учитывая приоритеты выполнения операций, можно записать

FLAG : = X > = -A AND X < = A AND (Y < = (A * A – X * X) ^ (1 / 2) AND Y > = 0 OR Y < 0 AND Y > = B)

Код программы:

Sub pr1_1()

Dim A As Double, B As Double

Dim X As Double, Y As Double

Dim Flag As Boolean

 

A = InputBox(“введите A “)

B = InputBox(“введите B “)

X = InputBox(“введите X “)

Y = InputBox(“введите Y “)

FLAG: = (X > = -A) AND (X < = A) AND _

((Y < = (A * A – X * X) ^ (1 / 2) AND (Y > = 0)) OR ((Y < 0) AND (Y > = B)))

If Flag Then

MsgBox(“Точка внутри области”)

Else

MsgBox(“Точка вне области”)

EndIf

End Sub

Пример 4. Для заданного с клавиатуры значения X вычислить Y по формуле:

(2-5)

Эту задачу можно решить двумя способами. Первый способ предусматривает использование трех операторов IF сокращенной формы. Алгоритм решения достаточно прост (см. блок-схему на рис. 5). Последовательно проверяется три взаимно исключающих друг друга условия, образующих полную группу событий. Для любого x только одно условие примет значение TRUE, остальные два условия равны FALSE. Таким образом, оператор присвоения выполнится только один раз, и этот оператор будет соответствовать условию, имеющему значение TRUE.

Программная реализация – PR4_1.

Второй способ предусматривает использование двух вложенных операторов IF полной формы. Алгоритм этого способа реализован в виде блок-схемы на рис. 5.б. Программная реализация – PR4_2.

 
 

В соответствии с данной блок-схемой написан код процедуры pr4_2. В данной процедуре используется один оператор If c вложенными проверками условий.

Возможен ещё один способ решения задачи – с использованием нескольких операторов, следующих друг за другом. Блок-схема такого алгоритма представлена на рис. ЧЧ, а код – в процедуре pr4_1.

 

Sub pr4_1() Dim X As Double, Y As Double X = InputBox(“введите X “) If X < = 0 Then Y = 1 / 4 *(Abs(X) + 1) ^ (1 / 4) End If If (X > 0) And (X < 1) Then Y = 1 / 3 * X ^ (1 / 3) End If If X > = 1 Then Y = 1 / 2 * X ^ (1 / 2) End If MsgBox(“Y= “ & Y End Sub   Sub pr4_2() Dim X As Double, Y As Double X = InputBox(“введите X “) If X < = 0 Then Y = 1 / 4 *(Abs(X) + 1) ^ (1 / 4) ElseIf (X > 0) And (X < 1) Then Y = 1 / 3 * X ^ (1 / 3) Else Y = 1 / 2 * X ^ (1 / 2) End If MsgBox(“Y= “ & Y End Sub  

Пример 5. Составить программу, которая по введенному значению X вычисляет и выводит значение Y = F(X), где F(X) задана графически на рис. 6.

Эта задача отличается от задачи, описанной в предыдущем примере, только тем, что нужно самому составить формулу для функции F(X). В предыдущей задаче эта формула
(2-5) была задана в качестве исходных данных. Таким образом, от вас требуют сделать формальную, математическую постановку задачи, которая в данном случае сводится к составлению по графику формулы аналогичной (2-5).

Глядя на график (см. рис. 6) нетрудно увидеть, что на нем изображена кусочно-линейная функция, содержащая три прямых линии. Первая прямая имеет уравнение Y = –X–1 и определена для X ≤ 0. Вторая линия определена на отрезке 0 ≤ X ≤ 1 и имеет уравнение Y = X – 1. Третья прямая линия имеет уравнение Y = 0 и определена для X ≥ 1. С учетом выше сказанного, искомая формула будет иметь вид:

(2-6)

Sub pr5_1()

Dim X As Double, Y As Double

X = InputBox(“введите X “)

If X > = 1 Then

Y = 0

ElseIf (X < = 0) Then

Y = -X - 1

Else

Y = X – 1

End If

MsgBox(“Y= “ & Y

End Sub

 

Пример 6. Составить программу, которая по введенному значению X вычисляет и выводит значение Y = F(X), где F(X) задана графически на рис. 7.

Задача аналогична предыдущей, отличается от неё лишь тем, что при X< -2 значение функции Y не определено.

 

 

Sub pr6_1()

Dim X As Double, Y As Double

X = InputBox(“введите X “)

If X > = 1 Then

Y = 0

MsgBox(“Y= “ & Y)

ElseIf X < = 0 Then

Y = -X – 1

MsgBox(“Y= “ & Y)

ElseIf (X > 0) And (X < 1) Then

Y = X – 1

MsgBox(“Y= “ & Y)

Else

MsgBox(“Решение не определено “)

End If

 

End Sub

 

Другой вариант решения той же задачи заключается в том, что используем дополнительную переменную логического типа mist, которая первоначально содержит значение false, а при вводе Х< -2 меняет своё значение на true. Анализируя значение mist, выводим либо значение переменной Y, либо сообщение о том, что задача не имеет решения.

 

Sub pr6_2()

Dim X As Double, Y As Double, mist As Boolean

mist = false

X = InputBox(“введите X “)

If X > = 1 Then

Y = 0

ElseIf X < = 0 Then

Y = -X – 1

ElseIf (X > 0) And (X < 1) Then

Y = X – 1

Else

Mist = true

End If

If mist

MsgBox(“Решение не определено “)

Else

MsgBox(“Y= “ & Y)

End If

End Sub

 

Пример 8. Для заданного целого положительного K и значения вещественного числа X вычислить Y = F(X) по формуле:

(2-15)

Алгоритм решения этой задачи описан с помощью блок-схемы:

 

 

Sub pr6_1()

Dim X As Double, Y As Double, K As Integer

X = InputBox(“X=“)

K = InputBox(“K=“)

Select Case K

Case 2, 3

Y = X ^ K + X + 1

Case 4 To 10

Y = 1 / Abs(X + 1)

Case Is > 10, Is < 2

Y = Abs(X + K) ^ (1 / 2) + Abs(X - K) ^ (1 / 2)

End Select

MsgBox(“Y= “ & Y)

End Sub

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.