Автор работы: Пользователь скрыл имя, 11 Апреля 2014 в 11:17, курсовая работа
C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270. Компилятор C# входит в стандартную установку .NET Framework. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Запуск Visual Studio.Net.
Открывается главное окно и в меню Файл выбрать - Создать/Новый проект. Открывается окно создания нового проекта (рис. 1), где среди типов проектов выбрать – Visual C# -Windows и в шаблонах Visual Studio выбрать Приложение Windovs Forms.
Рис. 1. Окно создания нового проекта
Далее ввести имя проекта КА, определить его расположение D:\TIS\Проекты_КА2 и нажать кнопку OK.
2. Конструирование формы
Открывается форма (рис. 2), где поместить необходимые элементы: три метки A Label
Рис. 2. Окно Visual Studio с открытым проектом
для надписей, три текстовых поля TextBox для ввода и вывода необходимых значений, три кнопки Button для создания КА, его работы и завершения работы программы и таблица DataGridView. Для чего выполнить следующее:
a/ “перетащить” мышкой с панели элементов Toolbox текстовое поле TextBox1 и метку Label1 для ввода значения (a) входных символов конечного автомата КА и надписи Aлфавит А;
b/ аналогичную операцию проделать для текстового поля TextBox2 и метки Label2 для вывода выходных символов (v) КА и надписи Aлфавит V;
c/ текстовое поле TextBox3 и метку Label3 поместить для задания числа состояний КА и надписи Множество Q;
d/ “перетащить” мышкой с панели элементов кнопку Button1 и в открытом окне Свойства (Properties) в свойстве Text ввести надпись Синтез для создания КА;
e/ аналогичную операцию проделать для
кнопку Button2 и в открытом окне Свойства
(Properties) в свойстве Text ввести надпись Пуск для начала работы КА;
f/ аналогичную операцию проделать для
кнопку Button3 и в открытом окне Свойства
(Properties) в свойстве Text ввести надпись Стоп для завершения работы
КА ;
g / “перетащить” мышкой с панели элементов таблицу DataGridView и в открытом окне Свойства (Properties) в свойстве Columns сформировать 4 столбца и ввести их обозначения q_a1, v_a1 и q_a2, v_a2.
3. Создание обработчиков событий
Двойное нажатие кнопки Синтез формирует первый обработчик событий
private void button1_Click(object sender, EventArgs e)
{
}
где между фигурными скобками будет создана программа, синтезирующая КА, а двойное нажатие кнопки Пуск формирует второй обработчик событий
private void button2_Click(object sender, EventArgs e)
{
}
где между фигурными скобками будет создана программа, определяющая работу КА, а двойное нажатие кнопки Стоп формирует третий обработчик событий
private void button3_Click(object sender, EventArgs e)
{ }
где между фигурными скобками ввести команду Close() для завершения работы программы.
4. Разработка программы
a/ Синтез КА
Программа создается в первом обработчике событий кнопки Синтез:
private void button1_Click(object sender, EventArgs e)
{
dGV.Rows.Clear();
int q = int.Parse(textBox3.Text); //инициализация числа состояний КА
KA.Q = 0; //инициализация начального состояний КА
Random x = new Random(); //задание случайной переменной х
for (int i = 0; i < q; i++) //задание цикла случайного ввода
{ dGV.Rows.Add(x.Next(q), x.Next(2), x.Next(q), x.Next(2));
//создание заголовка каждого ряда КА, например, для 1 ряда – q0
dGV.Rows[i].HeaderCell.Value = "q" + i.ToString(); }}
На рис.3 показано задание 4-х состояний КА Q={q0, q1, q2, q3}, вводимых в заголовки каждого ряда КА. В первом ряду КА, обозначенном - q0, первая ячейка x.Next(q)=0, что соответствует состоянию q0, вторая ячейка x.Next(2)=1, что соответствует выходному сигналу v=1, третья ячейка x.Next(q)=3, что соответствует состоянию q3, а четвертая ячейка x.Next(2)=1, что соответствует выходному сигналу v=1, при этом x.Next(2) означает, что случайный выбор осуществляется с равной вероятностью из 2-х значений – 0 и 1, а x.Next(q) означает, что случайный выбор осуществляется с равной вероятностью из 4-х состояний – q0, q1, q2, q3. Напоминаем, что начальное состояние КА – q0 (KA.Q = 0).
Рис. 3. Синтезированный КА
б/ Работа КА
Программа создается во втором обработчике событий кнопки Пуск:
private void button2_Click(object sender, EventArgs e)
{
int a = int.Parse(textBox1.Text); //инициализация входного символа 0 или 1
if (a == 0)
{
KA.V = (int)dGV[1, KA.Q].Value; //формирование выходного символа
KA.Q = (int)dGV[0, KA.Q].Value; //переход в очередное состояний КА
}
else
{
KA.V = (int)dGV[3, KA.Q].Value; //формирование выходного символа
KA.Q = (int)dGV[2, KA.Q].Value; //переход в очередное состояний КА
}
textBox2.Text = KA.V.ToString();//выдача выходного символа
textBox3.Text = KA.Q.ToString();//показ очередного состояния КА
}
На рис.4 показано, что при подаче на вход а=1, КА из состояния q0 переходит в q3,Рис. 4. Работа КА
а на выходе формируется выходной сигнал v=1.
б/ Завершение работы КА
Нажатие кнопки Стоп включает третий обработчик событий
private void button3_Click(object sender, EventArgs e)
{
Close();
}
где выполняется команда Close(), что прекращает работу
программы.
5. Работа программы
a/ запустить программу с отладкой (без компиляции), нажатием кнопки F5;
b/ ввести значение числа состояний КА в текстовое поле TextBox3;
c/ нажать кнопку Синтез, что создает КА;
d/ ввод входных сигналов а и нажатие кнопки Пуск обеспечивает работу КА;
e/ нажать кнопку Стоп для прекращения работы КА.
В результате выполнения курсовой работы мною были создана программа, обладающая удобным, понятным и простым пользовательским интерфейсом. Были закреплены приобретённые на лабораторных и практических занятиях навыки алгоритмизации и программирования задач с использованием структурного подхода. Выполнение курсовой работы послужило хорошим опытом для моих дальнейших научных изысканий. Бесценная возможность создания собственных программных продуктов, от постановки задачи, до написания инструкции пользователя, что является хорошим стимулом для работы любого начинающего программиста.