Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Обращение к функциям (вызов функций)Содержание книги
Поиск на нашем сайте
Синтаксически вызов функции не отличается от вызова процедуры:
Но вызов функции не является оператором. Обратиться к функции можно всюду, где допустимо использование значения типа, возвращаемого функцией. Обращение к функции может быть операндом в выражении, фактическим параметром-значением. Пример 3. Программа для проверки, упорядочена ли по невозрастанию данная целочисленная последовательность длиной не больше 100: Program sort_check; const MaxLen=100; type t_range =1.. MaxLen; t_vect= array[t_range] of integer; function is_sort(a: t_vect; n: t_range): boolean; {Логическая функция проверяет, упорядочена ли по невозрастанию последовательность a длины n} var i: t_ range; begin i:=2; while (i<=n) and (a[i-1]>=a[i]) do i:= i+1; is_sort:= i>n end; var i, n: t_range; a: t_vect; begin write(‘Введите длину последовательности£’, MaxLen); read(n); writeln(‘Введите члены последовательности’); for i:= 1 to n do read(a[i]); if is_sort(n, a) then writeln(‘ Последовательность упорядочена’) else writeln(‘ Последовательность неупорядочена’) end.
Побочный эффект функций
Основное назначение функции - возвращение значения в точку вызова, но функция так же, как и процедура, может изменять значения своих параметров-переменных. Такие функции называются функциями с побочным эффектом. Пример 4. Описание логической функции поиска элемента, равного x, в целочисленном массиве а длиной n £100. В качестве побочного эффекта параметру i присваивается номер первого из элементов, равных х. Используем типы, описанные в примере 3: function el_search(a: t_vect; n: t_range; x: integer; var i: t_range): boolean; begin i:=1; while (i<=n) and (x<>a[i]) do i:= i+1; el_search:= i<=n end;
Рекурсивные подпрограммы
В математике рекурсией называется способ описания функций или процессов через самих себя. Например,
В некоторых языках программирования, в том числе и в Паскале, допустимо, чтобы подпрограмма вызывала себя. Такие подпрограммы называются рекурсивными. Рекурсивная подпрограмма обязательно удовлетворяет двум требованиям: 1) имеет нерекурсивный выход; 2) при каждом рекурсивном обращении задача упрощается, приближаясь к нерекурсивному решению. При решении некоторых задач можно использовать как рекурсивный, так и итеративный алгоритм. Преимущество рекурсивных подпрограмм заключается в простоте написания, легкости понимания. Обычно это касается задач, связанных с процессами, рекурсивными по своей природе. Но рекурсивные алгоритмы, как правило, менее эффективны из-за затрат времени на организацию стека. При каждом обращении в стеке запоминаются значения всех локальных переменных, параметров и коды возврата. Глубина рекурсии (количество обращений к себе) ограничена объемом памяти стека. При глубокой вложенности рекурсии может произойти переполнение стека. Пример 5. Опишем рекурсивную и итеративную функцию для вычисления n!:
|
||||||||
|
Последнее изменение этой страницы: 2017-02-07; просмотров: 248; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.008 с.) |