
- •Лабораторная работа № 1 Работа с двоичными масками
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа № 2 Работа со строками
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа № 3
- •II. Варианты заданий
- •Лабораторная работа № 5
- •2. Вложенные операторы if
- •3. Составной оператор в операторе if
- •Лабораторная работа № 6 Создание и обработка массивов
- •I. Требования к выполнению задания:
- •II. Варианты заданий
- •Лабораторная работа № 7 Использование множеств
- •Варианты заданий
- •Лабораторная работа № 8 Использование записей и файлов
- •1 Часть (записи)
- •2 Часть (файлы)
- •Лабораторная работа № 9 Изучение механизма передачи данных в процедуры
- •I. Требования к выполнения заданий
- •II. Варианты заданий
- •17 (18)
- •Лабораторная работа № 10 Указатели и динамические переменные
- •Часть 1. Простые ссылочные типы
- •Часть 2. Стеки и списки
- •Библиографический список
- •Содержание
- •Языки программирования
- •390005, Рязань, ул. Гагарина, 59/1.
2 Часть (файлы)
Варианты заданий те же, что и в 1-й части по теме «Записи». Только массив записей должен сохраняться и обрабатываться в виде файла. При этом необходимо по указанию преподавателя реализовать следующие способы создания этого файла:
как типизированного файла из записей;
как типизированного файла из символов;
как типизированного файла из строк;
как текстового файла.
При этом необходимо для каждого варианта создания файла, отличного от типизированного файла из записей, придумать способ сборки (в оперативной памяти) записи (в том смысле, как это было в массиве записей) с информацией, используя для сборки тот материал, что хранится в файле.
Лабораторная работа № 9 Изучение механизма передачи данных в процедуры
Цель работы:
приобретение навыков в ручной трассировке (отладке) сложных программ;
приобретение навыков в анализе области видимости переменных в программе;
приобретение навыков в организации обмена данными между программой и подпрограммами.
I. Требования к выполнения заданий
В каждом варианте необходимо проанализировать программу, состоящую из основного блока и четырех подпрограмм – p1, p2, p3 и p4. И в основном блоке, и в вызываемых из него процедурах используются одноименные переменные – в разных вариантах это или a, b, c или u, v, w или p, q, r или x, y, z. Эти переменные в разных местах программы могут быть:
глобальной переменной;
локальной переменной процедуры;
формальным параметром процедуры.
Целью анализа программы в каждом варианте являются определение (с учетом области видимости) и фиксация на бумаге текущих значений всех переменных после выполнения каждого оператора в основном блоке и в каждой из процедур. Внутри каждой из процедур обязательно должны отдельной строкой фиксироваться значения указанных переменных на момент входа в процедуру.
II. Варианты заданий
1 (2)
program var1; program var2;
var var
a, a,
b, b,
c : integer; c : integer;
procedure p1( a : integer; procedure p1(var b : integer );
var b : integer ); var
var a : integer; ¦ a ¦ b ¦ c ¦
c : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=11; ------+---+---+---+
a:=11; ------+---+---+---+ b:=12; ------+---+---+---+
b:=12; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p1 }
end; { p1 }
procedure p2( a : integer;
procedure p2; var b : integer );
var var
c : integer; ¦ a ¦ b ¦ c ¦ c : integer; ¦ a ¦ b ¦ c ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=21; ------+---+---+---+ a:=21; ------+---+---+---+
b:=22; ------+---+---+---+ b:=22; ------+---+---+---+
c:=a+b; ------+---+---+---+ c:=a+b; ------+---+---+---+
end; { p2 } end; { p2 }
procedure p3(var b : integer ); procedure p3;
¦ a ¦ b ¦ c ¦ var
begin ------+---+---+---+ c : integer; ¦ a ¦ b ¦ c ¦
a:=31; ------+---+---+---+ begin ------+---+---+---+
b:=32; ------+---+---+---+ a:=31; ------+---+---+---+
c:=a+b; ------+---+---+---+ b:=32; ------+---+---+---+
end; { p3 } c:=a+b; ------+---+---+---+
end; { p3 }
procedure p4(var b : integer );
procedure p4(var b : integer );
var ¦ a ¦ b ¦ c ¦
a : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=41; ------+---+---+---+
a:=41; ------+---+---+---+ b:=42; ------+---+---+---+
b:=42; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p4 }
end; { p4 } ¦ a ¦ b ¦ c ¦
¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=4; ------+---+---+---+
a:=1; ------+---+---+---+ b:=5; ------+---+---+---+
b:=2; ------+---+---+---+ c:=6; ------+---+---+---+
c:=3; ------+---+---+---+ p1(a); ------+---+---+---+
p1(a,c); ------+---+---+---+ p2(a,c); ------+---+---+---+
p2; ------+---+---+---+ p3; ------+---+---+---+
p3(a); ------+---+---+---+ p4(a) ------+---+---+---+
p4(a) ------+---+---+---+ end. { var2 }
end. { var1 }
3 (4)
program var3; program var4;
var var
a, u,
b, v,
c : integer; w : integer;
procedure p1; procedure p1(var v : integer );
var var
c : integer; ¦ a ¦ b ¦ c ¦ u : integer; ¦ u ¦ v ¦ w ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=11; ------+---+---+---+ u:=11; ------+---+---+---+
b:=12; ------+---+---+---+ v:=12; ------+---+---+---+
c:=a+b; ------+---+---+---+ w:=u+v; ------+---+---+---+
end; { p1 } end; { p1 }
procedure p2(var b : integer ); procedure p2( u : integer;
var var v : integer );
a : integer; ¦ a ¦ b ¦ c ¦ var
begin ------+---+---+---+ w : integer; ¦ u ¦ v ¦ w ¦
a:=21; ------+---+---+---+ begin ------+---+---+---+
b:=22; ------+---+---+---+ u:=21; ------+---+---+---+
c:=a+b; ------+---+---+---+ v:=22; ------+---+---+---+
end; { p2 } w:=u+v; ------+---+---+---+
end; { p2 }
procedure p3(var b : integer );
¦ a ¦ b ¦ c ¦ procedure p3;
begin ------+---+---+---+ var
a:=31; ------+---+---+---+ w : integer; ¦ u ¦ v ¦ w ¦
b:=32; ------+---+---+---+ begin ------+---+---+---+
c:=a+b; ------+---+---+---+ u:=31; ------+---+---+---+
end; { p3 } v:=32; ------+---+---+---+
w:=u+v; ------+---+---+---+
procedure p4( a : integer; end; { p3 }
var b : integer );
var procedure p4(var v : integer );
c : integer; ¦ a ¦ b ¦ c ¦ ¦ u ¦ v ¦ w ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=41; ------+---+---+---+ u:=41; ------+---+---+---+
b:=42; ------+---+---+---+ v:=42; ------+---+---+---+
c:=a+b; ------+---+---+---+ w:=u+v; ------+---+---+---+
end; { p4 } end; { p4 }
¦ a ¦ b ¦ c ¦ ¦ u ¦ v ¦ w ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=3; ------+---+---+---+ u:=4; ------+---+---+---+
b:=4; ------+---+---+---+ v:=5; ------+---+---+---+
c:=5; ------+---+---+---+ w:=6; ------+---+---+---+
p1; ------+---+---+---+ p1(u); ------+---+---+---+
p2(a); ------+---+---+---+ p2(u,w); ------+---+---+---+
p3(a); ------+---+---+---+ p3; ------+---+---+---+
p4(a,c) ------+---+---+---+ p4(u) ------+---+---+---+
end. { var3 } end. { var4 }
5 (6)
program var5; program var6;
var var
x, p,
y, q,
z : integer; r : integer;
procedure p1; procedure p1( p : integer;
var var q : integer );
z : integer; ¦ x ¦ y ¦ z ¦ var
begin ------+---+---+---+ r : integer; ¦ p ¦ q ¦ r ¦
x:=11; ------+---+---+---+ begin ------+---+---+---+
y:=12; ------+---+---+---+ p:=11; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=12; ------+---+---+---+
end; { p1 } r:=p+q; ------+---+---+---+
end; { p1 }
procedure p2(var y : integer );
var procedure p2;
x : integer; ¦ x ¦ y ¦ z ¦ var
begin ------+---+---+---+ r : integer; ¦ p ¦ q ¦ r ¦
x:=21; ------+---+---+---+ begin ------+---+---+---+
y:=22; ------+---+---+---+ p:=21; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=22; ------+---+---+---+
end; { p2 } r:=p+q; ------+---+---+---+
end; { p2 }
procedure p3(var y : integer );
¦ x ¦ y ¦ z ¦ procedure p3(var q : integer );
begin ------+---+---+---+ ¦ p ¦ q ¦ r ¦
x:=31; ------+---+---+---+ begin ------+---+---+---+
y:=32; ------+---+---+---+ p:=31; ------+---+---+---+
z:=a+b; ------+---+---+---+ q:=32; ------+---+---+---+
end; { p3 } r:=p+q; ------+---+---+---+
end; { p3 }
procedure p4( x : integer;
var y : integer ); procedure p4(var q : integer );
var
z : integer; ¦ x ¦ y ¦ z ¦ var
begin ------+---+---+---+ p : integer; ¦ p ¦ q ¦ r ¦
x:=41; ------+---+---+---+ begin ------+---+---+---+
y:=42; ------+---+---+---+ p:=41; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=42; ------+---+---+---+
end; { p4 } r:=p+q; ------+---+---+---+
¦ x ¦ y ¦ z ¦ end; { p4 }
begin ------+---+---+---+ ¦ p ¦ q ¦ r ¦
x:=3; ------+---+---+---+ begin ------+---+---+---+
y:=4; ------+---+---+---+ p:=1; ------+---+---+---+
z:=5; ------+---+---+---+ q:=2; ------+---+---+---+
p1; ------+---+---+---+ r:=3; ------+---+---+---+
p2(x); ------+---+---+---+ p1(p,r); ------+---+---+---+
p3(x); ------+---+---+---+ p2; ------+---+---+---+
p4(x,z) ------+---+---+---+ p3(p); ------+---+---+---+
end. { var5 } p4(p) ------+---+---+---+
end. { var6 }
7 (8)
program var7; program var8;
var var
a, a,
b, b,
c : integer; c : integer;
procedure p1( a : integer; procedure p1(var b : integer );
var b : integer ); var
var a : integer; ¦ a ¦ b ¦ c ¦
c : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=11; ------+---+---+---+
a:=11; ------+---+---+---+ b:=12; ------+---+---+---+
b:=12; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p1 }
end; { p1 }
procedure p2( a : integer;
procedure p2; var b : integer );
var var
c : integer; ¦ a ¦ b ¦ c ¦ c : integer; ¦ a ¦ b ¦ c ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=21; ------+---+---+---+ a:=21; ------+---+---+---+
b:=22; ------+---+---+---+ b:=22; ------+---+---+---+
c:=a+b; ------+---+---+---+ c:=a+b; ------+---+---+---+
end; { p2 } end; { p2 }
procedure p3(var b : integer ); procedure p3;
¦ a ¦ b ¦ c ¦ var
begin ------+---+---+---+ c : integer; ¦ a ¦ b ¦ c ¦
a:=31; ------+---+---+---+ begin ------+---+---+---+
b:=32; ------+---+---+---+ a:=31; ------+---+---+---+
c:=a+b; ------+---+---+---+ b:=32; ------+---+---+---+
end; { p3 } c:=a+b; ------+---+---+---+
end; { p3 }
procedure p4(var b : integer );
procedure p4(var b : integer );
var ¦ a ¦ b ¦ c ¦
a : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=41; ------+---+---+---+
a:=41; ------+---+---+---+ b:=42; ------+---+---+---+
b:=42; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p4 }
end; { p4 }
¦ a ¦ b ¦ c ¦
¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=4; ------+---+---+---+
a:=1; ------+---+---+---+ b:=5; ------+---+---+---+
b:=2; ------+---+---+---+ c:=6; ------+---+---+---+
c:=3; ------+---+---+---+ p1(a); ------+---+---+---+
p1(a,c); ------+---+---+---+ p2(a,c); ------+---+---+---+
p2; ------+---+---+---+ p3; ------+---+---+---+
p3(a); ------+---+---+---+ p4(a) ------+---+---+---+
p4(a) ------+---+---+---+ end. { var8 }
end. { var7 }
9 (10)
program var9; program var10;
var var
a, a,
b, b,
c : integer; c : integer;
procedure p1( a : integer; procedure p1(var b : integer );
var b : integer ); var
var a : integer; ¦ a ¦ b ¦ c ¦
c : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=21; ------+---+---+---+
a:=21; ------+---+---+---+ b:=22; ------+---+---+---+
b:=22; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p1 }
end; { p1 }
procedure p2( a : integer;
procedure p2; var b : integer );
var var
c : integer; ¦ a ¦ b ¦ c ¦ c : integer; ¦ a ¦ b ¦ c ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=11; ------+---+---+---+ a:=11; ------+---+---+---+
b:=12; ------+---+---+---+ b:=12; ------+---+---+---+
c:=a+b; ------+---+---+---+ c:=a+b; ------+---+---+---+
end; { p2 } end; { p2 }
procedure p3(var b : integer ); procedure p3;
¦ a ¦ b ¦ c ¦ var
begin ------+---+---+---+ c : integer; ¦ a ¦ b ¦ c ¦
a:=31; ------+---+---+---+ begin ------+---+---+---+
b:=32; ------+---+---+---+ a:=31; ------+---+---+---+
c:=a+b; ------+---+---+---+ b:=32; ------+---+---+---+
end; { p3 } c:=a+b; ------+---+---+---+
end; { p3 }
procedure p4(var b : integer );
procedure p4(var b : integer );
var ¦ a ¦ b ¦ c ¦
a : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=41; ------+---+---+---+
a:=41; ------+---+---+---+ b:=42; ------+---+---+---+
b:=42; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p4 }
end; { p4 } ¦ a ¦ b ¦ c ¦
¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=4; ------+---+---+---+
a:=1; ------+---+---+---+ b:=5; ------+---+---+---+
b:=2; ------+---+---+---+ c:=6; ------+---+---+---+
c:=3; ------+---+---+---+ p1(a); ------+---+---+---+
p1(a,c); ------+---+---+---+ p2(a,c); ------+---+---+---+
p2; ------+---+---+---+ p3; ------+---+---+---+
p3(a); ------+---+---+---+ p4(a) ------+---+---+---+
p4(a) ------+---+---+---+ end. { var2 }
end. { var1 }
11 (12)
program var11; program var12;
var var
a, u,
b, v,
c : integer; w : integer;
procedure p1; procedure p1(var v : integer );
var var
c : integer; ¦ a ¦ b ¦ c ¦ u : integer; ¦ u ¦ v ¦ w ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=21; ------+---+---+---+ u:=21; ------+---+---+---+
b:=22; ------+---+---+---+ v:=22; ------+---+---+---+
c:=a+b; ------+---+---+---+ w:=u+v; ------+---+---+---+
end; { p1 } end; { p1 }
procedure p2(var b : integer ); procedure p2( u : integer;
var var v : integer );
a : integer; ¦ a ¦ b ¦ c ¦ var
begin ------+---+---+---+ w : integer; ¦ u ¦ v ¦ w ¦
a:=11; ------+---+---+---+ begin ------+---+---+---+
b:=12; ------+---+---+---+ u:=11; ------+---+---+---+
c:=a+b; ------+---+---+---+ v:=12; ------+---+---+---+
end; { p2 } w:=u+v; ------+---+---+---+
end; { p2 }
procedure p3(var b : integer );
¦ a ¦ b ¦ c ¦ procedure p3;
begin ------+---+---+---+ var
a:=31; ------+---+---+---+ w : integer; ¦ u ¦ v ¦ w ¦
b:=32; ------+---+---+---+ begin ------+---+---+---+
c:=a+b; ------+---+---+---+ u:=31; ------+---+---+---+
end; { p3 } v:=32; ------+---+---+---+
w:=u+v; ------+---+---+---+
procedure p4( a : integer; end; { p3 }
var b : integer );
var procedure p4(var v : integer );
c : integer; ¦ a ¦ b ¦ c ¦ ¦ u ¦ v ¦ w ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=41; ------+---+---+---+ u:=41; ------+---+---+---+
b:=42; ------+---+---+---+ v:=42; ------+---+---+---+
c:=a+b; ------+---+---+---+ w:=u+v; ------+---+---+---+
end; { p4 } end; { p4 }
¦ a ¦ b ¦ c ¦ ¦ u ¦ v ¦ w ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=3; ------+---+---+---+ u:=4; ------+---+---+---+
b:=4; ------+---+---+---+ v:=5; ------+---+---+---+
c:=5; ------+---+---+---+ w:=6; ------+---+---+---+
p1; ------+---+---+---+ p1(u); ------+---+---+---+
p2(a); ------+---+---+---+ p2(u,w); ------+---+---+---+
p3(a); ------+---+---+---+ p3; ------+---+---+---+
p4(a,c) ------+---+---+---+ p4(u) ------+---+---+---+
end. { var3 } end. { var4 }
13 (14)
program var13; program var14;
var var
x, p,
y, q,
z : integer; r : integer;
procedure p1; procedure p1( p : integer;
var var q : integer );
z : integer; ¦ x ¦ y ¦ z ¦ var
begin ------+---+---+---+ r : integer; ¦ p ¦ q ¦ r ¦
x:=21; ------+---+---+---+ begin ------+---+---+---+
y:=22; ------+---+---+---+ p:=21; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=22; ------+---+---+---+
end; { p1 } r:=p+q; ------+---+---+---+
end; { p1 }
procedure p2(var y : integer );
var procedure p2;
x : integer; ¦ x ¦ y ¦ z ¦ var
begin ------+---+---+---+ r : integer; ¦ p ¦ q ¦ r ¦
x:=11; ------+---+---+---+ begin ------+---+---+---+
y:=12; ------+---+---+---+ p:=11; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=12; ------+---+---+---+
end; { p2 } r:=p+q; ------+---+---+---+
end; { p2 }
procedure p3(var y : integer );
¦ x ¦ y ¦ z ¦ procedure p3(var q : integer );
begin ------+---+---+---+ ¦ p ¦ q ¦ r ¦
x:=31; ------+---+---+---+ begin ------+---+---+---+
y:=32; ------+---+---+---+ p:=31; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=32; ------+---+---+---+
end; { p3 } r:=p+q; ------+---+---+---+
end; { p3 }
procedure p4( x : integer;
var y : integer ); procedure p4(var q : integer );
var
z : integer; ¦ x ¦ y ¦ z ¦ var
begin ------+---+---+---+ p : integer; ¦ p ¦ q ¦ r ¦
x:=41; ------+---+---+---+ begin ------+---+---+---+
y:=42; ------+---+---+---+ p:=41; ------+---+---+---+
z:=x+y; ------+---+---+---+ q:=42; ------+---+---+---+
end; { p4 } r:=p+q; ------+---+---+---+
¦ x ¦ y ¦ z ¦ end; { p4 }
begin ------+---+---+---+ ¦ p ¦ q ¦ r ¦
x:=3; ------+---+---+---+ begin ------+---+---+---+
y:=4; ------+---+---+---+ p:=1; ------+---+---+---+
z:=5; ------+---+---+---+ q:=2; ------+---+---+---+
p1; ------+---+---+---+ r:=3; ------+---+---+---+
p2(x); ------+---+---+---+ p1(p,r); ------+---+---+---+
p3(x); ------+---+---+---+ p2; ------+---+---+---+
p4(x,z) ------+---+---+---+ p3(p); ------+---+---+---+
end. { var5 } p4(p) ------+---+---+---+
end. { var6 }
15 (16)
program var15; program var16;
var var
a, a,
b, b,
c : integer; c : integer;
procedure p1( a : integer; procedure p1(var b : integer );
var b : integer ); var
var a : integer; ¦ a ¦ b ¦ c ¦
c : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=21; ------+---+---+---+
a:=21; ------+---+---+---+ b:=22; ------+---+---+---+
b:=22; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p1 }
end; { p1 }
procedure p2( a : integer;
procedure p2; var b : integer );
var var
c : integer; ¦ a ¦ b ¦ c ¦ c : integer; ¦ a ¦ b ¦ c ¦
begin ------+---+---+---+ begin ------+---+---+---+
a:=11; ------+---+---+---+ a:=11; ------+---+---+---+
b:=12; ------+---+---+---+ b:=12; ------+---+---+---+
c:=a+b; ------+---+---+---+ c:=a+b; ------+---+---+---+
end; { p2 } end; { p2 }
procedure p3(var b : integer ); procedure p3;
¦ a ¦ b ¦ c ¦ var
begin ------+---+---+---+ c : integer; ¦ a ¦ b ¦ c ¦
a:=31; ------+---+---+---+ begin ------+---+---+---+
b:=32; ------+---+---+---+ a:=31; ------+---+---+---+
c:=a+b; ------+---+---+---+ b:=32; ------+---+---+---+
end; { p3 } c:=a+b; ------+---+---+---+
end; { p3 }
procedure p4(var b : integer );
procedure p4(var b : integer );
var ¦ a ¦ b ¦ c ¦
a : integer; ¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=41; ------+---+---+---+
a:=41; ------+---+---+---+ b:=42; ------+---+---+---+
b:=42; ------+---+---+---+ c:=a+b; ------+---+---+---+
c:=a+b; ------+---+---+---+ end; { p4 }
end; { p4 } ¦ a ¦ b ¦ c ¦
¦ a ¦ b ¦ c ¦ begin ------+---+---+---+
begin ------+---+---+---+ a:=4; ------+---+---+---+
a:=1; ------+---+---+---+ b:=5; ------+---+---+---+
b:=2; ------+---+---+---+ c:=6; ------+---+---+---+
c:=3; ------+---+---+---+ p1(a); ------+---+---+---+
p1(a,c); ------+---+---+---+ p2(a,c); ------+---+---+---+
p2; ------+---+---+---+ p3; ------+---+---+---+
p3(a); ------+---+---+---+ p4(a) ------+---+---+---+
p4(a) ------+---+---+---+ end. { var8 }
end. { var7 }