200 likes | 347 Views
Подпрограмма. Подпрограмма - именованная часть программы к которой можно обращаться неоднократно по ее имени. Подпрограмма. Описывается в описательной части самой программы. Обращение к ней происходит из исполнительной части программы.
E N D
Подпрограмма Подпрограмма - именованная часть программы к которой можно обращаться неоднократно по ее имени
Подпрограмма • Описывается в описательной части самой программы. • Обращение к ней происходит из исполнительной части программы. • Подпрограммы делятся на процедуры и функции. Процедуру применяют когда нужно выполнить действие, функцию используют при математических выражениях
Типы переменных • Глобальные переменные объявлены в описательной части самой программы. Доступны везде • Локальные переменные объявлены в подпрограмме. Доступны только в теле подпрограммы.
Процедура Procedure имя(список переменных) Begin тело процедуры End;
Процедура без параметров • Найти площадь треугольника с основанием 8 высотой 5 Var s:real; Procedure treyg; var a,h:integer; begin a:=8; h:=5;s:=a*h/2; end; Begin treyg; writeln(s:3:2); End.
Определить какое значение будет у переменной а Var a:byte; Procedure prim; Var a:byte; Begin a:=8; End; Begin a:=5; prim; writeln(a); End.
Процедуры с параметрами -значениями Это параметры, значения которым передаются из основной программы в подпрограмму. Записываются в круглых скобках после имени процедуры с указанием типа.
Найти площадь Var a,h,s:real; Procedure treyg(x,y:real); begin s:=x*y/2; end; Begin a:=8; h:=5; treyg(a,h); writeln(s:3:2); treyg(a+1,h-2); writeln(s:3:2); End.
Процедуры с параметрами ссылками • Параметры ссылки(переменные)- это параметры которые передаются из подпрограммы в основную программу. Записываются в круглых скобках после имени процедуры после var
Var a,h,s:real; Procedure treyg(x,y:real; var p:real); begin p:=x*y/2; end; Begin a:=8; h:=5; treyg(a,h,s); writeln(s:3:2); End.
Найти последующее число Procedure prim(var x:integer); Begin x:=x+1; End; Var a:integer; Begin a:=5; prim(a); writeln(a); End.
Найти сумму элементов двух массивов Const n=10; Type mas=array[1..n] of integer; Procedure sozd(var m:mas); Var i:integer; Begin Writeln(‘Введи элементы в массив’); for i:=1 to n do read(m[i]); End; Procedure sum(var m:mas); Var s,i:integer; begin S:=0; For i:=1 to n do s:=s+m[i]; writeln(‘sum=‘,s); end;
Основная программа Var a,b:mas; Begin sozd(a); sozd(b); sum(a); sum(b); End.
Функции • В заголовке всегда указывается тип функции • В теле необходимо присвоить вычислительный результат имени самой функции • К функции нельзя обращаться на прямую. Имя функции можно использовать либо в операции присваивания, либо в математическом выражении, либо в условии
Function имя(параметра): тип функции Begin Тело функции End;
Вычислить сумму площадей треугольников с заданными основаниями(5) и высотами меняющиеся от 1 до n Var n,a,i:integer; S:real; Function treyg(a,h:integer):real; var p:real; Begin p:=a*h/2; treyg:=p; End; Begin a:=5; s:=0; readln(n); For i:=1 to n do s:=s+treyg(a,i); Writeln(s:3:2); End.
В символьном массиве подсчитать количество гласных и согласных букв Const n=10; Type mas=array[1..n] of char; Procedure sozd(var m:mas); Var i:integer; Begin Writeln(‘Введи элементы в массив’); for i:=1 to n do read(m[i]); End; Function glas(var b:char):boolean; Begin glas:=b in[‘a’,’A’,’e’,’E’,’u’,’U’,’I’,’i’,’o’,’O’]; End;
Function soglas(var b:char):boolean; Begin soglas:=b in([‘a’..’z’,’A’..’Z’]-[‘a’,’A’,’e’,’E’,’u’,’U’,’I’,’i’,’o’,’O’]; End; Var a:mas; kgl, ksogl ,i:integer; Begin sozd(a); kgl:=0; ksogl:=0; For i:=1 to n do begin if glas(a[i]) then kgl:=kgl+1; if soglas(a[i]) then ksogl:=ksogl+1; end; Writeln(‘kgl=’, kgl); Writeln(‘ksogl=’, ksogl); End.
Задачи 1.Подсчитать в массиве количество цифр 2.Дан массив с цифрами и буквами. Разделить их в 2 массива. 3. Дано три строки. Подсчитать сколько в них пробелов
Тесты • n=10 3 e g f 4 1 d f 5 n ответ 4 • 3 e g f 4 1 d f 5 n ответ 3 4 1 5 e g f d f n 3. Mir trud mai -3 mir tryd -1 Mir trud mai -5