Теоретичні відомості
Програма мовою С++ складається з проекту до складу якого входять:
- файл проекту 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 | Залежить від кількості символів у рядку (масив символів) |
|
Текст програми |
Препроцесор |
Файли, які підключаються |
Повний текст програми |
Компілятор |
Об’єктний код програми |
Компонувальник |
Бібліотечні функції |
Виконуюча програма |
Рисунок 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) | |