КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лабораторная работа. Для использования подпрограммы-процедуры необходимо сначала описать процедуру, а затем обращаться к ней (обращение к процедуре – отдельный оператор)
Функции Процедуры Процедуры и функции Для использования подпрограммы-процедуры необходимо сначала описать процедуру, а затем обращаться к ней (обращение к процедуре – отдельный оператор). Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова procedure, имени процедуры и, заключенного в скобки, списка формальных параметров с указанием типа. Название «формальные» эти параметры получили в связи с тем, что в этом списке заданы только имена для обозначения исходных данных и результатов работы процедуры, а при вызове подпрограммы на их место будут поставлены конкретные значения. Тело процедуры – блок, по структуре аналогичный программе. При создании программ, использующих процедуры, следует учитывать, что все объекты, которые описываются после заголовка в теле процедуры, называются локальными объектами и доступны только в пределах этой процедуры. Все объекты, описанные в вызывающей программе, называются глобальными и являются доступными внутри процедур, вызываемых этой программой. Общий вид описания процедуры: Procedure <имя> (список формальных параметров, блок описания); Const …; ù … ý блок описания Var ….; û begin <операторы> end; Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре сходный с программой. Общий вид описания функции: Function <имя> (<параметры>): <тип результата>; Const …; ù … ý блок описания Var ….; û begin <операторы> end; В разделе операторов должен находиться, хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип. Пример 1: Функция для расчета высоты треугольника по заданным значениям его сторон. Program TR; Var a, b, c, ha, hb, hc: real; Function H_TR(a, b, c: real): real; { a, b, c - Стороны треугольника } Var p, s: real; Begin If (a<0) or (b<0) or (c<0) Then begin Writeln('Стороны треугольника >0?'); readln; Halt end;
If (a>(b+c)) or (b>(a+c)) or (c>(a+b)) Then begin Writeln('a<(b+c), b<(a+c), c<(a+b)?'); readln; Halt end; p:= (a+b+c)/2; { полупериметр } s:= Sqrt(p*(p-a)*(p-b)*(p-c)); { площадь } H_TR:= (2*s)/a; { Присвоение функции значения } End; Begin Writeln('Введите значения сторон треугольника a,b,c'); Readln(a,b,c); ha:= H_TR(a, b, c); hb:= H_TR(b, a, c); hc:= H_TR(c, b, a); Writeln('Высоты треугольника:'); Writeln('ha=',ha:-10:4, 'hb=',hb:-10:4, 'hc=',hc:-10:4); Readln End. В программе трижды вызывается функция расчета высоты треугольника для различных комбинаций фактических параметров, что позволяет вычислить все высоты треугольника.
Пример 2: Перевод десятичного числа в двоичное var a: longint; function DEC_BIN(x:longint):string; const digits:array [0..1] of char = ('0','1'); var res:string; d:0..1; begin res:=''; while (x<>0) do begin d:=x mod 2; res:=digits[d]+res; x:=x div 2; end; DEC_BIN:=res; end; begin { основная программа } readln(a); writeln(DEC_BIN(a)); end.
Пример 3: Возведение целого числа в натуральную степень var x,y:integer; function Degree(a,b:integer):longint; var r:longint; begin r:=1; while b>0 do begin r:=r*a; b:=b-1; end; Degree:=r; end; begin writeln('введите число и (через пробел) степень числа'); readln(x,y); writeln(Degree(x,y)); { print x^y } end.
Пример 4: Нахождения НОД и НОК двух чисел var a,b:longint; function NOD(x,y:longint):longint; { функция поиска наиб. общ. делителя } begin if x<>0 then NOD:=NOD(y mod x,x) else NOD:=y; end; function NOK(x,y:longint):longint; { функция поиска наим. общ. кратного } begin NOK:=(x div NOD(x,y)) * y; end; begin { основная программа } readln(a,b); writeln('НОД этих чисел = ', NOD(a,b)); writeln('НОК этих чисел = ', NOK(a,b)); end.
Задания для работы.
Тесты: 1. Процедуры и функции – это: · операторы · подпрограммы · имена · переменные 2. Рекурсивная функция – это: · повторение выполнения функции или процедуры внутри себя · оператор · цикл · метод определения функции или процедуры 3. Обращение к функции в программе имеет вид: · <имя функции>(<список глобальных параметров>: тип параметров): тип значения; · <оператор функции>; · <имя функции>:= тип значения; · <имя функции>; 4. Обращение к процедуре в программе имеет вид: · <имя процедуры>(<список глобальных параметров>); · <оператор процедуры>; · <имя процедуры>:= тип значения; · <имя процедуры>; 5. Определить результат вычисления функции akk(1,k); если задано ее описание: function akk(m,n:integer):integer; begin if m=0 then akk:=n+1 else if n=0 then akk:=akk(m-1,1) else akk:=akk(m-1, akk(m,n-1)); end; · 2*k · k+3 · 2*k=3 · k+2 6. В некоторой программе описаны переменные: var i:integer; r:real; c:char; Какая из данных процедур или функций может быть вызвана из этой программы с помощью оператора c:=f(i, 5, r, 5*i, c, “r”); · Function f(var a:integer; b:integer; var c:real; d:real; var e:char; g:char); · Function f(var a:integer; b:integer; var c:real; d:real; var e:char; g:char):char; · procedure f(var a:integer; b:integer; var c:real; d:real; var e:char; g:char);
Дата добавления: 2015-05-10; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |