Теоретическое исследование моделей программы, решающей заданную задачу

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Министерство Российской Федерации

По связи и информатизации

Сибирский государственный университет

Телекоммуникации и информатики

 

 

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К курсовой работе

По дисциплине

Теория вычислительных процессов

На тему

Теоретическое исследование моделей программы, решающей заданную задачу

 

 

 

 

 

 

 

 

 

 

 

Новосибирск 2012

 

Оглавление

 

Задание к курсовой работ

Задачи к курсовой работе

Реферат

Краткая теория

Программная реализация

Вывод результатов

Стандартные схемы программ

Базис класса стандартных схем программ

Линейная форма стандартной схемы

Графовая форма стандартной схемы

Интерпретация стандартных схем программ

Сети Петри

Введение в сети Петри

Основные определения

Анализ сетей Петри

ЛИНЕЙНАЯ СХЕМА ПРОГРАММ

ССП в графовой форме

Интерпретация

Инварианты и ограничения циклов

Доказательство частичной и полной правильности программы

Анализ сетей Петри на основе дерева достижимости

Сеть Петри

Дерево достижимости

Выводы по работе

Список литературы

 

Задание к курсовой работе

 

1.Написать программу решения задачи, номер которой совпадает с Вашим номеров в журнале.

2.Составить и исследовать ССП в линейной и графовой форме.

.Указать интерпретацию ССП и составить протокол выполнения программы.

.Построить и исследовать инварианты и ограничения цикла(ов).

.Доказать частичную и полную правильность программы.

.Представить схему программы в виде сети Петри и осуществить анализ ее свойств на основе дерева достижимости.

 

Задачи к курсовой работе

 

Вариант 2

Для заданной целочисленной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

 

Реферат

 

Данная пояснительная записка содержит 23 листа, 5 схем, образец выполнения программы, текст программы.

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

 

Краткая теория

 

Главная диагональ - диагональ квадратной матрицы, идущая из верхнего левого угла матрицы в правый нижний.

 

Программная реализация

 

Код программы:

//---------------------------------------------------------------------------

#include

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit2.h"

#include

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;n, maxindex=-10;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------__fastcall TForm1::Edit1Change(TObject *Sender)

{->RowCount = 0;->ColCount = 0;->RowCount = 0;->ColCount = 0;(CompareText(Form1->Edit1->Text,"") == 0){}

{(StrToInt(Form1->Edit1->Text) > 1000)

{>MessageBoxA;;

}{ n = StrToInt(Form1->Edit1->Text); }(...)

{>MessageBox;;

}

}(int i=0; i Enabled = false;= -10;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button2Click(TObject *Sender)

{();->StringGrid1->Visible = true;i,j;(CompareText(Form1->Edit1->Text,"") == 0) {Application->MessageBoxA}

{->StringGrid1->ColCount = n;->StringGrid1->RowCount = n;->StringGrid2->ColCount = 2*n - 1;->StringGrid2->RowCount = 2;(i=0; i<n; i++)

{(j=0; jCells[i][j]=n - random(2*n);

}->Button1->Enabled = true;

}->Edit2->Clear();->Edit3->Clear();(n == 0)

{->Button1->Enabled = false;->StringGrid2->Visible = false;

}(n == 1)

{->Button1->Enabled = false;->Edit2->Text = Form1->StringGrid1->Cells[0][0];->Edit3->Text = 0;->StringGrid2->Visible = true;->StringGrid2->Cells[0][0]=0;->StringGrid2->Cells[0][1]=Form1->StringGrid1->Cells[0][0];

}

}

//---------------------------------------------------------------------------__fastcall TForm1::CheckBox1Click(TObject *Sender)

{

//if (Form1->CheckBox1->Checked ) Form1->StringGrid1->Options = Form1->StringGrid1->Options << goEditing;

//else Form1->StringGrid1->Options = Form1->StringGrid1->Options >> goEditing;

}

//---------------------------------------------------------------------------__fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol,ARow, const AnsiString Value)

{v;s = Form1->StringGrid1->Cells[ACol][ARow];((CompareText(s,"") == 0) || (CompareText(s,"-") == 0)){}

{{ v = StrToInt(s); }(...)

{>MessageBox(" ", "", 0);

return;

}

}

}

//---------------------------------------------------------------------------__fastcall TForm1::Button3Click(TObject *Sender)

{Row_Count, Col_Count;**Result;(!Form1->OpenDialog1->Execute()) return;(FileOpen(OpenDialog1->FileName, Result, Row_Count, Col_Count))

{->Edit1->Clear();->StringGrid1->RowCount = Row_Count-1;->StringGrid1->ColCount = Col_Count-1;->StringGrid2->ColCount = 2*Row_Count - 1;->StringGrid2->RowCount = 2;(int i = 0; i < Row_Count-1; ++i)

{(int j = 0; j Strings[j];

}->Button1->Enabled = true;->Edit2->Clear();->Edit3->Clear();

}= Row_Count-1;->StringGrid1->Visible = true;

}

//---------------------------------------------------------------------------__fastcall TForm1::Button1Click(TObject *Sender)

{->Visible = true;i, j, index=0, sum, max=0, t;(i=0; i<n-1; i++)

{= 0;(j=0; jmax)

{=sum;=index;

}++;

}= 0;(j=0; jmax)

{=sum;=index;

}++;(i=n-2; i>=0; i--)

{= 0;(j=0; jCells[j