Студопедия — Разветвляющийся вычислительный процесс.
Студопедия Главная Случайная страница Обратная связь

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

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






Лабораторная работа №3.

Алгоритмизация.

Хорошую программу проще написать, если, предварительно проанализировав задачу, составить алгоритм ее решения, т. е. алгоритм программы. Алгоритм можно составить в виде словесного описания последовательности действий или представить в виде блок-схемы.

Блок-схема состоит из графических объектов различных типов, содержащих внутри себя текст, поясняющий, что именно выполняется в этом фрагменте. Графические объекты соединяются стрелками, показывающие последовательность обработки блоков. Перечень типов блоков и их описание приведен в следующей таблице.

 

 

Тип блока Описание блока
    Признак начала алгоритма.  
    Признак конца алгоритма.  
    Блок ввода/вывода, означает реализацию ввода данных с клавиатуры (или вывода данных на экран). В данном случае, это блок ввода, и эквивалентом его в VBA является оператор InputBox.  
    Блок присвоения переменным некоторых значений или выражений. В данном примере переменной i присваивается единица.
    Блок условия применяется когда, в зависимости от истинности (или ложности) некоторого условия, выполняться будут те (или иные) операторы. Если Условие будет истинным, то выполняться будет левая ветвь, а правая выполняться не будет. Если Условие будет ложным, то выполняться будет правая ветвь, а левая выполняться не будет.  
    Блок множественного ветвления используется, когда в зависимости от значения некоторого ключа-идентификатора, вычислительный процесс разветвляется на больше чем две ветви. В VBA для этого используется оператор «Select Case». В данном примере образуется три ветви, но их может быть и больше. Вычислительный процесс идет только по одной ветви.
Пример     «Else» является необязательным параметром и означает случай, когда ключ-идентификатор примет такое значение, которого нет среди перечисленных значений (для данного примера и , например 3 или 0 или что-то другое).  
       

Типы вычислительных процессов

1. Линейный вычислительный процесс

Если при запуске программы выполняются все ее операторы, начиная с первого и кончая последним, то это называется линейным вычислительным процессом. Например, вычисление площади круга, выполненное в предыдущей работе.

Освоению линейного вычислительного процесса посвящена вторая лабораторная работа.

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

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

Пример 1.

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

 

Листинг процедуры Discount1, подсчитывающей сумму скидки, приведен далее.

 

Sub Discount1()

Dim dCost As Double ' Стоимость покупки

Dim dDiscount As Double ' Скидка

 

dDiscount = 0# ' Обнуление скидки

dCost = InputBox("Введите стоимость покупки")

If dCost > 1000 Then dDiscount = dCost * 0.1

MsgBox "Скидка равна: " & dDiscount

End Sub

 

В ней:

Строки 2 и 3 – объявление двух переменных типа Double для хранения стоимости покупки и суммы скидки, соответственно.

Строка 5 – исходно никакая скидка не предоставляется.

Строка 6 – ввод стоимости приобретенного товара.

Строка 7 – подсчет суммы скидки, если стоимость покупки превышает 1000 денежных единиц.

Строка 8 – вывод результата.

 

Рассмотрим инструкцию If языка программирования VBA более формально, и более подробно. Синтаксис команды:

 

If <условие> Then <инструкции1> [Else <инструкции2>]

 

Работает инструкция If следующим образом:

В начале вычисляется значение условия, которое может быть True или False.

Если условие имеет значение True, то выполняется группа инструкции1, причем несколько инструкций должны помещаться в одной строке, а группа инструкции2 – пропускается.

Если же условие имеет значение False, то, наоборот, выполняется группа инструкции2, а группа инструкции1 – пропускается.

Выполнение программы в любом случае продолжается со следующей за If инструкции.

Конструкции, заключенные в квадратные скобки, являются необязательными. То есть, может отсутствовать конструкция Else и инструкции2, которые выполняются, если условие ложно.

В приведенном выше Примере 1 используется только одна инструкция

dDiscount = dCost * 0.1, которая выполняется, если условие истинно, т.е. стоимость приобретенного товара превышает 1000 денежных единиц. Если же условие ложно, то никакие инструкции не выполняются.

Группы инструкции1 и инструкции2 могут состоять не из одной инструкции, как в предыдущем примере, а из нескольких, разделенных двоеточием (:). Например:

 

If A > 10 Then X = X + 1: Y = Y + X: Z = Z + Y

 

Приведенную выше процедуру Discount1 можно написать и по-другому, например, задействовав ветвь Else инструкции If. Листинг откорректированной таким образом процедуры, теперь уже названной Discount2, приведен далее.

 

