Практическое занятие № 1 

 

ТЕМА: Расчет элементарных выражений

ЦЕЛЬ РАБОТЫ: получить практические навыки по использованию стандартных функций C# при решении задач

 

Ход работы

 

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

 

 

Окно должно запускаться по центру экрана, выключить возможность изменения размера окна и убрать кнопку для разворачивания окна на весь экран. Название программы "Расчеты функции". Для программы задайте произвольный значок-иконку.

 

Указания: запустите среду разработки "Visual Studio". В окне щелкните на кнопке "Создать проект". В следующем окне выберите тип проекта "Приложение Windows Form" и в поле "Имя" укажите произвольное имя нового проекта.

В результате отобразится форма для проектирования интерфейса.

Для формы задайте следующие свойства: FormBorderStyle=FixedSingle (окно не растягивается), MaximizeBox=False (нет кнопки разворачивания окна), Text=Расчеты функции (заголовок формы), Icon=укажите файл иконки (значок формы), StartPosition=CenterScreen (окно по центру экрана);

 

В окне разместите четыре текстовых поля для ввода исходных данных и одно поле для отображения результата. Каждое поле должно иметь разный цвет фона, всплывающую подсказку. Выравнивание в полях, шрифт, размер и начертания символов произвольные. В поле для ответа отключить возможность его редактирования с клавиатуры. Для каждого поля с помощью надписей присвойте горячие клавиши.

 

Указания: на форме разместите пять текстовые поля (компонент TextBox), для которых установите следующие свойства: Text очистить (начальное значение поля), BackColor=укажите цвет (цвет фона), TextAlign = выравнивание на ваш выбор, Font=параметры шрифта в поле.

Для создания всплывающей подсказки нанесите на форму компонент ToolTip и задайте свойства: ShowAlways = true (отображать подсказки автоматически). Также можете настроить внешний вид подсказок с помощью свойств: BackColor, IsBaloon, ToolTipIcon, ToolTipTitle. После добавления данного компонента во всех других компонентах на форме появится свойство ToolTip on ToolTip1, в котором можно ввести тексты подсказок для нужных компонентов.

 В поле TextBox5 установите свойство Enabled=false (блокирование доступа к полю на форме). Возле каждого из полей разместите надпись  (компонент Label) и в свойстве Text введите текст для подписывания каждой надписи, при этом перед нужной буквой в надписи введите символ &.

Для того, чтобы надпись позволяла переходить в нужное текстовое поле необходимо у соответствующей надписи установить свойство TabOrder на 1 меньше, чем это же свойство у поля. Наиболее просто поменять эти свойства, если щелкнуть на панели инструментов на кнопке "Последовательность перехода" .В результате возле каждого элемента на форме появится рамка с текущим значением свойства TabOrder. Двойным щелчком в рамке можно изменить эти значение по вашему усмотрению. По завершении редактирования нажмите на кнопку " Последовательность перехода " еще раз.

 

Разместите на форме кнопку для очистки полей. Кнопка должна иметь рисунок и реакцию на нажатие Escape. При наведении указателя мыши на кнопку, вид указателя должен меняться на заданный.

 

Указания: на форме разместите кнопку Button, задав ей следующие свойства: Text=Очистить (надпись на кнопке), Cursor=любой вид указателя мыши при наведении на кнопку, Image - укажите произвольную иконку для кнопки, ImageAlign = MiddleLeft (тип расположения иконки на кнопке).

Чтобы кнопка реагировала на клавишу Escape, выделите форму и в свойстве CancelButton укажите имя созданной кнопки.

 

Кнопка должна выдавать запрос на осуществление операции и очищать поля, если пользователь дал утвердительный ответ.

 

Указания: для создания кода кнопки выделите, перейдите в окно свойств кнопки (если окно не отображается, то щелкните по кнопке правой кнопкой мыши и выберите команду "свойства"), а затем в окне свойств щелкните на кнопке "События" . В результате откроется список событий. В этом списке найдите событие Click и выполните двойной щелчок справа от названия события. В результате откроется окно для ввода кода для кнопки.

