Процедуры и функции

1. В каком месте программы и в каком порядке располагаются функции и процедуры? Сравните с алгоритмическим языком.

2. Что такое локальные и глобальные переменные и как они различаются на языке Паскаль? Сравните с алгоритмическим языком.

3. Как выглядит заголовок процедуры на языке Паскаль?

4. Как выглядит заголовок функции на языке Паскаль?

5. Что собой представляет содержательная часть процедуры на языке Паскаль?

6. Что собой представляет содержательная часть функции на языке Паскаль?

7. Как различить по заголовку процедуры на языке Паскаль аргументы, результаты и промежуточные величины?

8. Сравните правила записи процедур на Паскале и на школьном алгоритмическом языке.

9. Сравните правила записи функций на Паскале и на школьном алгоритмическом языке.

10.Сформулируйте правила обращения к функции и к процедуре.

11.Что такое формальные и фактические параметры?

12.Какая взаимосвязь существует между формальными и фактическими параметрами?

13.Какие виды параметров могут быть указаны при описании процедуры или функции в ее заголовке?

14.Для чего используются параметры-значения?

15.Для чего используются параметры-переменные?

16.Найдите синтаксические ошибки в следующих командах:

(1). Procedure (var a:real, b,s:char; var d:real); (2). Procedure(b[1]+b[2],b[2]+b[3],b[3]+b[1],b[2]); (3). Procedure str(a;b;c:integer; var s:real); (4). ... a. str(k[1],k[2],k[3],k[4]); (5). 4.procedure prim(k:real; var p,integer) ... a. prim(a+b,a-b); (6). 5.function r(a:real;var b;t:real); (7). ... a. k:=r(A[3],A,r); (8). 6.function g(var a,b:integer):integer; ... a:=g(a[i],g);

17. Перечислите, какие переменные в следующей процедуре являются локальными, глобальными, аргументами, результатами.

(1). procedure multiply(d:stroka;var P:real); var i:integer; begin P:=1; For i:=1 to n do if d[i]<>0 then P:=P*d[i]; end; (2). procedure quantity(n:integer;var k:integer); var i:integer; begin k:=0; for i:=1 to n do if d[i]<0 then k:=k+1; end;
(3). procedure poisk(n:integer;var k:char); var i:integer; begin k:='н'; for i:=1 to n do if d[i]=13 then k:='д'; end; (4). procedure summa(n:integer;var s:real); var i:integer; begin s:=0; for i:=1 to n do s:=s+d[i]; end;
(5). procedure maximum(d:stroka;var max:real); var i:integer; begin max:=d[1]; for i:=2 to n do if d[i]>max then max:=d[i]; end; (6). procedure maxmod(d:vector); var i:integer; begin max:=abs(d[1]); for i:=2 to n do if abs(d[i])>max then max:=d[i]; end;

18. Написать заголовок следующих процедур и функций:

delete, insert, chr, ord, val, str, copy, length, concat, pos.

19. Перепишите процедуры из пункта 17 в виде функций.

20. Изучите программу PR1 и ответьте на следующие вопросы:
1) назовите переменные, локальные для процедуры pr3 и недоступные для процедуры pr2 и основной программы;
2) назовите переменные, являющиеся глобальными для процедуры pr3, недоступные в основной программе, но локальные для процедуры pr2;
3) назовите переменные, являющиеся глобальными как для процедуры pr2, так и для процедуры pr3.
program PR1;
var A, B, C: real;
procedure pr2;
var X, Y, Z: real;
procedure pr3;
var i, j, k: real;
begin

end;
begin

end;
begin

end.

21. Изучите программу PR и ответьте на следующие вопросы:
1) какие переменные, являясь одна локальной, а другая глобальной, имеют одно и то же имя?
2) будет ли переменная L иметь одно и то же значение в основной программе и в процедуре pr3?
3) доступна ли переменная L, описанная в основной программе, в процедурах pr3 и pr4?
4) окажет ли влияние на переменную L, описанную в основной программе, изменение значения переменной L, описанной в процедуре pr3?
program PR;
var L, D, F: real;
procedure pr2;
var M, N: integer;
begin

end;
procedure pr3;
var L, L4: integer;
procedure pr4;
var L5: integer;
begin

end;
begin

end;
begin

end.

22. Какой смысл имеет величина k в следующей серии команд

(1). k:=0; for i:=1 to n do begin g:=summamod(a[i]); if g=0 then k:=k+1 end; (2). k:=0; for i:=1 to n do begin g:=summamod(a[i]); maximummod(a[i],l,ma); if g=ma then k:=k+1 end;
(3). k:=0; for i:=1 to n do begin g:=summamod(a[i]); d:=summa(a[i]); if g=d then k:=k+1; end; (4). k:=0; for i:=1 to n do begin maximum(a[i],g,ma); if ma<0 then k:=k+1 end;
(5). k:=0; k:=0; for i:=1 to n do begin maximum(a[i],g,ma); maximummod(a[i],l,mam); if mam<>ma then k:=k+1; end; (6). k:=0; for i:=1 to n do begin g:=summamod(a[i]); d:=summa(a[i]); if g<>abs(d) then k:=k+1; end;

23. Составьте процедуры для:

(1). ввода одномерного числового массива,

(2). вывода одномерного числового массива,

(3). ввода двумерного числового массива,

(4). вывода двумерного числового массива,

(5). нахождения суммы элементов одномерного массива,

(6). нахождения суммы элементов двумерного массива,

(7). нахождения произведения элементов одномерного массива,

(8). нахождения номера максимального элемента одномерного массива,

(9). нахождения номеров максимального элемента двумерного массива,

(10). нахождения номера последнего отрицательного элемента массива,

(11). нахождения номера первого нулевого элемента одномерного массива,

(12). подсчета в данном слове количества вхождений заданной буквы,

(13). определения, есть ли в данном слове две одинаковые буквы подряд.