Четвер, 18.04.2024
Творча лабораторія

Навчальні посібники та робочі зошити з інформатики - якісно і дешево


Меню сайту
Реклама
Категорії каталогу
MS Visual C++ 2005 Express Edition [3]
Середовища програмування [8]
Особливості встановлення та використання різних середовищ програмування
MS Visual Basic 6 [1]
Microsoft Visual Basic
C# [8]
Програмування мовою C#
C++ [3]
Паскаль [5]
ЛОГО [1]
Олімпіадне програмування [0]
Python [1]
Головна » Статті » Програмування » C#

Навчальний проект "Розв'язування трикутників" (C#, SharpDevelop)

Нові статті

[19.02.2020] [C#]
Задача про розрізання квадрата (ООП, C#)
[09.02.2020] [Python]
Задача про розрізання квадрата (ООП, Python)
[06.02.2020] [Паскаль]
Задача про розрізання квадрата (ООП, Free Pascal)

Пилипчук О.П., вчитель інформатики Гаврилівської ЗОШ Теофіпольського району Хмельницької області

Навчальний проект "Розв'язування трикутників" (C#, SharpDevelop)

Пропонований проект демонструє, що навіть початківець з мінімальними навичками програмування у сучасних візуальних середовищах може розробляти досить ефектні програми. Для реалізації потрібно вміти:

  • встановлювати на форму і змінювати деякі властивості (розміри, розміщення, підпис Text) форми, кнопок, текстових полів і написів;
  • використовувати оператор присвоєння;
  • записувати математичні вирази.

Після виконання проекту можна:

  • навчитись створювати проекти, що включають декілька вікон;
  • зрозуміти різницю між звичайним і модальним режимами відкривання вікна;
  • навчитись  забезпечувати при виконанні програми відкривання вікон в різних режимах;
  • при виконанні додаткового завдання 5 можна ознайомитися з засобами обробки виняткових ситуацій.

Задача

Розробити програму для розв'язування трикутників різних видів (тобто, для знаходження невідомих елементів трикутника за певним набором відомих елементів).

Опис роботи програми

 1. Головне вікно програми після запуску має такий вигляд:
 

  


2. Після клацання кнопки з вибраним типом трикутника головне вікно стає недоступним, натомість відкривається інше вікно, наприклад, таке (для прямокутного трикутника):

 

 


При закриванні цього вікна знову стає доступним головне вікно. Такий режим відкривання діалогового вікна називається модальним.

3. Після клацання кнопки з переліком відомих елементів трикутника в модальному режимі відкривається наступне вікно, в якому можна ввести дані і отримати результати обчислень. Наприклад, для відомих гіпотенузи і гострого кута вікно може бути таким:

 

 


4. Після введення даних і клацання кнопки "=" з'являються написи з результатами:

 

 


5. При спробі змінити після обчислення дані в текстових полях, результати попереднього обчислення мають зникати.

 

Послідовність виконання

1)    Створити проект за шаблоном Windows Application.
2)    На головній формі розмістити кнопки та написи так, як показано на малюнку вище. Налаштувати властивості форми (розміри, заголовок Text).
3)    Додати до проекту опис ще однієї форми. Для цього виберіть команду меню Project->Add->New Item...(див. малюнок):

 

 

Після цього (див. малюнок):

  1. виберіть категорію C#, у ній -підкатегорію Windows Applications;
  2. у полі Templates (Шаблони) відшукайте і виберіть шаблон Form (Форма);
  3. у текстове поле File Name (Назва файлу) уведіть pramokut.cs і натисніть Create (Створити).

 


Нехай це буде форма для уточнення елементів прямокутного трикутника, як на малюнку вище. Розмістіть на ній кнопки Два катети, Катет і гіпотенуза, Гіпотенуза і гострий кут та напис "Які елементи відомі?".

4)    Додайте до проекту опис ще однієї форми (у файлі gipotenuzaandkut.cs) і розмістіть на ній елементи для ведення діалогу: 2 текстові поля TextBox, кнопку Button і 6 написів Label (див. малюнок):

 

   


У нижній половині малюнка - три написи (елемент Label), в яких замість тексту (властивість Text) вписані зірочки.

5)    А зараз налаштуємо роботу програми так, щоб вікна відкривались у потрібній послідовності. Перейдіть до вікна з макетом головної форми. Це можна зробити, клацнувши вкладку з назвою файлу MainForm.cs, а потім у нижній частині сторінки - вкладку Design (Дизайнер).

6)    При клацанні на кнопці Прямокутний має відкриватись форма pramokut. Двічі клацніть згадану кнопку і ви побачите шаблон процедури-обробника події: заголовок та фігурні дужки, між якими блимає курсор. Додайте між ними два рядки за таким зразком:

   void Button1Click(object sender, EventArgs e)
   {
     pramokut F = new pramokut();
     F.ShowDialog();
   }

Таким чином, кнопка спричинятиме:

  • створення нового об'єкта F класу pramokut;
  • виклик для цього об'єкта методу ShowDialog. Форма при цьому буде показана у модальному режимі, тобто до її закриття попередня форма буде недоступною. Якщо ж замість цього вибрати метод Show, то друга форма відкриється у звичайному режимі.

7)  Зрозуміло, що кнопка Гіпотенуза і гострий кут відкриє в модальному режимі третю форму, якщо її обробник зробити таким:

   void Button1Click(object sender, EventArgs e)
   {
     gipotenuzaandkut F=new gipotenuzaandkut();
     F.ShowDialog();
   }

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

