- •Содержание
- •Часть 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. Динамические объекты
- •Скрытые поля и методы
- •Контрольные вопросы
- •Литература
Часть 1. Основные понятия программирования §1.1. Этапы разработки программного обеспечения
Профессиональное программирование подразумевает, что результатом труда, – программным продуктом, – будет пользоваться определенный круг людей, пользователей. На этапе разработки программы, в которой может участвовать группа людей, пользователей представляет Заказчик.
Для выполнения задачи создания и эксплуатации программного обеспечения ее разбивают на определенные этапы:
Постановка задачи.
Составление алгоритма.
Составление и ввод программы.
Отладка и тестирование программы.
Сопровождение программного продукта.
Создание любой программы начинается с постановки задачи. Изначально задача ставится в терминах некоторой предметной области, и необходимо перевести ее в понятия и выражения, более близкие к программированию. Поскольку программист первоначально редко досконально разбирается в предметной области, а Заказчик – в программировании, то постановка задачи может стать весьма непростым итерационным процессом.
Постановка задачи заканчивается созданием технического задания, а затем и внешней спецификации программы, которая включает в себя:
Описание исходных данных и результатов (виды, представление, точность, ограничения и т.п.).
Описание задачи, реализуемой программой.
Способ обращения к программе.
Описание возможных особых и аварийных ситуаций и ошибок пользователя.
На этом этапе программа рассматривается как «черный ящик», для которого определяется выполняемая им функция, входные и выходные данные. Каким образом достигается выполнение функций, здесь не указывается.
На втором этапе разрабатываются алгоритмы, задаваемые спецификациями, и формируется (проектируется) общая структура программ [3]. Здесь обычно применяется технология нисходящего проектирования с использованием метода пошаговой детализации. То есть сначала составляется укрупненный алгоритм в самом общем виде. Затем уточняются шаги (блоки) с более подробным описанием. На этом этапе описания производятся на языке, понятном человеку, используя определенную форму записи алгоритма. В программировании широко используется графическая форма записи в виде блок-схем или граф-схем.
Третий этап как раз и является непосредственно программированием на языке, понятном ЭВМ. По своей сути третий этап является продолжением второго, так как программа тоже есть форма записи алгоритма с максимальной степенью детализации, – программная.
Изучению одного из языков программирования высокого уровня и посвящается данный курс.
Четвертый этап подразумевает устранение всех ошибок и недопониманий, возникших на предыдущих этапах. Человеку свойственно ошибаться, поэтому четвертому этапу уделяется много внимания.
Существуют самые разнообразные методы и рекомендации по тестированию и отладке. Необходимо различать эти два понятия. Тестирование представляет собой процесс, посредством которого проверяется правильность функционирования программы и соответствие всем проектным спецификациям. В частности, для этих целей создается набор тестов. Отладка – процесс исправления ошибок в программе. Так, при отладке исправляются синтаксические ошибки, алгоритмические, ошибки, обнаруженные при тестировании и другие.
Пятый этап наступает, когда программный продукт сдан в эксплуатацию (или начались его продажи). Здесь так же возможно обнаружение не найденных на этапе тестирования ошибок, – их необходимо локализовать и исправить. Кроме этого, возможно изменение свойств программы для удобства эксплуатации: элементов интерфейса, некоторых функций и т.д. Казалось бы, пятый этап самый простой. Но ему отводится самая большая часть затрат времени и средств: до половины и более.
Все эти этапы разработки и сопровождения программного продукта, включая завершение поддержки эксплуатации, составляют жизненный цикл программы.
Возможно и другое деление на этапы [1] с приблизительным делением по времени реализации, как указано на рис. 1.1:
Анализ требований.
Определение спецификаций.
Проектирование.
Кодирование.
Автономное тестирование.
Комплексное тестирование.
Рис. 1.1. Временные затраты на реализацию этапов цикла разработки программного обеспечения (за исключением этапа эксплуатации и сопровождения) [1]
На последний же этап эксплуатации и сопровождения объемных программных продуктов отводится более половины времени: до 67% от общего времени жизненного цикла.
Классическим называется следующий набор технологических этапов (процессов) [2]:
Возникновение и исследование идеи
Управление
Анализ требований
Проектирование
Программирование
Тестирование и отладка
Ввод в действие
Эксплуатация и сопровождение
Завершение эксплуатации
Процессы жизненного цикла программного обеспечения определены международным стандартом ISO 12207 [ISO/IEC 12207:1995] и делятся на три группы (без привязки ко времени) [2]:
Основные процессы: приобретение, поставка, разработка, эксплуатация, сопровождение.
Вспомогательные процессы: документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, совместная оценка, аудит, разрешение проблем.
Организационные процессы: управление, создание инфраструктуры, усовершенствование, обучение.
