Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема- Програмування циклічних процесів

Работа добавлена на сайт samzan.net:


«Інструментальні засоби візуального програмування» С++ Builder

ЛАБОРАТОРНА РОБОТА №10.

Тема: Програмування циклічних процесів. Об’єкти: Memo, MainMenu, PopupMenu, CheckBox, GroupBox 

Мета роботи. Створити форму для розв'язування задачі табулювання функції.

Створити у ній головне меню (об'єкт типу MainMenu) з командами: закінчити роботу програми, табулювати функцію, очистити поля виведення результатів, а також контекстове меню (РорирМеnи), що міститиме команду для очистки поля виведення. Результати табулювання вивести у багаторядкове поле редагування (об'єкт типу Мето). Передбачити можливість виведення результатів на екран, у файл, у масив. Напрямок виведення задати за допомогою трьох прапорців (об'єктів типу CheckBox), розташованих на панелі групи об'єктів (типу GroupBox) (див. рис. 9).

Теоретичні відомості.

Об'єкт Мето застосовують для створення багаторядкового редактора тексту. Крім звичайних властивостей, поле редагування Мето володіє ще такими:

Властивість

Опис властивості

Приклади значень

HideSelection

Збереження виокремлення фрагмента тексту у момент втрати фокусу

True (виокремлення не зберігається), False (зберігається)

Lines

Задання початкового тексту у полі редагування

Комплексна властивість (задається у діалоговому вікні)

MaxLength

Максимальна можлива кількість увeдeниx символів

Наприклад, 50 п'ятдесят символів,

0 - без обмежень

ScrollBars

Наявність смуг прокручування

ssNone (відсутні),

ssHorizontal (горизонтальна),

ssBoth (обидві)

Об'єкт CheckBox використовують для створення незалежного дво- чи трипозиційного прапорця: увімкнено/вимкнено (/недоступний). Для цього об'єкта визначені такі дві нові властивості:

Властивість

Опис властивості

Приклади значень

Allow/Grayed

Наявність третьої позиції (сірий увімкнений)

True (трипозиційний прапорець),

False (дво-позиційний прапорець)

State

Стан прапорця

cbGrayed (сірий), cbUnchecked (вимкнений), cbChecked (увімкнений)

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

За допомогою об'єкта MainMenu створюють головне меню програми. Ось деякі властивості головного меню:

Властивість

Опис властивості

Приклади значень

Items

Команди меню

Комплексна властивість (задається у діалоговому вікні)

Tag

Допоміжна змінна, використовується в тексті програми

0; 8 (ціле число)

За допомогою об’єкта PopupMenu контекстове меню деякого компонента. Для «прив’язування» контекстного меню до конкретного об’єкта необхідно його властивість PopupMenu надати значення імені (Name) конкретного контекстового меню. Розглянемо деякі властивості контекстного меню:  

Властивість

Опис властивості

Приклади значень

Alignment

Вирівнювання меню відносно точки клацання правою клавішею миші

paCenter (по центру), paLeft (зліва), paRight (справа)

AutoPopup

Автоматичний виклик контекстового меню

True (викликається клацанням правою клавішею), False (викликається за допомогою методу Popup)

Конкретна команда меню (головного чи контекстового) може мати такі властивості:

Властивість

Опис властивості

Приклади значень

Break

Розбиття меню у

горизонтальному напрямку

mbNone (без розбиття), mbBarBreak (розбиття з вертикальною рискою),

mbBreak (розбиття без вертикальної риски)

Shortcut

Комбінація "гарячих" клавіш для виклику команди меню

(None - відсутня), Ctrl+A, F8,Ctrl+F10 Shift+F3, Shift+Ctrl +F11 Ctrl+Del

ХІД РОБОТИ

  1.  Завантажте   середовище   візуального   програмування   C++ Builder.
  2.  Змініть заголовок (Caption) форми з "Form1" на "Табулювання функції" (без лапок) і збільшіть розміри форми у вертикальному напрямку.
  3.  Змініть піктограму у лівому верхньому куті форми, задавши конкретний файл з рисунком піктограми як значення властивості Icon (піктограма) форми.

Клацніть у рядку Icon на значок, а потім на кнопці Load вікна Picture Editor, щоб отримати вікно Load picture. Відкрийте папку С: \ Program Files \ Common Files \ Borland Shared \ Images \ Icons, виберіть графічний файл з будь-якою піктограмою => Open => Ok.

  1.  Збережіть виконану на даний момент форму у своїй власній папці (File => Save All).
  2.  Розташуйте у формі поля редагування Edit1, Edit2, Edit3 і відповідні їм текстові поля "Ліва межа", "Права межа", "Крок", а також текстове поле для вигляду заданої функції у = sin* + 1 (див. рис. 9, читай зауваження).

Зауваження 1. Для того, щоб швидко вставити у форму декілька однотипних об'єктів, клацніть на піктограмі цього об'єкта, утримуючи натиснутою клавішу Shift. Тепер вставляння у форму всіх об'єктів цього типу відбуватиметься без повторного вибору піктограми. Якщо випадково вставите зайвий об'єкт, то вилучіть його за допомогою клавіші Delete. Щоб відмовитися від такого режиму, клацніть на зображенні стрілки на палітрі компонентів. Розмір, стиль і колір шрифтів виберіть на власний розсуд так, щоб форма виглядала якнайкраще. Save all.

  1.  Вирівняйте вставлені поля редагування до лівого краю першого об'єкта та відцентруйте текстове поле вигляду функції, скориставшись вікном вирівнювань Alignment.

Виокремте групу полів редагування та підписи до них і виконайте команду головного меню Edit (редагувати) => Align (вирівняти) => Horisontal - Left sides (горизонтально - ліві межі) => Vertical - Space equally (вертикально - рівномірно) => Ok. Виокремте текстове поле вигляду функції Edit => Align => Horisontal - Center in Window (горизонтально - до центру вікна) => Ok. Save All.

  1.  Вставте у форму панель групи об'єктів (об'єкт типу GroupBox).

Для цього використайте компоненту GroupBox із закладки Standard. Змініть значення властивості Caption (підпис) цього об'єкта на слово "Виведення" (без лапок). Розмір, стиль і колір шрифту виберіть на власний розсуд. Збільшіть панель групи.

  1.  Вставте у панель три прапорці (об'єкти типу CheckBox).

Для цього використайте компоненту CheckBox із закладки Standard палітри компонентів C++Builder. Вирівняйте прапорці, заздалегідь виокремивши їх (див. п. 6). Змініть значення властивості Caption (підпис) цих об'єктів на такі, як показано на рис. 9. Стиль і колір шрифтів виберіть на власний розсуд.

  1.  Встановіть прапорці "На екран" та "У масив" у положення "увімкнено".

Для цього виокремте ці об'єкти та змініть значення їхніх властивостей Checked (контроль вибору) на True.

  1.  Вставте у форму багаторядкове поле редагування (об'єкт Мето).

Для цього використайте компоненту Мето із закладки Standard палітри компонентів C++Builder. Збільшіть розміри поля. Властивість ScrollBars (наявність смуг прокручування) цього об'єкта задайте як ssBoth (будуть обидві смуги — вертикальна і горизонтальна). File => Save All.

  1.  Задайте початкові значення для полів редагування лівої і правої меж аргумента функції та для кроку зміни цього аргумента, наприклад, такі, як на рис. 9.

Для цього змініть властивість Text цих об’єктів. Для набору символа десяткової крапки використайте символ, передбачений операційною системою комп'ютера.

  1.  Витріть слово Memo1 у багаторядковому полі редагування (див. пояснення нижче).

Для цього у вікні Object Inspector змініть значення властивості Lines (рядки) об'єкта Memo1. Натиснувши на кнопку, викличте вікно редагування цієї властивості (вікно String list editor - редактор багаторядкового поля). Витріть слово Memo1 та закінчіть роботу з цим вікном, клацнувши на кнопці Ok.

  1.  Вставте у форму головне і контекстове меню (об'єкти типу MainMenu і PopupMenu).

Для цього використайте компоненти MainMenu і PopupMenu із закладки Standard. Розташуйте піктограми в довільному місці форми, на етапі виконання програми вони будуть невидимими.

  1.  Введіть назви команд головного меню форми (див. рис. 11 і рис. 12).

Для цього виберіть об'єкт MainMenu1 і двічі клацніть на значенні його властивості Items. Інший шлях - двічі клацніть на самому об'єкті. У вікні, яке відкриється                        (Form1->MainMenu1), вибирайте мишею рамку команди і записуйте назву команди, наприклад, "Обчислення", як значення властивості Caption у вікні Object Ispector. Закрийте вікно створення команд головного меню Form1->MainMenu1.

Рис. 11, 12. Створення головного меню

  1.  Введіть назви команд контекстового меню форми.

Для цього аналогічно змініть значення властивості Items об'єкта PopupMenul за допомогою вікна Form1.PopupMenu 1 (виклик цього вікна див. у п. 14). У вікні Object Ispector введіть текст "Очистити поле виведення" без лапок як значення властивості Caption (рис. 13). За бажанням можете придумати ще якусь команду. Закрийте вікно Forml.PopupMenul. Збережіть форму (Save All).

Рис. 13. Створення контекстового меню

  1.  Запрограмуйте команду "Очистити поле виведення" головного меню, скориставшись методом Clear об'єкта Memo1.

Методи об'єкта - це набір функцій, які, аналогічно до властивостей, застосовують до об'єкта. Як і у випадку властивості, ім'я об'єкта від імені його метода відокремлюється крапкою. Виконайте команду меню "Очистити поле виведення", не запускаючи програму на виконання. З'явиться заготовка функції реакції на подію виклику цієї команди. У ній запишіть команду виклику методу Clear для очищення поля виведення об'єкта Memo1:

Void _fastcall TForm1::N3Click(TObject *Sender) // Тут N3— ім'я команди

                                                                                  //"Очистити попе виведення", у вас може

                                                                                 // бути інший номер, його 

               {                                                               // не виправляйте

                   Memo1 -> СІеаr();                             // Викликаємо метод об'єкта Мето1, який

                                                                              // очищає багаторядкове поле редагування

              }                                                            // Тепер клацніть на формі

  1.  Запрограмуйте команду "Кінець" головного меню, скориставшись стандартною функцією exit().

Void _fastcall TForm1 :: N5Click(TObject *Sender)  // Тут N5 — ім'я команди

             {                                                                     // "Кінець"

                  exit(1);                                           // Закриваємо вікно програми

               }                                                                   // Тепер клацніть на формі

Збережіть виконану на даний момент форму у своїй папці (File => Save All).

  1.  Запрограмуйте команду "Очистити поле виведення" контекстового меню.

Двічі клацніть на команді контекстового меню "Очистити поле виведення" у вікні Form1. PopupMenu1 (виклик цього вікна див. у п. 14). Текст функції очищення такий самий, як і у команди головного меню, а саме: Memol -> Clear(); (див. п. 16).

  1.  "Прив'яжіть" контекстове меню PopupMenul до форми Form1.

Клацніть на формі і задайте властивість форми PopupMenu як PopupMenu1.

Зауваження 2. Значення властивості форми Menu автоматично встановлюється як MainMenu1 у момент створення головного меню (п. 13).

  1.  Запустіть створену програму та дослідіть її роботу.

Поекспериментуйте з багаторядковим полем редагування Memo1, вводячи та коректуючи у ньому будь-який текст. Зверніть увагу на те, що в цьому вікні можна виконувати такі ж дії з текстом, як і в текстовому редакторі: виокремлювати фрагмент тексту, копіювати, переносити чи вилучати цей фрагмент. Витріть текст за допомогою команди головного меню "Очистити поле виведення". Ще раз введіть текст і витріть його за допомогою контекстового меню (для виклику контекстового меню форми потрібно клацнути правою клавішею миші на вільному місці форми). Закінчіть роботу програми, клацнувши на команді меню "Кінець".

  1.  Запрограмуйте команду "Протабулювати".

Властивість Lines об'єкта типу Мето є комплексною, тобто також є об'єктом зі своїми властивостями та методами. Результат роботи цієї програми - це таблиця, що складається з декількох рядків. Щоб долучити (додати) у поле Memo1 новий рядок до таблиці, треба змінити значення комплексної властивості Lines (рядки) за допомогою її методу Append (вставити) з одним аргументом - символьним рядком: Memo1 ->Lines->Append (рядок символів). Виконайте команду "Протабулювати" з головного меню, клацнувши на ній один раз. З'явиться заготовка функції, яку заповніть так:

Void  _fastcall TForm1 ::N3Click(TObject *Sender)

{

float x, y;

float a = StrToFloat(Edit1 -> Text);    // Одержуємо числове значення лівої межі

float b = StrToFloat(Edit2 -> Text);  // та правої межі

float h = StrToFloat(Edit3 -> Text);  // Одержуємо числове значення кроку

Memo1->Lines->Append("X\tY");   // В об'єкт Memo1 

// вставляємо рядок з підписами стовпців аргументу X і значення

// функції Y через табулятор \t. Починаємо табулювати з лівої межі,

// поки аргумент х не перевищить праву межу з певним допуском:

for (х = а; х < b + h / 2; х += h)

 {     у = sin(x);                             // Обчислюємо значення функції

         if (CheckBoxl -> Checked)    // Якщо стоїть прапорець "На екран"

                                // Формуємо і вставляємо у поле Мето1 символьні рядки з аргументу

                             // та значення функції

Memol -> Lines -> Append(FloatToStrF(x, ffFixed, 2, 2) + '\t' + FloatToStrF( y, ffFixed, 2, 2));

}

  1.  Виконайте програму і поекспериментуйте з різними значеннями лівої, правої межі та кроку аргументу. Закрийте вікно програми "Табулювання функції".
  2.  Збережіть створену програму у своїй папці.
  3.  Створіть exe-файл вашої програми.
  4.  Закрийте C++ Builder, запустіть створену програму і виконайте обчислення для різних початкових даних.

ВПРАВИ

  1.  Додайте до контекстового меню команду "Кінець" і запрограмуйте її.
  2.  Створіть ще одне контекстове меню з командами "Зняти всі прапорці", "Встановити всі прапорці", "Встановити інверсивно" і запрограмуйте його. Таке меню має з'являтися після клацання правою клавішею миші на довільному місці панелі з прапорцями. Не забудьте "прив'язати" це меню (PopupMenu2) до панелі з прапорцями (див. пункт 19).
  3.  Модифікуйте реалізацію програми, передбачивши можливість табулювання функції і її похідної. Вибір варіанта табулювання (з похідною чи без неї) здійсніть за допомогою додаткового прапорця.

Підказка. Виконайте такі дії:

  •  вставте у форму об'єкт типу CheckBox (прапорець), надайте його властивості Caption значення "Похідна", виберіть для підпису один із кирилізованих шрифтів 12-го розміру, вирівняйте вставлений об'єкт.
  •  змініть програмний код команди "Протабулювати";
  1.  Визначте кількість елементів масиву більших, ніж 0,5, і менших, ніж 1.
  2.  Передбачте у створеній програмі додаткову можливість для визначення максимального та мінімального значень функції.

Підказка. У тілі функції Button1Click, що описує програмний код кнопки "Протабулювати", скористайтеся командами:

max = sin(a) + 1;       //На початку функції:

if (max < у) max = у;    // У циклі табулювання:

  1.  Змініть функції команди "Протабулювати" так, щоб для увімкненого прапорця "У масив" виведення результатів виконувалось в одновимірний масив.
  2.  Вставте у форму об'єкт Chart із закладки Aditional для побудови графіка функції:

Двічі клацніть на ньому і на закладці Series, клацнувши на кнопці Add, у вікні TeeChart Gallery, виберіть піктограму потрібного графіка. Набору даних, що відповідатиме цьому типу графіка, присвоється стандартне ім'я Series1. Поставте чи заберіть прапорець 3D за власним бажанням => Ok. Поекспериментуйте з різними закладками вікна EditingChart1. Створіть додатковий пункт меню або вставте кнопку "Намалювати графік" для отримання графіка і запрограмуйте (наприклад, кнопку) так:

Void _fastcall TForm1::N8Click(TObject *Sender)

{

float a = StrToFloat(Edit1->Text); // Одержуємо числові значення лівої межі

float b = StrToFloat(Edit2->Text); // та правої меж

float h = StrToFloat(Edit3->Text); // Одержуємо числове значення кроку

for (float х = а; х < b; х += h)

{   Series1->Add( sin(x), FloatToStrF(x,ffFixed,2,2), cIRed );}

     }

Поекспериментуйте з різними закладками вікна EditingChart1, щоразу запускаючи програму на виконання Заберіть легенду (Legend), маркери (Points) і підписи до них (Marks). Придумайте та вставте заголовок (Title) та підпис (Foot) до графіка.

  1.  Сумістіть побудову графіка з табулюванням функції.

Сторінка 9 із 9




1. Богатство народов.
2. . Укажите правильное объяснение постановки запятой или ее отсутствия в предложении- Молодые великанысосны.
3. РЖД и АО Германская железная дорога ГК Австрийские федеральные железные дороги и концерном VR Group жел
4. Анализ коммерческой деятельности и пути совершенствования в сфере туристических услуг
5. В последние годы все больше внимания уделяется вопросам семьи и созданию соответствующих условий для р
6. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата медичних наук Тернопіл
7. Начало романа М Булгакова Белая гвардия
8. тема качества организации прошла проверку на соответствие требованиям конкретного стандарта
9. тоработой Теоретичесие вопросы мы рассматривали в преломлении к поэзи ахматовой
10. Основные вопросы, характеризующие право как науку
11. Концепция развития и обучения Выготского и Эльконина
12. ИСТОРИЯ ГОСУДАРСТВА И ПРАВА ЗАРУБЕЖНЫХ СТРАН 1
13. Рыночная система Макроэкономическое равновесие и фискальная политика государства
14. ЭЛЕКТРОХИМИЧЕСКИЕ МЕТОДЫ АНАЛИЗА Вопросы- Сущность электрохимических методов анализа
15. МОДУЛЬ 2.6.03 Структурное программирование
16. тема экономических отношений включающая образование за счет предприятий организаций и населения специальн
17. по теме- Построение информационных систем в среде Microsoft ccess Как создать составной индекс Делаетс
18. по теме- Стилевое своеобразие Моления Даниила Заточника студента 2курса группы РЛз10 заочного о
19. правовой нормы состоит- гипотеза диспозиция санкция Административное право в большей степени использу
20. Чудеса творим мы сами Мастерская чудес Введение