Справочник от Автор24
Поделись лекцией за скидку на Автор24

Предопределенные типы переменных. Инструкции управления процессом выполнения программы

  • 👀 271 просмотр
  • 📌 242 загрузки
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Предопределенные типы переменных. Инструкции управления процессом выполнения программы» doc
Лекция 4 ПРЕДОПРЕДЕЛЕННЫЕ ТИПЫ ПЕРЕМЕННЫХ Инструкции управления процессом выполнения программы Очень часто в процессе выполнения программы необходимо анализировать состояние тех или иных объектов или переменных и передавать управление отдельным фрагментам программы. Для этих целей служат инструкции управления. В предыдущей лекции рассмотрен пример кода, который позволяет выводить массив в строку или столбец на основе анализа состояния переключателей. Прежде всего, рассмотрим инструкции (операторы), позволяющие изменять ход выполнения программы. 1. Инструкции условного перехода Условные инструкции проверяют является ли значение условия истинным (True) или ложным (False) и в зависимости от результата передают управление на выполнение одной из ветвей программы. Обычно условие представляет собой логическое выражение, которое содержит оператор сравнения для сопоставления одной части выражения с другой. Могут применяться несколько видов инструкций управления: If... Then... Else Select Case Go to. 1.1. Инструкция If... Then... Else Условный оператор If...Then...Else выполняет определённые инструкции или наборы инструкций в зависимости от значения заданных условий. Может применяться несколько форм этой инструкции. Различают простой и блочный операторы IF. Строчный оператор используется в том случае, когда при разветвлении программы необходимо на каждой ветке выполнить по одной инструкции, а блочный необходим тогда, когда инструкций несколько. В простейшем виде инструкция If имеет следующий синтаксис (строчный опертор If), т.е. правилj записи: If условие Then [инструкция1] [Else [инструкция.2] ]. Обязательный параметр условие представляет собой логическое выражение, которое возвращает значение (истина) True или (ложь) False. Если условие равно True, то выполняется инструкция1, если условие равно False, то инструкция2. Далее выполняется, если иное не предусмотрено программой в инструкциях 1 или 2, инструкция, следующая по порядку за строкой с инструкцией IF...Then...Else. Часть оператора IF, а именно ключевое слово ELSE и следующие за ним инструкции можно опустить, тогда при условии равном False выполняется оператор, следующий за строкой с инструкцией IF. В этом случае инструкция IF выглядит так: IF условие THEN [инструкция]  Примечание. В квадратных скобках обозначены те элементы инструкции, которые не являются обязательными для записи. Пример: IF Weather = "дождь" Then MsgBox "Взять зонт" Else MsgBox "He брать зонт" MsgBox "Идти на работу" В этом примере при условии, когда переменная Weather принимает значение «дождь», возвращается значение True и выполняется инструкция после ключевого слова THEN, т.е. на экран выводится сообщение о том, что надо взять зонт. Затем выполняется инструкция, следующая за инструкцией IF — на экран выводится указание «идти на работу». В случае отсутствия дождя на экран выводятся одно за другим сообщения «Не брать зонт» и «Идти на работу». Инструкция If...Then...Else выполняет определенные инструкции или наборы инструкций в зависимости от значения условия. Допускаются многократно вложенные инструкции If...Then...Else, имеющие столько уровней вложения, сколько потребуется. Однако для облегчения чтения программы вместо многократно вложенных инструкций If...Then...Else иногда предпочтительнее использовать инструкцию Select Case. В реальных случаях часто требуется обработка нескольких инструкций при выполнении условия. В этих случаях предпочтительнее блочный вид инструкции IF, синтаксис которой выглядит следующим образом: IF условие Then [Блок инструкций] [ Else [ Блок инструкций ] End IF Блочная структура If удобнее, так как каждый блок инструкций может включать в себя произвольное число утверждений. Кроме того, допускается вложение структур If. Пример программы с блочной структурой If, здесь один оператор If вложен в другой (важно соблюдать, чтобы не было взаимного пересечения): If D=0 Then MsgBox "Дискриминант равен 0, один корень уравнения" X=В/2*А Else If D<0 Then 'вложенный оператор MsgBox "Дискриминант меньше '0, действительных корней уравнения нет" Else MsgBox "Дискриминант больше 0, корней уравнения два" X(1)=(-B+SQRT(D))/2*A X(2) = (-B-SQRT(D) )/2*A End if 'конечная строка вложенного оператора End if Эту же задачу можно решить с помощью инструкции Elself, синтаксис которой записывается следующим образом: IF условие Then [Блок инструкций] [Elself условие-1 Then [Блок инструкций Elself для условия 1]] [Elself условие~n Then [Блок инструкций Elself для условия n]] [Else [Блок инструкций Else для главного условия] End IF Предыдущий пример в этом случае может бать записан так: If D=0 Then MsgBox "Дискриминант равен 0, один корень уравнения" Х=-В/2*А Elself D<0 Then MsgBox "Дискриминант меньше 0, действительных корней уравнения нет" Else MsgBox "Дискриминант больше 0, корней уравнения два" X(1)=(-B+SQRT(D))/2*A X(2)=(-B-SQRT(D))/2*А End if При этом каждая последующая проверка Elself выполняется в том случае, когда предыдущая закончена с результатом False (ложь).  Примечание. 1. В блочной структуре инструкции в строке после ключевого слова Then не пишется ничего, иначе интерпретатор распознает структуру If как строчную и воспримет остальные строки как ошибочные. 2. В блочной структуре каждой инструкции If должна соответствовать своя инструкция End If. Инструкция If...Then...Else используется также для задания двух блоков исполняемых инструкций: один блок выполняется, если условие имеет значение True, а другой - если оно имеет значение False. Sub AlertUser(value as Long) If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True Else AlertLabel.Forecolor = vbBlack AlertLabel.Font.Bold = False AlertLabel.Font.Italic = False End If End Sub 2. Логические выражения и операторы В условных операторах критерием передачи управления служит условие. Для конструирования условий могут применяться логические операторы и операции сравнения. Логическое выражение имеет тип Boolean и может принимать одно из двух значений: True (Истина) или False (Ложь). Логические выражения можно присваивать логическим переменным, имеющим такой же тип. В VBA используются следующие логические операции: OR Логическое сложение (ИЛИ). AND Логическое сложение (И). NOT Логическое отрицание (НЕ). XOR Исключающее ИЛИ EQV Логическая эквивалентность IMP Логическая импликация 2.1. Оператор Or Выполняет операцию логического ИЛИ (сложения) для двух выражений. Синтаксис результат = выражение1 Or выражение2 Оператор Or использует следующие операнды: Элемент Описание результат Обязательный; любая числовая переменная. выражение1 Обязательный; любое выражение. выражение2 Обязательный; любое выражение. Если одно или оба выражения истинны (имеют значение True), результат также имеет значение True. Возвращаемые оператором значения представлены в следующей таблице: выражение1 выражение2 результат True True True True False True True Null True False True True False False False False Null Null Null True True Null False Null Null Null Null  Пустое значение (Null) — значение, указывающее, что переменная не содержит допустимого значения. Значение Null может являться результатом операции присваивания переменной значения Null в явном виде или результатом любой операции с участием выражения, содержащего значение Null. Оператор Or выполняет также поразрядное сравнение двух числовых выражений и присваивает соответствующему разряду в переменной результат следующее значение: Разряд в выражение1 Разряд в выражение2 Результат 1 1 1 1 1 1 1 Пример. Dim A, B, C, D, MyCheck as A = 10: B = 8: C = 6: D = Null ' присвоение значений MyCheck = A > B Or B > C ' Returns True MyCheck = B > A Or B > C ' Returns True MyCheck = A > B Or B > D ' Returns True MyCheck = B > D Or B > A ' Returns Null. MyCheck = A Or B ' Returns 10 (bitwise comparison). 2.2. Оператор And Возвращает результат конъюнкции (логического И) для двух выражений. Синтаксис результат = выражение1 And выражение2 Оператор And использует следующие операнды: Элемент Описание результат Обязательный; любая числовая переменная. выражение1 Обязательный; любое выражение. выражение2 Обязательный; любое выражение. Если оба выражения имеют значение True, результат имеет значение True. Если хотя бы одно из выражений имеет значение False, результат имеет значение False. Возвращаемые оператором значения представлены в следующей таблице: выражение1 выражение2 результат True True True True False False True Null Null False True False False False False False Null False Null True Null Null False False Null Null Null Оператор And выполняет также поразрядное сравнение двух числовых выражений и присваивает соответствующему разряду в переменной результат следующее значение: Разряд в выражение1 Разряд в выражение2 Результат 1 1 1 1 1 Пример демонстрирует использование оператора And для выполнения операции конъюнкции (логического умножения) двух выражений. Dim A, B, C, D, MyCheck A = 10: B = 8: C = 6: D = Null ' Инициализирует переменные. MyCheck = A > B And B > C ' Возвращает True. MyCheck = B > A And B > C ' Возвращает False. MyCheck = A > B And B > D ' Возвращает Null. MyCheck = A And B ' Возвращает 8 (поразрядное сравнение). 2.3. Оператор Not Выполняет над выражением операцию логического отрицания. Синтаксис результат = Not выражение Оператор Not использует следующие операнды: Элемент Описание результат Обязательный; любая числовая переменная. выражение Обязательный; любое выражение. Возвращаемые оператором значения представлены в следующей таблице: выражение результат True False False True Null Null Оператор Not выполняет также поразрядное изменение значений каждого разряда переменной и присваивает соответствующему разряду в переменной результат следующее значение: Разряд в выражение результат 1 1 Пример демонстрирует использование оператора Not для выполнения операции логического отрицания для одного выражения. Dim A, B, C, D, MyCheck A = 10: B = 8: C = 6: D = Null ' Инициализирует переменные. MyCheck = Not(A > B) ' Возвращает False. MyCheck = Not(B > A) ' Возвращает True. MyCheck = Not(C > D) ' Возвращает Null. MyCheck = Not A ' Возвращает -11 (поразрядное сравнение). 2.4. Операторы сравнения Используются для сравнения двух выражений. Синтаксис результат = выражение1 операторСравнения выражение2 результат = объект1 Is объект2 результат = строка Like образец Операторы сравнения используют следующие операнды: Элемент Описание результат Обязательный; любая числовая переменная. выражение Обязательный; любое выражение. операторСравнения Обязательный; любой оператор сравнения. объект Обязательный; любое имя объекта. строка Обязательный; любое строковое выражение. образец Обязательный; любое строковое выражение или диапазон символов. В языке Visual Basic применяются следующие операции отношения Символ Название Результат = Равно Результат TRUE, если значения операндов равны <> Не равно Результат TRUE, если значения операндов не равны < Меньше Результат TRUE, если левый операнд меньше правого > Больше Результат TRUE, если левый операнд больше правого <= Меньше или равно Результат TRUE, если левый операнд меньше или равен, правому >= Больше или равно Результат TRUE, если левый операнд больше или равен правому  Примечание. Операторы Is и Like функционально отличаются от операторов сравнения, перечисленных в таблице. Ниже приведены примеры сравнения. Dim MyResult, Var1, Var2 MyResult = (45 < 35) ' Возвращает False. MyResult = (45 = 45) ' Возвращает True. MyResult = (4 <> 3) ' Возвращает True. MyResult = ("5" > "4") ' Возвращает True. Var1 = "5": Var2 = 4 ' Инициализирует переменные. MyResult = (Var1 > Var2) ' Возвращает True. Var1 = 5: Var2 = Empty MyResult = (Var1 > Var2) ' Возвращает True. Var1 = 0: Var2 = Empty MyResult = (Var1 = Var2) ' Возвращает True. 3. Применение управляющих операторов Рассмотрим следующую задачу. Задача 1. Сформировать ведомость начисления зарплаты. Для этого необходимо: а) составить шапку ведомости; б) в столбец ФИО ввести фамилию и инициалы; в) в столбец Оклад ввести оклады; г) в столбец Под_налог вывести подоходный налог согласно следующей формуле: (1) д) в столбец К выдаче ввести окончательную сумму, получаемую сотрудником как разность значений столбцов Оклад и Под_налог; е) вывести итоговую сумму по столбцу К выдаче. Для решения задачи необходимо выполнить следующие шаги: 1) сформировать ведомость (таблицу) с указанием адресов ее размещения в электронной таблице; 2) вывести шапку таблицы; 3) заполнить столбцы № пп и ФИО; 4) разработать модуль ввода данных в столбец Оклад; 5) опираясь на значения столбца Оклад, согласно (1) заполнить ячейки столбца Под_налог; 6) рассчитать значения столбца К выдаче; 7) определить итоговую сумму по столбцу К выдаче; 8) связать разработанный модуль с кнопкой. Пример реализации шага 1 показан на рис. 1. Рис. 1. Исходная таблица для вычисления налогов Текст модуля имеет вид: Sub зарплата() 'лист IF_задача1 Dim i As Integer, СуммаВыдыче As Single 'заполнение ячеек столбца Оклад For i = 1 To 5 фио = Cells(3 + i - 1, 2) ' фио переменная типа Variat - текстовая as1$ = "Оклад" as2$ = "Введите оклад для " + фио Cells(3 + i - 1, 3) = InputBox(as2$, as1$) Next i 'определение подох. налога For i = 1 To 5 If (Cells(3 + i - 1, 3) >= 5000) And (Cells(3 + i - 1, 3) <= 50000) Then Cells(3 + i - 1, 4) = Cells(3 + i - 1, 3) * 0.13 ElseIf Cells(3 + i - 1, 3) <= 100000 Then Cells(3 + i - 1, 4) = Cells(3 + i - 1, 3) * 0.15 Else Cells(3 + i - 1, 4) = Cells(3 + i - 1, 3) * 0.2 End If Next i 'определение К выдаче For i = 1 To 5 Cells(3 + i - 1, 5) = Cells(3 + i - 1, 3) - Cells(3 + i - 1, 4) Next i 'Итоговая сумма к выдаче СуммаВыдыче = 0 For i = 1 To 5 СуммаВыдыче = СуммаВыдыче + Cells(3 + i - 1, 5) Next i Cells(8, 5) = СуммаВыдыче Cells(9, 5) = [SUM(e3:e7)] End Sub Результат применения модуля показан на рис. 2. Рис. 2. Итоговая таблица после применения макроса Зарплата Комментарии к макросу. 1. Переменная ФИО (тип Variant) служит для вывода в окне InputBox текущего значения ячейки столбца ФИО. Как это сделать можно изучить на примере пременной as2$. 2. Вводимые значения сразу присваиваются текущей ячейке столбца Оклад. Все это реализовано первым циклом FOR..NEXT.  Примечание. Для ввода данных можно было использовать массив, но это бы намного усложнило код макроса. 3. Второй и третий циклы FOR..NEXT реализует вычисление налогов и определение суммы к выдаче. 4. Последний цикл служит для вычисления итоговой суммы к выдаче. 5. Последняя строка кода показывает, как используя внутренние функции Excel можно получить итоговую сумму к выдаче.  Примечание. Последнюю строку можно было записать в более привычном виде Cells(9, 5) = “=SUM(e3:e7)”. Макрос Зарплата можно было модифицировать следующим образом: ◦ осуществить ввод данных в столбец ФИО. Эта часть реализуется аналогичного тому, как это делается с помощью первого цикла FOR..NEXT; ◦ вычислять другие итоговые значения с учетом других видов налогов. 4. Табулирование сложных функций Рассмотрим следующую задачу. Задача 2. Задан интервал изменения x[a; b]. Необходимо вычислить значения функции y=f(x), причем функция f(x) на различных интервалах изменения х может иметь различную структуру. Пусть y = f(x) имеет вид Известны числа с=3.2, а=0, b=5, a1=1, a2=1.75, a3=3.5. x изменяется с шагом 0.25. Необходимо: задать адрес начальной ячейки для вывода значений у в столбец; на основе адрес начальной ячейки у определить адрес начальной ячейки для вывода х; найти значения функции у в узлах x; результаты x, y вывести в электронную таблицу; подсчитать количество шагов по x и построить график искомой зависимости; для запуска макроса использовать кнопку. Для решения этой задачи воспользуемся циклом While..Wend, так как количество шагов неизвестно. Листинг макроса Табуляция имеет вид Sub Табуляция() 'лист Задача2 ' описание переменных с=3.2, а=0, b=5, a1=1, a2=1.75, a3=3.5 Dim a, a1, a2, a3, b, c, y, x, pi, h As Single Dim i% 'кол-во шагов Dim Nry%, Ncy%, Ncx% ' начальные адреса ячеек для х, у pi = 3.14 a = 0: a1 = 1: a2 = 1.75: a3 = 3.5: b = 5: c = 3.2: h = 0.25 x = a: i = 1 'начальная ячейка для вывода значений у в столбец заг$ = "Вывод функции: начальная ячейка" сообщение$ = "Введите номер строки" Nry = InputBox(сообщение$, заг$) сообщение$ = "Введите номер столбца" Ncy = InputBox(сообщение$, заг$) 'начальная ячейка для вывода значений x в столбец If Ncy = 1 Then Ncx = Ncy + 1 Else Ncx = Ncy - 1 End If 'табуляция у While x <= b If (a <= x And x <= a1) Or (a3 <= x And x <= b) Then Cells(Nry + i - 1, Ncy) = Abs(x - a) ElseIf a1 < x And x <= a2 Then Cells(Nry + i - 1, Ncy) = Sqr(Abs(Sin(0.2 * pi * x))) ElseIf a2 < x And x < a3 Then Cells(Nry + i - 1, Ncy) = 1 / (x ^ 2 + c) End If Cells(Nry + i - 1, Ncx) = x x = x + h i = i + 1 Wend Cells(Nry + i, Ncx) = "кол-во шагов = " + Str(i - 1) End Sub Рис. 3. Результат работы макроса Табуляция Комментарии к коду. 1. Начальный адрес для у определяется путем применения функции InputBox. 2. Начальный адрес для х определяется по следующему алгоритму: если индекс столбца для у больше 1, то Ncx = Ncy  1 (столбец х располагается слева от столбца у). В противном случае, столбец х располагается справа от столбца у. 3. Используется цикл While..Wend для табуляции функции у. Сначала реализуется логика вычисления у и занесение полученного значения в текущую ячейку для данного значения х. Затем в соответствующую ячейку заносится значение х. Далее изменяется значение х и вычисляется новый относительный индекс столбца i. Цикл работает, пока является истинным условие x <= b. 4. Определяется адрес ячейки для вывода сообщения о количестве шагов. Для этого использована строковая функция Str для формирования сообщения из пояснительного текста "кол-во шагов = " и числового значения i, которое надо преобразовать в стринговую величину. График функции формируется с помощью Мастера диаграмм. Пример работы модуля показан на рис. 3.
«Предопределенные типы переменных. Инструкции управления процессом выполнения программы» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot