Язык программирования Pascal. Процедуры и функции
- Рубрика: Презентации / Презентации по Информатике
- Просмотров: 210
Презентация для классов "Язык программирования Pascal. Процедуры и функции" онлайн бесплатно на сайте электронных школьных презентаций uchebniki.org.ua
Вспомогательный алгоритм - подпрограмма Подпрограммы применяются когда: часть алгоритма неоднократно повторяется в программе; можно использовать фрагменты разработанных ранее алгоритмов; для разбиения крупных программ на части в соответствии с модульным принципом программирования. В паскале реализовано два типа подпрограмм процедуры и функции.
Процедуры и функции Процедура( функция) представляет собой последовательность операторов, которая имеет имя, список параметров и может быть вызвана из различных частей программы. Имя процедуры в тексте программы называется вызовом. Вызов активирует процедуру (функцию) - начинают выполняться её операторы. После выполнения процедуры программа продолжается с оператора стоящего за вызовом. Отличие процедур от функций в том, что функции возвращают значение.
Описание процедур и функций Все процедуры или функции должны быть описаны в разделе описаний основной программы. Описание процедуры имеет вид: procedure имя (список формальных параметров); раздел описаний локальных параметров begin операторы тела процедуры end; Описание функции имеет вид: function имя (список формальных параметров): тип значения функции; раздел описаний локальных параметров begin операторы тела функции end;
Параметры процедур и функций Список формальных параметров состоит из одной или нескольких секций, разделенных символом " ; ". Секция состоит из списка переменных, перечисляемых через запятую, знака “:” и типа. Секция может предваряться служебным словом var - тогда параметры передаются по ссылке, (экономия памяти и времени). Если var отсутствует параметры передаются значениями. Список формальных параметров вместе с окружающими скобками может отсутствовать.
Раздел описаний локальных параметров Раздел описаний процедуры или функции устроен так же, как и раздел описаний программы. Здесь описываются локальные переменные, константы и вложенные процедуры и функции. Все такие локальные объекты доступны лишь внутри данной подпрограммы и не видны извне.
Локальные и глобальные параметры Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Локальными называются переменные, объявленные внутри подпрограммы и доступные только ей самой. Обмен информацией между основной программой и подпрограммой может осуществляться двумя способами: через глобальные переменные с помощью параметров подпрограммы. Подпрограмма может использовать любые глобальные переменные кроме тех, которые имеют те же имена, что и ее локальные переменные. Если в подпрограмме описана локальная переменная, имя которой совпадает с именем некоторой глобальной переменной, то данная глобальная переменная становится недоступной в этой подпрограмме, и при указании идентификатора переменной произойдет обращение к локальной переменой подпрограммы, а не одноименной глобальной переменной. Память для локальных (т.е. описанных в подпрограмме) переменных выделяется на время исполнения данной подпрограммы в специальной области, называемой стеком. При завершении работы подпрограммы память освобождается, поэтому все внутренние результаты работы подпрограммы не сохраняются от одного обращения к другому.
Решение задач с использованием подпрограмм Заданы координаты вершин двух треугольников на плоскости. Определить какой из треугольников имеет большую площадь. Дано: Координаты ABC (Xa, Ya) (Xb,Yb) (Xc,Yc) Координаты DEF (Xd, Yd) (Xe,Ye) (Xf,Yf) Найти: Smax=max(Sabc,Sdef)
Формулы для решения задачи Решение: Формула длинны отрезка по координатам концов Формула площади треугольника по трем сторонам (Формула Герона)
Схема программы Предлагается Разделить алгоритм на процедуры: Ввод координат вершин треугольника Определение длины сторон Определение площади треугольника.
Процедура ввода данных procedure input (var x1,y1,x2,y2,x3,y3:real); begin writeln ('--------------------------'); writeln ('ввод координат вершин треугольника'); writeln ('введите координаты 1 вершины'); write ('x1='); read (x1); write ('y1='); read (y1); writeln ('введите координаты 2 вершины'); write ('x2='); read (x2); write ('y2='); read (y2); writeln ('введите координаты 3 вершины'); write ('x3='); read (x3); write ('y3='); read (y3); end; program input; var x1,y1,x2,y2,x3,y3:real; begin writeln ('--------------------------'); writeln ('ввод координат вершин треугольника'); writeln ('введите координаты 1 вершины'); write ('x1='); read (x1); write ('y1='); read (y1); writeln ('введите координаты 2 вершины'); write ('x2='); read (x2); write ('y2='); read (y2); writeln ('введите координаты 3 вершины'); write ('x3='); read (x3); write ('y3='); read (y3); end;
Функция расчета длины отрезка function dline (var x1,y1,x2,y2:real):real; begin dline:=sqrt(sqr(x2-x1)+sqr(y2-y1)); end;
Функция расчета площади треугольника по формуле Герона function geron (var a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; geron:=sqrt(abs(p*(p-a)*(p-b)*(p-c))); end; Формальные параметры функции и их тип Локальный параметр и его тип Тип функции Имя функции
Основная программа begin input (xa,ya,xb,yb,xc,yc); {вызов процедуры} input (xd,yd,xe,ye,xf,yf); a:=dline(xb,yb,xc,yc); {вызов функции} b:=dline(xa,ya,xc,yc); c:=dline(xb,yb,xa,ya); d:=dline(xe,ye,xf,yf); e:=dline(xd,yd,xf,yf); f:=dline(xd,yd,xe,ye); Sabc:=geron(a,b,c); {вызов функции} Sdef:=geron(d,e,f); writeln ('Sabc=',Sabc,'Sdef=',Sdef); Smax:=Sabc; if Sdef>Sabc then Smax:=Sdef; writeln ('Smax=',Smax); end.
Окончательный текст программы program Smaxtr; Var xa,ya,xb,yb,xc,yc,a,b,c,Sabc: real; xd,yd,xe,ye,xf,yf,d,e,f,Sdef: real; Smax:real; procedure input (var x1,y1,x2,y2,x3,y3:real); begin writeln ('ввод координат вершин треугольника'); writeln ('введите координаты 1 вершины'); write ('x1='); read (x1); write ('y1='); read (y1); writeln ('введите координаты 2 вершины'); write ('x2='); read (x2); write ('y2='); read (y2); writeln ('введите координаты 3 вершины'); write ('x3='); read (x3); write ('y3='); read (y3); end; function dline (var x1,y1,x2,y2:real):real; begin dline:=sqrt(sqr(x2-x1)+sqr(y2-y1)); end; function geron (var a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; geron:=sqrt(abs(p*(p-a)*(p-b)*(p-c))); end; begin input (xa,ya,xb,yb,xc,yc); input (xd,yd,xe,ye,xf,yf); a:=dline(xb,yb,xc,yc); b:=dline(xa,ya,xc,yc); c:=dline(xb,yb,xa,ya); d:=dline(xe,ye,xf,yf); e:=dline(xd,yd,xf,yf); f:=dline(xd,yd,xe,ye); Sabc:=geron(a,b,c); Sdef:=geron(d,e,f); writeln ('Sabc=',Sabc,'Sdef=',Sdef); Smax:=Sabc; if Sdef>Sabc then Smax:=Sdef; writeln ('Smax=',Smax); end.
Тестовое задание и результаты теста ΔABC A(0,0) B(-1,1) C(1,1) Sabc=1 ΔDEF D(-1,1) E(1,1) F(1,-1) Sdef=2
Задание на самоподготовку 1. Составить программу для вычисления высот треугольника со сторонами а, b, c по формулам: 2. Составить подпрограмму вычисления площади трапеции по основаниям и высоте. Используя эту подпрограмму, найти площади заданных трапеций: a=6,5 b=3,4 h=2,5 a=13,4 b=8,3 h=5,7 a=15,5 b=8,4 h=6,5
Решение задачи на самоподготовку 2. Составить подпрограмму вычисления площади трапеции по основаниям и высоте. Используя эту подпрограмму, найти площади заданных трапеций: 1. a=6,5 b=3,4 h=2,5 2. a=13,4 b=8,3 h=5,7 3. a=15,5 b=8,4 h=6,5 PROGRAM Trapec; Const N=3; var i:integer; a,b,h,s: array[1..N] of real; Procedure STR(a, b, h: real ; var s: real); begin s:=(a+b)/2*h; end; BEGIN for i:=1 to N Do begin writeln('a=',' b=',' h='); readln(a[i],b[i],h[i]); end; for i:=1 to N Do begin STR (a[i],b[i],h[i],s[i]); Writeln (' a=', a[i]:6:2,' b=', b[i]:6:2,' h=', h[i]:6:2); Writeln ( ' s=', s [i]:7:3); end; END.