Программирование на языке 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


Компьютерные игры. Как это делается.
Игры для взрослых вечеринок
Секреты программирования игр
Введение в программирование трехмерных игр с DX9
Ганичев Валерий - Росс Непобедимый
Тестирование софта - статьи
Гарднер Лиза - Куинси И Рейни
Гаррет Рэндал - Ипсвичский Фиал
Гарфилд Брайан - Жажда Смерти
Герман Юрий - Один Год
Гершкович Това - Новый Дом
Гидравлика. Конспект лекций
Самоучитель по Photoshop 7
Мир Internet - журнал для пользователей Сети
Говард Роберт & Де Камп Спрэг & Картер Лин - Дьявол Из Железа
Головачев Василий - Излом Зла
Горбачева Наталья - Лобовы
Горяинов Евгений - О Боге. Непротиворечивая Теория Бога
Межсетевое экранирование
Продвинутая 3D графика в пакете Maya