Расчетно-графическая работа №2

advertisement
Пример оформления титульного листа
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Московский государственный
машиностроительный университет (МАМИ)
Расчетно-графическая работа №2
по дисциплине «Информатика»
(второй семестр)
Вариант № _________
(номер варианта РГР)
Выполнил студент _________________
(ФИО студента)
Группа __________________
(Номер группы)
Проверил _________________
(ФИО преподавателя)
Москва - 2013
Краткие теоретические сведения
В конспект второй работы следует включить:



запись операторов сравнения и
циклов в VBA;
правила описания массивов на VBA;
задание для своего варианта расчетнографической работы, текст
программы на языке VBA, исходные
данные для отладки программы и
ожидаемый результат работы
программы.
Конспект может быть написан
ручкой или напечатан на принтере
Задание для расчетно-графической
работы №2.
По списку повторяющихся фамилий
абонентов
и
сумм
за
каждый
телефонный
разговор
абонента
вычислить для указанной фамилии
абонента: общую сумму к оплате,
количество его звонков, среднюю
стоимость его звонка.

Тестовые данные – создать набор
тестовых данных и нарисовать
эскиз листа таблицы Excel с этими
данными с указанием имен
столбцов и строк, либо приложить
скриншот таблицы Excel с
тестовыми данными. Например
Перерисовать полученный график с экрана,
либо приложить скриншот полученного
результата
Задание для лабораторной работы №2.
Составить программу для
определения среднего
арифметического положительных
чисел, расположенных в первых
пяти строках и первых трех
столбцах рабочего листа Excel.
Вывести положительные числа в
файл с именем «Res2.txt». Записать
положительные числа в
одномерный массив, отсортировать
их по возрастанию и вывести
полученный массив данных в файл
«Res2.txt» и в первый столбец
рабочего листа Excel, начиная с 11ой строки. Сохранить рабочую
книгу Excel в файле с названием
Lab2, а программу в файле Prog2.
Пример тестовых данных для
отладки программы






Sub Prog2()
Dim Mas() As Variant ' переменная Mas - одномерный
массив
Dim S As Single ' Объявляем рабочие переменные
Dim Kol As Integer, i As Integer, j As Integer
S = 0 ' переменная для вычисления суммы
положительных чисел
Kol = 0 'переменная для вычисления количества
положительных чисел









For i = 1 To 5 Step 1 ' цикл для перебора первых пяти
строк листа Excel
For j = 1 To 3 Step 1 ' цикл для перебора первых трех
столбцов листа
If Cells(i, j) > 0 Then
' если число в ячейке
положительное, то
S = S + Cells(i, j) : Kol = Kol + 1
'
добавляем его к сумме
End If ' и увеличиваем количество положительных
чисел на единицу
Next j ' заканчиваем цикл по столбцам
Next i ' заканчиваем цикл по строкам
' выводим на лист ответ



















' Сортировка массива Mas по возрастанию
For i = 0 To k - 1 Step 1
For j = 1 To k - i Step 1
If Mas(j - 1) > Mas(j) Then ' если слева число
больше чем справа,
r = Mas(j)
' меняем их местами
Mas(j) = Mas(j - 1)
Mas(j - 1) = r
End If
Next j
Next i
' Вывод массива Mas в файл и на текущий
рабочий лист
Print #1,
"Отсортированный массив
положительных чисел"
Cells(10, 1) = "Отсортированный массив
положительных чисел"
For i = 0 To k Step 1
Print #1, Mas(i)
' вывод элемента
массива в файл
Cells(i + 11, 1) = Mas(i) ' вывод элемента
массива в столбец Excel
Next i
Close ' закрываем файл вывода
End Sub
Положительные числа первых пяти
строк и первых трех столбцов
5
5
5
1,5
8,5
Отсортированный массив
положительных чисел
1,5
5
5
5
8,5
-
-
-
Подготовка к выполнению к расчетнографической работы:
ознакомиться с заданием для выполнения
работы в Excel. Составить тестовые
данные для отладки программы и
записать их в отчет. Продумать структуру
входных и выходных данных;
написать макрос для задания своего
варианта;
выполнить расчетно-графическую работу
на компьютере, соблюдая
последовательность действий,
аналогичную выполнению лабораторной
работы 2. Файлу Excel дать имя
«RGR_2», макрос с программой
сохранить в файле «RGR_Prog_2»;
в отчет перенести вид экрана с
тестовыми данными и результатом
работы программы.
Подготовить в соответствии с
вариантом задания таблицу со
списком наименований (фамилий)
и значений необходимых полей.
Подготовить макрос, в котором для
указанного (среди его операторов)
наименования (фамилии)
вычислить и записать в ячейки
значения требуемых параметров.

Массив - это множество скалярных
данных с одинаковыми параметрами
типа, элементы которого упорядочены
по прямоугольной схеме. Скалярные
объекты, образующие массив,
являются элементами массива. Имя
массива образуется в соответствии с
общими правилами образования имен
в VBA и определяет адрес первой
ячейки участка памяти, хранящего
числовые значения массива. Для
указания конкретного элемента
массива используется переменная с
индексом. Индексированная
переменная состоит из имени и
списка индексов, однозначно
задающих местоположение элемента
в массиве. Например, ALFA(3), X(3,5),
MASSIV(L,M+2).


