ВУЗ:
Составители:
Рубрика:
26
// делегат для представления математической функции
delegate double Function(double x);
Экземпляр данного делегата может хранить информацию о любом
методе, который получает в качестве параметра и возвращает вещественное
число, например, таким методом может быть статический метод Sin()
класса Math.
Таким образом, метод RootEquation() может получить указание
как вычислять функцию f(x) с помощью параметра типа указанного делегата.
2) Второй случай использования делегатов – настройка алгоритма
решения задачи. Как уже было сказано, все три метода поиска корня
основываются на единой процедуре, которая отличается только реализацией
одного шага – выбора точки, разбивающей отрезок на два. Для реализации
этого шага создадим в классе Solver три различных метода, информацию о
которых будет хранить экземпляр следующего делегата:
// делегат для определения точки деления исходного отрезка
delegate double PointIn (Function f, double a, double b);
В классе Solver данный экземпляр будем хранить в виде
статического поля method и инициализируем его в статическом
конструкторе:
class Solver
{
// делегат для определения точки деления отрезка
static PointIn method;
// статический конструктор
static Solver()
{
// инициализация генератора случайных чисел
Random r = new Random();
int q = r.Next(300)%3;
switch (q)
{
case 0:
// инициализация делегата функцией GetX1
method = GetX1;
Console.WriteLine("Выбран метод деления
отрезка пополам");
break;
// делегат для представления математической функции delegate double Function(double x); Экземпляр данного делегата может хранить информацию о любом методе, который получает в качестве параметра и возвращает вещественное число, например, таким методом может быть статический метод Sin() класса Math. Таким образом, метод RootEquation() может получить указание как вычислять функцию f(x) с помощью параметра типа указанного делегата. 2) Второй случай использования делегатов – настройка алгоритма решения задачи. Как уже было сказано, все три метода поиска корня основываются на единой процедуре, которая отличается только реализацией одного шага – выбора точки, разбивающей отрезок на два. Для реализации этого шага создадим в классе Solver три различных метода, информацию о которых будет хранить экземпляр следующего делегата: // делегат для определения точки деления исходного отрезка delegate double PointIn (Function f, double a, double b); В классе Solver данный экземпляр будем хранить в виде статического поля method и инициализируем его в статическом конструкторе: class Solver { // делегат для определения точки деления отрезка static PointIn method; // статический конструктор static Solver() { // инициализация генератора случайных чисел Random r = new Random(); int q = r.Next(300)%3; switch (q) { case 0: // инициализация делегата функцией GetX1 method = GetX1; Console.WriteLine("Выбран метод деления отрезка пополам"); break; 26
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »