Лабораторная №6. Создание приложения - калькулятор выражений — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Лабораторная №6. Создание приложения - калькулятор выражений

2017-09-10 662
Лабораторная №6. Создание приложения - калькулятор выражений 0.00 из 5.00 0 оценок
Заказать работу

Целью лабораторной работы заключается закрепление навыков создания оконного приложения, библиотеки классов и их взаимодействие, а также расширенное изучение возможностей языка программирования C#.

Задание:

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

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

Данное оконное приложение было создано на основе калькулятора, рассмотренного в лабораторной работе №1, посредством добавления нового класса Expression, и создания нового приложения Windows Form. Стоит отметить, что в работе задействованные ранее созданные классы Number и Operation.

В текстовое окно будет вводиться численное выражение, а после нажатия кнопки «Расчет» будет производится расчет. Для разбиения выражения на отдельные составляющие необходимо создать новый класс Expression, в котором будут распознаваться символы, и будет производиться простой расчет.

Создаем форму главного окна приложения.

Создаем класс Expression.

namespace Numbers

{

/* Алгоритм разбора текстового алгебраического выражения

Пример: "2.6 + 2 - 1 * 3 / 2"

1. Удаляем все пробелы из строки

Пример: "2.6+2-1*3/2"

2. Организуется цикл перебора всех символов строки выражения

3. Выделяем текущий символ в строке

Пример: "2" и сохраняем в переменную числа

4. Набираем символы числа до тех пор, пока не обнаружится символ операции

Пример: "2.6"

5. При обнаружении символа операции сохраняем символ операции и

вызываем повтор разбора выражения, которой будет передаваться выражение

Пример: "2-1*3/2"

6. Операции продолжаются до тех пор пока не будет разобраны все символы

*/

 

// Класс для калькулятора выражений

public class Expression

{

// Переменная состояния

int state = 0;

// Переменная числа

string number = "";

// Переменная операции

string operation = "";

// Переменная вложенного разбора выражения

Expression expNext;

 

// Функция разбора выражения

public string Parse(string expression)

{

expression = expression.Replace(" ", "");

// Результат вычислений

string result = "";

// Состояние №0 - начальное состояние разбора строки выражения

// Состояние №1 - определение и выделение числа из строки

// Состояние №2 - определение и выделение оператора из строки

// Состояние №3 - расчет разобранного выражения

// Организуем цикл по символам строки выражения

for (int i = expression.Length-1; i >= 0; i--)

{

// Получение текущего символа строки expression

char c = expression[i];

// Состояние №0 или №1

if (state == 0 || state == 1)

{

if ((c >= '0' && c <= '9') || c == ',')

{

number = c + number; // Собираем число в отдельную переменную

state = 1; // Указываем новое состояние №1

}

else

state = 2; // Указываем новое состояние №2

}

// Состояние №2

if (state == 2)

{

if (c == '+' || c == '-' || c == '*' || c == '/')

{

operation = c.ToString(); // Сохраняем символ операции

state = 3; // Указываем новое состояние №3

}

}

// Состояние №3

if (state == 3)

{

if (i!= 0)

{

expNext = new Expression();

// Рекурсивный разбор строки выражения

result = expNext.Parse(expression.Substring(0, i));

break;

}

}

}

if (state == 1)

result = number;

else if (state == 3)

{

OperationType operType = OperationType.Сложение;

switch (operation)

{

case "+":

operType = OperationType.Сложение;

break;

case "-":

operType = OperationType.Вычитание;

break;

case "*":

operType = OperationType.Умножение;

break;

case "/":

operType = OperationType.Деление;

break;

}

Operation oper = new Operation(number, result, operType);

// Расчет простого выражения

result = oper.Execute();

}

else

result = "Ошибка!";

 

return result;

}

}

}

 

Теперь необходимо написать обработчик нажатия кнопки «Расчет» на форме.

namespace Calculator2

{

public partial class Form1: Form

{

// Обработчик события нажатия на кнопку «Расчет»

private void button1_Click(object sender, EventArgs e)

{

// Создаем экземпляр класса Expression

Expression exp = new Expression();

// Вызываем функцию Parse

textBox2.Text = exp.Parse(textBox1.Text);

}

 

}

}

 

Таким образом, был разработан калькулятор, распознающий выражение и производящий расчеты такие, как сложение, вычитание, умножение и деление. Разбор выражения, а соответственно и действия производятся по порядку слева направо.


Литература

1. Пунчик, Николай Николаевич. Windows для начинающих. Основы работы в Windows (любой версии - 95/98/2000/ME/XP/Vista/7) / Н. Н. Пунчик. — Минск: Дикта, 2010. — 176 с.: ил. — Шпаргалки для первокурсников. — ISBN 978-985-494-500-2.

2. Лебедев, Алексей Николаевич. Windows 7 и Office 2010. Компьютер для начинающих. Завтра на работу! / А. Н. Лебедев. — СПб.: Питер, 2011. — 251 с.: ил. — Самоучитель. — ISBN 978-5-49807-497-9.

