Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




ЧАСТИНА І

 

 

КРЕМЕНЧУК 2011


Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни "Програмування" для студентів за напрямом 6.050201 – “Системна інженерія” (у тому числі скорочений термін навчання). Частина I.

 

Укладачі: старш. викл. І.С. Конох

асист. Є.В. Носач

Рецензент к.т.н., доц. С.А. Сєргієнко

 

Кафедра систем автоматичного управління і електроприводу

 

Затверджено методичною радою Кременчуцького національного університету імені Михайла Остроградського

Протокол №____ від___________

Заступник голови методичної ради______________ доц. С. А. Сергієнко


ЗМІСТ

 

Вступ........................................................................................................  
Лабораторна робота № 1. Інтегроване візуальне середовище розробки С++Builder. Використання основних засобів проектування й налагодження...................................................................................................  
Лабораторна робота № 2. Застосування основних компонент С++Builder для створення графічних інтерфейсів.................................  
Лабораторна робота № 3. Програмування процедур користувача. Обробка масивів......................................................................................  
Лабораторна робота № 4. Застосування основних компонент С++Builder для створення графічних примітивів..................................  
Лабораторна робота № 5. Використання візуальних і невізуальних компонентів в C++Builder для побудови графіків.................................  
Лабораторна робота № 6. Розробка структури класів для прикладної програми..................................................................................................  
Список літератури...................................................................................  

 


ВСТУП

 

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

Під час вивчення дисципліни студент оволодіває основами системного підходу до використання методів створення і відлагодження основних типових конструкцій програмних додатків. Це дає змогу успішно розробляти системи керування за допомогою спеціалізованих програмних заходів, що підтримують об’єктно-орієнтований підхід. Набуті знання можуть бути використані як під час виконання дипломного проекту, так і в майбутній професійній діяльності.

Мета проведення лабораторних робіт – закріпити знання, отримані на лекціях, шляхом створення прикладних комп'ютерних програм.

Внаслідок проведення лабораторних робіт студенти повинні: уміти використовувати знання мови програмування для конкретних технічних задач, одержати навички в розробці програмного середовища; освоїти роботу з програмним середовищем розробки Borland C++ Builder.

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

 


 

Лабораторна робота № 1

Тема роботи. Інтегроване візуальне середовище розробки С++Builder.
Використання основних засобів проектування й налагодження

Мета: придбання навичок ефективної розробки простих додатків в операційній системі Windows 98/XP.

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

C++Builder – це система візуального об’єктно-орієнтованого програмування, що дозволяє з невеликими витратами сил і часу створювати прикладні програми, що задовольняють всім вимогам Windows.

Програма на C++ складається з оголошень (змінних, констант, типів, класів, функцій) і описів функцій. Програми будуються по модульному принципу й складаються з безлічі модулів.

Всі об'єкти компонентів розміщаються в об'єктах – формах. Для кожної форми, створюється окремий модуль.

Відповідно до принципів приховання інформації звичайно текст модуля розділяють на заголовний файл інтерфейсу (розширення файлу –.h), що містить оголошення класів, функцій, змінних і т.п., і файл реалізації (розширення файлу –.срр), у якому знаходиться опис функцій.

Після того, як програма написана, на її основі повинен бути створений файл реалізації (модуль). Цей процес здійснюється в кілька етапів.

