Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по программированию.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.01 Mб
Скачать
  • Напишите процедуру, которая будет выводить сообщение «Привет от Excel!». Окно сообщения должно иметь заголовок «Сообщение Excel».

    Ответьте на контрольные вопросы в тетради.

    1. Почему постепенно пришлось перейти от простой записи макросов к языку программирования?

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

    3. Где Excel хранит записанные макросы?

    4. Как в программе Excel выполняется записанный ранее макрос?

    5. Как вы запускаете программу записи макросов?

    6. Где вы сохраните макрос, если вы хотите, чтобы он был доступен для всех открытых книг Excel в любом сеансе работы?

    7. Какие макросы вы увидите в списке диалогового окна Макрос?

    8. Что такое модуль VBA?

    9. Для чего вставляются комментарии в текст макроса? Должны ли вы вставлять комментарии в процедуры, которые вы пишете самостоятельно?

    10. Что такое ключевое слово VBA?

    11. Какие необходимые элементы содержит процедура?

    12. Что такое объявление процедуры?

    13. Что такое тело процедуры и где оно расположено?

    14. Почему текст записанных макросов имеет отступы? Зачем делать отступы в текстах программ?

    15. Для чего предназначена процедура MsgBox?

    16. Что такое аргумент? Что такое список аргументов?

    Лабораторная работа №2. Линейный вычислительный процесс.

    I. Использование явного описания переменных:

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

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

    Sub Hello ()

    Dim HelloMsg 'текст сообщения для функции MsgBox

    HelloMsg = "Hello, World!"

    MsgBox HelloMsg, , "Приветствие"

    End Sub

    1. Запустите на выполнение процедуру Hello. Изменился ли результат выполнения процедуры?

    2. Напишите программу, которая будет запрашивать значение переменной с экрана, считывать это значение и выводить его опять на экран вместе с именем переменной.

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

    1. Создайте новую книгу Excel, перейдите в редактор VBA, и создайте новый модуль.

    2. В него введите процедуру приведенную ниже, а также константу и переменную, объявленные на уровне модуля. Эта процедура вычисляет площадь круга, спрашивая у пользователя, для какого радиуса следует вычислять площадь.

    Const Pi As Single = 3.14 'приблизительное значение числа Pi.

    Dim CircleArea As Single 'сюда запишем вычисленную площадь

    Sub Calc_CircleArea()

    Const BoxTitle = "Площадь круга"

    Dim Radius As Single, Temp As String

    Temp = InputBox("Введите радиус круга", BoxTitle)

    Radius = CSng(Temp)

    CircleArea = Pi * (Radius * Radius)

    MsgBox CircleArea, , BoxTitle

    End Sub

    1. Отладьте программу. Откройте окно наблюдения переменных и выполните программу в пошаговом режиме. Составьте в тетради таблицу изменений значений переменных (табл. 1), а также таблицу тестирования как минимум для пяти наборов тестовых значений (табл.2):

    Таблица1. Изменение значений переменных в пошаговом режиме.

    Шаг №

    CircleArea

    Radius

    Temp

    1

    Таблица 2. Таблица тестирования работы программы:

    № набора

    Radius

    CircleArea (вычисленный программно)

    CircleArea* (вычисленный иначе: Excel или калькулятор)

    Открыть окно наблюдения значений переменных в редакторе VBA можно так: выделить переменную, значение которой вы хотите наблюдать, затем выбрать DebugQuick Watch. Чтобы добавить для наблюдения еще одну переменную, нужно выделить ее и войти DebugAdd Watch.Запустите программу и выполните ее в пошаговом режиме.

    Для выполнения программы в пошаговом режиме используйте меню DebugStep Into (или горячую клавишу F8), предварительно установив курсор на первыю строку вашей программы.

    III. Создание индивидуальных программ.

    1. Разработайте алгоритм (в тетради) и создайте в VBA программы вычисления функции и текстовой задачи согласно вашему варианту. Значения всех переменных запрашивать у пользователя.

    2. Запустите каждую программу на выполнение. Отладьте ее.

    3. Выполните в пошаговом режиме программы и заполните в тетради таблицы изменения переменных и тестирования программы для каждой программы.

    Варианты вычисления функций.

    Функция

    Функция

    Функция

    1

    ;

    2

    ;

    3

    ;

    4

    ;

    5

    ;

    6

    ;

    7

    ;

    8

    ;

    9

    ;

    10

    ;

    11

    ;

    12

    ;

    13

    ;

    14

    ;

    15

    ;

    16

    ;

    17

    ;

    18

    ;

    19

    ;

    20

    ;

    21

    ;

    22

    ;

    23

    ;

    24

    ;

    25

    ;

    26

    ;

    27

    ;

    28

    ;

    29

    ;

    30

    ;

    Варианты текстовых задач:

    1. Из градусов в радианы. Угол задан в градусах, минутах и секундах. Найти его величину в радианах. Тестирование: рекомендуется проверить работоспособность программы для углов, больших развернутого, а так же для отрицательных углов.

    2. Из радианов в градусы. Решить задачу, обратную предыдущей, т.е. перевести заданную величину угла из радианной меры в градусную.

    3. Из градусов в десятичное представление угла. Угол задан в градусах, минутах и секундах. Найти его величину в в десятичных значениях. Тестирование: рекомендуется проверить работоспособность программы для углов, больших развернутого, а так же для отрицательных углов.

    4. Из десятичного представления в градусы. Решить задачу, обратную предыдущей, т.е. перевести заданную величину угла из десятичной меры в градусную.

    5. Из дюймов в метры. Длина отрезка задана в дюймах(1 дюйм=2.54 см). Перевести значение длины в метрическую систему, т.е. выразить ее в метрах, сантиметрах и миллиметрах. Так, например, 21 дюйм = 0м 53см 3,4мм.

    6. Из метров в дюймы. Решить задачу, обратную предыдущей, т.е. перевести значение длины из метрическую системы и англо-американскую (таблицу коэффициентов найти самостоятельно).

    7. Временной интервал. Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах(в пределах одних суток).Найти продолжительность этого промежутка в тех же единицах измерения.

    8. Такси. В такси одновременно сели 3 пассажира. Когда вышел первый пассажир, на счетчике было р1 рублей; когда вышел второй – р2 рублей. Сколько должен был заплатить каждый пассажир, если по окончании поездки счетчик показал р3 рублей? Плата за посадку составляет р0 рублей. Тестирование: общая сумма оплаты пассажирами должна совпадать с показанием счетчика по окончании поездки. Рассмотрим крайние ситуации. По справедливости, если все 3 пассажира вышли одновременно, они должны заплатить по (р0 + р3)/3 руб. Если же первый и второй пассажиры «передумали ехать», они платят по р0/3 руб., а оставшаяся сумма ложится на счет третьего пассажира.

    9. Коммерция. Комерсант, имея стартовый капитал k рублей, занялся торговлей, которая ежемесячно увеличивает капитал на р%. Через сколько лет он накопит сумму s, достаточную для покупки собственного магазина?

    10. Селекция. Селекционер вывел новый сорт зерновой культуры и снял с опытной делянки k кг семян. Посеяв 1кг семян, можно за сезон собрать p кг семян. Через сколько лет селекционер сможет засеять новой культурой поле площадью s га, если норма высева n кг\га?

    11. Кубическое уравнение. Заданы 3 корня кубического уравнения: х1, х2, х3.Найти коэффициенты этого уравнения.

    12. Квадратное уравнение. Найти корни квадратного уравнения, заданного своими коэффициентами, с положительным дискриминантом; подстановкой в уравнение убедиться в погрешности вычислений.

    13. Коплексное число. Заданы действительная и мнимая части комплексного числа z = x + iy. Преобразовать его в тригонометрическую форму и напечатать в виде выражения: z = r(cosφ + isinφ). Для справки: r = ; φ=arctg .

    14. Экстремальные точки маятника. Заданы координаты точки подвески математического маятника А (x0,y0,z0) и координаты одной из точек его наивысшего подъема В(x1,y1,z1).Найти координаты самой низкой точки траектории и другой наивысшей точки подъема.

    15. Пересекающиеся прямые. Заданы уравнения двух пересекающихся прямых на плоскости: y = k1х+b1; y = k2 х +b2. Найти тангенс угла между ними, используя формулу: tgφ = .

    16. Пересекающиеся прямые 2. Заданы уравнения двух пересекающихся прямых на плоскости: y = k1 х +b1; y = k2 х +b2. Найти координаты точки их пересечения.

    17. Русские неметрические единицы длины: 1верста = 500саженей; 1сажень = 3аршина; 1аршин = 16вершков; 1вершок = 44,45мм. Длина некоторого отрезка составляет р метров. Перевести ее в русскую неметрическую систему.

    18. «Косой» квадрат. У квадрата АВСД на плоскости известны координаты двух противоположных вершин - точек А и С. Найти координаты точек В и Д. Примечание: расположение квадрата произвольно; его стороны не обязательно параллельны координатным осям.

    19. Стороны – по высоте. В равнобедренном прямоугольном треугольнике известна высота h, опущенная на гипотенузу. Найти стороны треугольника.

    20. Длина высоты. Треугольник АВС задан длинами своих сторон. Найти длину высоты, опущенной из вершины А. Экстремальные тесты: сумма двух сторон равна третей; одна из сторон равна 0.

    21. Вершина параболы. Найти координаты вершины параболы: y = ax2+bx+c.

    22. Приближение sinx. Функция y = sin x на отрезке хорошо апроксимируется разложением: y = x-x3 /6+x5 /120 . Для заданного значения аргумента х вычислить у по этой формуле и сравнить с точным значением, вычисленным с помощью стандартной функции sin.

    23. Среднее арифметическое. Даны три числа. Найти среднее арифметическое кубов этихчисел.

    24. Среднее геометрическое. Даны три числа. Найти среднее геометрическое модулей кубов этих чисел.

    25. Расстояние и наклон. Вычислить расстояние между двумя точками с заданными координатами, а также угол наклона отрезка между этими двумя точками к оси OX.

    26. Расстояние и наклон2. Вычислить расстояние между двумя точками с заданными координатами, а также угол наклона отрезка между этими двумя точками к оси OY.

    27. Периметр треугольника. Треугольник задан координатами своих вершин. Вычислить его периметр.

    28. Площадь треугольника. Треугольник задан координатами своих вершин. Вычислить его площадь.

    29. Периметр ромба. Ромб задан координатами своих вершин. Вычислить его периметр.

    30. Площадь ромба. Ромб задан координатами своих вершин. Вычислить его площадь.

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

    1. Сколько числовых типов данных насчитывается в VBA?

    2. Какая разница между числами типа Integer и Single? Между Integer и Long?

    3. Что такое символы определения типа?

    4. Что означает выражение определить переменную неявно? А что такое явно?

    5. Каковы правила в языке VBA для имен переменных? Чем еще следует руково­дствоваться при выборе имен переменных?

    6. Какие преимущества дает явное описание переменных?

    7. Почему в процедурах лучше использовать поименованные константы?

    8. Для чего служит функция InputBox?

    9. Какие аргументы функции InputBox являются обязательными?

    10. Какого типа значение возвращает функция InputBox?

    11. Как можно воспользоваться результатом выражения? Должны ли вы использо­вать результат выражения?

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

      3*5-7

      -6

      4-7 + 26 /10

      3.07

      312 /47+16-2

      5.114754

    13. Исходя из здравого смысла, решите, какая из перечисленных ниже величин должна быть переменной, а какая — константой. Выберите для них имена и напишите определение типа.

    А

    Вычисленное количество столбцов в листе Excel

    Б

    Объем продаж для подразделения компании

    В

    Предполагаемое количество респондентов в опросе

    Г

    Вычисленная площадь поверхности цилиндра

    Д

    Коэффициент для перевода дюймов в сантиметры

    Е

    Рентабельность операции, выраженная в процентах

    Лабораторная работа № 3. Разветвляющийся процесс.

    Разветвляющиеся алгоритмы

    1. Заданы 3 числа: a, b, c.Определить, могут ли они быть сторонами треугольника, и если да, то определить его тип: равносторонний, равнобедренный, разносторонний.

    Замечание. Условие существования треугольника:a≤b+c; b≤a+c; c≤a+b.

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

    1. Треугольник задан длинами своих сторон: a, b, c.Определить является ли он треугольником, прямоугольным или остроугольным.

    Замечание: достаточно, используя теорему косинусов, найти знаки косинусов внутренних углов треугольника, не вычисляя самих углов(они могут быть нулевыми или развернутыми).

    1. Треугольник задан координатами своих вершин на плоскости: А (ха, уа), В(xb, yb), C(xc, yc). Определить является ли он прямо-, остро-, тупоугольным.

    Замечание: не следует отбрасывать экстремальные случаи, когда вершины треугольника совпадают или лежат на одной прямой. Например треугольник с нулевой стороной обладает свойством прямоугольного и имеет 2 прямых угла!

    1. Числа a, b, c тогда и только тогда являются сторонами треугольника, когда существуют такие положительные x, y, z, что

    1. Четырехугольник ABCD задан координатами своих вершин на плоскости: А (ха, уа), В(xb, yb), C(xc, yc), D(xd, yd). Проверить является ли он выпуклым.

    Замечание. Есть несколько способов проверки выпуклости: анализ линейных неравенств, задаваемых сторонами; разбиение четырехугольника на треугольники со сравнением сумм их площадей и др.

    1. Четырехугольник ABCD задан координатами своих вершин на плоскости: А (ха, уа), В(xb, yb), C(xc, yc), D(xd, yd). Определить тип четырехугольника: прямоугольник, параллелограмм, трапеция, произвольный треугольник. Учесть погрешность вычислений.

    Замечание. Для устранения дополнительных источников погрешности рекомендуется использовать аппарат векторной алгебры: коллинеарность, равенство и ортогональность векторов – сторон треугольника.

    1. Треугольник и круги. Лежит ли заданный на плоскости треугольник АВС в области пересечения заданных кругов:(x-a1)2+(y-b1)2≤r12; (x-a2)2+(y-b2)2≤r22?

    2. Кирпич. Пройдет ли кирпич со сторонами a, b, c сквозь прямоугольное отверстие со сторонами r и s? Стороны отверстия должны быть параллельны граням кирпича.

    3. Шар и ромб. Может ли шар радиуса r пройти через ромбообразное отверстие с диагоналями p и q?

    4. Можно ли коробку размером a упаковать в посылку размером ? «Углом» укладывать нельзя.

    5. Можно ли из круглой заготовки радиуса r вырезать 2 прямоугольные пластинки с размерами и ?

    6. Можно ли на прямоугольном участке настройки размером a на b м разместить 2 дома размером в плане p на q и r на s м? Дома можно располагать только параллельно сторонам участка.

    7. Проверить, лежит ли окружность: (x-a1)2+(y-b1)2=r12 целиком внутри окружности

    (x-a2)2+(y-b2)2=r22 или наоборот.

    14. Лежит ли точка М(x m, ym) внутри треугольника заданного координатами своих вершин А (ха, уа), В(xb, yb), C(xc, yc) на плоскости?

    15. Два отрезка на плоскости заданы координатами свои концов. Определить имеют ли эти отрезки общие точки.

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

    16. Среди заданных целых чисел k, l, m найти пары кратных.

    17. Как известно, число делится на три тогда и только тогда, когда сумма его цифр делится на3. Проверить этот признак на примере заданного трехзначного числа.

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

    18. Заданы координаты вершин треугольника АВС на плоскости. Вывести их в порядке обхода по часовой стрелке (для проверки достаточно рассмотреть знаки внутренних углов).

    19. Путник двигался t1 часов со скоростью v1, затем t2 часов – со скоростью v2 и t3 часов – со скоростью v3. За какое время он одолел первую половину пути, прежде чем запланировал привал?

    20. Можно ехать на такси со скоростью v1 км/ч и оплатой р1 р./км либо идти пешком со скоростью v2 км/ч бесплатно. Как с наименьшими затратами преодолеть путь s за время t, если это возможно? Каковы эти затраты?

    Тестирование. Рекомендуется рассмотреть «запредельные» случаи: когда времени слишком мало, чтобы успеть даже на такси, либо слишком много, так что и пешком можно с запасом успеть до отхода поезда.

    21. Имеются три раствора полезного вещества с концентрациями р1,р2 и р3 каждый и стоимостью s1,s2,s3 соответственно. Можно ли смешать их так, чтобы получить раствор с заданной концентрацией р наименьшей стоимости?

    Указание. Пусть α1, α2, α3 – долевые содержания растворов в смеси. Тогда для получения заданной концентрации р необходимо: р1 α12 α23 α3=р.

    Кроме того, нужно учесть условие «комплектности» смеси: α1+ α2+ α3 =1; α1≥0; α2≥0; α3≥0.

    При этих условиях необходимо найти наименьшее значение линейной функции: s= s1α1+ s2α2+ s3α3 . С учетом ограничений задача сводиться к минимизации линейной функции одного переменного на отрезке, однако искомые выражения и условия получаются достаточно громоздкими. Можно показать, что в решении будут участвовать не более двух растворов. Тогда достаточно среди вариантов:

    а) α1=0; б)α2=0; в)α3=0.

    выбрать оптимальный, и затем провести необходимые расчеты.

    22. Суточный рацион коровы составляет u кг сена, v кг силоса и w кг комбикорма. В хозяйстве, содержащем стадо из k голов, осталось s центнеров сена, t тонн силоса и f мешков комбикорма по 50 кг. Сколько еще дней хозяйство сможет кормить коров по полному рациону? Какой из кормов кончится раньше других?

    23. В Алтайском госуниверситете принято, что старшая цифра номера студенческой группы означает номер факультета, средняя – последнюю цифру года поступления, младшая – порядковый номер группы на курсе. Продолжительность обучения не более 6 лет. Дан номер группы студента АГУ и текущий год. Напечатать в каком году он поступил и на каком факультете учится. Например, гр. 432, 1996г.- факультет математический, год поступления 1993. Для справки приведены номера факультетов:

    1. исторический

    2. экономический

    3. юридический

    4. математический

    5. физический

    6. химический

    7. биологический

    8. филологический

    9. географический

    10. социологический.

    Предусмотреть невозможные ситуации, например, гр. 521, год 2001.

    24. Банк предлагает 3 вида срочных вкладов: на 3 месяца под р1%, на 6 месяцев под р2% и на год под р3%. Какой из вкладов наиболее выгоден для вкладчика?

    25. Для заданного 0≤n≤200, рассматриваемого как возраст человека, вывести фразу вида: «Мне 21 год», «Мне 32 года», «Мне 12 лет».

    26. Найти расстояние между двумя произвольно заданными на плоскости отрезками. Определение расстояния между множествами геометрических точек можно найти, например, во введении к теме 8.

    27. Из пункта А в пункт В выехал велосипедист со скоростью v0 км/ч. Одновременно на встречу ему из пункта В двинулся «автостопом» другой путник. S1м он двигался со скоростью v1м/ч, s2м со скоростью v0км/ч, s3 – v3км/ч. Через сколько часов после старта и в какой точке путники встретились?

    28. Из круга, какого наименьшего радиуса можно вырезать треугольник со сторонами a, b, c.

    Указание. Пусть с большая из сторон треугольника. Если угол С – тупой, сторона совпадает с диаметром круга, и его радиус: r = c/2. В противном случае имеем описанную окружность:

    R = ,

    где р = (a+b+c)/2 – полупериметр треугольника.

    Лабораторная работа № 4. Циклический процесс.

    I. Повторение фиксированное число раз : циклы Fоr.

    1. Рассмотрите примеры цикла For.. Next с возрастающим счетчиком и с убывающим счетчиком:

    Пример 1. (Возрастающий счетчик). Эта процедура получает от пользователя два числа, в заданном ими диапазоне суммирует все целые числа, а затем выводит на экран полученное значение. Если, например, вы запустили эту программу и ввели значения 4 и 8, то будут просуммированы числа 4, 5, 6, 7 и 8, а на экране будет отображено число 30.

    Sub Demo_ForNext()

    Dim k As Integer

    Dim uStart As String

    Dim uEnd As String

    Dim uSum As Long

    uStart = InputBox("Введите натуральное число:")

    uEnd = InputBox("Введите второе натуральное число")

    u Sum = 0

    For k = uStart To uEnd

    uSum = uSum + k

    Next k

    MsgBox "Сумма натурального ряда от" & uStart & _

    " до" & uEnd & " равна: " & uSum

    End Sub

    Пример 2. (Убывающий счетчик).Этот пример делает то же самое, но счетчик цикла работает с убыванием.

    Sub Demo_ForNextDown()

    Dim k As Integer

    Dim uStart As Integer

    Dim uEnd As Integer

    Dim uSum As Long

    uStart = InputBox("Введите натуральное число:")

    uEnd = InputBox("Введите второе натуральное число")

    u Sum = 0

    For k = uStart To uEnd Step -1

    uSum = uSum + k

    Next k

    MsgBox "Сумма натурального ряда от" & uStart & _

    " до" & uEnd & " равна: " & uSum

    End Sub

    1. Введите оба примера, найдите отличия между ними.

    2. Запустите их на выполнение, в качестве первого числа введите 3, а второго 15. Вычислите и запишите результат каждого примера.

    3. Сделайте тоже самое, но числа введите наоборот, то есть сначала введите 15 а затем 3. Поясните полученные результаты в тетради.

    4. Постройте в тетради алгоритм для одного из примеров.

    II. Повторение неопределенное число раз: циклы Do. Циклы с проверкой условия перед выполнением.

    1. Рассмотрите пример цикла Do While. Обратите внимание на использование функции Mod.

    Эта процедура считает введенные пользователем нечетные числа, прекращая роботу тогда, когда таких чисел станет 10. Затем введенные числа выводятся на экран.

    Sub Count_OddNums()

    Const ocTitle = "Подсчет нечетных чисел"

    Dim OddCount As Integer ' счетчик нечетных чисел

    Dim OddStr As String ' строка для отображения нечетных чисел

    Dim Num ' переменная типа Variant для ввода

    OddStr = " " ' Строка для чисел пока что пуста

    OddCount = 0 ' Счетчик чисел пока что равен нулю

    Do While OddCount < 10

    Num = InputBox("", ocTitle)

    If (Num Mod 2) <> 0 Then

    OddCount = OddCount + 1

    OddStr = OddStr & Num & " "

    End If

    Loop

    MsgBox "Вы ввели такие нечетные числа:" & Chr(13) _

    & OddStr, , ocTitle

    End Sub

    1. Введите пример. Выполните его.

    2. Как изменится процедура, если подсчитывать все числа кратные 3? а если нечетные? Ответ запишите в тетрадь.

    3. Разработайте процедуру для ввода пяти чисел кратных 3. Введите ее и протестируйте, заполняя таблицы тестирования в тетради. Постройте в тетради алгоритм.

    1. Рассмотрите пример цикла Do While. Обратите внимание на использование функции WeekDay. Найдите в справке описание функции WeekDay и законспектируйте в тетрадь ее аргументы.

    Эта шуточная процедура предлагает вводить вам дату в формате ХХ.ХХ.ХХ (например 18.03.03) до тех пор, пока вы не введете дату какого-нибудь воскресенья.

    Sub Stop_AtEvenNums()

    Const evTitle = "В ожидании воскресенья..."

    Dim EventFlag As Boolean ' Признак для выхода из цикла

    Dim Num ' Переменная для даты, описана как тип Variant

    EventFlag = False ' Признак цикла пока равен ЛОЖЬ

    D o Until EventFlag = True

    Num = InputBox("Введите дату:", evTitle)

    If Weekday(Num, vbMonday) = 7 Then

    MsgBox "Вы ввели дату воскресенья!!!", , "Запомните эту дату! Ура!"

    EventFlag = True

    Else

    MsgBox " Жаль, но отдохнуть не удастся!", , "Не надо печалиться"

    End If

    Loop

    MsgBox "Хорошо повеселиться!!!", , "Мы рады за Вас!!!"

    End Sub

    1. Введите пример. Выполните его.

    2. Добавьте в него еще одну проверку для субботы, с комментарием типа «Ура, это уже завтра!!!» и также выходом из цикла.

    III. Повторение неопределенное число раз: циклы Do. Циклы с проверкой условия после выполнения.

    1. Рассмотрите пример цикла Do While. Обратите внимание на генератор случайных чисел. Найдите его в справке и законспектируйте описание.

    В процедуре приведенной ниже нужно угадать случайно сгенерированное число от 1 до 10. Цикл будет выводить окно, до тех пор, пока вы не угадаете «загаданное». В конце цикла, вы узнаете, сколько же попыток вам понадобилось.

    Sub Угадайка()

    Dim EventFlag As Boolean

    Dim g As Integer

    EventFlag = False

    Counter = 0 ’ счетчик ваших попыток

    Randomize ’ запуск генератора случайных чисел

    c = Round(10 * Rnd + 1, 0) ’ генерация случайного числа от 1 до 10

    Do

    g = InputBox("Угадайте число от 1 до 10")

    If g = c Then

    EventFlag = True

    MsgBox "Ты угадал с " & Counter & " раза"

    End If

    Counter = Counter + 1

    Loop Until EventFlag

    End Sub

    1. Введите и отладьте пример.

    2. Измените программу так, чтобы она выводила комментарий об удачливости игрока, в зависимости от числа попыток, например при попытках больше 5 — «Что то день сегодня не очень!», а меньше «Ну ты и везунчик!».

    IV. Создание индивидуальных программ.

    1. Разработайте алгоритм (в тетради) и создайте в VBA программу вычисления заданного ряда согласно вашему варианту.

    2. Запустите программу на выполнение. Отладьте ее.

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

    Варианты заданий для вычисления рядов.

    Дано натуральное n. Вычислить:

    1.

    2n

    16.

    2.

    17.

    3.

    18.

    4.

    19.

    5.

    -

    20.

    -

    6.

    -

    21.

    Дано: действительное a, натуральное n. Вычислить:

    7.

    22.

    (

    8.

    +

    23.

    Дано :натуральное n, действительное х.Вычислить:

    9.

    sin x+sin2x+…+sinnx,

    24.

    sin x+sin x2+…+sin xn

    10.

    (x-2)(x-4)…(x-2n)

    25.

    11.

    26.

    12.

    27.

    Вычислить:

    13.

    28.

    14.

    29.

    15.

    30

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

    Дополнить вопросами.

    Лабораторная работа № 5. Создание интерфейса.

    I. Создание простейшей пользовательской формы.

    1. Создайте новую книгу. Запустите редактор VBA, и вставить UserForm, как показано на рисунке.

    2 . У Вас появится диалоговое окно (форма), панель ниструментов, и окно свойств Properties. В окне свойств измените свойство Caption, которое позволяет нам изменить заголовок окна. Поменяйте его на осмысленное имя, например, Моя форма.

    3 . Разместите на форме кнопки. Выбирете инструмент кнопка (Button) и щелкните на вашей форме дважды. Одной кнопке присвойте имя Test, а второй "Выход", вот так.

    4 . Добавьте к кнопкам код. Двойной шелчок на кнопке и вы попадете в код вызываемый при нажатии кнопки. Добавьте для кнопки Test.

    Private Sub CommandButton1_Click()

    MsgBox ("кнопка Test нажата")

    End Sub

    И для второй:

    Private Sub CommandButton2_Click()

    Unload Me ‘выгружает форму из памяти

    End Sub

    Создайте макрос с именем FormsRun.

    Sub FormsRun()

    UserForm1.Show

    End Sub

    5. Запустите макрос. Появится диалоговое окно. Нажмите кнопку Test, появится сообщение, нажмите кнопку Выход, окно диалога закроется.

    II. Создание программы «Простой калькулятор».

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

    Программа выбирает математическую операцию на основе значений свойств Value переключателей. Если такое свойство равно True, то выполняется соответствующая операция. При делении целесообразно убедиться, что второе из чисел не равно 0, иначе стоит выдать предупреждение небрежному пользователю, например такое:

    1. Создайте новый проект в редакторе VBA, создайте в нем новую форму и новый модуль.

    2. Разместите на кнопке необходимые элементы управления.

    3. Поработайте со значениями свойств элементов управления:

      • Измените значения свойств фрмы: Caption — «Простий калькулятор»; BorderStyle — 1.

      • Измените значения свойств Name текстовых полей соответственно на txtOne, txtTwo, txtRez. В свойстве Text удалите его значения.

      • Измените свойства Caption для надписей на «Первое число», «Второе число», «Результат».

      • Измените значения свойств Name для переключателей соотвественно на optAdd, optSub, optMulti, optDiv, а также значения свойств Caption на «Сложение», «Вычитание», «Умножение», «Деление».

      • Измените значения свйоства Name для кнопки на cmdOperation и значение свойства Caption на «Выполнить».

    4. Введите программный код для кнопки:

    Процедура обработки события Click для кнопки cmdOperation.

    Private Sub cmdOperation Click()

    Dim x As Double 'Объявление переменной для первого числа

    Dim у As Double 'Объявление переменной для второго числа

    Dim z As Double 'Объявление переменной для результата

    х = CDbl(txtOne.Text)

    у = CDbl(txtTwo.Text)

    'Выполнение нужной операции, выбранной на основе анализа

    значений Value переключателей

    If optAdd.Value = True Then z = x + у

    If optSub.Value = True Then z = x - у

    If optMulti.Value = True Then z = x * у

    В случае деления проверить, не является ли второе число нулем

    If optDiv.Value = True Then

    If у <> 0 Then

    z = x / у

    Else

    MsgBox "На нуль делить нельзя, vbCritical, "Ошибка"

    End If

    End If

    txtRez.Text = CStr(z)

    End Sub

    1. Создайте макрос с именем SimpleCalc.

    Sub SimpleCalc ()

    UserForm1.Show

    End Sub

    1. Запустите форму на выполнение. Отладьте ее и протестируйте, заполняя в тетради таблицу тестирования программы.

    IV. Индивидуальное задание.

    1. Разработайте интерфейс и создайте в VBA программу для одной из программ выполненных вами в рамках индивидуальных заданий предыдущих работ (по выбору). Предусмотрите хотя бы одну проверку и предупреждение об ошибке.

    2. Запустите форму на выполнение. Отладьте ее и протестируйте, заполняя в тетради таблицу тестирования программы.

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

    1. Понятие формы, свойства и методы форм.

    2. Элемент управления текстовое поле, его свойства.

    3. Элемент управления командная кнопка, его свойства и события с нею связанные.

    4. Элемент управления переключатель, его свойства.

    5. Элемент управления надпись, его свойства.