Опубликован: 23.04.2013 | Доступ: свободный | Студентов: 854 / 185 | Длительность: 12:54:00
Лекция 10:

Программные проекты на C#

Предлагаемые программные проекты на C# построены по материалам курса по "Параллельным вычислениям". Проекты написаны по завершении работы над текстом курса и поэтому реализация может отличаться от той, что дана в тексте курса. В некоторых проектах появились методы, не описанные в тексте лекций. С другой стороны не все задачи, рассмотренные в ходе лекций, нашли отражение в предлагаемых проектах.

Проекты являются важным дополнительным материалом к курсу лекций. Размещение их на сайте преследует три цели:

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

Проекты, связанные единой тематикой, объединены в Решения (Solution):

  1. Решение Sum объединяет проекты по теме суммирования;
  2. Решение Integral связано с задачей вычисления определенного интеграла;
  3. Решение Sorting объединяет проекты, реализующие различные методы сортировки;
  4. Решение TasksAndInstruments объединяет проекты, позволяющие анализировать проблемы гонки данных, клинча и способы преодоления этих проблем.
  5. Решение Game15 исследует важную тему взаимодействия управляющего и управляемого процессов, работающих в разных потоках. Оно представляет реализацию известной игры 15 и обладает чертами полноценного приложения с развитым интерфейсом, меню, файлами и другими атрибутами реальных приложений.

Суммирование. Описание Решения (Solution) Sum

Задача суммирования

Задача вычисления суммы S=\sum_k a_k является классической задачей математики и программирования. При рассмотрении параллельных вычислений ей уделяется большое внимание.

Решение Sum содержит проекты, позволяющие провести сравнительный анализ эффективности последовательных и параллельных алгоритмов вычисления суммы. Построенные проекты позволяют также оценить эффективность инструментальных средств, реализующих в программах на C# параллельные вычисления.

В проектах рассматриваются три варианта вычисления суммы, где a_k это :

  • элементы массива;
  • элементы бесконечного сходящегося ряда;
  • элементы конечного ряда, представляющие значение некоторой функции F(k).

Анализируются три варианта параллельных алгоритмов вычисления суммы – пирамидальный, сегментный и шаговый. Рассматриваются также различные вариации инструментария, реализующего параллельные вычисления:

  • метод For класса Parallel;
  • потоки – объекты класса Thtead;
  • задачи – объекты класса Task.

Проекты, включенные в Решение Sum, следует рассматривать как дополнение, полезное при изучении материалов главы 3 (раздел "Суммирование") и глав 4 -7 учебника "Параллельные вычисления и многопоточное программирование.

Структура Решения Sum

Решение Sum содержит 5 проектов. Следуя принципу разделения интерфейса и бизнес-логики, содержательная часть реализована в проекте ClassLibrarySum, представляющего динамическую библиотеку классов. Эта библиотека содержит три класса – Massiv, Infinite_Series, Function_Sum. Каждый из этих классов содержит методы , реализующие последовательные и параллельные алгоритмы для трех изучаемых проблем – суммирования элементов массива, сходящихся рядов и конечных сумм, элементы которых заданы значениями функций.

Четыре проекта, входящие в Решение Sum, являются интерфейсными проектами. Три из них – ConsoleMassive_Sum, ConsoleArcSin и ConsoleFunction_Sum реализуют консольный интерфейс. Каждый из этих трех проектов позволяет в консоли анализировать три изучаемые проблемы. Четвертый интерфейсный проект – WindowsFormSum представляет классическое Windows Form приложение с главной формой и тремя формами, спроектированными для анализа рассматриваемых проблем.

Алексей Рыжков
Алексей Рыжков

не хватает одного параметра:

static void Main(string[] args)
        {
            x = new int[n];
            Print(Sample1,"original");
            Print(Sample1P, "paralel");
            Console.Read();
        }

Никита Белов
Никита Белов

Выставил оценки курса и заданий, начал писать замечания. После нажатия кнопки "Enter" окно отзыва пропало, открыть его снова не могу. Кнопка "Удалить комментарий" в разделе "Мнения" не работает. Как мне отредактировать недописанный отзыв?