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

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

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






Лабораторная работа №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; просмотров: 863. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

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

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

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