Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Объявление массивов на языке Visual Bаsic

Читайте также:
  1. DBase n Visual dBase
  2. Алфавитный указатель терминов на русском языке
  3. Алфавитный указатель терминов на русском языке
  4. АНАЛОГИЯ В ЯЗЫКЕ И В ЭТИМОЛОГИЧЕСКОМ ИССЛЕДОВАНИИ
  5. Внелитературная лексика в языке современной печати
  6. Грамматические конструкции, используемые при описании фотографии на английском языке
  7. Имя прилагательное в языке и речи.

 

В общем случае объявление массива может быть записано следующим образом:

одномерного массива

Dim <имя массива>(размерность) As <тип>

двухмерного массива

Dim <имя массива>(количество строк, количество столбцов) As <тип>

По умолчанию, в языке Visual Basic первый элемент массива имеет нулевые индексы.

Если заранее известна размерность массива, то он может быть объявлен, например, так:

– одномерный массив:

Dim a(5) As Integer,

где а – имя массива, число 5 указывает конкретную размерность массива (в приведённом примере массив состоит из 6 элементов: a0, а1, а2, а3, а4, а5).

Integer – ключевое слово, определяющее тип данных рассматриваемого массива (целый).

– двухмерный массив:

Dim a(2,3) Аs Single,

где a – имя массива. Число 2 – количество строк массива (в рассматриваемом примере оно равно 3). Число 3 – количество столбцов массива (в рассматриваемом примере оно равно 4);

Single – ключевое слово, определяющее тип данных рассматриваемого массива (вещественный).

При таком объявлении элементы массива будут иметь следующие индексы:

.

Если размерность массива заранее неизвестна, то объявляется пустой массив (динамический), например: Dim a() Аs Integer.

 

 

Затем определяется конкретная размерность массива, например, путём ввода размерности массива с помощью функции InputBox(). После того, как определена конкретная размерность, массив необходимо переобъявить с помощью оператора ReDim, например:

 

ReDim a(m), где m – размерность массива.

Позднее количество элементов массива снова можно изменить. Для этого необходимо воспользоваться оператором ReDim с ключевым словом Preserve:

ReDim Preserve a(n), где n – новая размерность массива. Аналогичным образом объявляются двухмерные массивы.

 

П р и м е ч а н и е. Язык Visual Basic позволяет изменить начальное значение индекса первого элемента массива с нуля на единицу. При использовании опции Option Base с параметром 1 значение индекса первого элемента будет равно 1.

Опция Option Вase 1 записывается в секции General (вне любой процедуры). Кроме того, если при объявлении массива использовать ключевое слово То, то также можно изменить значение индекса первого элемента массива:

 

Dim a(1 To 5) или Dim a(1 To m), Dim b(1 To 3,1 To 5) или Dim b(1 To m,1 To n)

1. ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС ЗАПОЛНЕНИЕ

 

Используется для заполнения вычислительной среды конкретными данными (значениями функции, значениями элементов массивов, значениями полей при работе с базами данных и т.д.).

1.1. Производная алгоритмическая структура Формирование

 

Используется для заполнения вычислительной среды конкретными значениями в соответствии с заданными математическими зависимостями.

 

Особенности алгоритма.

1. В вычислительную среду вводится только размерность массива, а значения элементов массива формируются в соответствии с заданным правилом заполнения.

2. В зависимости от размерности массива организуется простой циклический процесс (одномерный массив) или цикл в цикле (двухмерный массив). Телом цикла служит правило заполнения, в соответствии с которым формируются значения элементов массива.

3. Значения элементов массива хранятся в вычислительной среде. Для визуального анализа значений элементов массива их требуется вывести на экран монитора или печатающее устройство.

Рассмотрим несколько примеров, иллюстрирующих использование производной алгоритмической структуры Формирование.

 

Пример 1.

Разработать информационную технологию, позволяющую заполнить в вычислительной среде единичную матрицу произвольной размерности m´ m.

Входные данные: m – целое число.

Выходные данные: матрица Е = [eij], , – массив целых чисел.

Математическая модель:

