- •Содержание
- •Алгоритмизация и программирование vba введение
- •1 Макросы
- •На панели быстрого запуска
- •2. Алгоритмизация
- •2.1 Алгоритм. Общие сведения.
- •Форма записи алгоритма на естественном языке
- •2.3 Графическая форма записи алгоритма
- •2.4 Правила оформления схем алгоритмов
- •2.5 Основные этапы подготовки и решения задачи на компьютере
- •2.6 Постановка задачи. Разработка математической модели
- •Складских помещений
- •Равным плану d в виде блок-схемы
- •Массива по строкам
- •3 Язык программирования
- •Функции InputBox
- •Воды предприятием и номера месяца с минимальным расходом в виде блок-схемы
- •Программирование на vba в microsoft office
- •4.1 Программирование на vba в Excel
- •(Для наглядности выделен)
- •В нём активной ячейки
- •В формуле ячейки
- •Change объекта WorkSheet
- •4.2 Программирование на vba в Word
- •4.3 Программирование на vba в PowerPoint
- •«Элементы управления»
- •5 Технология организации, хранения и обработки данных
- •5.1 Общие сведения
- •5.2 Листинг программы
- •5.3 Алгоритм программы
- •5.4 Результат работы
- •Список использованных источников
2.4 Правила оформления схем алгоритмов
При написании алгоритма программы наиболее удобным способом отображения является графический способ — схема структурная.
Условные обозначения и правила выполнения схем алгоритмов регламентируются требованиями «Единой системы программной документации» в соответствии с ГОСТ 19.701-90 (ИСО 5807-85).
Схема алгоритма состоит из символов, краткого пояснительного текста и соединяющих линий. Символы предназначены для графического обозначения отдельных операций, суть которых выражается текстом внутри символов. Символы должны быть по возможности одного размера и располагаться в схеме равномерно, в любой ориентации, но предпочтительным является их горизонтальное расположение.
Символы в схеме соединяются линиями, которые указывают потоки управления. Направление потока слева направо и сверху вниз считается стандартным. Направление потока, отличное от стандартного, должно быть отмечено стрелкой на конце линии (при вхождении потока в символ или в другую линию потока). Линии должны быть направлены к центру символа.
Следует избегать пересечения линий, если потоки в данном месте не входят друг в друга. При необходимости линии в схемах следует разрывать во избежание лишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц. Соединитель в начале разрыва является внешним, а в конце разрыва — внутренним.
Внутри символа помещается минимальное количество текста, необходимого для понимания функции данного символа.
Если такой текст требует значительного увеличения размера символа, то для размещения текста следует использовать символ "комментарий". Пунктирная линия символа "комментарий" связывается с соответствующим символом или может обводить группу символов (рисунок 2.1).
Рисунок 2.1 – Символ «комментарий»
В комментариях к соединителям могут быть приведены ссылки к страницам (рисунок 2.2).
Рисунок 2.2 – Ссылки к страницам
Как правило, каждый символ имеет один вход и один выход. Исключение составляют символы:
"терминатор" (у операции "начало" нет входа, а у операции "конец" нет выхода),
"решение" (один вход и несколько выходов),
"подготовка" (организация цикла).
Все основные символы алгоритма вписываются в прямоугольник со сторонами ab. Соотношение сторон a = 2b или 2a = 3b. Базовый размер a берут из ряда 10, 15, 20 и т. д. кратным 5.
Некоторые основные символы для создания схем алгоритмов представлены ниже (рисунок 2.3).
Рисунок 2.3 – Основные символы, используемые для построения структурных схем алгоритмов
Представление алгоритма решения задачи в виде схемы является наиболее наглядным, позволяет проследить процесс прохождения данных, связи между отдельными участками программы.
Но схема должна быть удобочитаемой, т.е. не должна быть чересчур мелкой, подробной, "перегруженной", чтобы не потерять своей наглядности.
В случае описания решения очень большой, сложной задачи рекомендуется выполнять схему с несколькими уровнями детализации, число которых зависит от размеров и сложности задачи. Уровень детализации должен быть таким, чтобы различные части и взаимосвязь между ними были понятны в целом.
При этом весь алгоритм разбивается на смысловые фрагменты, связь между которыми следует указать на более крупной схеме.
Сами же фрагменты удобнее выполнять на отдельных страницах, желательно каждый фрагмент размещать на одной странице, не перегружая чрезмерно ссылками и комментариями.
Символ "решение" является логическим. Каждый выход из символа "решение" должен сопровождаться значением условия, приведенного внутри (рисунок 2.4).
Рисунок 2.4 – Примеры частей алгоритмов
Основными алгоритмическими структурами (ОАС) являются линейный алгоритм, разветвляющийся (развилка) и циклический (цикл).
В более сложных случаях используются суперпозиции (вложения) ОАС. Ниже приведены графические обозначения (обозначения на блок-схемах) ОАС (рисунок 2.5).
На схемах СЕРИЯ обозначает один или несколько любых операторов; УСЛОВИЕ есть логическое выражение (ЛВ) (если его значение ИСТИНА, переход происходит по ветви ДА, иначе — то НЕТ).
На схеме цикла с параметром использованы обозначения: ПЦ — параметр цикла, НЗ — начальное значение параметра цикла, КЗ — конечное значение параметра цикла, Ш — шаг изменения параметра цикла.
Линейный
алгоритм
Полная развилка
Неполная развилка
Цикл с предусловием Цикл с постусловием Цикл с параметром
(цикл ПОКА) (Цикл ДО)
Рисунок 2.5 – Графические обозначения ОАС
В примерах мы будем использовать запись алгоритмов с помощью блок-схем и словесное описание.
Линейный вычислительный процесс. Линейный алгоритм
Линейный вычислительный процесс − это процесс с естественным и единственным порядком выполнения действий алгоритма, реализует расчеты по явным формулам. В практике этот процесс самостоятельно встречается редко, но в качестве отдельных участков (структура следования) он есть практически во всех алгоритмах.
Представим примеры математических моделей функциональной и вычислительной задач, блок-схемы их алгоритмов имеют линейную структуру (рисунок 2.6).
Рисунок 2.6 − Блок-схемы (линейная структура)
Простейшие задачи имеют линейный алгоритм решения. Это означает, что он не содержит проверок условий и повторений.
Пример №1
Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Найти весь путь пешехода (рисунок 2.7).
|
1. Ввести v1, v2, v3, t1, t2, t3. 2. S1:= v1 * t1. 3. S2:= v2 * t2. 4. S3:= v3 * t3. 5. S:= S1 + S2 + S3. 6. Вывести значение S. 7. Конец. |
Рисунок 2.7 – Алгоритм нахождения пути пешехода
Пример №2
Дано натуральное трехзначное число n, в записи которого нет нулей. Составить алгоритм, который возвращает значение ИСТИНА, если верно утверждение: "число n кратно каждой своей цифре", и ЛОЖЬ — в противном случае.
На приведенной ниже схеме DIV и MOD соответственно операции деления нацело и получения остатка от целочисленного деления.
В фигурных скобках записаны пояснения (комментарии) к операторам. Для проверки работоспособности алгоритмов данных примеров необходимо задать значения входных переменных, вычислить конечный результат по алгоритму и сравнить с результатом ручного счета (рисунок 2.8).
|
1. Ввестичисло n 2. A:= n mod 10 {разряд единиц} 3. B:= n div 100 {разряд сотен} 4. C:= n div 10 mod 10 {десятки} 5. L:= (n mod A=0) and (n mod B=0) and (n mod C=0) 6. Вывод L 7. Конец |
Рисунок 2.8 – Алгоритм, возвращающий значение «истина» при верном утверждении: «число n кратно каждой своей цифре»
Разветвляющийся вычислительный процесс. Развилка
Вычислительный процесс, в котором естественный порядок выполнения действий нарушается в результате проверки некоторого условия и образования двух ветвей дальнейших действий, называется разветвляющимся.
Участок алгоритма, состоящий из блока выбора решения и связанных с ним блоков по направлениям «да» и «нет», будем называть разветвленным.
Достаточно часто то или иное действие должно быть выполнено в зависимости от значения логического выражения, выступающего в качестве условия. В таких случаях используется развилка.
Пример №3
Вычислить значение функции:
При тестировании алгоритмов с развилкой необходимо подбирать такие исходные данные, чтобы можно было проверить все ветви.
В приведенном примере должно быть, по крайней мере, три тестовых набора (рисунок 2.9).
|
1. Ввести x. 2. Если x≤–12, то y:=–x2 3. Если x<0, то y:=x4 4. y:= x–2 5. Вывести y 6. Конец |
Рисунок 2.9 – Алгоритм вычисления функции
Пример №4
Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе — оставить без изменения. Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384 (рисунок 2.10).
Замечание: рассмотренный пример иллюстрирует основными алгоритмическими структурами неполную развилку (в соответствии с рисунком 2.5).
|
1. Ввестичисло n 2.Если число n нечетное, меньше 16384, то n:= n * 2 3. Вывод n 4. Конец |
Рисунок 2.10 – Алгоритм решения примера №4
Пример №5
Рассчитать недельную заработную плату рабочего, если известно количество отработанных им часов и стоимость одного часа (рисунок 2.11).
Рисунок 2.11 − Блок-схема к примеру №5
Рабочая неделя длится 40 часов, если рабочий отработал больше 40 часов, то его сверхурочные рассчитываются по двойному тарифу.
а) Введем обозначения переменных:
k – количество отработанных часов в неделю;
t – стоимость одного часа (тариф);
zp – недельная заработная плата рабочего.
б) Тип переменных:
k – простая переменная целого типа;
t, zp – простые переменные вещественного типа.
в) Классификация по группам:
исходные данные: k, t;
результат: zp.
г) Расчетные формулы в последовательности их выполнения: Если количество отработанных часов k ≥ 40, то zp=40t+(k-40)2t, иначе zp=40t.
Пример №6
Переменные a, b, c, x заданы. Требуется предусмотреть исключение всех случаев возникновения неопределенности при вычислении функции по формуле:
а) Введем новые переменные для повторяющихся выражений:
t=ax-b, p=2.5bx;
б) Тип переменных:
a, b, c, x, t, p, y - простые переменные вещественного типа;
в) Классификация по группам:
исходные данные: a, b, c, x;
результат: y;
промежуточные результаты: t, p;
г) Расчетные формулы в последовательности их выполнения:
t=ax-b; p=2.5bx;
Если знаменатель дробного выражения p = 0, то выводится сообщение "Y не определена", иначе
Если логарифмическое выражение t ≤ 0, то выводится сообщение "Y не определена", иначе выводится значение (рисунок 2.12):
Рисунок 2.12 − Блок-схема к примеру №6
Циклический вычислительный процесс. Циклы
При составлении алгоритмов решения функциональных задач нередко возникают случаи, когда приходится неоднократно повторять вычисления по одним и тем же математическим зависимостям для различных значений входящих в них величин. Такие многократно повторяемые участки вычислительного процесса называются циклами.
Существует два основных вида циклов: цикл со счётчиком (с известным числом повторений) и цикл с условием.
Циклы со счетчиком используют в тех случаях, когда необходимо повторить некоторые действия заданное число раз. Счётчик цикла - это переменная, управляющая работой цикла и имеющая начальное значение, конечное значение и шаг изменения.
Циклы с условием применяются тогда, когда некоторые действия в программе должны повторяться в зависимости от условия:
алгоритмическая структура Цикл До (цикл с постусловием) применяется в том случае, когда какие-либо операции необходимо исполнить несколько раз до того, как будет истинным (не станет ложным) определенное условие;
алгоритмическая структура Цикл Пока (цикл с предусловием) отличается от цикла с постусловием тем, что проверка условия на окончание осуществляется перед исполнением операторов тела цикла.
Для организации цикла нужно выбрать переменную, управляющую циклом (параметр цикла).
Параметр цикла — это простая переменная, которая изменяется при каждом повторении цикла по некоторому закону и управляет работой цикла. Цикл предусматривает четыре основных действия:
1. Присваивание начального значения параметру цикла;
2. Рабочий участок или тело цикла, содержащий действия, повторяющиеся несколько раз;
3. Изменение параметра цикла;
4. Проверка условия окончания цикла и при невыполнении его переход к началу тела цикла.
Выполним построение математической модели и алгоритма решения задачи табулирования функции.
Пример №7
Подсчитать количество нечетных цифр в записи натурального числа n. Идея решения: из заданного числа выбирать из младшего разряда цифру за цифрой до тех пор, пока оно не исчерпается, т.е. станет равным нулю. Каждую нечётную цифру следует учитывать.
1. Ввестичисло n
2. K:= 0 {подготавливаемсчётчик}
3. Если n = 0, переходкп. 7
4. Если n mod 10 mod 2 = 1, то K:= K +1
5. n:= n div 10
6. Переходкп. 3
7. Вывод K
8. Конец
Два способа решения задачи: слева решение с использованием цикла с предусловием, справа — с постусловием (рисунок 2.13).
Рисунок 2.13 – Использование цикла с предусловием (слева), а также с постусловием (справа)
Пример №8
Дана последовательность. Общий член определяется формулой:
Вычислить при n>2 сумму тех ее членов, которые больше заданного числа e. При решении задачи находится очередной член последовательно и, если он больше e, добавляется к сумме.
В рассмотренных ниже примерах количество повторений заранее неизвестно. В первом оно зависит от количества цифр в записи натурального числа, во втором — от числа e.
В тех же случая, когда количество шагов известно из условия задачи, проще и предпочтительней использовать цикл с параметром (рисунок 2.14).
|
1. Ввести e 2. S := 0 3. A := 1/4 4. n := 3 5. СравнитьАс e. Если A>=e, переходкп. 10 6. S := S + A 7. A := (n-1)/(n*n) 8. n := n + 1 9. Переходкп. 5 10. Вывод S 11. Конец |
Рисунок 2.14 – Пример цикла с параметром
Пример №9
Найти произведение первых k натуральных чисел, кратных трём. При составлении алгоритма учтем, что первое натуральное число, кратное 3, есть тройка, а все последующие больше предыдущего на 3.
Изучение программирования разумно начинать собственно с разработки алгоритмов, не акцентируя первоначально внимания на записи алгоритма на том или ином языке программирования. Так же существуют ещё и вспомогательные алгоритмы (с подпрограммами) и смешанные (содержащие и циклы, и подпрограммы, и ветвление). [10]
Метод разработки сложных алгоритмов сверху вниз, с последующим уточнением, называется методом последовательной детализации.
При этом способе алгоритмы записываются в виде множества вспомогательных алгоритмов, решающих вспомогательные подзадачи. При составлении новых алгоритмов могут использоваться алгоритмы, составленные раньше (рисунок 2.15).
|
1. Ввод k 2. P:= 1 {накапливаем произведение} 3. T:= 0 {здесь будут числа, кратные 3} 4. I:= 1 5. Если I > k, переход к п. 10 6. T := T + 3 7. P := P * T 8. I := I + 1 9. Перейти к п. 5 10. Вывод P 11. Конец |
Рисунок 2.15 – Метод последовательной детализации
Алгоритмы, целиком используемые в составе других алгоритмов, называют вспомогательными. Вспомогательный алгоритм на языке BASIC реализуется в виде:
Подпрограмм;
Стандартных функций;
Функций пользователя.
При составлении диалоговых алгоритмов следует придерживаться следующего порядка: задача → сценарий → алгоритм → программа.
Сценарий диалога это блок-схема из картинок, текстов и сообщений на экране ЭВМ с указанием стрелками порядка их появления.
Решение задачи на ЭВМ — это процесс автоматического преобразования исходных данных в искомый результат в соответствии с заданным алгоритмом.
Перед решением задачи на ЭВМ, выполняются следующие этапы:
Постановка задачи;
Построение математической модели;
Алгоритмизация;
Решение задачи на ЭВМ. [11]
На практике наиболее распространены следующие формы представления алгоритмов:
словесная (запись на естественном языке);
псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
графическая (изображения из графических символов);
программная (тексты на языках программирования).
