Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 1
Лабораторна робота № 3
Лабораторна робота № 3
Тема роботи: Розробка та тестування програми з різними обробниками подій.
Мета роботи: Вивчення прийомів побудови додатка в середовищі C++Builder з різними обробниками подій.
Постановка завдання: перетворити поточне значення температури, задане в градусах Цельсія, в значення за Фаренгейтом.
Порядок проведення роботи
У цій лабораторній роботі вивчатимуться прийоми створення програми-додатка в середовищі C++Builder з різними обробниками подій.
Процес програмування робиться в два етапи.
- Проектування інтерфейсу.
- Розробка функцій інтерфейсу.
Порядок виконання
Частина І
Після виконання першої частини завдання повинні бути створені три окремі проекти.
I. Перший варіант програми.
1. Проектування інтерфейсу.
1. Відкрити меню File (файл) і клацнути на кнопці New Application нове застосування).
2. Помістити компонент Label у верхній лівий кут форми і замінити існуюче значення його властивості Caption значенням Температура.
3. Помістити компонент Edit праворуч від компонента Label. Встановити його властивість Name рівним edtTemperature, Width (ширина) - рівним 65 і очистити властивість Text.
4. Помістити у форму ще один компонент Label (відразу під написом "Температура"). Встановити його властивості Caption (заголовок) рівним значенню Результат.
5. Розмістити поряд з міткою "Результат" компонент Panel. Встановити його властивість Name рівним pnlResult, Caption (заголовок) - рівним "Нуль", а BevelOuter (зовнішній скіс) - bvLowered (нижчий).
6. Виділити компоненти Panel і Edit.
7. Клацнути правою кнопкою миші, щоб відобразити контекстне меню проектувальника форм (Form Designer (конструктор форм)). Вибрати команду Size (розмір).
8. У групах Width (ширина) і Height (висота) встановити параметр Shrink to smallest. (зменшити розмір вікна) Клацнути на кнопці ОК.
9. Вибрати форму. Встановити її властивості Height (висота) рівним значенню 150, Width (ширина) - 200, Caption (заголовок) - Перетворення температури і BorderStyle - bsSingle (поодинокий).
10. Для перегляду тексту файлу форм необхідно клацнути правою кнопкою миші і вибрати в контекстному меню команду View as Text. Щоб повернутися до форми потрібно клацнути правою кнопкою миші на тексті програми і вибрати в контекстному меню команду View as Form.
11. Зберегти проект.
2. Розробка функцій інтерфейсу.
Програма повинна працювати за допомогою події OnChange для компонента Edit. Ця подія настає при зміні тексту, що відображається в компоненті Edit.
Виконати для цього наступні дії.
1. Вибрати поле введення edtTemperature і клацнути на вкладці Events у вікні інспектора об'єктів (Object Inspector).
2. Двічі клацнути на значенні властивості для події OnChange. З'явиться редактор коду, і C++Builder автоматично згенерує обробник події - функцію з ім'ям edtTemperatureChange.
void __fastcall TForm1::edtTemperatureChange(TObject *Sender)
{
}
3. У порожнє тіло функції (між відкриваючою та закриваючою фігурними дужками) необхідно додати наступний код:
void __fastcall TForm1::edtTemperatureChange(TObject *Sender)
{
int iCelsius;
iCelsius = StrToIntDef (edtTemperature->Text,0);
pnlResult->Caption = FloatToStr(iCelsius * 1.8 +32);
}
У цьому фрагменті коду в першому рядку оголошується ціла змінна iCelsius, яка використовується для зберігання значення температури за Цельсієм, введеного в компоненті Edit.
У другому рядку програмного коду значення температури за Цельсієм введене в компонент edtTemperature (це значення зберігається у властивості edtTemperature->Text та має строковий тип) за допомогою функції StrToIntDef перетвориться до цілого типу і привласнюється змінній iCelsius.
Функція StrToIntDef дозволяє вказати значення, яким треба скористатися у випадку якщо рядок не надасть допустимого цілого значення (останній параметр функції).
Значення, що зберігається в змінній iCelsius, перетвориться в значення температури за Фаренгейтом. Оскільки результат перетворення виражається в числах з плаваючою точкою, необхідно використовувати функцію FloatToStr для його перетворення в строкове значення, яке потрібно привласнити властивості Caption компонента pnlResult.
Взагалі, якщо при виконанні обчислень змінна з плаваючою точкою отримує значення, яке має велику кількість цифр після десятинної точки, настільки велику, що така точність зображення цього значення не потрібна і при виведенні значення на екран можна обмежитись меншою кількістю значущих цифр після десятинної точки, використовують функцію FloatToStrF, яка дозволяє вивести у зображенні числа потрібну кількість позицій.
Наприклад, якщо дійсна змінна u=-256,38666, то після виконання програмного коду
pnlResult ->Caption = "Значення u= "+FloatToStrF(u,fffixed,8,2);
на панелі pnlResult зявиться текст " Значение u= -256.39".
При цьому під все число відводиться вісім позицій, із яких дві позиції займає його дробова частина.
Вивести результат на панель за допомогою функції FloatToStrF.
4. Зберегти проект.
5. Виконати проект, клацнувши Run/Run (Пуск/пуск).
II. Другий варіант програми, що вирішує поставлену задачу.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float iCelsius;
iCelsius = StrToFloat (Edit1->Text);
Panel1->Caption = FloatToStr(iCelsius * 1.8 +32);
}
III. Виконати роботу відповідно до варіанту
№ в |
Призначення програми |
Співвідношення для перерахунку |
1 |
Перерахунок швидкості вітру з м/с в км/год |
км/год = м/с*3.6 |
2 |
Перерахунок швидкості вітру з км/год в м/с |
км/год = м/с*3.6 |
3 |
Перерахунок маси з фунтів в кілограми |
1 фунт = 409.5 г |
4 |
Перерахунок маси з кілограмів у фунти |
1 фунт = 409.5 г |
5 |
Перерахунок кутових градусів в радіани |
360о = 2 радіан |
6 |
Перерахунок радіан в кутові градуси |
360о = 2 радіан |
7 |
Перерахунок довжини з метрів у фути |
1 фут = 0.305 м |
8 |
Перерахунок довжини з футів в метри |
1 фут = 0.305 м |
9 |
Перерахунок довжини з дюймів в сантиметри |
1 дюйм = 2.54 см |
10 |
Перерахунок довжини з сантиметрів в дюйми |
1 дюйм = 2.54 см |
11 |
Перерахунок кількості теплоти з калорій в джоулі |
1 калорія = 4.19дж |
12 |
Перерахунок кількості теплоти з калорій в ерги |
1 калорія = 4.19*107 эргів |
13 |
Перерахунок кількості теплоти з джоулів в калорії |
1 калорія = 4.19дж |
14 |
Перерахунок довжини з сантиметрів в дюйми |
1 дюйм = 2.54 см |
15 |
Перерахунок кількості теплоти з ергів в калорії |
1 калорія = 4.19*107 эргів |
Частина ІІ
Розробити програму, яка розраховує суму трьох чисел, введених у поля вводу Edit1, Edit2 та Еdit3. У програмі цим числам повинні відповідати змінні a, b та c. Поряд з кожним полем вводу потрібно розмістити пояснюючий надпис про імя змінної, яка вводиться у відповідне поле.
Виведення надписів, очистка полів вводу повинна відбуватись на етапі виконання програми у програмному коді, який розмістити у обробнику події для форми OnCreate. В цей обробник можна внести, наприклад, такий код:
Label1->Caption = “Введіть змінну а:”;
Edit1->Text = “”; або Edit1->Clear(); - призначений для очищення поля вводу.
Подія OnCreate відбудеться при створенні форми у оперативній памяті, тобто перед виведенням форми на екран.
Розмістити на формі кнопку Button1 (змінити надпис на кнопці у відповідності з функцією, яку вона виконує, також у обробнику OnCreate).
У обробник події OnClick для кнопки помістити програмний код, призначений для розрахунку суми чисел, які вводяться у поля вводу.
Результат (суму) вивести як текст на компонент Panel1 (до виведення результату надпис на панелі повинна бути відсутня, попереднє видалення надпису з панелі зробити також у обробнику OnCreate).
Подія OnKeyPress відбувається при натисканні на клавішу на клавіатурі, наприклад, при вводі даних у поле Edit. Значення веденого символу можна отримати, якщо «перехопити» цю подію за допомогою обробника події для Edit і ввести в нього приведений програмний код.
void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)
{
AnsiString cch;
cch = AnsiString(Key);
ShowMessage("KeyPress: Ви ввели символ "+ cch);
}
Якщо потрібно зробити активним якесь із полів вводу, наприклад, Edit1, потрібно передати йому фокус вводу у будь-якому обробнику, наприклад, у обробнику Button3Click (для цього на формі повинна бути розміщена відповідна кнопка).
void __fastcall TForm1::Button11Click(TObject *Sender)
{
Edit1->SetFocus(); // Передача фокус вводу компоненту Edit1
}
При отриманні фокусу вводу компонентом Edit1 для цього компонента відбувається подія OnEnter. Щоб відстежити отримання фокусу вводу, можна створити обробник цієї події для компоненту Edit1 наступним чином:
void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
ShowMessage("Edit1Enter: поле Edit1 отримало фокус вводу" );
}
При втраті фокусу вводу компонентом Edit1 для цього компонента відбувається подія On Exit. Щоб відстежити втрату фокусу вводу, можна створити обробник цієї події для компоненту Edit1 наступним чином:
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
ShowMessage("Edit1Exit: поле Edit1 втратило фокус вводу ");
}
//---------------------------------------------------------------------------