Программирование на языке Pascal



         

Программирование на языке Pascal

Наш курс посвящен изучению не только языка Pascal, но и некоторых алгоритмов, решающих наиболее известные задачи программирования, поэтому начнем мы со знакомства с некоторыми основополагающими понятиями.
Алгоритм - это последовательность действий, которые необходимо выполнить, чтобы решить поставленную задачу.
Программа же представляет собой набор команд на языке, понятном исполнителю, реализующий некоторый алгоритм. В нашем случае исполнителем является компьютер, а языком программирования будет язык высокого уровня Pascal. К сожалению, любой язык высокого уровня удобен только человеку, пишущему или отлаживающему программу, но совершенно непонятен компьютеру. Программа на таком языке называется исходным текстом и хранится во внешнем файле с расширением .pas.

Алгоритм и программа
Любой алгоритм должен обладать следующими свойствами: массовостью (алгоритм должен уметь решать не одну конкретную задачу, а целый класс однотипных задач);результативностью (алгоритм должен выдавать результат своей работы);определенностью (на каждом шаге выполнения алгоритма исполнитель должен точно знать, какой шаг будет следующим).

Свойства алгоритма
Компиляция, отладка и тестирование
Средства разработки программ
Структура Pascal-программы
Внешний вид исходного текста программы
Комментарии
Директивы компилятора
Идентификаторы
Переменные и типы данных
Константы

Типы данных языка Pascal
Компиляторы языка Pascal требуют, чтобы сведения об объеме памяти, необходимой для работы программы, были предоставлены до начала ее работы. Для этого в разделе описания переменных (var) нужно перечислить все переменные, используемые в программе. Кроме того, необходимо также сообщить компилятору, сколько памяти каждая из этих переменных будет занимать. А еще было бы неплохо заранее условиться о различных операциях, применимых к тем или иным переменным

Типы данных, относящиеся к порядковым
Вещественные типы данных
Конструируемые типы данных
Арифметические операции
Другие операции
Стандартные арифметические функции
Арифметические выражения
Полнота вычислений
Порядок вычислений
Совместимость типов данных

Операторы ветвления
К операторам, позволяющим из нескольких возможных вариантов выполнения программы (ветвей) выбрать только один, относятся if и case.

Условный оператор if
Оператор выбора case
Иллюстрация if и case
Иллюстрация if и case - 2
Массивы
Описание массива
Нумерация
Описание переменных размерностей
Обращение к компонентам массива
Задание массива константой

Задача сортировки
Необходимость отсортировать какие-либо величины возникает в программировании очень часто. К примеру, входные данные подаются "вперемешку", а вашей программе удобнее обрабатывать упорядоченную последовательность. Существуют ситуации, когда предварительная сортировка данных позволяет сократить содержательную часть алгоритма в разы, а время его работы - в десятки раз.

Простые сортировки
Сортировка простыми вставками
Сортировка бинарными вставками
Сортировка бинарными вставками - 2
Сортировка простым выбором
Сортировка простыми обменами
Улучшенные сортировки
Сортировка Шелла
Сортировка Шелла - 2
Сортировка Шелла - 3

Символы и строки
Две предыдущие лекции были посвящены произвольным массивам. Перейдем теперь к изучению массивов специального вида - линейных массивов, состоящих только из символов, - строк. Кроме того, сами символы мы тоже не обойдем вниманием.

Описание строк
Неименованные константы
Нетипизированные константы
Типизированные константы
Операции
Стандартные функции
Стандартные функции и процедуры обработки строк
Сравнения
Обращение к компонентам строки
Конкатенация

Ввод и вывод: файлы
В первой лекции мы уже рассматривали ввод информации с клавиатуры и вывод ее на экран1). Однако процесс ввода с консоли весьма трудоемок, а результат вывода на консоль - недолговечен. К счастью, существует более удобный способ записывать, хранить, пересылать и по необходимости считывать информацию из постоянной памяти компьютера. Для этого применяются файлы.

Что такое файл
Когда нужно использовать файлы
Разновидности файлов
Описание файлов
Текстовые файлы
Оперирование файлами
Назначение файла
Открытие файла
Закрытие файла
Считывание из файла

Записи
Продолжая изучение структурированных типов данных, переходим к записям. Как и массивы, записи являются структурами прямого доступа, однако, в отличие от массивов, могут хранить элементы, относящиеся к разным типам данных. Таким образом, запись - это вектор, компоненты которого (поля) могут относиться к разным типам данных.

