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

Презентация:



Advertisements
Похожие презентации
Программирование типовых алгоритмов обробки данных.
Advertisements

Операторы. Оператор выбора Оператор выбора Оператор выбора Оператор выбора Оператор присваивания Оператор присваивания Оператор присваивания Оператор присваивания.
Основные типы алгоритмических структур. Линейный алгоритм (следование). Алгоритм, в котором команды выполняются последовательно одна за другой, называется.
1 Лекция 13 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА Visual Basic For Applications (VBA) План лекции Типы данных VBA Операции над данными VBA Описание типов данных VBA Имена.
Циклом Циклом называется операция, в которой одни и те же действия повторяются многократно. Цикл состоит из оператора цикла и тела цикла. Оператор цикла.
ПРОГРАММИРОВАНИЕ ПОВТОРЕНИЙ МОУ «Средняя общеобразовательная школа 41» Учитель информатики: Рассохина Г.В. САРАНСК 2008.
Работу выполнили ученицы 9 «Б» класса Гордеева Татьяна и Шебаршова Рита.
Циклические алгоритмы Повторение - это многократное выполнение одного или нескольких предписаний алгоритма. Цикл - это оператор языка программирования,
Основные типы алгоритмических структур. Линейный алгоритм линейным алгоритмом Алгоритм, в котором команды выполняются последовательно одна за другой,
Основные типы алгоритмических структур. Линейный алгоритм ( следование ) Алгоритм, в котором команды выполняются последовательно одна за другой, называется.
Операторы языка. Арифметические операторы Арифметические операторы Арифметические операторы Арифметические операторы Операторы сравнения Операторы сравнения.
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
ПРОГРАММИРОВАНИЕ ПОВТОРЕНИЙ. НАЧАЛО AB A, B, C A = A + C F = B + C F КОНЕЦ B = B + C F = A + B B < C A = A + B F = A + C нет да A = 1, B = 1, C = 4 F=?
Виды алгоритмических структур: –блок-схема. –линейный алгоритм. –алгоритмическая структура «ветвление». –алгоритмическая структура «выбор». –алгоритмическая.
Презентацию составила учитель первой категории МБОУ СОШ 14 имени К.С.Федоровского г.Юрги Кемеровской области Яковлева Ирина Владимировна.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА «ПОВТОРЕНИЕ» («ЦИКЛ») В ЯЗЫКЕ QBASIC Презентацию разработал Мащенко П.С., учитель МБОУ СОШ 2 муниципального образования Щербиновский.
Алгоритм Леонид 10 класс. Алгоритм - это строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального.
Тема: Управление потоком в PHP Изучить возможности языка PHP при решении задач, требующих использования условного оператора. Рассмотреть примеры управления.
Транксрипт:

Программирование типовых алгоритмов обработки данных. 1. Программирование линейных вычислительных процессов. 2. Программирование разветвляющихся вычислительных процессов. 3. Программирование циклических вычислительных процессов. 4. Программирование типовых задач обработки массивов.

Пример 1- Линейный вычислительный процесс

Cписок функций, которые могут быть получены с помощью встроенных математических функций: Функция Комбинация встроенных функций СекансSec(X) = 1 / Cos(X) КосекансCosec(X) = 1 / Sin(X) КотангенсCotan(X) = 1 / Tan(X) АрксинусArcsin(X) = Atn(X / Sqr(-X * X + 1)) АрккосинусArccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) АрккосекансArcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) - 1) * (2 * Atn(1)) АрккосекансArccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1)) АрккотангенсArccotan(X) = Atn(X) + 2 * Atn(1) Логарифм по основанию NLogN(X) = Log(X) / Log(N) Гиперболический синусHSin(X) = (Exp(X) - Exp(-X)) / 2 Гиперболический косинусHCos(X) = (Exp(X) + Exp(-X)) / 2 Гиперболический тангенсHTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X)) Гиперболический секансHSec(X) = 2 / (Exp(X) + Exp(-X)) Гиперболический косекансHCosec(X) = 2 / (Exp(X) - Exp(-X)) Гиперболический котангенсHCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X)) Гиперболический арксинусHArcsin(X) = Log(X + Sqr(X * X + 1)) Гиперболический арккосинусHArccos(X) = Log(X + Sqr(X * X - 1)) Гиперболический арктангенсHArctan(X) = Log((1 + X) / (1 - X)) / 2 Гиперболический арксекансHArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X) Гиперболический арккосекансHArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) Гиперболический арккотангенсHArccotan(X) = Log((X + 1) / (X - 1)) / 2

