- •Указания по выполнения практических и лабораторных работ
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Процедуры ввода-вывода
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Оператор выбора case
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Пример программы с использованием оператора повтора while
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Пример программы с использованием функции, определенной пользователем
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Реализация алгоритмов обменных сортировок при написании программы на Паскале
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Естественное слияние
- •Многопутевое слияние
- •Пример разработки собственного модуля
- •Скалярные процедуры и функции
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями Порядок выполнения работы
- •Примеры программ работы со строковыми переменными
- •Пример программы работы с записями
- •Пример программы работы с записями
- •Операции над множествами
- •Объединение Пересечение Разность
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Пример программы создания и использования связанного списка
- •Параметр процедурного типа
Пример программы с использованием динамической памяти
{Программа указателя на массив, доступа к элементам массива}
Program Point1;
Uses Crt;
Type
massiv=array[1..10] of integer; {описание типа массива из 10 целых чисел}
Var
i:integer;
a:massiv; {массив из 10 целых чисел}
PtrMas:^massiv;{указатель на массив}
Begin
{ввод элементов массива}
Writeln('Введите элементы массива : ');
for i:=1 to 10 do
begin
Writeln(i,'-й элемент массива ');
Readln(a[i]);
end;
ClrScr;
Writeln('Введенный массив: ');
{вывод элементов введенного массива }
for i:=1 to 10 do
Write(' ',a[i]);
Writeln;
{Присвоить указателю PtrMas адрес начала размещения массива в памяти}
PtrMas:=@a;
Writeln('Значение первого элемента массива, на который указывает PtrMas: ');
{Напечатать значение первого элемента массива, на который указывает указатель PtrMas}
Writeln(PtrMas^[1]);
{Присвоить указателю PtrMas адрес начала размещения второго элемента массива}
PtrMas:=@a[2];
Writeln(' Значение второго элемента массива, на который указывает указатель PtrMas: ');
{Напечатать значение первого элемента массива, на который указывает указатель PtrMas}
Writeln(PtrMas^[1]);
Writeln(' Значение 4-того элемента массива, на который указывает указатель PtrMas: ');
{Присвоить указателю PtrMas адрес 4-того элемента массива}
PtrMas:=Ptr(Seg(a[3]),Ofs(a[3])+SizeOf(integer));
{Ptr- преобразует базовый адрес сегмента и смещения в значение типа указатель}
{Напечатать значение 1 элемента массива, на который указывает указатель PtrMas}
Writeln(PtrMas^[1]);
Readkey;
end.
Порядок выполнения работы
Изучить теоретические сведения по теме ” Разработка программы использования динамической памяти”.
Получить у преподавателя индивидуальное задание и разработать программу для работы с динамической памятью и динамическими переменными согласно заданному варианту.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Статические и динамические переменные.
Указатели: типизированные, нетипизированные, Nil. Доступ к переменной по указателю.
Процедуры и функции управления динамической памятью
Лабораторная работа № 33
Разработка программы создания связанного списка
Цель работы: формирование знаний и умений по работе с динамической памятью. Приобретение навыков работы с динамическими структурами данных.
Краткие теоретические сведения
Использование указателей для организации связанных списков
Ч аще всего указатели используются для ссылки на записи, тем самым достигается значительная экономия памяти. Если же сама запись содержит в себе поле-указатель, указывающий на следующую за ней запись, то это позволяет образовать связанные списки - структуру, в которой отдельные записи последовательно связаны друг с другом. В приведенном ниже примере используются записи, в которых наряду с данными об автомобиле имеется указатель на следующую запись, благодаря чему получается связанный список.
Одно из полей каждого объекта связанного списка имеет тип указатель и указывает на очередной объект в списке. Указатель на первый объект содержится в переменной First, а последний объект имеет указатель на Nil.