Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Процедуры с параметрами в языке Pascal. Типы параметров.

Поиск

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

Procedure <имя> [(<список формальных параметров>)];

По структуре процедура почти полностью аналогична программе. Однако в блоке процедуре отсутствует раздел подключения модулей. Блок состоит из двух частей: описательной и исполнительной. В описательной части содержится описание элементов процедуры. А в исполнительной части указываются действия с доступными процедуре элементами программы (например, глобальные переменные и константы), позволяющие получить требуемый результат. Раздел инструкций процедуры отличается от раздела инструкций программы только тем, что после ключевого слова End, завершающего этот раздел, ставится точка с запятой, а не точка.

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

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

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

Параметры, которые записываются в скобках после имени описываемой процедуры называются ФОРМАЛЬНЫМИ ПАРАМЕТРАМИ. После имени формального параметра обязательно указывается его тип.

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

Для выполнения процедуры в программе необходимо осуществить её ВЫЗОВ. Вызов процедуры с параметрами должен быть сопровождён передачей дополнительных данных, необходимых для работы этой процедуры. Таким образом, во время вызова процедуры ФОРМАЛЬНЫЕ (просто занимающие место) параметры должны быть заменены ФАКТИЧЕСКИМИ (реально существующими) параметрами (дополнительными данными).

Параметры, передаваемые процедуре во время её вызова в программе называются ФАКТИЧЕСКИМИ ПАРАМЕТРАМИ. Фактическими параметрами могут быть как непосредственные значения, так и переменные в которых хранятся требуемые значения.

Параметры-значения (Используются для передачи данных из программы в подпрограмму. Из программы в подпрограмму передаётся копия параметра.)

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

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


Процедуры без параметров в языке Pascal.

В практике программирования часто встречаются ситуации, когда по ходу выполнения программы приходится производить одни и те же вычисления или действия. Чтобы исключить повторение одинаковых записей и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся фрагменты в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определённый алгоритм и допускающая обращение к ней из различных частей программы, называется подпрограммой. Использование подпрограмм позволяет реализовать один из самых прогрессивных методов программирования - структурное программирование. Язык программирования Turbo Pascal 7.0, даже в сравнении с другими промышленными системами программирования, обладает очень мощными средствами для работы с подпрограммами.

Единственным отличием процедуры без параметров от Pascal-программы состоит в названии заголовка, которое начинается не служебным словом Program, а служебным словом Procedure. Наличие заголовка процедуры обязательно, в отличии от наличия заголовка программы, который может быть опущен. Кроме того любая подпрограмма заканчивается служебным словом End и точкой с запятой, в отличии от End с точкой в Pascal-программе.

Вызов процедур без параметров.

Вызов процедуры без параметров осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор. При выполнении этого оператора выполняется вся подпрограмма.

Преимущества применения подпрограмм.

  1. Появляется возможность использовать при написании программ, уже готовые, отработанные фрагменты программ, оформленных в виде подпрограмм.
  2. Возможно применение технологии программирования "сверху-вниз". При использовании такой технологии более сложная и громоздкая задача разбивается на ряд простых и маленьких задач, решение которых сводится к написанию подпрограмм, объединяемых, в конечном итоге, в одну программу.
  3. Написание больших программ можно разделить между несколькими програмистами одновременно, объединив после этого подпрограммы, написанные ими, в одну программу.
  4. В результате использования локальных параметров, память используется более рационально, так как память под локальные переменные выделяется только во время работы данной подпрограммы.

Функции в языке Pascal.

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

  1. Function имя (параметры): Тип результата;
  2. раздел описаний
  3. begin
  4. команды
  5. имя функции:=выражение
  6. end;

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

Затем идёт слово begin - начало программы. После идут исполняемые команды. Дальше имени функции присваиваем конечное выражение, то есть возвращаем результат функции, чтобы в дальнейшем можно было бы какой-то переменной присвоить результат выполнения функции. И в конце идёт слово end c точкой запятой.

Типы результата:

Результат функции может быть числом, символом, строкой, логическим выражением. Значение функции не может быть массивом.

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

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

Преимущества функции:

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

2. - Сокращение объёма исходного текста и исполняемого файла.

3. - Удобство отладки - проще отладить маленький кусочек программы, который решает небольшую часть задачи, чем всю программу.

Недостатки функции:

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

2. - Требуется внимательное отношение к использованию переменных программы внутри функции.

Локальные (внутренние) переменные функции:

1. - Создаются в специальной области памяти (стеке) только на время работы функции. Из основной программы недоступны.

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

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

Параметры - Значения функции:

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

Параметры - Переменные

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

2. - Функция работает непосредственно с данными, может изменять их.

3. - Так как копия данных не создаётся, то для экономии времени и памяти рекомендуется объёмные параметры (например, массив) делать параметрами-переменными.

Параметр переменная отличается от параметра значение тем, что перед параметром переменной ставится слово var.




Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 1036; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.209.231 (0.007 с.)