Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Редактор VBA. Условный оператор. Подпрограммы

Поиск

Цель работы:

· изучить основы компьютерной логики, познакомиться с алгоритмом типа «ветвление» и условным оператором If…Then…Else;

· получить навыки использования вспомогательных подпрограмм, их описания и вызова на выполнение.

 

Теоретическая часть

Как правило, алгоритмы обработки информации и реализующие их программы содержат проверки каких-либо условий, от которых зависит последующее действие. Для этого предназначен условный оператор, который имеет вид (см.рис. 56).

If условие Then инструкция 1 Else инструкция2

(если) (истинно) (то) (иначе)

Рис.56. Общий формат условного оператора

Этим оператором реализуется алгоритм типа «ветвление». Работает условный оператор следующим образом:

1. Проверяется условие

2. Если условие истинно, то исполняется инструкция 1

3. Если условие ложно, то исполняется инструкция 2

В инструкциях, помещаемых в ветви Then или Else, обычно фигурируют выполняемые операторы. Ветвь Else может отсутствовать. В качестве условия может быть использовано любое логическое выражение со знаком > (больше), < (меньше), = (равно), > = (больше либо равно), < = (меньше либо равно), <> (не равно).

В каждой ветви может быть как один оператор, так и блок операторов, разделённых при линейной (строчной) записи двоеточием. Приведенный выше формат является форматом строчного условного оператора. Его удобно использовать в случае, когда в каждой ветви помещается по одному оператору. Иначе будет необходимо организовать перенос (через пробел знаком «подчерк») единой логически строки записи на вторую или несколько строк текста программы.

При помещении в ветви нескольких операторов удобнее (и это придаёт больше наглядности) использовать блочный условный оператор, имеющий следующий формат:

If условие Then

блок инструкций

Else

блок инструкций

End If

Начало (заголовок) блочного условного оператора (служебные слова If, Then и условие между ними), а также служебное слово Else и обозначение конца оператора End If помещаются в отдельные строки.

При включении в блок инструкций нескольких операторов можно размещать их по два или три и более, если они короткие, в одной или нескольких строках, разделяя внутри строки двоеточиями. Для наглядности связи рекомендуется помещать слово Else под соответствующим словом Then.

Допускается вложенность условного оператора в другой условный оператор (в любую ветвь внешнего условного оператора; обычно – в ветвь Else), когда требуется дополнительное ветвление.

Оборудование, инструменты и приборы

ПЭВМ, программное обеспечение Microsoft Office (Excel 2007).

Варианты заданий

Составить алгоритм, эскиз окна формы и программный код для решения задач, приведенных в таблице 3.2.

Таблица 3.2

Варианты заданий

№ варианта Задание
   
1. Ввести два целых числа a, b. Меньшее из них заменить полусуммой, а большее – удвоенным произведением. Вывести новые значения a, b.
2. Решить задачу преобразования двух неравных чисел: большее число уменьшить на 2, а меньшее утроить и вывести результат. В окне формы разместить надписи и поля для ввода исходных данных и вывода результатов.
3. Решить квадратное уравнение.
4. Ввести четыре вещественных числа a, b, c, d. Если а £ b £ c £ d, то каждое число заменить наибольшим из них; если a > b > c > d, то числа оставить без изменения; в противном случае все числа заменить их квадратами. Вывести новые значения a, b, c, d.

 

 