8)    Залишилось забезпечити функціонування елементів третьої форми, які мають забезпечувати діалог з користувачем і обчислення. Двічі клацніть на кнопці "=" і допишіть у програмний код такі рядки (крім заголовка та фігурних дужок, які з'являться самі :):
   void Button1Click(object sender, EventArgs e)
   {
     double G = double.Parse(textBox1.Text);
     double a = double.Parse(textBox2.Text);
     double k1 = Math.Round(G * Math.Sin(a * Math.PI / 180), 2);
     double k2 = Math.Round(G * Math.Cos(a * Math.PI / 180), 2);
     label4.Text = string.Concat("Довжини катетів: ", k1.ToString(), " та ", k2.ToString());
     label5.Text = "Периметр: " + (G + k1 + k2).ToString();
     label6.Text = "Площа: " + (k1 * k2 / 2).ToString();
   }


Розглянемо їх детальніше.

   double G = double.Parse(textBox1.Text);

- змінна G (гіпотенуза) отримує своє значення з текстового поля textBox1. При цьому метод double.Parse перетворює текстове значення властивості Text у число. Подібним чином отримує значення змінна a (кут альфа).

   double k1 = Math.Round(G * Math.Sin(a * Math.PI / 180), 2);

- змінна k1 (катет 1) набуває значення, отриманого при обчисленні виразу. Функція Round округлює це значення до 2-ї цифри після коми. А якраз на місці аргументу функції Sin записаний вираз для переведення кута в радіанну міру. Подібним чином отримує значення й змінна k2 (другий катет).

   label4.Text = "Довжини катетів: " + k1.ToString() + " та " + k2.ToString());
   label5.Text = "Периметр: " + (G + k1 + k2).ToString();


- нарешті - виведення результатів. Значення змінних ( k1,k2) і навіть виразів (G + k1 + k2) метод ToString перетворює на текстові рядки, які, після з'єднання з пояснювальним текстом (знак "+"), виводяться на відповідні елементи Label (властивість Text).

9)    За умовою, результати обчислень мають зникати, якщо користувач змінить текст у будь-якому з текстових полів. Двічі клацнувши одне з текстових полів, допишіть обробник події, щоб він став таким:

        void TextBox1TextChanged(object sender, EventArgs e)
        {
            label6.Text=label5.Text=label4.Text="*";
        }

Оскільки це - обробник події ТекстЗмінено (TextChanged), то він якраз і буде викликаний тоді, коли зміниться текст. А в ньому написано, що кожен з написів, на яких виведені результати, змінить значення властивості Text на зірочку.

10) Звичайно, цей самий обробник слід зв'язати і з другим текстовим полем. Для цього виділіть друге текстове поле і виконайте такі кроки (див. малюнок):

  1. перейдіть до переліку пов'язаних з цим текстовим полем подій;
  2. відшукайте у лівому стовпці подію TextChanged;
  3. розкрийте список доступних обробників подій;
  4. виберіть обробник TextBox1TextChanged

 


11) Нарешті - запуск діючої програми! Звичайно, якщо в текст не "вскочила" помилка. Оскільки форми створені не для всіх видів обчислень, то й функціональність проекту "трохи" обмежена. На головній формі діє кнопка Прямокутний, на другій формі - кнопка Гіпотенуза і гострий кут, а відкрите нею діалогове вікно виконує свої функції. Доки користувач з ним працює, інші вікна недоступні.

 

Завдання

  1. Забезпечте округлення до 2-х цифр після коми значень периметру та площі у вікні За гіпотенузою й гострим кутом.
  2. Створені вікна мають недолік: їх розміри можна змінити за допомогою миші, що для даного проекту небажано. Виправте це, задавши для властивості кожної з форм FormBorderStyle значення FixedDialog.
  3. Доповніть проект діалоговими вікнами, що відкриваються кнопками Два катети і Катет і гіпотенуза.
  4. Налаштуйте функціонування кнопок РівнобедренийРівносторонній та  Довільний головної форми.
  5. Вікно За гіпотенузою й гострим кутом має серйозний недолік: при введенні у текстові поля нечислових даних після натискання кнопки "=" програма аварійно припиняє роботу. Один зі способів уникнути цього - використання обробки виняткових ситуацій. Програмний код, в якому може виникнути помилка, вміщують у конструкцію 
    try { ... небезпечний код ...
    }
    catch {... програмний код обробки помилки ...
    }
    finally {... програмний код, що виконується після обробки помилки ...
    }

    У нашому випадку достатньо команди обробника (див. пункт 8) помістити у секцію try і додати порожню секцію catch. Зробіть це і перевірте, як поводиться програма при уведенні помилкових даних.
  6. Доповніть діалогові вікна малюнками, що відповідають призначенню вікна. Наприклад, для вікна За гіпотенузою й гострим кутом малюнок може бути таким:

 

Текст доступний на умовах ліцензії Creative Commons Attribution-ShareAlike

 


Интернет реклама
Категорія: C# | Додав: teachlab (02.01.2013)
Переглядів: 4579 | Рейтинг: 5.0/1
Всього коментарів: 0
Додавати коментарі можуть тільки зареєстровані користувачі.
[ Реєстрація | Вхід ]
Форма входу
Пошук
Друзі сайту

Підтримка

Система Orphus

Маєте свій сайт?
Заробіть на ньому грошей!


Не маєте власного сайту?
Заробіть на обміні файлами!
Статистика
Copyright Пилипчук О.П. © 2024
div id=