,

 

Схема алгоритма заполнения матрицы Е:

 
 

Код приложения:

Option Base 1

Private Sub Command1_Click()

Dim m As Integer, i As Integer, j As Integer, e() As Byte

m=InputBox(“Введите размерность массива m”)

ReDim e(m,m)

For i=1 To m

For j=1 To m

If i=j Then

e(i,j)=1

Else

e(i,j)=0

End If

Next

Next

‘Вывод значений элементов матрицы на форму

Print “Значения элементов матрицы Е:”

For i=1 To m

Print

For j=1 To m

Print e(i,j);

Next

Next

End Sub

 

Пример 2.

Разработать информационную технологию, позволяющую зaполнить матрицу Y=[yij], первый столбец которой хранит значения аргумента х (при изменении х от начального значения х0 до конечного значения хk с шагом Dх), а второй – значения функции y = sin(x).

Входные данные: х0 – вещественное число;

xk – вещественное число;

dx – шаг, вещественное число.

Выходные данные:

Y = [yij], , – массив вещественных чисел.

Размерность массива вычисляется по формуле:

m = ;

Математическая модель:

для x = x0..xk, i = 1..m, yi,1 = x, yi,2 = sin(x)

Схема алгоритма:

 

 

 


Код приложения:

Private Sub Command1_Click()

Dim x0 As Single, xk As Single, dx As Single

Dim i As Integer, y() As Single, m As Integer

x0=InputBox(“Введите начальное значение параметра цикла”)

xk=InputBox(“Введите конечное значение параметра цикла”)

dx=InputBox(“Введите шаг изменения параметра цикла”)

m=(xk-x0)/dx+1

ReDim y(1 To m,1 To 2)

x=x0

For i=1 To m

y(i,1) = x

y(i,2) = sin(x)

x=x+dx

Next

For i=1 To m

Print “y(“ & i & “,1)=” & y(i,1) & ” y(“ & i & ”,2)=” & y(i,2)

Next

End Sub

 

П р и м е ч а н и е. Значения y(i,1) и y(i,2) лучше выводить с использованием функции Format: Format (y(i,1), “0.00”), Format (y(i,2), “0.00”).

 

Частным случаем алгоритма структуры Формирование служит алгоритм ввода значений элементов массива. В этом случае в вычислительную среду вводятся не только размерность массива, но и значения элементов.

Алгоритм ввода значений элементов одномерного массива А произвольной размерности m и вывода введённых значений на форму представлен на схеме:

 

 

Алгоритм ввода значений элементов массива будет обозначаться одним блоком:

 
 

 

 

 


Алгоритм вывода значений элементов массива также будет обозначаться одним блоком:

 
 

 

 

 


Код приложения на языке Visual Basic, реализующий представленный выше алгоритм:

 

Option Base 1

Private Sub Command1_Click()

Dim m As Integer, i As Integer, a() As Integer

m=InputBox(“Введите размерность массива”)

ReDim a(m)

For i=1 To m

a(i)=InputBox(“Введите а(“ & i & ”)”)

Next

Print “Значения элементов введённого массива:”

Print

For i=1 To m

Print “a(“ & i & ”)=” & a(i)

Next

End Sub

 

1.2. Производная алгоритмическая структура Пересчёт

 

Используется для изменения значений элементов массива, хранящихся в вычислительной среде в соответствии с заданной математической зависимостью.

Особенности алгоритма.

1. Значения элементов массива, которые требуется пересчитать в соответствии с заданной математической зависимостью, хранятся в вычислительной среде.

2. Математическая зависимость, в соответствии с которой изменяются значения элементов массива, задаётся структурой Следование, которая служит телом цикла.

3. Алгоритм разрабатывается в зависимости от того, требуется или нет сохранять значения элементов исходного массива.

 

Пример 3.

Разработать информационную технологию, позволяющую уменьшить значения элементов массива А произвольной размерности m в k раз (k ≠ 0). Новый массив не заполняется.

 

Входные данные:

А = [ai], – массив вещественных чисел;

k – целое число; т – целое число.