Описание записей
Задание записей константой
Доступ к полям
Оперирование несколькими полями
Вложенные операторы with
Запись с вариантной частью
Описание записи с вариантной частью
Механизм использования записи с вариантной частью
Бинарные файлы
Типизированные файлы

Подпрограммы
Весьма поэтичное объяснение понятия подпрограмма дал В.Ф. Очков: "Подпрограмма - это припев песни, который поют несколько раз, а в текстах песен печатают только один раз"1). В самом деле, если есть необходимость многократно совершать одни и те же действия, то вполне логично описать их единожды, а потом лишь ставить на них ссылку. Именно такой смысл имеет использование подпрограмм.

Объявление и описание
Объявление функции
Объявление процедуры
Описание подпрограммы
Список параметров
Возвращаемые значения
Вызов подпрограмм
Способы подстановки аргументов
Описание
Механизм передачи значения

Динамические структуры данных
Динамические структуры данных служат полезным дополнением к стандартным структурам, уже определенным в языке Pascal. Динамическими они называются потому, что их элементы создаются и уничтожаются "на ходу" - в процессе работы программы.

Стек
Операции
Очередь
Операции
Дек
Рекурсия
Рекурсивные подпрограммы
Пример рекурсивного алгоритма
Алгоритм решения
Стековая организация рекурсии

Статически выделяемая память
Для того, чтобы лучше понять специфику динамически выделяемой памяти, рассмотрим сначала ее "антипод" - память, распределяемую статически. Такое выделение памяти используется всякий раз при объявлении "обычных" переменных в разделе var. Каждая переменная обладает двумя атрибутами: именем и описанием.

Адреса
Указатели
Описание указателей
Определение адреса
Разыменование
Присваивания
Сравнения
Динамически распределяемая память
Типизированные указатели
Нетипизированные указатели

Чуть-чуть истории
Теория графов - довольно молодая наука (по сравнению, скажем, с геометрией). В 1736 году Санкт-Петербургская академия наук опубликовала труд Леонарда Эйлера, где рассматривалась задача о кенигсбергских мостах ("Можно ли, пройдя все городские мосты ровно по одному разу, вернуться в исходную точку?"). Это была первая работа по будущей теории графов.

Графы: определения и примеры
Неориентированные графы
Неориентированные графы - 2
Ориентированные графы
Взвешенные графы
Способы представления графов
Матрица смежности
Матрица смежности - 2
Список ребер
Списки смежности

Генерация дерева синтаксического анализа
Для простоты мы будем считать, что правильное арифметическое выражение подается в одной строке, без пробелов, а каждый операнд записан одной буквой. Приоритет операций определяется расставленными скобками: ими должна быть снабжена каждая операция.

Построение из инфиксной записи
Алгоритм Infix
Реализация
Построение из префиксной записи
Алгоритм Prefix
Реализация
Построение из постфиксной записи
Алгоритм Postfix
Реализация
Обходы деревьев и графов

Модульность программ
Простейшая модульность программы может достигаться за счет применения процедур и функций, однако этого не всегда достаточно. Если все подпрограммы содержатся в одном файле, то исправление единственной ошибки в какой-либо подпрограмме приведет к неизбежной перекомпиляции всего кода. А при современных размерах программ компиляция может длиться даже не минуты, а часы.

Стандартные модули языка Pascal
System
Crt
Wincrt
Printer
Winprn
Dos
Windos
Strings
Graph

Текстовый режим
В текстовом режиме единицей вывода информации служит символ. На экране каждый символ занимает одно знакоместо - прямоугольный участок размером 8х8 пикселей (зерен экрана). Во весь экран помещается 80х25 знакомест.

Процедуры модуля Crt
Активная область ввода / вывода
Очистка
Цвета
Звук
Позиционирование
Ожидание
Пример использования текстовой графики
Решение
Создание дружественного интерфейса

Советы по технологии написания быстро отлаживаемых программ
Вы приступаете к решению какой-либо задачи_ Первым делом вы выбираете алгоритм, а затем - подчас уже в процессе кодирования - детализируете его. Не секрет, что многие шаги алгоритма могут проясниться только тогда, когда большая часть программы уже написана, так что придется вносить в ее текст изменения, уточнения и поправки. В крайнем случае вы будете вынуждены полностью отказаться от исходного алгоритма и перейти к реализации другого, более подходящего.

Имена, имена, имена...
Имена, имена, имена... - 2
Кусочки, куски и кусищи...
Кусочки, куски и кусищи... - 2
Спасение утопающих - дело рук самих утопающих
Отладка и тестирование
Поиск и исправление ошибок
Правила составления тестов
Оптимизация программ
Оптимизация программ - 2

