Студопедия — Пример использования процедуры программиста
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример использования процедуры программиста






program Tabsqrt;

Var

i: integer;

procedure Line (n: integer; c: char); {процедура программиста}

Var

i: integer;

Begin

for i: =1 to n do write(c);

Writeln;

end;

begin {основная программа}

Writeln(‘Таблица квадратных корней’);

Line (14, ’=‘);

Writeln (‘число корень’);

Line (14, ’=‘);

for i: =1 to 5 do begin

Writeln (i: 5, ’ ‘, Sqrt(i): 6: 3);

Line (14, ’-‘);

end;

end.

 

Ниже приведен результат работы программы:

 

Таблица квадратных корней

==============

число корень

==============

1 1, 000

------------------------

2 1, 414

------------------------

3 1, 732

------------------------

4 2, 000

-----------------------

5 2, 236

----------------------

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

Если в описании процедуры перед именем параметра стоит слово var, то при вызове процедуры на месте соответствующего параметра должна стоять переменная основной программы. Использование константы или выражения вызовет сообщение об ошибке во время компиляции программы.

 

Параметр-переменная и параметр-значение.

Программист имеет дело с параметрами при описании и при использовании процедур и функций. Различают формальные и фактические параметры.

Параметры, определяемые при описании процедуры или функции, называются формальными параметрами.

Параметры, задаваемые при вызове процедуры или функции, называются фактическими параметрами.

В описании формального параметра перед именем параметра может стоять слово var, показывающее, что параметр является параметром-переменной. Отличие параметра-переменной от обычного параметра (т. е. параметра-значения) состоит в том, что инструкции процедуры или функции могут изменить значение переменной, являющейся фактическим параметром. Использование параметров-переменных позволяет использовать процедуры для изменения значений переменных основной программы.

В следующей программе для вычисления площади круга и длинны окружности по значению радиуса используется процедура программиста SqLeOkr.

Пример использования процедуры программиста

 

program sqring;

Var

{переменные основной процедуры}

r, l, s: real; {радиус, длинна окружности и площадь круга}

{процедура программиста}

procedure SqLeOkr (r: real; var s: real; var l: real);

{r - радиус, s - площадь круга, l - длинна окружности }

Const

pi=3.14159;

Begin

s: =pi*r*r;

l: =2*pi*r;

end;

{основная процедура}

Begin

Writeln (‘Вычисление длинны окружности и площади круга: ’);

Write (‘Задайте радиус и нажмите < Enter> ’);

Readln (‘r’);

l: =0; s: =0;

SqLeOkr (r, s, l);

{переменные программы – фактические параметры процедуры}

Writeln (‘Радиус окружности: ’, r: 6: 3’);

Writeln (‘Длина: ’, l: 6: 3, ’ Площадь: ‘, s: 7: 3);

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

Программа на языке Pascal состоит из основной программы и, возможно, процедур и функций программиста. Каждая из них содержит раздел объявления переменных. Переменные, объявленные в основной программе, доступны всем инструкциям программы, в том числе и инструкциям процедур и функций программиста. Такие переменные называются глобальными.

Переменные, объявленные в процедуре или функции программиста, называются локальными. Локальные переменные доступны только инструкциям той программы (процедуры или функции), в которой они объединены.

program p;

Var

x: integer; {глобальная переменная}

procedure p1;

Var

y: integer; {локальная переменная}

Begin

{здесь можно использовать переменные x и y}

end;

Begin

{здесь можно использовать только переменную x}

{попытка использовать y приведет к сообщению об ошибке}

end.

 

В приведенном примере в процедуре p1 можно использовать переменную у, так как она объявлена в процедуре, и переменную х, так как она объявлена в основной программе и является по отношению к процедуре p1 глобальной переменной. В основной программе можно использовать переменную х. Переменная у в основной программе недоступна, так как она локальная.

Если в процедурах описаны переменные с одинаковыми именами, пусть даже одинакового типа, то это разные переменные, и изменение переменной внутри одной процедуры не меняет значение переменной другой процедуры. Так, в результате работы программы:

 

program p;

Var

i: integer;

procedure proc;

Var

i: integer;

Begin

i: =100;

end;

Begin

i: =1;

proc;

writeln(i);

end.

 

на экран будет выведено число 1, так как процедура proc изменяет только значение локальной переменной i, которое после завершения процедуры уничтожается.

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

program p;

Var

name: string [10]; {переменная основной программы}

procedure GetName;

Begin

Write(‘Ваше имя’);

Readln(name);

end;

begin {инструкции основной программы}

GetName

Writeln(name);

end.

В результате выполнения приведенной программы на экран будет выведена введенная с клавиатуры строка, так как процедура GetName меняет значение глобальной переменной.

 

Процедура или функция?

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

 


procedure SoprPar (r1, r2, r3: real; var sr: real);

 

Begin

sr: =(r1+r2+r3)/(r1*r2*r3);

end;

function SoprPar (r1, r2, r3: real): real;

Var

sr: real;

Begin

sr: =(r1+r2+r3)/(r1*r2*r3);

SoprPar: =sr;

end;


 

Очевидно, что оформление подпрограммы в виде функции в данном случае более предпочтительно, так как целью вычисления является получение только одного значения. Кроме того, инструкция вычисления сопротивления цепи sr: = SoprPar (r1, r2, r3); выглядит более естественно по сравнению с инструкцией вызова процедуры SoprPar (r1, r2, r3, sr);.

 

Возникает вопрос, каким критерием пользоваться при выборе способа оформления подпрограммы?

Ответ можно сформулировать в виде следующего правила:

Если подпрограмма должна изменить значение только одной переменной основной программы, то ее следует оформить как функцию, в остальных случаях подпрограмму следует оформлять как процедуру.

 







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



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

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

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия