ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.11.2021
Просмотров: 98
Скачиваний: 1
Основные понятия алгоритмизации
1. Понятие алгоритма
Понятие алгоритма является одним из основных понятий современных математики и информатики, но зародилось оно еще в глубокой древности. Термин алгоритм происходит от имени средневекового узбекского математика Аль Хорезми (IX в.), который сформулировал правила выполнения четырех арифметических действий в десятичной системе счисления.
В современной информатике используется следующее определение алгоритма. Алгоритмом называют систему четких однозначных указаний, которые определяют последовательность действий над некоторыми объектами и после конечного числа шагов приводят к получению требуемого результата.
2. Свойства алгоритма
1. Дискретность алгоритма предполагает, что решение задачи (т.е. алгоритм) разбито на отдельные шаги (операции, команды) и переход к следующему шагу возможен только после выполнения предыдущего.
2. Определенность (точность) алгоритма предполагает, что каждая его команда должна однозначно определять действие исполнителя алгоритма (записанные в алгоритме команды должны иметь однозначную трактовку).
3. Понятность алгоритма подразумевает, что он должен включать в себя только те шаги или команды, которые понятны исполнителю (в алгоритме не могут присутствовать команды, смысл которых неизвестен исполнителю).
4. Результативность (конечность) предполагает, что алгоритм должен быть нацелен на получение конечного результата, т.е. исполнение алгоритма должно закончиться за конечное число шагов.
5. Массовость алгоритма подразумевает, что алгоритм должен быть пригоден для решения целого класса однотипных задач (а не только для одной конкретной задачи).
3. Основные способы записи алгоритмов
1. Словесный способ, т.е. описание алгоритма на естественном языке (словами).
2. Формульно-словесный способ, в котором кроме слов могут использоваться математические формулы.
3. Графический способ, т.е. в виде блок-схемы.
4. Программный способ, т.е. в виде программы на алгоритмическом языке.
4. Основные элементы блок-схемы
Запись алгоритма графическим способом, т.е. с помощью блок-схемы, является наиболее наглядным способом записи алгоритма, позволяющим легко «читать» даже сложные по структуре алгоритмы. Каждый пункт алгоритма отображается на схеме некоторой геометрической фигурой – блоком, который дополняется элементами словесной записи.
Блоки на схемах соединяются линиями потоков информации (в виде линий со стрелкой на конце). Основное направление потока информации идет сверху вниз и слева направо (тогда стрелки могут не указываться), снизу вверх и справа налево – в этих случаях стрелки обязательны. Количество входящих линий для блока не ограничено. Выходящая линия должна быть одна (кроме логического блока – блока принятия решения).
N |
Элемент |
Название элемента |
1 |
|
Блок начала или конца алгоритма |
2 |
|
Блок расчета (Вычислительный блок) |
3 |
|
Блок ввода или вывода данных |
4 |
|
Логический блок (Блок принятия решения) |
5 |
|
Блок модификации (для цикла с заданным числом повторений) |
5. Типы данных.
В программировании данными принято называть информацию, подвергающуюся обработке с помощью некоторого алгоритма (программы). Данные, известные до выполнения алгоритма и подающиеся ему на вход (например, через ввод), называют исходными данными. Данные, получающиеся в процессе выполнения алгоритма на его различных шагах, называют промежуточными. Данные, получаемые в конце работы алгоритма (как результат решения задачи), называют выходными данными.
Во многих ЯП данные делятся на константы и переменные. Константы – это данные, значения которых не меняются в процессе выполнения алгоритма. Переменные – это такие данные, значения которых могут меняться в процессе выполнения алгоритма.
Каждая переменная, используемая в алгоритме (программе), должна иметь свое уникальное имя – идентификатор. В большинстве ЯП идентификатор переменной представляет собой последовательность букв и цифр, начинающуюся с буквы.
Любой константе, переменной, выражению (с точки зрения обработки на ЭВМ) ставится в соответствие некоторый тип данных. Тип данных характеризует множество значений, к которому относится данная константа и которые может принимать данная переменная (или выражение). Например, если переменная i в некотором алгоритме должна принимать только значения из множества целых чисел, то ей ставится в соответствие целый тип данных.
Типы данных принято делить на простые (базовые) и структурированные (сложные).
К основным простым типам относятся:
– целый (чаще всего обозначается как Integer) определяет множество целых чисел (в ограниченном диапазоне),
– вещественный (в Паскале обозначается как Real, в языке Visual Basic как Double) определяет множество действительных чисел (в ограниченном диапазоне),
– логический (обозначается как Boolean) определяет множество из двух значений: истина и ложь,
– символьный (в Паскале обозначается как Char, в Visual Basic отсутствует) определяет множество целых чисел (в ограниченном диапазоне).
Основные типы языка VBA перечислены в главе 3 в пункте 3.2 (в таблице 3) с указанием диапазона и размера занимаемой памяти по каждому типу данных.
Отличие простых переменных от структурированных. Переменной простого типа в определенный момент времени ставится в соответствие только одно значение. Переменной структурированного типа ставится в соответствие целый набор значений (т.е. некоторая структура).
К основным структурированным типам данных относятся: массив, запись и файл.
Массив представляет собой конечный набор элементов одного типа. Размерность массива определяется количеством индексов, которые ставятся в соответствие каждому элементу массива. Например, в одномерном массиве каждому элементу ставится в соответствие значение только одного индекса (номер элемента), в двумерном массиве (матрице) каждому элементу ставятся в соответствие значения двух индексов: номер строки и номер столбца.
При описании переменной типа массив указывается имя массива, а также тип элементов данного массива (описание массива в языке VBA см. в пункте 3.2).
Для обращения к отдельному элементу массива указывается не только имя массива, но и значения его индексов (в одномерном массиве – номер элемента) в скобках после имени массива.
Пример. Х – одномерный массив из 10 элементов целого типа. Требуется присвоить пятому элементу массива Х значение 10.
На языке Паскаль это действие запишется так:
X[5]:=10;
На языке Бейсик (в том числе на VBA):
X(5)=10
Для обработки массивов, как правило, используются циклические структуры, т.к. в цикле можно задать выполнение одного и того же действия поочередно для всех элементов массива.
6. Типовые структуры алгоритмов
Типовой (или базовой) структурой называют определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий. В структурном программировании различают три типовых структуры: 1) линейную, 2) разветвляющуюся, 3) циклическую.
1. Линейная структура алгоритма, называемая также последовательной, предполагает, что действия (блоки) выполняются последовательно друг за другом в порядке их записи (следования). В блок-схеме алгоритма линейной структуры могут использоваться только блоки двух типов (не считая блоков начала и конца, которые должны быть у любого алгоритма): блоки расчета и блоки ввода/вывода (рис. 2).
Рис.2. Пример блок-схемы алгоритма линейной структуры
2. Разветвляющаяся структура алгоритма предполагает использование логического блока (блока принятия решения), в котором записывается некоторое условие для проверки. Данный блок имеет два выхода, один из которых помечается словом «Да» (или знаком «+»), другой – словом «Нет» (или знаком «–»).
Условие должно являться выражением логического типа, которое может принимать только одно из двух значений: истина или ложь (true или false). Если при проверке условия оно оказалось истинным, то далее выполнение алгоритма осуществляется по ветке «Да». В противном случае (если условие ложно) выполнение алгоритма происходит по ветке «Нет» (рис.3). Кроме обычного разветвления может использоваться его частный случай, называемый «обход», когда никаких действий на ветку «Нет» не задано (рис.4).
Рис.3. Разветвление Рис.4. Обход
3. Циклическая структура алгоритма предполагает многократное повторение некоторой последовательности действий («цикл» означает «повтор»). Однако «многократно» не значит «бесконечно». Организация цикла, никогда не приводящего к остановке выполнения алгоритма, является нарушением требования его результативности – получения результата за конечное число шагов (см. свойства алгоритма в пункте 2.2).
Любой цикл состоит из двух компонент: 1) условия цикла, которое должно проверяться на каждом шаге цикла и определять момент завершения работы цикла (т.е. выход из цикла), 2) тела цикла, представляющего собой последовательность действий, подлежащих многократному повторению. В зависимости от порядка записи этих компонент различают 2 типа циклов: 1) цикл «с предусловием» (рис. 5), 2) цикл «с постусловием» (рис. 6).
Рис.5. Цикл «с предусловием» Рис.6. Цикл «с постусловием»
По количеству повторений тела цикла различают также 2 типа циклов: 1) цикл с незаданным числом шагов (повторений), 2) цикл с заданным числом шагов.
Особенность цикла с заданным числом шагов в том, что условие цикла в нем не задается в явном виде, а как бы подразумевается. Управление цикла осуществляется через специальную управляющую переменную (как правило, целого типа). В заголовке цикла вместо условия записываются параметры этой управляющей переменной: ее начальное и конечное значения, а также шаг изменения (по умолчанию используется шаг равный 1). Таким образом, уже в заголовке цикла задается определенное количество повторений тела цикла.
Для оформления цикла с заданным числом повторений в блок-схеме используется специальный блок модификации (см. таблицу 2). Для записи такого цикла в программе на языках Бейсик и Паскаль используется оператор For.
В рассмотренном ниже примере (рис. 7) изображен цикл, который всегда (т.е. независимо от действий, заданных до цикла, исходных параметров задачи и содержания тела цикла) будет работать 50 раз. На первом шаге цикла тело выполнится при i=1, на втором шаге – при i=3, на третьем шаге – при i=5 и т.д. Последний раз тело цикла будет выполнено при i=99.
Рис.7. Пример блок-схемы цикла с заданным число повторений
где i – управляющая переменная,1 – ее начальное значение,
100 – конечное значение, 2 – шаг изменения значения i.
7. Стандартные алгоритмы
Стандартными называют алгоритмы, эффективные способы организации которых уже были разработаны ранее (т.е. уже известны). К стандартным алгоритмам относятся алгоритмы решения таких задач как накопление суммы и произведения элементов массива, поиск максимального и минимального элемента массива, сортировка элементов массива.
7.1. Алгоритм накопления суммы (произведения)
Суть алгоритма накопления в том, что сумма или произведение вычисляются не сразу, а постепенно накапливаются за счет добавления очередного элемента массива на каждом шаге цикла. Для правильной работы алгоритма переменной, в которой будет накапливаться сумма (произведение), должно быть присвоено определенное начальное значение, не влияющее на действие накопления. Например, при накоплении суммы в качестве начального значения берется 0 (т.к. прибавление нуля не влияет на сумму), а при накоплении произведения начальное значение равно 1 (при умножении на 1 произведение не меняется).
Рис. 8. Накопление суммы Рис. 9. Накопление произведения
Пусть Х – одномерный массив из n элементов (чисел). Требуется вычислить сумму элементов массива S. Переменную-индекс для перебора элементов в цикле обозначим как i.
Блок-схема накопления суммы элементов массива Х в переменную S изображена на рисунке 8. Накопление произведения элементов массива Х в переменную P выполняется аналогично накоплению суммы (рис. 9).
Язык и система программирования Visual Basic for Application (VBA)
1. Общая характеристика языка и системы программирования VBA
Название Visual Basic for Application можно перевести как «Visual Basic для приложения». В данном случае речь идет о системе программирования языка Visual Basic (Визуальный Бейсик), встроенной в прикладные программы (приложения) пакета MS Office: текстовый редактор MS Word, электронную таблицу Excel, программу презентаций Power Point, систему управления базами данных Access и др. Можно воспользоваться средствами VBA в любой из этих программ, чтобы расширить ее возможности (улучшить интерфейс, задать нестандартные действия или вычисления и т.п.).
Например, с помощью VBA в среде электронной таблицы Excel можно:
– создавать функции пользователя, если недостаточно возможностей стандартных встроенных функций;
– с помощью специального макрорекодера (MacroRecoder) задать автоматическую запись программного кода согласно действиям, выполненным пользователем в электронной таблице;
– создавать различные дополнительные визуальные элементы (окна, панели, кнопки и пр.).
Язык программирования, используемый в VBA, для записи программного кода представляет собой диалект языка Visual Basic, который в свою очередь базируется на классическом алгоритмическом языке Basic (Бейсик).
Одной из особенностей Visual Basic, а, следовательно, и VBA, является использование элементов объектно-ориентированного подхода к программированию (ООП). При этом объект – это программный элемент, у которого может быть свое отображение на экране и который содержит некоторые переменные, определяющие его свойства, а также методы управления им. Таким образом, объект позволяет инкапсулировать (объединять в нечто целое) данные вместе с кодом, предназначенным для их обработки.
Например, в VBA для Excel может использоваться более 100 встроенных объектов, находящихся на разных уровнях иерархии. Приведем названия некоторых из них: Range – блок (диапазон) ячеек, Cell – ячейка, WorkSheet – рабочий лист, DialogSheet – диалоговое окно, WorkBook – рабочая книга и т.д. Главным в иерархии объектов является объект Application, который представляет собой само приложение Excel. Он имеет более 120 свойств и 40 методов, предназначенных для установки общих параметров приложения.
Система программирования VBA представляет собой интегрированную среду разработки программ, которая включает в себя следующие компоненты: окно проекта, окно для редактирования программного кода (текста программ), окно свойств, окно просмотра объектов и др.