Практическая работа № 20

advertisement
1
8. ОСНОВЫ ПРОГРАММИРОВАНИЯ
на языке Visual Basic for Applications
Программа – это набор инструкций на машинном языке, которые выполняются последовательно
одна за другой. Любая операция, написанная на машинном языке, представляет собой последовательность битов. Каждый бит может принимать одно из двух возможных значений: 0 или 1.
Например, действие, записанное в машинных кодах, может выглядеть примерно так:
10111001
(Код операции)
01010110
(Первый операнд)
00011001
(Второй операнд)
Конечно, написать программу в машинных кодах – это крайне трудоемкий процесс. В связи с этим появились языки программирования. Каждый язык программирования содержит набор
инструкций, которые описывают те или иные действия на понятном человеку языке. Однако этот
текст машина понять не может, поэтому каждый язык программирования имеет свой транслятор.
Транслятором называется специальная программа, которая переводит текст программы, написанный на языке программирования, в машинные коды. Различают два вида трансляторов: компиляторы и интерпретаторы. Интерпретатор переводит одну строчку текста программы в машинный
код, выполняет ее и тут же “забывает”. Если приходится второй раз обработать строку программы,
интерпретатор заново переводит ее. Без интерпретатора такая программа работать не может. В
отличие от интерпретатора, компилятор переводит в машинные коды сразу всю программу. Поэтому, откомпилированная программа может храниться и выполняться отдельно от компилятора.
VBA является интерпретатором, его относят к объектно – ориентированным языкам высокого
уровня. Программа, написанная на этом языке, не имеет единого кода (в отличие от структурных
языков программирования). Приложение, написанное на Visual Basic (как и на любом объектно –
ориентированном языке), представляет собой совокупность объектов, каждый из которых имеет
свой набор свойств, обрамленный методами; они предписывают этим объектам выполнение определенных действий в той или иной ситуации. Схематично программа, написанная на Visual Basic,
выглядит примерно так:
Sub Имя_блока (параметры)
Описательная часть
Исполнимая часть
End Sub
В описательной части содержится описание переменных и констант, которые используются в данном блоке.
В исполнимой части содержатся операторы (или команды), записанные по правилам данного языка. Операторы выполняются последовательно, один за другим сверху вниз.
8.1. Основные понятия алгоритмического языка Visual Basic
8.1.1. Алфавит языка
Алфавит языка программирования – набор символов, с помощью которого образовываются выражения, операторы и величины данного языка.
Алфавит языка VBA включает в себя все символы из таблицы кодов (таблица кодов ASCII
- американский стандартный код для представления информации). Каждому символу соответствует числовой код от 0 до 255. Символы с кодами от 128 до 255 относятся к расширенной таблице
ASCII, в этой области находятся символы национальных алфавитов (например, русского языка) и
символы псевдографики для изображения таблиц.
VBA использует следующие подмножества набора символов кода ASCII:
 Буквы английского алфавита от A до Z и от a до z;
 Буквы русского алфавита;
 Цифры арабские от 0 до 9;
 Шестнадцатеричные цифры - арабские цифры от 0 до 9, и буквы от A до F и от a до f;
 Символ подчёркивания (ASCII-код 95);
 Символы-разделители: символ пробела ASCII-32 и все управляющие символы с кодами ASCII
от 0 до 31
 Специальные символы ( + - * / = < > [ ] . , ( ) : ; ^ @ { } $ # )
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
2


Составные символы (<= >= := )
Зарезервированные слова.
8.1.2. Элементы программы
Идентификаторы.
Идентификаторы выступают в качестве имен констант, типов, переменных, процедур, функций, полей в записях и других объектов языка.
Идентификатор может иметь любую длину, однако только первые его 63 символа являются значимыми. Имя или идентификатор должен начинаться с буквы или с символа подчёркивания (“_”)
и не может содержать пробелов. После первого символа идентификатора можно, кроме букв, использовать цифры и символы подчеркивания. В идентификаторах можно использовать как строчные, так и прописные буквы (интерпретатор их не различает).
Зарезервированные слова.
Зарезервированные или служебные слова используются самим языком. Поэтому их использование
в качестве идентификаторов недопустимо.
Значения.
Это числа (2; 3.25; 7.34567001Е+2), строки символов (“С”; “Ура !”) и др.
Комментарии.
Комментарии предназначены для пояснения текста программы. Они не влияют на выполнение
программы. Начинаются комментарии со знака “ ‘ “.
Операции и выражения.
Одним из ключевых понятий в программировании является операция: определенное действие над
одним или несколькими объектами языка, имеющими значение и называемыми операндами. Совокупность операндов, объединенных знаками операций, называется выражением.
Константы.
Константа – это идентификатор, имеющий фиксированное значение, которое не изменяется в
процессе выполнения программы. Начинается описание константы с оператора Const. Например:
Const N = 5
Переменные.
В отличие от константы, переменная может изменять свое значение в процессе выполнения программы. Каждая переменная имеет свой тип, который назначается в описательной части программы. Некоторые типы переменных описаны в таблице 2.1. Переменную можно объявить с помощью оператора Dim следующим образом:
Dim I As Integer. В Visual Basic объявление переменных не является обязательной процедурой.
Таблица 2.1.
Тип данных
Boolean
Integer
Long
Single
Double
String
Диапазон
True или False (истина или ложь). Используется в логических выражениях.
от -32768 до 32767. Целочисленный тип.
от -2147483648 до 2147483647. Целочисленный тип.
от -3.402823Е+38 до -1.401298Е-45 и от 1.401298Е-45 до 3.402823Е+38.
от -1.797693134486232Е+308 до -4.94065645841247Е-324 и от
4.94065645841247Е-324 до 1.797693134486232Е+308.
от 0 до 65535 символов.
Переменные, описанные при помощи оператора Dim доступны внутри одного объекта.
Другие объекты “не видят” эту переменную. Для того, чтобы сделать эту переменную доступной
во всех объектах пользуются зарезервированным словом Public: Public S As String.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
3
Арифметическое выражение.
Частным случаем выражения VBA является арифметическое выражение. Рассмотрим следующее
арифметическое выражение:
Знаки арифметических действий
С = (А + В) ^ 2
Переменная
Знак присвоения
Операнды
Константа
Любое арифметическое выражение содержит знак “=“. Это знак “присвоить”, он отделяет
переменную от выражения и говорит о том, что значение, полученное в результате вычисления
арифметического выражения, будет помещено в эту переменную.
Ниже, в таблице 2.2, приведены некоторые знаки арифметических действий в порядке следования при вычислениях:
Таблица 2.2
Знак (оператор)
—
( )
^
\
*, /
+, —
=
Mod
Описание
Знак отрицательного числа (унарный минус).
Выражение, записанное в скобках.
Возведение в степень.
Целочисленное деление
Умножение и деление.
Сложение и вычитание.
Равно, присвоение
Остаток от деления
Операторы сравнения используются для обозначения операций сравнения двух чисел. Результатом
выполнения операции сравнения является логическое значение ИСТИНА или ЛОЖЬ.
Оператор сравнения
= (знак равенства)
< (знак меньше)
> (знак больше)
>= (знак больше и знак равенства)
<= (знак меньше и знак равенства)
<> (знак больше и знак меньше)
Значение
Равно
Меньше
Больше
Больше или равно
Меньше или равно
Не равно
Пример
1=B1
A1<B1
1>B1
A1>=B1
A1<=B1
A1<>B1
Встроенные функции.
При вычислении различных арифметических выражений часто возникает потребность в использовании сложных математических функций, таких как, синус, косинус, тангенс, логарифм, квадратный корень и др. В таких случаях используют встроенные математические функции. Visual Basic
“знает” как их вычислять, поэтому достаточно только знать как они записываются. Каждая встроенная функция имеет свое имя и требует в качестве аргумента один и более параметров, которые
записываются после имени функции в скобках. Например, записать в переменную А выражение 3
Sin 2X2. На Visual Basic это будет выглядеть следующим образом:
А = 3 * Sin (2 * X^2)
Основные математические функции:
Функция Abs возвращает значение, тип которого совпадает с типом переданного аргумента, равное абсолютному значению указанного числа.
Функция Atn возвращает значение типа Double, содержащее арктангенс числа.
Функция Cos возвращает значение типа Double, содержащее косинус угла.
Функция Exp возвращает значение типа Double, содержащее результат возведения числа e (основание натуральных логарифмов) в указанную степень. Константа e приблизительно равняется 2,718282.
Функции Fix и Int возвращают значение типа, совпадающего с типом аргумента, которое содержит целую часть числа. Обе функции Int и Fix отбрасывают дробную часть числа и возвращают целое значение. Различие между функциями Int и Fix состоит в том, что для
отрицательного значения аргумента число функция Int возвращает ближайшее отрицаКорюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
4
тельное целое число, меньшее либо равное указанному, а Fix ближайшее отрицательное
целое число, большее либо равное указанному. Например, функция Int преобразует -8.4
в -9, а функция Fix преобразует -8,4 в -8.
Выражение Fix(число) эквивалентно следующему:
Sgn(число) * Int(Abs(число))
Функция Log возвращает значение типа Double, содержащее натуральный логарифм числа.
Функция Rnd возвращает значение типа Single, содержащее случайное число. Функция Rnd возвращает значение, меньшее 1 и большее или равное нулю. Ниже приведена формула,
предназначенная для получения случайных целых чисел в заданном диапазоне:
Int((верхняяГраница - нижняяГраница+ 1) * Rnd + нижняяГраница)
Здесь верхняяГраница представляет максимальное число в диапазоне, а нижняяГраница минимальное число в диапазоне.
Функция Sgn возвращает значение типа Variant (Integer), соответствующее знаку указанного числа.
Функция Sin возвращает значение типа Double, содержащее синус угла.
Функция Sqr возвращает значение типа Double, содержащее квадратный корень указанного числа.
Функция Tan возвращает значение типа Double, содержащее тангенс угла.
Производные математические функции:
Функция
Комбинация встроенных функций
Секанс
Sec(X) = 1 / Cos(X)
Косеканс
Cosec(X) = 1 / Sin(X)
Котангенс
Cotan(X) = 1 / Tan(X)
Арксинус
Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Арккосинус
Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Арккосеканс
Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) - 1) * (2 * Atn(1))
Арккосеканс
Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
Арккотангенс
Arccotan(X) = Atn(X) + 2 * Atn(1)
Гиперболический синус
HSin(X) = (Exp(X) - Exp(-X)) / 2
Гиперболический косинус
HCos(X) = (Exp(X) + Exp(-X)) / 2
Гиперболический тангенс
HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
Гиперболический секанс
HSec(X) = 2 / (Exp(X) + Exp(-X))
Гиперболический косеканс
HCosec(X) = 2 / (Exp(X) - Exp(-X))
Гиперболический котангенс
HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
Гиперболический арксинус
HArcsin(X) = Log(X + Sqr(X * X + 1))
Гиперболический арккосинус
HArccos(X) = Log(X + Sqr(X * X - 1))
Гиперболический арктангенс
HArctan(X) = Log((1 + X) / (1 - X)) / 2
Гиперболический арксеканс
HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
Гиперболический арккосеканс
HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Гиперболический арккотангенс
HArccotan(X) = Log((X + 1) / (X - 1)) / 2
Логарифм по основанию N
LogN(X) = Log(X) / Log(N)
3.2. Инструкции
Инструкция - синтаксически завершенная конструкция, представляющая отдельное действие, описание или определение. Обычно инструкция занимает отдельную строку программы, хотя допускается использование двоеточия (:) для размещения в одной строке нескольких инструкций. Допускается также использование символа продолжения строки ( _ ) для продолжения одной логической программной строки на нескольких физических строках.
Инструкция Visual Basic является полной командой. Она может содержать ключевые слова, операторы, переменные, константы и выражения. Любая инструкция относится к одной из следующих
категорий:
 Инструкции описания, именующие переменные, константы или процедуры, а также могут
