
- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •1. Заголовок
- •2. Описательная часть
- •3. Тело подпрограммы
- •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
- •Особенности передачи структурированных данных подпрограммы.
- •Опережающие описания.
- •Функциональный тип. Процедурный тип.
- •Сортировки.
- •Сортировка бинарными включениями.
- •Сортировка простых выборов.
- •Сортировки простым обменом.
- •Шейкер-сортировка.
- •Сортировка Шелла.
- •Модули.
- •Структура модуля.
- •Особенности компиляции программ с подключаемыми модулями.
- •Циклические ссылки модулей друг на друга.
- •Стандартные модули в Паскале.
- •Динамические переменные.
- •Динамические структуры.
- •Однонаправленные списки.
- •Формирование списков. Формирование очереди.
- •Формирование стека.
- •Классическое формирование очереди (по Вирту).
- •Работа со списками.
- •1) Проход по списку;
- •2) Добавление элемента в список;
- •Удаление элемента из списка.
- •«Древовидные структуры»
- •Удаление элемента из дерева
- •Самоупорядочивающийся список
- •Частотный словарь
- •Нерекурсивное формирование дерева
Циклические ссылки модулей друг на друга.
Теоретически, если модули ссылаются друг на друга, то должна возникать ошибка, т.к. будет нарушено основное правило Паскаля: до использования все должно быть описано. Используя особенность компилятора Паскаля, данную ситуацию можно обойти. Особенность компилятора: он считает, что модуль есть и оформлен, если существует файл, в котором оформлена интерфейсная часть модуля, следовательно, циклические ссылки модулей друг на друга можно оформить, если циклически ссылающиеся модули подключены в разделе реализации.
Пример. Вычислить y=n! + x^n; для решения задачи создать модуль, в который разместить функцию вычисления факториала и положительной степени.
В отдельном файле создаем модуль (отдельное окно интегрированной среды).
unit mymod;
interface
var x:real;
n:integer;
function fact (n:integer):integer;
function step (x:real;n:integer):
implementation real;
function fact (n:integer):integer;
begin
if n=0 then fact:=1
else fact:=n*fact(n-1);end;
function step (x:real;n:integer):real;
begin
if n=0 then step:=1
else step:=x*step(x,n-1);
end;end;
В отдельном файле формируем программу:
uses mymod;
var y:real;
begin writeln(‘Введите x и n’);
read(x,n);
y:=fact(n)+step(x,n);
writeln(y:0:2);
end.
Примечание. В модулях использовать опережающие описания нельзя. Алгоритм, где необходимо использовать опережающие описания, реализуются циклическими ссылками модулей друг на друга.
Стандартные модули в Паскале.
Когда создаются стандартные модули, то соблюдаются следующие правила: подпрограммы, входящие в модули, группируются по функциональному признаку, но вместе с тем модули не должны быть слишком большими. В интегрированных и визуальных средах программированные модули объединяются в библиотеки. В интегрированной среде Паскаль библиотека располагается в файле turbo. Единственный модуль, не входящий в библиотеку – GRAPH.TPU. Модули в библиотеке: system. Он подключается автоматически. Подпрограммы, собранные в нем, определяют в целом работу программы. Он включает операторы ввода-вывода в текстовом режиме. Crt: объединяет подпрограммы, которые отвечают за работу программы с экраном в текстовом режиме и управляет зуммером. В текстовом режиме единицей подпрограммной сетки является символ (8*8 pxl), следовательно, левая верхняя координата – (1*1). В текстовом режиме – 80 символов в 25 строках.
Основные подпрограммы модуля crt:
-
очистка экрана CLRSCR;
-
GOTOXY(x,y);
-
READKEY (чтение информации без отображения на экране);
-
KEYPRESSED (логическая функция, становится истиной, если нажата любая клавиша).
Функции управления зуммером:
-
sound(f) (f – целое число типа word.nosound);
-
delay(t) (t в мс);
Существует несколько специализаций модулей: windos, mouse.
PRINT содержит подпрограмму обеспечения перенаправления информации на принтер. Он замечателен тем, что он единственный из стандартных модулей содержит раздел инициализации. В данном разделе файловая переменная связана с текстовым файлом LST. Данная переменная связывается со специальным текстовым файлом опережающей системы, чтобы через него программа могла связаться с принтером.
GRAPH определяет необходимый набор const и переменных, а также подпрограмм, обеспечивающих работу программы в графическом режиме. Для работы программы в графическом режиме его необходимо инициализировать. Используется процедура INITGRAPH (d,m,st). d – значение, которое определяет вид драйвера. Данный параметр должен быть определен до вызова программы. m – режим работы. st – путь к драйверу.