Создание обработчиков событий



 

Обработчики событий создаются аналогично тому, как и в преды-дущих лабораторных работах. Текст обработчика события нажатия на кнопку «Пуск» приведен ниже.

 

private void button1_Click(object sender, EventArgs e)

 

{

 

// Получение исходных данных из TextBox double x = Convert.ToDouble(textBox2.Text); double y = Convert.ToDouble(textBox1.Text);


 

36


 

double z = Convert.ToDouble(textBox3.Text);

 

// Ввод исходных данных в окно результатов textBox4.Text = "Результаты работы программы " +

 

"ст. Петрова И.И. " + Environment.NewLine;

 

textBox4.Text += "При X = " + textBox2.Text + Environment.NewLine;

textBox4.Text += "При Y = " + textBox1.Text + Environment.NewLine;

 

textBox4.Text += "При Z = " + textBox3.Text + Environment.NewLine;

 

// Вычисление выражения

double u;

 

if ((z ‐ x) == 0)

u = y * Math.Sin(x) * Math.Sin(x) + z; else

 

if ((z ‐ x) < 0)

u = y * Math.Exp(Math.Sin(x)) ‐ z;

 

else

u = y * Math.Sin(Math.Sin(x)) + z;

// Вывод результата

textBox4.Text += "U = " + u.ToString() + Environment.NewLine;

 

}

 

Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно.

 

Индивидуальные задания

 

По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x 2, e x.Отредактируйте вид формы и текст программы,в соответст-вии с полученным заданием.

 

Усложненный вариант задания для продвинутых студентов:с помо-щью радиокнопок (RadioButton) дать пользователю возможность во время работы программы выбрать одну из трех приведенных выше функций.


 

ì( f (x)+ y)2 -

f (x) y , xyñ0

 
ï            

1. a = íï( f (x) + y)2

+

 

f(x) y

 

, xyá0

 
     
ïï( f (x)+ y)2 + 1,       xy =0.  
î            

ì f ( x )2+ y 2+sin( y ), x - y =0

ï

3. c =ïí( f ( x )- y )2+cos( y ), x - yñ0

ïïî( y - f ( x ))2+tg( y ), x - yá0.


 

 

 

ìln( f (x)) + (f (x)2

+ y)3, x / yñ0  
 

ï

 

+( f (x)+ y)3, x / yá0

 

2.

ïln

 

f (x) / y

   
     

b = í

 

 

       
         
 

ïï( f (x)2+ y)3,

x =0  
 

ï

   

y =0.

 
 

î0,

     

ìï( f ( x )- y )3+arctg( f ( x )), x ñ y

4. d = ï( y - f ( x ) ) 3 + arctg ( f ( x ) ), y ñ x

í

ïï( y + f ( x ))3+0.5,           y = x.

 

î

 


37


 

 

ìi

 

f (x),

     

i - нечетное, xñ0

 
 

ï

                                           

5.

ï

   

f (x)

 

, i - четное, xá0

 

e = íi / 2

   
 

ï

 

if (x)

 

,

         

иначе.

 
 

ï

               
 

î

                                           
                                             
 

ìe f ( x),

         

xbá10

 
 

ï

                                           

7.

ï

   

f (x)

+ 4 * b

 

, 12á xbá40

 

s = í

       
 

ï

       

,

         

иначе.

 
 

ïbf (x)2

           
 

î

                                           
 

ì2 f (x)3

   

+ 3p 2 , xñ

 

p

 

 

 

 
           
 

ï

 

                                           

9.

f (x)- p

 

,

         

xá

 

p

   
l = í                  
  ï

 

                         

x = p .

 
 

îï( f (x)- p)2,

     
                                                   

11. m =max ((f (x), y,)z)+5.min f (x), y

13. p = min( f (x), y) - max( y, z) . 2

 

 

ì f (sin( x ))2+sin( f ( y )), x - y =0

 

15. c =ïí( f (cos( x )))+cos( f ( y )), x - yñ0ïïî( y - f (tg( x )))2+tg( y ), x - yá0.

 

ì f (x)3- y3×cos( x ), x + y =0

17. c = ïí( f (x) × y)2 - cos( y), x + yñ0 ïï( y × f (x))2+ p , x + yá0.

î

 

ìsin( f ( x )) + cos( f ( y )), x - y = 0 19. c = ïítg( f ( x + y ), x - yñ0

 

ïîsin 2 ( f ( x)) + cos 2 ( f ( y)), x - yá0.


 

   

ì

e

f ( x)-

 

b

 

,

                 

0.5áxbá10

 
                           
   

ï

                                   
                                                                     

6.

 

ï

     

f (x)

+ b

 

,

   

0.1áxbá0.5

 
               

g = í

             
    ï                

,

                 

иначе.

 
   

ï2 f (x)2

                   
    î                                                                  
   

ì

                 

+ 3m

   

f (x)

 

), - 1ámáx

 
                             
   