задавать типы данных. Инструкции описания используются для описания процедур, переменных, массивов и констант и для присвоения им имен. При описании процедур, переменных
или констант задается также их область определения, которая зависит от того, где расположено описание и какие ключевые слова при этом использованы.
Следующий пример содержит три описания.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
5


Sub ApplyFormat() – описание процедуры
Const limit As Integer = 33 – описание константы
Dim myCell As Range – описание переменной
Инструкции присвоения, которые присваивают значение или выражение переменной или
константе.
Инструкции присвоения всегда включают знак равенства (=). В следующем примере переменной yourName присваивается возвращаемое значение функции InputBox.
Sub Question()
Dim yourName As String
yourName = InputBox("Как Ваше имя?")
MsgBox "Ваше имя - " & yourName
End Sub
Исполняемые инструкции, которые инициируют действие. Они могут выполнить метод или
функцию, а также могут организовать повторение или ветвление блоков программы. Эти инструкции часто содержат математические или условные операторы, операторы цикла.
3.2.1. Инструкция If...Then...Else. Применение операторов ветвления
Ветвление реализуется с помощью оператора IF.
Оператор ветвления IF.
Блочные структуры If – наиболее эффективные из структур логического ветвления. Их можно
применять для создания логических структур практически любой сложности.
В общем виде эта структура выглядит следующим образом:
IF логическое_выражение THEN
блок операторов
END IF
Когда логическое выражение принимает значение истина (true), то выполняется блок операторов,
заключенный между операторами IF и END IF. Если логическое выражение принимает значение
ложь (false), то этот блок не выполняется и управление переходит к оператору, следующему за
оператором END IF.
Структура IF может содержать оператор ELSE:
IF логическое_выражение THEN
блок операторов
ELSE
блок операторов
END IF
Управление переходит к блоку операторов, следующему за ELSE в том случае, если логическое
выражение принимает значение ложь (false).
Это был пример одноблочной структуры оператора IF. Одноблочная структура оператора
IF преобразуется в многоблочную путем добавления оператора ElseIf. В этом случае структура
выглядит следующим образом:
IF логическое_выражение_1 THEN
блок операторов 1
ElseIf логическое_выражение_2 THEN
блок операторов 2
ElseIf логическое_выражение_3 THEN
блок операторов 3
ELSE
блок операторов4
END IF
Когда встречается многоблочная структура IF, VB определяет значение логического выражения 1. Если оно равно true, то выполняется блок операторов 1, если false, то блок операторов 1
полностью пропускается и проверяется значение логического выражения 2 и т.д. Если ни одно из
поставленных условий не выполняется, то управление передается блоку операторов 4.
В приведенном ниже примере показано использование как блоковой, так и однострочной форм
инструкции If...Then...Else:
Dim Number, Digits, MyString
Number = 53 ' Инициализирует переменную.
If Number < 10 Then
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
6
Digits = 1
ElseIf Number < 100 Then
' Условие является истинным, поэтому выполняется следующая инструкция.
Digits = 2
Else
Digits = 3
End If
' Использует однострочную форму для присвоения значения.
If Digits = 1 Then MyString = "Один" Else MyString = "Больше 1"
Инструкция Select Case
Выполняет одну из нескольких групп инструкций в зависимости от значения выражения.
Синтаксис
Select Case выражение
[Case список Выражений-n
[инструкции-n]] ...
[Case Else
[инструкции_else]]
End Select
В приведенном ниже примере инструкция Select Case используется для анализа значения переменной. Второе предложение Case содержит значение анализируемой переменной и следовательно выполняется только инструкция, связанная с этим предложением:
Dim Number
Number = 8
' Инициализирует переменную.
Select Case Number
' Анализирует число.
Case 1 To 5
' Число между 1 и 5.
Debug.Print "Между 1 и 5"
‘Выводит текст в окно отладки
' Это предложение Case является единственным истинным.
Case 6, 7, 8
' Число между 6 и 8.
Debug.Print "Между 6 и 8"
Case Is > 8 And Number < 11 ' 9 или 10.
Debug.Print "Больше 8"
Case Else
' Другие значения.
Debug.Print "Вне интервала 1 -- 10"
End Select
3.2.2. Применение операторов цикла.
Практически любой алгоритм содержит ряд операторов, которые нужно выполнить несколько раз
подряд. Такая операция называется циклом. (Циклом называется участок программы,
который выполняется многократно при различных значениях аргументов.)
Операторы, которые выполняются циклически (повторяются), называются телом цикла. Цикл может иметь одну или несколько точек входа и обязательно один или несколько выходов. Если цикл
не имеет выхода, то алгоритм составлен неправильно.
Для всех операторов цикла характерна следующая особенность: повторяющиеся вычисления записываются всего лишь один раз. Они и называются телом цикла. Вход в цикл возможен только через его начало. Переменные оператора цикла должны быть определены до входа в циклическую
часть (т.е. переменным должны быть присвоены какие-либо начальные значения). Не забывайте
про условие продолжения цикла. С каждым повторением операторов циклической части (тела
цикла) переменная цикла должна увеличиваться (уменьшаться) на заданную величину (шаг). Выход из цикла происходит или по его естественному окончанию, или по оператору перехода goto
<метка>. Однако применение оператора безусловного перехода является нежелательным, т.к. это
нарушает структурную целостность и наглядность программы. Рекомендуется применять инструкцию Exit.
Если не задать приращения переменной цикла или не предусмотреть выход из цикла, то циклические вычисления будут повторяться бесконечно, произойдёт «зацикливание» программы.
Циклы широко применяются для решения самых разнообразных задач:
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
7
 табулирование функции (нахождение значения функции для аргумента, изменяющегося от
начального до конечного значения с заданным шагом);
 нахождение суммы ряда;
 вычисление суммы n слагаемых;
 вычисление произведения n сомножителей (вычисление факториала);
 приближённое вычисление определённого интеграла (площади фигуры) и т.д.
