МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ЭКОНОМИКИ,
СТАТИСТИКИ И ИНФОРМАТИКИ (МЭСИ)
Кафедра МОиАИС
Самостоятельная
работа
по дисциплине «Информационные
технологии в менеджменте»
на тему: «Использование
информационных технологий при работе
в Microsoft Office»
Выполнил студент
Группы ЗОМ-101
Титков Максим Владимирович
Преподаватель
Профессор
Смирнов Александр Алексеевич
Москва, 2013
Оглавление
1. Организация
программирования в Word с использованием
встроенного языка VBA.
1.1. Описание конструкций языка VBA,
обеспечивающих ветвление
Конструкции, обеспечивающие
ветвление:
Условный
оператор IF
Для реализации разветвляющегося
вычислительного процесса в VBA используется
оператор If…Then…Else, который
представляет собой простейшую форму
проверки условий. Он имеет следующий
синтаксис:
If УСЛОВИЕ Then ОПЕРАТОР_1 Else ОПЕРАТОР_2
ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно,
в противном случае выполняется ОПЕРАТОР_2. При этом оператор
If…Then…Else записывается в одну строку.
УСЛОВИЕ – это выражение логического
типа. Результат выражения всегда имеет
булевский тип. Выражение может быть простым
и сложным. При записи простых условий
могут использоваться все возможные операции
отношения, указанные в табл. 1.1.
Таблица 1.1. Логические
отношения
Операция |
Название |
Выражение |
Результат |
= |
Равно |
A = В |
True, если А равно В |
<> |
Не равно |
A<>В |
True, если А не равно В |
> |
Больше |
А>B |
True, если А ,больше В |
< |
Меньше |
A<B |
True, если А меньше В |
>= |
Больше или равно |
A>=B |
True, если А больше или равно
В |
<= |
Меньше или равно |
A<=B |
True, если А меньше или равно
В |
Сложные условия образуются
из простых путем применения логических
операций и круглых скобок. Список логических
операций приведен в табл. 1.2.
Таблица 1.2. Логические
операции
|
Название |
Выражение |
А |
В |
Результат |
Not |
Логическое
отрицание |
Not A |
False
True |
|
True
False |
And |
Логическое И |
A And B |
True
True
False
False |
True
False
True
False |
True
False
False
False |
Or |
Логическое ИЛИ |
A Or B |
True
True
False
False |
True
False
True
False |
True
True
True
False |
В условном операторе допустимо
использование блока операторов вместо
любого из операторов. В этом случае условный
оператор имеет вид:
If УСЛОВИЕ Then
БЛОК_ОПЕРАТОРОВ_1
Else
БЛОК_ОПЕРАТОРОВ_2
End If
В условном операторе может
проверяться несколько условий. В этом
случае условный оператор имеет вид:
If УСЛОВИЕ_1 Then
БЛОК_ОПЕРАТОРОВ_1
ElseIf УСЛОВИЕ_2 Then
БЛОК_ОПЕРАТОРОВ_2
Else
….
End If
Оператор
выбора Select Case
Оператор Select Case удобно использовать,
когда в зависимости от значения некоторого
выражения, имеющего конечное множество
допустимых значений, необходимо выполнить
разные действия. Он также относится к
условным операторам, но имеет другой
вид:
Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ
Case ЗНАЧЕНИЯ_1
ОПЕРАТОРЫ_1
Case ЗНАЧЕНИЯ_2
ОПЕРАТОРЫ_2
. . .
Case ЗНАЧЕНИЯ_N
ОПЕРАТОРЫ_N
[Case Else
ИНАЧЕ_ОПЕРАТОРЫ]
End Select
ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный
тип, кроме вещественного. ЗНАЧЕНИЯ состоят
из произвольного количества значений
или диапазонов, отделенных друг от друга
запятыми.
Тип ЗНАЧЕНИЙ должен
совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ.
Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ.
Если его значение совпадает с одним из
значений ЗНАЧЕНИЯ_I, то
выполнятся ОПЕРАТОРЫ_I и
управление передается оператору, стоящему
после End Select. Если его
значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I, то
выполнятся ИНАЧЕ_ОПЕРАТОРЫ
и управление передается оператору, стоящему
после End Select
1.2. Условие
задачи на разветвление алгоритма
Первая часть предусматривает
создание в прикладном программном продукте
Word макроса, обеспечивающего определение
знака зодиака. Программный код, должен
обеспечить выполнение следующих действий:
Во-первых, ввод дня и месяца
рождения.
Во-вторых, анализ введенной
информации и выдачу на экран названия
знака зодиака, соответствующего дате
рождения.
Примечание. С 22.12 по 20.01 козерог;
с 21.01 по 19.02 водолей;
с 20.02 по 20.03 рыбы; с 21.03 по 20.04
овен; с 21.04 по 21.05 телец;
с 22.05 по 21.06 близнецы; с 22.06
по 22.07 рак; с 23.07 по 23.08 лев;
с 24.08 по 23.09 дева; с 24.09 по 23.10
весы;
с 24.10 по 22.11 скорпион; с 23.11
по 21.12 стрелец.
1.3. Распечатка
программного кода
Option Explicit
Sub Zodiac()
'определение знака
зодиака по дате рождения
Dim bornDate As Date, s As String
bornDate = InputBox("Укажите
дату рождения (день и месяц) в формате
XX.XX.XXXX")
MsgBox Zod(bornDate) 'вызов ф-ции
Zod от введенной даты и вывод ее результата
End Sub
Function Zod(x As Date)
Dim b1 As Byte, b2 As Byte
b1 = Month(x): b2 = Day(x) 'введенная
дата разбивается на 2 переменые: месяц
(b1) и день (b2)
Select Case b1
'в случае, если месяц равен...
Case 1: If b2 <=
20 Then Zod = "Козерог" Else Zod = "Водолей"
'1 и день меньше или равен 20, то присвоить
ф-ции значение "козерог", иначе -
"водолей"
Case 2: If b2 <=
19 Then Zod = "Водолей" Else Zod = "Рыбы"
'2 и день меньше...
Case 3: If b2 <=
20 Then Zod = "Рыбы" Else Zod = "Овен"
Case 4: If b2 <=
20 Then Zod = "Овен" Else Zod = "Телец"
Case 5: If b2 <=
20 Then Zod = "Телец" Else Zod = "Близнецы"
Case 6: If b2 <=
21 Then Zod = "Близнецы" Else Zod = "Рак"
Case 7: If b2 <=
22 Then Zod = "Рак" Else Zod = "Лев"
Case 8: If b2 <=
23 Then Zod = "Лев" Else Zod = "Дева"
Case 9: If b2 <=
23 Then Zod = "Дева" Else Zod = "Весы"
Case 10: If b2 <=
23 Then Zod = "Весы" Else Zod = "Скорпион"
Case 11: If b2 <=
22 Then Zod = "Скорпион" Else Zod = "Стрелец"
Case 12: If b2 <=
21 Then Zod = "Стрелец" Else Zod = "Козерог"
End Select
End Function
1.4. Распечатка
результатов выполнения
2. Постановка
задачи на обработку информации с использованием
разветвления алгоритма
2.1. Описание
условия задачи
Найти корни квадратного уравнения.
2.2. Распечатка
программного кода
Option Explicit
Sub SquareEquation()
'определение корней
квадратного ур-я
Dim a As Double, b As Double, c As Double,
s As String
s = InputBox("Укажите коэффициент
при x^2", "Ввод чисел")
If (s = "") Then
a = 0
Else
a = s
End If
s = InputBox("Укажите коэффициент
при x", "Ввод чисел")
If (s = "") Then
b = 0
Else
b = s
End If
s = InputBox("Укажите свободный
коэффициент", "Ввод чисел")
If (s = "") Then
c = 0
Else
c = s
End If
MsgBox SqEq(a, b, c) 'вызов ф-ции
и вывод ее результата
End Sub
Function SqEq(a As Double, b As Double, c As Double)
Dim d As Double, x1 As Double, x2 As
Double
If (a <> 0) Then
d = b ^ 2 - 4 * a
* c
If d >= 0 Then
x1 = (-b + d ^ (1 / 2)) / (2 * a)
x2 = (-b - d ^ (1 / 2)) / (2 * a)
SqEq = "x1=" + Str(x1) + "; x2=" + Str(x2) + "."
Else
x1 = (-b) / (2 * a)
x2 = Abs(d) ^ (1 / 2) / (2 * a)
SqEq = "x1=" + Str(x1) + "+" + Str(x2) + "i"
+ "; x2=" + Str(x1) + "-" + Str(x2) + "i"
+ "."
End If
Else
SqEq = "Введенное
ур-е не является квадратным"
End If
End Function
2.3. Распечатка
результатов выполнения
3. Программная обработка информации
в таблице Excel
3.1. Описание
организации информации в таблице
Excel
Создание
в прикладном программном продукте Excel
макроса, обеспечивающего обработку информации,
расположенной в таблице Excel. В таблице
Excel, в первой строке, заданы положительные
целые числа. Информация занесена, начиная
с первого столбца. Количество заполненных
столбцов не задается. Программный код,
должен обеспечить определение местоположения
(номера столбца) максимального элемента.
3.2. Условие
задачи на организацию обработки информации,
представленной в виде таблицы Excel
Создание
в прикладном программном продукте Excel
макроса, обеспечивающего обработку информации,
расположенной в таблице Excel. В таблице
Excel, в первой строке, заданы положительные
целые числа. Информация занесена, начиная
с первого столбца. Количество заполненных
столбцов не задается. Программный код,
должен обеспечить определение местоположения
(номера столбца) максимального элемента.
3.3. Распечатка
программного кода
Sub FindMaxValue()
Dim oRg As Range, iMax As Variant
'Выбираем первую строку
в качестве диапазона поиска
Set oRg = Rows("1")
'Находим максимальное
значение
iMax = Application.Max(oRg)
'Выбираем в
диапазоне ячейку, содержащую максимальное
значение
oRg.Find(What:=iMax, _
After:=oRg.Range("A1"),
_
LookIn:=xlValues,
_
LookAt:=xlPart,
_
SearchOrder:=xlByRows,
_
SearchDirection:=xlNext,
MatchCase:=False _
).Select
'Изменяем формат
выбранной ячейки (цвет)
With Selection.Interior
.Pattern
= xlSolid
.PatternColorIndex
= xlAutomatic
.ThemeColor
= xlThemeColorAccent3
.TintAndShade
= 0
.PatternTintAndShade
= 0
End With
'Выводим сообщение
с данными по найденной ячейке
With Selection
MsgBox
"Max value : " & iMax & vbCrLf & _
"Cell
position " & vbCrLf & _
"Row
: " & .Row & vbCrLf & _
"Column
: " & .Column
End With
End Sub
3.4. Распечатка
результатов выполнения
4. Постановка
задачи на обработку информации
в таблице Excel с использованием
встроенного языка VBA
4.1 Описание
условия задачи
Пусть есть станок возраста
t лет. Пусть оборудование можно менять
раз в год (в самом конце года). Пусть r(t)
– стоимость продукции, l(t) – затраты на
оборудование (сервис), s(t) – остаточная
стоимость оборудования, p – стоимость
нового оборудования.
Необходимо спланировать оптимальный
график замены оборудования на N+1 лет (т.е.
так, чтобы за N+1 лет получить максимальную
прибыль).
4.2 Распечатка
программного кода
Option Explicit
Sub ChangingEquipmentIssue()
Dim oRg As Range, p As Double, s As Double, n As
Double, str As String, i As Integer, j As Integer
‘Обеспечиваем ввод
параметров с клавиатуры
str = InputBox("Введите
число лет", "Ввод чисел")
If (str = "") Then
n = 0
Else
n = str
End If
str = InputBox("Укажите
остаточную стоимость", "Ввод чисел")
If (str = "") Then
s = 0
Else
s = str
End If
str = InputBox("Укажите
стоимость нового оборудования", "Ввод
чисел")
If (str = "") Then
p = 0
Else
p = str
End If
‘Создаем двойной цикл,
заполняющий ячейки
For i = 1 To n
For j
= 1 To n + 1
‘При заполнении первой строки используем
функцию ChEqIsFirst
If (i = 1) Then
Cells(1, j) = ChEqIsFirst(p, s, j - 1)
‘При заполнении последующих строк - ChEqIsNext
Else
Cells(i, j) = ChEqIsNext(p, s, j - 1, i)
End If
Next j
Next i
End Sub
Function ChEqIsFirst(p As Double, s As Double, t
As Integer)
Dim fi As Double
If (10 - t > 0) Then fi = 10
- t Else fi = 0
'ChEqIsFirst = max(fi, fi + s
- p)
If (fi > fi + s - p) Then ChEqIsFirst
= fi Else ChEqIsFirst = fi + s - p
End Function
Function ChEqIsNext(p As Double, s As Double, t As
Integer, i As Integer)
Dim fi As Double
If (10 - t > 0) Then fi = 10
- t Else fi = 0
'Если лучше без замены
- вывести число, иначе - вывести число,
выделить и закрасить ячейку
If (fi + Cells(i - 1, t + 2) >
10 - p + s + Cells(i - 1, 2)) Then
ChEqIsNext
= fi + Cells(i - 1, t + 2)
Else
ChEqIsNext
= 10 - p + s + Cells(i - 1, 2)
Cells(i,
t + 1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End Function
4.3 Распечатка
результатов выполнения
Пусть в нашей задаче fi = r(t) -
l(t) = max(10-t, 0); s(t), p – константы, задаваемые
пользователем вместе с числом лет N.
Программой был сгенерирован
график. В интересующей нас последней
строке замена оборудования происходит
после 4 лет эксплуатации (незакрашенные
ячейки – эксплуатация без замены). Следовательно,
для оптимальной работы потребуется 4
замены за 13 лет, т.к. рекомендуется замена
с периодичностью 4 года.
Использованные для вычисления
таблицы формулы:
Первая строка:
Последующие:
В них если максимум – первая
строка, то выгоднее эксплуатация без
замены, иначе – с заменой.