You are on page 1of 35

Лекція №1.

Принципи
програмування
на С++.
АЛГОРИТМІЗАЦІЯ ТА ОСНОВИ ПРОГРАМУВАННЯ
План лекції
1. Стандарт мови С++
2. Основні поняття та визначення
3. Структура програми на мові С++
4. Директиви препроцесора
5. Точка входу в програму. Перша програма
6. Класифікація типів даних С++
Стандарт мови
Мову програмування С++ на початку 80-х
років створив Бьяртні Страуструп на базі
популярної серед професіоналів-
програмістів мови С, яку розробив Деніс
Рітчі
Стандарт мови
Для узгодження всіх реалізацій мови у 1990 ро
ці Американський інститут національних
стандартів (ANSI) створив комітет для прийняття
стандарту мови С++. Пізніше відповідна комісія
була створена й у Міжнародній організації
стандартів (ІSО). Ці дві організації, які
називаються ІSО/ANSI, у 1998 році виробили
остаточний міжнародний стандарт для С++.
Стандар
т мови
Програмний код
Текст будь-якої програми складається з
команд, описів змінних, сталих, приєднань
бібліотек тощо. Такий текст часто називають
програмним кодом.
Програмний код необхідно перекласти на
внутрішню мову комп'ютера, тобто створити
машинний код. Цю операцію виконує
компілятор мови програмування.
Алфавіт і ключові слова
Алфавіт мови С++ складається з:
•великих і малих літер латинського
алфавіту: "А", ..., «а»
•цифр 0, 1, ..., 9;
•спеціальних символів: " ' ( ) [ ] { } < > . , ; : ?
! ~ * — = / \ # % $ & - " @ та символу
підкреслення _.
Алфавіт і ключові слова
Програми складаються із
синтаксичних конструкцій, які
називаються командами (інші назви
- оператори, вказівки, речення).
Команди будуються з лексем -
неподільних елементів мови: слів,
чисел, символів операцій.
Алфавіт і ключові слова
Слова поділяють на ключові слова й ідентифікатори.
Ідентифікатор - це назва (ім'я), яку користувач надає
об'єктам, наприклад, змінним, сталим, функціям. Усі
слова можуть складатися з рядкових чи прописних літер
англійського алфавіту, цифр, а також містити символ
підкреслення. Ідентифікатор завжди починається з
букви або із символу підкреслення.

Зауваження 1, Однакові за змістом малі та великі літери у мові С+


+ вважаються різними символами.
Алфавіт і ключові слова
Зарезервовані ідентифікатори
називаються ключовими словами. Вони
використовуються для написання команд.
Змінити призначення ключового слова у
програмі не можна.
Приклад: new, if, else, switch, bool, int this і
т.д.
Структура програми на
мові С++
Директиви препроцесора
Препроцесор - це програма, яка
опрацьовує директиви.
Директиви препроцесора – це команди
компілятора відповідної мови
програмування, які виконуються на
початку компіляції програми. Директиви
мови С++ починаються із символу #.
Директиви препроцесора
Директива #include означає, що до програми необхідно
приєднати програмний код із зазначеного після неї файлу.
Файли, які приєднують директивою #include, називаються
файлами заголовків (header-файлами, бібліотеками,
модулями). У таких файлах зазвичай оголошують сталі й
змінні, заголовки (сигнатури) функцій тощо.

#іnclude <назва файлу.розширення>


або так:
#include "шлях до файлу\назва файлу.розширення"
Директиви препроцесора
Директива #define має подвійне значення. По-
перше, вона може задати стале значення (оголошує
сталу). Наприклад, якщо у програмі задано #define
N 25, то N під час виконання програми матиме
значення 25. По-друге, вона дає змогу описати
макроси - короткі команди (переозначити команди)
чи записати функції
#define D(а, b, с) ((b) * (b) - 4 * (а)* (с))
Директиви препроцесора
Директива #undef скасовує дію директиви #define.

#define D(а, b, с) ((b) * (b) - 4 * (а)* (с))


#undef D
#define D(а, b, с) ((а)*(b)* (с))
Головна функція
Кожна програма на С++ у своєму складі повинна
мати головну функцію main(). Саме функція main()
забезпечує створення точки входу в об’єктний
модуль.
Крім функції main(), до програми може входити
будь-яка кількість функцій. Кожна функція по
відношенню до іншої є зовнішньою. Для того, щоб
функція була доступна, необхідно, щоб до її виклику
про неї було відомо компілятору.
Програма мовою С++
//моя перша програма мовою С++
#include <iostream>
using namespace std; //вказує на те, що ми використовуємо за
замовчуванням простір імен з назвою «std»
void main() {
cout << "Hello, world!" << endl;
system("pause"); // console pause

}
Пріоритети та порядок виконання операцій
Класифікація типів даних
Під типом даних розуміють множину припустимих
значень цих даних і множину дозволених операцій
над ними.
Тип даних визначає і розмір пам'яті, що займають
змінні і константи даного типу. Кожен тип даних має
ім'я (ідентифікатор). Пам'ять не виділяється для типу
даних, а виділяється для розміщення змінної або
константи.
Категорії типів даних
базові типи даних;
похідні типи.
Базові типи
Базові типи мають імена, які є ключовими словами мови.
До базових типів належать: цілочисельні та дійсні типи і порожній тип —
void.
Тип void не має значення і введений для опису функцій, які не повертають
значень, у списку параметрів – функція не приймає ні яких значень.
Логічний тип, символьні і цілі типи даних є цілочисельним типом, для якого
визначені всі операції з цілими числами.
int (цілий);
char (символьний);
bool (логічний);
float (дійсний);
double (дійсний з подвійною точністю);
void (порожній, не має значення).
Специфікатори типу
Для уточнення внутрішнього подання та діапазону значень
стандартних типів мова C++ використовує чотири специфікатори
типу:
short (короткий);
long (довгий);
signed (знаковий);
unsigned (беззнаковий).
Характеристики основних
типів даних мови С++
Похідні типи
Похідні типи визначаються на основі базових типів. Похідні типи
поділяються на скалярні і структурні (агрегатні).
До скалярних похідних типів належать:
перерахування (enum — enumeration) — множина поіменованих
цілих значень;
вказівники (ім'я_типу *);
посилання (ім'я_типу &).
Структурні типи:
масиви (тип_елементу ім'я_масиву[число_елементів]);
структури (struct);
*об'єднання (union),
класи (class).
Оголошення змінних
Дані в програмі можна розділити на змінні і константи.
Перед використанням змінні і константи повинні бути
оголошені за допомогою оператора оголошення.
Наприклад,
int a=5, у;
const float g = 9.81, С = 0.577216;

Для явного задання діапазону можна


використовувати модифікатори signed, unsigned.
Час існування і область
видимості змінних
Кожна змінна, оголошена в програмі, має дві
найважливіші характеристики видимості.
◦ час існування;
◦ область
Ці характеристики взаємозалежні та істотно
впливають на можливості використання змінної у
програмі. Взаємозв'язок характеристик
визначається способом виділення пам'яті для
змінної.
Час існування
Час існування, або час життя змінної,
вимірюється у наступних двох відносних
одиницях.
◦ Локальний час життя — це час існування
змінної при виконанні блоку, у якому
вона оголошена.
◦ Глобальний час життя — це час існування
змінної при виконанні всієї програми.
Область видимості
Область видимості, або область дії змінної, також
вимірюється в двох відносних одиницях.
◦ До кінця блоку, у якому оголошена змінна.
◦ До кінця файлу, у якому оголошена змінна.
Керувати цими характеристиками змінних
програміст може двома шляхами:
◦ зміною місця оголошення змінної у програмі;
◦ використанням модифікаторів auto, register,
static, extern.
Модифікатори
Автоматична (auto) змінна або константа має локальну область дії і відома
тільки всередині блоку, у якому вона визначена. Для автоматичної змінної
виділяється тимчасова пам'ять. Пам'ять виділяється при вході в блок, а при
виході з нього пам'ять, виділена для змінної, вважається вільною, тобто змінна
знищується. Якщо специфікатор класу пам'яті не визначений, то зміна
вважається автоматичною.
Регістрова (register) змінна відрізняється від автоматичної лише пам'яттю, що
виділяється для її збереження. Регістрова змінна зберігається в регістрі
процесора, і, відповідно, доступ до цієї змінної набагато швидший, ніж до
змінної, яка зберігається в оперативній пам'яті (auto). У випадку відсутності
вільних регістрів регістрова змінна стає автоматичною.
Зовнішня (extern) змінна є глобальною змінною. Специфікатор extern інформує
компілятор, що змінна буде оголошена (без extern) в іншому файлі, де їй і буде
виділена пам'ять.
Статичній (static) змінній (константі) виділяється пам'ять після її оголошення і
зберігається до кінця виконання програми. Статичні змінні при оголошенні
ініціалізуються нульовими (логічні, цілі і дійсні) порожніми значеннями.
Типи користувача
Крім вище описаних стандартних типів даних,
можна створювати типи користувача

typedef <опис типу> <назва нового типу>;

тип kilkist для позначення коротких цілих даних


без знаку:
Typedef unsigned short int kilkist
Змінні (kil1, kil2) цього типу у програмі можна
оголосити так: kilkist kil1, kil2
<iostream.h>
Потоки. Введення – виведення даних
cin>> змінна1>>змінна2>>зміннаN
Приклад:
int a,b,c;
cin>>a;
cin>>b;
cin>>c;

cout<<вираз1<<вираз2<<виразN
Приклад:
соut << "Периметр = " << р;
соut << "Площа = " << s;
сout. Керуючі символи
Символ Опис
\r повернення каретки на початок рядка

\n новий рядок
\t горизонтальна табуляція
\v вертикальна табуляція
\» подвійні лапки
\’ апостроф
\\ зворотний слеш
\0 нульовий символ
\? знак питання
\a сигнал біпера (спікера) комп'ютера

соut <<"Увага! \а\n"; соut <<"Дане введено некоректно \n";


соut <<"Виконайте програму ще раз";
Математичні функції
(math.h)
Функція Значення
abs (n) Абсолютне значення n
sqrt (n) Квадратний корінь з n
exp(n) Експонента n
Випадкове ціле число в діапазоні від 0 до п-1 (перед першим
зверненням до функції необхідно викликати
random [VI 9] (n)
функцію randomize (), яка виконає ініціалізацію програмного
генератора випадкових чисел)
sin (a) Синус вираженого в радіанах кута а
cos (a) Косинус вираженого в радіанах кута а
tan (a) Тангенс вираженого в радіанах кута а
asin(n) Кут (у радіанах), синус якого рівний n
acos (n) Кут (у радіанах), косинус якого рівний n
atan(n) Кут (у радіанах), тангенс якого рівний n
Задача 1.
Нехай задано катети прямокутного
трикутника а = 3, 6 = 4, Знайти
периметр і площу трикутника.
Текст програми
#include <iostream>
#include <math.h>
using namespace std;

void main(){
int a = 3, b = 7, p;
float c, S;
c = sqrt(a*a + b*b);
p = a + b + c;
S = (float)a*b / 2;
cout << "p = " << p << " ";
cout << "S = " << S << " ";

system("pause"); // console pause


}

You might also like