Что такое процедура в программе

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

Процедура (подпрограмма) – большой (более или менее) фрагмент кода, который описан специальным образом один раз, но может вызываться из разных мест программы. Процедурами, а точнее – вызовами стандартных процедур, являются многие «популярные» команды, такие, как команды ввода/вывода (write, writeln, read и readln).

Описание и вызов процедур

Следует различать описание и вызов процедур.

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

Информатика. Язык Pascal: Процедуры и функции в Pascal. Центр онлайн-обучения «Фоксфорд»

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

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

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

Функции

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

m:= round( i/j + frac(q) );

Их описание и применение несколько отличается от описания и применения просто «чистых» процедур.

Во многих современных версиях языков программирования, функции могут использоваться как процедуры. Например:

while keypressed do readkey;

Обратное — неверно. Неверный пример:

x:= z+read(z); Процедуры можно разделять по нескольким критериям. В данном случае, говоря о стандартных процедурах, процедуры неявно различаются по месту расположения кода.

#5 PYTHON: ФУНКЦИИ И ПРОЦЕДУРЫ

А именно: * стандартные добавляются в программу автоматически, пример – write; * стандартные библиотечные требуют указания в программе на необходимость подключения дополнительных системных библиотек (пример – keypressed, readkey, delay из CRT); * дополнительные библиотечные требуют установки в системе и подключения в коде программы дополнительных библиотек (пример – circle, setfillstyle, getcolor из graph или из нашей библиотеки oglgraph); * собственные библиотечные требуют создания, установки в системе и подключения в коде программы дополнительных библиотек; * локальные описываются в программе. Библиотеки могут * поставляться изначально как стандартные, в составе инструментов разработчика вместе с компилятором, отладчиком и т.д. * создаваться программистом или его коллегами для себя; * создаваться и распространяться некоторой третьей стороной.

Читайте также:
Как выгрузить антивирусную программу

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

Пример, на примере сортировки массива по возрастанию значений с помощью сортировки выбором. Идея сортировки в следующем: Массив рассматриваем как состоящий в каждый момент работы программы из двух частей — сортированной и несортированной. Сами части будут меняться! В начале считаем, что несортированная часть занимает весь массив, а сортированная — всё остальное, 1) Находим максимальный во всём массиве элемент. В рассматриваемой части массива uses allForSorting; Библиотека «Всё для сортировки».

// Скорее всего — не существует в реальности. // Содержит ВСЁ (происхождение чего мы не хотим объяснять)
n=1000; // Размер массива. Выбран по принципу — «а почему бы и нет?»
ArrayType = array[1..N] of integer; // Описание типа («устройства») сортируемого массива
SortedA : ArrayType; // Объявление самого сортируемого массива

FillArray (SortedA); // Заполняем наш массив начальными значениями PrintArray(SortedA); // Показываем, что получилось. SortArray (SortedA); // Сортируем наш массив «таинственным способом». PrintArray(SortedA); // Показываем, что получилось

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

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

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

Вызов процедуры – применение ранее описанного алгоритма к конкретно указанным объектам уже при работе программы.

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

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

Читайте также:
Топ программ для дизайна одежды

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

Большинство языков программирования позволяют оформлять многократно используемый код в виде процедур и/или функций. Целью написания процедур может быть:

минимизация написания повторяющегося кода — когда программисту приходится несколько раз разрабатывать и описывать идентичные последовательности команд, решающих одинаковые задачи, подразумеваются излишние затраты времени разработчика; минимизация включения повторяющегося кода — когда в программу включается в различных местах программы множество одинаковых или практически одинаковых фрагментов;

Источник: wiki.nsunc.com

5. Подпрограммы (процедуры и функции)

Подпрограмма – относительно самостоятельная часть программы, имеющая свое имя и выполняющая определенные действия.

Подпрограммы повышают надежность и наглядность программ, т.к. позволяют разрабатывать и отлаживать каждый блок программы независимо (например, разными людьми).

Структура подпрограммы почти полностью повторяет структуру всей программы и состоит из следующих частей:

  • заголовок подпрограммы
  • раздел описаний
  • тело подпрограммы

5.1 Процедуры

procedure (список формальных параметров); ; begin тело процедуры>; end; Пример 1: Процедура вычисления и вывода на экран куба числа. procedure cub(x: real); var y: real; begin y:=x*x*x; writeln(y); end; Указание имени процедуры в программе приводит к активизации процедуры и называется ее вызовом. Сразу после активизации процедуры начинают выполняться входящие в нее операторы.

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

