Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Технология выполнения работы. Содержание отчета



  1. Разработать алгоритм для написания программы в виде блок-схемы.
  2. Написать программу.
  3. Протестировать ее с разными исходными данными.

Содержание отчета

  1. Цель работы, условие задачи
  2. Алгоритм в виде блок-схемы.
  3. Исходный текст программы.
  4. Вводимые данные и результаты.
  5. Фрагменты экрана с диалоговыми окнами Excel.
  6. В программе предусмотреть сбойные ситуации (деление на ноль, извлечение квадратного корня из отрицательного числа и т. д.).
  7. Результат работы программы должен иметь наглядный вид.

Вопросы для защиты работы

  1. Какая конструкция у оператора повтора?
  2. Какие операторы разветвления Вы знаете?
  3. Чем заканчивается оператор IF, если в ветке «да» несколько операторов?
  4. Как выглядит полная форма оператора IF?
  5. Как выглядит оператор IF, если в ветке «нет» отсутствуют операторы?

 

Лабораторная работа № 3.

Циклические алгоритмы. Работа с массивами

Время выполнения

8 часов

Цель работы

Научиться использовать язык программирования Visual Basic for Applications (VBA) для разработки модулей в Excel на основе циклических алгоритмов.

Задачи лабораторной работы

После выполнения данной работы студент должен знать и уметь:

  • знать все операторы, используемые в программах;
  • уметь применять любые из изученных операторов для написания своих модулей;
  • уметь объяснить написанную программу.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система Windows XP, электронные таблицы Excel с приложением в виде языка Visual Basic for Applications.

Общие теоретические сведения

VBA – это язык объектно-ориентированного программирования.

Основными парадигмами являются объект, свойство, метод, событие, класс и семейство объектов.

Объект – это инкапсуляция данных вместе с кодом, предназначенным для их обработки.

Семейство – объект, содержащий несколько других объектов того же типа.

Классы – это проект, на основе которого будет создан объект, т.е. класс определяет имя объекта, его свойства и действия, над ним выполняемые. А каждый объект, свою очередь, является экземпляром класса.

Методы – это действия, выполняемые над объектом.

Свойства – это атрибут объекта, определяющий его характеристики: размер, цвет, положение на экране или состояние (доступность, видимость).

События – это действия, распознаваемые объектом.

 

Пример 1.

В массиве чисел М(10) очистить клетки с нулевыми значениями.

 

Запись программы в виде блок-схемы (рис. 1) и визуальное представление ввода данных и вывода результата (рис. 2):

Рисунок 1. Электронная таблица с исходными данными

 

 

Рисунок 2. Результат работы программы

 

Пример 2.

Выявить, есть ли в массиве число 10? Если есть, на каком месте оно стоит (известно, что число может встретиться несколько раз).

 

Программный код

Sub Число()

Dim A As Variant

Dim i, k As Integer

i = 1

k = 0

A = Range("A1:A10")

For i = 1 To 10

If A(i, 1) = 10 Then

MsgBox ("Номер ячейки, содержащей число 10 - " & i)

k = k + 1

End If

Next i

MsgBox ("Число 10 встретилось следующее количество раз - " & k)

End Sub

 

Пример 3.

Вычислить произведение ряда:

 

Программный код

Sub Main()

Dim x, n, res As Double

x = 3

n = 4

res = 1

For i = 2 To n

res = res * (i * x / (2 * i - 1))

Next i

MsgBox "res=" & CStr(res)

End Sub

Private Sub CommandButton4_Click()

Dim x, n, res As Double

x = Cells(36, 1)

n = Cells(36, 2)

res = 1

For i = 2 To n

res = res * (i * x / (2 * i - 1))

Next i

Cells(38, 2) = res

End Sub

 

Визуальное представление ввода данных и вывода результата (рис. 3):

Рисунок 3. Результат работы программы

 

Пример 4.

Найти максимальное значение из значений элементов последовательности x1, x2, …, x20 (одномерного массива), используя оператор do while…loop

 

Программный код

Private Sub CommandButton5_Click()

Dim x(20) As Double

Dim res, res1 As Double

i = 1

res = 0

Do While i < 20

x(i) = Cells(44 + i, 1)

If x(i) > res Then res = x(i)

i = i + 1

Loop

Cells(47, 4) = res

End Sub

 

Визуальное представление ввода данных и вывода результата (рис. 4):

 

Рисунок 4. Результат работы программы

 

Пример 5.

Задан двумерный массив F(4 to 85, 2 to 6). Найти сумму элементов этого массива.

 

Программный код

Private Sub CommandButton1_Click()

Dim f(6) As Integer

For j = 4 To 8

res = 0

For i = 2 To 6

f(i) = Cells(j, i)

res = res + f(i)

Next i

Cells(j, 7) = res

Next j

End Sub

 

Пример 6.

Найти в процедуре сумму в каждом столбце.

 

Программный код

Sub kol(ByRef x() As Integer, ByVal n As Integer, ByVal m As Integer)

Dim i, j, k(2) As Integer

For j = 0 To m

k(j) = 0

For i = 0 To n

k(j) = k(j) + x(i, j)

Next i

MsgBox "k(j)=" & CStr(k(j))

Next j

End Sub

Sub commandbutton1_click()

Dim i, j, n, m, x(4, 2) As Integer

Dim k(2) As Integer

n = 4

m = 2

For i = 0 To n

For j = 0 To m

x(i, j) = Cells(i + 1, j + 1)

Next j

Next i

kol x, n, m

End Sub

 

Пример 7.

В процедуре найти сумму элементов 1 и 3 строки и записать их на место элементов 1 строки.

 

Программный код

Sub kol(ByRef x() As Integer, ByVal n As Integer, ByVal m As Integer, k() As Integer)

Dim i, j As Integer

For j = 0 To m

x(1, j) = x(1, j) + x(3, j)

Next j

End Sub

Sub commandbutton1_click()

Dim i, j, n, m, x(4, 4) As Integer

Dim k(2) As Integer

n = 4

m = 4

For i = 0 To n

For j = 0 To m

x(i, j) = Cells(i + 1, j + 1)

Next j

Next i

kol x, n, m, k

For j = 0 To m

For i = 0 To n

Cells(i + 7, j + 1).Value = x(i, j)

Next i

Next j

End Sub

Варианты заданий

Задание 1. Разработать алгоритм решения задачи и составить программу согласно варианта.

  1. Определить порядковые номера нулей в массиве.
  2. Все отрицательные элементы массива заменить нулями. Выдать сообщение о количестве таких замен.
  3. Найти порядковый номер минимального числа в массиве.
  4. Найти значение и координаты первого по порядку положительного элемента в массиве.
  5. Найти количество единиц в массиве.
  6. Каких чисел в массиве больше: положительных или отрицательных? (массив может содержать нулевые значения).
  7. Исходные данные: В таблице 10 строк. Первый столбец – фамилия работника, второй – стаж работника.
  8. По стажу работника определить, к какой группе он относится, если 1 группа – стаж до 3-х лет, 2 группа – до 5 лет, 3 группа – до 10 лет, 4 группа – свыше 10 лет.
  9. Найти сумму диагональных элементов блока ячеек, состоящего из 5 строк и 5 столбцов.
  10. Двадцати переменным массива присвоить одно и то же значение, равное наибольшему из них.
  11. Дан массив чисел. В клетке С1 записано некоторое число. Определить порядковый номер этого числа в массиве. Если в массиве такого числа нет, выдать об этом сообщение.
  12. Просуммировать положительные и отрицательные числа в массиве. Записать полученные суммы в ячейки В1 и В2. (в массиве могут быть нулевые значения).
  13. В клетку А1 записать число, если количество положительных элементов массива больше количества отрицательных. В противном случае записать в клетку А1 любой текст.
  14. Найти сумму положительных элементов массива, имеющих индекс 3, 5, 7 и т.д.
  15. В блоке ячеек записана матрица чисел. Ячейки с отрицательными значениями закрасить синим цветом, с положительными – красным, с нулями – желтым.

 

 

Задание 2. По заданным значениям a, x и n найти сумму ряда.

 

Задание 3. Решить задачу для своего варианта на одномерный массив двумя способами: с данными на рабочем листе и вводимыми по тексту программы.

  1. Вычислить сумму элементов, стоящих на чётных местах в последовательности х (20), используя оператор цикла do_loop until
  2. Вывести на печать номера элементов, попавших в диапазон (а, b) для последовательности а(30), используя оператор цикла for_next.
  3. Вывести на печать количество элементов массива А1, А2, … А20, попавших в интервал [2, 5] и их сумму, используя оператор цикла do_loop while.
  4. Вывести на печать номера элементов последовательности Х(20), значения которых равны заданному числу С, используя оператор цикла for_next.
  5. Вычислить произведение элементов, стоящих на четных местах в последовательности Х(20), используя оператор цикла do while_loop.
  6. Найти количество элементов последовательности А(20), значения которых равны нулю, используя оператор цикла do_loop until.
  7. Вывести на печать номера и значения положительных элементов последовательности Х(20), используя оператор цикла do until_loop.
  8. Вывести на печать номера с отрицательными значениями элементов для последовательности Х(20), используя оператор цикла for_next.
  9. Найти минимальное значение из значений элементов последовательности А1, А2,…, А20, используя оператор цикла do_ loop while.
  10. Найти минимальное значение из значений элементов последовательности Х1, Х2, … Х20, используя оператор цикла do_loop until.
  11. В последовательности Х(20) вывести на печать номера элементов, значения которых равны t, используя оператор цикла do until_loop.
  12. Найти количество отрицательных элементов в массиве С1, С2,…, С20, используя оператор цикла do until_loop.
  13. Дана последовательность Х(10). Найти сумму отрицательных элементов и вывести на печать номера этих элементов, используя оператор цикла do_loop while.
  14. Вычислить произведение элементов, стоящих на нечетных местах в последовательности Х(20), используя оператор цикла do while_loop.
  15. Дана последовательность Х1, Х2, …, Х20. Заменить в ней отрицательные значения элементов на их квадраты. Вывести на печать полученную последовательность, используя оператор цикла do while_loop.

Задание 4. Решить задачу для своего варианта на двумерный массив двумя способами: с данными на рабочем листе и вводимыми по тексту программы.

  1. Задан массив А(6,5). Найти номер строки и номер столбца с минимальным значением.
  2. Задан массив А(4,5). Найти минимальное значение.
  3. Задан массив х(5,5). Найти сумму отрицательных значений в каждой строке.
  4. Задан массив х(5,5). Найти сумму положительных значений в каждом столбце.
  5. Задан массив с(5,5) и число а. Найти количество элементов, равных по значению а.
  6. Задан массив с(5,5) и число а. Найти сумму элементов, равных по значению а.
  7. Задан массив х(5,5) и число а. Найти номера строк и столбцов элементов, равных по значению а.
  8. Задан массив х(5,5) и интервал (а,b). Найти номера строк и столбцов элементов, попавших по значению в этот интервал.
  9. Задан массив х(5,5) и интервал х[а,b]. Найти количество элементов, попавших по значению в этот интервал.
  10. Задан массив х(5,5) и интервал х[а,b]. Найти сумму элементов, попавших по значению в этот интервал.
  11. Задан массив А(6,4). Найти номер строки и номер столбца с максимальным значением.
  12. Задан массив А(4,5). Найти максимальное значение.
  13. Задан массив А(6,3). Найти номер строки и номер столбца с максимальным значением в каждом столбце.
  14. Задан массив А(5,5). Найти номер строки и номер столбца с максимальным значением в каждой строке.
  15. Задан массив А(4,5). Найти максимальное значение в каждой строке.

Задание 5. Решить задачи по условию 3 и 4 задания с использованием подпрограмм.


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 251; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.039 с.)
Главная | Случайная страница | Обратная связь