- •1. Загальні відомості 7
- •1. Загальні відомості
- •1.1. Структура програми
- •1.2. Типи даних
- •2. Лабораторна робота 1. «Обчислення арифметичних виразів» (2 год.)
- •2.1. Теоретичні відомості
- •2.2.1. Приведення типів
- •2.2. Постановка задачі
- •2.3. Варіанти
- •2.4. Методичні вказівки
- •Постановка задачі.
- •3.1. Теоретичні відомості
- •3.1.1. Умовний оператор if-else
- •3.1.2. Оператор вибору switch
- •3.1.3. Оператори циклу
- •3.1.4. Приклад. Побудова геометричної фігури
- •3.2. Постановка задачі
- •3.3. Варіанти
- •3.4. Методичні вказівки
- •Постановка задачі.
- •4. Лабораторна робота 3. «Обчислення ряду. Форматне введення-виведення даних» (2 год.)
- •4.1. Теоретичні відомості
- •4.1.1. Поняття ряду. Ітераційний процес
- •4.1.2.Форматне виведення даних
- •4.1.3.Форматне введення
- •4.1.4. Приклад. Програма обчислення ряду
- •4.2. Постановка задачі
- •4.3. Варіанти
- •4.4. Методичні вказівки
- •Постановка задачі.
- •5. Лабораторна робота 4. «Функції. Ітераційні процеси» (4 год.)
- •5.1. Теоретичні відомості
- •5.1.1.Ступеневі ряди
- •5.2. Постановка задачі
- •5.3. Варіанти
- •5.4. Методичні вказівки
- •Постановка задачі.
- •6. Лабораторна робота 5. «Масиви й покажчики. Введення й виведення елементів» (2 год.)
- •6.1. Теоретичні відомості
- •6.1.1. Оголошення масиву
- •6.1.2. Масиви й покажчики
- •6.1.3. Записи «покажчик-зсув» і «покажчик-індекс»
- •6.1.4. Пошук найменшого й найбільшого елементів масиву
- •6.2. Постановка задачі
- •6.3. Варіанти
- •Постановка задачі.
- •7.1.2. Масив випадкових чисел
- •7.1.3. Видалення елемента із масиву
- •7.1.4. Вставка елемента в масив
- •7.1.5. Перестановка двох елементів
- •7.1.6. Циклічна перестановка елементів
- •7.2. Постановка задачі
- •7.3. Варіанти
- •Постановка задачі.
- •8.1.2. Передача масиву у функцію
- •8.1.3. Приклад. Функції введення й виведення елементів матриці
- •8.2. Постановка задачі
- •8.3. Варіанти
- •8.4. Методичні вказівки
- •Постановка задачі.
- •9. Лабораторна робота 8. «Сортування масивів» (4 год.)
- •9.1. Теоретичні відомості
- •9.1.1. Метод обміну (бульбашковий)
- •9.1.2. Метод прямого вибору
- •9.1.3. Метод вставок
- •9.1.4. Порівняння ефективності алгоритмів сортування
- •9.1.5. Генерація псевдовипадкових чисел
- •9.2. Постановка задачі
- •9.3. Методичні вказівки
- •Постановка задачі.
- •10. Лабораторна робота 9. «Рядки» (4 рік.)
- •10.1. Теоретичні відомості
- •10.1.1. Функції для роботи із символами
- •10.1.2. Строкові константи
- •10.1.3. Рядки як масиви
- •10.1.4. Передача рядка у функцію
- •10.1.4. Уведення/виведення символів і рядків
- •10.1.4. Функції обробки рядків
- •10.2. Постановка задачі
- •10.3. Варіанти
- •10.4. Методичні вказівки
- •Постановка задачі.
- •Література
1. Загальні відомості
С++ – це універсальна мова програмування високого рівня, що є надмножиною мови програмування C.
С – це структурована, модульна, компактна мова програмування загального призначення, яка традиційно використовується для системного програмування. Програмні додатки, написані цієї мовою, легко встановити на інших комп'ютерах.
Мови С/С++ вміщають у собі, з одного боку, засоби мов програмування високого рівня: опис типів даних, оператори for, while, if і т.д., а, з іншого боку, засоби мови Асемблер: реєстрові змінні, адресну арифметику, можливість роботи з бітовими полями і т.д..
1.1. Структура програми
Прості програми мовою С++ мають, як правило, таку структуру:
#директива препроцесору
. . . . . . . . .
#директива препроцесору
функція а( ) {
оператори
}
функція b( ) {
оператори
}
//Головна функція, з якої починається виконання програми
main( ) {
оператори
}
Директиви препроцесору – управляють перетворенням тексту програми до її компіляції. Правила препроцесорної обробки визначає програміст за допомогою директив препроцесора, що починаються із символу #, наприклад,
#include <conio.h>
#define ZERO 0.0
де директива #include призначена для включення в програму тексту із заголовного файлу conio.h, який входить в стандартну бібліотеку С, а директива #define вказує правила заміни в тексті (замість ідентифікатора ZERO підставляється 0.0).
Програма являє собою набір описів і визначень, і складається з набору функцій. Серед цих функцій завжди повинна бути функція з ім'ям main, з якої починається виконання програми. Перед ім'ям функції містяться відомості про тип значення, що повертається функцією. За ім'ям функції в круглих дужках слідує список формальних параметрів (він може бути порожнім). Після списку у фігурних дужках розміщається тіло функції, що являє собою послідовність визначень, описів і операторів, що виконуються. Кожне визначення, опис або оператор закінчується крапкою з комою.
1.2. Типи даних
У мові С++ кожна величина має певний спосіб зберігання й запису в пам'яті – тобто певний тип. При складанні програми необхідно вказати типи даних, до яких належать значення змінних. Наприклад,
float z;
int a=99;
float g(int)
Тут змінна z оголошена як дійсна типу float, змінна а – як ціла типу int, а g оголошена як дійсна функція з аргументом цілого типу.
У С++ передбачений набір типів, що відображають особливості організації пам'яті більшості комп'ютерів і потреби в зберіганні даних. Всі типи даних у С++ можна розділити на дві великі групи: вбудовані типи (тобто існуючі у мові програмування) і користувальницькі типи (створюються самим програмістом). До вбудованих типів ставляться, насамперед, основні (або стандартні) типи:
bool – логічний;
char – символьний;
wchar_t – розширений символьний;
int – цілий;
float – дійсний;
double – дійсний подвійної точності;
Перші чотири типи називаються інтегральними типами, останні два – типами із плаваючою крапкою. Представлення інтегральних типів, відрізняється від коду величин із плаваючою крапкою.
Щоб розширити можливості програміста в застосуванні типів даних, існують модифікатори, які уточнюють внутрішнє представлення й діапазон значень стандартних типів:
signed – знаковий;
unsigned – беззнаковий;
long – довгий;
short – короткий.
При оголошенні змінної модифікатор ставиться перед ключовим словом типу, наприклад,
unsigned int x;
– оголошення цілої беззнакової змінної x. За умовчанням всі інтегральні типи є знаковими, тобто модифікатор signed для них можна вилучати. Модифікатори short і long можуть використовуватися тільки з типом int. Тому замість short int і long int для стислості можна записувати:
short x=221;
long z=-12345678;
До користувальницьких типів належать перелічуваний тип (enum), структури (struct) і класи (class).
Діапазони значень для основних типів даних, а також розмір пам'яті під них наведені у таблиці 1.1.
Табл. 1.1. Розмір пам'яті й діапазони значень для основних типів даних
Тип |
Розмір (байт) |
Інтервал значень |
|
bool |
1 |
true, false |
|
char |
1 |
-128.. 127 |
|
unsigned char |
1 |
0.. 255 |
|
wchar_t |
2 |
-32768 .. 32767 |
|
short |
2 |
-32768 .. 32767 |
|
unsigned short |
2 |
0.. 65535 |
|
int |
16-розр. платформа |
2 |
-32768 .. 32767 |
32-розр. платформа |
4 |
-2147483648 .. 2147483647 |
|
unsigned int |
16-розр. платформа |
2 |
0.. 65535 |
32-розр. платформа |
4 |
0.. 4294967295 |
|
long |
4 |
-2147483648 .. 2147483647 |
|
unsigned long |
4 |
0.. 4294967295 |
|
float |
4 |
3.410-38 .. 3.41038 |
|
double |
8 |
1.710-308 .. 1.710308 |
|
long double |
10 |
3.410-4932 .. 1.1104932 |
Для змінної типу int виділяється 2 або 4 байти пам'яті залежно від розрядності платформи (мікропроцесора, операційної системи, середовища програмування). Наприклад, Turbo C++ працює на 16-розрядній платформі (MS-DOS), а C++ Builder і Visual C++ - на 32-розрядній (Windows, Unix).
1.3. Операції в С++
У мові С++ є обмежений набір базових типів даних, однак визначений великий набір операцій над даними. Операції служать для побудови виразів. Вираз являє собою послідовність операндів і знаків операцій і служить для обчислення деякого значення. Результат обчислення виразу залежить від пріоритетів операцій (табл. 1.2).
Таблиця 1. 2. Пріоритети операцій у С++
Пріоритет |
Знак операції |
Призначення |
Схема |
1 |
:: |
Розширення області видимості (доступ до глобального імені або імені з іншої області) |
: : ідентифікатор (глобальний) ім'я області: : ім'я_елемента структури |
1 |
-> |
Звертання до елемента структури по покажчику на структуру |
покажчик -> ім'я_члена_структури |
1 |
. |
Звертання до елемента структури по імені структури |
ім'я_структури . ім'я_члена_структури |
1 |
[] |
Звертання до елемента масиву |
покажчик [індекс] |
1 |
typedef |
Перетворення типу даного |
ім'я_типу (вираз) або (тип) вираз |
1 |
() |
Виклик функції |
Функція(аргументи) |
2 |
++ |
Інкремент |
++ L-значення або L-значення++ |
2 |
-- |
Декремент |
-- L-значення або L-значення-- |
2 |
~ |
Бітове інвертування |
~ цілий_вираз |
2 |
! |
Логічне заперечення |
! вираз |
2 |
- |
Унарний мінус |
- вираз |
2 |
+ |
Унарний плюс |
+ вираз |
2 |
& |
Одержання адреси |
& L-значення |
2 |
* |
Розіменування покажчика |
* покажчик |
2 |
new |
Виділення динамічної пам'яті |
new тип даного |
2 |
delete |
Звільнення пам'яті |
delete покажчик |
2 |
sizeof |
Розмір даного (типу даних) |
sizeof вираз sizeof (ім'я типу ) |
3 |
* |
Множення |
вираз * вираз |
3 |
/ |
Ділення |
вираз / вираз |
3 |
% |
Залишок від ділення двох цілих |
вираз % вираз |
4 |
->* |
Звертання до елементу структури за покажчиком |
покажчик_на_структуру->* ім'я_елемента_структури-покажчика |
4 |
.* |
Звертання до елементу структури за іменем структури |
ім'я_структури .* ім'я_члена_структури-покажчика |
5 |
+ |
Додавання |
вираз + вираз |
5 |
- |
Віднімання |
вираз – вираз |
6 |
<< |
Зсув вліво |
цілий_вираз << цілий _вираз |
6 |
>> |
Зсув вправо |
цілий _вираз >> цілий _вираз |
7 |
< |
Менше |
вираз < вираз |
7 |
<= |
Менше або дорівнює |
вираз <= вираз |
7 |
> |
Більше |
вираз > вираз |
7 |
>= |
Більше або дорівнює |
вираз >= вираз |
8 |
== |
Дорівнює |
вираз == вираз |
8 |
!= |
Не дорівнює |
вираз != вираз |
9 |
& |
Побітове "І" |
вираз & вираз |
10 |
^ |
Виключне побітове "АБО" |
вираз ^ вираз |
11 |
| |
Побітове "АБО" |
вираз | вираз |
12 |
&& |
Логічне "І" |
вираз && вираз |
13 |
|| |
Логічне "АБО" |
вираз | | вираз |
14 |
?: |
Умовний вираз |
вираз ? вираз1 : вираз2 |
15 |
= |
Просте присвоювання |
вираз = вираз |
15 |
@= |
Складне присвоювання; @ - один зі знаків операцій * / % + - << >> & ^ | |
вираз @= вираз |
16 |
, |
Операція слідування (операція «кома») |
вираз, вираз |