Спочатку працює препроцесор, що перетворює вихідний текст. Препроцесор здійснює перетворення у відповідності зі спеціальними директивами препроцесора, які розміщаються у вихідному тексті. Після закінчення роботи препроцесора починає працювати компілятор. Його завдання – перевести тексти модулів у машинний (об'єктний) код. У результаті для кожного вихідного файлу.срр створюється об'єктний файл, що має розширення.obj. Після закінчення роботи компілятора працює компонувальник, що поєднує об'єктні файли в єдиний завантажувальний виконуваний модуль, що має розширення.ехе.

Щоб побачити код головного файлу проекту, треба виконати в середовищі розробки C++Builder команду Project | View Source. Типовий головний файл проекту має такий вигляд:

//---------------------------------------------------------------------

// директиви препроцесора

#include <vcl. h>

#pragma hdrstop

// макроси, що підключають файли ресурсів і форм

USERES ("Project1.res");

USEFORM(“Unitl.срр", Form1);

USEFORM("Unit2.срр", Form2);

//----------------------------------------------------------------------

// функція main

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

// ініціалізує об'єкти компонентів даного додатка

Application->Initialize();

// оператори створюють об'єкти відповідних форм

Application->CreateForm(__classid (TForm1), &Form1);

Application->CreateForm(__classid (TForm2), &Form2);

// оператор починає виконання програми

Application->Run();

}

catch (Exception Sexception)

{

Application->ShowException(&exception);

}

return 0;

}

Всі оператори головного файлу додатку заносяться в нього автоматично в процесі проектування додатка. Наприклад, при додаванні в проект нової форми у файл автоматично вставляються відповідна пропозиція USEFORM і оператор Application-> CreateForm, що створює форму.

Структура файлів модулів форм

Заголовний файл:

//---------------------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//-----------------------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include StdCtrls.hpp>

#include <Forms.hpp>

// тут можуть міститися додаткові директиви препроцесора

// (зокрема, include), що не включені у файл автоматично

// оголошення класу форми TForml class TForm1: public TForm

{

__published: // IDE-managed Components

// розміщені на формі компоненти

TButton *Button1;

TLabel *Label1;

void __fastcall Button1Click(TObject *Sender);

private: // User declarations

// закритий розділ класу

// тут можуть міститися оголошення типів, змінних, функцій,

// що включені у клас форми, але не доступні для інших модулів;

public: // User declarations

// відкритий розділ класу

// тут можуть міститися оголошення типів, змінних, функцій,
//що включені у клас форми й доступні для інших модулів
__fastcall TForm1(TComponent* Owner);

};

//-----------------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//----------------------------------------------------------------------------------

// тут можуть міститися оголошення типів, змінних, функцій,

// які не включаються в клас форми;

// доступ до них з інших блоків можливий тільки при дотриманні

// деяких додаткових умов

#endif

Файл реалізації:

# include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//------------------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*. dfm”

// тут можуть міститися додаткові директиви препроцесора

// (зокрема, include), що не включені у файл автоматично

// оголошення об'єкта форми Form1

TForm1 *Form1;

//------------------------------------------------------------------------------------------

// виклик конструктора форми Form1

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

// сюди ви можете помістити оператори, які повинні

// виконуватися при створенні форми

}

//-----------------------------------------------------------------------------------------

// тут можуть міститися оголошення типів і змінних,

// доступ до яких з інших модулів можливий тільки при

// дотриманні деяких додаткових умов;

// тут повинні бути реалізації всіх функцій, оголошених в

// заголовному файлі, а також можуть бути реалізації будь-яких

// додаткових функцій, не оголошених раніше

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Close ();

}

Вікно інтегрованого середовища розробки (ІСР) C++Builder

Інтегроване Середовище Розробки (Integrated Development Environment - IDE) - це середовище, у якому є все необхідне для проектування, запуску й тестування додатків і де все націлено на полегшення процесу створення програм. ІСР інтегрує в собі редактор кодів, налагоджувач, інструментальні панелі, редактор зображень, інструментарій баз даних.

Після запуску C++Builder відкриється основне вікно ІСР (рисунок 1.1).

У верхній частині вікна ІСР розташована смуга головного меню. Нижче смуги головного меню розташовані дві інструментальні панелі – оперативна панель (speedbar) зліва і палітра компонентів (Component Palette) справа. Оперативна панель дозволяє одним натисканням по відповідній кнопці виконувати відкриття, зберігання та компіляцію проектів. Палітра компонентів має в своєму складі великий набір компонентів, які ви можете вставляти в свої форми (до компонентів відносяться текстові мітки, вікна списку, кнопки і т.д.).

Рисунок 1.1 – Основне вікно інтегрованого середовища розробки C++Builder 6

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

