Автор работы: Пользователь скрыл имя, 21 Января 2013 в 03:16, задача
В данном расчетно-графическом задании проводится распараллеливание вычислительных процессов с целью закрепления теоретических знаний в области теории распараллеливания вычислительных алгоритмов, формирования практических умений и навыков разработки программного средства для распараллеливания вычислительных алгоритмов и закрепления практических навыков самостоятельного решения инженерных задач, развития творческих способностей и умений пользоваться технической, нормативной и справочной литературой.
Введение 3
1 Теоретические предпосылки поставленной проблемы 4
2 Разработка программного средства 16
Заключение 24
Список использованных источников 25
Приложение А – Текст программы 26
Приложение Б – Контрольный пример 31
2.3 Спецификация данных
Рассмотрим структуру входных и выходных данных, используемых в программном средстве. Базовые единицы данных вынесены в таблицу 2.
Таблица 2 – Спецификация данных программы
Сlass Round | |
public int num |
Номер вершины |
public Point p |
Объект класса точки связанный с вершиной |
public bool selected |
Признак активности вершины |
public List<round> next |
ссылка на следующую вершину |
public int Time |
Время выполнения оператора, заданного вершиной |
private int size=15; |
Размер отображаемой на экране вершины графа-схемы |
Сlass Node | |
private int DX,DY |
Координаты нажатия на PictureBox |
public Form1 f |
Форма |
public int[] Tau |
Массив данных ранних сроках |
public int[] LTau; |
Массив данных поздних сроках |
public int[,] mtr , S , L , N |
Матрицы транзитивности,
логической несовместимости и |
2.4 Разработка алгоритма решения задачи
2.4.1 Укрупненная схема
алгоритма программного
На основе анализа требований, предъявляемых к программному средству и функций, выполняемых им, был разработан и описан алгоритм решения задачи. Логическая структура программы представлено с помощью укрупненной схемы алгоритма, изображенной на рисунке 3.
Рисунок 7 – Укрупненная схема алгоритма
2.5 Установка и эксплуатация программного средства
Для установки программного средства необходимо скопировать исполняемый файл «WindowsFormsApplication2.exe» на жесткий диск.
Программа предназначена
для компьютеров IBM-
Минимальные требования к программно-аппаратной конфигурация компьютера:
- Pentium 4-совместимого процессора;
- 256 Мб оперативной памяти;
- 1 Мб места на жестком диске для хранения программы;
- цветной SVGA-совместимый монитор с поддержкой разрешений 1024x768 точек и более;
- наличие в системе набора библиотек Microsoft .NET Framework 2.0;
- манипулятор типа «мышь».
Программа не производит записи на диск и не требует сохранения и загрузки данных.
2.6 Работа с программным средством
Для запуска программы необходимо запустить исполняемый файл «TVP.exe», при этом откроется окно программы, представленное на рисунке 8.
Рисунок 8 – «Граф-схема»
Интерфейс программы представлен вкладками.
На вкладке «Граф-схема» содержатся элементы создания и редактирования граф-схемы.
Вершины граф-схемы создаются путем двойного щелчка мышью области графического представления данных на вкладке «Граф-схема».
Перемещение вершин осуществляется в соответствии с концепцией DragNDrop и аналогично перетаскиванию папок в проводнике Windows.
После размещения вершин в удобном пользователю порядке, необходимо соединить их в соответствии с двумя типами возможных связей.
Связь по информации создается при выбранном переключателе «Связь по информации». Связь по управлению - при выборе переключателя «Связь по управлению».
Для создания связи необходимо зажать правую кнопку мыши на начальной вершине и, не отпуская правой кнопки, довести курсор до конечной вершины. При опускании кнопки создается связь.
Для выбора времени выполнения оператора, представленного вершиной на графе-схеме, необходимо сделать один клик на требуемой вершине, после этого появится диалоговое окно для выбора значения в единицах времени.
После построения той или иной реализации алгоритма необходимо выбрать операторы для выполнения. Выбор осуществляется щелчком по вершине правой кнопкой мыши, выбранные вершины помечаются зеленым цветом.
На каждом этапе построения пользователю предоставляется возможность просмотреть полученные матрицы следования, транзитивности, транзитивных связей логической несовместимости и матрицы независимости. Для их просмотра достаточно выбрать соответствующую вкладку.
По завершении построения можно составить диаграмму сроков выполнения операторов. Для просмотра ранних сроков выполнения достаточно выбрать вкладку «Диаграмма сроков».
Для просмотра поздних сроков выполнения, необходимо на главной вкладке ввести необходимые сроки завершения и нажать соответствующую кнопку, после чего программа автоматически переключит пользователя на диаграмму.
Заключение
Выполнение целей и задач РГЗ позволило закрепить теоретические знания в области теории распараллеливания вычислительных алгоритмов
Было разработано программное средство распараллеливания вычислительных алгоритмов, выполняющее функции:
- ввода и редактирования информационно-логической графа-схемы вычислительного алгоритма;
- нахождение транзитивных связей и связей логической несовместимости операторов;
- нахождение транзитивных связей логической несовместимости операторов
- нахождение матрицы независимос
- нахождение ранних и поздних сроков окончания выполнения операторов для конкретной ветви алгоритма;
- построение диаграммы выполнения операторов для конкретной ветви алгоритма.
Список использованных источников
Приложение А – Текст программы
Класс реализации формы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public bool mode=true;
public Form1()
{
InitializeComponent();
nod = new Node(26,this);
}
private void OutS()
{
try
{
dataGridView1.RowCount = nod.Get_size()+1;
dataGridView1.ColumnCount = nod.Get_size()+1;
for (int i = 1; i < nod.Get_size()+1; i++)
for (int j = 1; j < nod.Get_size()+1; j++)
dataGridView1.Rows[i].Cells[j]
dataGridView1.
}
catch
{ return; }
}
private void OutL()
{
try
{
dataGridView2.RowCount = nod.Get_size() + 1;
dataGridView2.ColumnCount = nod.Get_size() + 1;
for (int i = 1; i < nod.Get_size() + 1; i++)
for (int j = 1; j < nod.Get_size() + 1; j++)
dataGridView2.Rows[i].Cells[j]
dataGridView2.
}
catch
{ return; }
}
private void OutN()
{
try
{
dataGridView3.RowCount = nod.Get_size() + 1;
dataGridView3.ColumnCount = nod.Get_size() + 1;
for (int i = 1; i < nod.Get_size() + 1; i++)
for (int j = 1; j < nod.Get_size() + 1; j++)
dataGridView3.Rows[i].Cells[j]
dataGridView3.
}
catch
{ return; }
}
private void button1_Click(object sender, EventArgs e)
{
int late = (int)numericUpDown1.Value;
int f = nod.FindFT();
if (f > late)
{
MessageBox.Show("Поздние
return;
}
isLate = false;
nod.FindLT(late);
tabControl1.SelectTab(4);
}
private Node nod;
private void добавитьToolStripMenuItem_
{
nod.Add(new Point(100, 100));
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
nod.Draw(e.Graphics);
}
private void timer1_Tick(object sender, EventArgs e)
{
//pictureBox1_Paint(sender,
pictureBox1.Refresh();
nod.Fill_S();
nod.Fill_L();
nod.Fill_N();
OutS();
OutL();
OutN();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Click += new EventHandler(nod.Node_Click);
pictureBox1.DoubleClick += new EventHandler(nod.Node_DbClick)
pictureBox1.MouseDown += new MouseEventHandler(nod.Node_MD)
pictureBox1.MouseUp+=new MouseEventHandler(nod.Node_MU)
pictureBox1.MouseMove+= new MouseEventHandler(nod.Node_MV)
}
private void button2_Click(object sender, EventArgs e)
{
nod.Add(new Point(100, 100));
}
private void radioButton1_CheckedChanged(
{
mode = radioButton1.Checked;
}
private void tabPage1_Click(object sender, EventArgs e)
{
}
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPageIndex == 4)
{
nod.FindFT();
nod.FindLT((int)
pictureBox2.Refresh();
}
else isLate = true;
if (e.TabPageIndex == 5)
{
// nod.Renum();
try
{
dataGridView4.RowCount = nod.Get_size() + 1;
dataGridView4.ColumnCount = nod.Get_size() + 1;
for (int i = 1; i < nod.Get_size() + 1; i++)
{
for (int j = 1; j < nod.Get_size() + 1; j++)
{
dataGridView4.Rows[i].Cells[j]
dataGridView4.Columns[j].
}
dataGridView4.Rows[i].
}
dataGridView4.
Информация о работе Распараллеливание вычислительных алгоритмов