Третий вопрос (подпрограммы)
1. Что такое подпрограмма?
Подпрограммы – это участки кода, имеющие собственное имя и вызываемые из основной программы в любой момент времени, служащие для многократного исполнения однотипных задач, без необходимости повторно переписывать готовый код. Они бывают двух видов – функции и процедуры.
2. Что такое параметры подпрограммы?
Параметры подпрограммы – это значения, переданные этим подпрограммам из основной программы, которым внутри подпрограммы присваивается уникальное имя, что позволяет сделать подпрограмму универсальной и использовать для обработки разных данных (переменных, массивов и прочего).
3. Как можно подробнее опишите правила объявления процедуры.
Подпрограммы пишутся ДО тела основной программы, однако ПОСЛЕ настроек (задания констант, переменных и прочего).
Формат описания процедур:
procedure имя процедуры (параметры);
раздел описаний процедуры
begin
исполняемая часть процедуры
end;
Пример:
procedure One (var a,b: integer);
var temp: integer;
begin
temp:=a;
a:=b;
b:=temp;
end;
4. Как можно подробнее опишите правила объявления функции.
Подпрограммы пишутся ДО тела основной программы, однако ПОСЛЕ настроек (задания констант, переменных и прочего).
Формат описания функций:
function имя функции (параметры):тип результата;
раздел описаний функции
begin
исполняемая часть функции
end;
Пример:
function Tow (a,b,c: integer;): real;
const K=3;
begin
Tow:=(a+b+c)/K;
End;
5. Правила вызова процедур и функций.
Вызов процедуры осуществляется простым упоминанием её имени в тексте программы. Если процедура имеет параметры, при её вызове в скобках нужно указать данные, которые передаются в качестве этих параметров, разделяя их запятыми. Данные должны быть тех же типов, в том же количестве и идти в том же порядке, как они описаны в заготовке процедуры.
Пример: One (i,j);
Вызов функции очень похож, но за счёт того, что функция выдаёт результат, он слегка отличается. Его логично использовать как часть выражения или параметра другой подпрограммы.
Примеры:
c:=Tow(i,j,k);
c:=a+b+Tow(i,j,k);
write(Tow(i,j,k));
6. Как передавать одномерные массивы в качестве параметра подпрограммы?
Безразмерный (динамический) массив. Записывается он так:
Procedure One (Arr: array of integer);
Как Вы видите, размерность массива здесь не указана и таким образом, она будет подобрана автоматически, в зависимости от передаваемого массива. Это очень удобно, поскольку позволяет использовать этот способ для передачи в одну процедуру массивов разного размера.
Недостатком такого способа является то, что его нельзя использовать для многомерных массивов, этим способом можно передать лишь одномерный массив. Другой недостаток – это сбивание нумерации элементов. Поскольку номера ни первого ни последнего элемента не заданы, Pascal назначает их автоматически и делает он это начиная с нуля. Таким образом, если нумерация Вашего массива была от 1 до N, то после передачи в подпрограмму она станет от 0 до N-1.
7. Как передавать многомерные массивы в качестве параметра подпрограммы?
Создание нового типа переменной! В параметрах программы (после const но до var), можно создавать свой тип переменной, сделав его массивом заданного размера. Делается это так:
Type Имя_типа = array [1..N,1..M] of real
После этого Вы объявляете массив присваивая ему уже этот, новый тип и не указывая размерность:
Mas: Имя_типа
Если представить, что имя типа мы задали Massiv, то объявление подпрограммы будет выглядеть так:
Procedure One (Arr: massiv);
Такой способ позволяет передавать в качестве параметра массивы с любым количеством измерений и многомерные массивы можно передать только так. Недостатком же этого способа является то, что количество измерений и размеры передаваемых массива должны совпадать с принимаемым массивом, т.е. этим способом в подпрограмму можно передать лишь одинаковые массивы.
8. В чём радикальное отличие подпрограммы от цикла?
Подпрограммы заменяют циклы, так как для их вызова (или выполнения) необходимо указать лишь их имена (с параметрами) в основном теле программы, а цикл в необходимый момент необходимо переписывать нано
9. В чём отличие между процедурами и функциями?
Функции отличаются от процедур тем, что не только выполняют заданные в них действия, но по окончании выполнения выдают какой-либо результат, в виде данных заданного типа.
10. Ключевое слово var при объявлении подпрограммы.
Данные и переменные, используемые в процедурах и функциях, указываются в основном обьявлении переменных основной программы ключевым словом var. Нет необходимости обьявлять эти данные еще раз в подпрограмме. Однако, когда есть необходимость в процессе выполнения программы, передавать процедуре/функции переменные для обработки, необходимо при обьявлении подпрограммы в скобках указать ключевое слово var и затем те переменные, которые будут принимать другие значения в процессе выполнения. Честно, Лиза, это немного бред, но я хз, что еще можно здесь написать.