- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
Выделение и освобождение динамической памяти
Указатели – это лишь адрес ячейки памяти, а о состоянии самой ячейки должен позаботиться программист.
Вся динамическая память может располагаться как сплошной массив, состоящий из байтов и называемый кучей. Куча размещается в памяти компьютера следом за областью памяти, которую занимает тело программы.
Перед помещением данных в кучу программист должен подготовить участок памяти, куда данные собственно будут помещены. После завершения использования данных использованное место необходимо за собой очистить.
Процедура New(P) резервирует в памяти участок для значения того типа, на который ссылается указатель P, и устанавливает в указатель адрес зарезервированного участка.
Пример:
var
P1: ^Integer;
...
New(P1);
P1^:=5;
Процедура Dispose(P) освобождает участок памяти, на которую указывает типизированный указатель P.
Пример:
Dispose(P1);
P1:=nil;
Процедуры New и Dispose применимы только для типизированных указателей. При работе с нетипизированными указателями можно воспользоваться следующими процедурами.
Процедура GetMem(P, Size) выделяет из кучи блок памяти размером Size (максимум 64 Кбайта) и устанавливает в указатель P ссылку на неё.
Процедура FreeMem(P, Size) уничтожает в куче блок памяти размером Size по адресу P.
Вопросы для самопроверки
1. Что такое указатель в языке Паскаль?
2. В чем различие типизированных и нетипизированных указателей?
3. Какие операции над типизированными указателями Вы знаете?
4. В каких случаях при работе с указателями необходимо предварительно выделить память?
5. В каких случаях при обращении к указателю необходимо выполнить операцию разыменования?
Рекомендуемая литература
Фаронов В.В. Турбо Паскаль 7.0. Начальный курс: Учебное пособие. – М.: Нолидж, 1998. – 613 с.
Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. – М.: Нолидж, 1997. – 430 с.
Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учебное пособие для вузов. – М.: Наука, 1989.
Васильев П.П. Турбо Паскаль в примерах и задачах. Освой самостоятельно: Учебное пособие. – М.: Финансы и статистика, 2002. –496 с.
Джонс Ж. Решение задач в системе Турбо Паскаль: Пер.с англ. – М.: Финансы. – 720 с.
Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровня: Учебник для студентов вузов, обучающихся по направлению подготовки дипломированных специалистов «Информатика и вычислительная техника». – М.; СПб.; Нижний Новгород: Питер, 2005. – 544с.
Аляев Ю.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие для курсантов военно-учебных заведений и училищ, студентов технических вузов. – М: Финансы и статистика, 2002. – 320с.
Мизрохи С.В. TURBO PASCAL и объективно-ориентированное программирование. – М.: Финансы и статистика, 1992. – 192 с.
Попов В.Б. Паскаль и Дельфи: Учебный курс. – М.; СПб.; Нижний Новгород: ПИТЕР, 2005. – 576с.
Ахмадулин Руслан Камильевич
Технология программирования
Учебное пособие
Редактор: Г.Б. Мальцева
Подписано к печати Заказ Формат 60 / 90 1 /16 Отпечатано на RISO GR 3750 |
Бум. ГОЗНАК Уч. изд. л. Усл.печ.л. Тираж 100 экз. |
Издательство «Нефтегазовый университет» Государственного образовательного учреждения высшего профессионального образования |
«Тюменский государственный нефтегазовый университет»