- •1. Ссылочные типы данных.
- •2. Оператор new.
- •3. Сортировка данных в динамической памяти.
- •4. Файлы с прямым доступом.
- •5. Нетипизированные файлы.
- •6. Особенности работы с типами в tp. Явные преобразования типов.
- •12. Объектовый тип. Основные понятия.
- •13. Наследование и переопределение в объектовых типах.
- •14. Виртуальные методы в объектах.
- •15. Конструкторы и деструкторы.
- •16. Скрытые поля и методы.
- •17. Раздел files основного меню turbo-Паскаль 7.0.
- •19. Библиотека crt turbo-Паскаля.
- •20. Библиотека dos turbo-Паскаля.
- •21. Библиотека system turbo-Паскаля.
- •22. Раздел edit основного меню turbo-Паскаль 7.0.
- •23. Раздел run основного меню turbo-Паскаль 7.0.
- •24. Классификация типов данных.
- •25. Перечислимые типы данных. (На самостоят. Рассмотрение)
- •26. Ограниченые типы данных. (На самостоят. Рассмотрение)
- •27. Регулярные типы данных.
- •28. Многомерные массивы.
- •29. Комбинированные типы данных.
- •30. Оператор with.
- •31. Записи с вариантами.
- •32. Множественные типы данных.
- •33. Операции над данными множесвенного типа.
- •34. Файловые типы данных.
- •35. Текстовые файлы.
- •36. Процедуры.
- •37. Функции.
- •38. Параметры процедур и функций.
- •39. Локальные и глобальные объекты в процедуах и функциях.
- •46. Внутреннее представление чисел с плавающей точкой.
- •47. Реализация алгоритма сортировки с применением метода "часового".
- •48. Сортировка методом "пузырька".
- •49. Алфавит языка, имена, числа, строки.
- •50. Структура программы.
- •51. Тип Integer.
- •52. Тип Real.
- •53. Тип Boolean.
- •54. Char.
- •55. Описательная часть программного блока.
- •56. Процедуры ввода-вывода.
- •57. Оператор присваивания.
- •58. Условный оператор.
- •59. Оператор варианта.
- •60. Оператор цикла с перечислением.
- •61. Оператор цикла с предусловием.
- •62. Оператор цикла с постусловием.
1. Ссылочные типы данных.
Ссылка в статической памяти, данные в динамической.
-Раздел кода
-Статическая секция
Свободная память – динамическая память.
Память выделяет диспетчер памяти.
переменная ссылочного типа занимает 4 байта – это под адрес в оперативной памяти.
За каждой переменной закреплён базовый тип. Там может быть скалярный или любой другой тип за исключением файлового.
Ссылочный тип ->
type C=^integer;
var A:C;
A – ссылка или указатель. она будет иметь значение, где будет иметь значение адреса памяти, где будет объект целого типа.
2. Оператор new.
new(A); {A – переменная ссылочного типа. }
При выполнении процедуры new подаётся запрос диспетчеру памяти. После адрес свободной памяти присваивается переменной.
A – адрес
A^:= 5; A – 4 байта статической памяти и 2 байта динамической.
A1: integer;
A1:=7; A1 – 2 байта статической.
Пример:
type
D = record
fio:string[45]; \ - 107 байт (105 байт символы + 2 модификатора)
adr:string[60]; /
end;
C1=^D;
var
A2:C1;
begin
new(A2);
dispose(A); - освобождение памяти.
Для случая, когда базовый тип – запись с вариантами, процедуры new и dispose выглядят так:
new(A, M1, M2, M3, ... ,MN);
dispose(A, M1, M2, M3, ... ,MN);
Где A – это указатель на запись с вариантами, а M1, M2, M3, ... ,MN – перечисление всех полей записи.
В данн ом случае выделяется маскимально возможное количество байт, которые может занять запись с учётом всех вариантов, а не память под все поля.
При записи:
new(A);
A^:=5;
new(A);
A^:=6;
В памяти будут храниться оба числа, но адрес, где хранится число 5 будет потерян и очищение этой памяти будет только после завершения работы программы.
3. Сортировка данных в динамической памяти.
При сортировке данных в динамической памяти, меняются только значения указателей на следующие/предыдущие поля. Т.е. если цепочка 1—3 — 2, то указатель у 1.след меняется на 2, указатель у 2.след меняется на 3, а указатель 3.след обнуляется.
4. Файлы с прямым доступом.
Массив данных – в памяти.
Набор данных – на диске.
Файл – понятие логическое, которое используется для представления набора данных в программе.
var F:File of real;
read(F,A); - прочитать компонент из файла и записать в переменную. Тип одинаковый!
assign(ифп, спец); - привязать имя файла к файловой переменной.
ифп – переменная
спец – путь к файлу C:\A\B\...\a.txt
reset(F); - открыть файл для чтения и добавления компонентов в конец файла. ????
rewrite(F); - открыть файл для перезаписи (содержимое удаляется).
seek(ифп, №); - переходит к определённомукомпоненту в файле.
№ - номер блока, начинается с нуля. Т.е. seek(F,3) – Переход к 4 компоненту.
truncate(ифп); - для отсечения хвостовой части файла начиная от текущего положение указателя включая текущий компонент.
filesize(ифп); - количество компонентов.
filepos(ифп); - текущее значение указателя.
Первое поле в компоненте – ноль.
1) отсортировано
2) без пропусков номера (ключевое поле без пропусков).
Способы формирования:
1) Добавлять попорядку
2) Добавить все компоненты пустыми и обрабатывать.