Visual Basic имеет три оператора цикла.
1. Оператор цикла For.
Наиболее распространенным оператором цикла является оператор FOR.
В общем виде оператор FOR выглядит следующим образом:
FOR счетчик = начало TO конец [STEP шаг]
тело цикла
NEXT счетчик
где счетчик – целочисленная переменная, задающая количество повторений; начало – начальное
значение переменной; конец – конечное значение переменной; шаг (необязательный параметр) –
шаг приращения. Операторы, содержащиеся в теле цикла, повторяются до тех пор, пока значение
счетчика не станет больше или равно значению конец.
В приведенном ниже примере инструкция For...Next используется для создания строки, содержащей 10 наборов по 10 цифр (от 0 до 9); каждый набор отделяется от следующего одним пробелом.
Внешний цикл использует переменную-счетчик, которая уменьшается на единицу при каждом
выполнении цикла.
Dim Words, Chars, MyString
For Words = 10 To 1 Step -1
' Цикл выполняется 10 раз.
For Chars = 0 To 9
' Цикл выполняется 10 раз
MyString = MyString & Chars ' Добавляет цифру в конец строки.
Next Chars
' Увеличивает счетчик
MyString = MyString & " "
' Добавляет пробел.
Next Words
2. Оператор цикла с предусловием (WHILE).
Часто возникают ситуации, когда заранее неизвестно количество повторений операторов, входящих в тело цикла. В этом случае используют оператор цикла с предусловием WHILE.
В общем виде оператор WHILE выглядит следующим образом:
WHILE условие
тело цикла
WEND
Операторы, содержащиеся в теле цикла, повторяются до тех пор, пока условие не примет значение
TRUE (истина). Этот оператор называется «с предусловием», потому что вначале проверяется
условие, а после этого выполняются операторы, входящие в тело цикла.
Пример:
В данном примере инструкция While...Wend используется для увеличения переменной-счетчика.
Инструкции в цикле выполняются до тех пор, пока указанное условие не True.
Dim Counter
Counter = 0
' Инициализирует переменную.
While Counter < 20
' Анализирует значение счетчика.
Counter = Counter + 1 ' Увеличивает счетчик.
Wend
' Завершает цикл While,
' если Counter > 19.
Debug.Print Counter
' Выводит 20 в окно отладки.
3. Оператор цикла DO … LOOP.
Инструкция Do...Loop используется для выполнения наборов инструкций неопределенное число
раз. Набор инструкций повторяется, пока условие имеет значение True, либо пока оно не примет
значение True.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
8
Синтаксис:
Do [{While | Until} условие]
[инструкции]
[Exit Do]
[инструкции]
Loop
Допустим также другой синтаксис:
Do
[инструкции]
[Exit Do]
[инструкции]
Loop [{While | Until} условие]
Синтаксис инструкции Do Loop содержит следующие элементы:
Условие - числовое выражение или строковое выражение, которое имеет значение True или False.
Если условие имеет значение Null,то аргумент условие рассматривается как значение False.
Инструкции - одна или несколько инструкций, выполнение которых повторяется, пока условие
имеет значение True или пока оно не приобретет значение True.
В любом месте управляющей структуры Do…Loop может быть размещено любое число
инструкций Exit Do, обеспечивающих альтернативные возможности выхода из цикла Do…Loop.
Часто используемая вместе с определением некоторого условия (например, If…Then), инструкция
Exit Do передает управление инструкции, непосредственно следующей за инструкцией Loop.
Во вложенных циклах Do…Loop инструкция Exit Do передает управление циклу охватывающего
уровня по отношению к циклу, в котором она вызывается.
Пример:
В данном примере показано, как можно использовать инструкции Do...Loop. Внутренний цикл
Do...Loop выполняется 10 раз, затем логической переменной присваивается значение False, после
чего он преждевременно завершается с помощью инструкции Exit Do. Внешний цикл завершается
немедленно после проверки значения логической переменной.
Dim Check, Counter
Check = True: Counter = 0
Do
Do While Counter < 20
Counter = Counter + 1
If Counter = 10 Then
Check = False
Exit Do
End If
Loop
Loop Until Check = False
' Инициализирует переменные.
' Внешний цикл.
' Внутренний цикл.
' Увеличивает счетчик.
' Если условие истинно.
' Присваивает переменной
' значение False.
' Завершает внутренний цикл.
' Немедленно завершает внешний цикл.
3.3. Ввод и вывод данных на экран
3.3.1. Функция MsgBox
MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим
ожидания нажатия кнопки пользователем, а затем возвращает значение типа Integer, указывающее,
какая кнопка была нажата.
Синтаксис:
MsgBox (prompt[, buttons] [, title] [, helpfile, context])
Здесь prompt - обязательный элемент, строковое выражение, отображаемое как сообщение в
диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов
и зависит от ширины используемых символов. Строковое значение prompt может содержать
нескольких физических строк. Для разделения строк допускается использование символа возврата
каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) &
Chr(10)).
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
9
Buttons- необязательный элемент, числовое выражение, представляющее сумму значений,
которые указывают число и тип отображаемых кнопок, тип используемого значка, основную
кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0.
Title - необязательный элемент, строковое выражение, отображаемое в строке заголовка
диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.
Helpfile – необязательный элемент, строковое выражение, определяющее имя файла справки,
содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан,
необходимо указать также аргумент context.
Context – необязательный, числовое выражение, определяющее номер соответствующего раздела
справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile.
Пример:
В данном примере функция MsgBox используется для вывода окна диалога с сообщением
об ошибке и кнопками "Да" (Yes) и "Нет" (No). Основной является кнопка "Нет" (No).
Значение, возвращаемое функцией MsgBox, зависит от того, какая кнопка была нажата
пользователем. Предположим, что DEMO.HLP является файлом справки, содержащим
раздел с номером, равным 1000.
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Обнаружена ошибка. Продолжить?"
' Сообщение.
Style = vbYesNo + vbCritical + vbDefaultButton2
' Кнопки.
Title = "Пример"
' Заголовок.
Help = "DEMO.HLP"
' Файл справки.
Ctxt = 1000
' Контекст.
' Выводит сообщение.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then
' Нажата кнопка "Да" (Yes).
MyString = "Да"
' Выполняет действие.
Else
' Нажата кнопка "Нет" (No).
MyString = "Нет"
' Выполняет действие.
End If
3.3.2. Функция InputBox
Функция InputBox выводит на экран диалоговое окно, содержащее сообщение и поле ввода,
устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем
возвращает значение типа String, содержащее текст, введенный в поле.
Синтаксис:
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Синтаксис функции InputBox содержит следующие именованные аргументы:
Prompt – обязательный элемент. Строковое выражение, отображаемое как сообщение в
диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов
и зависит от ширины используемых символов. Строковое значение prompt может содержать
нескольких физических строк. Для разделения строк допускается использование символа возврата
каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) &
Chr(10)).
Title – необязательный элемент. Строковое выражение, отображаемое в строке заголовка
диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения
(Excel).
Default – необязательный элемент. Строковое выражение, отображаемое в поле ввода как
используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент
опущен, поле ввода изображается пустым.
Xpos - необязательный элемент. Числовое выражение, задающее расстояние по горизонтали
между левой границей диалогового окна и левым краем экрана (в твипах). Если этот аргумент
опущен, диалоговое окно выравнивается по центру экрана по горизонтали.
Ypos – необязательный элемент. Числовое выражение, задающее расстояние по вертикали между
верхней границей диалогового окна и верхним краем экрана (в твипах). Если этот аргумент
опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана.
helpfile – необязательный элемент. Строковое выражение, определяющее имя файла справки,
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
10
содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан,
необходимо указать также аргумент context.
Context - необязательный. Числовое выражение, определяющее номер соответствующего раздела
справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile.
Пример ипользования функции:
В данном примере приведены различные способы получения сведений от пользователя с
помощью функции InputBox. Если аргументы x и y опущены, окно диалога автоматически
выравнивается по центру по соответствующим осям. Переменная MyValue содержит значение,
введенное пользователем, если была нажата кнопка OK или клавиша ENTER. Если
пользователь нажмет кнопку Отмена, функция возвратит пустую строку.
Dim Message, Title, Default, MyValue
Message = "Введите число от 1 до 3" ' Сообщение-подсказка.
Title = "Пример"
' Заголовок.
Default = "1"
' Значение по умолчанию.
' Выводит на экран сообщение, заголовок и значение по умолчанию.
MyValue = InputBox(Message, Title, Default)
' Получение справки. Кнопка "Справка" добавляется автоматически.
MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)
' Размещает верхний левый угол окна диалога в точке 100, 100.
MyValue = InputBox(Message, Title, Default, 100, 100)
3.3.3. Использование форм
Объект UserForm
Объект - комбинация кода и данных, которая может рассматриваться как единое целое, например,
элемент управления, форма или компонент приложения.
Объект UserForm представляет собой окно или диалоговое окно, являющееся составной частью
интерфейса пользователя в приложении.
Семейство UserForms является семейством, компоненты которого представляют все загруженные
формы UserForm в приложении. У семейства UserForms имеются свойства Count и Item, а также
метод Add. Свойство Count указывает число компонентов в семействе; свойство Item (компонент,
используемый по умолчанию) указывает определенный компонент семейства; метод Add
помещает в семейство новый компонент UserForm.
Синтаксис:
UserForm
UserForms[.Item](индекс)
Прототип индекс представляет собой значение типа Integer в диапазоне от 0 до UserForms.Count –
1. Item -- это используемый по умолчанию компонент семейства UserForms, поэтому его можно не
указывать.
Формы пользователя имеют свойства, определяющие внешний вид, как например, положение,
размер, цвет и реакция на события.
Формы пользователя также могут реагировать на события, инициированные пользователем или
запущенные системой. Например, пользователь может написать подпрограмму обработки события
Initialize (Инициализация) для UserForm, чтобы инициализировать переменные уровня модуля до
того, как UserForm будет выведена на экран.
Помимо свойств и событий для программной обработки форм пользователя могут использоваться
методы. Например, можно использовать метод Move для изменения положения и размера формы
UserForm.
При конструировании форм пользователя следует задать свойство BorderStyle для определения
границ и свойство Caption для занесения текста в область заголовка. В программе можно
использовать методы Show и Hide, чтобы делать форму соответственно видимой и невидимой во
время выполнения.
Доступ к семейству элементов управления формы UserForm осуществляется с помощью семейства
Controls. Например, чтобы скрыть все элементы управления формы UserForm, можно
использовать код, подобный следующему:
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
11
For Each Control in UserForm1.Controls
Control.Visible = False
Next Control
Метод Show
Метод Show выводит на экран объект UserForm. Синтаксис: [объект.]Show
Необязательный прототип объект представляет собой объектное выражение, значением которого
является один из объектов, перечисленных в списке "Применение". Если этот элемент синтаксиса
опущен, предполагается, что объектом является форма UserForm, связанная с активным модулем
UserForm.
Когда UserForm выведена на экран, другие формы данного приложения недоступны, однако это не
относится к другим приложениям.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
12
Тема :
Практическая работа № 19
Ввод-вывод данных в языке программирования Visual
Basic for Applications. Составление программ линейной
структуры с использованием стандартных функций.
Обмен информацией между VBA и рабочими листами
Excel.
Цель:
Научиться составлять простейшие программы на языке VBA, организовывать вводвывод данных, обмен информацией между VBA и рабочими листами Excel.
Время:
160 мин.
Задание:
Решить задачу согласно варианта, организовав ввод данных и вывод результата в
диалоговые окна и в ячейки рабочего листа Excel.
Литература:
Элизабет Бунин. Excel Visual Basic для приложений. M.: Восточная книжная
компания, 1996
Содержание отчёта:
− Ответы на вопросы, поставленные в пунктах описания последовательности выполнения
работы.
− Блок-схема алгоритма и текст программы.
− Выводы по работе (что изучили, чему научились).
Варианты задания:
1. Зависимость пройденного телом пути S от времени t описывается формулой:
S = at + bt2 + ct3 .
Найти пройденный телом путь при a = 10,6 м/c, b = 3,04 м/c2, с = 0,047 м/c3, t = 1,28 c. Вывести
на экран: «Путь S = <результат> м»
2. Найти натяжение Т каната, перекинутого через блок, если на концах каната подвешены грузы
с массами m1 и m2. Зависимость T от m1 и m2 представлена в виде: Т = 2 m1 m2 g / (m1 + m2), где
g – ускорение силы тяжести. Задачу решить при m1 = 100 кг, m2 = 55,5 кг, g = 9,81 м/с2. Вывести на экран результат вычисления с пояснительной надписью «Натяжение каната».
3. Фактический объём выполненных строительно-монтажных работ составил 5432,8 тыс. грн.,
при этом плановое задание оказалось перевыполненным на 1,5 %. Вычислите объём планового
задания.
4. Цена товара - 850 грн. В неё входит НДС – 20 % от стоимости товара. Определите стоимость
товара без НДС.
5. Определить момент инерции J однородного цилиндра с радиусом R и массой m относительно
оси вращения, если m = 5,23 кг, R = 0,2 м.
Момент инерции однородного цилиндра относительно оси вращения выражается зависимостью: J = 5 m R2. Исходные данные и результат вычисления вывести на печать.
6. Определить радиус однородного шара, если его масса m = 5,23 кг, а момент инерции J =
1,410-2 кгм2.
Момент инерции J однородного шара радиусом R относительно оси вращения выражается зависимостью: J = 2/5 m R2. Исходные данные и результат вычисления вывести на печать.
7. Определить внутренний и внешний радиусы полого цилиндра, если его масса m = 5,23 кг, а
момент инерции J = 1,4 10-2 кгм2.
Момент инерции J для полого цилиндра с радиусами R1 и R2 относительно оси вращения выражается зависимостью: J = 1/2 m (R12 + R22), считать R2 = 2R1.
Исходные данные и результат вычисления вывести на печать.
8. Найти x = lg y, если y = at2 + bt + c; a = 1,04 ; b = 3,785; c = 12,76; t = 100,21. Исходные данные
и результат вычисления вывести на печать.
9. Пористость грунта определяют по формуле:


 об
