
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Вложенные подпрограммы
Число уравнений вложенности может быть добавлено большим , но на практике не превышает уравнений вложенности подпрограммы относится и охватывающий её подпрограммы точно так же , как охватывает подпрограмму относящийся к основной программе . Вложенная подпрограмма могут вызываться только внутри охватывающий . Для вложенной подпрограммы глобальные переменные считается переменной охватывающую подпрограмму все глобальный переменные основной программы .
Особенности :
Переменные – индексы For-циклов должны быть описаны во вложенной подпрограмме , даже если одноименные переменные описаны в охватывающей подпрограмме . Область меток является локальной , то есть нельзя планировать переходы с помощью оператора Go to из вложенной процедуры в охватывающей , а так же в основном блоке программы , или из основного блока процедуры .
Структура вложенности
Var
«глобальные переменные »
Procedure P1 ( );
«локальные переменные Р1 »;
……….
Procedure P2 ( );
«локальные переменные Р2 »;
……….
Begin
«тело Р2»;
…….
End;
Begin
«тело Р2»;
…….
«вызов Р2»;
End;
Begin
……….
«вызов Р1»;
…….
End.
Пример
Type
Massiv_1 =Array [1..5] of word ;
Cost
A: Massiv_1= (1,2,3,4,5);
B: Massiv_1=(5,6,7,8,9);
Procedure Def_ Massiv _1(Var p,p1: Massiv_1;n:byte);
Var
I:byte;
K:string;
Procedure Out (p: Massiv_1);
Var
I:byte ;
Begin
Write(k,’ ’);
For i:= 1 to 5 do
Write (p[i]:4);
Writeln;
End;
Begin
K:=’массив ’;
For i:=1 to 5 do
Begin
P[i]:=p[i]+n;
P1[i]:=p1[i]+n;
End;
Out (a );
Out (b);
End;
Begin
Def _ Massiv_1(a,b,1);
Out (a);
Readln ;
End.
Подпрограмма Функции без побочного эффекта .
Определяет и выводит гласные буквы латинского алфавита
Содержащиеся в введенных строках.
Uses crt ;
Type
Tstring=string[100];
Const
Mn_glas : set of char = [‘a’,’e’,’u’,’o’,’i’];
Function glass_str (str_x:tstring):Boolean;
Var
I:byte ;
Begin
Glas_str :=false ;
For i:=to length (str_x) do
If str _x[i] in mn_glas then
Begin
Glas_str:=true ;
Break;
End;
End;
Var
Str_1,str_2:tstring;
Begin
Clrscr;
Write(‘Строка 1 : ’);
Readln(str_1);
Write(‘Строка 2 : ’);
Readln(str_2);
Writeln(‘ Гласные в строке 1 ’, glass_str(str_1));
Writeln(‘ Гласные в строке 2 ’, glass_str(str_2));
Readkey;
End.
Лекция №5
Подпрограммы. Дальний и ближний вызов подпрограмм. Опережающее описание подпрограмм. Рекурсивные подпрограммы.
Дальний и ближний вызов подпрограмм . Дальний вызов
В этом случае всегда за заголовком подпрограммы следует директива far.синтаксис записи
Procedure p (k:char );far;
Begin
…….
End;
При таком определении компилятор создает код подпрограммы , который рассчитан на дальнюю модель вызова , что предполагает вызов подпрограммы , из любого сегмента кода . Поэтому в этом случае с подпрограммами связанный полный адрес , состоящий из адреса сегмента и адреса смещения . Дальний вызов в основном используется при передачи функциональных или процедурных параметров при создании оверлейных структур , при замещении системных подпрограмм своими подпрограмма , при написании своих прерываний и т.д. Эквивалент директива Far используются директивы :
1. {$F+} – устанавливается дальняя модель вызова .
2.{$F-} – отключает дальнюю модель вызова .
По умолчанию устанавливается {$F-} . Директиву {$F-} принято устанавливать если перед этим была установлено {$F+}