Sub Discount2()

Dim dCost As Double ' Стоимость покупки

Dim dDiscount As Double ' Скидка

 

dCost = InputBox("Введите стоимость покупки")

If dCost > 1000 Then dDiscount = dCost * 0.1 _

Else dDiscount = 0#

MsgBox "Скидка равна: " & dDiscount

End Sub

 

В ней значение скидки равное 0 присваивается переменной dDiscount не в начале процедуры априори, а только если сумма покупки не превышает 1000 денежных единиц. При такой записи процедуры длина инструкции If стала чересчур большой, и ее пришлось перенести на следующую строку (для переноса строки используется знак «_»). Если же в каждой ветви инструкции If будет задействовано по несколько инструкций, то вся инструкция If станет совсем нечитабельной. Для этого в VBA имеется блочная форма инструкции If, которая в общем виде выглядит следующим образом:

 

If <условие> Then

<инструкции1>

[Else

[<инструкции2>]]

End If

 

Работает она точно так же, как и приведенный ранее ее однострочный вариант.

Тогда, с учетом блочного синтаксиса инструкции If, процедуру определения скидки можно записать следующим образом, назвав ее при этом уже Discount3, соответственно:

 

Sub Discount3()

Dim dCost As Double ' Стоимость покупки

Dim dDiscount As Double ' Скидка

 

dCost = InputBox("Введите стоимость покупки")

If dCost > 1000 Then

dDiscount = dCost * 0.1 _

Else

dDiscount = 0#

End If

MsgBox "Скидка равна: " & dDiscount

End Sub

 

Хотя процедура Discount3 несколько длиннее своих предыдущих вариантов, зато она более структурирована и зрительно воспринимается гораздо лучше. Однострочный вариант инструкции If следует использовать, если при выполнении (или невыполнении) некоторого условия необходимо исполнить одно простое действие (как в Примере 1), во всех же остальных случаях гораздо эффективнее применять ее блочный вариант.

Язык программирования VBA допускает любую глубину вложенности инструкций If друг в друга. То есть в качестве инструкции в любой его ветви, в свою очередь, может выступать инструкция If. Единственное и естественное возникающее при этом ограничение состоит в том, что вложенная инструкция If должна целиком и полностью помещаться в соответствующей ветви внешней инструкции.

 

1. Запустите Excel и откройте свой файл.

2. Войдите в редактор VBA и запишите процедуру, вычисляющую скидку на покупку в зависимости от стоимости товара по следующей схеме:

a. Если стоимость товара<1000, скидка=0%;

b. Если стоимость товара>=1000 и меньше 5000, скидка=10%;

c. Если стоимость товара>=5000,скидка=20%.

3. Запустите на выполнение процедуру и выполните ее в пошаговом режиме, вводя значения стоимости товара из разных диапазонов. Обратите внимание, какие операторы выполняются в зависимости от вводимого значения.

4. Написать программу начисления налога на прибыль, используя вложенные операторы If, в соответствии со следующей таблицей:

 

Прибыль Ставка налога
[денежная единица] [%]
до 500  
от 500 до 1000  
1000 и более  

 

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

 

 

Поскольку на убытки, или отрицательную прибыль, налог не начисляется, то в программе необходимо предусмотреть обработку такой ситуации. В ней так же необходимо предусмотреть две переменные типа Double для хранения: суммы прибыли и суммы начисляемого налога.

Вложенные инструкции If для проверки трех и более условий визуально становятся мало понятными. Поэтому в VBA была предусмотрена еще одна ее форма:

 

If <условие> Then

[<инструкции1>]

