Система моделирования работы машины Тьюринга

Автор: Пользователь скрыл имя, 10 Мая 2013 в 00:46, курсовая работа

Краткое описание

В 1936 г. английский математик Алан Тьюринг опубликовал в трудах Лондонского математического общества статью «О вычислимых числах в приложении к проблеме разрешения», которая наравне с работами Поста и Черча лежит в основе современной теории алгоритмов. Тьюрингом в качестве математической модели для описания алгоритмов было предложено абстрактное вычислительное устройство, которое впоследствии было названо машина Тьюринга (МТ).

Файлы: 1 файл

Записка МТ!(печать!!).doc

— 760.00 Кб (Скачать)

2.4.2 Минимальные требования, предъявляемые к системе

  1. IBM – совместимый компьютер с тактовой частотой процессора  
    500 МГц и более;
  2. объём оперативной памяти не менее 128 Мб;
  3. объём свободного дискового пространства не менее 1,6 Гб;
  4. видеокарта с объемом памяти не менее 32 Мб;
  5. манипулятор мышь для взаимодействия с интерфейсом;
  6. клавиатура;
  7. монитор с разрешающей способностью не менее 800х600.

 

ЗАКЛЮЧЕНИЕ

В соответствии с заданием на курсовой проект была разработана система моделирования работы машины Тьюринга, которая позволяет реализовывать двухоперандовые алгоритмы.

В ходе разработки системы была составлена системотехническая часть, содержащая:

    • описание и анализ предметной области;
    • структурную схему разрабатываемой системы;
    • описание спецификации системы;
    • UML-проект;
    • основные алгоритмы обработки данных;
    • описание выбранных программных средств разработки.

При составлении конструкторско-технологической  части был разработан и описан интерфейс пользователя, реализованы классы и структуры данных и определены минимальные требования к системе.

Программный продукт является надёжным, эффективным, переносимым и имеет удобный, интуитивно понятный интерфейс, а также ведет контроль корректности ввода данных.

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. http://mm.lti-gti.ru/informatics/!kurs/10.html [Электронный ресурс].  – Машина Тьюринга.
  2. Успенский, В.А. Машина Поста [Текст]. – М.: Наука. Гл. ред. физ.-мат. лит.,  
    1988. – 96 с.
  3. http://www.informicus.ru/default.aspx?SECTION=6&id=93 [Электронный ресурс]. – Быстрая разработка приложений.
  4. Уэзерлл, Ч. Этюды для программистов [Текст]. – М.: Мир, 1982. - 288 с.
  5. Тишин, В. В. Дискретная математика в примерах и задачах [Текст]. – СПб.: БХВ-Петербург, 2008. - 352 с.
  6.   http://freesoft.ru/?id=671189 [Электронный ресурс]. – Машина Тьюринга 1.1.
  7. http://www.studfiles.ru/dir/cat32/subj1228/file10864.html [Электронный ресурс]. – Algo2000.
  8. http://it-library.org/articles/?c=10&&a=215 [Электронный ресурс].  – Определение объектной декомпозиции.
  9.   Зеленко, Л.С. Технологии программирования и программная инженерия (часть 1) [Текст]: учебное пособие/ Л. С. Зеленко. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2006. -  96 с.: ил.
  10. Зеленко, Л.С. Программная инженерия [Текст]: лекции/ Л. С. Зеленко. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. -  96 с.: ил.
  11. http://ru.wikipedia.org/wiki/UML [Электронный ресурс]. – Определение UML.
  12. http://www.intuit.ru/department/se/intuml/ [Электронный ресурс]. – Лекции UML.
  13. Зеленко, Л.С. Языки программирования [Текст]: лекции/ Л. С. Зеленко. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2009. -  96 с.: ил.
  14. http://corpsite.ru/Service/Technology/Language/CSharp.aspx [Электронный ресурс]. – Особенности языка C#.
  15. http://ru.wikipedia.org/wiki/Microsoft_Windows [Электронный ресурс]. – Популярность ОС Windows.
  16. http://hi-programming.ru/vb6/index.html [Электронный ресурс]. – Определение понятия интерфейс.
  17. СТО СГАУ 02068410-004-2007. Общие требования к учебным текстовым документам [Текст]:  методические указания.  - Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2007. - 30 с.

ПРИЛОЖЕНИЕ А

Руководство пользователя

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.X+(dataGridView1.ColumnCount*38)+dataGridView1.RowHeadersWidth, dataGridView1.Location.Y-1);

        }

 

        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(dataGridView2.Columns[CountCol]);

            }

            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.ColumnCount.ToString());

                w.WriteLine(dataGridView1.RowCount.ToString());

                try

                {

                   for (int i = 0; i < dataGridView1.ColumnCount; i++)

                    {

                        w.WriteLine(dataGridView1.Columns[i].HeaderText);

                   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_Click(object sender, EventArgs e)

        {

            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[dataGridView1.RowCount - 1].HeaderCell.Value = (dataGridView1.Rows[dataGridView1.RowCount - 1].Index + 1).ToString();

                }

                else

                {

                    int x = dataGridView1.CurrentCell.RowIndex;

                    dataGridView1.RowCount++;

                    dataGridView1.Rows[dataGridView1.RowCount - 1].HeaderCell.Value = (dataGridView1.Rows[dataGridView1.RowCount - 1].Index + 1).ToString();

   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[dataGridView1.RowCount - 1].HeaderCell.Value = (dataGridView1.Rows[dataGridView1.RowCount - 1].Index + 1).ToString();

                }

                else

                {

                    int x = dataGridView1.CurrentCell.RowIndex;

                    dataGridView1.RowCount++;

dataGridView1.Rows[dataGridView1.RowCount - 1].HeaderCell.Value = (dataGridView1.Rows[dataGridView1.RowCount - 1].Index + 1).ToString();

           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++)

                            {

                                dataGridView1[j, i].Value = null;

                           }

                        }

                    }

                }

            }

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

this.dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(dataGridView1_CellEndEdit);

this.dataGridView2.CellEndEdit += new DataGridViewCellEventHandler(dataGridView2_CellEndEdit);

           

dataGridView1.Rows.Add(2);

Numer();

           

        }

 

private void clearDataGrid()

        {

            dataGridView1.Rows.Clear();

            dataGridView1.Columns.Clear();

            dataGridView1.Columns.Add("column1", "1");

            dataGridView1.Columns.Add("column2", "*");

            dataGridView1.Columns.Add("column2", "_");

            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(dataGridView1.Columns[i].HeaderCell.Value.ToString());

            }

       }

 

 

       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(name, header);

                           dataGridView1.Columns[i].Width = 38;

                          if (i < 1) dataGridView1.Rows.Add(rows);

                            for (int j = 0; j < rows; j++)

                            {

        dataGridView1.Rows[j].HeaderCell.Value = (j + 1).ToString();

                                string buf = r.ReadLine();

                                if (!buf.Equals("null"))

                                {

                                    dataGridView1[i, j].Value = buf;

                                }

                            }

                        } 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].HeaderCell.Value = (i + 1).ToString();

            }

        }

 

        private void загрузитьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            OpenAlg();

        }

 

        private void очиститьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            label1.Text = "";

            clearDataGrid();

            dataGridView1.Rows.Add(2);

            Numer();

        }

 

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)

        {

            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; }

Информация о работе Система моделирования работы машины Тьюринга