Рисунок 1.2 – Головне вікно

Правіше смуги головного меню розміщена ще одна невелика інструментальна панель, що містить список, що випадає, і дві швидкі кнопки. Це панель збереження й вибору різних конфігурацій вікна ІСР.

Вікно стартової форми (Form1) являє собою заготовку головного вікна, яке розроблюється програмою.

В основному полі вікна ліворуч перебувають ще два вікна: зверху – Дерево Об'єктів (Object TreeView), під ним – Інспектор Об'єктів (Object Inspector). Вікно Дерево Об'єктів буде відображати ієрархічний зв'язок візуальних і не візуальних компонентів і об'єктів додатка. А Інспектор Об'єктів - це основний інструмент, за допомогою якого можна задавати властивості компонентів і оброблювачі подій. Правіше цих вікон - вікно порожньої форми, готової для переносу на неї компонентів. Під ним розташоване вікно Редактора Кодів.

Смуга головного меню

Розглянемо основні розділи головного меню та їх застосування при проектуванні.

Розділи меню File (файл) дозволяють створити новий проект, нову форму, відкрити раніше створений проект чи форму, зберегти проекти чи форми в файлах з зазначеними іменами.

Розділи меню Project (проект) дозволяють додавати і видаляти з проекту форми, задавати опції проекту, компілювати проект без його виконання, а також виконувати інші корисні операції.

Розділи меню Run (виконання) дає можливість виконувати проект в нормальному чи відлагоджувальному режимах, рухаючись по крокам, зупиняючись в указаних точках коду, переглядаючи значення змінних і тд.

Вікно редактора коду

Однією з найбільш важливих частин середовища C++Builder є вікно Редактора Коду, що включає в себе ліворуч ще одне убудоване вікно - вікно Дослідника Класів (ClassExplorer), показано на рисунку 1.3.

Редактор Коду в C++Builder при перегляді програмного модуля має три сторінки, закладки яких розташовані в нижній частині вікна на рисунку 1.3. Дві з них відображають коди файлу реалізації (Unitl.cpp) і заголовного файлу (Unitl.h).

Рисунок 1.3 – Вікно Редактора Коду з убудованим вікном ClassExplorer

У вікні редактора коду необхідно набирати текст програми. На початку роботи над новим проектом вікно редактора коду містить сформований C++Builder шаблон програми.

У вікно Редактора Коду, як і в інші вікна С++ Builder, вбудована контекстна справка. Щоб отримати до неї доступ достатньо навести курсор на слово коду програми і натиснути F1.

Дослідник Класів ClassExplorer показує дерево всіх типів, класів, властивостей, методів, глобальних змінних і глобальних функцій, що знаходяться в модулі, відкритому в Редакторі Коду.

Якщо клацнути у вікні Дослідника Класів на імені змінної або функції, то курсор у вікні Редактора Коду перейде на рядок, у якому ця змінна або функція оголошена.

Інспектор об'єктів

Інспектор Об'єктів (Object Inspector) забезпечує простий і зручний інтерфейс для зміни властивостей об'єктів C++Builder і керування подіями, на які реагує об'єкт.

а) б) Рисунок 1.4 – Сторінка властивостей (а) і сторінка подій (б) Інспектора Об'єктів
Вікно Інспектора Об'єктів (рисунок 1.4) має дві сторінки. Вище них є список, що випадає, всіх компонентів, розміщених на формі. У ньому можна вибрати той компонент, властивості й події якого цікавлять.

Сторінка властивостей (Properties) Інспектора Об'єктів (рис. 1.4 а), показує властивості того об'єкта, що у цей момент виділений.

Якщо натиснути на певних властивостях, наприклад Color (колір), то справа від імені властивості відкриється вікно спливаючого списку. Натиснувши в ньому на кнопку зі стрілкою вниз можна переглянути список можливих значень властивості.

