ПредишенСледващото

функции по-висок порядък

Един от най-важните приложения на делегатите, дължащи се на функциите на по-висок ред. функция по-висок порядък е функция (метод) в класа, че има един или повече аргументи принадлежат към функционалната тип. програмиране е доста трудно да се направи, без тези функции. Класически пример е функцията за изчисляване на интеграл, който един от аргументите, уточнява подинтегрален. Друг пример е функция. сортиране съоръжения. аргумент му е функцията сравнение. сравняване на два обекта. В зависимост от това дали функцията за сравнение ще бъдат прехвърлени към входните обекти функция за сортиране ще бъдат сортирани по различни начини, например, по име или ключ или от няколко полета. Опциите могат да бъдат много, и те са определени от класа, който описва обектите да бъдат сортирани.

Изчисляването на интеграла

Нека да погледнем по-отблизо ситуацията с функциите на по-висок ред, като пример на проблема за изчисляване на определен интеграл с точност. За тази цел ние се създаде клас, че делегатите ще бъдат описани. Определя договора. на които трябва да отговарят на integrands. В същия клас ние да определя метода за изчисляване на интеграл. Всъщност самият проблем, този метод е функция от по-висок ред. Това е кодът, който описва клас:

  • HighOrderIntegral клас е предназначена за работа с функции. Той инвестира функционален клас описание - SubIntegralFun делегат. майсторски клас на функции с един аргумент от тип двойни и връща стойността от същия тип.
  • метод EvalIntegral - основен метод на класа ни позволява да се изчисли определен интеграл. Този метод е функция от по-висок ред. като един от аргументите е подинтегрален, собственост SubIntegralFun клас.
  • За да се изчисли интеграла се прилага класическата схема. Интервалът на интеграция се разделя на п части и се изчислява частично сумата по метода на трапеца. представляващи приблизителна стойност на интеграла. Тогава н се удвоява, както и нова контролна се изчислява. Ако разликата между двете приближения с модул по-малко от посочените EPS точност. изчисляване на интегрални краищата, в противен случай процесът се повтаря в цикъл. Цикълът е завършен при достигане на предварително определена точност, или когато п достига пределно допустимата стойност (в нашия случай - 2 15).
  • Изчисляването на частична сума от неразделна метода на трапецовидна изпълнява затворена процедура I.
  • Впоследствие този клас може да се разшири и в допълнение към изчисляването неразделна тя може да изчисли функции и други характеристики.

За да се покаже работата на един клас HighOrderIntegral. Функции ще донесат повече класа. който описва редица функции, които отговарят на договора. които се определят клас SubIntegralFun:

А сега да разгледаме метод клас на клиента, може да създаде необходимите обекти и да тестват своята работа:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!