- •Лекция 1. Основы языков программирования.
- •Лекция 2. Способы записи алгоритмов.
- •Лекция 3. Знакомство с языком Паскаль.
- •Лекция 4. Структура программы на языке Паскаль.
- •Лекция 5. Стандартные типы данных.
- •5.1 Целые типы
- •5.2 Вещественные типы
- •5.3 Символьный тип.
- •5.4 Ограничительные типы.
- •5.5 Перечислимые типы.
- •Л.6. Операторы языка Паскаль Ввод исходных данных.
- •Расчет.
- •Стандартные функции Турбо Паскаля
- •Стандартные процедуры
- •Константы
- •Вывод результатов
- •Лекция 7. Операторы условий if, case
- •7.1 Оператор безусловного перехода
- •7.2 Условный оператор
- •7.3 Оператор варианта
- •Лекция 8. Операторы цикла for, while, repeat
- •8.1 Оператор цикла с предусловием.
- •8.2 Оператор цикла с постусловием.
- •8.3 Оператор цикла с параметром.
- •Лекция 9. Одномерные и двумерные массивы.
- •Работа с массивами
- •Инициализация элементов массива
- •Лекция 10. Процедуры и функции в Паскаль.
- •Лекция 11. Параметры в процедурах.
- •11.1 Механизм параметров.
- •11.2. Параметры - значения.
- •11.3. Параметры - переменные.
- •11.4. Безтиповые параметры.
- •Лекция 12. Типы данных, определяемые пользователем. Записи.
- •Лекция 13. Работа с файлами. Обработка ошибок в Паскаль.
- •13.1 Файловые типы
- •13.2 Операции ввода-вывода Write, Read
- •13.3. Перемещение по файлу.
- •13.4 Обработка ошибок ввода - вывода
- •13.5 Текстовые файлы
- •13.6 Файлы без типа.
- •Лекция 14. Модули и внешние файлы в Паскаль.
- •15.1. Компиляция и использование модулей
- •15.2. Компиляция и поиск модулей.
- •15.3. Стандартные модули
- •Лекция 15. Динамические структуры данных.
- •15.1 Ссылочные типы и указатели.
- •15.2 Статические переменные.
- •15.3. Создание и удаление динамических переменных.
- •15.4. Установка размеров динамической памяти.
- •Лекция.16. Графические возможности языка Паскаль.
- •Лекция17. Практическое применение языка Паскаль в решении технологических и экологических задач
11.2. Параметры - значения.
Самый простой способ передачи значений. При вызове процедуры формальный параметр принимает значение фактического (тип должен соответствовать).
Procedure SumSquare (x, y :real);
Begin
X:=x*x;
Y:=y*y;
Writeln('Сумма квадратов= ', x+y);
End;
…..
var
a,b : real;
begin
a:=1.7; b:=0.9;
SumSquare (a, b);
….
При вызове этой процедуры с фактическими параметрами a и b значения этих параметров (один раз) копируются в соответствующие формальные параметры x, y и дальнейшие манипуляции с внутренними параметрами никак не влияют на a, b.
11.3. Параметры - переменные.
Этот способ предназначен для случаев, когда необходимо передать некоторое значение в точку вызова подпрограммы. Если в процедуре объявить в разделе var переменные, то они будут доступны только в этом блоке. Например:
Procedure Ex1 (x,y : real; Sum, Sub : real);
Begin
Sum:=x*x+y*y;
Sub := x*x - y*y;
End;
…….
Var
A,b :real;
SumAB, SubAB :real;
Begin
A:=1.7;
B:=0.9
Ex1(a,b, SumAB, SubAB);
…..
Sum и Sub - являются локальными и присвоения не будет. Исполним передачу параметров по ссылке.
Procedure SubSum (x,y:real; var Sum, Sub :real);
В этом случае формальные параметры Sum и Sub считаются синонимами соответствующих фактических параметров в пределах процедуры. Вызов аналогичен.
11.4. Безтиповые параметры.
Кроме двух способов передачи параметров в подпрограммы при их вызове - по значению и по ссылке Pascal допускает третий способ передачи, при котором тип параметра не фиксируется.
Var Ident; где ident - идентификатор формального параметра.
Так как тип формального параметра не задан, то он несовместим ни с какой другой переменной, то есть не может входить ни в какие конструкции. Поэтому единственным способом использования таких параметров в теле подпрограммы является 'наделение' их определенным типом. Это можно добиться двумя основными способами: применив к ним операцию приведения типов или описав в подпрограмме локальную переменную определенного типа с совмещением ее в памяти с нетипизированным параметром.
function Equal (var x) : boolean;
begin
Equal :=(char(x)='A');
End;
procedure Equal (var x);
var
v1: byte absolute x;
begin
if size of (x)=sizeOf(byte) then v1…
end;
Смысл функции заключается в задании алгоритма вычисления некоторого значения и организации возвращаемого значения в точку вызова. Возврат вычисленного значения организуется следующим образом. В теле функции должен присутствовать оператор присваивания специального вида, в левой части которого должен быть указан идентификатор, совпадающий с именем функции, а в правой части - выражение, вычисляющее возвращаемое значение. Таких присваиваний может быть несколько и важно, чтобы выполнялся хотя бы один оператор. Тип должен совпадать с типом функции. Функция может возвращать в качестве результата значение только простого, строкового, или ссылочного типов.
Turbo Pascal так же как и другие языки имеет дополнительное средство прерывания подпрограммы в произвольной точке. Для этого предназначена системная процедура Exit без параметров, которая немедленно завершает выполнение подпрограммы и возвращает управление в точку вызова.
Procedure p (x, y :real; var Res :real);
Begin
If x-y<0.1 then Exit;
Res:=(x*y)-y;
End;
Если процедуру exit вызвать из тела самой программы, то будет завершено выполнение самой программы.