Сторінка подій (Events) становить другу частину Інспектора Об'єктів (рис. 1.4 б). На ній зазначені всі події, на які може реагувати обраний об'єкт. Наприклад, якщо необхідно виконати якісь дії в момент створення форми (звичайно це різні операції налаштування), то потрібно виділити подію OnCreate. Поруч із ім'ям цієї події відкриється вікно зі списком, що випадає. Якщо вже написані в додатку якісь оброблювачі подій і потрібно при події OnCreate використати один з них, можна вибрати необхідний оброблювач зі списку, що випадає. Якщо ж необхідно написати новий оброблювач, то при подвійному клацанні на порожньому вікні списку, відкривається вікно Редактора Коду, у якому прописаний текст:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

}

Якщо ви виконали ці операції, то повернутися в Інспектор Об’єктів можна, виділивши, наприклад, подію OnActivate і натиснувши кнопку зі спливаючого меню. За допомогою цієї функції можна уникнути дублювання в програмі одних і тих же фрагментів кодів.

Дерево Об’єктів

Вікно Object TreeView (Дерево Об’єктів) відображає ієрархічну структуру всіх наявних в додатку візуальних та невізуальних компонентів. Воно показує різноманітний взаємозв’язок між компонентами: співставлення материнських та дочірніх компонентів, їх зв'язок за властивостями, наборами даних та ін.

В конфігурації ІСР за замовчуванням це вікно розташоване в лівій частині екрану над вікном Інспектора Об’єктів. Якщо даного вікна немає на екрані, то його можна відкрити, виконавши команду View | Object TreeView.

Дерево Об’єктів дає можливість переносити компоненти з одного материнського контейнера в інший, просто перетягуючи в дереві відповідну вершину. Компонент на формі при цьому переміститься в нове поле автоматично. Аналогічно можна перетягувати набори, джерела даних та ін. при роботі з базами даних.

Робота з відлагоджувачем

Однією з головних частин C++Builder є вбудований відлагоджувач. Він дозволяє встановлювати контрольні точки, спостерігати за змінними та багато іншого. За допомогою відлагоджувача ви можете спостерігати за програмою під час її виконання.

Сеанс відлагодження починається з запуску програми під управлінням відлагоджувача. Якщо натиснути на кнопку Run оперативної панелі, то програма автоматично запускається з використанням відлагоджувача. Також можна обрати в головному меню пункт Run | Run або натиснути F9 на клавіатурі.

Контрольні точки

Контрольна точка (breakpoint) – це маркер, який вказує відлагоджувачу призупинити виконання програми до досягнення даної точки.

Щоб установити контрольну точку необхідно натиснути у вікні Редактора Коду зліва від того рядка, на якому потрібно призупинити виконання програми. В цьому місці з’явиться значок зупинки (Stop), а весь рядок буде виділений червоним кольором. Для того, щоб видалити контрольну точку потрібно натиснути на значку Stop. Для встановлення або видалення контрольної точки можна також натиснути F5 чи обрати пункт Toggle Breakpoint в контекстному меню Редактора Коду.

Рисунок 1.5 – Вікно Редактора Коду зі встановленою контрольною точкою

IDE C++Builder відслідковує контрольні точки у вікні списку контрольних точок (Breakpoints List). Щоб переглянути цей список необхідно обрати в головному меню пункт View | Debug Windows | Breakpoints.

Контрольні точки можуть бути простими та умовними. У простої контрольної точки (simple breakpoint) виконання програми призупиняється. По замовчуванню установлена вами точка першочергово є простою. В умовній контрольній точці (conditional breakpoint) програма зупиняється лише при виконанні певних умов. Щоб створити умовну точку спочатку необхідно встановити просто контрольну точку в Редакторі Коду. Потім потрібно обрати пункт меню View | Debug Windows | Breakpoints, щоб вивести діалогове вікно Breakpoints List, а після цього натиснути праву кнопку миші на точці для якої необхідно задати умови. За допомогою пункта Properties контекстного меню відкриваємо вікно Edit breakpoint і задаємо умови.

Спостереження за змінними

