- •1.Массивы.
- •2.Строковые массивы.
- •4.Процедура без параметров.
- •5.Процедура с параметрами.
- •6.Использование параметров-значений и параметров-переменных в качестве входных. Параметры константы.
- •7. Ограничения, наложенные на формальные и фактические параметры.
- •8.Аппарат функций.
- •9. Побочный эффект в процедурах и функциях.
- •10)Рекурсия
- •11.Опережающее описание процедур
- •12.Параметры процедурного типа:
- •13.Внешние модули, реализованные на других языках программирования. Структура основной программы, вызывающей процедуру. Присоединение текстового файла.
- •14. Структура tpu- модуля и программы.
- •15.Ссылочные типы данных, работа со связанным списком.
- •16.Ссылочные типы данных, формирование списка студентов из файла.
- •17.Поиск элемента в списке.
- •18.Исключение и добавление
- •19.Включение в список.
- •20.Типизированный файл.
- •21.Текстовые файлы
- •22.Файлы прямого доступа:
- •1.Особенности языка Си. Программа печати текста.
- •2.Программа печати таблицы с циклом «пока».
- •3.Программа печати таблицы с арифметическим циклом.
- •4.Программа печати таблицы с арифметическим циклом при использовании символических констант.
- •5.Ввод, вывод символов. Копирование файла.
- •6.Подсчет числа символов в файле
- •7.Подсчет числа строк в файле.
- •8.Подсчет числа символов, строк и слов в файле.
- •9.Подсчет числа каждой цифры, символов пустых промежутков и всех остальных символов.
- •10.Функции
- •11.Методы передачи параметров в функциях
- •12.Заполнение массива одинаковыми значениями.
11.Опережающее описание процедур
P Q
P Q
W
В цепочку процедуры могут быть связаны сколько угодно подпрограмм. Но суть всегда одна - сначала разворачивается стек, затем сворачивается.
Должен стоять хотя бы один условный оператор.
Не понятно, что идет раньше, а что потом, для этого и используется опережающее описание подпрограмм, которое заключается в описании подпрограммы только полным заголовком.
Пример для двух:
Function p(x:byte):real;
Forward;{Говорит о том что тело будет ниже}
Function Q:real;
Begin{Q}
If …… p(5);
End;{Q}
Function p; {Сокращенный заголовок}
Begin{P}
If …… Q(a);
End;{P}
Пример для трех:
Function P (x:byte):real;
Forward;
Procedure W (a,b:byte; var c:real);
Forward;
Function Q(x:byte):real;
Begin
If ……
L:=P(5);
End;{Q}
Function P;{Сокращенный заголовок }
Begin
If ……then w(a,b,c);
Else…..
End;{P}
Procedure W;
Begin
If….Q(3)
End;{W}
…далее основная программа.
Таким образом, транслятор знает, сколько нужно отвести места.
12.Параметры процедурного типа:
Иногда требуется настроить подпрограмму на выполнение разных процедур. Предположим нам нужно вычислить интеграл приближенным методом, в теле основной программы есть функция integral(fan,a,b)
Fan-вид функции a,b-начальное и конечное значение отрезка на котором рассматривается функция.
(рисунок рисуем отрезок от А до Б и делим его на части, образуя домики, штрихуем 1 домик).
Type T=function (x:real):real;
Var a,b:real;
{$F+}
Function Q(x:real):real;
Begin{Q}
Q:=x+sin(x);
End;{Q}
{$F-}
{$F+}
Function P(x:real):real;
Begin
P:=x-cos(x);
End;{P}
{$F-}
Function integral (a,b:real;fun:T):real;
…тело подпрограммы где сумма площадей …
-Функция процедурного типа всегда транслируется в опциях.
-Функция не может быть объявлена в других процедурах и функциях
-Функция не может быть стандартной, но это можно обойти записав например 0.0+sin(x);
-Внутри процедур и функций нельзя использовать директивы inline, interrupt.
Модуль
– это единица компиляции, содержащая
одну или несколько подпрограмм.
Преимущества использования внешних
модулей:
·Ускорение
отладки
·Использование
общей библиотеки
·Позволяет
работать с программами, превышающими
ресурсы памяти. Присоединяемые
модуле могут быть написаны как на
Паскале и иметь расширения *.pas и *.tpu
(turbo pascal unit), так и на других языках
программирования. Подсоединение
модулей на других языках программирования Структура
основной программы с внешним модулем Program
OSN; поля
описаний
Procedure
LIN_UR (список параметров);
EXTERNAL;
{внешний}
Begin
{основная программа}
…
LIN_UR;
…
End.
{основная программа}
Как
правило, используются внешний модули,
написанные на Фортране или Ассемблере.
Подсоединение идет на этапе компоновки
(линковки). При
подсоединении возникают следующие
сложности: ·Программа
транслируется с Паскаля, а подпрограмма
уже была транслирована с другого языка,
поэтому за согласование формальных и
фактических параметров отвечает
разработчик Подсоединение
подпрограмм, написанных на других
языках программирования, дает возможность
программисту пользоваться большой
библиотекой и делать программы
значительно более эффективные по
времени (например, программы на Фортране
в 5 раз более эффективны по времени, чем
на Паскале, а программы в машинных кодах
в 8 раз) Подсоединяя
модули, написанные на Фортране, следует
помнить: ·Двумерные
массивы в
Паскале
хранятся по строкам, а в Фортране
по столбцам. Соответственно для массива
с М строками и N столбцами на Паскале
j+N*(i-1), а на Фортране i+M*(j-1). В
Фортране следует поменять типы индексов
при описании массива (строки на столбцы
и наоборот). Если же массив трехмерный,
то заменить следует строки и плоскости. ·В
модулях на Фортране должна быть исключена
печать элементов, поскольку там вывод
состоит из двух операторов: исполняемого
и неисполняемого, но Паскаль не понимает
указаний к исполнительной системе
Фортрана. Включение
тестового файла (*.pas) в текст программы. В
Turbo Pascal используется опция {$I имя файла}
(имя файла без апострофов, I сокращенно
от include). Эта опция позволяет подсоединить
файл с расширением pas в то место программы,
где находится эта опция. Чаще всего
используются для подсоединения процедур
и функций. Глубина вложения include не
более 7!13.Внешние модули, реализованные на других языках программирования. Структура основной программы, вызывающей процедуру. Присоединение текстового файла.