n  1 
  100,
  уд (1  0,1W ) 
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
13
10.
11.
12.
13.
14.
где об – объёмная масса грунта, уд – плотность грунта, W – влажность грунта в процентах.
Найти пористость грунта при следующих данных лабораторного анализа:
об = 1,95 кг/м3;
уд = 2,64 кг/м3; W = 22 %.
Высота фундамента определяется по формуле h = (b – b0)/2tg, где b, b0 – параметры ширины
фундамента,  - угол, зависящий от соотношения h, b, b0. Решить задачу при b = 180 см, b0 = 64
см,  = 30. Результат вычисления вывести на печать, указав размерность.
При настилке пола из керамических квадратных плиток, укладываемых по диагонали, число
треугольных плиток, укладываемых у фризового ряда, определяется по формуле n = L
/(1,41a+2b), где L – длина стороны фриза; a – длина стороны квадратной плитки; b – ширина
шва между плитками. Решить задачу при L = 5230 мм, a = 50 мм, b = 1,5 мм. Учесть, что n –
целое число.
Для приготовления известково-цементного состава необходимо A% известкового теста, B%
белого цемента, С% поваренной соли, D% пигмента, остальное составляет вода. Найти необходимое количество воды W [кг] для приготовления Q [кг] состава. Задачу решить при A =
20,2; B = 8,8; C = 0,7; Q = 90.
Для приготовления 5 кг масляно-окрашивающего состава потребовалось по 1,5 кг масляной
эмульсии и растворителя. Остальное составила краска густотёртая. Составить программу для
определения процентного содержания краски. Вывести на печать в первой строке надписи
«Эмульсия», «Растворитель», «Краска», «Состав», во второй строке - массу составляющих и
состава в кг, в третьей строке - надпись «Краска составляет», далее - результат в процентах.
Используя теорему синусов (стороны треугольника пропорциональны синусам противоположных углов), найти стороны треугольника a, b, c, если два его угла соответственно равны 300 и
400, а радиус окружности, описанной около этого треугольника, равен 5 см. Учесть, что в теореме синусов каждое из отношений равно диаметру описанной около треугольника окружности :
a
b
c


D
sin  sin  sin 
15. Найти площадь треугольника по данным предыдущей задачи, используя выражение:
S
abc
4R
16. Найти площадь треугольника, стороны которого равны 5, 6, 7 см. Примечание : использовать
формулу Герона: S  p ( p  a )( p  b)( p  c) , где a, b, c - стороны треугольника, р – полупериметр: p  1 (a  b  c)
2
17. Найти гипотенузу прямоугольного треугольника, если его катеты равны 3 и 5 см. (Использовать теорему Пифагора).
18. В прямоугольном треугольнике катет равен другому катету, умноженному на тангенс угла,
противолежащего первому катету: a = b tg. Найти стороны прямоугольного треугольника,
если один из катетов равен 6 см, а угол, ему противолежащий, равен 400.
19. На плоскости находятся две точки А и В с координатами А(х1; у1) и В(х2; у2). Найти расстояние d между ними, если d2=(x2-x1)2+(y2-y1)2. Задачу решить для х1=5см; у1=3; х2=9; у2=6.
20. Уравнение окружности с центром в точке А0(a,b) и радиусом R имеет вид (х-а)2+(у-b)2=R2.
Найти координату y точки В, если а=3; b=2,5; R=2,8; x=5 и y<b.
21. Объём усеченной пирамиды вычисляется по формуле : V  1 h(Q1  Q1Q2  Q2 )
3
где h - высота усечённой пирамиды, Q1 и Q2 площади оснований. Найти объём усечённой пирамиды, у которой h=5см; Q1=18 см2; Q2=7
см2.
22. Объем конуса вычисляется по формуле : V  1   R 2 H ,
3
где R - радиус основания конуса,
H - высота. Найти длину окружности, лежащей в основании конуса, если его объем V=25 см3, а
высота H=7 см.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
14
4
23. Объём шара равен V  R 3 , где R - радиус шара. Найти радиус шара, если его объём равен
3
V=30 см3.
24. Боковое ребро правильной треугольной пирамиды равно а и составляет с плоскостью основания угол . В эту пирамиду вписан цилиндр с квадратным осевым сечением. (Основание цилиндра лежит в плоскости основания пирамиды). Объём этого цилиндра можно найти по фор3
3
муле : V    a 2 sin 2

