- •Программирование в excel
- •Симферополь 2000
- •Факультет "Механизация сельского хозяйства" Программирование в excel
- •1. Основы программирования на vba
- •1.1. Создание, редактирование и запись программ
- •1.1.1. Запись макроса
- •1.1.2. Как найти макрос в проекте
- •1.1.3. Написание новой процедуры
- •Чем макрос отличается от процедуры
- •1.1.4. Процедуры типа Sub и Function
- •1.1.5. Закрытые и открытые процедуры
- •1.1.6. Использование значения, возвращаемого функцией
- •1.1.7. Выполнение процедуры Sub
- •1.1.8. Передача аргументов в процедуру
- •1.1.9. Именованные аргументы
- •1.1.10. Написание процедур для обработки событий
- •1.1.11. Где хранится код обработки события
- •1.1.12. Средства, ускоряющие написание программ
- •1.1.13. Как написать легкочитаемую программу
- •1.2. Переменные, константы и типы данных
- •1.2.1. Типы данных в Visual Basic
- •1.2.2. Объявление константы, переменной или массива
- •1.2.3. Объявление объектной переменной
- •1.2.4. Встроенные константы
- •1.3. Управляющие конструкции
- •1.3.1. Операторы ветвления
- •1.3.2. Операторы циклов
- •1.3.3. Вложение управляющих конструкций
- •1.3.4. Выход из циклов и процедур
- •1.4. Структура программы
- •2. Сортировка данных
- •2.1. Алгоритм сортировки обменами (алгоритм “пузырька”)
- •2.2. Алгоритм сортировки вставками
- •2.3. Алгоритм сортировки выбором элемента
- •2.4. Алгоритм быстрой сортировки (метод Хоора)
- •2.5. Алгоритм пирамиды (метод Уильямса-Флойда)
- •2.6. Учебные задачи по программированию сортировки данных
- •3. Работа vba с объектами Excel
- •3.1. Как получить справку по Visual Basic для Microsoft Excel
- •3.2. Объекты Microsoft Excel
- •3.3. Работа с объектом Application
- •3.4. Работа с объектом Workbook
- •3.4.1. Открытие рабочей книги
- •3.4.2. Закрытие рабочей книги
- •3.4.3. Создание и сохранение рабочей книги
- •3.5. Работа с объектом Range
- •3.6. Строковые ссылки в стиле а1 или имена диапазонов
- •3.6.1. Числовые индексы строк и колонок
- •3.6.2. Свойство Offset
- •3.6.3. Свойства CurrentRegion и UsedRange
- •3.6.4. Организация циклов для перебора ячеек диапазона
- •3.6.5. Применение свойства Address для отладки кода, работающего с объектом Range
- •3.7. Работа с событиями
- •3.7.1. Включение и отключение обработки событий
- •3.7.2. Использование событий, связанных с рабочими листами
- •3.7.3. События на уровне рабочего листа
- •3.7.4. События на уровне диаграммы
- •3.7.5. События на уровне рабочей книги
- •3.7.6. События на уровне приложения
- •3.7.7. Модули классов и события
- •4. Численные методы математики
- •4.1. Методы решения нелинейных уравнений
- •4.1.2. Метод деления отрезка пополам (метод дихотомии).
- •4.1.3. Метод Ньютона (касательных).
- •4.1.4. Метод хорд (секущих).
- •4.1.5. Метод итераций (метод последовательных приближений).
- •4.2.1. Теоретические сведения
- •4.2.2. Метод Крамера
- •4.2.3. Метод Гаусса
- •4.2.6. Метод Зейделя
- •4.3. Обработка экспериментальных данных
- •4.3.1. Задачи, которые возникают при обработке экспериментальных данных.
- •4.3.2. Интерполяция
- •4.3.2.1. Интерполяция функций
- •4.3.3.2. Определение параметров эмпирической формулы
- •4.4. Методы численного интегрирования
- •4.4.1. Метод трапеций
- •4.4.2. Метод Симпсона
- •4.4.3. Оценка точности формул численного интегрирования. Выбор шага интегриров-ания
- •4.4.3.1. Выбор шага интегрирования по оценке остаточного члена (ошибки)
- •4.4.3.2. Выбор шага интегрирования с помощью двойного пересчета
- •4.5.1. Теоретические сведения
- •4.5.2. Одноступенчатые методы
- •4.5.2.1. Решение с помощью рядов Тейлора
- •4.5.2.2 Метод Эйлера
- •4.5.2.3. Модифицированный метод Эйлера
- •4.5.2.4. Метод Эйлера-Коши
- •4.5.2.5 Метод Рунге-Кутта
- •4.5.3. Многоступенчатые методы
- •4.5.3.1. Методы прогноза и коррекции
- •4.6. Методы решения линейной краевой задачи для обыкновенных дифференциальных уравнений
- •4.6.1. Постановка задачи
- •4.6.2. Метод конечных разностей
- •4.6.3. Метод прогонки
- •4.6.4. Алгоритм решения краевой задачи методом прогонки.
2. Сортировка данных
Алгоритмы сортировки данных являются одними из лучших примеров для обучения программированию логически ветвящихся процессов.
Под сортировкой данных в самом широком смысле слова можно понимать процесс изменения порядка элементов в некоторой информационной совокупности таким образом, чтобы обеспечить возрастание (неубывание) или убывание (невозрастание) числового значения элемента данных или определенного числового параметра, связанного с каждым элементом данных (ключа), при переходе от предыдущего элемента к последующему.
Для числовых данных понятия “возрастания” и “убывания” обычно относятся непосредственно к значению чисел - для любой пары натуральных или вещественных чисел определены отношения порядка типа “больше” и “меньше”.
Для символьных данных понятия “возрастания” и “убывания” относятся к числовым значениям внутримашинного кода, используемого для представления символов в памяти компьютера. Так как все буквенные символы располагаются в таблице кодов по алфавиту, то сортировка слов текста всегда приводит к их упорядочению в алфавитной (лексикографической) последовательности.
Отсортировать последовательность чисел можно точно таким же способом, как и последовательность строк текста. Нужно только уметь определять какой из элементов пары “больше” (“не меньше”) другого.
Сформулируем постановку задачи сортировки данных в наиболее простой и понятной форме - для внутренней (в оперативной памяти) сортировки одномерного числового массива по возрастанию (неубыванию).
ЗАДАЧА. Имеется одномерный массив чисел, состоящий из n элементов: A[n]. Требуется найти (создать) такую перестановку элементов массива, при которой их значения располагаются в порядке возрастания (неубывания), т.е. для любой пары элементов A[i] и A[i+1] выполняется неравенство вида:
A[i] <= A[i+1]
Наиболее известными и хорошо описанными в литературе алгоритмами сортировки являются следующие:
1. Метод сортировки обменами (алгоритм “пузырька”).
2. Метод сортировки вставками.
3. Метод сортировки выбором элемента.
4. Метод разделения (алгоритм “быстрой” сортировки).
5. Метод “пирамиды”.
Главным показателем качества алгоритма внутренней сортировки является скорость сортировки (“трудоемкость”). Первые три алгоритма не имеют большой практической ценности и обладают слишком большой трудоемкостью, при этом очень просты для программирования и тем хороши для обучения.
Алгоритмы “пирамиды” и “быстрой” сортировки обеспечивают высокую скорость сортировки и находят широкое практическое применение.
2.1. Алгоритм сортировки обменами (алгоритм “пузырька”)
Метод “пузырька” является, пожалуй, самым простым из всех известных методов внутренней сортировки. Суть этого алгоритма состоит в последовательном просмотре массива от конца к началу или от начала к концу и сравнении каждой пары элементов между собой. При этом “неправильное” расположение элементов устраняется путем их перестановки (обмена значениями). Процесс просмотра и сравнения элементов повторяется до получения результата. При сортировке по неубыванию “легкие” элементы с меньшим значением как бы “всплывают” к началу массива подобно тому, как это делают пузырьки воздуха в стакане с водой - отсюда и происходит популярное название алгоритма.
Программа реализации алгоритма сортировки приведена ниже в Лабораторной работе 3.