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

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

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






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

Самостоятельная часть программы, реализующая определенный алгоритм и допускающая обращение к ней из различных частей общей программы, называется подпрограммой (процедурой) или вспомогательным алгоритмом (КуМир). Различают процедуры - операторы и процедуры – функции. В последнем случае в теле описания процедуры ее имени присваивается некоторое значение. При вызове процедуры – функции имя функции (как любая переменная) возвращает некоторое значение и его можно использовать в тех же конструкциях языка, что и значение, возвращаемое обычной переменной. Если возвращаемое функцией значение не используется, как правило, допускается вызов процедуры – функции по правилам вызова процедуры – оператора.

Использование процедуры состоит из двух шагов.

Сначала в разделе описаний (в языке Pascal) или в какой-либо части программы описывается алгоритм подзадачи в виде процедуры, снабженной именем. (В языке КуМир любой алгоритм имеет имя и может быть использован в качестве вспомогательного.)

Если в разделе описаний (в языке Pascal) или в какой либо части программы описана какая-либо процедура, то в разделе операторов (исполняемой части) или в другой процедуре можно вызывать эту процедуру по имени любое количество раз.

Рассмотрим простейший пример.

Пример 0‑1

(Pascal)


Program pr1;

procedure my;

begin

writeln(‘Иллюстрируем использование процедуры.’);

end;

begin

writeln(‘Начало исполняемой части.’);

my;

my;

end.


Результатом работы данной программы будут три сообщения на экране монитора:

Начало исполняемой части.

Иллюстрируем использование процедуры.

Иллюстрируем использование процедуры.

 

Пример 0‑2

(Pascal)


Program pr2;

function my: integer;

begin

my:=2;

end;

begin

writeln(‘Начало исполняемой части.’);

writeln(‘Иллюстрируем использование функции.’, ‘ my=’, my);

end.


Результатом работы данной программы будут следующие сообщения на экране монитора:

Начало исполняемой части.

Иллюстрируем использование функции. my=2

 

Первоначально подпрограммы использовались только тогда, когда в программе или в других программах необходимо было многократно решать одну и ту же подзадачу. Благодаря механизму процедур можно было один раз решить задачу, оформить ее в виде подпрограммы, а затем вызывать подпрограмму по имени в нужном месте основной программы или даже в других программах. С развитием программного обеспечения программисты столкнулись еще с одной проблемой. Современные программные продукты стали достигать столь больших объемов, что одному человеку в приемлемые сроки невозможно создать такую программу. Сегодня программные продукты создаются большими коллективами программистов. В этих условиях стало важно, чтобы отдельные группы программистом могли решать подзадачи одного проекта относительно независимо друг от друга. В первых компиляторах Basic, например, нельзя было использовать одно и то же имя переменной или константы в разных подпрограммах для разных целей. Для устранения трудностей, возникающих при параллельной работе разных программистов над одним проектом, современные языки программирования разрешают любой процедуре вводить для своих внутренних потребностей любые допустимые в языке типы и программные объекты, причем соблюдается принцип локализации. Суть этого принципа состоит в том, что имена, вводимые в употребление в какой-либо процедуре, имеют силу только в пределах данной процедуры. Такие переменные получили название локальных переменных процедуры. Значения этих переменных хранятся в памяти компьютера только в период вызова (выполнения) процедуры, причем, если в основной программе встречается переменная (глобальная) с тем же именем, что и у локальной переменной, то значение глобальной переменной сохраняется.

Материал выше прочитан.

Пример 0‑3

(Pascal)

Program pr3;

procedure my_variable;

var

a: integer; раздел описания процедуры

begin

a:=19; исполняемая часть

writeln(‘Значение 2a =’, 2*a); процедуры раздел описания программы

end;

var

a: integer;

begin

writeln(‘Начало исполняемой части.’);

a:=5

writeln(‘a =’, a); исполняемая часть программы

my_c_variable;

writeln(‘a =’, a);

end.

Результатом работы данной программы будет сообщение и значение выражения на экране монитора:

Начало исполняемой части.

a = 5

Значение 2a =38

a=5

 

Модель памяти ЭВМ. Несмотря на то, что имена у переменных одинаковые, физическая память, хранящая значение локальной и глобальной величины разная

 
 

 

 


 

Пример 0‑4

(Pascal)


Program Pr4;

var

a: integer

procedure my_c_variable;

begin

a:=19

end;

begin

writeln(‘Начало исполняемой части.’);

a:=5;

writeln(‘a =’, a);

my_c_variable;

writeln(‘Новое значение a =’, a);

end.


Результатом работы данной программы будет сообщение и значение выражения на экране монитора:

Начало исполняемой части.

a = 5

Новое значение a =19


Здесь есть только глобальная величина a.

 

Автоматическая передача данных в процедуру осуществляется с помощью процедур с параметрами. При решении задач имеются данные двух видов: исходные данные, которые необходимо знать, чтобы решить задачу (аргументы), и результаты. Соответственно, параметры в процедурах могут быть: параметры-значения (параметр по значению), которые передаются в процедуру (аргументы) и параметры-переменные (параметр по ссылке), значения которых передаются в основную программу (результаты). Если параметр является и аргументом и результатом, то он описывается как параметр–переменная.

Пример 0‑5

(Pascal)


Program pr5;

procedure my_c_variable (c: integer; var b, e: integer);

var

a: integer;

begin

a:=19;

b:=c+27;

e:=b+a;

end;

var a, b, c, e: integer;

begin

writeln(‘Начало исполняемой части.’)

a:=5;

b:=6;

c:=7;

my_c_variable (12, b, e);

writeln(‘a =’, a, ‘b =’, b, ‘c = ’, c, ‘e = ’,e);

end.


Результатом работы данной программы будет сообщение и значения на экране монитора:

Начало исполняемой части.

a = 5 b = 39 c=7 e=58

В рассмотренном примере имена формальных параметров совпадают с именами фактических параметров.







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



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

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

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

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