Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y.

Function Pr4310(ByVal x As Double_ ByVal y As Double) As Double Dim f As Double If x > y Then f = x Else f = y Return f End Function    

Рис. 4.4.3-10. Схема алгоритма и программный код процедуры Pr4310()
проектаПример 4.3-3

Алгоритмы и программы решения задачи вы­бора наибольшего из двух значений приведены на рис.4.4.3-11 и 4.4.3-12.

Function Pr4311(ByVal x As Double_ ByVal y As Double) As Double Dim f As Double f = x If y > f Then f = y Return f End Function  

Рис. 4.4.3-11. Схема алгоритма и программный код процедуры Pr4311()проектаПример 4.3-3

В первом способе (рис. 4.4.3-10) используется стандартное разветвление, а во втором (рис.4.4.3-11) – усеченное.

Процедура-Function Pr4310() (или Pr4311()) может быть вызвана, например, как на рис. 4.4.3-12.

Обратите внимание, что:

If x > y Then f=x Else f=yсоответствует функции f = max{x, y}, а

If x < y Then f=x Else f=y соответствует функции f = min{x, y },

где x и y любые арифметические выражения.

Dim ff As Double Dim xx, yy As Double xx= vvodDbl2("Ввод x=", TextBox1) yy= vvodDbl2("Ввод y=", TextBox2) ff=Pr4311(xx, yy) vivodDbl2(ff, "max{x, y }= ", TextBox3)

Рис. 4.4.3-12. Пример вызова процедуры Pr4311()

проектаПример 4.3-3

Пример 4.4.3-4. Написать процедуру-Function, которая вычисляет r = min{ a+b, c2, Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru }.

Function Pr4313(ByVal a As Double_ ByVal b As Double_ ByVal c As Double _ ByVal d As Double) As Double Dim min As Double min = a + b If c^2 < min Then min = c^2 If Sqrt(d) < min Then min = Sqrt(d) Return min End Function  

Рис. 4.4.3-13. Схема алгоритма и программный код процедуры Pr4313()проектаПример 4.3-4

Решение задач выбора наибольшего (наименьшего) из значений переменных или выражений числом более двух сводится к последовательному применению усеченных разветвлений.

Алгоритм, реализующий Пример 4.4.3-4 (рис.4.4.3-13), относится к числу базовых алгоритмов выбора наименьшего из нескольких значений. Основой алгоритма является усеченное разветвление. Здесь первоначально переменной min присваивается значение первого из выражений. Истинное значение наименьшего значения определяется путем последовательного сравнения со всеми остальными значениями выражений заданной последовательности.

Процедура-Function Pr4313() может быть вызвана, как на
рис. 4.4.3-14.

Dim rr As Double Dim aa, bb, cc, dd As Double aa = vvodDbl2("Ввод a=", TextBox1) bb = vvodDbl2("Ввод b=", TextBox2) cc = vvodDbl2("Ввод c=", TextBox3) dd = vvodDbl2("Ввод d=", TextBox4) rr = Pr4313(aa, bb, cc, dd ) ivodDbl2(rr,"Значение min = ", TextBox5)

Рис. 4.4.3-14. Пример вызова процедуры Pr4313()проектаПример 4.3-4

Пример 4.4.3-5. Написать процедуру-Function, которая вычисляет значение функции y(x) в соответствии со следую­щим правилом:

ex, если x<=-1;

y(x)= 3, если x>1;

2, если –1<х≤1.

Function Pr4315(ByVal x As Double)_ As Double Dim y As Double If x <= -1 Then y = Exp(x) ElseIf x > 1 Then y=3 Else y=2 End If Return y End Function

Рис. 4.4.3-15. Схема алгоритма и программный код процедуры Pr4315()

Процедура-Function Pr4315() может быть вызвана, например, как на рис. 4.4.3-16.

Dim YY As Double Dim x As Double x= vvodDbl2("Ввод x=", TextBox1) YY=Pr4315( x ) vivodDbl2(YY,"Значение функции ", TextBox2)

Рис. 4.4.3-16. Пример вызова процедуры Pr4315()

проекта Пример 4.3-5

Пример 4.4.3-6. Даны действительные числа x0, y0. Определить принадлежит ли точка с координатами (x0, y0) геометрической фигуре: ромб с вершинами в точках (0, 1), (1, 0), (0, -1), (-1, 0).

На этапе формализации задачи, прежде всего, построим заданную геометрическую фигуру (рис. 4.4.3-17).

Рис. 4.4.3-17. Ромб с вершинами в точках (0, 1), (1, 0), (0, -1), (-1, 0)

Известно, что ax+by=c – это уравнение прямой, а ax+by≤cи ax+by≥c – это два множества, одно из которых лежит над прямой (включая точки этой прямой), а другое под этой прямой. Для того чтобы выяснить, какое из неравенств надо взять, необходимо подставить координаты любой точки
M(x1, y1) в это неравенство (лучше взять точку M(0, 0), чтобы упростить вычисления).

