- •Структура программы на Паскале.
 - •Стандартные типы Паскаля.
 - •Операторы в Паскале.
 - •Цикл с параметром.
 - •Типовые задачи на операторов цикла.
 - •Операторы целочисленного деления.
 - •Вложенные циклы.
 - •Структурированные типы данных.
 - •Массивы.
 - •Многомерные массивы.
 - •Строки.
 - •Множества.
 - •Записи.
 - •Работа с текстовыми файлами.
 - •Особенности работы с текстовым файлом:
 - •Типизированные файлы.
 - •Особенности работа с типизированными файлами.
 - •Подпрограммы.
 - •Структура подпрограмм.
 - •1. Заголовок
 - •2. Описательная часть
 - •3. Тело подпрограммы
 - •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
 - •Особенности передачи структурированных данных подпрограммы.
 - •Опережающие описания.
 - •Функциональный тип. Процедурный тип.
 - •Сортировки.
 - •Сортировка бинарными включениями.
 - •Сортировка простых выборов.
 - •Сортировки простым обменом.
 - •Шейкер-сортировка.
 - •Сортировка Шелла.
 - •Модули.
 - •Структура модуля.
 - •Особенности компиляции программ с подключаемыми модулями.
 - •Циклические ссылки модулей друг на друга.
 - •Стандартные модули в Паскале.
 - •Динамические переменные.
 - •Динамические структуры.
 - •Однонаправленные списки.
 - •Формирование списков. Формирование очереди.
 - •Формирование стека.
 - •Классическое формирование очереди (по Вирту).
 - •Работа со списками.
 - •1) Проход по списку;
 - •2) Добавление элемента в список;
 - •Удаление элемента из списка.
 - •«Древовидные структуры»
 - •Удаление элемента из дерева
 - •Самоупорядочивающийся список
 - •Частотный словарь
 - •Нерекурсивное формирование дерева
 
Записи.
Запись – упорядоченное ограниченное количество элементов разного типа.
Упорядоченность структуры «запись» позволяет обращаться к каждому элементу записи – ее полю. При описании записи каждое поле имеет свой идентификатор.
VAR <имя записи>:RECORD
<имя поля записи 1>:тип поля 1;
<имя поля записи 2>:тип поля 2;
<имя поля записи n>:тип записи n;
end;
Перечисление полей записи определяет ее структуру. При вводе записи данную структуру сохраняют, т.е. вводят поля в той последовательности, в которой они описаны. Рекомендуется имена однотипных полей перечислять через запятую и указывать единый тип только в том случае, если они идут вподряд по структуре. В программе для обращения к конкретному полю записи использовать расширенное поле (<имя записи>.<имя поля>).
Над полями записи возможны любые операции, которые позволяет осуществлять тип данного поля. Для сокращения кода программы и упрощения доступа к полям используется только для записей оператор присоединения.
WITH <имя записи> DO
<имя поля>;
оператор;
Работа оператора заключается в том, что если встречается имя поля, вложенного в оператор присоединения, то данное поле присоединяется к имени записи, которое указывается после слова WITH.
Пример. Задана ведомость, в которой 15 студентов. В ней отображены результаты сессии по трем предметам. Определить средний балл группы.
type st=record
fio:string;
o1,o2,o3:2..5;
end;
var ved: array[1..15] of st;
p:integer;
sr:real
begin writeln(‘Введите ведомость’);
for p:=1 to 15 do
readln(ved[p].fio);
readln ved[p].o1, ved[p].o2, ved[p].o3;
end;
sr:=0;
for p:=1 to 15 do
sr:=sr+ved[p].o1+ved[p].o2+ved[p].o3;
sr:=sr/45;
writeln(sr:0:1);
end.
Второй вариант с присоединением:
type st=record
fio:string;
o1,o2,o3:2..5;
end;
var ved: array[1..15] of st;
p:integer;
sr:real
begin writeln(‘Введите ведомость’);
for p:=1 to 15 do
with ved[p] do
begin
readln(fio);
readln (o1,o2,o3);
end;
sr:=0;
for p:=1 to 15 do
sr:=sr+o1+o2+o3;
sr:=sr/45;
writeln(sr:0:1);
end.
Примечание.
Оператор присоединения необходимо использовать (и не использовать) в тех ситуациях, когда во вложенном операторе по алгоритму необходимо использовать одноименные поля разных записей.
Пример. Задана ведомость на 15 студентов. Упорядочить содержимое этой ведомости по алфавиту фамилий.
type st=record
fio:string;
o1,o2,o3:2..5;
end;
var ved:array[1..15] of st;
c,p:integer;
v:st;
begin writeln(‘’);
for p:=1 to 15 do
with ved[p] do
begin readln(fio);
readln(o1,o2,o3);
end;
repeat c:=0;
for p:=1 to 14 do
if ved[p].fio>ved[p+1].fio then begin
v:=ved[p];
ved[p]:=ved[p+1];
ved[p+1]:=v;
c:=c+1;
end;
until c=0;
for p:=1 to 15 do
with ved[p] do begin
writeln(fio,’ ‘,o1,’ ‘,o2,’ ‘,o3);
end.
Файлы
В Паскале реализована работа со всеми видами файлов, а именно:
1) прямого доступа (типизированные);
2) последовательного доступа (текстовые);
3) нетипизированные (побитовая информация).
Алгоритм переназначения информационных потоков ввода-вывода с экранного представления в файловое.
- 
В описательной части программы определяем специализированную файловую переменную, тип которой определяет тип файла, с которым в дальнейшем будет работать программа.
 