128 sin 3 (   )
4
Определить боковое ребро а пирамиды, если угол =1,2 радиана, V=40 см3.
25. Даны две точки А(-1; 2; 5) и В(7; -4; 8). Найти расстояние между А и В по формуле:
AB  ( xB  x A ) 2  ( y B  y A ) 2  ( z B  z A ) 2 .
Результат округлить до 0,1.
Последовательность выполнения работы:
1. Выделите исходные данные для решения задачи.
2. Представьте задачу в виде формул, соотношений и ограничений.
3. Разработайте алгоритм решения задачи. В данной работе он будет иметь вид, изображенный
на рис.1.
Начало
Ввод
исх.
данных
Y=…
(вычисления)
Вывод
результата
Конец
Рисунок 1.
4. Запустите Excel, откройте окно редактора VBA для написания программы.

Выполните команду: [Сервис][Макрос][Редактор Visual Basic], затем
[Вставка][Модуль].
5. Наберите текст программы, оформив его в виде процедуры:
Sub Имя_процедуры ()
… (текст программы)
End Sub
Предусмотрите вывод исходных данных и результата в ячейки рабочего листа Excel.
6. С помощью панели инструментов «Формы» на листе «Лист 1» создайте кнопку с надписью
«Старт» и назначьте ей макрос, в качестве которого используйте ранее созданную процедуру.
7. С помощью макрорекордера создайте макрос, выполняющий очистку рабочего листа.


Выполните команду [Сервис][Макрос][Начать запись].
В диалоговом окне «Запись макроса» укажите имя макроса («Очистка»), можете задать
сочетание клавиш, которое будет вызывать этот макрос, нажмите кнопку «OK».
8. Нажмите кнопку «Выделить всё», затем – клавишу «Delete».
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
15
9. Остановите запись макроса, нажав соответствующую кнопку или выполнив команду [Сервис][Макрос][Остановить запись].
10. С помощью панели инструментов «Формы» на листе «Лист 1» создайте кнопку с надписью
«Очистить» и назначьте ей только что записанный макрос.
11. Просмотрите текст записанного макроса с помощью команды [Сервис][Макрос][Макросы][Изменить].
12. Выполните макросы с помощью созданных кнопок.
13. Сохраните рабочую книгу Excel в своём каталоге на сервере как файл пр17.xls, покажите работу преподавателю и выключите компьютер.
Пример решения задачи:
Векторы a и b имеют длины, соответственно равные 70 и 40 единиц и образуют угол в 300.
Найти:
a  b  sin 
а) длину векторного произведения по формуле:
б) скалярное произведение векторов по формуле:
Ответ округлить до 0,01.
a  b  cos 
Решение:
1.
a = 70,
b = 40,
f = 30.
2. V = a * b * sin (f * 3.14 / 180)
Sk = a * b * cos (f * 3.14 / 180)
3.
Начало
Ввод a,b,f
V = a*b*sin (f*3.14/180)
Sk = a*b* cos (f *3.14/180)
Вывод V, Sk
Конец
4. Текст программы:
Sub MyProgram()
Sheets("Лист1").Select
a = InputBox("a = ")
a = Val(a)
b = Val(InputBox("b = "))
f = Val(InputBox("f = "))
v = a * b * Sin(f * 3.14 / 180)
v = Format(v, "##0.00")
sk = a * b * Cos(f * 3.14 / 180)
sk = Format(sk, "##0.00")
MsgBox ("Длина векторного произведения V = " & v & " единиц")
MsgBox ("Длина скалярного произведения Sk = " _
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
16
& sk & " единиц")
Range ("a1").Value = "Исходные данные:"
Range ("a1").Font.Bold = True
Range ("a2").Value = " a "
Range ("b2").Value = a
Range ("a3").Value = " b "
Range ("b3").Value = b
Range ("a4").Value = "угол f"
Range ("b4").Value = f
Cells (5, 1).Value = "Результат вычислений:"
Cells (5, 1).Font.Bold = True
Cells (6, 1).Value = "Векторное произведение V ="
Cells (6, 4).Formula = v
Cells (7, 1).Value = "Скалярное произведение Sk ="
Cells (7, 4).Formula = sk
End Sub
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
17
Практическая работа № 20
Составление программ разветвляющейся структуры.
Использование управляющей структуры IF…Then.
Тема :
Цель:
Время:
Задание:
Научиться составлять простейшие программы на языке VBA, организовывать вводвывод данных, обмен информацией между VBA и рабочими листами Excel, использовать оператор If…Then.
80 мин.
Решить задачу согласно варианта, организовав ввод данных и вывод результата в
диалоговые окна или в ячейки рабочего листа Excel.
Литература:
Элизабет Бунин. Excel Visual Basic для приложений. M.: Восточная книжная
компания, 1996.
Содержание отчёта:
− Ответы на вопросы, поставленные в пунктах описания последовательности выполнения
работы.
− Блок-схема алгоритма и текст программы.
− Выводы по работе (что изучили, чему научились).
Варианты задания:
1. Составить программу, которая спрашивает имя и здоровается с его обладателем, если введённое имя принадлежит автору программы.
2. На плоскости расположена окружность радиуса R с центром в начале координат. Ввести заданные координаты точки и определить, лежит ли она на окружности. Результат присвоить
символьной переменной. Решить задачу при R=2 для точек с координатами (0; 2), (-1.5; 0.7),
(1; 1), (3; 0).
Считать, что точка с координатами x, y лежит на окружности радиуса R, если
2
, где e – точность, с которой осуществляется проверка на равенство (мож2
x  y  R  e но принять e = 10-5).
3. Заданы координаты двух точек. Определить, лежат ли они на одной окружности с центром в
начале координат. Результат присвоить символьной переменной. Задачу решить для точек с
координатами (0; 2), (2; 0); (1; 3), (2, 2). Проверку на равенство осуществлять с точностью e =
10-5.
4. Заданы площади круга S1 и квадрата S2. Определить, поместится ли квадрат в круге. Задачу
решить при 1) S1 = 70, S2 = 36.74; 2) S1 = 0.86, S2 = 0.64
5. Заданы площади круга S1 и квадрата S2. Определить, поместится ли круг в квадрате. Задачу
решить при 1) S1 = 3.2, S2 = 3.5; 2) S1 = 3.2, S2 = 4; 3) S1 = 6, S2 = 9.
6. Написать программу, которая бы спрашивала сокращённое имя, а печатала полное (например,
Гриша – Григорий) для трёх Ваших друзей. Ввод незнакомого имени должен вызывать сообщение типа: «Я с Вами не знаком». Необходимые данные задать самостоятельно.
7. Составить программу для определения подходящего возраста кандидатуры для вступления в
брак, используя следующее соображение: возраст девушки равен половине возраста мужчины
плюс 7, возраст мужчины определяется соответственно как удвоенный возраст девушки минус
14. Данные для проверки работы программы задать самостоятельно. (Совет: в начале выполнения программы на экране должен появиться вопрос: «Мужчина или женщина?». Введите
МУЖ или ЖЕН. В зависимости от ответа после ввода возраста выводятся соответствующие
рекомендации.)
8. В киоске продаётся газета стоимостью 40 копеек и журнал стоимостью 1 грн. 50 коп. Составить программу, которая спрашивает о желании покупателя (журнал или газета?), принимает
деньги (сумма денег вводится с клавиатуры), печатает причитающуюся сдачу или выдаёт сообщение о недостаточности полученной суммы. Исходные данные задать самостоятельно.
9. Составить программу, контролирующую знание закона Ома. Обучаемый вводит формулу закона Ома в строковую переменную, которая далее сравнивается с правильным ответом, хранящимся в строковой константе.
(Совет: перед вводом формулы на экране должно появиться точное указание о том, в каком
виде и с использованием каких обозначений нужно осуществлять ввод формулы. Например,
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
18
такое: «Формулу вводить без пробелов. Использовать обозначения: I – сила тока, U – напряжение, R – сопротивление. Выразить I через U и R.» )
10. Написать программу вычисления значения функции

x 2 , если  2  x  2

y
4  x  2 в остальных случаях


11. Написать программу выбора наименьшего из трёх чисел. Исходные данные задать самостоятельно. Числа должны вводиться с клавиатуры. Результат вывести в виде: «Наименьшее из чисел …, …, … - число …».
12. Написать программу выбора наибольшего из трёх чисел. Исходные данные задать самостоятельно. Числа должны вводиться с клавиатуры. Результат вывести в виде: «Наибольшее из чисел …, …, … - число …».
13. Написать программу вычисления значения функции
 x 2  1, если
x  0;

y   x  2.1, если x   2 ;
 sin x, если 0  x   2 ;
14. Логической переменной b присвоить значение true, если числа x и y равны, и значение false
иначе. X и y вводить с клавиатуры, результат вывести в виде: «Утверждение, что x = y - …
(вместо многоточия подставляется false или true)» .
15. Даны числа a1, b1, c1 и a2, b2, c2. Определить точки пересечения прямых, описываемых уравнениями a1x + b1y = c1 и a2x + b2y = c2 , либо сообщить, что прямые совпадают, не пересекаются
или вовсе не существуют. Исх. д. задать самостоятельно.
16. Даны числа a, b и c (a  0). Найти вещественные корни уравнения ax4 + bx2 + c = 0. Если корней нет, то сообщить об этом. Исходные данные задать самостоятельно.
17. Найти корни квадратного уравнения ax2 + bx + c = 0, где а  0. Исходные данные задать самостоятельно. Учесть, что если а = 1 или дискриминант (D) = 0, то существует только один корень уравнения, если D < 0, то вещественных корней нет.
18. Даны произвольные числа a, b и c. Определить, можно ли построить треугольник с такими
длинами сторон. Если треугольник прямоугольный, равнобедренный или равносторонний, то
сообщить об этом. Исходные данные ввести с клавиатуры.
19. Для заданного числа a найти корень уравнения f(x) = 0, где
2ax  a  1 при a  0,