Если ее координаты удовлетворяют этому неравенству, значит, эта точка M принадлежит указанному множеству, в противном случае – нет. Запишем уравнения прямых AB, BC, CD, DA:

AB: x-y=-1; BC: x+y=1; CD: x-y=1; DA: x+y=-1.

Таким образом, для того чтобы точка M0(x0, y0) принадлежала замкнутой заштрихованной области, необходимо выполнить следующие условия:

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru .

Разобьем решение задачи на несколько отдельных этапов и создадим процедуры пользователя, реализующие эти задачи:

1)Процедуру-подпрограмму Resh(), которая возвращает строку с ответом на вопрос, принадлежит ли точка с передаваемыми через параметры координаты заданной геометрической фигуры.

2)Процедуру-функцию vvod() для ввода действительного числа из TextBox.

3)Процедуру-подпрограмму vivod() для вывода строки в TextBox.

4)Событийную процедуру, которая должна содержать вызовы всех разработанных процедур.

5)Программный код решаемой задачи представлен на рис. 4.4.3-18.

Option Strict On Option Explicit On Imports System.Math Public Class Form1 'Функция ввода значения вещественного типа из TextBox Function vvod(ByVal T As TextBox) As Double Return CDbl(T.Text) End Function 'Процедура вывода результата в TextBox Sub vivod(ByVal Z As String, ByRef T As TextBox) T.Text = Z End Sub ' Процедура решения задачи Sub Resh(ByVal x0 As Double, ByVal y0 As Double, _ ByRef z As String) If Abs(x0 - y0) <= 1 And Abs(x0 + y0) <= 1 Then z = "Точка принадлежит фигуре" Else z = "Точка не принадлежит фигуре" End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) _ Handles Button1.Click Dim x, y As Double Dim z As String x = vvod(TextBox1) : y = vvod(TextBox2) Resh(x, y, z) : vivod(z, TextBox3) End Sub End Class

Рис. 4.4.3-18. Программный код проектаПример 4.3-6

Пример 4.4.3-7. Задано число n. Если n – натуральное нечетное число, меньше 10, то целочисленной переменной f присвоить 1, если n – натуральное четное число, то переменной f присвоить 2, если n – отрицательное, то присвоить f значение -1, если значение n находится внутри отрезка [10;1000], то f присвоить 10, иначе f присвоить 0.

Function Pr4319(ByVal n As Integer) As Integer Dim f As Integer Select Case n Case 1, 3, 5, 7, 9 f =1 Case 2, 4, 6, 8 f =2 Case Is <0 f =-1 Case 10 TO 1000 f =10 Case Else f =0 End Select Return f End Function

Рис.4.4.3-19. Программный код процедуры Pr4319()

Проекта Примера 4.4.3-7

Программный код решения Примера 4.4.3-7 с использованием оператора Select Case приведены на рис.4.4.3-19.

Процедура-Function Pr4319() может быть вызвана из любой другой процедуры или из модуля формы, например, как на рис. 4.4.3-20.

Dim ff As Integer Dim nn As Integer nn= vvodInt4(TextBox1) ff=Pr4319(nn) vivodInt4(ff, TextBox2))

Рис. 4.4.3-20. Пример вызова процедуры Pr4319()

Проекта Примера 4.3-7

Тестовые задания

1.К условным операторам относятся

1) If...Then...Else

2) For...Next

3) While...Wend

4) Select Case

5) Do Until...Loop

2.Оператор If-Then– это оператор

1) стандартного разветвления

2) усеченного разветвления

3) вложенного разветвления

4) блочного разветвления

3.Оператор If-Then-Else – это оператор

1) усеченного разветвления

2) блочного разветвления

3) стандартного разветвления

4) вложенного разветвления

4.В операторе условного перехода между словами If-Then может быть

1) арифметическое или логическое выражение

2) логическое выражение

3) оператор присваивания

4) любой оператор

5.Разветвляющийся алгоритм может быть

1) стандартным, вложенным, усеченным, регулярным

2) стандартным, вложенным, усеченным

3) стандартным, вложенным, усеченным, итерационным

4) нет верного ответа

6.В операторе условного перехода If обязательно должно присутствовать слово

1) End If

2) Else

3) Then

4) ThenElse

7.Ошибочно записан оператор

1) If a>a Then c=1 : d =5

2) If a>a Then c=1 : d =5

3) If a+b Then c=1 : d=5

4) If a>B Then c=1 Else d=5

8.Логические переменные не могут принимать значения

1) истина

2) ложь

3) да

4) нет

5) может быть

9.В операторе условного перехода Ifпосле слова Then может быть

1) любой оператор Visual Basic

2) оператор присваивания

3) арифметическое или логическое выражение

4) нет верного ответа

10.Переменным x, y, z будут присвоены значения в результате выполнения фрагмента программы

x = 66 : y = 58 If x > y Then z = x - y If x <= y Then z = x – y

1) 58 58 124

2) 66 58 08

3) 58 58 0

11.Переменной z будет присвоено значение ### в результате выполнения фрагмента программы

a = 15 : b = 10 : c = 25 If a > b And a < c Then z = a Else z = c End If