VAR
<имя файловой переменной 1>: TEXT;
<имя файловой переменной 2>:FILE OF тип элемента файла;
<имя файловой переменной 3>:FILE.
Кроме того, данная файловая переменная в тексте программы играет огромную роль: по ее средствам осуществляется связь программы с конкретными физическим файлом на диске, определяется направление потока информации и сам поток.
- 
В тексте программы для связывания файловой переменной с физическим файлом используется ASSIGN
 
ASSIGN (<имя файловой переменной>,<имя файла>);
Имя файла – строковая const или строковая переменная. Если имя файла не содержит путь к нему, то в этом случае компилятор будет искать файл в текущей активной аудитории. Assign не контролирует наличие файла на диске. Для работы с файлом необходимо определить направление информационного потока: чтение или запись.
3)
а) REWRITE(<имя файловой переменной>); - открывает путь для файла.
Данная процедура осуществляет следующее действие: если файла на диске нет, то все необходимые манипуляции для его регистрации в операционной системе осуществляются процедурой «rewrite». Файл открывается для записи, маркер файла устанавливается в первую позицию файла.
Если файл есть, то программист, используя rewrite, учитывает, что при его использовании маркер файла устанавливается в первую позицию, а информация, расположенная в этом файле, уничтожается. Rewrite не контролирует наличие файла на диске.
б) для организации чтения информации файл должен быть открыт для чтения. RESET(<имя файловой переменной>) – контролирует наличие файла на диске. Если файл есть, то он открывается для чтения, маркер устанавливается на первый элемент. Если файла нет, то возникает ошибка, программа завершает работу.
4) в соответствии с предыдущим пунктом чтение или запись информации осуществляется процедурами «read/write», но в списке чтения или записи в первой позиции указывается имя файловой переменной, посредством которой осуществляется перенаправление информационного потока. Переменные, в которые осуществляется чтение или запись, носят позиционный характер, т.е. их перечисление определяет запись или чтение.
Примечание.
Программист помнит, что при каждом обращении к файлу маркер файла автоматически смещается в следующую позицию, т.е. если из файла считывается первый элемент, то при следующем обращении «read/write» будет считываться или записываться (n+1) позиция.
5) Если файла формируется, при окончании его формирования указывается маркер конца файла, используется CLOSE <имя файловой переменной>. Если файл считается, то его тоже следует закрывать. Если close не используется, то после завершения работы программы файл автоматически закрывается. В случае записи маркер конца файла не записывается.
6) Установка маркера конца файла позволяет организовывать циклическую обработку файлов до конца файла, т.к. логическая функция EOF становится истинной при чтении этого маркера.
