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

Програма мовою С++ складається з проекту до складу якого входять:

- файл проекту Project1.bpr,

- файл форми Unit1.dfm,

- головного файлу проекту Project1.cpp, записаного мовою С++, який підключає всі форми проекту, ресурси і основну функцію обробки проекту WinMain(),

- файл програми записаної мовою С++ Unit1.cpp,

- заготовочний файл Unit1.h,

- об’єктний файл Project1.obj,

- об’єктний файл Unit1.obj,

- файл ресурсів Project1.res,

- файл додатку Project1.exe (виконуючий файл в середовищі Windows).

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

1) створення надійних додатків,

2) відносно легко коректувати тексти програм.

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

Всі об’єкти компонентів розміщуються на об’єктах - формах. Для кожної форми, яка проектується, С++ Builder створює окремий модуль. Саме в модулях і відбувається програмування задачі. В обробниках подій об’єктів розміщаються алгоритми.

До складу файлу реалізації входять: опис даних (табл.1.1), операції (табл.1.2), оператори, стандартні функції (табл.1.3) та функції користувача, тобто лексичні одиниці.

Для виконання програми слід підготувати її текст, який зберігається у файлі з розширенням .срр. Цей файл передається на компілювання та усунення синтаксичних помилок, виявлених компілятором. Якщо у файлі після компіляції немає помилок, то створюється об’єктний файл з розширенням .obj, який доповнюється бібліотечними функціями – процес компонування. У результаті цього створюється виконуючий файл програми з розширенням .exe. Схему створення виконуючого модуля наведено на рис.1.1.

Основні функції, які потрібні для роботи у С++ зведені в бібліотеку, затверджену ANSI як стандарт. Бібліотека ділиться на групи функції, наприклад, функції введення-виведення, математичні функції (табл.1.3) і т. ін. Виклик потрібної для використання в конкретній програмі групи функцій виконується завдяки директиві препроцесора #include за існуючим форматом: #include <ім’я_файла.розширення>, де ім’я_файла. розширення – ім’я файла для групи функцій. Директива #include розміщується на початку програми і записується з першої позиції рядка.

 

Таблиця 1.1 - Основні типи даних

 

Формат Біт Діапазон значень Назва типу
Цілі числа
int -32 768…32 767 Ціле
short int -32 768…32 767 Коротке ціле
unsigned int 0…65 535 Ціле додатне
long -2 147 483 648…2 147 483 647 Довге ціле
unsigned long 0…4 294 967 295 Довге ціле додатне
Дробові числа
float 3.4Е-38...3,4Е+38 Дробове
double 1.7Е-308...1.7Е+308 Дробове з подвійною точністю
long double 3.4Е-4932...3.4Е+4932 Довге дробове з подвійною точністю
Символи
unsigned char 0…255 Символ
char -127…127 Символ
Рядки символів
char * Залежить від кількості символів у рядку (масив символів)
AnsiString Залежить від кількості символів у рядку (масив символів)

 
*.cpp      
       
    *.h  
       
       
       
       
       
*.obj   *.lib  
       
       
       
  *.exe      
       

 

Текст програми
Препроцесор
Файли, які підключаються
Повний текст програми
Компілятор
Об’єктний код програми
Компонувальник
Бібліотечні функції
Виконуюча програма

Рисунок 1.1 - Схема підготовки виконуючої програми (.exe - файлу)

 


Таблиця 1.2 - Операції мови С++

