trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

2. Функции.

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

function имя[(формальные_параметры)]: тип_результата;

Пример: Function Proverka(X, Y, I: integer): real; Function Logic: boolean;

   Отличительные особенности функции следующие:

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

   Тело функции представляет собой локальный блок, по структуре аналогичной программе:
function имя [(формальные_параметры)]: тип_результата;
<разделы_описаний>
begin
<раздел_операторов>
end;

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

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

   Вызов функции может осуществляться в выражении в виде обозначения функции, например:
........
Y := Func(10); { вызов функции Func, вычисленное значение функции хранится в переменной Y }
........

или иначе: WriteLn('Значение функции ', Func(10));

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

Пример: Программа нахождения частного от деления двух чисел с использованием процедуры и функции.
В программе DoRatio используется процедура ввода двух чисел и функция, определяющая отношение этих чисел.
[program DoRatio]

Пример: Программа вычисления скорости падения тела за первые 10 секунд полета с шагом 0.5 секунд.
[program Speed]

      2.1. Рекурсия.

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

   Не следует избегать использования рекурсий. Это полезный прием программирования. Использование рекурсии позволяет проводить в жизнь любимую программистами стратегию "разделяй и властвуй".

Пример: Программа вычисления факториала числа с применением рекурсии. Выход из программы - ввод любого числа меньше 0 или больше 20. Факториал числа N определяется как произведение целых чисел от 1 до N и обозначается N!. N!=1*2*3*...*(N-1)*N. Приведенное выражение можно переписать так: N!=N*((N-1)*(N-2)*...*3*2*1)=N*(N-1)!.
[program Factorial]

Пример: Программа вычисления факториала числа с применением рекурсии. Выход из программы - ввод любого числа меньше 0 или больше 600. Программа, аналогичная предыдущей. Однако значительно расширен диапазон вычисления факториала за счет использования опций компилятора {$E+}, {$N+}.
{$N+} - Глобальная область действия. Режим генерации операторов для обработки вещественных чисел:
1) без использования сопроцессора - {$N-};
2) с использованием сопроцессора - {$N+}.
{$E+} - Глобальная область действия. Режим подсоединения из системной библиотеки модулей, эмулирующих работу с числами с плавающей точкой. Требует наличия опции {$N+}.
[program Factor1]

Пример: Программа, использующая рекурсивную функцию, предназначенную для вычисления наибольшего общего делителя двух положительных целых чисел.
[program NOD]

[НАЗАД]    [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz