- •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.Заполнение массива одинаковыми значениями.
6.Использование параметров-значений и параметров-переменных в качестве входных. Параметры константы.
Использование ПП в качестве входных
Преимущества и недостатки, которые имеют ПП как входные.
1. Экономия времени, при передачи параметра (+).
2. Экономия памяти, при передачи параметра (+).
3. Работа с косвенной адресацией внутри подпрограммы (-).
4. Влияние подпрограммы на входной параметр – побочные эффект (-).
ПЗ предается копированием
1) Защищен от воздействия программы (все изменения погибают после п/п)
2)Прямая адресация (экономия времени)
3)Затрата памяти на копирование (зависит от объема)
4)Затрата времени на копирование.
Входной ПП не защищен, но программист может просмотреть процедуру и исключить внутри процедуры оператор присваивания, содержащий параметр в левой части.
Параметры константы-это входные параметры сложных типов кроме строковых и ссылочных ,имеет перед собой слово const, не может быть изменен в ходе выполнения подпрограммы. .
Параметр-константа указывается в заголовке подпрограммы аналогично параметру-значению, но перед именем параметра записывается зарезервированное слово const. Действие слова const распространяется до ближайшей точки с запятой, т. е. в пределах одной группы.
Пример.
function NewString(const S: string): string;
Тип параметра-значения может быть любым за исключением файлового.
При вызове подпрограммы на месте параметра-переменной в качестве фактического параметра можно использовать любое выражение совместимого для присваивания типа (см. п. 9.3), не содержащего файловую компоненту.
Параметр-константу нельзя передавать в другую подпрограмму в качестве фактического параметра.
Пример. Функция вычисления максимального элемента в массиве. В примере п. 10.3.1 используем в качестве первого параметра параметр-константу:
function Max(const Mas: tArr; N: Byte): Integer; var Ma: Integer; i: Byte; begin Ma := Mas[l]; for i := 2 to N do if Ma < Mas[i] then Ma := Mas [ i ] ; Max := Ma end;
7. Ограничения, наложенные на формальные и фактические параметры.
Ограничения наложенные на ПЗ и ПП формальные и фактические:
ПЗ: формальные: всегда переменная, любого типа кроме file.
фактические: переменная, константа, выражение.
ПП: формальные: переменная любого типа ( в том числе и file).
Фактические: переменная, совпадающая по типу.
Особенности:
ПЗ: фактические и формальные параметры должны совпадать по типу, но фактический параметр может быть целым при вещественном фактическом.
ПП: фактические и формальные параметры отождествлены – всегда совпадают по типу.
8.Аппарат функций.
Функция-такая п/п, кот. возвращает одно единственное значение, связанное с именем этой функции.
Имеет заголовок и тело.
н-function-имя-->список пар-ров-->-:-имя типа-к
В теле могут быть описание локальных переменных и декларация операторов (begin и end;)
Поскольку имя функции является выходным значением, то в теле должен присутствовать хотя бы один оператор присваивания, имеющий имя ф-ции в своей левой части. К функции обращаются по имени.
Пример:
Описание функции (tg):
program tangens;
var x:real;
function Tan(x:real):real;
begin
Tan:=sin(x)/cos(x);
end;
begin
readln(x);
writeln (Tan(x));
end.
Различия между процедурами и функциями
1.Функция всегда вычисляет только один результат простого, ссылочного или строкового типа. Процедура формирует любое количество результатов любых типов, в том числе, ни одного результата или один результат простого, ссылочного или строкового типа. Исходя из этого, и определяется вид подпрограммы. Необходимо помнить, что если входной и выходной параметры совпадают, то такую подпрограмму можно оформить только в виде процедуры;
2.Результат работы функции должен размещаться в автоматической переменной, совпадающей по имени с именем функции. Поэтому в разделе операторов функции обязательно должен присутствовать оператор присваивания этой переменной вычисленного значения. Тип результата функции указывается в заголовке функции. Результаты работы процедуры размещаются в параметрах-переменных, значения которых должны быть сформированы действиями процедуры;
3.Вызов процедуры – это отдельный оператор (оператор обращения к процедуре). Вызов функции – это часть выражения. Появление имени функции в любом выражении трактуется как ее вызов на выполнение;
4.По завершению процедуры выполняется следующий оператор блока, из которого вызывалась процедура, расположенный за оператором обращения к процедуре. После завершения функции результат работы функции из автоматической переменной, совпадающей по имени с именем функции, поступает в стек выражения, из которого вызывалась функция, и этот стек продолжает вычисляться.