1717

Алгоритмизация и программирование разветвляющихся алгоритмов

Контрольная

Информатика, кибернетика и программирование

Логические выражения. Условный оператор If. Вывод тестов в ячейки рабочего листа. Логические операции. Выполнение оператора.

Русский

2013-01-06

190.76 KB

36 чел.

Алгоритмизация и программирование разветвляющихся алгоритмов

Разветвляющимся называется алгоритм, в котором некоторые действия (в программе операторы) могут выполняться один раз или не выполняется в зависимости от заданного условия.

Для реализации разветвляющегося алгоритма в языке VBA есть два оператора:

Ifусловный оператор, Select Caseоператор выбора.

Эти операторы влияют на порядок выполнения других операторов программы.

Для записи условий в операторе if используются логические выражения.

  1.  Логические выражения

Л.в. состоят из арифметических выражений, операций отношения и логических операций. Они имеют тип Boolean и могут принимать одно из двух значений: True или False.

Операции отношения (= ; <> ; < ; <= ; > ; >=) выполняют сравнение двух операндов и определяют истинно выражение (его значение true) или ложно (его значение false).

a:=5; и b:=7; a<=b – true, a a=b – false

Логические операции (not; and; or) используются для образования сложных логических выражений. Операнды логических операций должны иметь логический (булевский) тип. Приоритет логических операций ниже, чем операций отношения.

Not – логическое отрицание.

Синтаксис:

not (<логическое выражение>)

Результат операции истина, если значение операнда ложь и наоборот.

Пример: not (a<b) – false

And логическое И.

Синтаксис:

(<логическое выражение 1>) and (<логическое выражение 2>)

Результат операции истина, если оба операнда имеют значение истина, и ложь в противном случае.

Пример: (a=7) and (b>3) – false 

Or – логическое ИЛИ.

Синтаксис:

<логическое выражение 1> or <логическое выражение 2>

Результат операции истина, если хотя бы один из операндов имеет значение истина, и ложь, если оба операнда имеют значение ложь.

Пример: a=7 or b>3 – true

Примеры: Записать логическое выражения, которое имеет значение true, если:

  1.  значение переменной x принадлежит полуинтервалу (a;b]

a              b

 x>a and x<=b

  1.  значение переменной x находится вне полуинтервала [a;b)

a              b

 x<=a or x>b

Точка с координатами (х; y) находится внутри квадрата со стороной 1 

x;y

1

1

x>=0 and x<=1 and y>=0 and y<=1

  1.  Даны два числа a и b,

  1.  они оба положительные 

 a>0 and b>0

  1.  хотя бы одно из них положительное 

 a>0 or b>0

  1.  нет ни одного положительного 

 a<=0 and b<=0

2. Условный оператор If

Имеет две формы: полную и сокращённую.

условие

Блок операторов 1

Блок операторов 2

Нет

Да

условие

Блок операторов 1

Да

Нет

Для записи условий используются логические выражения.

Выполнение оператора:

  1.  Если значение логического выражения, записанного в условии true, то выполняется блок операторов 1, если false – блок операторов 2.
  2.  Если значение логического выражения true, то выполняется блок операторов 1, если false –оператор никаких действий не выполняет и происходит переход к следующему за If оператору.

При записи алгоритмов на языке VBA для каждой формы можно использовать однострочную и блочную структуры

Если каждый из блоков состоит только из одного оператора, то удобнее использовать при записи оператора if однострочную структуру.

Для полной формы:

If <условие> Then < оператор1> Else < оператор2>

Для сокращенной формы:

If <условие> Then < оператор1>

Если хотя бы один из блоков содержит более одного оператора, то необходимо использовать блочную структуру.

Для полной формы:

If <условие> Then 

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

 Else 

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

End If

Для сокращенной формы:

If <условие> Then 

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

End If

Пример: If (x>=10) and (x<=20) Then

 MsgBox (‘Значение x в интервале [10,20] ‘)

 Else

 MsgBox (‘Значение x вне интервале [10,20] ‘)

 End If

Операторы If могут быть вложены в другие операторы If.

условие 1

Блок операторов 3 3

условие 2

Блок операторов 1

Блок операторов  2

If <условие 1> Then

 If < условие 2> Then

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

 Else

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

 End If

 Else 

 <Блок операторов 3>

 End If

Если по ветке Else каждый раз проверяется условие, то можно использовать сжатую структуру оператора If.

If <условие 1> Then

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

 Else If < условие 2> Then

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

 Else If < условие 3> Then

 <Блок операторов 3>

 Else 

 <Блок операторов 4>

 End If

Пример:

Найти максимум из чисел a, b, c.

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


             начало

0

         Ввод x

10

          Вывод x

2

   -5≤x<1

       n=1

n=2

        n=3

     Вывод y,n

111

          Конец

3

4

5

8

10

12

да

нет

 x>1; x≠10

   

да

нет

7

9

6

Таблица используемых переменных

Имя переменной в задаче

Имя переменной в программе

Тип переменной

Комментарий

x

x

вещественный

аргумент функции, исходное данное

y

y

вещественный

значение функции, результат

n

byte

N формулы, результат

Sub prim2 ( )

 Dim x As Single, y As Single

 Dim n As byte

 x = InputBox ("Введи x", "Ввод исходных данных")

 MsgBoxx=” & x , , “Ввод”

 Cells(1, 2) = "Исходные данные"

 Cells(2, 2) = "x=" & x

 If x >=-5 And x < 1 Then

 y = Sqr (Abs(x))

 n = 1

 Else

 If x > 1 And x <> 10 Then

 y = x ^ 3

 n = 2

 Else

 y = 2 * x^2 + 1

 n = 3

 End If

 End If

 MsgBox “y=” & y & “ N формулы” & n , , “Вывод

 Cells(3, 2) = "Результаты"

 Cells(4, 2) = "y=" & y

 Cells(4, 3) = "N формулы=" & n