x
f ( x)  
e
1
иначе.

 1  a 2
Исходные данные выбрать самостоятельно.
20. Написать программу вычисления значения функции
x

e  x ( x  5) если x  5
y 2
x 5
если x  5


Исходные данные выбрать самостоятельно.
21. Написать программу вычисления значения функции
 x  2  sin x , если x  0
y
 x  5 , если x  0
Исходные данные выбрать самостоятельно.
22. Написать программу вычисления значения функции
 x2
, если x  2

3
y
x2
sin x  5,
если x  2
Исходные данные выбрать самостоятельно.
23. Написать программу вычисления значения функции
tg x  3 x , если x  0
y x
e  sin x, если x  0
Исходные данные выбрать самостоятельно.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
19
24. Написать программу вычисления значения функции
2

если x  3 Исходные данные выбрать самостоятельно.
x ,
y 1
, если x  3

x 3

25. Написать программу вычисления значения функции
 3
y  2 x , если x  0
1 / x, если x  0
Исходные данные выбрать самостоятельно.
26. Написать программу вычисления значения функции
если
1 sin x ,

y 1
, если
x




x  2
x  2
Исходные данные выбрать самостоятельно.
27. Написать программу вычисления значения функции
x  1
 1 ( x  1) , если

2
y   x 1  x , если  1  x  1
 3 x x , если
x 1

Исходные данные выбрать самостоятельно.
28. Написать программу вычисления значения функции
2 x ,
если x  4
yx
, если x  4

x4
Исходные данные выбрать самостоятельно.
29. Написать программу вычисления значения функции
2 x (2  x) , если
y x
, если

x2  4
x2
x2
Исходные данные выбрать самостоятельно.
30. Написать программу вычисления значения функции
 3
y   x 2 x , если x  0
sin x, если x  0
Исходные данные выбрать самостоятельно.
Последовательность выполнения работы:
1. Выделите исходные данные для решения задачи.
2. Представьте задачу в виде формул, соотношений и ограничений.
3. Разработайте алгоритм решения задачи. В данной работе он будет иметь вид, изображенный
на рис.1.
4. Запустите Excel, откройте окно редактора VBA для написания программы.

Выполните команду: [Сервис][Макрос][Редактор Visual Basic], затем
[Вставка][Модуль].
5. Наберите текст программы, оформив его в виде процедуры:
Sub Имя_процедуры ()
… (текст программы)
End Sub
Предусмотрите вывод исходных данных и результата в ячейки рабочего листа Excel.
6. Сохраните рабочую книгу Excel в своём каталоге на сервере как файл пр18.xls, покажите работу преподавателю и выключите компьютер.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
20
Пример решения задачи:
Задача № 1.
Найти значения функции

Sin 3 x, при x  0


Y  x
e
, при x  0

 ( x  1)