Выходные данные:

А = [ai], – пересчитанный массив вещественных чисел.

Математическая модель:

для i = 1..m, ai = при k ¹ 0

 

Схема алгоритма:

 
 

 

 


Код приложения:

Private Sub Command1_Click()

Dim m As Integer, k As Integer, i As Integer

Dim a() As Single

m=InputBox(“Введите размерность массива ”)

ReDim a(1 To m)

Print “Введите значения элементов массива”

For i=1 To m

a(i)=InputBox(“a(“ & i & ”)”)

Next

Print “Исходный массив”

For i=1 To m

Print “a(“ & i & ”) =“ & Format(a(i),”0.00”)

Next

k=InputBox (“Введите значение k”)

If k<>0 Then

For i=1 To m

a(i) = a(i)/k

Next

Print Chr(10);“Результирующий массив”

For i=1 To m

Print Format(a(i),”0.00”

Next

Else

Print “На нуль делить нельзя”

End If

End Sub

2. ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС ПОИСК

 

Используется для нахождения местоположения элементов или их значений в массиве в соответствии с условием поиска. Условие поиска определяется операциями отношения (<, <=, >, >=, <>) между двумя операндами. Одним из операндов служит элемент массива, а другим – переменная, называемая Ключом поиска. Различают следующие производные алгоритмические структуры:

– Поиск по ключу;

– Поиск максимума;

– Поиск минимума.

 

2.1. Производная алгоритмическая структура Поиск по ключу

 

Используется для поиска местоположения элементов массива в соответствии с условием поиска, заданного выражением:

 

<Элемент массива> <Операция отношения> <Ключ поиска>

Особенности алгоритма.

1. Ключу поиска присваивается начальное значение, определяющее элементы массива, местоположение которых должно быть найдено. В большинстве случаев значение ключа поиска задаётся вводом.

2. Организуется циклический вычислительный процесс: цикл или цикл в цикле. Телом цикла служит структура Развилка, определяющая условие, в соответствии с которым должны быть найдены элементы массива. Если значение элемента массива удовлетворяет условию поиска, то значение его индексов выводится на визуальное устройство или сохраняется в вычислительной среде.

Если условие поиска ложно, осуществляется переход к следующему элементу массива.

3. В алгоритме предусматриваются действия, которые выполняются, если условие поиска окажется ложным для всех элементов массива. В этом случае вводится понятие "Флажок".

"Флажок" – это переменная, которая, как правило, может принимать два значения: True (Истина) или False (Ложь). Перед началом циклического вычислительного процесса "Флажку" присваивается начальное значение, допустим, False. В теле цикла в случае, когда значение условия поиска станет истинным, "Флажку" присваивается новое значение, допустим, True.

После окончания циклического вычислительного процесса проверяется значение "Флажка": если "Флажок" изменил своё значение, значит, условие поиска было выполнено хотя бы один раз, если нет, то условие поиска не было выполнено ни разу.

 

П р и м е ч а н и е. Если условие поиска задано точным равенством (=), то типы элементов массива и ключа поиска должны быть одинаковыми, допускающими сравнение (Byte, Integer, Long, String).

 

Пример 4.

Разработать информационную технологию, позволяющую определить индексы элементов квадратной матрицы А произвольной размерности m´ т, расположенных на главной диагонали, значения которых равны ключу поиска (k), задаваемому вводом.

 

Входные данные: m – целое число;

A=[aij], , – массив целых чисел;

k – целое число.

Выходные данные: значения найденных индексов или сообщение об их отсутствии.

Математическая модель:

flag = Ложь;

для i = 1..m, если aii = k, то flag = Истина и вывод i;

eсли flag = Ложь, то вывод сообщения.

 
 

Схема алгоритма:

 

 

Код приложения:

Private Sub Form_Activate()

Dim m As Integer, i As Integer, j As Integer, k As Integer

Dim flag As Boolean, a() As Integer

m = InputBox("Введите количество строк матрицы")

ReDim a(1 To m, 1 To m)

For i = 1 To m

For j = 1 To m

a(i,j) = InputBox("a(" & i & "," & j & ")")

Next

Next

k = InputBox("Введите значение ключа поиска")

flag = False

For i = 1 To m

If a(i,i) = k Then

flag = True

Print "Индекс элемента =" & i

End If

Next

If flag = False Then

MsgBox "Элементов со значением " & k & " нет"

End If

Print “Значения элементов матрицы A:”

For i=1 To m

Print

For j=1 To m

Print a(i,j);

Next

Next

End Sub

2.2. Производная алгоритмическая структура Поиск максимума

 

Используется для нахождения максимального элемента массива и его местоположения. Условие поиска максимума определяется выражением:

<Элемент массива> > <Ключ поиска>

 

Особенности алгоритма.

1. Ключу поиска присваивается начальное значение. Начальным значением может быть:

– значение любого элемента массива;

– число, намного меньшее любого из возможных значений, которые могут принимать элементы массива.

2. Вводится одна дополнительная переменная, которая должна хранить значение, определяющее местоположение максимального элемента. Если обрабатывается двухмерный массив, то вводятся две дополнительные переменные: первая – для хранения индекса, определяющего местоположение в строках массива, а вторая – в столбцах маcсива.

3. Организуется циклический вычислительный процесс: цикл или цикл в цикле. Телом цикла служит структура Развилка, определяющая условие поиска элемента массива, имеющего максимальное значение.

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

В противном случае изменение значения Ключа поиска и дополнительных переменных (переменной) не происходит.

5. После окончания циклического вычислительного процесса значение Ключа поиска равно максимальному значению элемента массива, а дополнительные переменные (переменная) хранят значения, определяющие местоположение этого элемента в массиве.

 

П р и м е ч а н и е. Если в массиве несколько элементов имеют одинаковые значения, равные максимальному (используется знак >), то дополнительные переменные (дополнительная переменная) хранят значения, определяющие местоположение первого элемента массива, имеющего максимальное значение. Если в выражении, определяющем условие поиска, используется знак ≥, – то последнего.

 

Пример 5.

Разработать информационную технологию, позволяющую определить значение и местоположение элемента одномерного массива А произвольной размерности m, равного максимальному значению.

Входные данные: m – целое число;

A=[ai], – массив вещественных чисел.

Выходные данные:

k – значение максимального элемента массива, вещественное число;

q – значение индекса, определяющего местоположение максимального элемента, целое число.

Математическая модель:

k = a1 , q =1;

для i = 2..m, eсли ai > k, то k = ai, q = i

 

 

Схема алгоритма:

 
 

 


Код приложения:

Option Bаse 1

Private Sub Form_Activate()

Dim i As Integer, m As Integer, q As Integer, k As Double, a() As Double

m=InputBox(“ Введите размерность массива”)

ReDim a(m)

For i=1 To m

a(i)=InputBox(“a(“ & i & ”)”)

Next

k=a(1): q=1

For i=1 To m

If a(i)>k then

k=a(i): q=i

End If

Next

Print “Максимальное значение =” & k & Сhr(10) & _

”Индекс элемента массива = “ & q

Print Chr(10);“Исходный массив”

For i=1 To m

Print “a(“ & i & ”) =“ & Format(a(i),”0.000”)

Next

End Sub

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

 

Пример 6.

Разработать информационную технологию, позволяющую определить максимальное значение функции y=sin2(x)+cos(z/2)2 при изменении х от начального значения х0 до конечного значения хк с шагом Dх и z от начального значения z0 до конечного значения zk с шагом Dz.

Входные данные: х0, z0, хk, zk – вещественные числа;

dх – шаг изменения переменной х, вещественное число;

dz – шаг изменения переменной z, вещественное число.

Выходные данные:

fmax – максимальное значение функции, вещественное число;

xmax – аргумент х, соответствующий максимальному значению функции, вещественное число;

zmax – аргумент z, соответствующий максимальному значению функции, вещественное число.

 

Математическая модель:

fmax = –10000,0, xmax = х0, zmax = z0;

для x = x0..xk, z = z0..zk,

,

если y > fmax, то fmax = y, xmax = x, zmax = z

 

 

Схема алгоритма:

 
 

 


Код приложения:

Private Sub Command1_Click()

Dim x0 As Single, xk As Single, dx As Single, z0 As Single, zk As Single

Dim dz As Single, x As Single, z As Single, y As Single

Dim fmax As Single, xmax As Single, zmax As Single

х0 = Text1: xk = Text2: dx = Text3: z0 = Text4: zk = Text5: dz = Text6

fmax = -10000.0

xmax = х0: zmax = z0

For x = x0 To xk Step dx

For z = z0 To zk Step dz

y = Sin(x) ^ 2 + Cos((z / 2) ^ 2)

If y > fmax Then

fmax = y

xmax = x: zmax = z

End If

Next z

Next x

Print "Максимальное значение функции равно " & Format(fmax, _ "0.00") & Chr(10) & "Значение аргумента х=" & Format(xmax, _ "0.000") & Chr(10) & "Значение аргумента z=" & Format(zmax, "0.00")

End Sub

 

Результат выполнения кода приложения представлен на форме:

 
 

 

2.3. Производная алгоритмическая структура Поиск минимума

 

Используется для нахождения минимального элемента и его местоположения. Условие поиска минимума определяется выражением:

<Элемент массива> < <Ключ поиска>

Особенности алгоритма.

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

- значением любого элемента массива;

- числом, намного большим любого из возможных значений, которые могут принимать элементы массива.

После окончания циклического вычислительного процесса значение Ключа поиска равно минимальному значению элемента массива, а дополнительные переменные (переменная) хранят значения, определяющие местоположение этого элемента в массиве.

Пример 7.

Разработать информационную технологию, позволяющую определить местоположение элемента матрицы А произвольной размерности m´n, имеющего минимальное значение. При наличии нескольких одинаковых минимальных элементов выбрать элемент, имеющий наибольшие индексы.

Входные данные: m – целое число;

n – целое число;

A=[aij], , – массив целых чисел.

Выходные данные: min – минимальное значение элемента массива, целое число;

k и q значения индексов, определяющих его местоположение, целые числа.

Математическая модель:

min = a11, k = 1, q = 1;

для i = 1.. m, j = 1.. n,

если aij ≤ min, то min = aij, k = i, q = j

 

 

Схема алгоритма:

 
 

 


Код приложения:

Private Sub Command1_Click()

Dim m As Integer, i As Integer, j As Integer, k As Integer, q As Integer

Dim a() As Integer, min As Integer

m=InputBox(“Количество строк матрицы=”)

n =InputBox(“Количество столбцов матрицы=”)

Redim a(1 To m,1 To n)

For i=1 To m

For j=1 To n

a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)

Next

Next

Print “Исходный массив”

For i=1 To m

Print

For j=1 To n

Print a(i,j);

Next

Next

min = a(1,1)

k=1: q=1

For i=1 To m

For j=1 To n

If a(i,j)<=min then

min = a(i,j)

k=i: q=j

End If

Next

Next

MsgBox “ Минимум = ” & min & Сhr(10) & ”Индекс i=” & i & _

“Индекс j=” & j

End Sub

3. ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС НАКОПЛЕНИЕ

 

Служит для накопления сумм и произведений значений элементов массива, а также подсчета количества элементов в массиве, значения которых удовлетворяют заданному условию.

Различают следующие производные алгоритмические структуры:

- накопление суммы (Cумма);

- накопление произведения (Произведение);

- подсчет количества (Счётчик).

3.1. Производная алгоритмическая структура Cумма

 

Производная алгоритмическая структура C умма служит для вычисления различных сумм.

 

 

Особенности алгоритма.

1. Вводится дополнительная переменная, которая служит для хранения значений сумм элементов массива.

2. Дополнительной переменной присваивается начальное значение, равное 0.

3. Определяется тип вычислительного процесса:

- цикл с параметром, если задана размерность массива или ее можно определить перед началом вычислительного процесса;

- итерационный цикл, если накопление суммы заканчивается при достижении заданной точности.

4. Телом цикла служит структура Следование, представленная итерационной формулой:

 

<Доп. переменная>=<Доп. переменная > + <Элемент массива>

5. После окончания вычислительного процесса дополнительная переменная хранит искомую сумму.

Пример 8.

Разработать информационную технологию, позволяющую вычислить сумму значений элементов первой и последней строк матрицы А произвольной размерности m × n.

 

Входные данные: m – целое число;

n – целое число;

A=[aij], , – массив вещественных чисел.

Выходные данные:

s – искомая сумма, вещественное число.

Математическая модель:

 

Схема алгоритма:

 


Код приложения:

Option Base 1

Private Sub Command1_Click()

Dim m As Integer, n As Integer

Dim s As Single, a() As Single, i As Integer, j As Integer

m=InputBox(“Введите количество строк матрицы”)

n=InputBox(“Введите количество столбцов матрицы”)

Redim a(m,n)

For i=1 To m

For j=1 To n

a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)

Next j

Next i

s=0

For j=1 To n

s=s+a(1,j)+a(m,j)

Next j

Print “Исходная матрица”

For i=1 To m

Print

For j=1 To n

Print Format(a(i,j),”0.00”);

Next

Next

Msgbox “Сумма первой и последней строк матрицы равна ” & s

End Sub

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

 

Пример 9.

Разработать информационную технологию, позволяющую вычислить сумму степенного ряда: 0,5+ х + х 2/2+ х 3/3+… Количество членов степенного ряда, для которых необходимо вычислить сумму, задаётся вводом.

Входные данные: k – количество членов ряда, целое число;

х – вещественное число.

Выходные данные: s – значение искомой суммы, вещественное число.

Математическая модель:

Схема алгоритма:

       
   
 
 

 

 


Код приложения:

Private Sub Command1_Click()

Dim x As Single, k As Byte, s As Double, i As Integer

k=InputBox(“Введите количество членов степенного ряда”)

x=InputBox(“Введите значение х”)

s=0.5

For i=1 To k

s=s+x^ i/i

Next i

MsgBox “Сумма членов степенного ряда =” & s

End Sub

 

3.2. Производная алгоритмическая структура Произведение

 

Производная алгоритмическая структура Произведение используется для вычисления различных типов произведений. Особенности алгоритма аналогичны производной алгоритмической структуре Сумма, но дополнительной переменной присваивается начальное значение, равное 1, а итерационная формула имеет вид:

 

<Доп. переменная>=<Доп. переменная > × <Элемент массива>

Пример 10.

 

Разработать информационную технологию, позволяющую вычислить произведение элементов матрицы А размерности m×n, имеющих чётные значения индексов строк.

Входные данные: m – целое число; n – целое число;

A=[aij], , – массив вещественных чисел.

Выходные данные: р – произведение элементов матрицы, имеющих чётные значения индексов строк, вещественное число.

 

Математическая модель:

Схема алгоритма:

 
 

 


Код приложения:

Option Base 1

Private Sub Command1_Click()

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

Dim p As Single, a() As Single

m=InputBox(“Введите количество строк матрицы”)

n=InputBox(“Введите количество столбцов матрицы”)

Redim a(m,n)

For i=1 To m

For j=1 To n

a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)

Next

Next

p=1

For i=2 To m Step 2

For j=1 To n

р=р*a(i,j)

Next

Next

Print “ Произведение элементов матрицы с четными индексами _ строк =” & р

Print “Для матрицы”

For i=1 To m

Print

For j=1 To n

Print Format (a(i,j), “0.00”);

Next

Next

End Sub

Аналогичный алгоритм можно использовать для нахождения произведения членов степенного ряда. В этом случае дополнительной переменной присваивается значение, равное первому члену степенного ряда.

Пример 11.

 

Разработать информационную технологию, позволяющую вычислить произведение членов степенного ряда: 0,75×1/2×1/4×1/8×1/16×..… до члена ряда меньшего ε.

 

Входные данные: ε – точность (обозначим eps), вещественное число.

Выходные данные: р – произведение членов степенного ряда, вещественное число.

Математическая модель:

 

 

Схема алгоритма:

 
 


Пример 12.

 

Разработать информационную технологию вычисления значения факториала числа.

Входные данные: n – число, для которого считается факториал, целое число.

Выходные данные: fact – переменная, хранящая значение n!, целое число.

Математическая модель:

Схема алгоритма:

 
 

 

 

 


Код приложения:

Private Sub Command1_Click()

Dim n As Integer, fact As Long, k As Integer

n=InputBox(“Введите значение n”)

If n>0 Then

faсt=1

For k=2 To n

fact=fact * k

Next

MsgBox “Значение ” & n & ”! ” & ” равно ” & fact

Else

MsgBox “Недопустимое значение n=” & n

End If

End Sub

3.3. Производная алгоритмическая структура Счётчик

 

Если производная алгоритмическая структура Счётчик организуется на основе итерационного вычислительного процесса, то она, как правило, используется для подсчёта количества итераций.

В случае организации производной алгоритмической структуры Счётчик на основе циклического вычислительного процесса с параметром подсчёт количества элементов в массиве осуществляется в соответствии с заданным условием. Поэтому в алгоритме необходимо учитывать особенности производной алгоритмической структуры Поиск по ключу.

Особенности алгоритма.

1. Вводится дополнительная переменная, которая служит для хранения искомого количества. Ей присваивается начальное значение, равное 0.

2. Определяется тип вычислительного процесса: цикл с параметром (цикл или цикл в цикле) или итерационный цикл.

3. Определяется тело цикла. Если используется итерационный цикл, то в тело цикла включается структура Следование, представленная итерационной формулой:

 

<Доп. переменная> = <Доп. переменная> + 1

Если используется цикл с параметром, то телом цикла служит структура Развилка, определяющая условие поиска элементов массива или значений функции, количество которых требуется подсчитать. В случае истинности условия выполняются следующие действия:

- значение дополнительной переменной увеличивается на единицу согласно итерационной формуле пункта 3;

- изменяется значение "Флажка", определяющего выполнение условия поиска (см. производную алгоритмическую структуру Поиск).

4. После окончания циклического процесса дополнительная переменная хранит количество элементов массива, удовлетворяющих условию поиска.

 

П р и м е ч а н и е. Следует заметить, что в производной алгоритмической структуре Счётчик роль "Флажка" может выполнять дополнительная переменная, которой перед началом вычислительного процесса присваивается начальное значение равное 0.

В случае выполнения условия поиска дополнительная переменная меняет своё значение. Следовательно, если после окончания вычислительного процесса дополнительная переменная не изменила своего начального значения – это означает, что не найдено ни одного элемента, значение которого удовлетворяет заданному условию. Кроме того, если необходимо не только подсчитать количество элементов, удовлетворяющих условию поиска, но и хранить их значения в вычислительной среде, то дополнительная переменная может использоваться как индекс, определяющий местоположение искомого элемента во вновь формируемом массиве.

Пример 13.

 

Разработать информационную технологию, позволяющую определить количество отрицательных элементов в одномерном массиве А произвольной размерности m.

 

Входные данные: m – целое число;

A=[ai], – массив целых чисел.

Выходные данные: t - количество элементов массива, имеющих отрицательные значения, целое число.

Математическая модель:

t = 0;

для i = 1.. m, если ai < 0, то t = t + 1;

если t = 0, вывод сообщения

 

Схема алгоритма:

 

 

Код приложения:

Option Base 1

Private Sub Command1_Click()

Dim m As Integer, i As Integer, t As Integer, a() As Integer

m=InputBox(“Введите размерность”)

ReDim a(m)

t=0

For i=1 To m

a(i)=InputBox(“a(“ & i & ”)”)

Print a(i);

If a(i)<0 then t=t+1

Next

If t=0 then

MsgBox “Отрицательных элементов в массиве нет!”

Else

MsgBox “ В массиве ” & t & ”отрицательных элементов”

End If

End Sub


Дата добавления: 2015-11-26; просмотров: 269 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.141 сек.)