sin(5 f (x)

         

8.

j = íïcos(3 f (x)+5m

   

 

       

), xñm

 
   

f (x)

 

   
       
    ï                    

2

                                           
   

ï

                                                               
                   

) ,

                     

x = m.

 
   

î( f (x)+ m

                       
   

ìln(

 

f (x)

 

+

 

q

 

),

 

 

xq

   

ñ10

 
                   
   

ïe f

 

 

                               

 

             

10.

k =

( x)+q ,

                           

xq

 

 

á10

 
                               
  í                                                                  
   

ï

                                           

xq

   

= 10

 
                                                     
   

ï f (x)+ q,

                       

 

 
    î                                                                  

12. n = min ( f (x()+ y, y)- z). max f (x), y

q = max( f (x) + y + z, xyz).

14. min( f (x) + y + z, xyz)

 

ïì

(ax2 + 2)

   

f (x), 1<| x |<3,

 
   

 

 

 

)

 
 

ï (

x2

                       
 

ï

+1

                   
16.

a = ía 2+ f (x),

 

| x | ³ 3

 
 

ï

   

f(x)

                   
 

ï

   

,| x | £ 1.

 
                     
 

ïax ( x + 2)

 
 

ï

                                     
 

î

                 

),

               
 

ìln(

 

f (x2)

 

+

 

k

   

x × k

 

ñ10

 
               

18.

ï

                                       
     

,

           

x × k á10

 

k = íp

                 
 

ï f ( x)+ q

                                 
                                   
 

ï

                   

x × k

 

= 10

 
 

ï f (x)- k,

     
 

î

                                     
                                       
20.

r =max(min( f (x), y ), z ).

 

 


 

38


 

 

ЛАБОРАТОРНАЯ РАБОТА № 4.

 

ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ

 

Цель лабораторной работы: изучить простейшие средства отлад-ки программ в среде Visual Studio. Составить и отладить программу циклического алгоритма.

 

Операторы организации циклов

 

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

 

К операторам цикла относятся: цикл с предусловием while, цикл

с постусловием do while, цикл с параметром forи цикл перебора foreach. Рассмотрим некоторые из них.

 

Цикл с предусловием

 

Оператор цикла while организует выполнение одного оператора (про-стого или составного) неизвестное заранее число раз. Формат цикла while:

 

while (B) S;

 

где B – выражение, истинность которого проверяется (условие заверше-ния цикла); S – тело цикла – оператор (простой или составной).

 

Перед каждым выполнением тела цикла анализируется значение выражения В: если оно истинно, то выполняется тело цикла, и управле-ние передается на повторную проверку условия В; если значение В лож-но – цикл завершается и управление передается на оператор, следую-щий за оператором S.

 

Если результат выражения B окажется ложным при первой провер-ке, то тело цикла не выполнится ни разу. Отметим, что если условие B во время работы цикла не будет изменяться , то возможна ситуация за-цикливания, то есть невозможность выхода из цикла. Поэтому внутри тела должны находиться операторы, приводящие к изменению значения выражения B так, чтобы цикл мог корректно завершиться.

В качестве иллюстрации выполнения цикла while рассмотрим про-грамму вывода целых чисел от 1 до n по нажатию кнопки на форме:

 

private void button1_Click(object sender, EventArgs e)

 

{


 

39


 

int n = 10; // Количество повторений цикла int i = 1; // Начальное значение

while (i <= n) // Пока i меньше или равно n

{

MessageBox.Show(i.ToString()); // Показываем i i++; // Увеличиваем i на 1

 

}

 

}

 

Цикл с постусловием

 

Оператор цикла do while также организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Однако в отличие от цикла while условие завершения цикла проверяет-ся после выполнения тела цикла. Формат цикла do while:

 

do S while (B);

 

где В – выражение, истинность которого проверяется (условие заверше-ния цикла); S – тело цикла – оператор (простой или блок).

Сначала выполняется оператор S, а затем анализируется значение вы-ражения В: если оно истинно, то управление передается оператору S, если ложно – цикл завершается, и управление передается на оператор, следую-щий за условием B. Так как условие В проверяется после выполнения тела цикла, то в любом случае тело цикла выполнится хотя бы один раз.

 

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

 

Цикл с параметром

 

Цикл с параметром имеет следующую структуру:

 

for (<инициализация>; <выражение>; <модификация>)

 

<оператор>;

 

Инициализация используется для объявления и/или присвоения на-чальных значений величинам, используемым в цикле в качестве пара-метров (счетчиков). В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных

в части инициализации цикла, является цикл и вложенные блоки. Ини-циализация выполняется один раз в начале исполнения цикла.

Выражение определяет условие выполнения цикла:если его ре-зультат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с пара-


 

40


 

метром реализован как цикл с предусловием. В блоке выражение через запятую можно записать несколько логических выражений, тогда запя-тая равносильна операции логическое И (&&).

 

Модификация выполняется после каждой итерации цикла и служитобычно для изменения параметров цикла. В части модификация можно записать несколько операторов через запятую.

Оператор (простой или составной)представляет собой тело цикла.Любая из частей оператора for (инициализация , выражение, моди-фикация, оператор) может отсутствовать, но точку с запятой, опреде-

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

Пример формирования строки, состоящей из чисел от 0 до 9, разде-ленных пробелами:

 

string s = ""; // Инициализация строки

 

for (int i = 0; i <= 9; i++) // Перечисление всех чисел s += i.ToString() + " "; // Добавляем число и пробел

 

MessageBox.Show(s.ToString()); // Показываем результат

 

Данный пример работает следующим образом. Сначала вычисляет-ся начальное значение переменной i. Затем, пока значение i меньше или равно 9, выполняется тело цикла, и затем повторно вычисляется значение i. Когда значение i становится больше 9, условие – ложно и управление передается за пределы цикла.

 

Средства отладки программ

 

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

Ошибки первого уровня (ошибки компиляции) связаны с непра-вильной записью операторов (орфографические, синтаксические). При обнаружении ошибок компилятор формирует список, который отобра-жается по завершению компиляции (рис. 4.1). При этом возможен толь-ко запуск программы, которая была успешно скомпилирована для пре-дыдущей версии программы.

 

Рис. 4.1. Окно со списком ошибок компиляции


 

41


 

При выявлении ошибок компиляции в нижней части экрана появляет-ся текстовое окно (см. рис. 4.1), содержащее сведения обо всех ошибках, найденных в проекте. Каждая строка этого окна содержит имя файла, в ко-тором найдена ошибка, номер строки с ошибкой и характер ошибки. Для быстрого перехода к интересующей ошибке необходимо дважды щелкнуть на строке с ее описанием. Следует обратить внимание на то, что одна ошибка может повлечь за собой другие, которые исчезнут при ее исправле-нии. Поэтому необходимо исправлять их последовательно, сверху вниз и, после исправления каждой – компилировать программу снова.

 

Ошибки второго уровня (ошибки выполнения) связаны с ошибками выбранного алгоритма решения или с неправильной программной реа-лизацией алгоритма. Эти ошибки проявляются в том, что результат рас-чета оказывается неверным либо происходит переполнение, деление на ноль и др. Поэтому перед использованием отлаженной программы ее надо протестировать, т. е. сделать просчеты при таких комбинациях ис-ходных данных, для которых заранее известен результат. Если тестовые расчеты указывают на ошибку, то для ее поиска следует использовать встроенные средства отладки среды программирования.

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

 

 

Рис. 4.2. Фрагмент кода с точкой останова

 

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

 

с помощью команд Отладка → Шаг с обходом (без захода в методы) или Отладка → Шаг с заходом (с заходом в методы) (рис. 4.3).


 

42


 

Рис. 4.3. Отладка программы

 

Желтым цветом выделяется оператор, который будет выполнен. Значение переменных во время выполнения можно увидеть, наведя на них курсор. Для прекращения отладки и остановки программы нужно выполнить команду меню Отладка → Остановить отладку.

 

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

 

Порядок выполнения задания

 

З а д а н и е : Вычислить и вывести на экран таблицу значений функ-ции y = a·ln(x) при x, изменяющемся от x0 до x k с шагом dx, a – константа.

 

Панель диалога представлена на рис. 4.4. Текст обработчика нажа-тия кнопки Вычислить приведен ниже.

 

private void button1_Click(object sender, EventArgs e)

 

{

// Считывание начальных данных

double x0 = Convert.ToDouble(textBox1.Text); double xk = Convert.ToDouble(textBox2.Text); double dx = Convert.ToDouble(textBox3.Text); double a = Convert.ToDouble(textBox4.Text); textBox5.Text = "Работу выполнил ст. Иванов М.А." +

Environment.NewLine;

// Цикл для табулирования функции double x = x0;

 

while (x <= (xk + dx / 2))

{

double y = a * Math.Log(x);

textBox5.Text += "x=" + Convert.ToString(x) +

"; y=" + Convert.ToString(y) +

Environment.NewLine;

 

x = x + dx;

}

}

 

43


 

После отладки программы следует проверить правильность работы программы с помощью контрольного примера (см. рис. 4.4). Установите точку останова на оператор перед циклом и запустите программу . После попадания на точку остановки, выполните пошагово программу и про-следите, как меняются все переменные в процессе выполнения.

 

 

Рис. 4.4. Окно программы для табулирования функции

 

Индивидуальные задания

 

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

 

1) y = 10-2 bc / x + cos a 3 x, 2) y = 1.2(a-b)3e x2 + x,
x0= -1.5; x k =3.5;dx =0.5; x0= -0.75; x k = -1.5;dx = -0.05;
a = -1.25;b = -1.5;c =0.75; a =1.5;b =1.2;


 