12.Последовательность операторов, в результате выполнения, которых будет найдено наибольшее значение переменных X и Y

1) МАХ = Abs( Х-Y) / 2 + (X + Y) / 2

2) If X > Y Then MAX = X

3) If X < Y Then MAX = Y

4) If X > Y Then MAX = X Else MAX = Y

5) MAX = ABS(X - Y) / 2 - (X + Y) / 2

13.Условное выражение Not((X<=10) Or (X>= 20)) может использоваться для проверки

1) принадлежит ли число интервалу (10;20)

2) выходит ли число за пределы интервала (10;20)

3) принадлежит ли число интервалу [10;20]

4) выходит ли число за пределы интервала [10;20]

14.Для вычисления значения переменной у по формуле

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
необходима конструкция

1) If X < 2 Then Y = Abs(X) : Y = X^2

2) If X < 2 Then Y = X^2 : Y = Abs(X)

3) If X < 2 Then Y = Abs(X) Else Y = X ^ 2

4) If X < 2 Then Y = X^2 Else Y = Abs(X)

15.Логическое условие попадания точки (х, у) в заштрихованную область

можно записать как #

1) ((x-2)**2+y*y<=4) Or (y>x/2)

2) (x-2)**2+y*y<=4 Or y>x/2

16.Логическое условие, описывающее ограниченную область,

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru

можно записать

1) (x>-1) Or (y<1) Or (x-y<2)

2) (x>-1) And (y<1) And (x-y<2)

3) (x>-1) Or (y<1) Or (x+y>2)

4) (x>-1) Or (y<1) And (x+y>2)

5) (x>-1) And (y<1) Or (x+y>2)

17.Логическое условие, описывающее ограниченную область,

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru

1) (x<3) And (y<1) And (x+y>0)

2) (x<3) Or (y<1) Or (y<x)

3) (x<3) Or (y<1) Or и (x+y>0)

4) (x<3) Or (y<1) And (x-y>0)

5) (x<3) Or (y<1) Or (x-y<0)

6)

18.Логическое условие, описывающее ограниченную область,

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru

1) (x >-1) And (y<3) And (x<y)

2) (x >-1) Or (y<3) Or (x>y)

3) (x >-1) Or (y<3) Or (x<y)

4) (x >-1) Or (y<3) And (x>y)

5) (x >-1) Or (x>y) And (y<3)

19.Логическое условие, описывающее ограниченную область,

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru

1) Sqrt(x*x+y*y)<R Or y>0

2) Sqrt(x*x+y*y)<R Or y<0

3) Abs(x)<R Or y>0 Or y<R

4) Abs(x)<R Or y<0 Or y>-R

5) Abs(x)<R Or Abs(y)<R

20.Логическое условие, описывающее ограниченную область,

Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru

1) Abs(x)<R Or y<0 Or y>-R

2) Sqrt(x*x+y*y)<R Or y<0

3) Abs(x)<R Or y>0 Or y<R

4) Sqrt(x*x+y*y)<R Or y>0

5) Abs(x)<R Or Abs(y)<R

4.4.5. Лабораторная работа по теме«Программирование алгоритмов разветвляющихся структур»

Цель данной работы состоит в получении навыков разработки проектов, использующих алгоритмы разветвляющихся структур, в изучении стандартных алгоритмов разветвляющихся структур, использовании оператора Select Case.

Вопросы, подлежащие изучению

1)Стандартные алгоритмы разветвляющихся структур, синтаксис операторов.

2)Программирование структур разветвления.

3)Оптимальные алгоритмы нахождения минимального и максимального значения.

4)Использование оператора выбора Select Case.

Общее задание на разработку проекта

1) Изучите вопросы программирования алгоритмов разветвляющихся структур (Тема 4).

2) Создайте приложение с именем Проект-4.4.

3) Выберите вариант задания из табл. 4.4.5-1.

4) Проведите формализацию поставленной задачи.

5) Разработайте графический интерфейс пользователя.

6) Составьте схемы алгоритмов решения поставленной задачи.

7) Напишите программный код процедур пользователя в соответствии со схемами алгоритмов. Обмен данными между процедурами должен осуществляться через параметры, без использования глобальных переменных. Событийная процедура должна содержать только операторы вызова пользовательских (общих) процедур.

8) Докажите правильность полученных результатов на заранее разработанных тестах для всех ветвей программы.

Варианты индивидуальных заданий

Таблица 4.4.5-1

Задача
1) e= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
2) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
3) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
4) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
5) g= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
6) f= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
7) d= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
8) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
9) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
10) d= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
11) Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
12) p= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
13) r= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
14) r= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
15) s= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
16) t= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
17) u= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
18) f= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
19) Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
20) v= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
21) h= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
22) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
23) Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
24) l= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
25) Z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
26) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
27) z= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
28) Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
29) Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru
30) y= Пример 4.4.3-3. Написать процедуру-Function, которая присваивает переменной f наибольшее из значений двух переменных x и y. - student2.ru

4.4.5.4. Содержание отчёта

Наши рекомендации