Например: cub(5); … readln(z); cub(z); Для обмена информацией между основной программой и процедурой используются параметры, которые придают процедуре универсальность. Пример 2: Программа, выводящая на экран следующее: ********* a=1 b=1 ********* a=2 b=4 ********* a=3 b=9 ********* a=4 b=16 ********* var a,b: integer; procedure Stars; var i: integer; begin for i:=1 to 9 do write(‘*’); writeln; end; begin Stars; for a:=1 to 4 do begin b:=sqr(a); writeln(‘a=’,a,’ b=’,b); Stars; end; end. Пример 3: var a,b: integer; procedure Stroka(ch: char, n: integer); var i: integer; begin for i:=1 to n do write(ch); writeln; end; begin Stroka(‘+’,4); for a:=1 to 3 do begin b:=sqr(a); writeln(‘a=’,a,’ b=’,b); Stroka(‘*’,8); end; end. Разберем вызов процедуры Stroka(‘*’,8): ‘*’ и 8 – фактические параметры (т.е. те, которые указаны в скобках после имени процедуры при ее вызове), они присваиваются при вызове формальным параметрам ch и n (т.е. тем, которые указаны в скобках после имени процедуры при ее описании). Замечание: количество, порядок и тип параметров при вызове процедуры должны совпадать с количеством, порядком и типом параметров, заданным при описании процедуры. Результат на экране: ++++ a=1 b=1 ******** a=2 b=4 ******** a=3 b=9 ********

Источник: studfile.net

Чем отличаются понятия функции, процедуры и метода в программировании?

Периодически вижу все 3 определения. Это одно и то же или же что-то разное, и какое из понятий правильнее всего употреблять?

  • Вопрос задан более трёх лет назад
  • 76080 просмотров

Комментировать
Решения вопроса 2

Функция — подпрограмма, выполняющая какие-либо операции и возвращающая значение.
Процедура — подпрограмма, которая только выполняет операции, без возврата значения.
Метод — это функция или процедура, которая принадлежит классу или экземпляру класса.

Ответ написан более трёх лет назад
Нравится 30 5 комментариев

Читайте также:
Сколько весит кербал спейс программ

Забыли сказать, что у функции, процедуры и метода должно быть имя и параметры (или ничего, но скобки нужны в любом случае)

MaxLich, Ничего я не забыл. Это не имеет отношения к вопросу. Вопрос был: чем отличаются. А то что функция/процедура/метод имеет имя и список рациональных параметров это и так очевидно. Скобки — это вообще деталь реализации.

mashletov

«Процедура», имхо, устаревшее понятие. Просто функция, которая не возвращает ничего (void). Это еще во времена Delphi процедура имела отдельное ключевое слово.

D3lphi, Ну я-то про определения, которые Вы дали. Это не просто подпрограмма, а подпрограмма, имеющая имя. Инициализатор (в джаве), например, тоже блок кода, подпрограмма, но имени не имеет, и параметров тоже, поэтому это не функция/метод.

MaxLich, это не определения, а лишь то, чем эти понятия отличаются друг от друга.
Функция/процедура не обязана иметь имя — анонимные функции, как пример.

jenki

Всё это можно свести к понятию — подпрограмма. Бывает, читаешь книгу, там автор пишет о своём куске кода как о методе, потом его начинает называть функцией.

Ответ написан более трёх лет назад
Комментировать
Нравится 6 Комментировать
Ответы на вопрос 4

mindtester

Cheetah vs Robodog - Zoo Robot Research testing world 1st - Sydney Behind the scenesCheetah vs Robodog — Zoo Robot Research testing world 1st — Sydney Behind the scenes

Функция — подпрограмма, выполняющая какие-либо операции и возвращающая значение.
Процедура — подпрограмма, которая только выполняет операции, без возврата значения.
Метод — это функция или процедура, которая принадлежит классу или экземпляру класса.

как бы да, но. только на самом начальном этапе, что бы угомонить хаос в голове новичка ))

в дальнейшем, все интереснее все эти понятия контекстно зависимые, контекстом является парадигма программирования и/или конкретный язык

1 — в контексте парадигм, из данных понятий уникально одно Метод, как уже было сказано D3lphi, это нечто принадлежащее классу. класс, в свою очередь, это фундаментальное понятие ООП основанного на классах (шарм ситуации в том, что ООП бывает тоже разное ;))

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

но .. есть много языков, где понятия метод нет вообще

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

2 — из контекста языков:

понятие процедура в явном виде, чаще всего употребляют преподаватели, которые сами учились на языках типа Fortran, Pascal или родственных, и либо не имели другого опыта вообще, либо иной опыт был на много скромнее

сейчас доминируют языки, основывающиеся на Си синтаксисе, даже java и js в данном вопросе станут родственниками классического Си

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

смешение всего этого на примере C# — в этом языке, все есть объект. а любой исполняемый код это метод, и методы реализуются только функциями (в тч void функциями)

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru