
- •Министерство образования и науки российской федерации
- •Алгоритмизация и программирование на vba: структурное программирование
- •305040, Г. Курск, ул. 50 лет Октября, 94. Содержание
- •1Цель работы
- •2Общие сведения
- •2.1Структурное программирование
- •2.2Реализация подпрограмм на vba.
- •2.2.1Описание подпрограмм GoSub - Return
- •Синтаксис вызова и описания подпрограммы:
- •2.2.2Описание процедур и функций.
- •Области видимости имен
- •Время жизни переменной
- •Параметры
- •Описание процедур Синтаксис описания процедуры:
- •Синтаксис элемента СписокАргументов:
- •Описание функций Синтаксис описания функции:
- •2.2.3Вызов процедур и функций Вызов процедур Синтаксис вызова процедуры:
- •Вызов функций
- •Примеры Основные способы передачи параметров в процедуры.
- •Передача массива как параметра.
- •Использование необязательных параметров
- •Использование неопределенного количества параметров
- •2.2.4Рекурсивные процедуры и функции
- •2.2.5Использование функций пользователя в Excel
- •Алгоритм
- •Исходный текст
- •2.3.2Пример 2. Диагонали
- •Постановка задачи
- •Информационная структура задачи
- •Разработка алгоритма программы
- •Разработка исходного текста программы
- •Информационная структура задачи
- •Разработка алгоритма программы сортировки матрицы
- •Разработка исходного текста программы
- •Разработка алгоритма
- •Разработка исходного текста процедуры сортировки номеров строк в порядке возрастания минимальных значений.
- •Информационная структура задачи
- •Разработка алгоритма программы решения слау
- •Разработка исходного текста программы
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •Процедура прямого хода.
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •Процедура поиска главного элемента.
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •Процедура обратного хода.
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •6Варианты задач
- •7Список литературы
Информационная структура
Входные данные
n – количество уравнений – целое число >0;
A – двумерный массив с матрицей – nxn типа Double;
B – одномерный массив с вектором – n чисел типа Double;
Локальные данные
i – номер элемента вектора решений – целое число от 1 до n;
XOrder – одномерный массив с исходными порядковыми номерами вектора решений – n целых чисел;
Выходные данные
X – одномерный массив с вектором решений – n чисел типа Double, определён при ECode=0;
ECode – код ошибки для хранения информации о том, что система имеет решение, несовместна или неопределённа – целое число.
Разработка алгоритма
Рисунок 20. Схема алгоритма процедуры решения СЛАУ методом Гаусса
Разработка исходного текста процедуры
Sub GaussSolve(A() As Double, B() As Double, X() As Double, n As Long, ECode As Byte)
Dim XOrder() As Long, i As Long
ReDim XOrder(1 To n) 'размер локального массива
For i = 1 To n 'по строкам i от 1 до n
XOrder(i) = i 'исходный порядок
Next i 'следующий элемент
ForwardStage A, B, XOrder, n, ECode 'Прямой ход
If ECode = 0 Then BackStage A, B, X, XOrder, n 'Обратный ход
End Sub
Процедура прямого хода.
В процессе прямого хода главную матрицу приводят к верхнетреугольной форме, обнуляя значения столбцов под главной диагональю. Столбцы обрабатываются последовательно, начиная с первого. Для каждого из столбцов выполняется поиск и перемещение главного элемента столбца на главную диагональ. Поиск осуществляется в части матрицы, не содержащей уже обработанных столбцов и соответствующих им строк с главными элементами. Для обнуления элементов столбца под главной диагональю, получившуюся после перестановки строку с главным элементом столбца вычитают из остальных строк, предварительно помножив на величину, равную отношению элемента обнуляемого столбца каждой из остальных строк (если он уже не нулевой) к главному элементу столбца.
Если система имеет единственное решение, в каждом столбце главный элемент не будет равен нулю. Если у одного из столбцов главный элемент получился равным нулю, то если соответствующий элемент вектора свободных членов тоже равен нулю, система неопределённа, иначе – несовместна.
Информационная структура
Входные данные
n – количество уравнений – целое число >0;
A – двумерный массив с матрицей – nxn типа Double;
B – одномерный массив с вектором – n чисел типа Double;
XOrder – одномерный массив с исходными порядковыми номерами вектора решений – n целых чисел;
Локальные данные
i – номер текущего диагонального элемента массива, под которым будет обнуляться столбец – целое;
j – номер текущей строки массива, в которой обнуляется i-й элемент – целое;
k – номер элемента строки, i-й столбец которой обнуляется – целое;
C – коэффициент, при умножении на который элемент i-го столбца j-й строки будет равен текущему диагональному - типа Double;
Выходные данные
ECode – код ошибки – целое число.
A – двумерный массив с верхнетреугольной матрицей – nxn типа Double, определён при ECode=0;
B – одномерный массив с преобразованным вектором свободных членов – n чисел типа Double, определён при ECode=0;
XOrder – одномерный массив с порядковыми номерами вектора решений – n целых чисел, определён при ECode=0;