Операція Назва Приклад Особливості
Арифметичні
+ Додавання a+b  
- Віднімання a-b  
* Множення a*b  
/ Ділення a/b Ділення цілих – результат ціле, дробова частина відкидається. Ділення дробових – результат дробовий
% Залишок від ділення цілих чисел a%b Знак залишку співпадає зі знаком чисельника
++ Інкремент (збільшення на 1) ++a або а++ Перший випадок – a збільшити на 1, а потім виконати дії. Другий – виконати дії, а потім збільшити на 1
-- Декремент (зменшення на 1) --a або а-- Перший випадок – a зменшити на 1, а потім виконати дії. Другий – виконати дії, а потім зменшити на 1
Логічні
&& І (логічне множення) a&&b Результат типу int, якщо дорівнює 0 – хибно, 1 – істина (таблиці істинності)
|| АБО (логічне додавання) a||b - ‘’-
! НЕ (логічне заперечення) !a - ‘’-
Відношення (порівняльні)
= = Дорівнює a= =b Результат типу int, якщо дорівнює 0 – умова не виконується, інакше 1
!= Не дорівнює a!=b - ‘’-
> Більше a>b - ‘’-
< Менше a<b - ‘’-
>= Не менше a>=b - ‘’-
<= Не більше a<=b - ‘’-
Бітові
& I (кон’юнкція) 7&5=5 Результат отримується за таблицями істинності
| АБО (диз’юнкція) 7|5=7 - ‘’-
^ Подвійне АБО 7^5=2 - ‘’-
~ Заперечення ~6=1 - ‘’-
Присвоєння
= Присвоєння a=b Перетворення даних до одного типу відбувається автоматично
+= Присвоєння суми a+=b a=a+b. Тип short перетворюється в long із збереженням значення. Тип long у short з втратою старших бітів. Тип float y int з відкиданням дробової частини
- = Присвоєння різниці a-=b a=a-b. – ‘’ -
* = Присвоєння добутку a*=b a=a*b. – ‘’ -
/= Присвоєння частки a/=b a=a/b. – ‘’ -
%= Присвоєння залишку від ділення a%=b a=a%b. – ‘’ -

 

Оператори мови С++

1. Порожній оператор.

Синтаксис: ;

 

2. Складовий оператор (блок).

Синтаксис:

{

[<оператор 1>] [ ] – дії вказані в квадратних дужках не обов’язкові;

... < >– дії вказані в кутових дужках виконуються обов’язково.

[<оператор N>] }

 

3. Оператор вираз.

Синтаксис: <вираз>;

 

4. Умовний оператор if.

Синтаксис: if(<вираз>)

<оператор 1>

[ else

<оператор 2>]

 

5. Оператор покрокового циклу for.

Синтаксис:

for([<початковий вираз>]; [<умовний вираз>]; [<вираз збільшення чи зменшення>])

<оператор>

 

6. Оператор циклу з передумовою while.

Синтаксис: while (<вираз>)

<оператор>

 

7. Оператор цикла з постумовою do.

Синтаксис: do

<оператор>

while (<вираз>);

 

8.Оператор продовження continue.

Синтаксис: continue

9. Оператор-перемикач switch.

Синтаксис: switch(<вираз>)

{[case <константний вираз>:]

[<оператор>]

. . .

[case <константний вираз>:]

[<оператор>]

[ default:

<оператор>] }

 

10. Оператор розриву break.

Синтаксис: break;

 

11. Оператор переходу goto.

Синтаксис: goto <мітка>;

. . .

<мітка>:<оператор>

 

12. Оператор повернення return.

Синтаксис: return [<вираз>]

 

Таблиця 1.3 - Математичні функції

 

Назва функції Призначення Прототип (тип, який повертає функція, назва, аргументи)
abs Модуль цілого числа x int abs (int x)
acos Арккосинус кута x double acos (double x)
asin Арксинус кута x double asin (double x)
atan Арктангенс кута x double atan (double x)
atan2 Арктангенс кута y/x double atan2 (double y, double x)
ceil Знаходження найменшого цілого, яке більше чи дорівнює х double ceil (double x)
cos Косинус кута x double cos (double x)
cosh Гіперболічний косинус double cosh (double x)
exp Експонента (число е в степені х) double exp (double x)
fabs Абсолютне значення аргумента типу double double fabs (double x)
fmod Знаходження залишку від ділення x/y double fmod (double x, double y)
log Обчислення натурального логарифма double log (double x)
log10 Обчислення логарифма за основою 10 double log10(double x)
pow Обчислення x в степені y double pow (double x, double y)
rand Повертає випадкове ціле число в діапазоні від 0 до деякого максимального значення int rand (void)
sin Синус кута х double sin (double x)
sinh Гіперболічний синус double sinh (double x)
sqrt Квадратний корінь х double sqrt (double x)
tan Тангенс кута х double tan (double x)
tanh Гіперболічний тангенс double tanh (double x)