Введите код:

 

void button1_Click(object sender, EventArgs e)

{

    //выдаем запрос на выполнение операции

    //если пользователь ответил "ДА"

    if (MessageBox.Show("Действительно очистить поля?",

                        "Подтвердите операцию",

                        MessageBoxButtons.YesNo,

                        MessageBoxIcon.Question,

                        MessageBoxDefaultButton.Button2)==DialogResult.Yes)

    {

        //очищаем все поля

        textBox1.Clear();

        textBox2.Clear();

        textBox3.Clear();

        textBox4.Clear();

        textBox5.Clear();

        //ставим курсор в первое поле

        textBox1.Focus();

    }

}      

 

Разместите на форме кнопку для выполнения расчетов. Кнопка должна иметь рисунок и реакцию на нажатие клавиши ENTER При наведении указателя мыши на кнопку, вид указателя должен меняться на заданный.

 

Указания: на форме разместите кнопку Button, задав ей следующие свойства: Text=Рассчитать (надпись на кнопке), Cursor=любой вид указателя мыши при наведении на кнопку, Image - укажите произвольную иконку для кнопки, ImageAlign = MiddleLeft (тип расположения иконки на кнопке).

Чтобы кнопка реагировала на клавишу Enter, выделите форму и в свойстве AccessButton укажите имя созданной кнопки.

 

Функция для расчетов имеет вид:

 

 

 

При этом должно спрашиваться разрешение на выполнение вычислений. Если разрешение получено (ответ "Да"), то вычисляется значение функции и ответ отображается в 5 поле с точностью до 3 знаков после запятой. Проверка: при a=1, b=8, c=3, d=2 ответ=2,644;

 

Указания: для создания кода кнопки выделите ее, в списке событий  найдите событие Click и выполните двойной щелчок справа от названия события. В результате откроется окно для ввода кода для кнопки.

Введите код:

 

void button2_Click(object sender, EventArgs e)

{

    //выдаем запрос на выполнение расчетов

    //если пользователь ответил "НЕТ"

    if (MessageBox.Show("Рассчитать выражение?",

                        "Подтвердите операцию",

                        MessageBoxButtons.YesNo,

                        MessageBoxIcon.Question,

                        MessageBoxDefaultButton.Button2)==DialogResult.No)

       //завершаем работу процедуры

       return;

 

 

    //описываем переменные для работы

    double a,b,c,d,rez;

    //каждое поле записываем как число в переменную

    a=Convert.ToDouble(textBox1.Text);

    b=Convert.ToDouble(textBox2.Text);

    c=Convert.ToDouble(textBox3.Text);

    d=Convert.ToDouble(textBox4.Text);

 

    //выполняем расчет выражения

    rez=(7+Math.Exp(Math.Sqrt(a)+1))/

        (Math.Sqrt(Math.Pow(Math.Log(Math.Pow(b,2)-5),3)-4)+

         Math.Sin(Math.Pow(c,2)))+Math.Pow(Math.Sin(d),3/4.0);

    //выводим в поле ответ с округлением до 3 знаков

    textBox5.Text=Convert.ToString(Math.Round(rez,3));

}

 

При выходе из программы запрашивать разрешение на выполнение данной операции.

 

Указания: для создания кода выделите форму, в списке найдите событие FormClosing и выполните двойной щелчок справа от названия события. В результате откроется окно для ввода кода.

Введите код:

 

void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

    //выдаем запрос на выход из программы

    //если пользователь ответил " НЕТ"

    if (MessageBox.Show("Выйти из программы?",

                        "Подтвердите операцию",

                        MessageBoxButtons.YesNo,

                        MessageBoxIcon.Question,

                        MessageBoxDefaultButton.Button2)==DialogResult.No)

        //активируем признак запрета выхода

        e.Cancel=true;

}