Область определения функции Y: x  ]-;0[  ]0;1[  ]1;  [.
Соответственно, блок - схема алгоритма решения задачи выглядит следующим образом:
1
Начало
2
Ввод X
3
Нет
X<0
Да
4
Нет
5
X0 And X1
Y=(Sin(x))^3
Да
6
Y=Exp(x)/(x-1)
8
7
Вывод Y
Функция не определена
9
Конец
Рисунок 1.
Словесное описание алгоритма:
1. Начало.
2. Ввод значения переменной X.
3. Если Х < 0, то значение переменной Y вычисляется по формуле: Y = (Sin(x))^3, после чего –
переход к пункту 5 (печать Y).
4. Если X > 0, то значение переменной Y будет вычисляться по формуле: Y = Exp(x) / (x-1). Но
функция Y(x) = Exp(x) / (x-1) не определена в точке X = 1. Кроме этого, по условию, функция
Y(x) не определена в точке X = 0. Поэтому, если X  1 и X  0, Y рассчитывается по вышеуказанной формуле ( Y = Exp(x) / (x-1) ) и переход к пункту 5. Иначе выводится сообщение «В
этой точке функция Y не определена», после этого – переход к пункту 6 (конец программы).
5. Вывод на экран значения Y.
6. Конец.
Текст программы:
Sub Example_2()
x = InputBox ("Введите X: ")
If x < 0 Then
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
21
y = Sin(x) ^ 3
ElseIf x <> 0 And x <> 1 Then
y = Exp(x) / (x - 1)
Else
MsgBox ("При X = " & x & " функция Y не определена")
GoTo Метка
End If
MsgBox ("X = " & x & " Y = " & y)
Метка:
End Sub
Метка нужна для того, чтобы не появлялось сообщение X = … Y = … в том случае, когда функция Y не определена.
Задача № 2. Найти корни квадратного уравнения ax2+bx+c=0.
Начало
Ввод a,b,c
D=b2-4ac
D<0
Äà
Íåò
b D
2a
b D
x2 
2a
x1 
"Вещественных корней
нет"
Вывод X1,X2
Конец
Рисунок 2.
Sub zad2()
a = Val(InputBox("a="))
b = Val(InputBox("b="))
c = Val(InputBox("c="))
D=b^2-4*a*c
If D < 0 Then
MsgBox ("Вещественных корней нет ")
Else
MsgBox ("X1 = " & (-b – Sqr (D) / (2 * a) & Chr (10) & "X2 = " & (-b + Sqr (D) / (2 * a))
End If
End Sub
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
22
Практическая работа № 21
Тема :
Цель:
Время:
Задание:
Организация циклов в программе.
Научиться составлять простейшие программы с использованием операторов цикла
для решения финансовых, инженерных и научных задач (на языке VBA).
160 мин.
Решить задачу согласно варианта - составить блок-схему алгоритма, написать программу, отладить её и выполнить на ЭВМ.
Задачу решить с использованием двух-трёх операторов цикла.
Литература:
1. Элизабет Бунин. Excel Visual Basic для приложений. M.: Восточная
книжная компания, 1996.
Содержание отчёта:
− Ответы на вопросы, поставленные в пунктах описания последовательности выполнения
работы.
− Блок-схема алгоритма и текст программы.
− Результаты вычислений.
− Выводы по работе (что изучили, чему научились).
Варианты задания:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Найти сумму чётных натуральных чисел, меньших 100.
Найти сумму нечётных натуральных чисел, меньших 100.
Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.
Вычисление F = 10! выполнить каждым из трёх операторов цикла.
Начав тренировки, спортсмен в первый день пробежал 10 км, каждый последующий день он
увеличивал дневную норму на 10% от нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?
Напечатать в одну строку (через пробел) все буквы от ‘A’ до ‘Z’.
Напечатать в одну строку (через пробел) все буквы от ‘a’ до ‘z’.
2
Кинетическая энергия движущегося тела W  m  v , где m – масса тела, v – его скорость.
2
Составить программу для расчёта зависимости Wk от v при значениях v, изменяющихся от v1 до
v2 с шагом Δv. Решить задачу при v1 = 10.37, v2 = 15.44, Δv = 0.23, m = 1.004.
Траектория снаряда, вылетающего из орудия под углом α с начальной скоростью vo, описывается уравнениями
x = vo˙ cos α ˙ t ,
y = vo˙ sin α ˙ t – g t 2 / 2 ,
где g = 9.8 м/с2 – ускорение свободного падения, t – время. Вводя n заданных пар vo и α, определить, сколько снарядов поразит цель высотой P, расположенную в вертикальной плоскости
y
ствола орудия на расстоянии R на высоте H
(см. рис.). Задачу решить при R = 5400 м; H
= 100 м; P = 30 м для пяти пар vo и α:
vo
P
180 м/с и 45˚; 252 м/с и 30˚; 280 м/с и 40˚; 233
м/с и 48˚; 260 м/с и 25˚.
α
H
R
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
x
23
Варианты следующих пятнадцати задач следующих сведены в таблицу. Необходимо найти значения функции Y(x) для всех Х, изменяющихся от Хн до Хк с шагом ΔХ. Вывод результатов оформить в виде таблицы с двумя столбцами и следующим заголовком:
Результаты вычислений.
Аргумент
№
варианта
Функция Y(x)
Функция
Хн
Хк
ΔХ
0
5
0.5
π/2
2π
0.47
-π/2
π/2
π/10
0
1
0.1
0
2π
π/10
0
10
1
0
15
1
1.1
6.35
0.35
π/2
3π/2
π/10
1 x2
1 ex
0
2
0.2
1 ex
0
5
0.5
0
5
0.25
0
π
π/15
1.5
15
1.35
0
2π
π/10
ex  x
10
3
x  sin x
2
11
tg x
12
13
14
1
x  0 .5
2  sin( x)
x2
x2
15
16
17
18
19
1 3
 x
x
sin x
1 x
cos( 2 x)
sin x
x
3
20
1 e
1 ex
21
22
tg( 2  ( x  2))
4
23
24
x
2x  3
1  sin x
1  cos x
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
24
25. Самолёт летит из пункта А в пункт Б со средней скоростью v. Найти время полёта t, если есть
встречный ветер, скорость которого vв изменяется от 0 до 15 м/с с шагом Δvв = 0.5 м/с. Расстояние
между
пунктами
А
и
Б
S
=
437
км,
v
=
720
км/ч.
(Для тех, кто плохо знает физику: t = S / (v-vв) )
26. Составить программу, печатающую таблицу значений градусов температуры по Цельсию и
Фаренгейту. Значения градусов температуры по Цельсию изменяются от 0˚ до 20˚ с шагом 1˚.
(˚F = ˚C * 1.8 + 32)
27. Пользователь сберегательной кассы внёс в неё вклад S0 = 3000 грн. До какой суммы он возрастёт через N = 5 лет, если процент годовых начислений P = 30 % ?
28. Вскоре после рождения ребёнка родители решили внести в сберкассу вклад S0 с тем, чтобы
через 16 лет, к моменту окончания школы, вклад вырос до 50 000 грн. Каким должен быть
вклад S0, если процент годовых начислений P = 30 % ?
29. Через сколько лет начальный вклад S0 = 2 000 грн. увеличится до суммы S = 30 000 грн., если
процент годовых начислений P = 30 % ?
30. Вкладчик сберегательной кассы решил ежегодно вносить вклад S1 = 500 грн. в течение N = 5
лет. Сколько денег он получит в конце этого срока, если процент годовых начислений P = 30
%?
Пример №1.
Найти сумму первых 15-и натуральных чисел.
Задача сводится к организации цикла по i. Для циклического накапливания сумм при составлении
соответствующих алгоритмов используется предписание стандартного вида:
Сумма = сумма + слагаемое
Перед началом цикла сумма должна иметь нулевое значение. Понимать эту формулу следует так:
Пусть значение переменной «сумма» хранится в ячейке памяти № 1, а значение переменной «слагаемое» – в ячейке памяти № 2. Все выражения выполняются по правилам приоритета
арифметических операций справа налево, т.е. из ячейки памяти № 2 извлекается значение переменной «слагаемое», из ячейки № 1 извлекается значение переменной «сумма», оба числа складываются (за такие операции отвечает процессор, а именно, арифметико – логическое устройство), а
результат помещается в ячейку № 1 вместо старого значения переменной «сумма». Таким образом, в ячейке № 1 происходит накопление суммы. Если в качестве слагаемого используется переменная цикла, то с каждой итерацией (шагом) цикла значение этой переменной будет меняться.
Словесная запись этого алгоритма (цикл «До», с постусловием):
1. i = 1, S = 0
2. S = S + i
3. i = i + 1
4. если i  15, перейти к шагу 2
5. вывести на экран значение S.
6. конец
Блок-схема алгоритма, соответствующая этой записи, изображена на рис.1.Согласно ГОСТ 19.70190 схему этого алгоритма можно изобразить так, как на рис. 2.
Текст программы:
Sub example()
i=1
S=0
Do
S=S+i
i=i+1
Loop While i <= 15
MsgBox (" S = " & S)
End Sub
Результат выполнения программы: S = 120.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
25
Начало
Начало
Начальные присвоения:
i = 1, S = 0
Начальные присвоения:
i = 1, S = 0
S=S+i
i=i+1
Да
Начало цикла с
постусловием
S=S+i
i = i+ 1
i 15
i  15
Нет
Конец цикла
Вывод S
Вывод S
Конец
Конец
Рис. 1
Рис. 2
Для решения этой задачи можно использовать и цикл с предусловием. Словесная запись этого алгоритма (цикл «Пока»):
1. i = 1, S = 0
2. если i > 15, перейти к шагу 6
3. S = S + i
4. i = i + 1
5. вернуться к шагу 2
6. вывести на экран значение S.
7. конец
Блок-схема алгоритма, соответствующая этой записи, изображена на рис.3. Согласно ГОСТ
19.701-90 схему этого алгоритма можно изобразить так, как на рис. 4.
Текст программы:
Sub example()
i=1
S=0
Do While i <= 15
S=S+i
i=i+1
Loop
MsgBox (" S = " & S)
End Sub
Sub example()
i=1
S=0
While i <= 15
S=S+i
i=i+1
Wend
MsgBox (" S = " & S)
End Sub
Или:
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
26
Начало
Начало
Начальные присвоения:
i = 1, S = 0
Да
i > 15
Начальные присвоения:
i = 1, S = 0
Начало цикла по i,
проверка условия
i <= 15
Нет
S=S+i
S=S+i
i= i+ 1
i = i+ 1
Конец цикла
Вывод S
Вывод S
Конец
Конец
Рис. 3
Рис. 4
При использовании цикла с параметром блок-схема алгоритма изображена на рис. 5.
Начало
Начальные присвоения:
S=0
i = 1, 15
S=S+i
Вывод S
Конец
Рис. 5
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
27
Текст программы:
Sub Auto_0pen()
Beep
a = MsgBox ("Найти сумму натуральных чисел от 0 до 15”,vbYesNo, "Задание")
if a = vbNo Then Exit Sub
S=0
For i= 1 To 15
S=S+i
Next
a = МsgВох ("Сумма заданных чисел = " & S, "Ответ")
ThisWorkbook.Sheets ("Лист1").Activate
Range ("a1").Select
i = Len ("Сумма заданных чисел = ")
Columns ("A:A").ColumnWidth = i
Range ("a1 ").Value = "Сумма заданных чисел = "
Range ("b1 ").Value = S
End Sub
В этом примере программа несколько «приукрашена»:
- Процедура названа Auto_Open, благодаря этому она запускается автоматически при открытии книги;
- В окне сообщения с заголовком «Задание» появляется условие задачи и две кнопки: «Yes»
и «No». Если нажимается кнопка «No», задача решаться не будет, последует выход из процедуры. Если нажимается кнопка «Yes», задача решается и в окне сообщения с заголовком
«Ответ» появляется ответ: S = 120.
- Затем открывается 1-й лист рабочей книги, в ячейке А1 появляется надпись «Сумма заданных чисел = », причём ширина столбца А становится равной длине этой надписи;
- В ячейке В1 появляется результат вычислений (120).
Пример № 2.
В этом примере условие задачи оформлено на листе «Задание» в виде надписи с управляющей
кнопкой Старт, которая вызывает процедуру, решающую поставленную задачу:
Найти значения функции
Y 
1  sin x
1  cos x
для всех X, изменяющихся от Хн до Хк с шагом dX, если
Старт
Хн  0
Хк  2 
dX  
10
Исходные данные заносятся с помощью формы UserForm1:
Текст программы:
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
28
Dim Xn, Xk, dX, X As Variant
Sub Auto_Open()
Sheets("задание").Visible = True
Sheets("задание").Select
End Sub
Sub Start()
Sheets("задание").Visible = False
UserForm1.Show
Xn = Val(UserForm1.TextBox1.Value)
Xk = Val(UserForm1.TextBox2.Value)
dX = Val(UserForm1.TextBox3.Value)
Range("A1").Value = "Хн"
Range("B1").Value = "Хк"
Range("C1").Value = "dX"
Range("A1:C4").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.ShrinkToFit = False
.MergeCells = False
End With
With Selection.Font
.Name = "Arial Cyr"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = True
Range("A2") = Xn
Range("B2") = Xk
Range("C2") = dX
Range("b4").Select
Range("b4").Value = "X"
Range("c4").Value = "Y"
Columns("C:C").ColumnWidth = 20.86
i=4
For X = Xn To Xk Step dX
If Abs(Cos(X) – 1) < 0.001 Then
Y = "Функция не определена"
Else
Y = (1 + Sin(X)) / (1 - Cos(X))
End If
i=i+1
Cells(i, 2).Value = X
Cells(i, 3).Value = Y
Next
Range("b4").Select
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(0, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Select
With Selection.Borders(xlLeft)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
29
End With
With Selection.Borders(xlTop)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlBottom)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
Range("A4").Select
End Sub
Sub Auto_Close()
Cells.Select
Selection.Clear
Range("A1").Select
End Sub
Результат выполнения этой программы:
Хн
0,00
Хк
6,28
X
0
0,314
0,628
0,942
1,256
1,57
1,884
2,198
2,512
2,826
3,14
3,454
3,768
4,082
4,396
4,71
5,024
5,338
5,652
5,966
6,28
dX
0,314
Y
Функция не определена
26,76929732
8,320557201
4,391966734
2,825787841
2,001593605
1,491735644
1,140393997
0,878639707
0,671778656
0,500796644
0,354914388
0,228580251
0,120922727
0,03785636
0
0,069452838
0,457025076
2,127445718
13,79442665
Функция не определена
При закрытии книги лист с решением очищается (процедура Auto_Close).
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
30
Практическая работа № 22
Тема :
Использование макросов и нестандартных функций
Microsoft Excel для решения задач бухучёта.
Цель:
Закрепить знания по составлению простейших программ с использованием операторов VBA для решения задач бухучёта.
Время:
80 мин.
Задание:
С помощью табличного редактора Excel создайте расчётную ведомость начисления
заработной платы. Для вычисления суммы подоходного налога средствами VBA
создайте собственную функцию. Заполните таблицу данными в соответствии с вариантом. Начислите заработную плату и рассчитайте удержания и выплаты. Заполните таблицу «Отчисления». Распечатайте таблицы.
Литература:
1. Элизабет Бунин. Excel Visual Basic для приложений. M.: Восточная
книжная компания, 1996.
2. Шафрин Ю.А. Основы компьютерной технологии, стр. 474-495
3. Ефимова О.В., Морозов В.В. Практикум по компьютерной технологии,
стр. 269-309
Содержание отчёта:
− Ответы на вопросы, поставленные в пунктах описания последовательности выполнения
работы.
− Текст программы, реализующей функцию расчёта подоходного налога.
− Распечатка таблицы.
− Выводы по работе (что изучили, чему научились).
Порядок выполнения работы:
5. Включите компьютер (перезагрузите) и войдите в сеть под своим именем.
5. Откройте файл с шаблоном ведомости начисления заработной платы (в каталоге #Задания для
практических работ\Б-21,ДБ-21\2000).

Для открытия файла выполните команду «Сетевое окружение», «Сервер», «#Задания
для практических работ\Б-21,ДБ-21\2000\зарплата(шаблон)».
6. Сохраните открывшуюся книгу в своём каталоге на Сервере под именем пр20.xls.

Выполните команду [Файл] [Сохранить как…]. В поле «Папка» выберите «Сетевое
окружение», «Сервер», «Students», каталог Вашей группы, собственный каталог. В поле
«Имя файла» введите: «пр20». Нажмите клавишу «Enter» для выполнения этой команды.
7. Приведите таблицу в соответствие c прилагаемым образцом (на 2-х листах в конце задания) и
заполните её данными согласно варианта:
Вариант
№ п/п
Оклад
Отработано дней
Дней в отпуске
Оплата отпусков
Дней на больничном
По больничным листам
Прочие (сумма)
Льгот по подоходному налогу
1
850
22
2
380
12
10
300
1
3
470
18
4
560
22
5
120
22
1
820
22
4
100
2
2
710
10
12
800
2
3
120
16
4
150
22
5
480
22
6
50
20
14
2
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
50
14
31
8. Столбцы «Фамилия, имя, отчество» и «должность» заполните произвольным образом, «оклад»
– согласно варианта по таблице; перед тем, как заполнять остальные ячейки данными, присвойте имена ячейкам C1 и C2 (количество рабочих дней в месяце и необлагаемый минимум).



Для присвоения имени ячейке выделите её и выполните команду [Вставка] [Имя] [Присвоить].
В поле “Имя” введите присваиваемое имя. Учтите, что в имени должно быть только
одно слово (допускается использование символа подчёркивания) и оно не должно начинаться с цифры. Например, допустимо использование следующих имён: “количество_дней” и “минимум”.
Ячейка может иметь только одно имя.
9. В ячейку E8 введите количество отработанных дней, а в ячейку F8 – формулу, определяющую
начисленную повременную зарплату.


Ввод формулы в ячейку таблицы начинается со знака равенства ( = ).
Формула, например, может выглядеть так: «=количество_дней / E8 * D8»
10. Согласно таблицы задания, там, где необходимо, заполните столбцы «оплата отпусков», «по
больничным листам» и «прочие».
11. В ячейку O8 («Всего начислено») введите формулу: «=F8+H8+J8+L8+N8»
12. На модульном листе редактора Visual Basic наберите программу, реализующую функцию расчёта подоходного налога согласно таблице:
Ставки и размеры подоходного налога
Месячный совокупный облагаемый налогом доход
До 17 грн.
17 – 85 грн.
85 – 170 грн.
170 – 1020 грн.
1020 – 1700 грн.
Больше 1700 грн.




Ставки и размер налога
Не облагается
10% от суммы дохода, превышающего 17 грн.
6,8 + 15% от суммы, превышающей 85 грн.
19,55 + 20% от суммы, превышающей 170 грн.
189,55 + 30% от суммы, превышающей 1020 грн.
393,55 + 40% от суммы, превышающей 1700 грн.
Выполните команду: [Сервис] [Макрос] [Редактор Visual Basic], затем -– [Вставка] [Модуль]. В результате появится окно, в котором можно писать текст программы. Начинается программа словами Function имя (аргументы), заканчивается словами End
Function.
Ветвление реализуется оператором if, его многоблочной структурой:
IF логическое_выражение_1 THEN
блок операторов 1
ElseIf логическое_выражение_2 THEN
блок операторов 2
ElseIf логическое_выражение_3 THEN
блок операторов 3
…
ELSE
блок операторов n
END IF
Когда встречается многоблочная структура IF, Visual Basic определяет значение
логического выражения 1. Если оно равно true (истина), то выполняется блок операторов 1, если false (ложь), то блок операторов 1 полностью пропускается и проверяется значение логического выражения 2 и т.д. Если ни одно из поставленных условий
не выполняется, то управление передается блоку операторов n.
Созданную функцию можно использовать в ячейках электронной таблицы, например,
=PodN(O8).
Блок-схема алгоритма функции определения подоходного налога выглядит так:
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
32
Íà÷àëî
(Function PodN(x))
Äà
Íåò
x<=17
Íåò
PodN=0
x<=85
Äà
PodN=0.1*(x-17)
Äà
Íåò
x<=170
Äà
Íåò
x<=1020
PodN=6.8+0.15*(x-85)
Äà
PodN=19.55+0.2*(x-170)
Íåò
x<=1700
PodN=189.55+0.3*(x-1020)
PodN=393.55+0.4*(x-1700)
Êîíåö
(End Function)
13. В ячейку P8, если задано, введите количество льгот (от одного до пятнадцати необлагаемых
минимумов).
14. В ячейку Q8 введите формулу, определяющую подоходный налог с учётом льгот, например,
«= PodN (O8-P8*минимум)».
15. В ячейку R8 введите формулу, определяющую сумму профсоюзных взносов: «=0,01*O8».
16. В ячейку S8 введите формулу, определяющую сумму удержаний в пенсионный фонд.



Воспользуйтесь мастером функций, нажмите кнопку fx, выберите категорию «логические», функцию «Если».
В поле «Логическое_выражение» введите: «O8<=150», в поле «Значение_если_истина»
– «0,01*O8», в поле «Значение_если_ложь» – «0,02*O8» и нажмите кнопку «OK».
В ячейке S8 должна появиться формула: «=ЕСЛИ(O8<=150;0,01*O8;0,02*O8)».
17. В ячейку T8 введите формулу, определяющую сумму удержаний по безработице. Для исключения потери копеек используйте функцию ОКРУГЛ (округление) : «=ОКРУГЛ(0,005*O8;2)».
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
33
18. В ячейку X8 введите формулу, определяющую сумму всех удержаний:
"=Q8+R8+S8+T8+U8+W8".
19. В ячейку Y8 введите формулу, определяющую сумму к выдаче: «=O8-X8».
20. Скопируйте формулы в соседние (нижние) ячейки при помощи маркера заполнения: выделите ячейку, содержащую формулу, и перетащите маркер заполнения в примыкающий
диапазон. Можно выделить несколько ячеек в строке, содержащие формулы и перетащить маркер заполнения в примыкающий диапазон, скопировав сразу несколько формул.
21. Заполните 13-ю строку, «Всего».
 Выделите ячейку F13 и нажмите на кнопку «Автосумма» ( ). Пунктиром будет выделен
диапазон суммируемых ячеек. Если его не нужно изменять, нажмите «Enter». В противном случае выделите необходимый диапазон с помощью мыши, а затем нажмите
«Enter».
22. Скопируйте формулу в оставшиеся ячейки 13-ой строки.
23. Заполните таблицу «Отчисления».
 В ячейке C16 (отчисления в пенсионный фонд) должна быть формула: =0,32*(O13-L13)
 В ячейке C17 (отчисления в соц. страх) должна быть формула: «=0,04*(O13-L13)»
 В ячейке C18 (отчисления на случай безработицы) должна быть формула: «=0,015*(O13L13)»
 Коммунальный налог рассчитывается по формуле: Количество штатных работающих
* необлагаемый минимум / 10.
24. Определите, какая сумма должна быть начислена работнику, не имеющему льгот, отработавшему все дни без больничных и отпусков, чтобы сумма к выдаче составила: 1-й
вариант – 300 грн., 2-й вариант – 500 грн.
 Выделите ячейку Y8 и выполните команду: [Сервис] [Подбор параметра].
 В поле “Значение” введите 300 или 500, в зависимости от вашего варианта.
 В поле “Изменяя значение ячейки” введите “D8“ (оклад) и нажмите кнопку “ОК”. Результат запишите в отчёт.
25. Распечатайте таблицы и сообщите преподавателю об окончании работы.
Корюков И.В. Методический комплекс по дисциплине «Информатика и компьютерная техника».
Download