ЛР4. Лабораторная работа 4. Ветвления Цель и задачи работы функции языка программирования vba. Теоретическое обоснование
Скачать 249.97 Kb.
|
Лабораторная работа №4. Ветвления Цель и задачи работы: функции языка программирования VBA. Теоретическое обоснование Как и во всех других языках программирования, в VBA имеются различные управляющие конструкции, позволяющие изменять порядок выполнения программы При отсутствии управляющих конструкций операторы программы выполняются последовательно, начиная с первого и кончая последним Хотя в некоторых самых простых случаях этого и бывает достаточно, обычно все-таки требуется изменять порядок выполнения операторов при выполнении определенных условий, либо пропуская выполнение некоторых операторов, либо, наоборот, многократно повторяя их. Оказывается, для реализации любых алгоритмов достаточно иметь только два вида управляющих конструкций: ветвления и циклы Управляющие конструкции ветвления позволяют проверить некоторое условие, а затем, в зависимости от результатов этой проверки, выполнить ту или иную группу операторов Для организации ветвлений в VBA используются различные формы оператора ветвления if и оператор выбора Select Case Краткая форма оператора ветвления if может иметь как однострочную, так и блочную форму. Простейшая, краткая форма оператора if используется для проверки одного условия, а затем, в зависимости от результата проверки, либо выполнения, либо пропуска одного оператора или блока из нескольких операторов If <условие> Then <блокОператоров1> [Else <блокОператоров2>] End If В качестве условия можно использовать логическое выражение, возвращающее значение True (ИСТИНА) или False (ЛОЖЬ). Если условие истинно, выполняется первый блок операторов, заключенный между ключевыми словами Then и Else, а в противном случае – второй блок, заключенный между ключевыми словами Else и End If. Операции отношения = равно <> неравно > Больше < Меньше >= Больше или равно <= Меньше или равно Например: a+b>6, Sin(x)<=0, f*h<>k+d Оператор if может иметь краткую и полную форму. В краткой форме, если условие возвращает значение False, оператор или блок операторов, заключенных между ключевыми словами Then и End if, составляющих тело краткого оператора ветвления, не будет выполняться. Пример краткой формы оператора if: If a<0 Then a=-a End If Полная форма оператора if используется в тех случаях, когда имеются два различных блока операторов, и по результатам проверки условия нужно выполнить один из них. Пример полной формы оператора if: If x=0 Then x=1 Else z=y/x End If Для того чтобы текст вашей процедуры был понятным и удобным для восприятия, рекомендуется делать отступы для групп операторов так, как это указано при описании их синтаксиса. В VBA предусмотрено удобное средство изменения отступов – нажатие на клавишу <Таb> увеличивает отступ вправо, нажатие комбинации клавиш Использование оператора if делает функции, позволяющие избежать некоторых ошибок. Например, использование функции ИНИЦИАЛЫ предполагает, что исходная строка обязательно содержит фамилию, имя и отчество. А если отчество отсутствует, то возникнет ошибка. Поэтому в коде программы надо проверить значение переменной n2_pr – положение второго пробела. Если эта переменная равна нулю, то отчество в строке отсутствует. Функция будет иметь вид: Задания к лабораторной работе Задание 1 Набрать и отладить код функции ИНИЦИАЛЫ. Еще один пример необходимости использования оператора If. Задание 2 По году определить день недели для 1 января данного года. Существует стандартная функция для определения номера для недели. Но эта функция дана для американского стандарта, в котором первым днем недели является воскресенье. Для русого стандарта, если день недели не воскресенье, то из него достаточно вычесть единицу. Но тогда воскресенье будет нулевым днем. Здесь требуется использовать оператор If. Функция будет иметь вид: Иногда приходится делать выбор одного из целой группы альтернативных действий на основе проверки нескольких различных условий. Для этого можно использовать цепочку операторов ветвления If...Then...ElseIf. If <условие1> Then <блокОператоров1> Elself <условие2> Then <блокОператоров2> Elself <условие3> Then <блокОператоров3> Elself <условиеN> Then <блокОператоровN> Else <блокОператоров_Еlsе> End If Пример использования блочного оператора if: If n=1 Then текст=”год” ElseIf n<5 Then текст =”года” Else текст =”лет” End If В данном примере для числа n, обозначающем срок обучения от 1 до 6, определяется текст комментария. Задание 3 Написать функцию определяющую по заданному весу (в килограммах) и росту (в метрах) ИНДЕКС МАССЫ ТЕЛА (Индекс Кетле) по формуле: вест/(рост*рост) и вывести комментарии согласно таблице ИМТ Комментарии <18,5 Излишняя худоба >=18,5 и <=22,9 Нормальный вес >=23 и <=27,4 Избыточный вес >27,5 Ожирение Данная функция будет иметь вид: Набрать и отладить данную функцию. Ветвления. Сложные условия Сложные условия состоят из нескольких простых условий, соединенных логическими операциями. Существуют следующие логические операции: not Операция отрицания And Логическое «и» Or Логическое «или» Если два условия соединены логическим «и» (and), то условие выполняется если оба условия выполняются одновременно. Пример: a>6 and a<20 – условие выполняется если a находится в интервале от 6 до 20 (например a = 10). Если условия соединены логическим «или» (or), то условие выполняется, если выполняется хотя бы одно условие. Пример: x<0 or b>10 – если х отрицательный, то независимо от того, чему равен b, условие выполняется. Логические операции, как и арифметические имеют приоритет. Высший приоритет у операции not, следующий приоритет имеет операция and и самый низкий приоритет у операции or. Использование сложных условий повышает наглядность операции и сокращает количество операторов If. Задание 4 Создать функцию СЕЗОН, которая по дате выводит название сезона. Набрать и отладить код функции. Задание 5 Создать функцию A: Если X или У отрицательные вычислить A по формуле A=X * Y, Иначе 1, если X>Y A= 0, если X=Y ` - 1, если X Если программа вывела результат, это еще не значит, что она работает правильно. Для проверки необходимо протестировать программа, задавая значения X и Y, чтобы они попали на каждую ветку нашей развилки и вычислить значения A для этих Xи Y. X Y A -2 4 -6 3 4 -1 5 5 0 6 3 1 Задания для самостоятельной работы Вариант 1 1. Написать функцию вставляющую подстроку в строку с заданной позицией. Проверить, не выходит ли заданная позиция за пределы строки. 2. В зависимости от возраста и пола выдать приветствие: Здравствуй девочка, мальчик , девушка, юноша, женщина, мужчина. Вариант 2 1. Дана гипотенуза и катет, найти второй катет. Проверить, может ли существовать этот треугольник. 2. В зависимости от возраста ребенка выдать сообщение: младенец, ясельник, детсадовец, школьник. Вариант 3 1. Найти количество недель между датами. Проверить, чтобы первая дата была меньше второй, иначе переставить их местами. 2. В зависимости от введенной суммы и валюты: доллар, евро, фунт, иена, перевести сумму в рубли. Вариант 4 1. Написать функцию, удаляющую из строки заданную подстроку. Проверить существует в стоке данная подстрока. 2. В зависимости от номера месяца вывести: зима, лето, осень, весна. Вариант 5 1. Дана строка с информацией о фирме содержащей расчетный счет. Расчетный счет начинается со знака №. Выделить расчетный счет фирмы. Проверить присутствует ли в адресе расчетный счет. 2. В зависимости от часа вывести время суток: утро, день, вечер, ночь. Вариант 6 1. Дано вещественное число получить из него цену в виде целая часть руб. дробная часть из двух цифр коп. Проверить положительное ли данное число. 2. В зависимости от возраста ребѐнка вывести лет, года, год. Вариант 7 1. Дана строка с ценой число руб. число коп. Преобразовать ее в вещественное число. Проверить, есть ли в данной строке руб. или коп. 2. Задумать число от 1 до 10 и запросить ответ. В зависимости от введенного числа вывести больше, меньше или равно. Вариант 8 1. Дана дата в виде строки в американском формате месяц/день/год. Переделать ее в русский формат день.месяц.год. Проверить правильно ли заданы месяц и день. 2. Ввести год, месяц, день. В зависимости от даты вывести: прошлое, настоящее будущее. Вариант 9 1. Из строки Фамилия Имя Отчество дата рождения в виде день.месяц.год получить: Фамилия Имя Отчество возраст. Проверить правильно ли заданы месяц и день. 2. Ввести рост человека и пол. В зависимости от роста и пола вывести низкий, средний и высокий. Вариант 10 Даны a и b. Если a и b попадают в область а < 0 и b < 5, то вычислить значение y по формуле y = а 2 + b +10 , иначе x + 2, если 2x < -1 y = x, если –1 ≤ 2x ≤ 1 x 2 + 1 , если 2x > 1 для произвольного x. Вариант 11 Даны a и b. Если a и b попадают в область а < 5 и b > 0, то вычислить значение y по формуле y = а +5b – 10 , иначе z + x – 1, если z ≤ 5 y = z 2 + 1, если z > 5 и x ≥ 1 x – z , если z > 5 и x < 1 где z = 4x + 3 для произвольного x. Вариант 12 Даны a и b. Если a и b попадают в область а > 5 и b < –3, то вычислить значение y по формуле y = а + 2b 2 + 3 , иначе x, если x < 0 y = 5, если x = 0 x + 1 , если x > 0 для произвольного x. Вариант 13 Даны a и b. Если a и b попадают в область а < 0 и b > 0, то вычислить значение y по формуле y = а 2 +2 b , иначе 2x 2 – 5x – 6, если x > 5 y = x /10 - 3, если x = 5 2x – x 2 + 10 , если x < 5 для произвольного x. Вариант 14 Даны a и b. Если a и b попадают в область а > 0 и b < 0, то вычислить значение y по формуле y = а – b , иначе x, если 2x < - 1 y = x 2 , если –1 ≤ 2x ≤ 0 x + 1 , если 2x > 0 для произвольного x. Вариант 15 Даны a и b. Если a и b попадают в область а > 3 и b < 10, то вычислить значение y по формуле y = 2а 2 + 3b – 1 , иначе z + 4, если z 2 – 2z – 3 < 0 y = 0, если z 2 – 2z – 3 = 0 z 2 – 1, если z 2 – 2z – 3 > 0 где z = 2x + 1 для произвольного x. x + 1 , если x > 1 для произвольного x. Вариант 11 Даны a и b. Если a и b попадают в область а < 0 и b < 0, то вычислить значение y по формуле y = (а + b) 2 – 2 , иначе c 2 , если c + 1 > 1 y = c + 1, если –1 ≤ c + 1 ≤ 1 x + 1 , если c + 1 > –1 где c = 2х – 6 для произвольного х. 0>20>5>0>Вопросы к лабораторной работе 1. Опишите функцию вставляющую подстроку в строку с заданной позицией. 2. Если дана гипотенуза и катет, как найти второй катет? 3. Как в зависимости от возраста ребенка осуществить вывод сообщения: младенец, ясельник, детсадовец, школьник? |