44


 

3) y = 10-1 ax3tg(a - bx),

 

x 0 = -0.5;x k = 2.5;dx = 0.05;

 

a = 10.2;b = 1.25;

 

5) y = x4 + cos(2 + x3 - d),

 

x 0 = 4.6;x k = 5.8;dx = 0.2;

 

d = 1.3;

 

7) y = 9(x +15 x3 + b3 ),

 

x 0 = -2.4;xk = 1;dx = 0.2;

 

b = 2.5;


 

 

4) y = ax3 + cos2 (x3 - b),

 

x 0 = 5.3; x k = 10.3;dx = 0.25;

 

a = 1.35;b = -6.25;

 

6) y = x 2 + tg(5x + b / x),

 

x 0 = -1.5; x k = -2.5;dx = -0.5; b = -0.8;

 

8) y = 9x4 + sin(57.2 + x),

 

x0= -0.75; x k = -2.05;dx = -0.2;

 


 

9) y = 0.0025bx3 +  x + e0.82 ,

 

x0 = -1;xk = 4;dx = 0.5; b = 2.3;

 

11) y = x + x3 + a - bex ,

 

x0 = -4;x k = -6.2;dx = -0.2; a = 0.1;


 

 

10) y = x × sin( x + b - 0.0084),

 

x0 = -2.05;xk = -3.05;dx = -0.2; b = 3.4;

 