[ElseIf <условиеn> Then

[<инструкцииn>]...

[Else

[<инструкции2>]]

End If

 

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

 

5. Составить блок-схему алгоритма в соответствии со своим вариантом. Ввод координат точки осуществить с экрана; в качестве заголовка окна ввода взять свою фамилию; определить, попадает ли точка в заданную область, и вывести на экран координаты точки и ответ о местоположении точки.

6. Написать и отладить программу разветвляющегося процесса с использованием оператора If.

 

Рассмотрим инструкцию Select Case языка программирования VBA, которая используется в том случае, если нужно выбрать более чем из двух ветвей выполнения процедуры. Синтаксис команды:

 

Select Case Выражение

Case Логич.выражение1

Инструкции1

Case Логич.выражение2

Инструкции2

.

.

.

Case Логич.выражениеN

ИнструкцииN

[Case Else

ИнструкцииElse]

End Select

 

Работает инструкция Select Case следующим образом:

В начале вычисляется значение Выражения, и затем результат этого вычисления с каждым из выражений, хранящихся в каждом Логич.выражении.

Если значения Выражения удовлетворяет Логич.выражению для одного из разделов Case, Инструкции этого раздела выполняются.

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

После выполнения инструкций выбранного раздела Case выполняется следующая за ключевыми словами End Select инструкция.

Если значения Выражения не удовлетворяет Логич.выражению ни для одного из разделов Case, выполняются инструкции ИнструкцииElse.

В отдельных разделах Case может стоять более, чем одна Инструкция, разделенные запятыми. ИнструкцииN имеют следующий синтаксис

 

Инструкция1, Инструкция2, ИнструкцияN

 

Логич.выражения могут быть некоторыми числовыми, строковыми или логическими выражениями, они могут быть представлены рядом значений с использованием оператора To:

 

Выражение1 To Выражение2.

 

Пример использования оператора Select Case:

 

Sub Temp()

Dim temp

Temp=Application.InputBox(_

Prompt:=”Сколькоградусов?”,_

Title:=”Процедура Temp”,_

Type:=1)

Select Case temp

Case Is>40

MsgBox ”Очень горячо!”

Case 37 To 40

MsgBox ”Нормально!”

Case 34 To 36

MsgBox ”Хорошо!”

Case 30 To 33

MsgBox ”Прохладно!”

Case Else

MsgBox ”Подогрейте!”

End Select

End Sub

 

В языке программирования VBA существуют инструкции безусловного перехода, которые используется в том случае, если нужно перейти в какое-либо место процедуры без проверки условий; в основном эта инструкция применяется при обработке ошибок. Синтаксис команды:

 

GoTo Line,

 

где Line - метка или номер строки в той же процедуре, что и инструкция GoTo. Метка Line имеет следующий синтаксис:

 

name:

 

Здесь name:- это идентификатор VBA.

 

7. Написать и отладить программу разветвляющегося процесса с использованием оператора Select Case в соответствии со своим вариантом.

8. Показать результаты работы преподавателю.

 

 

ВАРИАНТЫ ЗАДАНИЙ

 

Попадает ли точка А в круг радиусом R=3 c центром в точке C(3, 4)?

Попадает ли точка А в круг радиусом R=5 c центром в точке C(6, 8)?

Попадает ли точка А в прямоугольник и ?

Попадает ли точка А в полосу ?

Попадает ли точка А в полосу ?

Превышает ли расстояние от точки А до точки В 5 единиц. Координаты точки В ввести с клавиатуры?

Лежит ли точка А на прямой ?

Принадлежит ли точка А графику функции ?

Попадает ли точка А в прямоугольник и ?

Попадает ли точка А в один из кругов , C1(1, 1); , C2(5, 4)?

Попадает ли точка А в первый квадрант?

Попадает ли точка А во второй квадрант?

Попадает ли точка А в третий квадрант?

Попадает ли точка А в четвертый квадрант?

Попадает ли точка А в область положительных значений Х?

Попадает ли точка А в область отрицательных значений Х?

Попадает ли точка А в область неположительных значений оси у?

Попадает ли точка А в область неотрицательных значений оси у?

Попадает ли точка А в точку пересечения графиков функций и ?

Принадлежит ли точка А графику функции ?

Попадает ли точка А в область пересечения кругов С1: R1=3, центр в точке C1(0, 0) и C2: R2=5, C2(5, 0)?

Попадает ли точка А в прямоугольник и ?

Попадает ли точка А на окружность ?

Попадает ли точка А на окружность ?

Превышает ли расстояние от т. А до оси Х 6 единиц?

Превышает ли расстояние от т. А до оси У 7 единиц?

Превышает ли расстояние от т. А до начала координат 5 единиц?

Попадает ли точка А на одну из окружностей: и ?

Превышает ли расстояние от т. А до прямой шесть единиц?

Превышает ли расстояние от т. А до прямой десять единиц?

 

Контрольные вопросы.

Что такое условный и безусловный переход?

Какие вы знаете инструкции условного перехода?

Какие вы знаете инструкции безусловного перехода?

Когда и почему можно использовать инструкцию Select Case?

Сколько предложений Case может включать инструкция Select Case?

Как определить ветвь инструкции для выполнения, если в инструкции Select Case нет ни одного предложения Case? Куда в этом случае переходит выполнение внутри инструкции Select Case?







Дата добавления: 2015-10-02; просмотров: 873. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Механизм действия гормонов а) Цитозольный механизм действия гормонов. По цитозольному механизму действуют гормоны 1 группы...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия