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

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

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

Добавлен: 15.09.2024

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

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

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

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.30. Збереження проекту

Звернете увагу, що імена файлу модуля(срр) і файлу проекту (bрr) мають бути

разнимі, оскільки C++ Builder у

момент

збереження

файлу

проекту

створює

однойменний срр-файл (файл головного модуля). Крім того, треба врахувати, що ім'я

виконуваного файлу, що генерується компілятором, збігається з ім'ям проекту. Тому

файлу проекту слід привласнити

таке ,

імяке' , на вашу

думку, повинен

мати

виконуваний файл програми, а файлу модуля— яке-небудь

інше

ім',я наприклад,

отримане шляхом додавання до імені проекту порядкового номера модуля.

 

2.9 Компіляція

Процес

перетворення початкової

програми у виконувану складається з двох

етапів: безпосередньо

компіляції і

компоновки. На етапі компіляції виконується

переклад початкової програми в деяке внутрішнє уявлення. На етапі компоновки

виконується збірка (побудова) програми.

 

Після

введення

тексту функції

обробки події і збереження проекту , можна

вибравши в менюProject команду Compile виконати компіляцію. Процес і результат

компіляції відбивається в діалоговому вікніCompiling (мал. 2.31). Якщо в програмі немає синтаксичних помилок, то вікно міститиме повідомлення: Done: Compile Unit

інакше буде виведено повідомлення Done: There are errors.

29


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.31. Результат компіляції: у програмі є помилки

У випадку якщо компілятор виявить в програмі помилки і неточності, діалогове вікно Compiling міститиме інформацію про кількість синтаксичних (Errors) і семантичних (Warnings) помилок, а також про число підказок (Hints). Самі повідомлення про помилки,

попередження і підказки знаходяться в нижній частині вікна редактора коду.

Щоб перейти до фрагмента коду, який, на думку компілятора, містить помилку,

треба вибрати повідомлення про помилку(клацнути в рядку повідомлення лівою кнопкою миші) і з контекстного меню (мал. 2.32) вибрати команду Edit Source.

Мал. 2.32. Перехід до фрагмента програми, який містить помилку

Процес компіляції можна активізувати, вибравши в меню Run команду Run яка запускає застосування, що розробляється. Якщо буде виявлено, що з моменту останньої компіляції до програми були внесені зміни або програма ще жодного разу не компілювалася, то буде виконана компіляція, потім — компоновка, і після цього

30



AB

 

 

 

 

 

F Tran

sf

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

Y

P

 

 

 

 

or

e

B

Y

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

buy

 

r

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

to

 

 

 

 

.

 

 

 

 

 

 

here

 

 

 

 

 

 

 

 

 

Click

 

 

 

 

 

програма буде запущена(природно, тільки в тому випадку, якщо в програмі

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

m

 

 

w. .

o

помилок).

 

 

 

 

 

A BBYY

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F Tran

sf

 

 

 

 

 

 

D

 

 

 

 

 

Y

P

 

 

 

or

e

 

B

Y

 

 

 

 

 

 

m

B

 

 

 

 

 

buy

r

 

 

 

 

 

 

2

 

 

 

 

 

 

 

0

A

 

 

 

 

 

 

to

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

here

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click

 

 

 

 

немає

 

 

m

 

w

 

 

 

 

 

 

 

 

 

w

w.

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

A B BYY

c

 

 

 

 

 

 

 

 

 

2.10 Помилки

Компілятор переходить до другого етапу генерації виконуваної програми тільки в

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

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

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

курсор, але і на той, який знаходиться в попередньому рядку. Наприклад, в наступному фрагменті коду:

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

i = u/r

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

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

FloatToStrf(i,ffgeneral,7,2)+ " А";

не поставлена крапка з комою після оператора привласнення. Компілятор це

виявляє, виводить повідомлення statement missing ; але виділяє рядок Label4->Caption

="Струм : " + і встановлює курсор після ідентифікатора Label4.

Утаблиці. 2.10 перераховані типові помилки і відповідні ним повідомлення компілятора.

Таблиця 2.10. Типові помилки

Повідомлення

Undefined symbol

(невідомий символ)

Statement missing ;

(відсутня крапка з комою)

Помилка

 

 

 

 

Використовується

неоголошена

змінна

 

Ім'я

змінної, функції або параметра записано невірно.

Наприклад, в програмі оголошена зміннаSummа в

 

інструкціях використовується sum

 

 

 

Після інструкції не поставлена крапка з комою

31


AB

 

 

 

F

 

 

 

D

 

 

Y

P

B

Y

 

 

 

 

 

 

w

Click

 

 

 

w

 

 

 

w.

 

 

 

A

Tran

sf

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

or

e

 

 

 

 

 

 

Y

P

 

 

 

 

 

m

 

 

 

 

 

B

Y

 

 

 

 

 

 

buy

r

 

 

 

B

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

.

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

here

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click

 

 

 

 

o

m

Unterminated

string or

 

 

 

 

w

 

 

.

 

 

 

 

 

 

 

w

 

w.

 

BBYY

c

character

constant(незавершена

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В кінці строкової константи, наприклад, тексту

 

 

 

 

 

строкова

або

символьна

 

повідомлення, немає подвійних лапок

 

 

 

 

 

 

 

 

 

 

 

константа)

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

T ansf

 

 

 

 

or

 

 

 

 

m

 

 

 

 

e

 

 

 

buy

r

 

 

 

0

 

 

 

 

2

 

 

to

 

.

 

here

 

 

 

 

 

m

 

 

 

 

 

 

 

o

 

 

 

.c

 

B BYY

 

) expected

(очікується

 

При записі арифметичного виразу, що містить

 

 

дужки,

порушений

баланс

відкриваючих

 

закриваюча дужка)

 

 

закриваючих дужок

 

 

 

 

 

 

 

 

 

if statement missing ( (у

інструкції if немає відкриваючої

дужки)

Compound statement missing }

У інструкції if умова не поміщена в дужки

Порушений баланс відкриваючих і закриваючих

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

інструкцій, наприклад, після умови або словаelse у інструкції if

Extra parameter

in call

 

Невірно записана інструкція виклику функції,

 

to(зайвий параметр при

виклику

 

 

вказаний зайвий параметр

функції)

 

 

 

 

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

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

"тягнути" за собою досить велику кількість інших.

2.11 Попередження і підказки

При виявленні в програмі неточностей, які не є помилками, компілятор виводить

підказки (Hints) і попередження (Warnings). Наприклад, найбільш підказкою, що часто

виводиться, є повідомлення про оголошену, але не використовувану змінну(... is declared but never used.). Дійсно, навіщо оголошувати змінну і не використовувати її? У таблиці. 2.11 приведені попередження, що найчастіше виводяться компілятором.

Таблиця 2.11. Попередження компілятора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Попередження

 

 

Вірогідна причина

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

не

 

... is declared but never used

 

Змінна

оголошена,

але

ніде

 

 

 

 

використовується

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Possibly

incorrect

assignment.

 

У

умові,

наприклад,

інструкції

if

 

 

 

(ймовірно,

інструкція

привласненнязамість

оператора

порівняння(==)

 

 

 

некоректна)

 

 

 

використаний оператор привласнення (=)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Possibly

use of ... before definition.

 

Не

привласнено початкове

значення

 

 

 

(ймовірно,

використовується

 

 

 

 

 

змінної

 

 

 

 

 

 

 

 

неініціалізована змінна)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32