Глава 13. Степени, корни, логарифмыи факториалы
Теперь в шаблон файла Form9.cs необходимо написать нашу часть кода для выполнения расчетов. Для возведения числа “x” в различные степени (при помощи первой кнопки со знаком “=” на данной форме Form9) дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.cs с шаблоном, в который записываем:
double x, x2, x3, x4, x5;
x = Convert.ToDouble(textBox1.Text);
x2 = Math.Pow(x,2);
textBox2.Text = x2.ToString();
x3 = Math.Pow(x,3);
textBox3.Text = x3.ToString();
x4 = Math.Exp(x);
textBox4.Text = x4.ToString();
x5 = Math.Pow(10,x);
textBox5.Text = x5.ToString();
textBox6.Focus();
Для вычисления степени или x^y (при помощи второй кнопки со знаком “=” на данной форме Form9) дважды щелкаем эту кнопку в режиме проектирования (рис. 13.1). Появляется файл Form9.cs с шаблоном, в который записываем:
double x, y, x2;
x = Convert.ToDouble(textBox1.Text);
y = Convert.ToDouble(textBox6.Text);
x2 = Math.Pow(x,y);
textBox7.Text = x2.ToString();
textBox11.Focus();
Для вычисления корней ( или sqrt(x); или x^(1/3); или x^(1/y) при помощи третьей кнопки со знаком “=” на форме Form9, дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.cs с шаблоном, в который записываем:
double x, x2, c, x3, x4, y;
x = Convert.ToDouble(textBox1.Text);
x2 = Math.Sqrt(x);
textBox8.Text = x2.ToString();
c = 1/3.0;
x3 = Math.Pow(x,c);
textBox9.Text = x3.ToString();
y = Convert.ToDouble(textBox6.Text);
if (y!=0)
{
c = 1/y;
x4 = Math.Pow(x,c);
}
else x4 = 0;
textBox10.Text = x4.ToString();
textBox11.Focus();
Для вычисления корня или a^(x/y) при помощи четвертой кнопки со знаком “=” на форме Form9 дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.cs с шаблоном, в который записываем:
double x, y, a, c, x4;
x = Convert.ToDouble(textBox1.Text);
y = Convert.ToDouble(textBox6.Text);
a = Convert.ToDouble(textBox11.Text);
if (y!=0)
{
c = x/y;
x4 = Math.Pow(a,c);
}
else x4 = 0;
textBox12.Text = x4.ToString();
textBox13.Focus();
Для вычислений трех логарифмов или ln(x); или log(x); или log[y](x) при помощи пятой кнопки со знаком “=” на форме Form9, дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.cs с шаблоном, в который записываем:
double x, x2, x3, x4=0, x5=1, x6, y;
x = Convert.ToDouble(textBox1.Text);
y = Convert.ToDouble(textBox6.Text);
if (x!=0)
{
x2 = Math.Log(x);
}
else x2 = 0;
textBox13.Text = x2.ToString();
if (x!=0)
{
x3 = Math.Log10(x);
}
else x3 = 0;
textBox14.Text = x3.ToString();
if (x!=0) x4 = Math.Log10(x);
if (y!=0) x5 = Math.Log10(y);
x6 = x4/x5;
textBox15.Text = x6.ToString();
textBox16.Focus();
Для вычисления факториалов n!, где n – целое положительное число (при n=0, n!=1) при помощи шестой кнопки со знаком “=” на форме Form9 дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.cs с шаблоном, в который записываем:
long i, n, Fac=1;
n = Convert.ToInt64(textBox16.Text);
for (i=2; i<=n; i++)
Fac = Fac*i;
textBox17.Text = Fac.ToString();
В предыдущих главах мы разработали все основные эффекты анимации, которые связаны с пошаговыми изменениями свойств самой формы. А теперь приступим к разработке эффектов анимации, которые связаны с пошаговыми изменениями свойств элементов управления, которые мы размещаем на форме. И на данной форме эффект анимации разработаем для элемента управления, который мы, как правило, первым размещаем на панели, а именно, для рамки группы GroupBox. Создадим циклическое изменение (мигание) надписи при рамке группы (когда, например, мы хотим выделить эту надпись для пользователя).
Алгоритм данной анимации формулируем так:
после появления формы на ней начинает циклически изменяться (мигать) надпись, например, “Powers, Roots, Logarithms and Factorials” при рамке группы (с заданным нами выше в панели Properties интервалом времени для компонента Timer1).
Для программной реализации этого алгоритма (по разработанной в главе 2 методике) дважды щелкаем значок для компонента Timer ниже формы в режиме проектирования. Появляется файл с шаблоном, в который записываем:
//Объявляем булеву переменную myText со значением false:
bool myText = false;
private void timer1_Tick(object sender, EventArgs e)
{
//Вводим анимацию:
if (myText == false)
{
//Выводим название рамки:
this.groupBox1.Text =
"Powers, Roots, Logarithms and Factorials";
//Изменяем значение myText на противоположное:
myText = true;
}
else
{
//Удаляем название рамки:
this.groupBox1.Text = "";
//Изменяем значение myText на противоположное:
myText = false;
}
}
В этом коде в строке (this.groupBox1.Text = "";) между кавычками мы можем записать другой текст, который будет чередоваться с первой надписью.