
- •1.Язык Object Pascal. Алфавит языка. Операторы. Выражения. Структура программы.
- •2. Простые типы данных. Преобразование типов. Приведение типов. Составной оператор.
- •3. Управляющие конструкции языка.
- •3.1 Безусловные конструкции
- •3.2 Условные конструкции.
- •3.3 Циклические конструкции.
- •4. Комментарии в крограммах. Директивы.
- •5. Структурные типы данных.
- •5.3 Записи.
- •6. Подрограммы.
- •6.1 Процедуры и функции. Состав. Синтаксис.
- •6.2 Список формальных параметров.
- •6.3 Параметры-значения. Параметры-переменные. Параметры-константы. Нетипизированные параметры.
- •6.4 Передача массивов в подпрограммы. Параметры типа открытый массив.
- •6.5 Локальные переменные. Область видимости. Время жизни.
- •6.6 Рекурсия. Виды рекурсии. Опережающее описание подпрограмм.
- •6.7 Процедурные типы
- •7. Модули
- •7.1 Назначение. Синтаксис.
- •8. Файлы
- •8.1 Общий алгоритм работы с файлом.
- •8.2 Подпрограммы для открытия файла.
- •8.3 Типизированные файлы. Режимы доступа к файлу. Переменная Filemode.
- •8.4 Обработка ошибок ввода-вывода.
- •8.5 Нетипизированные файлы.
- •8.6 Текстовые файлы
- •9. Динамическая память и указатели.
- •9.1 Указатель. Синтаксис. Допустимые операции.
- •9.2 Типизированные и нетипизированные указатели.
- •9.3 Операция резадресации (разыменования) указателя. Операции взятия адреса. Пустой указатель.
- •10. Типы с управляемым временем жизни.
- •10.1 Длинные строки. Механизм подсчета ссылок.
- •12.2 Динамические массивы.
- •11. Динамические структуры данных. Связные списки. Вставка и удаление узлов.
- •11.1 Односвязные списки. Структура. Особенности обработки.
- •11.2 Двусвязные списки
- •11.3 Кольцевые списки.
- •12. Отладка программ.
- •12.1 Виды программных ошибок.
- •12.2 Отладка программ.
- •12.3 Принципы контрактного программирования.
- •12.4 Принципы модульного тестирования.
- •12.5 Трассировка. Точки контрольного останова
- •12.6 Ведение протокола программы.
- •12.8 Основные принципы оформления исходного кода программы.
- •13. Алгоритмы
- •13.1 Алгоритм последовательного поиска.
- •13.2 Алгоритм бинарного поиска.
- •13.3 Алгоритм интерполирующего поиска.
- •13.4 Алгоритм вставки элемента в отсортированный массив.
- •13.5 Алгоритм поиска минимального (максимального) элемента массива.
- •13.6 Алгоритм пузырьковой сортировки.
- •13.7 Алгоритм сортировки перемешиванием.
- •13.8 Алгоритм сортировки прочесыванием.
- •13.9 Алгоритм сортировки методом выбора.
- •13.10 Алгоритм сортировки методом вставок.
- •13.11 Алгоритм сортировки методом Шелла.
- •13.12 Алгоритм сортировки слиянием.
- •13.13 Алгорим быстрой сортировки (сортировка Хоара).
5.3 Записи.
Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от других структурных типов, тип запись может содержать в себе данные различных типов. Синтаксис типа запись имеет следующий вид
<идентификатор типа>=record
<имя поля>:<тип поля>;
<имя поля>:<тип поля>;
...
[<вариантная часть>]
end;
где <идентификатор типа> – правильный идентификатор;
record – зарезервированное слово;
<имя поля> – правильный идентификатор, уникальный в пределах объявления типа запись;
<тип поля> – любой тип Object Pascal, в том числе и структурный.
<вариантная часть> – необязательная часть записи
Для того чтобы получить доступ к каждому из компонентов записи необходимо использовать составное имя. Для этого после имени переменной необходимо поставить точку и имя поля.
var a, b:TPerson;
begin
...
a.name:=’Иван’;
a.familia:=’Иванов’;
a.age:=18;
...
end.
Для упрощения доступа к полям записи можно использовать следующий оператор with <переменная> do <оператор>;
где with, do – зарезервированные слова;<переменная> – переменная типа запись, за которой, возможно следует список вложенных полей;
<оператор> – любой оператор Object Pascal.
var Person:TPerson;
begin
...
with Person do begin
name:=’Иван’;
familia:=’Иванов’;
BirthDay.Day:=1;
BirthDay.Month:=1;
BirthDay.Year:=2000;
end;
...
end.
program InOutRec; - ввод/вывод переменных типа запись на экран
{$APPTYPE CONSOLE}
typeTStudent=record
name :string[12]; //имя
familia:string[16]; //фамилия
gruppa :string[4]; //группа
end;
var Student:TStudent;
begin
writeln('Vvedite dannie');
//ввод записи
with Student do begin
write('name '); readln(name);
write('familia '); readln(familia);
write('gruppa '); readln(gruppa);
end;
//вывод записи
with Student do begin
writeln(name);
writeln(familia);
writeln(gruppa);
end;
readln;
end.
6. Подрограммы.
6.1 Процедуры и функции. Состав. Синтаксис.
Процедуры и функции представляют собой относительно самостоятельные фрагменты программы, именованные и оформленные специальным образом. Отличие процедур от функций заключается в том, что результатом выполнения функции всегда является некоторое значение, поэтому функции можно использовать в выражениях наряду с переменными и константами.
Подпрограммы описываются перед телом программы основной программы, обычно после блоков const, var, …
var a, b:integer;
<описание подпрограмм>
begin
<тело основной программы>
end.
Описание любой подпрограммы состоит из следующих частей:
•заголовок подпрограммы;
•локальные объявления подпрограммы;
•тело подпрограммы.
Обязательными для описания являются первая и последняя часть подпрограммы, а именно: заголовок и тело подпрограммы. Для вызова подпрограммы необходимо указать ее идентификатор (имя), а затем, если необходимо, в круглых скобках список фактических параметров.
var c:real;
Заголовки процедуры и функции описываются следующим образом.
Заголовок процедуры имеет вид:
procedure <имя>[(<сп. ф.п.>)];
Здесь <имя> – имя подпрограммы;
<сп.ф.п.> – список формальных параметров.
Заголовок функции в общем аналогичен заголовку процедуры и имеет вид
function <имя>[(<сп. ф.п.>)]:<тип>;
Здесь <тип> – тип возвращаемого результата