- •Содержание
- •Часть 1. Основные понятия программирования §1.1. Этапы разработки программного обеспечения
- •§1.2. Основные сведения об алгоритмах Понятие алгоритма
- •Свойства алгоритма
- •Формы записи алгоритмов
- •Блок-схемы алгоритмов
- •§1.3. Языки программирования
- •§1.4. Паскаль и Object Pascal, Турбо-Паскаль и Delphi
- •Контрольные вопросы
- •Язык, оболочка и интегрированная среда разработки
- •Часть 2. Общие сведения о языке Паскаль §2.1. Алфавит и служебные слова
- •Описание общих конструкций языка
- •§2.2. Структура программы
- •§2.3. Разделы описаний Описание меток
- •Определение констант
- •Определение типов
- •Описание переменных
- •Контрольные вопросы
- •Часть 3. Простые типы данных Иерархия типов
- •§3.1. Целые типы
- •§3.2. Вещественные типы
- •§3.3. Логический тип
- •§3.4. Литерный тип
- •§3.5. Перечисляемый тип
- •§3.6. Диапазоны (интервальный тип)
- •Дополнительные типы в Delphi
- •Контрольные вопросы
- •Глава 4. Операторы языка Паскаль Выражения
- •§4.1. Оператор присваивания
- •§4.2. Ввод-вывод данных
- •§4.3. Составной оператор
- •§4.4. Пустой оператор
- •§4.5. Безусловный оператор перехода
- •§4.6. Условный оператор
- •§4.7. Оператор цикла с параметром for
- •§4.8. Оператор цикла с предусловием while
- •§4.9. Оператор цикла с постусловием repeat
- •§4.10. Оператор выбора case
- •Контрольные вопросы
- •Глава 5. Процедурное программирование §5.1. Функции
- •Параметры – значения
- •Параметры – переменные
- •Бестиповые параметры
- •§5.2. Процедуры
- •Правила использования подпрограмм
- •Рекурсия
- •Директивы
- •Процедурные типы
- •Пример использования подпрограмм
- •Контрольные вопросы
- •Глава 6. Структурированные типы данных
- •§6.1. Массивы
- •§6.2. Строки
- •§6.3. Записи
- •§6.4. Множества
- •Пример использования множеств
- •§6.5. Файлы
- •Установочные и завершающие операции
- •Операции ввода-вывода
- •Перемещения по файлу
- •Пример работы с файлом
- •Обработка ошибок ввода-вывода
- •Специальные операции
- •Пример объединения двух файлов
- •Текстовые файлы
- •Стандартные текстовые файлы
- •Файлы без типа
- •Контрольные вопросы
- •Глава 7. Динамические структуры данных §7.1. Динамические переменные
- •§7.2. Указатели
- •Работа с динамическими переменными
- •Пример двухсвязанного циклического списка
- •Указатели без типа
- •Контрольные вопросы
- •Глава 8. Низкоуровневые возможности Паскаля §8.1. Язык Ассемблер
- •§8.2. Доступ к аппаратуре Доступ к памяти
- •Доступ к портам ввода-вывода
- •Работа по прерываниям
- •Контрольные вопросы
- •Глава 9. Модули §9.1. Основные понятия
- •§9.2. Использование модулей
- •§9.3. Стандартные модули
- •§9.4. Модуль Crt
- •Работа с экраном в текстовом режиме
- •Работа с клавиатурой
- •Работа со звуком
- •§9.5. Модуль dos
- •§9.6. Графический режим монитора
- •Контрольные вопросы
- •Глава 10. Введение в объектно-ориентированное программирование §10.1. История развития программирования
- •Понятие объекта
- •§10.2. Свойства объектов
- •Раннее и позднее связывание
- •§10.3. Виртуальные методы
- •Конструкторы и деструкторы
- •§10.4. Динамические объекты
- •Скрытые поля и методы
- •Контрольные вопросы
- •Литература
Формы записи алгоритмов
Существуют три основных способа записи или представления алгоритма [5]:
1) словесная (текстуальная) запись алгоритма;
2) описание на алгоритмическом языке;
3) структурная схема (графическая схема).
Словесное описание алгоритма представляет собой текст, в котором на каком-либо разговорном языке (например, на русском) по пунктам записана последовательность действий. Строгие требования к форме такой записи не предъявляются, но существуют определенные правила, выполнение которых облегчает понимание алгоритма. Все действия расписываются по шагам или нумеруются, чтобы было удобно ссылаться при необходимости по номеру шага или пункта. Начало алгоритма и его окончание иногда отмечают словами «начало» и «конец». Можно указывать в одном пункте не одно действие, а группу простых действий.
Пример. Вычисление
.
Вычисление производится по итерационной
формуле
.
При последовательных приближениях необходимо задавать точность, с которой подсчитывается выходная величина. Обозначим ее как ε. За начальное приближение примем само значение а.
Шаг 1. Определим начальные значения а и ε.
Шаг 2. Выберем начальное приближение хп равным а.
Шаг 3. Вычислим следующее приближение хп+1 по формуле .
Шаг 4. Если
,
то хп+1 – искомый
результат, и алгоритм окончен.
Шаг 5. Положим хп = хп+1 и перейдем к шагу 3.
Количество шагов для этой задачи может быть и другим, например, если в шаге 4 записать «…, то перейти к шагу 6». И далее
Шаг 6. Вывести значение хп+1.
Шаг 7. Конец алгоритма.
В словесной форме удобно задавать алгоритмы для людей. Например, инструкции по эксплуатации различных бытовых приборов можно рассматривать как алгоритм. Но для ЭВМ при сложных задачах, с множеством ветвлений и циклов такая форма записи не наглядна.
Любая программа является представлением алгоритма. Но наиболее наглядными с точки зрения человека являются программы на алгоритмических языках высокого уровня. Но программа есть представление алгоритма с максимальной степенью детализации, и укрупненные алгоритмы в такой форме представления записывать нельзя. По способу записи эта форма близка к словесной, но со строгими формальными правилами.
Графическое представление алгоритма изображается в виде блок-схем или граф-схем. Рисунки, или графические изображения считаются наиболее наглядным представлением информации, поэтому и сложные алгоритмы наиболее удобны и понятны при их графическом представлении. Здесь отдельные шаги представляются в виде геометрических фигур, соединенных линиями, указывающими последовательность перехода от блока к блоку. Конструкторскую документацию по алгоритмам при разработке программных продуктов оформляют в виде блок-схем, поэтому существуют определенные стандарты в ЕСПД, регламентирующие запись алгоритмов [6]. Более подробно они будут рассмотрены далее.
Существуют и другие формы записи алгоритмов [3]:
1) операторный способ;
2) с использованием диаграммы Нэсси-Шнейдермана;
3) с использованием Р-схемы;
4) с помощью псевдокода.
Последний способ получил достаточно широкое распространение и является промежуточным перед записью алгоритма в терминах выбранного языка программирования. По сути своей является симбиозом естественного языка и языка программирования. В некоторых случаях псевдокод практически является алгоритмическим языком высокого уровня.
