Remkomplekty.ru

IT Новости из мира ПК
13 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Паскаль ожидалось имя процедуры или функции

Урок 14. Описание и вызов процедуры

Урок из серии: «Язык программирования Паскаль»

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

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

На этом уроке вы научитесь определять и вызывать пользовательские процедуры.

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

В разделе описаний процедуры и функции определяют после раздела описания переменных (после раздела Var) и до до начала раздела операторов (до слова Begin).

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

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

Общий вид процедуры:

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

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

Через параметры- переменные из подпрограммы в основную программу передаются результаты. Перед параметрами-переменными ставится служебное слово Var.

Вызов процедуры

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

Общий вид вызова процедуры:

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

Пример 1. Оформить в виде процедуры алгоритм вычисления степени y = x n с натуральным показателем n.

Процедура имеет три параметра: первый параметр — основание степени, второй — показатель степени, а третий — это результат. Поэтому первые два параметра — это параметры значения, а третий — это параметр-переменная и перед ним надо написать слово Var.

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

Процедура вызывается по имени. В нашем примере, фактические параметры а, n и s передают свои значения соответствующим формальным параметрам x, y и st. После завершения работы процедуры переменные a и n имеют те же значения, что и при вызове, а s получает новое значение.

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

Pascal. Процедуры и функции

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

Описываются подпрограммы между разделом описания переменных и началом тела основной программы. Так выглядит структура всей программы в Pascal:

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

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

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

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

Читать еще:  Язык си приведение типов

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

Процедура:

Вызов процедуры:
( );

Функция:

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

Теперь более детально рассмотрим в отдельности каждый вид подпрограмм.

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

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

Напишем пример программы, показывающей принцип работы простой процедуры.

Программа выводит сумму целых чисел заданного диапазона. Имя процедуры прописано после служебного слова, определяющего, что создана именно процедура. Далее идет заголовок, где первые две переменные – это формальные параметры, в которые передается значение от фактических k и n. Переменная rez возвращает результат и называется параметром-переменной (определяются после слова Var), а k и n – параметрами-значений. Локальная переменная – i, она описана сразу после заголовка процедуры. Вызывая, в основной части программы процедуру sum, в качестве передаваемых параметров мы указали три целочисленных переменных. Заметьте, что их количество соответствует числу формальных параметров. Порядок также важен, т. е. в переменную pk передается значение переменной k, в pn значение n и т. д.

В вышеизложенном примере было бы вполне уместным не использовать параметр-переменную rez, а определить ее локально. В этом состоит различие между процедурами и функциями в Pascal.

Пользовательские функции

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

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

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

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

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

Паскаль ожидалось имя процедуры или функции

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

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

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

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

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

Читать еще:  Паскаль с нуля

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

Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.

Формат описания процедуры имеет вид:

Формат описания функции:

Формальные параметры в заголовке процедур и функций записываются в виде:

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

Вызов процедуры производится оператором, имеющим следующий формат:

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

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

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

При вызове процедур и функций необходимо соблюдать следущие правила:

  • количество фактических параметров должно совпадать с количеством формальных;
  • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными — они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

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

Аналогичную задачу, но уже с использованием функций, можно решить так:

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

#14 Процедуры и функции в Паскаль. Как объявлять и использовать

Primary tabs

Forums:

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

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

Различия между процедурами и функциями в Паскаль:

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

Сигнатура процедур и функций

Процедуры и функции принимают какие-то значения «на вход» — это те данные, с которыми процедура или функция будут работать.

Сигнатура — характеристика функции, которая говорит о том, что нужно передавать в функцию и на результат какого типа следует рассчитывать после её выполнения.
Или, если речь идёт о процедуре — то просто «данные каких типом нужно передать в процедуру, чтобы она сработала»

Вызов процедуры и её сигнатура

Сигнатура процедуры определяется:

  1. Именем процедуры
  2. Числом, типом входящих переменных и их порядок следования

Например, рассмотрим реализацию процедуры $sum1()$, которая складывает два числа и выводит сумму на экран:

Иллюстрацией к сигнатуре этой процедуры служит её заголовок:

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

Вызов функции и её сигнатура

Сигнатура функции определяется:

  1. Именем функции
  2. Числом, типом входящих переменных и их порядок следования
  3. Типом возвращаемого значения

Процедуры

Рассмотрим пример программы с процедурой:

  • переменная $z$ в процедуру $sum()$ передана по ссылке, это значит, что если её изменить в теле процедуре, то она изменится и в том месте, откуда её передали в процедуру (например, в теле основной программы).
  • Переменные же $x$ и $y$ переданы по значению — это надо понимать так, что если их значения будут изменяться внутри процедуры (в данном случае), то «снаружи» эти изменения видны не будут.
Читать еще:  Значение массива паскаль

Функции

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

Примеры кода — разбор решений

Пример №1 — функция не принимающая аргументов

Напишите функцию, которая не принимает аргументов и возвращает число $55$

Пример №2 — функция: входящие аргументы разного типа, локальные переменные подпрограммы

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

Решение:

Задачи для самостоятельного решения

  1. Напишите функцию, которая возвращает сумму трёх целых чисел.
  2. Напишите процедуру, которая выводит на экран сумму трёх целых чисел.
  3. Напишите процедуру, которая принимает переменную целого типа по ссылке, просит пользователя ввести значение в консоли и инициализирует переменную этим значением (убедитесь, что в теле программы значение изменилось).

Источники и полезные материалы:

Урок 14. Описание и вызов процедуры

Урок из серии: «Язык программирования Паскаль»

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

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

На этом уроке вы научитесь определять и вызывать пользовательские процедуры.

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

В разделе описаний процедуры и функции определяют после раздела описания переменных (после раздела Var) и до до начала раздела операторов (до слова Begin).

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

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

Общий вид процедуры:

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

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

Через параметры- переменные из подпрограммы в основную программу передаются результаты. Перед параметрами-переменными ставится служебное слово Var.

Вызов процедуры

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

Общий вид вызова процедуры:

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

Пример 1. Оформить в виде процедуры алгоритм вычисления степени y = x n с натуральным показателем n.

Процедура имеет три параметра: первый параметр — основание степени, второй — показатель степени, а третий — это результат. Поэтому первые два параметра — это параметры значения, а третий — это параметр-переменная и перед ним надо написать слово Var.

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

Процедура вызывается по имени. В нашем примере, фактические параметры а, n и s передают свои значения соответствующим формальным параметрам x, y и st. После завершения работы процедуры переменные a и n имеют те же значения, что и при вызове, а s получает новое значение.

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

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×