Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій ЕКОНОМІЧНА ІНФОРМАТИКА.doc
Скачиваний:
26
Добавлен:
28.10.2018
Размер:
24 Mб
Скачать
  1. Оператор While...Wend

Цей оператор циклу є різновидом оператора Do…Loop...

Синтаксис оператора:

While умова

Блок операторів

Wend

Якщо умова має значення True, виконуються Блок операторів до Wend. Якщо умова має значення False, виконання відновляється з операторів, що випливають за Wend. Цикли WhileWend можуть мати будь-яку глибину вкладеності.

  1. Оператор For... Next

Цей оператор циклу можна зустріти в більшості мов програмування. Він використовується у випадках, коли відомо, скільки разів необхідно повторити виконання серії операторів. Синтаксис оператора:

For лічильник = початок To кінець [step крок]

Блок операторів

Next [лічильник]

Лічильник – числова змінна, котра автоматично змінюється після кожного повтору. Початкове значення лічильника дорівнює параметру початок, а кінцеве - кінець. Крок - крок лічильника циклів. Якщо цей параметр опущений, то значення кроку приймається рівним 1. Щоб лічильник змінювався по убуванню, використовується негативне значення кроку.

Приклад 3. Дан масив Х=(12,24,67,38,56,69) щомісячного випуску продукції в 1-му півріччі. Визначити випуски продукції за 1- й і 2 - й квартали.

Sub Р3()

Dim x As Variant

Dim kv1 As Single, kv2 As Single, i As Integer

x=Array(12,24,67,38,56,69)

kv1 = 0: kv2= 0

For i = 1 To 3

kv1=kv1+x(i)

kv2=kv2+x(i+3)

Next i

MsgBox " випуск продукції за 1-ий квартал =" & kv1

MsgBox " випуск продукції за 2-ий квартал =" & kv2

End Sub

  1. Оператор For Each...Next

Цей оператор дозволяє робити обробку набору об'єктів (наприклад, елементів масиву даних). У цьому випадку немає необхідності використовувати лічильник циклу, тому що циклічний перегляд і обробка виробляється для певних елементів набору.

Синтаксис оператора:

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

Блок операторів

Next [елемент]

Параметр елемент - змінна типу Variant (ця обов'язкова умова), що представляє елемент сімейства або масиву. Група - ім'я масиву або сімейства. Блок операторів виконується тільки один раз для кожного члена групи.

Найважливіше в операторі For Each…Next те, що не потрібно заздалегідь знати, скільки елементів утримується в масиві або сімействі. Таким чином, не потрібно підраховувати число елементів або перевіряти досягнення кінця групи. Це дозволяє виключити одну з найбільш загальних помилок при програмуванні: неправильну індексацію елементів масивів.

Приклад 4. Дано масив А=(ai), i=1,2,...,10. Знайти добуток позитивних елементів.

Позначення: p - добуток позитивних елементів.

Sub Р4()

Dim a(1 to 10) As Double

Dim p As Single, i As Integer, n As Variant

For i = 1 To 10

a(i) = Val(InputBox("Введіть "& str(i) & “ елемент масиву а"))

Next i

p = 1

For Each n In a

If n > 0 Then p = p * n

Next n

MsgBox "p=" & p

End Sub

Приклад 5. Дана матриця D=(dij), i= 1,2, . . . ,m; j=1,2, . . . ,n (m10, n20). Знайти суми позитивних елементів кожного стовпця.

Позначення: sum[j] - сума позитивних елементів j-го стовпця.

Sub Р5()

Dim d(1 to 10, 1 to 20) As Single, sum(1 to 20) As Single

Dim i As Integer, j As Integer, n As Integer, m As Integer

n = Val(InputBox("Введіть кількість рядків n"))

m = Val(InputBox("Введіть кількість стовпців m"))

For i = 1 To n

For j = 1 To m

d(i, j) = Val(InputBox("Введіть масив d"))

Next j

Next i

For j = 1 To m

sum(j) = 0

For i = 1 To n

If d(i, j) > 0 Then sum(j) = sum(j) + d(i, j)

Next i

Debug.Print sum(j)

Next j

End Sub

Приклад 6. Дана матриця З=(сij), i=1,2, . . .n; j=1,2,. . . m (n50, m50). Визначити для кожного рядка максимальний елемент і його індекси. (Передбачається, що в кожному рядку є єдиний максимальний елемент).

Позначення: max - максимальний елемент у рядку, jmax - номер стовпця максимального елемента.

Sub Р6()

Dim c(1 to 50, 1 to 50) As Double, max As Double

Dim i, j, n, m, jmax As Integer

n = Val(InputBox("Введіть кількість рядків n"))

m = Val(InputBox("Введіть кількість стовпців m"))

For i = 1 To n

For j = 1 To m

c(i, j) = Val(InputBox("Введіть масив c"))

Next j

Next i

For i = 1 To n

jmax = 1: max = c(i, 1)

For j = 1 To m

If c(i, j) > max Then max = c(i, j): jmax = j

Next j

Debug.Print "max= " & max & “ imax=” & i & " jmax=" & jmax

Next i

End Sub