[МУЗЫКА] [МУЗЫКА] Начинаем изучение темы «Процедуры и функции». Первым делом надо понять, что же такое процедуры и функции. Процедуры и функции — это средства, которые служат для организации подпрограмм. Что же такое подпрограмма? Подпрограмма — это логически завершенный фрагмент кода программы, который оформляется отдельно. Если наша с вами задача состоит из нескольких логически обособленных фрагментов, ну, например, ввод данных, вычисление результата и вывод результата, то удобно организовать эти части отдельно. В каких же случаях используют подпрограммы? Во-первых, когда некоторые фрагменты кода программы повторяются несколько раз. Например, ввод нескольких матриц. Тогда мы пишем одну процедуру, а затем вызываем ее для всех разновидностей данных, которые нам нужны, например, для трех матриц. Затем, если у нас большая программа, то для того чтобы код был более нагляден и его проще было анализировать, удобно отдельные фрагменты сделать отдельными подпрограммами. Кроме того, если мы уже отладили некоторую подпрограмму, то мы можем переносить ее из одного проекта в другой, ну и можем даже создавать свои библиотеки подпрограмм, в которые помещаем нужные нам подпрограммы. Например, всё, что касается обработки одномерных массивов. В языке Pascal есть две разновидности подпрограмм. Это процедуры, и это функции. Основное отличие между ними состоит в том, сколько параметров у процедур, и сколько у функций. Схематически изобразим, как выглядит процедура в общем виде, и как в общем виде выглядит функция. Мы с вами видим, что и у процедуры, и у функции может быт один или несколько входных параметров. И также входные параметры могут вовсе отсутствовать. Что же касается выходных параметров, то у процедуры их может быть несколько или один, а также ни одного. А вот у функции обязательно есть всегда один выходной параметр — он на схеме изображен более жирной стрелкой. Этот параметр называется результатом функции, то есть тот результат, который наша функция обязательно вернет. Посмотрим, как в языке Pascal описываются процедуры и функции. Процедура, или функция, — это последовательность операторов, у которой есть имя, список параметров и которая может вызываться из различных частей программы. Любая используемая в программе процедура или функция всегда предварительно описывается в разделе описаний. То есть до того, как вызвать процедуру или функцию, мы должны ее описать. Из этого правила есть некоторое исключение, которое мы рассмотрим позже. И рассмотрим описание процедуры в общем виде. В общем виде описание процедуры выглядит так: ключевое слово «процедура», procedure, затем следует обязательно имя, а затем может быть список формальных параметров. Этот список может быть пропущен, поэтому в нашем общем виде он заключен в квадратные скобки. И завершается наша процедура end, но не с точкой, как программа, а с точкой с запятой. Описание функции отличается от описания процедуры и имеет следующий вид: ключевое слово «функция», function, затем имя. Далее может следовать список формальных параметров, а затем обязательно двоеточие, и указывается тип результата, который возвращает наша функция. Далее опять, как и в процедуре, раздел описаний, который может отсутствовать, и затем тело функции. В отличие от процедуры, в теле функции должен быть хотя бы один оператор, который возвращает результат. То есть либо имени функции, либо ключевому слову result, которое мы с вами позже рассмотрим подробнее, должно быть присвоено значение, которое является результатом функции. Затем следует сказать, что операторы подпрограммы, которые заключены в операторные скобки, образуют тело подпрограммы процедуры или функции. И как мы уже сказали, список формальных параметров как у процедуры, так и у функции может отсутствовать, тогда скобки отсутствуют тоже, и в этих списках располагается одна или несколько секций, которые разделяются символом точка с запятой. Каждая секция содержит в себе список переменных, имена которых перечисляются через запятую, а затем следует двоеточие и тип переменных в этой секции. Каждая секция может предваряться либо нет служебным словом var от слова variable — переменная. Если это слово присутствует, то тогда наши параметры передаются по ссылке, иными словами говоря, это параметры переменной. И важно понимать, что действие ключевого слова var будет распространяться только на ближайшую группу переменных, которые имеет один тип. Например, если мы имеем заголовок процедуры p1, и у нас есть две секции: в первой находятся переменные b и c вещественного типа, а во второй находится переменная d. Действие ключевого слова var распространяется только на первую группу. Иными словами говоря, b и c будут параметрами переменными и передаваться по ссылке, а d будет параметром значения. [МУЗЫКА] [МУЗЫКА]