- •Е.В. Наумов, е.В. Демьянова,
- •Наумов Евгений Владимирович,
- •Этапы подготовки задач к решению на компьютере. Понятие алгоритма, его свойства и способы описния
- •Виды алгоритмов
- •Лабораторная работа №1
- •Задания
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Задания
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Задания
- •Порядок выполнения работы
- •Содержание отчета
- •Задания
- •Порядок выполнения работы
- •Содержание отчета
- •Программная реализация метода бисекции
- •Порядок выполнения работы
- •Содержание отчета
- •Задания
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Задания
- •Порядок выполнения работы
- •Для пошагового выполнения программы на этапе суммирования значений элементов массива необходимо выполнить следующие действия:
- •Содержание отчета
- •Контрольные вопросы
- •Литература
Порядок выполнения работы
Открыть в бригадной папке созданный в предыдущей лабораторной работе Excel-документ с именем «max2_my» и подготовить для текущей работы копию этого документа по команде «Файл/Сохранить как», задав для копии имя «max3_my».
Запустить редактор VBA. Результат: открытие окна и формы ранее созданного проекта.
Оставить имя проекта «Проба_If», но изменить свойством «Caption» заголовок формы на «Выбор максимума из трех чисел».
Дополнить форму надписью «Ввод с» (с – латинская буква) и текстовым полем для ввода значения переменной «с» с именем «Text4». Задать в этом поле, например, значение 15.
Примечание. Если в форме нет свободного места для дополнительных объектов, то следует сместить ранее созданные объекты, возможно, уменьшив их размеры.
Дополнить текст подпрограммы, используя возможность копирования фрагментов текста:
в инструкцию Dim вставить описание переменной «с» и изменить в этой инструкции и далее по тексту имя результата на «max3»;
вставить строку с оператором присваивания переменной «с» числового значения из поля «Text4»;
вставить строку со вторым условным оператором без ветви «Else» для переприсваивания переменной «max3» значения переменной «с», если выполняется соответствующее условие.
Примечание. Для рационального использования поля редактирования с текстом подпрограммы (чтобы весь текст был виден в этом поле) можно воспользоваться следующими двумя возможностями размещения текста:
логически единую, но длинную строку инструкции Dim (или другой инструкции внутри оператора), выходящую, возможно, за правую границу поля, можно разместить на две строки (и более), обозначив перенос; для этого нужно после запятой (разделителя списка описаний переменных) или по тексту другой инструкции вставить пробел, знак подчерк, а далее, нажав клавишу Enter, перенести остаток текста строки на следующую строку поля (для наглядности рекомендуется сместить перенесенный текст вправо под аналогичные элементы списка описаний переменных);
для размещения всего текста на виду в поле редактирования по вертикали можно размещать в одной строке поля по несколько коротких записей операторов, разделяя их внутри строки двоеточием (в конце строки перед следующей строкой операторов двоеточие не ставить).
Сохранить вновь созданный проект, выполнить заложенную в него программу и в конце работы закрыть файл.
Скопировать в бригадную папку:
в вычислительном центре из папки Х:\Программы каф. ПМ и САПР\Наумов\VBA,
на кафедре ПМ и САПР из папки \Naumov\VBA файлы max2.xls и max3_func.xls.
Открыть сначала файл max2.xls, а в нем – программную реализацию проекта вывода максимального из 2-х чисел с помощью структурированной программы, состоящей из главной (командной, вызывающей) подпрограммы с именем «CmdРешение» и вспомогательной (вызываемой, содержащей описание выполняемых действий) подпрограммы с именем «Анализ».
Ознакомиться с содержанием программы «Выбор максимального числа из двух чисел с помощью структурированной программы, состоящей из главной и вспомогательной подпрограмм»
Вспомогательная подпрограмма (описание)
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 рекомендуется размещать одно под другим, а вложенные блоки смещать по строкам вправо, выравнивая их по левому краю.
Выполнить программу из файла max2.xls для любых трех пар неравных чисел.
Далее закрыть этот файл и открыть скопированный ранее в бригадную папку файл max3.func.xls. В этом файле реализован проект вывода максимального из 3-х чисел с помощью структурированной программы, состоящей из главной подпрограммы и вспомогательной подпрограммы-функции с именем «max2». Эта функция задает выбор максимума из 2-х чисел.
Ознакомиться с содержанием программы из файла max3_ func.xls: выбор максимального из трёх чисел с использованием подпрограммы-функции выбора максимума из двух чисел.
подпрограмма-функция (описание)
Function max2(ByVal x As Integer, └┘–
ByVal y As Integer) As Integer
If x>y Then max2= x Else max2= y
End Function
Главная подпрограмма
Private Sub CmdРешение_ Click ()
Dim a As Integer, b As Integer, └┘–
c As Integer, maximum As Integer
a = CInt(Text1.Text)
b = CInt(Text2.Text)
c = CInt(Text3.Text)
maximum=max2(max2(a, b), c)
Text4.Text= maximum
End Sub
Пояснения
В главной подпрограмме в конце действий выполняется вывод в поле с именем «Text4» максимального значения из 3-х чисел. Это значение определено с использованием и последовательным вызовом подпрограммы-функции выбора максимума из 2-х чисел.
Из описания этой функции следует, что результат ее выполнения, как и любой функции, связан с ее именем. Тип функции задан в конце заголовка описания функции.
После первого обращения к функции с именем «max2» она имеет значение максимума из значений переменных «a» и «b». Это значение передается в качестве фактического параметра при втором обращении к функции наряду со значением переменной «с». В итоге получается окончательный результат.
12. Выполнить программу из файла max3_func.xls. Далее закрыть этот файл.
13. В конце работы самостоятельно реализовать проект по варианту, заданному преподавателем.
14. Завершить работу щелчком ЛКМ на пункте «Завершение сеанса <имя группы>».