Продолжение табл. 3.2

 

   
5. Выяснить, пересекаются ли две прямые, заданные на плоскости уравнениями вида y=kx+b. Если пересекаются, то вывести координаты точки пересечения, иначе вывести сообщение об отсутствии пересечения.
6. Выяснить, лежат или нет на одной прямой три точки, заданные своими координатами x, y. В результате вывести соответствующее сообщение.
7. Ввести координаты x1, y1 и x2, y2 двух точек на плоскости. Определить принадлежат ли эти точки одной четверти.
8. Ввести координаты x1, y1 и x2, y2 левой верхней и правой нижней вершин прямоугольника, а также координаты x, y произвольной точки. Проверить правильность ввода координат прямоугольника. При неверном вводе этих координат вывести сообщение, а при верном – определить принадлежность точки данному прямоугольнику.
9. Ввести три числа a, b, c. Определить принадлежит ли максимальное из них интервалу [1,3] и вывести соответствующее сообщение.
10. Определить правильность даты, введенной с клавиатуры (число от 1 до 31, месяц – от 1 до 12). если введены некорректны данные, то сообщить об этом
11. Составить программу, определяющую результат гадания на ромашке «любит – не любит», взяв за исходное данное количество лепестков N.
12. Ввести три положительные вещественные числа a, b, c. Определить, существует ли треугольник с длинами сторон a, b, c. Если нет, то вывести соответствующее сообщение, если да, то определить форму треугольника (остро-, прямо- или тупоугольный) и вывести соответствующее сообщение.
13. Написать программу, распознающую по длинам сторон среди всех треугольников прямоугольные. Если таковых нет, то вычислить величину угла С.
14. Ввести четыре положительные целые числа a, b, c, d. Определить, может ли прямоугольник со сторонами a, b уместиться внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон прямоугольников была параллельна или перпендикулярна другим сторонам. Вывести соответствующее сообщение.
15. Даны три числа a, b, c. Определить, какое из них равно d. Если ни одно не равно d, то найти max (d-a, d-b, d-c)
16. Заданы размеры А, В прямоугольного отверстия и размеры X, Y, Z кирпича. Определить, пройдет ли кирпич через отверстие.

Продолжение табл. 3.2

 

   
17. Определить номер четверти координатной плоскости, в которой расположен треугольник, образованный прямой, заданной уравнением вида y=kx+b, и осями координат. Вывести соответствующее сообщение.
18. Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.
19. Написать программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной.
20. Ввести два целых числа а, b. Если значение а делится нацело на 3 и значение и делится нацело на 5, то вывести полусумму квадратов этих чисел, иначе вывести сумму.
21. В небоскребе N этажей и всего один подъезд; на каждом этаже по 3 квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры М. На какой этаж должен доставить лифт пассажира?
22. Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.
23. Составить программный модуль для определения, является ли треугольник со сторонами a, b, c равнобедренным.
24. Составить алгоритм и программный модуль для нахождения произведения четных чисел от 50 до 100.
25. Составить алгоритм и программный модуль для нахождения произведения нечетных чисел от 41 до 89.

 

 

Продолжение табл. 3.2

 

   
26. Разработайте программу "Угадайка", которая будет загадывать число, а пользователь пытаться его угадать. Создайте следующую форму: А) щелкните по кнопке Ответ и в процедуре обработки события создайте код, который сравнивает введенное пользователем число в Text1.text с любым фиксированным числом, например, 5. Если числа равны, то в Text2.text должно быть выведено "Угадал", в противном случае "Не угадал". Б) Запустите программу, введите исходные данные, щелкните по кнопке Ответ, протестируйте программу, остановите, исправьте при необходимости ошибки в программе. В) Доработайте программу так, чтобы она в Text2.text сообщала "Больше", "Меньше", либо "Горячо", если разница между числами меньше 10, и холодно, если 10 и более.

 

Порядок выполнения работы

1. Открыть в бригадной папке созданный на предыдущей лабораторной работе Excel – документ с именем “max2_my” и подготовить для текущей работы копию этого документа по команде Файл/Сохранить как, задав для копии имя “max3_my”.

2. Запустить редактор VBA. Результат: открытие окон и формы ранее созданного проекта.

3. Оставить имя проекта «Проба_If», но изменить свойством “Caption” заголовок формы на «Выбор максимума из трех чисел».

4. Дополнить форму надписью «Ввод с» (с – латинская буква) и текстовым полем для ввода значения переменной «с» с именем «Text4». Задать в этом поле, например, значение 15.

Примечание. Если в форме свободного места для дополнительных объектов нет, то следует сместить ранее созданные объекты, возможно уменьшив их размеры.

5. Дополнить текст подпрограммы, используя возможность копирования фрагментов текста:

- в инструкцию Dim вставить описание переменной «с» и изменить в этой инструкции и далее по тексту имя результата на “max3”;

- вставить строку с оператором присваивания переменной «с» числового значения из поля “Text4”;

- вставить строку со вторым условным оператором без ветви “Else” для переприсваивания переменной “max3” значения переменной «с», если выполняется соответствующее условие.

Примечание. Для рационального использования поля редактирования с текстом подпрограммы (чтобы весь текст был виден в этом поле) можно воспользоваться следующими двумя возможностями размещения текста:

1) логически единую, но длинную строку инструкции Dim (или другой инструкции внутри оператора), выходящую, возможно, за правую границу поля, можно разместить на две строки (и более), обозначив перенос; для этого нужно после запятой (разделителя списка описаний переменных) или по тексту другой инструкции вставить пробел, знак подчерк, а далее, нажав клавишу Enter, перенести остаток текста строки на следующую строку поля (для наглядности рекомендуется сместить перенесенный текст вправо под аналогичные элементы списка описаний переменных);

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

6. Сохранить вновь созданный проект, выполнить заложенную в него программу и в конце закрыть файл.

7. Скопировать в бригадную папку:

- в вычислительном центре из папки Х:\Программы каф. ПМ и САПР\Наумов\VBA,

- на кафедре ПМ и САПР из папки Х:\Naumov\VBA файлы max2.xls и max3_func.xls.

8. Открыть сначала файл max2.xls, а в нем – программную реализацию проекта вывода максимального из 2-х чисел с помощью структурированной программы, состоящей из главной (командной, вызывающей) подпрограммы с именем «CmdРешение» и вспомогательной (вызываемой, содержащей описание выполняемых действий) подпрограммы с именем «Анализ».

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

¢Вспомогательная подпрограмма (описание)

Private Sub Анализ (Byval x As Integer, └┘–

Byval y As Integer, └┘–

ByRef r As Integer)

If x>y Then

r = x

Else

If x<y Then ¢Вложенный оператор

r = y

Else ¢Блок из 2-х операторов

МsgBox “числа равные”: r = x

End If

End If

End Sub

¢Главная подпрограмма

Private Sub CmdРешение_ Click ()

Dim a As Integer, b As Integer, └┘–

maximum2 As Integer

a = CInt (Text1.Text)

b = CInt (Text2.Text)

Анализ a, b, maximum2 ¢Вызов вспомогательной подпрограммы

Text3.Text= maximum2

End Sub

Пояснения.

В главной подпрограмме помещен вызов вспомогательной подпрограммы с именем «Анализ». После имени следует список фактических параметров: «а» и «b» – входные данные, «maximum2» – результат анализа.

В описании вспомогательной подпрограммы помещен блочный условный оператор. В этой подпрограмме фигурируют формальные параметры, соответствующие фактическим параметрам по месту в списке и типу.

Перед именем каждого формального параметра стоит одно из двух ключевых (служебных) слов: ByVal или ByRef. Эти слова определяют статус параметра, а именно условия передачи параметра в подпрограмму и из нее.

Слово ByVal задает передачу по значению (By Value – посредством значения). Параметры такого статуса являются только входными. На их месте при вызове подпрограммы на выполнение в качестве фактических параметров кроме переменных, имеющих присвоенные им значения, могут стоять непосредственно числа и даже арифметические выражения. Значение переменной, переданной по значению, остается в вызывающей подпрограмме неизменным даже если оно изменялось внутри вызываемой (вспомогательной) подпрограммы.

Слово ByRef задает передачу по ссылке (By Reference – посредством ссылки на адрес в памяти ЭВМ, где прописана (размещена) переменная, являющаяся соответствующим фактическим параметром подпрограммы. Параметры такого статуса являются, как правило, выходными, но через них в вызываемую подпрограмму можно передавать и исходные данные (текущие значения, изменяемые внутри этой подпрограммы, например, значения времени, изменяемые с заданным шагом при динамических расчетах).

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

В блочном условном операторе блоки операторов, помещенные в его ветвях, размещаются по тексту обязательно в отдельных строках (отдельно от строк, где размещены условия со служебным словом Then и служебное слово Else). В блоке операторов в одной строке могут размещаться несколько операторов, разделенных двоеточием. Блочный оператор завершается служебными словами End If, размещаемыми в отдельной строке.

Для наглядности соответствующие служебные слова If и End If, Then и Else рекомендуется размещать одно под другим, а вложенные блоки смещать по строкам вправо, выравнивая их по левому краю.

10. Выполнить программу из файла max2.xls для любых трех пар неравных чисел.

Далее закрыть этот файл и открыть скопированный ранее в бригадную папку файл max3.func.xls. В этом файле реализован проект вывода максимального из 3-х чисел с помощью структурированной программы, состоящей из главной подпрограммы и вспомогательной подпрограммы – функции с именем “max2”. Эта функция задает выбор максимума из 2-х чисел.

11. Ознакомиться с содержанием программы из файла max3_func.xls:



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 533; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.193.85 (0.011 с.)