12) y = 9(x3 + b3 )tgx,

 

x 0 = 1;xk = 2.2;dx = 0.2;

 

b = 3.2;

 


13) y = x - b 1/ 2 / b3 - x3 3/ 2 + ln x - b , x0 = -0.73;xk = -1.73;dx = -0.1; b = -2;

15) y = 10-3 x 5/ 2 + ln x + b ,

 

x0 = 1.75;x k = -2.5;dx = -0.25; b = 35.4;


 

 

14) y = (x5/2 - b)ln(x2 +12.7), x0 = 0.25;xk = 5.2;dx = 0.3; b = 0.8;

 

16) y = 15.28 x -3 / 2 + cos(ln x + b), x0 = 1.23; xk = -2.4;dx = -0.3; b = 12.6;

 


17)

y = 0.00084(ln

 

x

 

5/ 4 + b) /(x2 + 3.82), 18)

y = 0.8×10-5 (x3 + b3 )7 / 6 ,

 
     
 

x0 = -2.35;x k = -2;dx = 0.05;

  x0 = -0.05;xk = 0.15;dx = 0.01;  
 

b = 74.2;

  b = 6.74;  
19)

y = (ln(sin(x3 + 0.0025)))3/2 + 0.8 ×10-3 ,

20) y = a + x2/3 cos(x + e x ),  
 

x0=0.12; x k =0.64;dx =0.2;

 

x0=5.62; x k =15.62;dx =0.5;

 
               
              a =0.41  

 


 

45


 

 

ЛАБОРАТОРНАЯ РАБОТА № 5.

 

КЛАССЫ И ОБЪЕКТЫ

 

Цель лабораторной работы: изучить основные понятия,относя-щиеся к классам и объектам, освоить динамическое создание объектов в программном коде.

 

Классы и объекты

 

В объектно-ориентированном подходе существуют понятия класс

 

и объект.

 

Класс –это программная единица,которая задает общий шаблондля конкретных объектов . Класс содержит все необходимые описа-ния переменных, свойств и методов, которые относятся к объекту. Примером класса в реальной жизни является понятие «автомобиль»: как правило, автомобиль содержит некоторое количество колес, две-рей, имеет какой-то цвет, но эти конкретные детали в классе не опи-сываются.

 

Объект –это экземпляр класса.Свойства объекта содержат кон-кретные данные, характерные для данного экземпляра. В реальной жиз-ни примером объекта будет конкретный экземпляр автомобиля с 4 коле-сами, 5 дверками и синего цвета.

 


Дата добавления: 2020-04-08; просмотров: 810; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!