Borland Pascal. Руководство пользователя

Borland Pascal with Objects (Паскаль с объектами фирмы Borland) предназначен для всех тех пользователей, которые хотят разрабатывать прикладные программы для операционной системы DOS или операционной среды Windows. Вы можете создавать прикладные программы, работающие в реальном режиме DOS, Windows или прикладные программы для защищенного режима DOS или Windows. Borland Pascal предлагает богатую среду программирования, которая делает разработку программного обеспечения более производительной и более приятной. Используя структурированный язык высокого уровня Паскаль, вы можете писать программы для приложений любого типа и размера.
Borland Pascal 7.0, оставаясь совместимым с программным кодом, написанным для Turbo Pascal или Turbo Pascal for Windows, предоставляет вам новые возможности. Исследуя эти возможности следует учитывать, что этот компилятор Паскаля является быстрым и эффективным компилятором и принят в качестве общемирового стандарта.

Введение
Borland Pascal поставляется с одиннадцатью руководствами, каждое из которых имеет свое назначение. Если раньше вы никогда не работали с прог- раммным продуктом Turbo Pascal, прочтите руководство пользователя.

Введение
Как использовать руководства по Pascal
Как использовать руководства по Pascal - 2
Как использовать руководства по Pascal - 3

Установка и запуск Borland Pascal
Borland Pascal поставляется с автоматической программой ус- тановки, которая называется INSTALL. Из-за использования методов упаковки файлов вы должны воспользоваться данной программой, а не просто скопировать на свой жесткий диск файлы Borland Pascal. Программа INSTALL автоматически копирует и распаковывает файлы Borland Pascal и Borland Pascal for Windows.

Использование программы Install
Программа Install и Windows
Запуск Borland Pascal
Защищенный режим и память
Защищенный режим и память - 2
Запуск Borland Pascal for Windows
Запуск BP.EXE в расширенном режиме Win 386
Запуск BP.EXE в стандартном режиме Windows
Запуск BP.EXE в окне Windows DOS
Жидкокристаллические и плазменные экраны

Что нового в Borland Pascal
Два средства просмотра объектов ObjectBrowser - одно в IDE для DOS защищенного режима, другое в IDE для Windows. С помощью ObjectBrowser вы можете просматривать в своей программе объекты и модули, проверять свой исходный код, получать полные перекрестные ссылки на каждый используемый в программе идентификатор и видеть свою программу с новой позиции. Об ObjectBrowser для DOS и Windows в данной книге рассказывается ниже.

Новые средства IDE
Новые средства IDE - 2
Компилятор командной строки
Среда разработки программ защищенного режима
Динамически компонуемые библиотеки DOS
Добавления к языку Паскаль
Улучшения в библиотеке исполняющей системы
Новые подпрограммы модуля System
Новые модули
Новые директивы компилятора

Основы интегрированной среды для DOS
Borland Pascal представляет собой не только быстрый компилятор Паскаля. Это эффективный компилятор, интегрированную интерактивную среду которого очень легко изучать и использовать. При работе с Borland Pascal для того, чтобы создавать, отлаживать и запускать программы на Паскале, вам не требуется использовать отдельный редактор, компоновщик, компилятор и отладчик

Запуск IDE
Компоненты интегрированной среды
Компоненты интегрированной среды - 2
Окна IDE
Окна IDE - 2
Окна IDE - 3
Управление окном
Управление окном - 2
Строка состояния
Диалоговые окна

Программирование в интегрированной интерактивной среде для DOS
Если вы укажете параметр /D, IDE сможет одновременно работать с двумя мониторами. IDE проверяет, имеется ли на вашем компьютере соответствующее оборудование, например, монохромная и цветная плата. Если это не так, то IDE игнорирует данный параметр. Режим с двумя мониторами полезно использовать при отладке программы. Один монитор вы можете использовать как экран выводимых программой данных, а другой - для работы с отладчиком.

Запуск IDE и выход из нее
Параметры запуска
Параметры запуска - 2
Параметры запуска - 3
Параметры запуска - 4
Установка параметров запуска в среде
Выход из IDE
Использование справочной системы Help
Перемещение в справочной системе
Запрос помощи

