- •Содержание
- •Алгоритмизация и программирование vba введение
- •1 Макросы
- •На панели быстрого запуска
- •2. Алгоритмизация
- •2.1 Алгоритм. Общие сведения.
- •Форма записи алгоритма на естественном языке
- •2.3 Графическая форма записи алгоритма
- •2.4 Правила оформления схем алгоритмов
- •2.5 Основные этапы подготовки и решения задачи на компьютере
- •2.6 Постановка задачи. Разработка математической модели
- •Складских помещений
- •Равным плану d в виде блок-схемы
- •Массива по строкам
- •3 Язык программирования
- •Функции InputBox
- •Воды предприятием и номера месяца с минимальным расходом в виде блок-схемы
- •Программирование на vba в microsoft office
- •4.1 Программирование на vba в Excel
- •(Для наглядности выделен)
- •В нём активной ячейки
- •В формуле ячейки
- •Change объекта WorkSheet
- •4.2 Программирование на vba в Word
- •4.3 Программирование на vba в PowerPoint
- •«Элементы управления»
- •5 Технология организации, хранения и обработки данных
- •5.1 Общие сведения
- •5.2 Листинг программы
- •5.3 Алгоритм программы
- •5.4 Результат работы
- •Список использованных источников
Функции InputBox
Оператор вывода результатов Debug.Print [список_вывода] осуществляет вывод результатов работы программы в окно Immediate.
Вызов этого окна выполняется с помощью команды меню, а именно: Вид → Прямое окно (View/Immediate).
Переменные из списка вывода могут отделяться друг от друга запятой или точкой с запятой, что влияет на форму печати. Если в качестве разделителя используется запятая, то печать позиционированная, при которой строка разбивается на зоны по 14 позиций в каждой зоне. При использовании в качестве разделителя выводного списка точки с запятой числа печатаются подряд через один пробел. Такая форма печати получила название — уплотненная печать. Например:
Debug.Print A, B - если значение А = 0.75, а В = - 178, то на экране дисплея эти значения будут выведены в следующем виде: _0,75 -178
Debug.Print A; B - если значение А = 0.75, а В = -178, то на экране дисплея эти значения будут выведены в следующем виде: _0.75 _ -178
Если оператор Debug.Print записан без списка переменных, то при печати будет пропускаться одна пустая строка.
В операторе Debug.Print можно использовать функцию TAB(n). Функция TAB используется как один из элементов в списке вывода оператора Debug.Print. Она обеспечивает вывод следующего за ней элемента в позицию n, номер которой задан как аргумент функции TAB (рисунок 3.3).
Например:
Debug.Print "Sum="; Tab(15); Sum - в 0-ую позицию выводится
Sum=, ав 15-ую–число
Рисунок 3.3 − Результаты позиционированного вывода в окно Immediate
Если аргумент функции TAB меньше текущей позиции строки, то вывод результата осуществляется в следующей строке экрана. Программа линейной структуры может содержать только операторы ввода, вывода и присваивания. Оператор присваивания служит для присваивания переменной значения арифметического выражения и имеет вид:
Переменная = Выражение
При выполнении этого оператора вычисляется значение «Выражения» и присваивается «Переменной», при этом тип выражения должен совпадать с типом переменной.
Тип выражения определяется типом операндов, входящих в него, и зависит от операций, выполняемых над ними.
Например:
X = (Y + Z) / (2 + Z * 10) - 1/3 - вещественный тип
0$=”Минск” - символьный тип
Для записи арифметических выражений используются знаки операций (сложение, умножение, вычитание, деление, возведение в степень), функции, круглые скобки.
При наличии в выражении нескольких арифметических операций порядок их выполнения определяется правилами приоритета:
1. вычисляются значения в скобках;
2. вычисляются значения функций;
3. возведение в степень;
4. выполняются операции умножения и деления;
5. выполняются операции сложения и вычитания.
Операции выполняются слева направо с учетом их приоритета. Желаемая последовательность операций обеспечивается путем расстановки скобок в соответствующих местах выражения.
Таблица 3.2 – Встроенные математические функции
Практическая часть
Рассмотрим примеры программ, где алгоритм решения является линейным.
Пример №1
Листинг программы 3.1
Вычисление расстояния до складских помещений.
Sub Пример1()
Dim a, b, c, d, r As Single
a = InputBox("Введите значение расстояния a", "Окно ввода")
b = InputBox("Введите значение расстояния b", "Окно ввода")
c = InputBox("Введите значение расстояния c", "Окно ввода")
d = 2 * ((a * b) ^ 2 + (a * c) ^ 2 + (b * c) ^ 2) - a ^ 4 - b ^ 4 - c ^ 4
r = Round((a * b * c) / Sqr(d), 3)
Debug.Print "Расстояние доскладских помещений = "; r; "км"
End Sub
Пример №2
Листинг программы 3.2
Вычисление суммы значений двух функций.
Sub Пример2()
Dim a, b, c, x, t, p, y, z, s As Single
a = InputBox("Введите значение переменной a", "Окно ввода")
b = InputBox("Введите значение переменной b", "Окно ввода")
c = InputBox("Введите значение переменной c", "Окно ввода")
x = InputBox("Введите значение переменной x", "Окно ввода")
t = a + b
p = c * x
y = (t ^ 3 - Sin(p)) / (a - 3.75)
z = Log(p) - ((t + 3.75) / a) ^ (1 / 3)
s = Round(y + z, 3)
Debug.Print "s = "; s
End Sub
В рассмотренных примерах программа ведет диалог с пользователем, т.е. в ней предусматривается вывод пояснительных сообщений. В противном случае сам программист может через некоторое время забыть, что необходимо вводить и что является результатом.
Программирование алгоритмов разветвленной структуры
Практическая реализация большинства функциональных задач осуществляется через структуру принятия решения.
При этом в соответствующих им вычислительных задачах используются операторы управления и как их разновидность оператор условного перехода (ветвления, выбора).
Операторы условного перехода используются в программе для реализации условных алгоритмических конструкций, которые вызывают выполнение различных частей программы в соответствии с условиями, существующими на момент выполнения этих операторов. Одним из важных элементов программного оператора выбора является выражение условия, значением которого может быть истина (True) или ложь (False).
1) Общая форма оператора условного перехода такова:
If Условие Then Оператор_1 Else Оператор_2
Оператор_1 выполняется в том случае, если Условие истинно, в противном случае выполняется Оператор_2.
2) Последовательность вычислений, выбранная по условию, может задаваться не одним, а несколькими операторами.
При этом условный оператор имеет блочную структуру:
If Условие Then
Блок_операторов_1
Else
Блок_операторов_2
End If
Блок_операторов_1 выполняется в том случае, если Условие истинно, в противном случае выполняется Блок_операторов_2.
3) В условном операторе может проверяться несколько условий, тогда он имеет вид:
If Условие_1 Then
Блок_операторов_1
Else If Условие_2 Then
Блок_операторов_2
Else If Условие_3 Then
…
Else
Блок_операторов_по_умолчанию
End If
Если истинно Условие_^ выполняется Блок_операторов_^ если же все условия ложны, выполняется последний Блок_операторов по умолчанию.
4) В случае, когда ветвь Else является необязательной, условный оператор может быть записан в краткой форме:
If Условие Then
Блок_операторов_1
End If
Выражения-условия записываются с помощью операций отношения. Отношение — это два выражения, разделенных между собой знаком операции отношения (>, <, =, <>, <=, >=). Отношение является простейшей конструкцией логического выражения.
Оно вычисляет результат - истина, если выполняется заданное соотношение, и ложь - в противном случае.
Логические операции: NOT («не» - отрицание), AND («и» - логическое умножение), OR («или» - логическое сложение).
Приоритет выполнения операций при вычислении логических выражений следующий: 1) NOT; 2) AND; 3) OR.
Например, если значение переменной X принадлежит некоторому интервалу значений от а до b, то переменной Y будет присвоено значение 1, иначе переменной Y будет присвоено значение 0.
If (X>=a) and (X<=b) Then
Y=1
Else
Y=0
End If
Рассмотрим примеры программ, где алгоритм решения является разветвлённым.
Пример №3
Листинг программы 3.3
Вычисление заработной платы за неделю.
Sub Пример3 ()
Dim t, zp As Single
Dim k AsInteger
K = InputBox("Введите количество отработанных часов","Окно ввода")
t = InputBox("Введите стоимость одного часа", "Окно ввода")
If k >= 40 Then
zp = 40 * t + (k - 40) * 2 * t
Else
zp = 40 * t
EndIf
Debug.Print "Заработная плата за неделю= "; Round(zp, 2); "руб."
End Sub
Пример №4
Листинг программы 3.4
Исключение неопределенности функции.
Опустим операторы ввода и описание переменных:
……………………………..
t = a * x - b
p = 2.5 * b * x
If p = 0 Then
Debug.Print "Y неопределена"
Else
If t <= 0 Then
Debug.Print "Y неопределена"
Else
y = (Log(t) + c) / p
Debug.Print "y="; Round(y, 3)
End If
……………………………..
Программирование алгоритмов циклической структуры
Цикл — это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов. Операторы, повторяющиеся в цикле, называются телом цикла. Существует два основных вида циклов: цикл со счётчиком и цикл с условием.
1) Цикл со счётчиком используется в том случае, когда количество повторов заданного блока операторов известно заранее. Для организации цикла с известным числом повторений используется оператор For... Next. Синтаксис этого оператора таков:
For Счетчик Цикла = Начальное Значение То Конечное Значение [Step Шаг]
Операторы тела цикла
Next [Счетчик Цикла]
Счетчик Цикла — числовая переменная, используемая как счетчик повторений цикла;
Начальное Значение — начальное значение счетчика цикла;
Конечное Значение — конечное значение счетчика цикла;
Шаг — приращение счетчика при каждом шаге цикла (если параметр Step не указан, то по умолчанию значение приращения равно 1);
Операторы тела цикла — операторы, выполнение которых нужно повторить определенное количество раз.
Оператор Next увеличивает значение счетчика (параметра) цикла на заданный шаг и передает управление на продолжение цикла, то есть на оператор For, где анализируется полученное значение счетчика цикла: текущее значение счетчика цикла сравнивается с конечным значением. Если текущее значение параметра цикла больше конечного его значения, то происходит выход из цикла на оператор, следующий за оператором Next.
2) Цикл с условием применяется тогда, когда число повторений операторов тела цикла заранее неизвестно. Рассмотрим две разновидности данной конструкции, основанных на операторе цикла с условием Do...While, с предусловием и с постусловием.
Синтаксическая конструкция оператора Do ... While:
цикл с предусловием цикл с постусловием
Do WhileУсловие Do
Тело цикла Тело цикла
Loop Loop While Условие
Do — ключевое слово, обозначающее начало цикла;
While — ключевое слово, указывающее тип цикла;
Условие — логическое выражение, принимающее значение True или False;
Loop — ключевое слово, указывающее на окончание цикла.
Пример №5
Листинг программы 3.5
Табулирование функции с постусловием.
Sub Пример5()
Dim a, b As Single
Dim h As Single
Dim x, y As Single
a=InputBox("Введите начальное значение аргумента", "Окно ввода")
b=InputBox("Введите конечное значение аргумента", "Окно ввода")
h = InputBox("Введите шаги зменения аргумента", "Окно ввода")
Debug.Print "Аргументы", "Значения"
x = a
Do
y = x * Sin(x) 'здесь f(x)=x*sin(x)
Debug.Print x, y
x = x + h
Loop While x <= b
End Sub
В данной программе для того, чтобы заголовки таблицы не выводились при каждом повторе цикла (рисунок 3.4), оператор вывода заголовков Debug.Print «Аргументы», «Значения» записан перед началом работы цикла.
Рисунок 3.4 – Результаты работы цикла при а= - 5, b=5, h=2
Пример №6
Листинг программы 3.6
Табулирование функции с циклом For.
Фрагмент программы по алгоритму с блоком модификации без описания переменных и оператора ввода исходных данных:
……………………………..
Debug.Print "Аргументы", "Значения"
For x = a To b Step h
y = x * Sin(x)
Debug.Print x, y
Next x
Пример №7
Листинг программы 3.7
Табулирование функции при помощи цикла со счетчиком.
Фрагмент программы без описания переменных и оператора ввода исходных данных:
………………….
Debug.Print "Аргументы", "Значения"
x = a
n = Abs((b - a) / h) + 1
For i = 1 To n
y = x * Sin(x)
Debug.Print x, y
x = x + h
Next i
Пример №8
Листинг программы 3.8
Ежегодное начисление амортизации.
Фрагмент программы примера №6 без описания переменных и оператора ввода исходных данных:
……………….....
For N = 1 To 10
R0 = Round(Debug.Print "Год", "Стоимость оборудования"
R0 * (1 - P / 100) + D, 2)
Debug.Print N, R0
Next N
Организация программ обработки одномерных массивов
Массив данных в программе рассматривается как переменная структурированного (составного) типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.
Переменные, представляющие элементы массивов, называются переменными с индексами в отличие от простых переменных, представляющих в программе элементарные данные. Индекс в обозначении компонент массивов может быть константой, переменной или выражением целого типа.
Если за каждым элементом массива закреплен только один индекс - его порядковый номер, то такой массив называется одномерным.
Допустим числовая последовательность четных натуральных чисел 2, 4, 6, ..., N представляет собой одномерный массив, элементы которого можно обозначить А(1)=2, А(2)=4, А(3)=6, ..., А(К)=2 • (К+1), где К - номер элемента, а 2, 4, 6, ..., N - значения. Индекс (порядковый номер элемента) записывается в круглых скобках после имени массива. Например, A(7) - седьмой элемент массива А; D(6) - шестой элемент массива D.
Для размещения массива в памяти компьютера отводится область памяти, размер которой определяется типом, длиной и количеством элементов массива. Существует две разновидности массивов: статические и динамические.
Статические массивы — при объявлении такого массива значенияего верхней и нижней границ не могут быть изменены в программе.
Данный вид массивов описывается так же, как и переменные — при помощи служебного слова Dim с последующим указанием типа после служебного слова As. При этом может быть указана как верхняя граница, так и обе границы одновременно.
Например:
Dim A(9) As Integer Dim B(l To 10) As Single
В данном случае оба массива содержат одно и то же количество элементов. Однако нумерация элементов массива А начинается с нуля, в то время как нумерация элементов В — с единицы. Для явного указания границ следует использовать служебное слово То, в то время как при описании стандартного массива с нумерацией элементов от нуля необходимо просто указать значение верхней границы.
Динамические массивы используются в том случае, когда количество элементов массива заранее неизвестно и будет определяться в процессе выполнения программы.
Описание динамических массивов осуществляется в два этапа:
1. объявить массив с использованием служебного слова Dim, но без указания размерности;
2. в нужном месте программы описать данный массив с требуемым значением для размерности при помощи оператора ReDim. Например:
Dim arrA ( ) As Integer ' Описание типа массива
n=InputBox(“Введите размерность массива”)
‘Ввод значения размерности в диалоговое окно ввода
ReDim arrA(n) As Integer ' Указание размерности
Пример №9
Листинг программы 3.9
Введение последовательности чисел 1, 2, –5, 6, –111, 0 в память компьютера.
Sub Ввод_статического_массива()
Dim i, N As Integer
Dim A(6) As Single
For i = 1 To 6
A(i) = InputBox("Введите" & i & "-й элемент массива")
Debug.Print i; "-й элемент ", A(i)
Next i
End Sub
Пример №10
Листинг программы 3.10
Заполнение одномерного массива элементами, отвечающими данному соотношению: a1=1; a2=1; ai=ai–2+ai–1 (i = 3, 4, …, n).
Sub Ввод_динамического_массива()
Dim i, N As Integer
Dim A() As Single
N = InputBox("Введите количество элементов")
ReDim A(N) As Single
A(1) = 1
A(2) = 1
For i = 3 To N
A(i) = A(i - 1) + A(i - 2)
Next i
For i = 1 To N
Debug.Print i; "-й элемент ", A(i)
Next i
End Sub
С элементами массива удобно работать, используя цикл For. В этом случае в качестве счетчика цикла будет использоваться значение индекса элемента. Цикл ввода элементов массива с последующим их выводом в окно Immediate на языке VBA можно записать в соответствии с листингом программы 3.9 и листингом программы 3.10. Ранее были построены математические модели и блок-схемы наиболее распространенных алгоритмов обработки одномерных массивов.
Рассмотрим примеры программ, где алгоритм представляет собой обработку массива данных.
Пример №11
Листинг программы 3.11
Определение общей и средней суммы оборота.
Sub Пример_1()
Dim A() As Single
Dim S, C As Single
Dim i, N As Integer
N = InputBox("Введите количество элементов массива")
ReDim A(N) As Single
For i = 1 To N
A(i) = InputBox("Введите" & i & "-й элемент массива")
Debug.Print i; "-й оборот ", A(i)
Next i
S = 0
For i = 1 To N
S = S + A(i)
Next i
С = S / N
Debug.Print "общая сумма оборота за месяц= "; S
Debug.Print "средняя сумма оборота за месяц= "; С
End Sub
Пример №12
Листинг программы 3.12
Нахождение количества дней с оборотом, равным плану D.
Sub Пример_2()
Dim A() As Single
Dim D As Single
Dim i, K, N As Integer
D = InputBox("Введите план оборота за день")
N = InputBox("Введите количество элементов массива")
ReDim A(N) As Single
For i = 1 To N
A(i) = InputBox("Введите" & i & "-й элемент массива")
Debug.Print i; "-й оборот ", A(i)
Next i
K = 0
For i = 1 To N
If A(i) = D Then
K = K + 1
End If
Next i
Debug.Print "количество дней c оборотом "; D; "= "; K
End Sub
Пример №13
Листинг программы 3.13
Определение максимального оборота предприятия за данный период и номера дня с максимальным оборотом.
Sub Пример_3()
Dim A() As Single
Dim M As Single
Dim i, NM, N As Integer
N = InputBox("Введите количество элементов массива")
ReDim A(N) As Single
For i = 1 To N
A(i) = InputBox("Введите" &i& "-й элемент массива")
Debug.Print i; "-й оборот ", A(i)
Next i
M = A(1)
NM = 1
For i = 2 To N
If A(i) > M Then
M = A(i)
NM = i
End If
Nexti
Debug.Print "Номер дня с максимальным оборотом="; NM
Debug.Print "Максимальный оборот предприятия= "; M
End Sub
Пример №14
Листинг программы 3.14
Организация нового массива, содержащего информацию об ежедневном отчислении денежных средств в дополнительный фонд.
Sub Пример_4()
Dim A() As Single
Dim B() As Single
Dim i, N As Integer
N = InputBox("Введите количество элементов массива")
ReDim A(N) As Single
ReDim B(N) As Single
For i = 1 To N
A(i) = InputBox("Введите" & i & "-й элемент массива")
Debug.Print i; "-йоборот "; A(i)
Next i
For i = 1 To N
B(i) = 0.05 * A(i)
Next i
For i = 1 To N
Debug.Print i; "-е отчисление "; B(i)
Next i
End Sub
Пример №15
Листинг программы 3.15
Накопление общего веса продуктов, срок хранения которых менее одного месяца.
Sub Пример8()
Dim K() As Single
Dim C() As Single
Dim P() As String
Dim S As Single
Dimi, NAsInteger
N = InputBox("Введите количество элементов массива")
ReDim K(N) As Single
ReDim C(N) As Single
ReDim P(N) As String
For i = 1 To N
P(i) = InputBox("Введите" & i & "-й продукт")
K(i) = InputBox("Введите" & i & "-й вес")
C(i) = InputBox("Введите" & i & "-й срок хранения")
Next i
Debug.Print "N", "Наименование", "Вес, кг", "Срок хранения, дни"
S = 0
For i = 1 To N
If C(i) < 30 Then
S = S + K(i)
End If
Debug.Print i, P(i), K(i), C(i)
Next i
Debug.Print "Вес продуктов со сроком хранения меньше месяца= "; S
End Sub
Пример №16
Листинг программы 3.16
Сортировка веса продуктов по возрастанию.
Фрагмент можно использовать как самостоятельную программу, описав переменные и массив, или добавить к программе листинга 3.15.
For i = 1 To N - 1
l = i
For j = i To N
If K(j) <= K(l) Then l = j
Next j
Pr = K(i): K(i) = K(l): K(l) = Pr
Next i
For i = 1 To N
Debug.Print "K("; i; ")= "; K(i)
Next i
Организация программ обработки двумерных массивов
Для описания многомерных массивов используются конструкции.
Например:
Dim A(3, 4) As Integer ‘Объявлена таблица 4 строки, 5 столбцов
Dim B(l To 4, 1 To 5) As Single ‘Объявлена таблица 4 строки, 5 столбцов
В данном примере объявленные массивы являются двумерными и содержат одинаковое количество элементов, но начальная нумерация элементов различна, так массив A нумеруется начиная с нуля, В - начиная с единицы.
Аналогом двумерного массива может быть любая таблица, в том числе и электронная, заполненная любым набором однотипных данных. Двумерные массивы называют матрицами размерностью n строк и m столбцов.
При обработке многомерных массивов используются вложенные циклы For ... Next. Например, необходимо ввести значения элементов двумерного массива А.
Пример №17
Листинг программы 3.17
Фрагмент программы заполнения двумерного массива A.
Dim A() As Single
Dim m, n, i, j As Integer
n = InputBox(“Введите количество строк”)
m = InputBox(“Введите количество столбцов”)
ReDim A(1 To n, 1 To m)
For i = 1 То n
For j = 1 To m
A(i, j) = InputBox(“Введите элемент массива ” &i& “строки ” &j& “столбца ”)
Debug.Print A(i, j); ‘Вывод элементов в одной строке
Next j
Debug.Print ‘Вывод с новой строки
Next i
…
В данном фрагменте при i=1 внутренний цикл по j работает n раз и производится ввод элементов первой строки, затем при i=2 внутренний цикл по j работает так же n раз и так пока i не станет больше m. Оператор Debug.Print с пустым списком вывода используется для заполнения позиций, оставшихся после вывода i-ой строки, пробелами, и следующая строка матрицы выводится с начала новой строки окна Immediate (рисунок 3.5):
Рисунок 3.5 − Результаты вывода элементов массива в виде таблицы
Ранее были построены математические модели и блок-схемы наиболее распространенных алгоритмов обработки двумерных массивов. Рассмотрим примеры программ, где алгоритм представляет собой обработку двумерного массива данных. В данных примерах ввод массивов осуществляется при помощи функции Rnd() – датчика случайных чисел. [8]
Пример №18
Листинг программы 3.18
Нахождение общего выпуска продукции каждого вида.
SubПример0_1()
Randomize
DimVP() AsSingle, S() AsSingle
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer
n = InputBox("Введите число строк n")
m = InputBox("Введите число столбцов m")
ReDim VP(1 To n, 1 To m), S(1 To n)
For i = 1 To n
For j = 1 To m
VP(i, j) = Int(60 * Rnd() + 50) ' Целая часть случ. чисел от 50 до 110
Debug.Print VP(i, j);
Next j
Debug.Print
Next i
For i = 1 To n
S(i) = 0
For j = 1 To m
S(i) = S(i) + VP(i, j)
Next j
Next i
For i = 1 To n
Debug.Print "Общий выпуск продукции " &i& "= " &S(i)
Next i
End Sub
Пример №19
Листинг программы 3.19
Нахождение максимального выпуска продукции каждого вида и месяца с максимальным выпуском.
Sub Пример0_2()
Randomize
Dim VP() As Single, Max() As Single
Dim K() As Integer
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer
n = InputBox("Введите число строк n")
m = InputBox("Введите число столбцов m")
ReDim VP(1 To n, 1 To m), Max(1 To n)
ReDim K(1 To n) As Integer
For i = 1 To n
For j = 1 To m
VP(i, j) = Int(60 * Rnd() + 50) ' Целая часть случ. Чисел от 50 до 110
Debug.Print VP(i, j);
Next j
Debug.Print
Next i
For i = 1 To n
Max(i) = VP(i, 1)
K(i) = 1
For j = 2 To m
If VP(i, j) > Max(i) Then
Max(i) = VP(i, j)
K(i) = j
End If
Next j
Next i
For i = 1 To n
Debug.Print "max выпуск продукции" & i & "=" & Max(i) & "месяц- " &
K(i)
Next i
End Sub
Индивидуальные задания
Данная работа состоит из двух частей. При оформлении задания своего варианта необходимо:
− выполнить построение математической модели;
− разработать блок-схему алгоритма;
− написать программу на алгоритмическом языке.
Часть №1
1. Определить среднюю зарплату, если имеются данные о зарплате работников фирмы из N человек.
2. По итогам экзамена (массиву оценок) определить количество студентов, сдавших экзамен на 4 и 5.
3. Определить номер продавца розничной торговли, имеющего наибольшую выручку за день, если задана дневная выручка каждого из N продавцов.
4. Подсчитать количество продавцов, выполнивших заданную норму выручки, если норма задана и даны дневные выручки каждого продавца.
5. Имеется информация о количестве для N наименований торгового оборудования на складе. Определить номера видов торгового оборудования, количество которых меньше заданного числа P.
6. Имеются данные о зарплате работников фирмы из N человек. Выполнить перерасчет зарплаты, увеличив ее на 10%.
7. Имеется информация о наличии N наименований торгового оборудования на складе. Определить общее количество оборудования.
8. Имеется информация о количестве для N наименований продуктов на складе. Определить количество видов продуктов, запас которых меньше заданной предельной нормы.
9. Имеется информация о количестве для N наименований продуктов на складе. Определить номер продукта, количество которого максимально.
10. Имеется информация о количестве для N наименований продуктов на складе. Определить номер продукта, количество которого минимально.
11. В группе студентов определить старшего по возрасту, если есть данные о возрасте каждого студента.
12. Определить количество студентов группы старше 20 лет, если есть данные о возрасте каждого студента группы.
13. Найти средний возраст студентов группы, если есть данные о возрасте каждого студента группы.
14. Фирма получила данные о стоимости N наименований новых товаров. Определить общую стоимость всех товаров.
15. Фирма получила данные о стоимости N наименований новых товаров. Пересчитать стоимости всех товаров, уменьшив каждую стоимость на 15%.
16. По итогам экзамена определить количество студентов, не сдавших экзамен.
17. Фирма получила данные о стоимости N наименований новых товаров. Определить номер товара, стоимость которого максимальна.
18. Фирма получила данные о стоимости N наименований новых товаров. Определить номер товара, стоимость которого минимальна.
19. Определить суммарный объем продаж одного из магазинов в течение года. Сведения об объеме продаж заданы за каждый месяц.
20. Фирма получила данные о стоимости N наименований новых товаров. Указать номера товаров, стоимость которых не превышает заданную сумму S.
21. Даны сведения об объеме продаж за каждый месяц. Определить удельный вес продаж каждого месяца по отношению к общему объему продаж.
22. Фирма получила данные о стоимости N наименований нового оборудования. Указать номера оборудования, стоимость которого находится в заданных пределах >=S1 и <=S2.
23. Вывести номер месяца, в котором объем продаж был наибольшим, если имеются сведения об объеме продаж за каждый месяц.
24. Вычислить средний объем продаж за 3-й квартал, если заданы объемы продаж за каждый месяц.
25. По итогам экзамена определить среднюю оценку студентов группы.
2) Часть №2
В результате обследования наличия товаров в магазинах города получена информация о названиях товаров, имеющихся в магазинах, количестве обследованных видов продукции данного наименования, количестве видов импортной продукции.
Таблица 3.3 – Исходные данные для примера №1 (часть 2)
Напечатать результаты обследования в виде таблицы, заменив информацию в последнем столбце на - «% импортных видов» (процентное соотношение должно быть вычислено).
В результате обследования наличия товаров в магазинах города получена информация о названиях товаров, имеющихся в магазинах, количестве обследованных видов продукции и количестве импортных видов. Напечатать результаты обследования в виде таблицы 3.4:
Таблица 3.4 – Исходные данные для примера №2 (часть 2)
В результате обследования наличия товаров в магазинах города получена информация о названиях товаров, имеющихся в магазинах, количестве обследованных видов продукции данного наименования, количестве видов импортной продукции.
Таблица 3.5 – Исходные данные для примера №3 (часть 2)
Напечатать таблицу заданного вида и определить общее количество обследованных видов и общее количество импортных видов, а также их долю в процентах.
4. По результатам продажи жилья за полгода администрацией области получена следующая информация:
Таблица 3.6 – Исходные данные для примера №4 (часть 2)
Напечатать эту информацию в виде таблицы, заменив информацию в последнем столбце на «Стоимость 1 кв. м.».
5. По результатам продажи жилья за полгода администрацией области получена следующая информация:
Таблица 3.7 – Исходные данные для примера №5 (часть 2)
Напечатать исходные данные в виде таблицы и составить список городов, в которых количество проданных квартир меньше 20.
6. По результатам продажи жилья за полгода администрацией области получена следующая информация:
Таблица 3.8 – Исходные данные для примера №6 (часть 2)
Напечатать исходные данные в виде таблицы и определить город, в котором стоимость 1 кв. метра минимальна.
7. По результатам продажи жилья за полгода администрацией области получена следующая информация:
Таблица 3.9 – Исходные данные для примера №7 (часть 2)
Напечатать таблицу, заменив последний столбец на «Средняя стоимость 1 квартиры».
8. На междугородней телефонной станции имеется информация об оплате следующего вида: номер телефона, сумма за междугородние телефонные переговоры (МТР), сумма, внесенная абонентом. Оформить эти данные в виде таблицы:
Таблица 3.10 – Исходные данные для примера №8 (часть 2)
Остаток равен разности между суммой, внесенной абонентом и суммой за МТР.
9. На междугородней телефонной станции имеется информация об оплате следующего вида: номер телефона, сумма за междугородние телефонные переговоры (МТР), сумма, внесенная абонентом.
Составить список номеров телефонов тех абонентов, которые должны АТС (остаток меньше 0). Исходные данные вывести в виде таблицы.
10. На междугородней телефонной станции имеется информация об оплате следующего вида: номер телефона, сумма за междугородние телефонные переговоры (МТР), сумма, внесенная абонентом. Составить список номеров телефонов тех абонентов, которые внесли аванс (остаток больше 0). Исходные данные напечатать в виде таблицы.
11. На междугородней телефонной станции имеется информация об оплате следующего вида: номер телефона, сумма за междугородние телефонные переговоры (МТР), сумма, внесенная абонентом.
Определить общую сумму за МТР для абонентов одной АТС по заданным двум первым цифрам номера, например: 55. Вывести сведения об абонентах заданной АТС в таблицу.
12. На междугородней телефонной станции имеется информация об оплате следующего вида: номер телефона, сумма за междугородние телефонные переговоры (МТР), сумма, внесенная абонентом.
Выдать справку по номеру телефона о сумме за МТР и остатке.
Вводится номер телефона, и выдаются сведения. Если сведений нет, то выдается сообщение «Такого телефона нет»
13. О работниках фирмы имеется информация: фамилия, имя и отчество, количество отработанных часов за неделю, размер почасовой ставки. Необходимо вычислить их недельную зарплату (количество часов * ставка) и напечатать в виде таблицы:
Таблица 3.11– Исходные данные для примера №13 (ч. 2)
14. О работниках фирмы имеется информация: фамилия, имя и отчество, количество отработанных часов за неделю, размер почасовой ставки. Необходимо вычислить их недельную зарплату (количество часов * ставка) и подсчитать общую сумму зарплаты, напечатав исходные данные в виде таблицы.
15. О работниках фирмы есть информация: фамилия, имя и отчество, количество отработанных часов за неделю, размер почасовой ставки. Напечатать исходные данные в виде таблицы и вывести список работников, количество проработанных часов в неделю у которых меньше 40.
16. Компания выпускает несколько видов изделий различной стоимости. Известны названия изделий, объемы заказов по каждому виду изделия и стоимость каждого изделия.
Вывести исходные данные в виде таблицы:
Таблица 3.12 – Исходные данные для примера №16 (часть 2)
Подсчитать суммарную стоимость всех заказов.
17. Компания выпускает несколько видов изделий различной стоимости. Известны названия изделий, объемы заказов по каждому виду изделия и стоимость каждого изделия.
Таблица 3.13 – Исходные данные для примера №17 (часть 2)
Вывести таблицу следующего вида, подсчитав стоимость заказа:
Таблица 3.14 – Таблица стоимости заказа
18. Компания выпускает несколько видов изделий различной стоимости. Известны названия изделий, объемы заказов по каждому виду изделия и стоимость каждого изделия. Вывести исходные данные в виде таблицы:
Таблица 3.15 – Исходные данные для примера №18 (часть 2)
Выдать список изделий с указанием их стоимости, объем заказа которых больше 100.
19. Поступает информация с фондовой биржи: название компании, стоимость акции, дивиденды. Выдать эти сведения в виде таблицы:
Подсчитать среднюю стоимость акции.
20. Поступает информация с фондовой биржи: название компании, стоимость акции, дивиденды. Выдать эти сведения в виде таблицы:
Таблица 3.17 – Исходные данные для примера №20 (часть 2)
Получить список компаний, дивиденды которых составляют более 10% от стоимости акции.
21. Фирма располагает следующей информацией: наименование товара; стоимость его единицы; количество единиц (кг, шт., упаковок); название фирмы-поставщика, поставляющего данный товар.
Таблица 3.18 – Исходные данные для примера №21 (часть 2)
Подсчитать общую стоимость каждой поставки и вывести результаты в виде таблицы, заменив второй и третий столбец на столбец «стоимость поставки».
22. Фирма располагает следующей информацией: наименование товара; стоимость его единицы; количество единиц (кг, шт., упаковок); название фирмы-поставщика, поставляющего данный товар.
Определить самый дешевый товар и фирму, его поставляющую.
Исходные данные вывести в виде таблицы.
Таблица 3.19 – Исходные данные для примера №22 (часть 2)
23. Фирма располагает следующей информацией: наименование товара; стоимость его единиц; количество единиц (кг, шт., упаковок); название фирмы-поставщика, поставляющего данный товар.
Таблица 3.20 – Исходные данные для примера №23 (часть 2)
Напечатать список товаров с их полной стоимостью, поставляемых одной фирмой, название которой вводится.
24. В деканате имеются следующие данные успеваемости по предмету группы студентов: Ф.И.О.; аттестация по предмету; кол-во пропусков.
Таблица 3.21 – Исходные данные для примера №24 (часть 2)
Вывести исходные данные в виде таблицы и подсчитать среднюю аттестацию группы и общее число пропусков по предмету.
25. В деканате имеются следующие данные успеваемости по предмету группы студентов: Ф.И.О.; аттестация по предмету; кол-во пропусков.
Таблица 3.22 – Исходные данные для примера №25 (часть 2)
Вывести список студентов, у которых аттестация 0 и количествопропусков больше 4 часов.
Методические указания по выполнению работы
Выполнение примера №1
Имеется информация о потреблении холодной воды предприятием за предыдущий год. Определить номер месяца, в котором расход был минимальным.
Выполним построение математической модели и алгоритма решения данной функциональной задачи.
а) Обозначение переменных:
N – количество месяцев в отчете;
В(N) – массив данных о потреблении воды за N месяцев;
i – номер текущего месяца (i = 1,2,3,...N);
М – минимальный расход воды;
К – номер месяца с минимальным расходом.
б) Тип переменных:
i, K, N – простые переменные целого типа;
В(i)- вещественная переменная с индексом (элемент массива В);
M – простая переменная вещественного типа;
в) Классификация по группам:
исходные данные: B(N);
промежуточный результат: i;
результаты: M, К.
г) При разработке системы расчетных формул необходимо воспользоваться типовыми алгоритмами обработки информационных массивов. Вычислительный процесс циклический, в теле цикла рассматривается условие, при котором выполняется поиск минимального элемента и его номера. Переменная, удовлетворяющая всем требованиям к параметру цикла – i:
начальное значение i=1;
конечное значение i=N;
закон изменения i=i+1.
Система расчетных формул примет вид:
M = B(1) за начальное значение минимума берем первый элемент
K = 1 начальный номер минимального элемента
i = 2 начальный номер следующего элемента
Представим алгоритм определения минимального потребленияхолодной воды предприятием и номера месяца с минимальным расходом в виде блок-схемы (рисунок 3.6):
Рисунок 3.6 – Алгоритм определения минимального потребления
