Домашняя работа 1 Рис.1 – примерная форма Реализовать программу-калькулятор, примерная форма представлена на рис. 1. (Не забыть про возможность деления на 0). Первая программа под Windows Наша программа будет делить два числа, которые пользователь введет в двух TextBox'ох. Результат будет показываться в label'е. Запустите Visual Studio, создайте новый проект. Тип проекта выберите Visual C#, в качестве шаблона возьмите Windows Application: Нажмите на OK. Разместите на форме 2 TextBox'а, label и кнопку. Форма будет выглядеть приблизительно так: Из косметических изменений установите свойство Text для наших двух TextBox'ов в пустую строку. Сделайте на кнопке двойной щелчок для создания заготовки для кода. Внесите в нее следующие строки: private void button1_Click(object sender, System.EventArgs e) { int result = Convert.ToInt32(textBox1.Text)/Convert.ToInt32(textBox2.Text); label1.Text=result.ToString(); } Код, в общем-то, не сложный, хотя без конвертации типов не обошлось. Это мы делаем в выражениях типа ... Convert.ToInt32(textBox1.Text) ... Результатом такого выражения будет превращение строки типа "23" в число 23. После того, как мы разделили одно число на другое, результат надо опять превратить в строку. Делаем мы это с помощью метода .ToString(): ... label1.Text=result.ToString(); ... А вот примерный результат программы: Все вроде хорошо, но ведь обязательно найдется пользователь, котрый захочет разделить на ноль. Как-то эту ситуацию надо предусмотреть. Перехватываем ошибки Мы с вами написали первую программу для Windows на C#. У нее было много недостатков, в частности, не была предусмотрена ситуация, когда пользователь попытается разделить на ноль. Также не было предусмотрено, если пользователь вообще попытается ввести не число, а, скажем, буквы. Вот этим мы сейчас и займемся. Для обработки ошибок в C# предусмотрен так называемый механизм исключений. Самое важное, что пока надо понять - это то, что исключения являются экземплярами классов. Все классы для исключений являются потомками класса System.Exception (либо класс исключения совпадает с самим классом System.Exception). Раз исключения - это классы, то у них есть методы и свойства. Исключения бывают как предопределенные (т. е. соответствующие классы уже существуют в системе .NET-классов), так и заданные программистом (в этом случае программист должен объявить собственные, производные от System.Exception классы). Давайте изменим текст программы прошлого урока так, чтобы программы не вылетала с ошибкой, когда мы делим на ноль или вообще вводим не число. Вот текст нового обработчика щелчка на кнопке: private void button1_Click(object sender, System.EventArgs e) { int result=0; // Пытаемся произвести деление. try { result = Convert.ToInt32(textBox1.Text)/Convert.ToInt32(textBox2.Text); label1.Text=result.ToString(); } // Обрабатываем деление на ноль. catch(DivideByZeroException ex) { label1.Text = ex.Message; } // Обрабатываем отальные ошибки. catch { label1.Text = "Неизвестная ошибка!"; } } Как вы видите, мы заключаем потенциально опасную операцию в блок try: // Пытаемся произвести деление. try { ... } Заключение в такой блок означает, что возникшую в нем ошибку мы сможем ниже обработать. После блока try может идти один или несколько блоков catch. Каждый catch обслуживает свой вид исключения, которое указывается в скобках после catch. Если после catch в круглых скобках ничего не указать, то это будет обработчик по умолчанию (т. е. если исключение не было обработано одним из предыдущих обработчиков, то оно обработается тут). У нас обработчиков catch два - у первого параметром идет исключение деления на ноль, второй обрабчик - это обработчик по умолчанию: // Обрабатываем деление на ноль. catch(DivideByZeroException ex) { label1.Text = ex.Message; } // Обрабатываем остальные ошибки. catch { label1.Text = "Неизвестная ошибка!"; } Обратите внимание, что для обработчика деления на ноль мы в label выводим текст сообщения для возникшего исключения: ... label1.Text = ex.Message; ... Для конструкции try есть еще необязательный блок finally, который мы не используем. После запуска наша программа будет выдавать при делении на ноль соответствующее сообщение: При вводе же не чисел будет выдаваться сообщение "Неизвестная ошибка!": Домашняя работа 2 Разработать приложение – аналог текстового редактора. использовать компоненты: -меню - контекстное меню - строку состояния - Панель инструментов Цель- научиться Домашняя работа 3 (Отчет по Вычислительной практике) Создать иерархию классов. Создать приложение, демонстрирующее эту иерархию. Экранная форма, демонстрирующая иерархию классов Животные, может выглядеть следующим образом Рис. 4.2.Звук для Cat Рис. 4.3. Сообщение об ошибке