ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.09.2024

Просмотров: 39

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

 

 

 

 

 

 

F Tran

sf

 

 

 

 

 

 

D

 

 

 

 

 

 

Y

P

 

 

 

 

or

e

 

B

Y

 

 

 

 

 

 

 

m

B

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

A

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

here

 

 

 

 

 

 

 

 

Click

 

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

A BBYY

c

 

 

 

 

 

 

 

 

 

2.12 Компоновка

AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A B BYY

c

 

 

 

 

 

 

 

 

Якщо в програмі немає помилок, то можна виконати компоновку. Для цього треба в меню Compile вибрати команду Make або Build. Різниця між командами Make і Build

полягає в наступному. Команда Make забезпечує компоновку файлів проекту, а команда Build — примусову перекомпіляцію, а потім — компоновку.

На етапі компоновки також можуть виникнути помилки. Найчастіше причина помилок під час компоновки полягає в недоступності файлів бібліотек або інших

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

2.13 Запуск програми

Пробний запуск програми можна виконати безпосередньо з середовищ розробки, не завершуючи роботу з C++ Builder. Для цього потрібно в меню Run вибрати команду Run або клацнути на командній кнопці Run (мал. 2.33).

Мал. 2.33. Запуск програми з середовища розробки

2.14 Помилки часу виконання

Під час роботи додатки можуть виникати помилки, які називаються помилками

часу виконання (run time errors) або виключеннями (exceptions). В більшості випадків

причинами виключень є невірні початкові дані.

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

клацання на кнопці Обчислити на екрані з'явиться вікно з повідомленням про помилку

(мал. 2.34).

33


AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A BBYY

c

 

 

 

 

 

 

 

 

AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A B BYY

c

 

 

 

 

 

 

 

 

Мал. 2.34. Приклад вікна з повідомленням про помилку часу виконання (програма запущена з Windows)

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

цих двох символів є правильним, залежить від налаштування Windows.

Якщо в налаштуванніWindows вказане, що роздільник цілої і дробової частин числа — кома (для Росії це стандартна установка), а користувач використовував крапку

(ввів в поле Напругу (Edit1) рядок10.5), то при виконанні інструкції

u = StrToFloat(Editl->Text);

виникне виключення, оскільки при вказаному налаштуванніWindows вміст поля редагування і, отже, аргумент функції Strtofloat не є зображенням дробового числа.

Якщо програма запущена з середовища розробки, то при виникненні виключення виконання програми припиняється і на екрані з'являється вікно з повідомленням про

помилку і її тип. Як приклад на мал. 2.35 приведено вікно повідомлення про виникнення

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

Мал.

2.35. Приклад повідомлення про

виникнення

виключення(програма

запущена з C++ Builder)

 

 

Після

виникнення виключення і клацання

на кнопці

ОК у діалоговому вікн

Debugger Exception Notification (мал. 2.35) виконання програми можна перервати або,

не дивлячись на виниклу помилку, продовжити. Щоб перервати виконання програми,

треба в меню Run вибрати команду Program Reset щоб продовжити — команду Step Over.

Обробку виключень бере на себе код, що автоматично додається у виконувану

програму, який забезпечує, зокрема, і виведення інформаційного повідомлення. Разом з тим C++ Builder дає можливість програмі самій виконати обробку виключення.

34


AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A BBYY

c

 

 

 

 

 

 

 

 

Інструкція обробки виключення виглядає так:

try

{

// тут інструкції, виконання яких може викликати виключення

}

catch ( Тип &е)

{

// тут інструкції обробки виключення

}

де:

AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A B BYY

c

 

 

 

 

 

 

 

 

§try — ключове слово, що позначає, що далі слідують інструкції, при виконанні яких можливе виникнення виключень, і що обробку цих виключень бере на себе програма;

§catch — ключове слово, що позначає початок секції обробки виключення.

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

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

виникнення.

Таблиця 2.12. Типові виключення

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Виключення

 

 

 

Виникає

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EConvertError

 

 

При виконанні перетворення, якщо перетворювана

 

 

 

 

величина не може бути приведена до необхідного типу.

 

помилка перетворення

 

 

Найчастіше виникає при перетворенні рядка символів в

 

 

 

 

 

число

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EDivByZero

 

 

При