Після зупинки в контрольній точці потрібно перевірити значення змінних, для визначення правильності виконання програми. Для цього використовується список об’єктів, за якими ведеться спостереження (Watch List). Він виконує одну функцію – дозволяє перевіряти значення змінних. В таблиці 1.1 наведений перелік контекстного меню Watch List.

Таблиця 1.1 - Контекстне меню списку Watch List

Пункт Опис
Edit Watch Редагування об’єкта спостереження в діалоговому вікні Watch Properties.
Add Watch Додавання нового об’єкта в список.
Enable Watch Дозвіл на спостереження за об’єктом.
Disable Watch Заборона на спостереження за об’єктом.
Delete Watch Видалення об’єкта спостереження зі списку.
Enable All Watch Дозвіл спостереження за всіма об’єктами списку.
Disable All Watch Заборона спостереження за всіма об’єктами списку.
Delete All Watch Видалення всіх об’єктів спостереження зі списку.

Додавати змінні в список Watch List можна декількома способами. Найшвидший з них – натиснути на ім’я змінної у вікні Редактора Коду, після чого обрати в контекстному меню пункт Add Watch at Cursor. Після цього з’явиться діалогове вікно Watch Properties, де можна вибрати опції для цього об’єкта, або натиснути кнопку OK, щоб залишити опції незмінними. Об’єкт спостереження буде доданий в список.

Після досягнення контрольної точки, список Watch List буде відображати поточні значення всіх змінних, які були включені до нього. Якщо список в даний момент закритий, то його можна викликати, обравши в головному меню пункт View | Watches. Якщо змінна виходить з області бачення або не знайдена, то в списку об’єктів спостереження поряд з її іменем буде виведено повідомлення Undefined symbol ‘x’ (не визначений символ ‘x’).

Інспектор відлагодження

Інспектор відлагодження (Debug Inspector) дозволяє переглянути члени-дані об’єктів, таких як класи і компоненти. Щоб перевірити стан об’єкта натисніть на його імені у вихідному файлі та оберіть пункт Inspect в контекстному меню Редактора Коду. Також можна обрати Run | Inspect в головному меню.

Вікно Debug Inspector вміщує докладну інформацію про вказаний об’єкт. Якщо об’єктом є простий тип даних, то у даному вікні буде виведене поточне значення (в десятковій і шістнадцятирічній формах числових типів), а в рядок стану в нижній частині вікна – тип змінної.

Перегляд стеку викликів

Під час виконання програми можна переглядати стек викликів (Call Stack), щоб отримати інформацію про будь-які функції, які викликала програма. Для цього потрібно обрати в головному меню пункт View | Call Stack. Останні функції, що викликались, будуть знаходитися у верхній частині вікна.

Перегляд стека викликів корисний після виникнення системної помилки Access Violation (Порушення прав доступу). Переглядаючи стек викликів, можна побачити в якому стані перебувала програма перед виникненням помилки.

Покрокове виконання програми

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

Відлагоджувач IDE має дві основні команди для покрокового виконання коду: Step Over і Trace Intro (трасування). Step Over означає виконання даного рядка коду та призупинку виконання перед наступним рядком. Для того, щоб виконати команду Step Over необхідно натиснути F8, або обрати пункт головного меню Run | Step Over.

Команда Trace Intro дозволяє ввійти в режим трасування будь-якої функції, яка зустрічається при покроковому виконанні програми. На відміну від команди Step Over, яка виконує функцію і повертається до наступного рядка, команда Trace Intro поміщає точку виконання в перший рядок вихідного коду викликаної функції.

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

Функції перетворення

При написанні навіть найпростішої програми необхідне використання функцій для перетворення символьного рядка в числовий вираз та навпаки. Основні з цих функцій наведені в таблиці 1.2.

Таблиця 1.2 – Функції перетворення

Функція Значення функції
IntToStr(k) Рядок, що є зображенням цілого k
FloatToStr(n) Рядок, що є зображенням дійсного n
StrToInt(s) Ціле число, зображенням якого є рядок s
StrToFloat(s) Дробове число, зображенням якого є рядок s
Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...