Автор: Пользователь скрыл имя, 10 Мая 2013 в 00:46, курсовая работа
В 1936 г. английский математик Алан Тьюринг опубликовал в трудах Лондонского математического общества статью «О вычислимых числах в приложении к проблеме разрешения», которая наравне с работами Поста и Черча лежит в основе современной теории алгоритмов. Тьюрингом в качестве математической модели для описания алгоритмов было предложено абстрактное вычислительное устройство, которое впоследствии было названо машина Тьюринга (МТ).
2.4.2 Минимальные требования, предъявляемые к системе
ЗАКЛЮЧЕНИЕ
В соответствии с заданием на курсовой проект была разработана система моделирования работы машины Тьюринга, которая позволяет реализовывать двухоперандовые алгоритмы.
В ходе разработки системы была составлена системотехническая часть, содержащая:
При составлении конструкторско-
Программный продукт является надёжным, эффективным, переносимым и имеет удобный, интуитивно понятный интерфейс, а также ведет контроль корректности ввода данных.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А
Руководство пользователя
A.1 Назначение системы
Данная программная система является компьютерным аналогом МТ и предназначена для реализации следующих функций:
А.2 Установка системы
Чтобы установить систему, необходимо скопировать на нужный компьютер папку, содержащую файл MT.exe, файл справки *.chm и папки Trass и Algorithms. После этого можно запустить исполняемый файл MT.exe.
А.3 Описание основных действий пользователя
При запуске программы открывается главное окно программы, где пользователь может начать работу с МТ, открыть справку, посмотреть информацию о проекте или выйти из системы (см. рисунок А.1).
Рисунок А.1 – Главное окно программы
В меню «Файл» находятся команды создания, сохранения и загрузки алгоритма. Чтобы выйти из системы, пользователю нужно выбрать пункт меню «Файл» - «Выход» (см. рисунок А.2).
Рисунок А.2 – Интерфейс ПС. Вкладка меню «Файл»
Пункт меню «Трасса» позволяет посмотреть и сохранить трассу (см. рисунок А.3).
Рисунок А.3 – Интерфейс ПС. Вкладка меню «Трасса»
Пункт меню «Алгоритм» дает возможность загрузить один из базовых алгоритмов (см. рисунок А.4).
Рисунок А.4 – Интерфейс ПС. Вкладка меню «Алгоритм»
В пункте меню «Справка» пользователь может посмотреть информацию о программе и о проекте (см. рисунок А.5).
Рисунок А.5 – Интерфейс ПС. Вкладка меню «Справка»
В левой верхней части главной формы располагаются кнопки, являющиеся аналогами команд, описанных в пункте меню «Файл».
В правой части находятся элементы, служащие для запуска алгоритма и демонстрации его работы.
ПРИЛОЖЕНИЕ В
Листинг программы
public partial class MT : Form
{
public MT()
{
InitializeComponent();
dataGridView2.Rows.Add();
dataGridView2[0, 0].Value = "_";
}
public List<string> Tras = new List<string>();
private void PosAdd()
{
Plus.Location = new Point(dataGridView1.Location.
}
private void PosAdd2()
{
Plus2.Location = new Point(dataGridView2.Location.X + (dataGridView2.ColumnCount * 21) + 1, dataGridView2.Location.Y - 1);
}
private void clearTape()
{
int CountCol=0;
for (int i = 1; i < dataGridView2.ColumnCount; i++)
{
dataGridView2[i, 0].Value = null;
}
for (int j = dataGridView2.ColumnCount-1; j > 3; j--)
{
CountCol = dataGridView2.Columns.Count - 1;
dataGridView2.Columns.Remove(
}
PosAdd2();
}
private void SaveAlg()
{
string filename = "";
saveFileDialog1.Filter = "txt files (*.MT)|*.MT";
saveFileDialog1.FileName = null;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = saveFileDialog1.FileName;
StreamWriter w = new StreamWriter(filename);
w.WriteLine("blabla");
w.WriteLine(dataGridView1.
w.WriteLine(dataGridView1.
try
{
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
w.WriteLine(dataGridView1.
for (int j = 0; j < dataGridView1.RowCount; j++)
{
w.WriteLine((dataGridView1[i, j].Value != null) ? dataGridView1[i, j].Value.ToString() : "null");
}
}
}
catch { }
w.Close();
}
}
private void сохранитьToolStripMenuItem_
{
SaveAlg();
}
private void button2_Click(object sender, EventArgs e)
{
AddRows Check = new AddRows();
Check.ShowDialog();
if ( Check.f && Check.radioNiz.Checked)
{
if (dataGridView1.RowCount == 0)
{
dataGridView1.RowCount++;
dataGridView1.Rows[
}
else
{
int x = dataGridView1.CurrentCell.
dataGridView1.RowCount++;
dataGridView1.Rows[
for (int i = dataGridView1.RowCount - 1; i > x; i--)
{
if (i > x + 1)
{
for (int j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
dataGridView1[j, i].Value = dataGridView1[j, i - 1].Value;
}
}
else
{
for (int j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
dataGridView1[j, i].Value = null;
}
}
}
}
}
if (Check.f && Check.radioUp.Checked)
{
if (dataGridView1.RowCount == 0)
{
dataGridView1.RowCount++;
dataGridView1.Rows[
}
else
{
int x = dataGridView1.CurrentCell.
dataGridView1.RowCount++;
dataGridView1.Rows[
for (int i = dataGridView1.RowCount - 1; i >= x; i--)
{
if (i > x)
{
for (int j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
dataGridView1[j, i].Value = dataGridView1[j, i - 1].Value;
}
}
else
{
for (int j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
}
}
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(
this.dataGridView2.CellEndEdit += new DataGridViewCellEventHandler(
dataGridView1.Rows.Add(2);
Numer();
}
private void clearDataGrid()
{
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
dataGridView1.Columns.Add("
dataGridView1.Columns.Add("
dataGridView1.Columns.Add("
for (int i = 0; i < 3;i++ )
{ dataGridView1.Columns[i].Width = 38; }
Alfabet();
PosAdd();
}
private void Alfabet()
{
listBox1.Items.Clear();
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
listBox1.Items.Add(
}
}
private void OpenAlg()
{
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
string filename = "";
openFileDialog1.Filter = "txt files (*.MT)|*.MT";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = openFileDialog1.FileName;
StreamReader r = new StreamReader(filename);
string bla = r.ReadLine();
if (bla != "blabla") { DialogResult a = MessageBox.Show("Неверная структура файла!"); clearDataGrid(); }
else
{
try
{
int cols = int.Parse(r.ReadLine());
int rows = int.Parse(r.ReadLine());
for (int i = 0; i < cols; i++)
{
string header = r.ReadLine();
string name = "column" + i.ToString();
dataGridView1.Columns.Add(
dataGridView1.Columns[i].Width = 38;
if (i < 1) dataGridView1.Rows.Add(rows);
for (int j = 0; j < rows; j++)
{
dataGridView1.Rows[j].
}
} PosAdd(); Alfabet();
label1.Text = openFileDialog1.SafeFileName;
r.Close(); }
catch
{
DialogResult a = MessageBox.Show("Неверная структура файла!");
clearDataGrid();
dataGridView1.Rows.Add(2);
}
}
}
else
{
clearDataGrid();
dataGridView1.Rows.Add(2);
}
}
private void Numer()
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].
}
}
private void загрузитьToolStripMenuItem_
{
OpenAlg();
}
private void очиститьToolStripMenuItem_
{
label1.Text = "";
clearDataGrid();
dataGridView1.Rows.Add(2);
Numer();
}
private void выходToolStripMenuItem_Click(o
{
Close();
}
private string GetLenta()
{
string lenta = "";
for (int i = 1; i < dataGridView2.ColumnCount; i++)
{
lenta += dataGridView2[i, 0].Value.ToString();
}
lenta = lenta.Replace("_", "");
return lenta;
}
private void ZapoL()
{
for (int i = 0; i < dataGridView2.ColumnCount; i++)
{
if (dataGridView2[i, 0].Value == null) { dataGridView2[i, 0].Value = "_"; }
}
}
private bool Semantic()
{
semantic = true;
if (dataGridView2[1, 0].Value == null)
{ DialogResult a = MessageBox.Show("Незаполнена лента!"); semantic = false; }
else
if (dataGridView1.RowCount == 0)
{ DialogResult a = MessageBox.Show("нет алгоритма"); semantic = false; }
Информация о работе Система моделирования работы машины Тьюринга