3. Ватаманюк, Александр Иванович. Установка, настройка и восстановление Windows 7 / А. И. Ватаманюк. — СПб.: Питер, 2010. — 272 с.: ил. — На 100%. — ISBN 978-5-49807-603-4.

4. Станек, Уильям. Windows 7 для продвинутых: настройка, работа и администрирование: пер. с англ. / У. Станек. — СПб.: Питер, 2010. — 576 с.: ил. — ISBN 978-5-49807-728-4.

5. Мак-Федрис, Пол. Microsoft Windows 7. Полное руководство: пер. с англ. / П. Мак-Федрис. — Москва: Вильямс, 2010. — 800 с.: ил. — Предм. указ.: с. 794-799. — ISBN 978-5-8459-1614-3.

6. Леонов, Василий. Самоучитель Office 2010 / В. Леонов. — Москва: Эксмо, 2010. — 256 с.: ил. + CD-ROM. — Видеошкола. — Предметный указатель: с. 252-255. — ISBN 978-5-699-40762-0.

7. Стоцкий, Юрий А. Microsoft Office 2010 / Ю. А. Стоцкий, А. А. Васильев, И. С. Телина. — СПб.: Питер, 2011. — 425 с.: ил. — Самоучитель. — Алф. указ.: с. 417-425. — ISBN 978-5-49807-947-9.

8. Курбатова, Екатерина Анатольевна. Microsoft Office Excel 2010 / Е. А. Курбатова. — Москва: Вильямс, 2010. — 408 с.: ил. — Самоучитель. — Предметный указатель: с. 403-408. — ISBN 978-5-8459-1660-0.

9. Таллоч, Митч. Windows Server 2008 Server Core: пер. с англ.: справочник администратора / М. Таллоч. — СПб.: БХВ-Петербург, 2010. — 400 с.: ил. — Справочник администратора. —IT Professional. — ISBN 978-5-9775-0498-0. — ISBN 978-5-7502-0390-1.

10. Яремчук, С. А. Системное администрирование Windows 7 и Windows Server 2008 R2 / С. А. Яремчук, А. Матвеев. — СПб.: Питер, 2011. — 384 с.: ил. — На 100%. — ISBN 978-5-459-00461-8.

11. Нортроп, Тони. Проектирование сетевой инфраструктуры Windows Server 2008: пер. с англ. / Т. Нортроп, Дж. К. Макин. — 2-е изд., доп. — Москва: Русская редакция, 2012. — 720 с.: ил. — Учебный курс Microsoft. — Словарь терминов: с. 700-704. — ISBN 978-5-7502-0410-6.

12. Руссинович, Марк. Внутреннее устройство Microsoft Windows: пер. с англ. / М. Руссинович, Д. Соломон. — 6-е изд. — Санкт-Петербург: Питер, 2013. — 799 с.: ил. — Мастер-класс. — ISBN 978-5-496-00434-3.

13. Холме, Дэн. Эффективное администрирование. Ресурсы Windows Server 2008, Window Vista, Window XP, Window Server 2003: пер. с англ. / Д. Холме. — СПб.: БХВ-Петербург Русская Редакция, 2012. — 768 с.: ил. + CD-ROM. — Предм. указ.: с. 727-740. — ISBN 978-5-9775-0408-9. — ISBN 978-5-7502-0377-2.

14. Гальченко, Валерий Григорьевич. Системное программирование в WIN32. Создание Windows приложений [Электронный ресурс]: лабораторный практикум: учебное пособие / В. Г. Гальченко; Национальный исследовательский Томский политехнический университет (ТПУ). — 1 компьютерный файл (pdf; 2.05 MB). — Томск: Изд-во ТПУ, 2012. — Заглавие с титульного экрана. — Электронная версия печатной публикации. — Доступ из корпоративной сети ТПУ. — Системные требования: Adobe Reader.

15. Макки, Алекс. Введение в.NET 4.0 и Visual Studio 2010 для профессионалов: пер. с англ. / А. Макки. — Москва: Вильямс, 2010. — 416 с.: ил. — Для профессионалов. — Предметный указатель: с. 409-412. — ISBN 978-5-8459-1639-6.

16. Парфилова, Надежда Ивановна. Программирование. Основы алгоритмизации и программирования: учебник для вузов / Н. И. Парфилова, А. Н. Пылькин, Б. Г. Трусов; под ред. Б. Г. Трусова. — 2-е изд., испр. — Москва: Академия, 2014. — 240 с.: ил. — Высшее образование. Бакалавриат. —Информатика и вычислительная техника. — Библиогр.: с. 237. — ISBN 978-5-4468-0698-0.

17. Матюхин, Сергей Анатольевич. Программирование и основы алгоритмизации: учебное пособие / С. А. Матюхин; Национальный минерально-сырьевой университет "Горный". — Санкт-Петербург: Изд-во НМСУ "Горный", 2013. — 97 с. — Библиогр.: с. 94. — ISBN 978-5-94211-647-7.

18. Незнанов, Алексей Андреевич. Программирование и алгоритмизация: учебник / А. А. Незнанов. — Москва: Академия, 2010. — 304 с. — Высшее профессиональное образование. Информатика и вычислительная техника. — Библиогр.: с. 301. — ISBN 978-5-7695-6767-4.

