Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Подпрограммы. Локальные и глобальные переменные




END.

BEGIN

BEGIN

END.

BEGIN

WriteLn(perimetr(10,4)+ perimetr(20,30)+ perimetr(3,8));

Функцииочень похожи на процедуры. Но функция в отличие от процедуры обладает некоторыми свойствами переменной величины и поэтому описание функции отличается от описания процедуры следующими двумя вещами:

· В заголовке функции после скобок с формальными параметрами должен быть указан тип функции (у нас это Integer).

· Внутри описания функции между BEGIN и END ей хотя бы раз должно быть присвоено какое-нибудь значение (у нас это perimetr:=2*(dlina+shirina)).

 

Рассмотрим более сложный пример. Вспомним задачу из 12.3 о среднегодовой температуре, где исходными данными является массив из 365 значений температуры. Попробуем узнать, в январе (дни 1-31) или в декабре (дни 335-365) самый теплый день месяца был теплее. Мы можем предвидеть, что для вычисления понадобятся два похожих фрагмента программы, каждый длиной строчки по три-четыре. Чтобы не писать два раза похожие фрагменты, создадим функцию нахождения максимального элемента из заданного диапазона массива температур. Назовем ее max. Используя ее, мы можем в программе записать, например, так: u:=max(20,30), подразумевая, что переменной u должно быть присвоено значение максимального элемента массива температур, выбирая из элементов с 20-го по 30-й. Вот программа:

VAR t: array [1..365] of Integer; { t - массив температур за год}

FUNCTION max (perv,posledn:Word):Integer;

VAR i,m:Integer;

m:=t[perv];

for i:=perv+1 to posledn do if t[i]>m then m:=t[i];

max:=m

END;

........ {Здесь присваиваем значения элементам массива температур}

if max(1,31)>max(335,365) then WriteLn(‘В январе’) else WriteLn(‘В декабре’);

Задание 120: В Паскале не хватает функции для вычисления произвольной целой степени числа. Создайте функцию Power такого смысла: Power(2,3) должна иметь значение 23, то есть 8.

Задание 121: Если вы никак не можете смириться с системой координат графического режима, то напишите пару простеньких функций (например, с именами x и y), которые позволят вам считать, что отныне ось yнаправлена вверх, а центр координат расположен в центре экрана. Если вы правильно напишете эти функции, то, например, оператор Circle (x(310), y(230), 10) нарисует вам кружочек в правом верхнем углу экрана.

Будем называть процедуры и функции подпрограммами, так как они входят внутрь программы.

 

Деление переменных на локальные и глобальные является способом повышения надежности больших программ и понижения вероятности запутаться при их написании. Программы, создаваемые сегодня профессиональными программистами, очень велики - десятки и сотни тысяч строк. Таково, например, большинство игровых программ. Естественно, один человек не может достаточно быстро создать такую программу, поэтому пишется она обычно большой группой программистов. Для этого программа делится на десятки и сотни подпрограмм, и каждый программист пишет одну или несколько подпрограмм.

Исследуем взаимодействие подпрограмм в такой программе. Для этого рассмотрим глупую простую "сложную" программу А, вся задача которой - выполнить по порядку следующие вещи:

1) присвоить значение 5 переменной х,

2) затем вызвать процедуру В, зачем-то возводящую 10 в квадрат и печатающую текст "Результат равен ",

3) и наконец, напечатать значение х:

VAR x,y: Integer;

PROCEDURE B; BEGIN y:=10*10; Write('Результат равен ') END;




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 340; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.