Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Производная алгоритмическая структура ФормированиеСтр 1 из 8Следующая ⇒
Производная алгоритмическая структура Формирование
Используется для заполнения вычислительной среды конкретными значениями в соответствии с заданными математическими зависимостями.
Особенности алгоритма. 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 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 “Значения элементов введённого массива:” For i=1 To m Print “a(“ & i & ”)=” & a(i) Next End Sub
Пример 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 For j=1 To m Print a(i,j); Next Next End Sub Пример 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
Результат выполнения кода приложения представлен на форме:
Пример 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 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умма); - накопление произведения (Произведение); - подсчет количества (Счётчик). Пример 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 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
Пример 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 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 Пример 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 СИНТЕЗ СЛОЖНЫХ АЛГОРИТМОВ Пример 14. Разработать информационную технологию, позволяющую заполнить в вычислительной среде одномерный массив В значениями элементов массива А произвольной размерности m×n, имеющих чётные значения элементов. Входные данные: m – целое число; n – целое число; A=[aij], , – массив целых чисел. Выходные данные: B = [bi], – массив целых чисел. Математическая модель: k = 0; для i = 1.. m, j = 1.. n, если aij – четное, то k = k + 1 и bk = aij
Код приложения: Option Base 1 Private Sub Command1_Click() Dim i As Integer, j As Integer, k As Integer, m As Integer, n As Integer Dim a() As Integer, b() As Integer m=InputBox(“Введите количество строк матрицы”) n=InputBox(“Введите количество столбцов матрицы”) ReDim a(m,n), b(m*n) For i=1 to m For j=1 to n a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”) Next Next k=0 For i=1 to m For j=1 to n If a(i,j) mod 2 =0 Then k=k+1: b(k)=a(i,j) Next j Next i Print “Исходный массив A” For i=1 to m For j=1 to n Print a(i,j); Next Next If k <>0 Then Print Chr(10);“Заполнен массив В ” For i=1 to k Print b(i); Next Else Print “Четных значений элементов в массиве А нет” End If End Sub Пример 15. Разработать информационную технологию, позволяющую поменять местами элементы k-го столбца и q-й строки квадратной матрицы А произвольной размерности m×m. Входные данные: m, k, q – целые числа; A=[aij], , – массив целых чисел. Выходные данные: A=[aij], , – массив целых чисел. Математическая модель: для i = 1.. m, j = m.. 1; d = aik, aik = aqj, aqj = d Схема алгоритма: Код приложения: Private Sub Command1_Click() Dim i As Integer, j As Integer, k As Integer, q As Integer, m As Integer Dim d As Integer, a() As Integer m = Text1 k = Text2 q = Text3 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 Print Chr(10); " Исходный массив А " For i = 1 To m For j = 1 To m Print a(i, j); Next Next For i = 1 To m For j = m To 1 Step -1 d = a(i, k) a(i, k) = a(q, j) a(q, j) = d Next Next Print Chr(10); "Полученный массив А " For i = 1 To m For j = 1 To m Print a(i, j); Next Next End Sub
Результат выполнения кода приложения представлен на форме:
Пример информационной технологии, Пример 16. Разработать информационную технологию, позволяющую упорядочить вектор А произвольной размерности m по возрастанию значений его элементов. Входные данные: m – целое число; A=[ai], – массив целых чисел. Выходные данные: A=[ai], – упорядоченный массив целых чисел. Математическая модель: для n = m...1 y = –1000; для i = 1.. n; если ai < y, то y = ai, k = i, ak = an, an = y Схема алгоритма:
Код приложения: Private Sub Form_Click() Dim m As Integer, n As Integer, A() As Integer Dim i As Integer, k As Integer, y As Integer m = InputBox("Введите размерность вектора") ReDim A(1 To m) Print "Исходный массив" For i = 1 To m а(i) = InputBox("a(" & i & ")=") Print а(i); Next For n = m To 1 Step -1 y = -10000 For i = 1 To n If а(i) > y Then y = а(i): k = i Next i а(k) = а(n): а(n) = y Next n Print Chr(10); "Упорядоченный массив" For i = 1 To m Print а(i); Next End Sub
Производная алгоритмическая структура Формирование
Используется для заполнения вычислительной среды конкретными значениями в соответствии с заданными математическими зависимостями.
Особенности алгоритма. 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 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 “Значения элементов введённого массива:” For i=1 To m Print “a(“ & i & ”)=” & a(i) Next End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-10; просмотров: 896; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.254.35 (0.523 с.) |