Программирование в интегрированной интерактивной среде для Windows
Командные кнопки в оперативной полосе представляют команды. Это оперативные кнопки для "мыши", аналогично тому, как определенные комбинации клавиш на клавиатуре являются оперативными клавишами. Чтобы выбрать команду, щелкните на соответствующей командной кнопке "мышью". Например, если вы щелкните "мышью" на командной кнопке Open a File (Открыть файл), то реакция IDE будет такой же, как при выборе команды Open меню File

Использование оперативной полосы
Использование оперативной полосы - 2
Настройка конфигурации оперативной полосы
Использование справочной системы Help
Перемещение по справочной системе
Запрос помощи
Запрос помощи - 2
Копирование примеров кода
Выход из справочной системы
Запись и редактирование исходного кода

Отладка в интегрированной среде
Интегрированная интерактивная среда разработки программ Borland Pascal (IDE) включает в себя ряд средств, облегчающих разработку программ: автоматическое управление проектами, средств обеспечения модульной структуры программы, быструю компиляцию и простые в использовании оверлеи. Но несмотря на все это ваша программа все равно может содержать ошибки, что не позволит ей корректно работать.

Что такое отладка?
Какие существуют виды ошибок?
Методы отладки
Методы отладки - 2
Генерация отладочной информации
Управление выполнением
Что такое шаг?
Выполнение программы по шагам
Трассировка программы
Трассировка или выполнение по шагам?

Модули Borland Pascal
Borland Pascal обеспечивает вам доступ к большому числу встроенных констант, типов данных, переменных, процедур и функ- ций. Некоторые из них специфичны для Borland Pascal, другие специфичны для приложений Windows. Их количество велико, однако, в своей программе вы редко используете их все сразу. Поэтому они разделены на связанные группы, называемые модулями.

Структура модуля
Интерфейсная секция
Секция реализации
Секция инициализации
Как используются модули?
Ссылки на описания модуля
Оператор uses секции реализации
Стандартные модули
Создание ваших собственных модулей
Компиляция модуля

Использование указателей
По мере того как программы становятся более сложными, и требуются работа с большим количеством данных, область объемом в 64К, зарезервированная в Borland Pascal для данных, может оказаться недостаточной, чтобы содержать все необходимые программе данные. Указатели позволяют вам обойти эту проблему.

Для чего используются указатели?
Работа с большими объемами данных
Работа с данными неизвестного размера
Работа с временными буферами данных
Работа с несколькими типами данных
Связанные списки
Что такое указатель?
Ссылочный тип
Типизированные указатели
Разыменование указателей

Объектно-ориентированное программирование
Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень.

Объекты
Наследование
Наследование - 2
Объекты: наследующие записи
Объекты: наследующие записи - 2
Экземпляры объектных типов
Поля объектов
Хорошая и плохая техника программирования
Методы
Методы - 2

Взгляд на Windows
В данной главе содержится обзор программирования для Microsoft Windows с использованием Borland Pascal (с акцентом на объектно-ориентированное программирование). В представленном здесь примере используется поставляемая с Borland Pascal библиотека ObjectWindows. Вы узнаете о поведении прикладной программы Windows и о том, как с помощью ObjectWindows автоматизировать од- ни задачи и упростить другие.

Что такое приложение Windows?
Преимущества Windows
Требования
Программные средства
Архитектура с управлением по событиям
Графика, независимая от устройств
Многозадачность
Управление памятью
Ресурсы
Динамическая компоновка

Изучение принципов алгоритмического программирования на Pascal

Процесс развития компьютеров тесно связан с совершенствованием языков программирования. Языки программирования предназначены для формализации описания математических и иных методов, при помощи которых достигается решение вычислительных задач.
Существует несколько подходов к программированию. Наибольшее распространение получило так называемое алгоритмическое программирование, в основе которого подробное описание процесса решения задачи. Алгоритмическое программирование, чаще всего, является первым шагом в освоении компьютера, когда целью человека становится переход из категории простых пользователей в касту активных участников взаимодействия с компьютерами.
Наряду с алгоритмическим программированием используются и другие подходы. В частности, языки декларативного программирования подразумевают описание цели вычислений. Процесс, в данном случае, отходит на второй план и остаётся скрытым не только от пользователя, но и от программиста. Этот подход удобен, однако требует большего опыта и знаний, используемых для описания цели решения.

Идентификаторы
Манипуляции переменными в языке Pascal
Манипуляции переменными в языке Pascal - 2
Манипуляции переменными в языке Pascal - 3
Стандартные типы данных
Стандартные типы данных - 2
Стандартные типы данных - 3
Общая структура программы на языке Pascal
Средства консольного ввода-вывода
Оператор последовательных действий