End Sub


Тесты

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

-5

3

1

1

2

1000

x

3

1

x y N формулы

-6 73 3

-5 2,… 1

0 0 1

1 3 3

2 8 2

10 201 3

11 1331 2

Вывод тестов в ячейки рабочего листа

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

 Пример:

 k = InputBox ("Введите номер строки для вывода")

 ……………………..

 Cells(k, 1) = "x=" & x

 Cells(k, 2) = "y=" & y

 Cells(k, 3) = "N формулы=" & n

Пример 2. Даны числа a, b. Если a<0, то найти min (a, b), если a=0, то найти max (a, b), в противном случае каждое число увеличить на 50%.

Начало

0

Ввод a,b

10

Вывод a,b

2

a<0

min=b

b=b+0.5*|b|

Конец

3

4

14

16

да

нет

a=0

нет

13

   a<b

a=1,5*a

min=a

Вывод a,b

max=a

   b>a

max=b

Вывод min

Вывод max

7

5

6

8

10

9

11

12

15

14


 

А также другие работы, которые могут Вас заинтересовать

22519. Расчет быстровращающегося диска 100.5 KB
  Расчет быстровращающегося диска Значительный интерес представляет задача о напряжениях и деформациях в быстро вращающихся валах и дисках. Высокие скорости вращения валов паровых турбин обусловливают появление в валах и дисках значительных центробежных усилий. Вызванные ими напряжения распределяются симметрично относительно оси вращения диска. Рассмотрим наиболее простую задачу о расчете диска постоянной толщины.
22520. Устойчивость сжатых стержней. Формула Эйлера 89.5 KB
  Однако разрушение стержня может произойти не только потому что будет нарушена прочность но и оттого что стержень не сохранит той формы которая ему придана конструктором; при этом изменится и характер напряженного состояния в стержне. Наиболее типичным примером является работа стержня сжатого силами Р. Разрушение линейки произойдет потому что она не сможет сохранить приданную ей форму прямолинейного сжатого стержня а искривится что вызовет появление изгибающих моментов от сжимающих сил Р и стало быть добавочные напряжения от...
22521. Анализ формулы Эйлера 80 KB
  1: 1 Таким образом чем больше точек перегиба будет иметь синусоидальноискривленная ось стержня тем большей должна быть критическая сила.1 Таким образом поставленная задача решена; для нашего стержня наименьшая критическая сила определяется формулой а изогнутая ось представляет синусоиду Величина постоянной интегрирования а осталась неопределенной; физическое значение ее выяснится если в уравнении синусоиды положить ; тогда т. посредине длины стержня получит значение: Значит а это прогиб стержня в сечении посредине его...
22522. Пределы применимости формулы Эйлера 141 KB
  Для стали 3 предел пропорциональности может быть принят равным поэтому для стержней из этого материала можно пользоваться формулой Эйлера лишь при гибкости т. Теоретическое решение полученное Эйлером оказалось применимым на практике лишь для очень ограниченной категории стержней а именно тонких и длинных с большой гибкостью. Попытки использовать формулу Эйлера для вычисления критических напряжений и проверки устойчивости при малых гибкостях вели иногда к весьма серьезным катастрофам да и опыты над сжатием стержней показывают что...
22523. Прочность при циклически изменяющихся напряжениях 149.5 KB
  Так например ось вагона вращающаяся вместе с колесами рис. Рис. Для оси вагона на рис. В точке А поперечного сечения рис.
22524. Диаграмма усталостной прочности 60.5 KB
  Диаграмма усталостной прочности. Эта кривая носит название диаграммы усталостной прочности рис. Точки А к С диаграммы соответствуют пределам прочности. Полученная диаграмма дает возможность судить о прочности конструкции работающей при циклически изменяющихся напряжениях.
22525. Расчет коэффициентов запаса усталостной прочности 147.5 KB
  Одним из основных факторов которые необходимо учитывать при практических расчетах на усталостную прочность является фактор местных напряжений. Очаги концентрации местных напряжений: Многочисленные теоретические и экспериментальные исследования показывают что в области резких изменений в форме упругого тела входящие углы отверстия выточки а также в зоне контакта деталей возникают повышенные напряжения с ограниченной зоной распространения так называемые местные напряжения. 1 а закон равномерного распределения напряжений вблизи...
22526. Основы вибропрочности конструкций 155.5 KB
  Если период вынужденных колебаний совпадет с периодом свободных колебаний стержня то мы получим явление резонанса при котором амплитуда размах колебаний будет резко расти с течением времени. Так как период раскачивающих возмущающих сил обычно является заданным то в распоряжении проектировщика остается лишь период собственных свободных колебаний конструкции который надо подобрать так чтобы он в должной мере отличался от периода изменений возмущающей силы. Вопросы связанные с определением периода частоты и амплитуды свободных и...
22527. Расчет динамического коэффициента при ударной нагрузке 140.5 KB
  Скорость ударяющего тела за очень короткий промежуток времени изменяется и в частном случае падает до нуля; тело останавливается. передается реакция равная произведению массы ударяющего тела на это ускорение. Обозначая это ускорение через а можно написать что реакция где Q вес ударяющего тела. Эти силы и вызывают напряжения в обоих телах.