- •Оглавление
- •Раздел 1. Принципы построения алгоритмов и алгоритмические конструкции. Тема 1.1. Сущность алгоритмизации
- •1. Понятие алгоритма.
- •2. Свойства алгоритмов.
- •3. Формы записи алгоритма.
- •Тема 1.2. Алгоритмы. Основы алгоритмической структуры
- •Раздел 2. Системы и технологии структурного и объектно – ориентированного программирования. Тема 2.1. Этапы разработки программ
- •Постановка задачи
- •Формулировка и анализ физической задачи
- •Составление математической модели
- •Составление алгоритма задачи
- •Создание программы
- •Составление текста программы
- •Синтаксическая отладка программы
- •Тестирование и семантическая отладка
- •Структурное тестирование
- •Совместимое тестирование модулей
- •Семантическая отладка
- •Документирование программы
- •Пользовательская документация программы
- •Документация по сопровождению программы
- •Запуск готовой программы и анализ полученных результатов
- •Тема 2.2. Базовые средства языка. Технология структурного программирования
- •Тема 2.3. Базовые конструкции структурного программирования.
- •Переменные
- •Длина переменных
- •Типизированные константы
- •Типы данных в Паскале
- •Целые типы
- •Вещественные типы
- •Функции
- •Булевые типы
- •Порядок выполнения операций
- •Условные операторы
- •Оператор if-else
- •Оператор case (оператор выбора)
- •Вложенные конструкции if-else
- •Циклы в Паскале
- •Цикл While
- •Цикл repeat
- •Тема 2.4. Технология объектно – ориентированного программирования (ооп).
- •Общие представление о массиве
- •Одномерные массивы
- •Двумерные массивы
- •Раздел 3. Базы данных Тема 3.1. Основы понятия теории баз данных. Модели и структуры данных.
- •Многоуровневые модели предметной области
- •Идентификация объектов и записей
- •Представление предметной области и модели данных
- •Структуры данных
- •Тема 3.2. Физические модели баз данных
- •4.2.2. Левосписковые структуры с переполнениями
- •Тема 3.3. Модели и этапы проектирования баз данных
- •Тема 3.4. Проектирование реляционной базы данных
- •Тема 3.5. Управление базой данных с помощью sql
2. Свойства алгоритмов.
Любой алгоритм должен удовлетворять основным свойствам::
Конечность (результативность)
Дискретность
Понятность
Точность (определённость)
Корректность
Массовость
Конечность алгоритма означает, что за конечное число шагов должен быть получен результат. Поэтому иногда это свойство называют результативностью.
Пример 5. Пусть имеется последовательность команд:
Взять книгу
Открыть первую страницу
Пока не конец книги выполнить следующие действия:
Прочитать текст
Перелистнуть книгу на следующую страницу
Прочитать текст
Открыть первую страницу
Легко догадаться, что данная последовательность команд будет выполняться бесконечно и поэтому алгоритмом не является.
Чтобы данный алгоритм стал конечным, надо исключить из него пункты c и d.
Дискретность означает, что алгоритм должен быть разбит на последовательность отдельно выполняемых шагов.
Пример 6. Пусть необходимо решить следующий пример: (80+10)-5*(3+5)=
Запишем алгоритм решение примера, разбив его на шаги:
Вычислить 80+10
Вычислить 3+5
Умножить 5 на результат предыдущего действия
Вычесть из результата 1-го действия результат 3-го действия
В результате выполнения алгоритма получим 50.
Понятность алгоритма означает, что алгоритм должен содержать только те команды, которые входят в СКИ.
Если в данном алгоритме начать, например, выполнять четвёртое действие, не дожидаясь окончания выполнения третьего, то результат не может быть получен.
Понятность алгоритма означает, что алгоритм должен содержать только те команды, которые входят в СКИ.
Пример 7. Рассмотрим алгоритм:
Пойти на кухню
Вскипятить чайник
Насыпать в чашку 1 чайную ложку кофе
Положить в чашку 3 чайных ложки сахара
Налить полную чашку кипячёной воды
Очевидно, что он легко может быть выполнен 10-летней девочкой, которая понимает все команды, входящие в данный алгоритм. Однако, для 10-месячного малыша данный алгоритм будет непонятен.
Точность (определённость) алгоритма означает, что любая его команда должна определять однозначное действие исполнителя. Иными словами, алгоритм не должен быть рассчитан на принятие каких-либо самостоятельных решений исполнителем.
Пример 8. Рассмотрим следующий
алгоритм, описывающий, как добраться
до стадиона:
Идти прямо
Повернуть
Идти прямо
Сесть на автобус
Доехать до остановки «Стадион»
Данный алгоритм не уточняет, какое расстояние нужно пройти прямо, в какую сторону повернуть, на какой автобус сесть, поэтому разные исполнители будут выполнять его по-разному и цель вряд ли будет достигнута.
Массовость – лгоритм должен быть пригоден для решения не только одной конкретной задачи, а так же для реализации целого класса родственных задач.
Корректность – свойство алгоритма, заключающееся в способности алгоритма давать правильные результаты при различных исходных данных.
3. Формы записи алгоритма.
Не зная нотной грамоты, не сыграть по нотам; не разбираясь в названиях продуктов и кухонной посуды, не приготовить блюда. Поэтому алгоритмы всегда записываются так, чтобы исполнители их понимали и могли их выполнить. Это значит что есть правила записи алгоритмов, и эти правила должен знать как программист, так и исполнитель.
Для записи алгоритмов используют несколько способов:
словесный
графический
программный
Самый простой способ – словесный – это способ записи алгоритма на естественном языке, но с тщательно отработанным набором слов и фраз, не допускающих повторений, синонимов, двусмысленности, лишних слов. Допускается использование математических символов.
Пример 9. Алгоритмы, записанные словесным способом: поваренная книга, инструкция к телевизору.
При графическом способе описания алгоритма осуществляется с помощью блок-схем.
Графический способ описания алгоритма (блок - схема) получил самое широкое распространение. Для графического описания алгоритмов используются схемы алгоритмов или блочные символы (блоки), которые соединяются между собой линиями связи.
Каждый этап вычислительного процесса представляется геометрическими фигурами (блоками).
Наименование |
Обозначение |
Функция |
Блок начало-конец (пуск-остановка) |
|
Элемент отображает выход во внешнюю среду и вход из внешней среды (наиболее частое применение − начало и конец программы). Внутри фигуры записывается соответствующее действие. |
Блок действия |
|
Выполнение одной или нескольких операций, обработка данных любого вида (изменение значения данных, формы представления, расположения). Внутри фигуры записывают непосредственно сами операции, например, операцию присваивания: a = 10*b + c. |
Логический блок (блок условия) |
|
Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента. Вход в элемент обозначается линией, входящей обычно в верхнюю вершину элемента. Если выходов два или три, то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней). Если выходов больше трех, то их следует показывать одной линией, выходящей из вершины (чаще нижней) элемента, которая затем разветвляется. Соответствующие результаты вычислений могут записываться рядом с линиями, отображающими эти пути. Примеры решения: в общем случае − сравнение (три выхода: >, <, =); в программировании − условные операторы if (два выхода: true, false) и case (множество выходов). |
Предопределённый процесс |
|
Символ отображает выполнение процесса, состоящего из одной или нескольких операций, который определен в другом месте программы (в подпрограмме, модуле). Внутри символа записывается название процесса и передаваемые в него данные. Например, в программировании − вызов процедуры или функции. |
Данные (ввод-вывод) |
|
Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы). |
Граница цикла |
|
Символ состоит из двух частей − соответственно, начало и конец цикла − операции, выполняемые внутри цикла, размещаются между ними. Условия цикла и приращения записываются внутри символа начала или конца цикла − в зависимости от типа организации цикла. Часто для изображения на блок-схеме цикла вместо данного символа используют символ условия, указывая в нём решение, а одну из линий выхода замыкают выше в блок-схеме (перед операциями цикла). |
Соединитель |
|
Символ отображает вход в часть схемы и выход из другой части этой схемы. Используется для обрыва линии и продолжения её в другом месте (для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц). Соответствующие соединительные символы должны иметь одинаковое (при том уникальное) обозначение. |
Комментарий |
|
Используется для более подробного описания шага, процесса или группы процессов. Описание помещается со стороны квадратной скобки и охватывается ей по всей высоте. Пунктирная линия идет к описываемому элементу, либо группе элементов (при этом группа выделяется замкнутой пунктирной линией). Также символ комментария следует использовать в тех случаях, когда объём текста, помещаемого внутри некоего символа (например, символ процесса, символ данных и др.), превышает размер самого этого символа. |
Использование блок-схем дает возможность:
• наглядно отобразить базовые конструкции алгоритма;
• сосредоточить внимание на структуре алгоритма, а не на синтаксисе языка;
• анализировать логическую структуру алгоритма;
• преобразовывать алгоритм методом укрупнения (сведе-ния к единому блоку) или детализации – разбиения на ряд бло-ков;
• использовать принцип блочности при коллективном ре-шении сложной задачи;
• осуществить быструю проверку разработанного алго-ритма (на уровне идеи);
• разобрать большее число учебных задач.
Составление блок-схемы алгоритма является важным и в большинстве случаев необходимым этапом решения сложной и большой задачи на ЭВМ, значительно облегчающим процесс составления программ.
Программный способ – это запись алгоритма на языке программирования (в виде компьютерной программы).
Пример 10. Алгоритм, записанный на языке программирования TURBO PASCAL.