виконанні

операції

цілочисельного

ділення,

 

цілочисельне

ділення

 

 

на

 

нуль

 

 

 

якщо дільник дорівнює нулю

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EZeroDivide

 

 

При

виконанні

операції

ділення над

дробовими

 

ділення на нуль

 

 

 

операндами, якщо дільник дорівнює нулю

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При

виконанні

файлових

операцій. Найбільш

 

 

 

EInOutError

 

частою причиною є відсутність необхідного файлу або, у

 

 

 

помилка введення/виводу

 

 

разі використання змінного диска, відсутність диска

в

 

 

 

 

 

накопичувачі

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35


AB

 

 

 

F

 

 

 

D

 

 

Y

P

B

Y

 

 

 

 

 

 

w

Click

 

 

 

w

 

 

 

w.

 

 

 

A

Tran

sf

 

 

 

 

 

 

 

 

 

F Tran

sf

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

or

e

 

 

 

Y

P

 

 

 

 

or

e

 

 

 

 

m

 

B

Y

 

 

 

 

 

 

 

 

m

 

 

buy

 

r

B

 

 

 

 

 

 

buy

r

 

 

 

2

 

 

 

 

 

 

 

2

 

 

 

0

 

 

 

 

 

 

 

 

0

 

to

 

 

 

 

.

A

 

 

 

 

 

 

 

to

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

here

 

 

 

 

 

 

 

 

 

 

 

 

here

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

У програмі обчислення сили струму виключення можуть виникнути при виконанні

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

o

 

 

 

c

 

перетворення рядків, введених в поля редагування, в числа і при обчисленні величини

 

 

c

 

 

 

.

 

 

 

 

 

 

 

 

w.

 

 

.

 

 

BBYY

 

 

 

 

 

 

 

 

 

 

A B BYY

 

 

 

струму. Виключення EConvertCrror виникне, якщо користувач неправильно введе числа в поля редагування: наприклад, розділив цілу і дробову частини крапкою. Виключення EZeroDivide виникне, якщо користувач задасть величину опору рівну нулю. У лістингу 2.3 приведена функція обробки події OnСlick на командній кнопці Обчислити. У функцію

включені інструкції обробки виключень.

Лістинг 2.3. Обробка виключень

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 

float u;

// напруга

float r;

// опір

float i;

// струм

//отримати дані з полів введення

//можливе виключення — помилка перетворення рядка в число

try

{

u = StrToFloat(Editl->Text);

r = StrToFloat(Edit2->Text);

}

catch (EConvertError &e)

(

ShowMessage("При введенні дробових чисел використову кому.");

return;

}

//обчислити струм

//можливе виключення — ділення на нуль

try

36


AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A BBYY

c

 

 

 

 

 

 

 

 

{

i = u/r;

}

catch (EZeroDivide &e)

{

AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

r

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

Click

 

 

 

 

w

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

A B BYY

c

 

 

 

 

 

 

 

 

ShowMessage("Величина опору не має дорівнювати нулю"); Edit2->SetFocus(); // курсор а поле Опір

return; }

// вивести результат в полі мітки

Label4->Caption = "Струм : " +

FloatToStrf(i,ffgeneral,7,3);

У приведеній функції для виведення повідомлень у разі виникнення виключень

використана функція ShowMessage, яка виводить на екран вікно з текстом і командною

кнопкою .ОК Інструкція виклику функціїShowMessage виглядає так: ShowMessage(Повідомлення);

Де повідомлення — строкова константа (текст, який треба вивести). На мал. 2.36 приведений вид вікна повідомлення, отриманого в результаті виконання інструкції:

ShowMessage("Величина опору не має дорівнювати нулю.");

Мал. 2.36. Повідомлення, виведене функцією ShowMessage

Слід звернути увагу на те, що в заголовку вікна повідомлення, що виводиться функцією ShowMessage указується назва додатку. Назва додатку задається на вкладці Application вікна Project Options. Якщо назва додатку не задана, то в заголовку буде ім'я виконуваного файлу.

Для виведення повідомлень можна використовувати функціюMessagedig.

Функція Messagedig дозволяє помістити у вікно з повідомленням один із стандартних

значків, наприклад "Увага", задати кількість і тип командних кнопок і визначити, яку з

37