Количество индексов в массиве
определяет его размерность, и
массивы могут быть, соответственно,
одномерными, двумерными,
трехмерными и т.д. Например: X(k),
M2(ind), Primer(i+2*l) - обозначают
элементы одномерных массивов;
Mas(i, j), R(2, 5) обозначают элементы
двумерных массивов.
В VBA используются статические и
динамические массивы. При
определении статического массива
указывается его количество
элементов. Размер резервируемой
области памяти для хранения
значения статического массива
зависит от типа и количества
элементов в массиве. Для
динамически размещаемых массивов
место в оперативной памяти
отводится в момент выполнения
программы.








Тип элементов массива определяется
теми же способами, что и тип простой
переменной с помощью операторов Dim
или Public. Но при объявлении
статических массивов необходимо
определить размерность и количество
элементов в массиве, для динамических
массивов объявляется только
размерность массива, а количество
элементов определяется позже
оператором ReDim. При объявлении
количества элементов массива можно в
круглых скобках после имени указать
только верхнее значение индекса.
Нижнее значение индекса будет
считаться нулевым.
Dim Array(50) As Single
Dim Var2() As Single
Dim M(3,4) As Integer
Если нижней индекс массива отличается
от нуля, то при объявлении массива
необходимо указать диапазон индексов:
Dim Array1(1 To 10) As Single
Dim Mas(1 To 3 , 1 To 4) As Integer
Ввод-вывод массивов
Задать значения элементам массива
можно следующими способами:
- с помощью арифметического
оператора присваивания (см.
программу предыдущего примера);
- из текстового файла оператором ввода
Input;
- через диалоговые окна Excel;
- из ячеек активного листа рабочей
книги Excel.
Вывести значения элементов массива из
прогроаммы можно следующими
способами:
- через диалоговое окно Excel
оператором MsgBox;
- в текстовый файл оператором Print;
- в окно отладки оператором
Debug.Print;
- в ячейки активного листа рабочей
книги Excel командой Cells.
Обработка массивов осуществляется по
следующей последовательности:
- ввод и контрольный вывод массива;
- обработка элементов массива;
- вывод полученного результата.
Обработка массива может выполняться по
двум схемам - полная выборка элементов
массива и частичная выборка элементов
массива.
При полной выборке обрабатываются все
элементы массива без исключения. При
частичной выборке – обрабатываются
только элементы массива, отвечающим
заданным условиям. В полной выборке
массива всегда будет получен результат.
В случае частичной выборки результат
может быть не получен по той простой
причине, что в массиве может не
оказаться элементов, удовлетворяющих
заданным требованиям. Поэтому при
частичной выборке перед выводом
результата необходим дополнительный
анализ – получен результат или нет.
1.
В задачах на частичную выборку
встречаются три вида анализа:
Проверка знака элемента массива
– положительный, отрицательный
или нулевой элемент. Анализ
осуществляется оператором If, в
котором очередной элемент
массива сравнивается с нулем
2. Проверка наличия или отсутствия
дробной части у элемента массива.
Оператор If, для такого анализа
может использовать функцию int()
– определения целой части числа
3. Проверка кратности элемента
массива какому либо числу.
Наиболее часто возникает
необходимость проверки числа на
четность или нечетность. Оператор
If для такого анализа может
использовать функцию int()





Двумерные массивы обозначаются
переменными с двумя индексами и
используются для представления
матриц. Первый индекс в
обозначении элемента массива
является номером строки, а второй
- номером столбца матрицы.
Так же как и одномерные массивы,
размеры двумерных массивов
должны быть определены в начале
программы. Причем для
статически размещаемых массивов
следует указать предельные
значения номеров строк и столбцов
массива. Например
Dim MAMI(4,6) As Integer
Dim A2(4,-3 To 3) As Single
Dim B_matr(3 To 7, 6) As Integer

В отличие от одномерных
массивов, где конкретный элемент
массива определяется одним
индексом, при обработке
двумерных массивов следует
сформировать все возможные
сочетания численных значений
двух индексов. Это реализуется с
помощью двух циклов- один по
индексам строк, другой по
индексам столбцов. В зависимости
от того, какой из этих циклов будет
внешним, различают две схемы
обработки двумерных массивов по строкам, когда внешним
является цикл по номерам строк, и
по столбцам, когда внешним
является цикл по номерам
столбцов.
' схема обработки массива
' по строкам
For i=1 To N ' внешний цикл
For j=1 To M ' внутренний цикл
' обработка элемента А(i,j)
Next 'конец внутреннего цикла j
Next 'конец внешнего цикла I
' схема обработки массива
' по столбцам
For j=1 To M
For i=1 To N
'обработка элемента А(i,j)
Next ' внутр. цикл i
Next ' внешний цикл j
Ввод-вывод двумерных массивов
может быть организован такими же
способами, что и ввод-вывод
одномерных массивов. Однако при
вводе-выводе двумерных массивов
переменной длины, когда при
составлении программы
неизвестно количество строк и
столбцов, их количество должно
быть определено перед началом
работы с массивом.
Download