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

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

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






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

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

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

Сначала в разделе описаний (в языке 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; просмотров: 734. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

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

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

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

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

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