Sub Prim_lin() Dim a, b, c, t, y As Double В тригонометрических функциях должен быть этот тип переменных- с плавающей точкой двойной точности 'Инициализируем переменные a = InputBox("Введите a", "Пример - линейный вычислительный процесс") b = InputBox("Введите b", "Пример - линейный вычислительный процесс") c = InputBox("Введите c", "Пример - линейный вычислительный процесс") t = (Sqr(a + b ^ 3 + c * (Cos(b)) ^ 2 + b * Sin(Sqr(c)))) / (Log(a * b) / Log(10#)) y = Atn(t / 2.8) + 2 * Atn(1)Функция arcctg MsgBox (" Результат: t = " & t) 'вывод результата в окне сообщений MsgBox (" Результат: y =" & y) 'вывод результата в окне сообщений End Sub

2. Управляющие структуры языка VBA Для управления процессом обработки данных язык VBA позволяет использовать условные инструкциии и инструкции цикла, которые принято называть управляющими структурами. Условные инструкциии позволяют написать программу на языке Visual Basic, которая будет проверять условие и принимать решение какие действия по обработке данных должны выполняться. Условные инструкциии проверяют имеет условие значение True или False и в зависимости от результата, указывают одну или несколько дальнейших инструкциий. Обычно условие является выражением, которое использует оператор сравнения для сравнения одного значения переменной с другим. Инструкци цикла позволяют написать программу на языке Visual Basic, которая будет повторять выполнение определенного набора инструкциий. Некоторые циклы повторяют инструкциии пока условие имеет значение False; другие - пока значение условия равно True. Имеются также циклы, которые повторяют набор инструкциий определенное число раз или же выполняют его для каждого объекта семейства. Существует еще одна полезная управляющая структура - инструкциия With, которая позволяет выполнить последовательность инструкциий, не повторяя задание имени объекта.

Типы условных инструкциий If...Then...Else - ветвление программы в зависимости от значения условия True или False. Допускаются многократное вложение инструкциии If...Then...Else, имеющие столько уровней вложения, сколько потребуется. Однако для облегчения чтения программы вместо многократно вложенных инструкциий If...Then...Else иногда предпочтительнее использовать инструкциию Select Case. Select Case - выбор ветви из набора условий. Является альтернативой инструкциии If...Then...Else и используется при оценке одного выражения, которое имеет несколько возможных значений. В то время как If...Then...Else для каждой инструкциии ElseIf оценивает разные выражения, инструкциия Select Case оценивает выражение только один раз, в начале управляющей структуры.

Инструкция If...Then...Else Задает выполнение определенных групп инструкциий в зависимости от значения выражения. Возможны две формы синтаксиса: блочная If условие Then [инструкциии] [ElseIf условие-n Then [инструкциии_elseif]... [Else [инструкциии_else]] End If однострочная If условие Then [инструкциии] [Else инструкциии_else]

Синтаксис инструкциии If...Then...Else содержит следующие элементы:

Пример 1 - Разветвляющийся вычислительный процесс с инструкциией IF…END IF при х < 3 при 3 <= x <4 при х >= 4

Sub PrimerIf() Dim a, b, c, x As Double Dim y As Double a = InputBox("Введите a", "Пример - разветвляющийся вычислительный процесс") b = InputBox("Введите b", " Пример - разветвляющийся вычислительный процесс ") c = InputBox("Введите c", " Пример - разветвляющийся вычислительный процесс ") x = InputBox("Введите x", " Пример - разветвляющийся вычислительный процесс ") If x < 3 Then y = x ^ 3 - a * x ^ * x - 4 End If If x >= 3 And x < 4 Then y = Sqr((x - a) * (x - b)) End If If x >= 4 Then y = Log(b ^ 2) - Sin(c * x) End If MsgBox (" Результат: y = " & y) End Sub

Пример 2 -Разветвляющийся вычислительный процесс c использованием конструкции ElseIf при х < 3 при 3 <= x <4 при х >= 4

Sub PrimerElseIf() Dim a, b, c, x As Double Dim y As Double a = InputBox("Введите a", "Пример 2") b = InputBox("Введите b", "Пример 2") c = InputBox("Введите c", "Пример 2") x = InputBox("Введите X", "Пример 2") If x < 3 Then y = x ^ 3 - a * x ^ * x - 4 ElseIf x >= 3 And x < 4 Then y = Sqr((x - a) * (x - b)) Else y = Log(b ^ 2) - Sin(c * x) End If MsgBox (Результат: y = " & y) End Sub

Инструкция Select Case Выполняет одну из нескольких групп инструкциий в зависимости от значения выражения. Синтаксис: Select Case выражение [Case список Выражений-n [инструкциии-n]]... [Case Else [инструкциии_else]] End Select

Синтаксис инструкциии Select Case содержит следующие элементы:

Пример 3 -Разветвляющийся вычислительный процесс - инструкциия Select Case при х < 3 при x=3, c<20 при 3< х<=10

Sub PrimerCase() Dim a, b, c, x, y As Double a = InputBox("Введите a", "Пример - Case") b = InputBox("Введите b", "Пример - Case ") c = InputBox("Введите c", "Пример - Case ") x = InputBox("Введите x", "Пример - Case ") Select Case x Case Is < 3 y = x ^ 3 - a * x ^ * x - 4 MsgBox ("Результат: y = " & y) Case Is = 3 And c < 20 y = (x - a) * (x - b) MsgBox ( "Результат: y = " & y) Case 4 To 10 y = Log(b ^ 2) - Sin(c * x) MsgBox ("y = " & y) Case Else ' Другие значения MsgBox (" Результат: Вне интервала") End Select End Sub

Оператор Is Используется для сравнения двух переменных, содержащих ссылки на объекты. Синтаксис: результат = объект 1 Is объект 2 Оператор Is использует следующие операнды: Элемент Описание результат Обязательный; любая числовая переменная. объект 1Обязательный; любое имя объекта. объект 2Обязательный; любое имя объекта. Если переменные объект 1 и объект 2 содержат ссылки на один объект, результат имеет значение True; в противном случае результат имеет значение False. Ссылки на один объект в двух переменных задаются различными способами. В следующей инструкциии в переменной A задается ссылка на тот же объект, что и в переменной B: Set A = B Следующая инструкциия задает в переменных A и B ссылку на тот же объект, что и в переменной C:Set A = C Set B = C

3. Программирование циклических вычислительных процессов Циклы используются для многократного выполнения некоторого фрагмента кода программы. В VBA реализованы следующие типы циклов: For...Next: использует счетчик. Повторяет набор инструкциий указанное число раз. Do...Loop: повторяет набор инструкциий, пока условие имеет значение True или пока оно не примет значение True. For Each...Next: повторяет набор инструкциий для каждого объекта семейства

Цикл по счетчику - инструкциия For... Next Инструкция For...Next используется для выполнения наборов инструкциий указанное число раз. Циклы For используют в качестве счетчика переменную, значение которой увеличивается или уменьшается при каждом выполнении цикла. Синтаксис For счетчик = начало To конец [Step шаг] [инструкциии] [Exit For] [инструкциии] Next [счетчик]

Синтаксис инструкциии For…Next содержит следующие элементы:

Инструкция Exit For Альтернативный способ выхода из цикла предоставляет инструкциия Exit For. В любых местах цикла может размещаться любое число таких инструкциий. Инструкция Exit For часто применяется вместе с проверкой некоторого условия (например, If...Then). Эта инструкциия передает управление инструкциии, непосредственно следующей за инструкциией Next. Допускается организация вложенных циклов For...Next (один цикл For...Next располагается внутри другого). Счетчик каждого цикла должен иметь уникальное имя. Допускаются следующие конструкции: For I = 1 To 10 For J = 1 To 10 For K = 1 To Next K Next J Next I

Примеры использования инструкциии For …Next Пример 1 - Определение суммы элементов Sub PrimerZikl1() Dim x, i, s As Single s = 0 инициализация переменной для накопления суммы For x = 0.5 To 2.5 Step 0.1 s = s + x ^ * x - 4 Next MsgBox (" Результат: s = " & s) End Sub

Пример 2 - Определение произведения элементов Sub PrimerZikl3() Dim x, p As String p = 1 инициализация переменной для расчета произведения For x = 0.5 To 2.5 Step 0.1 p = p*( x ^ * x - 4) Next MsgBox ( Результат: p = " & p) End Sub

Пример 3 - Найти сумму элементов одномерного массива B[N] Sub PrimerMassivOdn() Dim b(), i, n, s As Integer n = InputBox("Введите n для определения размера массива", "Пример 3") ReDim b(n) s = 0 For i = 1 To n b(i) = InputBox("Введите значение элемента массива", "Пример 3") s = s + b(i) Next MsgBox (" Результат: s = " & s) End Sub

Пример 4 - Найти сумму элементов двумерного массива A[M,N] Sub PrimerMassivDvu() Dim b(), i, j, m, n, s As Integer m = InputBox("Введите m для определения числа строк матрицы", "Пример 4") n = InputBox("Введите n для определения числа столбцов матрицы ", "Пример 4") ReDim b(1 To m, 1 To n) s = 0 For i = 1 To m For j = 1 To n b(i, j) = InputBox("Введите значение элемента массива", "Пример 4") s = s + b(i, j) Next MsgBox (" Результат: s = " & s) End Sub

Пример 5 - Найти сумму четных элементов матрицы A[3,3] и произведение нечетных элементов этой матрицы. Sub Primer_5() Dim a(1 To 3, 1 To 3), i, j, pr, sum As Integer sum = 0 pr = 1 For i = 1 To 3 For j = 1 To 3 a(i, j) = InputBox("Введите значение элемента массива", "Пример 5") If a(i, j) Mod 2 = 0 Then Проверка на четность sum = sum + a(i, j) Else pr = pr * a(i, j) End If Next MsgBox (" Результат: s = " & sum) MsgBox (" Результат: p = " & pr) End Sub

Пример 6 - По ряду натуральных чисел [0; 41] вычислить произведение чисел кратных трем, но нечетных Sub Prod() Dim Chet As Integer, Pr As Long Pr = 1 For Chet = 0 To 41 Step 3 If Chet Mod 2 <> 0 Then Pr = Pr* Chet MsgBox " Элемент ряда - " & Chet End If Next ' Увеличивает счетчик MsgBox ("Результат - " & Pr) End Sub

Пример 7- Найти произведение суммы элементов матрицы В[M,N] по строкам Sub PrimerMassivDvu_7() Dim b(), i, j, m, n, s, p As Integer m = InputBox("Введите m для определения числа строк матрицы", "Пример 7") n = InputBox("Введите n для определения числа столбцов матрицы ", "Пример 7") ReDim b(1 To m, 1 To n) p = 1 For i = 1 To m s = 0 For j = 1 To n b(i, j) = InputBox("Введите значение элемента массива", "Пример 7") s = s + b(i, j) Next MsgBox ( Результат: s = " & s & " i = " & i) p = p * s Next MsgBox (" Результат: p = " & p) End Sub

Пример 8- Найти сумму произведений элементов матрицы A[M,N] по столбцам Sub PrimerMassivDvu_7() Dim b(), i, j, m, n, s, p As Integer m = InputBox("Введите m для определения числа строк матрицы", "Пример 7") n = InputBox("Введите n для определения числа столбцов матрицы ", "Пример 7") ReDim b(1 To m, 1 To n) s = 1 For j = 1 To m s = 0 For i = 1 To n b(i, j) = InputBox("Введите значение элемента массива", "Пример 7") p = p * b(i, j) Next MsgBox (" Результат: p = " & p & " j = " & j) s = s + p Next MsgBox ( " Результат: s = " & s) End Sub

Пример 9- Найти сумму элементов матрицы, расположенных над главной диагональю, над ней и под ней. Sub PrimerMassivDvu_9() Dim a(), i, j, m, n, s1, s2, s3 As Integer m = InputBox("Введите m для определения числа строк матрицы", "Пример 9") n = InputBox("Введите n для определения числа столбцов матрицы ", "Пример 9") ReDim a(1 To m, 1 To n) 'Матрица должна быть квадратная n=m For i = 1 To m For j = 1 To n a(i, j) = InputBox("Введите значение элемента массива", "Пример 9") Next s1 = 0 s2 = 0 s3 = 0

For i = 1 To m For j = 1 To n If i = j Then s1 = s1 + a(i, j) 'Накопление суммы элементов на главной диагонали End If If i < j Then s2 = s2 + a(i, j) 'Накопление суммы элементов выше главной диагонали End If If i > j Then s3 = s3 + a(i, j) 'Накопление суммы элементов ниже главной диагонали End If Next MsgBox (" Результат: s1 = " & s1) MsgBox (" Результат: s2 = " & s2) MsgBox (" Результат: s3 = " & s3) End Sub

Пример 10 - Поменять местами первую и четвертую строку матрицы А[3,4] Sub PrimerMassivDvu_10() Dim a(), i, j, m, n, c As Integer m = InputBox("Введите m для определения числа строк матрицы", "Пример 10") n = InputBox("Введите n для определения числа столбцов матрицы ", "Пример 10") ReDim a(1 To m, 1 To n) For i = 1 To m For j = 1 To n a(i, j) = InputBox("Введите значение элемента массива", "Пример 10") Next

For i = 1 To m For j = 1 To n If i = 1 Then c = a(1, j) a(1, j) = a(4, j) a(4, j) = c End If Next For i = 1 To m For j = 1 To n Debug.Print a(i, j) 'Вывод результата в окне отладки Next End Sub

Пример 10 - Найти минимальный и максимальный элемент массива чисел В произвольной размерности и их координаты. Sub PrimerMassivOdn_MinMax() Dim b(), i, j, n, minb, maxb, k As Integer n = InputBox("Введите n для определения размера массива", "Пример - одномерный массив") ReDim b(n) For i = 1 To n b(i) = InputBox("Введите значение элемента массива", "Пример 10") Next

minb = b(1) 'Установка начального значения переменной 'для определения минимального элемента For i = 1 To n If minb > b(i) Then minb = b(i) k = i 'Определение позиции минимального элемента в массиве End If Next MsgBox Prompt:="minb = " & minb & " k = " & k maxb = b(1) 'Установка начального значения переменной 'для определения максимального элемента For j = 1 To n If maxb < b(j) Then maxb = b(j) k = j 'Определение позиции максимального элемента в массиве End If Next MsgBox (" Результат: maxb = " & maxb & " k = " & k) End Sub

Пример 9 Сформировать одномерный массив С, состоящий только из нечетных положительных элементов матрицы A[5,7]

Инструкция Do...Loop Повторяет выполнение набора инструкциий, пока условие имеет значение True или пока оно не примет значение True. Синтаксис Do [{While | Until} условие] [инструкциии ] [Exit Do] [инструкциии] Loop Допустим также другой синтаксис: Do [инструкциии] [Exit Do] [инструкциии] Loop [{While | Until} условие]

Синтаксис инструкциии Do Loop содержит следующие элементы: В любом месте управляющей структуры Do…Loop может быть размещено любое число инструкциий Exit Do, обеспечивающих альтернативные возможности выхода из цикла Do…Loop. Часто используемая вместе с определением некоторого условия (например, If…Then), инструкциия Exit Do передает управление инструкциии, непосредственно следующей за инструкциией Loop. Во вложенных циклах Do…Loop инструкциия Exit Do передает управление циклу охватывающего уровня по отношению к циклу, в котором она вызывается.

Инструкция For Each...Next Повторяет выполнение группы инструкциий для каждого элемента массива или семейства. Синтаксис For Each элемент In группа [инструкциии] [Exit For] [инструкциии] Next [элемент]

Синтаксис инструкциии For...Each...Next содержит следующие элементы:

Вход в блок For...Each выполняется только в том случае, если группа содержит хотя бы один элемент. После входа в цикл все инструкциии цикла выполняются для первого элемента группы. Затем, если группа содержит другие элементы, инструкциии цикла выполняются для каждого элемента. После обработки всех элементов цикл завершается, а выполнение продолжается с инструкциии, следующей за инструкциией Next. В любых местах цикла может размещаться любое число инструкциий Exit For, позволяющих выйти из цикла. Инструкция Exit For часто применяется вместе с проверкой некоторого условия (например, If…Then). Она передает управление инструкциии, непосредственно следующей за инструкциией Next. Допускается организация вложенных циклов For...Each...Next (один цикл For...Each...Next располагается внутри другого). Однако каждый элемент цикла должен быть уникальным. Примечание. Если опустить элемент в инструкциии Next, выполнение продолжается так же, как если бы элемент был указан. При обнаружении инструкциии Next до соответствующей инструкциии For возникает ошибка. Не допускается использование инструкциии For...Each...Next с массивами, определяемых пользователями типов, поскольку значение типа Variant не может содержать тип, определяемый пользователем.

Инструкция With Выполняет последовательность инструкциий над одиночным объектом или определяемым пользователем типом данных. Синтаксис With объект [инструкциии] End With Синтаксис инструкциии With содержит следующие элементы:

Инструкция With позволяет выполнить последовательность инструкциий над указанным объектом, не повторяя задание имени объекта. Например, если имеется несколько свойств, которые необходимо изменить для одиночного объекта, то удобнее поместить инструкциии присвоения свойств внутрь управляющей структуры With, указав ссылку на объект один раз, вместо того, чтобы ссылаться на объект при каждом присвоении его свойств. Следующий пример демонстрирует использование инструкциии With для присвоения значений нескольким свойствам одного объекта. With MyLabel.Height = Width = Caption = "Объект MyLabel" End With Примечание. После входа в блок With значение аргумента объект изменить невозможно. В результате, невозможно использование одной инструкциии With для воздействия на различные объекты. Допускается создание вложенных конструкций With внутри другого. Однако, поскольку ссылки на объекты внешних блоков With перекрываются во внутренних блоках, необходимо во внутренних блоках With задавать полные ссылки на любой компонент объекта из внешнего блока With.