19. Программирование: учебник: в 2 т. / под ред. Н. И. Пака. — Москва: Академия, 2013. — Высшее профессиональное образование. Информатика. —Бакалавриат. — ISBN 978-5-7695-9594-3.

20. Гавриков, Михаил Михайлович. Теоретические основы разработки и реализации языков программирования: учебное пособие / М. М. Гавриков, А. Н. Иванченко, Д. В. Гринченков. — Москва: КноРус, 2010. — 178 с.: ил. — Библиогр.: с. 178. — ISBN 978-5-406-00121-9.

21. Вирт, Никлаус. Алгоритмы и структуры данных. Новая версия для Оберона CD: пер. с англ. / Н. Вирт. — Москва: ДМК Пресс, 2010. — 272 с.: ил. + CD-ROM. — Классика программирования. — Библиография в конце глав. — Предметный указатель: с. 270-272. — ISBN 978-5-94074-584-6.

22. Леоненков, Александр Васильевич. Объектно-ориентированный анализ и проектирование с использованием UML и IBM Rational Rose: учебное пособие / А. В. Леоненков. — Москва: БИНОМ. Лаборатория знаний Интернет-Университет информационных технологий, 2010. — 320 с.: ил. — Основы информационных технологий. — Библиогр.: с. 317-318. — ISBN 978-5-9556-0043-7. — ISBN 978-5-94774-408-8.

23. Биллиг, Владимир Арнольдович. Основы объектного программирования на С#(С# 3.0, Visual Studio 2008): учебное пособие / В. А. Биллиг. — Москва: Интернет-Университет Информационных Технологий БИНОМ. Лаборатория знаний, 2010. — 582 с.: ил. — Основы информационных технологий. — ISBN 978-5-9963-0259-8.

24. Павловская, Татьяна Александровна. C#. Программирование на языке высокого уровня: учебник для вузов / Т. А. Павловская. — Санкт-Петербург: Питер, 2013. — 432 с.: ил. — Учебник для вузов. — Библиогр.: с. 425-426. — Алф. указ.: с. 427-432. — ISBN 978-5-459-01048-0.

25. Немировский, Виктор Борисович. Программирование для инженеров [Электронный ресурс]: учебное пособие / В. Б. Немировский, А. К. Стоянов; Национальный исследовательский Томский политехнический университет (ТПУ). — 1 компьютерный файл (pdf; 1.2 MB). — Томск: Изд-во ТПУ, 2010. — Заглавие с титульного экрана. — Электронная версия печатной публикации. — Доступ из корпоративной сети ТПУ. — Системные требования: Adobe Reader.

26. Дёмин, Антон Юрьевич. Программирование на C# [Электронный ресурс]: учебное пособие / А. Ю. Дёмин, В. А. Дорофеев; Национальный исследовательский Томский политехнический университет (ТПУ), Институт кибернетики (ИК), Кафедра информатики и проектирования систем (ИПС). — 1 компьютерный файл (pdf; 2.3 MB). — Томск: Изд-во ТПУ, 2013. — Заглавие с титульного экрана. — Электронная версия печатной публикации. — Доступ из корпоративной сети ТПУ. — Системные требования: Adobe Reader.

27. Вайсфельд, Мэтт. Объектно-ориентированное мышление: пер. с англ. / М. Вайсфельд. — Санкт-Петербург: Питер, 2014. — 304 с.: ил. — Библиотека программиста. — Библиография в конце глав. — ISBN 978-5-496-00793-1.

28. Иванова, Галина Сергеевна. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина. — Москва: Изд-во МГТУ, 2014. — 456 с.: ил. — Библиогр.: с. 450. — Предметный указатель: с. 451-452. — ISBN 978-5-7038-3921-8.

29. Рихтер, Джеффри. CLR via C#. Программирование на платформе Microsoft.NET Framework 4.0 на языке C#: пер. с англ. / Дж. Рихтер. — 3-е изд. — СПб: Питер, 2012. — 928 с.: ил. — ISBN 978-5-459-00297-3.

30. Хорев, Павел Борисович. Объектно-ориентированное программирование: учебное пособие / П. Б. Хорев. — 3-е изд., испр. — Москва: Академия, 2011. — 448 с.: ил. — Высшее профессиональное образование. Информатика и вычислительная техника. —Бакалавриат. — Библиогр.: с. 444-445. — ISBN 978-5-7695-8091-8.

31. Павловская, Татьяна Александровна. C#. Программирование на языке высокого уровня: учебник для вузов / Т. А. Павловская. — Санкт-Петербург: Питер, 2014. — 432 с.: ил. — Учебник для вузов. — Библиогр.: с. 425-426. — Алф. указ.: с. 427-432. — ISBN 978-5-496-00861-7.

32. Вагнер, Билл. С#. Эффективное программирование: 50 рекомендаций по усовершенствованию программирования на C#: пер. с англ. / Б. Вагнер. — Москва: Лори, 2013. — 256 с. — ISBN 978-5-85582-349-3.

 


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.036 с.