Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
informatika_ump_rus.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.03 Mб
Скачать

Лабораторная работа №25 Тема: Язык программирования vba. Циклы

Цель работы: Ознакомить с операторами цикла и привить навыки использования их при решении задач

Для многократного выполнения одного или нескольких операторов предназначены циклы. VBA предлагает две конструкции: цикл For...Next дает возможность устанавливать число проходов цикла, а цикл Do... Loop завершается при выполнении заданного условия.

For... Next

Цикл For. ..Next является самой простой конструкцией:

For Счетчик = Начальное_значение То Конечпое­_значение [Step Шаг] Тело цикла

Next [Счетчик]

В начале выполнения цикла значение Счетчик устанавливается в Начальное значение. При каждом проходе переменная Счетчик увеличивается на 1 или на величину Шаг. Если она достигает или становится больше (меньше, при отрицательном шаге) конечного значения, то цикл завершается и выполняются следующие операторы. Разность между начальным и конечным значениями, деленная на величину шага, составляет число проходов.

Пример 1

Найти сумму первых десяти натуральных чисел.

Private Sub CommandButton2_Click()

Dim i, s As Integer

S=0

For i = 1 To 10

s = s + i

Next i

MsgBox ("Сумма первых десяти натуральных чисел равна") & s

End Sub

Do... Loop

Если количество проходов должно зависеть от условия, используют цикл Do... Loop. Имеется четыре варианта синтаксиса этого цикла. В двух первых вариантах условие проверяется в начале цикла:

Цикл, управляемый в начале

Do [(While/Until) Условие]

тело цикла

Loop

В двух других вариантах условие проверяется в конце цикла:

Цикл, управляемый в конце

Do

тело цикла

LOOP [(While | Until) Условие]

Если проверка условия происходит в конце, цикл выполняется как минимум ОДИН раз, независимо от того, выполнено условие или нет.

Пример 2

Решим предыдущую задачу, используя цикл Do.. .Loop

1. Private Sub CommandButton2_Click() Dim i, s As Integer

s = 0

i = l

Do While i < 11

s=s+i

i = i+l

Loop

MsgBox ("Сумма первых десяти натуральных чисел равна") & s

End Sub

2. Private Sub CommandButton2_Click() Dim i,s As Integer

s = 0

i = l

Do

s = s + i

i = i + l

Loop Until i> 10

MsgBox ("Сумма первых десяти натуральных чисел равна") & s

End Sub

While... Wend

В VBA цикл While...Wend играет второстепенную роль. Он используется только для совместимости с другими диалектами Basic, а также для совместимости с более ранними версиями Visual Basic, в которых не было оператора Do...Loop.

While Условие

тело цикла

Wend

Принцип его действия такой же, как и цикла Do While...Loop. Поэтому вместо него проще использовать Do...Loop. Кроме того, для цикла While...Wend нет оператора досрочного выхода типа Exit.

For Each...Next

Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For Each...Next

For Each элемент In группа

тело цикли

Next элемент

Пример 3

Заменить все положительные числа диапазона ячеек А1:В2 знаком «+», все отрицательные числа- знаком «-», а нули оставить без изменения.

Sub Знак()

Dim с As Object

For Each c In Worksheets("Лист1").Range("Al:B2")

If IsNumeric(c.Value) Then

If c.Value >0 Then c.Valu&="+"

End If

If IsNumeric(c.Value) Then

If c.Value < 0 Then c.Value="-"

End If

If IsNumeric(c. Value) Then

If c.Value =0 Then c.Value=0

End If

Next с

End sub

В процедуре Знак используется функция IsNumeric(выражение), которая возвращает True, если выражение может быть описано как числовое, и False - в противном случае.

Задания для самостоятельной работы:

1. Написать программу, которая выводит таблицу определения идеального веса для взрослых людей при росте от 150 см до 200 см. Определение осуществляется по формуле:

идеальный вес = рост -100

  1. Написать программу, которая выводит таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту для значений от 15 градусов до 30. Перевод осуществляется по формуле F = С * 1.8 + 32

  2. Информация о температуре воздуха за меся задана в виде последовательности чисел. Определить сколько раз температура воздуха опускалась ниже нуля.

  3. Составить таблицу стоимостей порции сыра весом 50, 100, 150,..., 1000 грамм, если 1 килограмм сыра стоит 480 тенге.

  4. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10 % от нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?

  5. В ЭВМ по очереди вводятся результаты в соревнованиях по прыжкам в длину. Число участников произвольно. Выдавать на экран лучший результат после выступления очередного спортсмена.

  6. Информация о температуре воздуха за месяц задана в виде последовательности чисел. Определить среднюю температуру месяца.

  7. Найти сумму четных N чисел.

  8. Найти произведение нечетных N чисел.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]