- •Міністерство освіти і науки україни
- •Розділ 1. Арифметичні основи обчислювальних машин
- •1.1. Позиційні системи числення. Переведення числа з однієї системи числення в іншу
- •1.2. Форма представлення чисел. Кодування чисел
- •1.3. Арифметичні операції над двійковими числами. Машинні одиниці інформації
- •Контрольні питання
- •Завдання
- •Розділ 2. Основи алгоритмізації обчислювальних процесів
- •2.1. Поняття і властивості алгоритму
- •2.2. Засоби представлення алгоритмів
- •2.3. Типи алгоритмічних процесів. Приклади
- •Контрольні питання
- •Завдання
- •3.1. Загальна характеристика програми
- •3.3. Кроки для створення та виконання програми
- •3.4. Змінні та константи
- •3.5. Директиви препроцесора
- •Контрольні питання
- •Розділ 4. Введення-виведення даних
- •4.1. Об’єкт виведення даних cout
- •4.2. Функція виведення даних printf
- •4.3. Об’єкт введення даних cin
- •4.4. Функція введення даних scanf
- •Контрольні питання
- •5.2. Операції відношення
- •5.3. Логічні операції
- •5.4. Додаткові операції
- •5.5. Порозрядні операції
- •Контрольні питання
- •Завдання Лінійний обчислювальний процес
- •1. Визначити значення функції y
- •2. Геометричні завдання
- •Розгалужений обчислювальний процес
- •1. Визначити значення функції y
- •3. Перевірити, чи міститься точка з заданими координатами усередині заштрихованої області.
- •Розділ 6. Організація циклів
- •6.1. Організація арифметичних циклів з використанням оператору for
- •6.2. Організація ітераційних циклів з передумовою while та післяумовою do...While
- •6.3. Оператори switch та goto
- •Контрольні питання
- •Завдання Арифметичний цикл
- •Вкладені цикли
- •Ітераційний цикл
- •Суміщення розгалуженого та циклічного процесів
- •Розділ 7. Зовнішні пристрої та символьне введення/виведення. Рядкові, числові функції та функції роботи з датою та часом
- •7.1. Загальна концепція та функції символьного введення-виведення
- •7.2. Символьні функції
- •7.3. Рядкові функції
- •7.4. Числові функції
- •7.5. Функції роботи з датою та часом
- •Контрольні питання
- •Завдання
- •Розділ 8. Вказівки, посилання та масиви
- •8.1. Вказівки
- •8.2. Посилання
- •8.3. Одновимірні масиви
- •8.4. Багатовимірні масиви
- •8.5. Символьні масиви
- •Контрольні питання
- •Завдання Одновимірні масиви
- •Двовимірні масиви
- •Розділ 9. Робота з функціями
- •9.1. Засоби створення функцій
- •9.2. Видимість змінних
- •9.3. Параметри функції та передача значень
- •9.4. Передача масивів в якості параметрів функцій
- •9.5. Функції та вказівки
- •9.6. Перевантаження та шаблони функцій
- •Контрольні питання
- •Завдання
- •Розділ 10. Рекурсивне програмування
- •10.1. Основні поняття рекурсії. Визначення факторіалу числа
- •10.2. Приклади рекурсій
- •Контрольні питання
- •Розділ 11. Робота з файлами
- •11.1. Робота з текстовими та бінарними файлами
- •Можливі режими доступу
- •11.2. Довільний доступ у файлах
- •11.3. Файли потокового введення/виведення з використанням структури file.
- •Контрольні питання
- •Завдання
- •Розділ 12. Структури
- •12.1. Загальна характеристика структури
- •12.2. Масиви структур
- •12.3. Використання масивів, як елементів структур
- •3. Робота зі структурами є універсальною, передбачено додавання записів до файлу (флаг ios:app). Для підрахунку кількості структур на диску приведемо наступні рядки програми:
- •Контрольні питання
- •Завдання
- •Розділ 13. Об’єднання та інші типи даних. Обробка виключних ситуацій
- •13.1. Об’єднання
- •13.2. Перелічені типи даних (enum)
- •13.3. Бітові поля
- •13.4. Обробка виключних ситуацій
- •Контрольні питання
- •Розділ 14. Динамічні структури даних
- •14.1. Стек
- •14.2. Черга
- •14.3. Лінійний список
- •Контрольні питання
- •Завдання
- •Розділ 15. Типові методи сортування масивів
- •15.1. Бульбашкове сортування (bubble sort)
- •15.2. Сортування за допомогою вибору (choice sort)
- •15.3. Сортування вставками (insert sort)
- •15.4. Сортування Шелла
- •15.5. Швидке сортування (quick sort)
- •Контрольні питання
- •Завдання
- •Розділ 16. Чисельне диференціювання та інтегрування
- •16.1. Методи правих та центральних різниць чисельного диференціювання
- •16.2. Методи прямокутників, трапецій, Сімпсона (парабол) чисельного інтегрування
- •Контрольні питання
- •Завдання Чисельне диференціювання
- •Чисельне інтегрування
- •Розділ 17. Чисельні методи розв’язання алгебраїчних рівнянь
- •17.1. Метод половинного ділення (дихотомія)
- •17.2. Метод Ньютона (метод дотичних)
- •17.3. Метод Рибакова
- •Контрольні питання
- •Завдання
- •Розділ 18. Чисельні методи розв’язання системи лінійних алгебраїчних рівнянь
- •18.1. Визначник. Дії над матрицями. Обчислення оберненої матриці
- •18.2. Метод оберненої матриці.
- •18.3. Метод Крамера
- •18.4. Метод Гауса
- •Контрольні питання
- •Завдання
- •1. Розв’язати систему алгебраїчних рівнянь.
- •2. Обчислити добуток матриць.
- •3. Розв’язати матричні рівняння.
- •Список літератури
5.2. Операції відношення
Операції відношення (< (менше), <= (менше або дорівнює), > (більше), >= (більше або дорівнює), == (дорівнює), != (не дорівнює)) порівнюють перший операнд з другим. Операнди можуть бути арифметичного типу або вказівками. Результатом операції є значення true (1 – істина) або false (0 – неправда) (будь-яке значення, не рівне нулю, інтерпретується як true). Операції порівняння на рівність і нерівність мають менший пріоритет, ніж решта операцій порівняння.
cout << (2 == 2 == 2); // 0 - неправда
cout << (2 < 3); // 1 - істина
Розглянемо використання оператору if.
Оператор if
Синтаксис:
if ( <вираз> )
{ блок з одного або більш операторів }
Якщо після if стоїть 1 оператор, фігурні дужки можна не ставити.
Оператор if ...else
Синтаксис:
if ( <вираз> )
{ блок з одного або більш операторів }
else
{ блок з одного або більш операторів С++ }
if (Х > 0) Y = X * X;
else Y = 2 * X;
5.3. Логічні операції
Логічні операції:
&& – I
|| – АБО
! – НЕ
Операнди логічних операцій І (&&) та АБО (||) можуть мати арифметичний тип або бути вказівками, при цьому операнди в кожній операції можуть бути різних типів. Перетворення типів не виконується, кожен операнд оцінюється з точки зору його еквівалентності нулю (операнд, рівний нулю, розглядається як false, не рівний нулю, – як true).
Результатом логічної операції є true (1) або false (0). Результат операції логічне І має значення true тільки тоді якщо обидва операнди мають значення true. Результат операції логічне АБО має значення true, якщо хоча б один з операндів має значення true. Логічні операції виконуються зліва направо. Якщо значення першого операнда досить, щоб визначити результат операції, другий операнд не обчислюється. Такий засіб називається усіканням.
if ( a > b || c > d || e > f ) – переривається, як тільки обчислюється, що a > b, або c > d.
Логічне заперечення (!) дає в результаті значення 0 (false), якщо операнд є істиною (не нуль), та значення 1 (true), якщо операнд рівний нулю.
!( var1 = = var2 ) – те ж саме var1 ! = var2
Пріоритетність операцій:
арифметичні операції;
операції відношення;
логічні операції.
Усікання може бути використане для коректного обчислення.
Наприклад:
if ( b ! = 0 && a / b > 12.4 ) - коректно, ділення на нуль не буде.
Якщо записати if (a / b > 12.4 && b ! = 0 ) – небезпечно, може бути ділення на нуль.
Логічні вирази повертають значення типу bool. Будь-яке ненульове значення розглядається як істина.
5.4. Додаткові операції
Умовна операція ?
Синтаксис:
результат = вираз1 ? вираз2 : вираз3
Перший вираз може мати арифметичний тип або бути вказівкою. Він оцінюється з погляду його еквівалентності нулю (вираз, рівний нулю, розглядається як false, не рівний нулю, – як true). Якщо результат обчислення виразу 1 рівний true, то результатом умовної операції буде значення другого виразу, інакше – третього виразу. Обчислюється завжди або другий вираз або третій. Їх тип може розрізнятися. Умовна операція є скороченою формою умовного оператора if … else.
Приклад:
#include <iostream>
using namespace std;
void main()
{
int a = 6, b = 8;
int min = ( a < b ) ? a : b;
cout << "min = " << min; // 6
}
Операція інкремент ( ++ ) і декремент ( -- )
Ця операція збільшує або зменшує значення змінної.
При цьому в залежності від розташування справа або зліва від змінної інкремент ++ і -- називають префіксним або постфіксним.
++i означає i = i + 1 або i += 1;
--i означає i = i - 1 або i -= 1;
Якщо змінна має префіксну операцію, вона змінює своє значення перед тим, як буде використана у виразі. Якщо використовується постфіксна операція, то змінна змінить своє значення після обробки виразу:
a = 6;
b = a++ -1; // a = 7 b = 5
Префіксна операція має вищий пріоритет, ніж будь-яка інша операція.
s = ++(a + b ); → Помилка!!!
Операція застосовується тільки до змінної.
Приклад:
#include <iostream>
using namespace std;
void main()
{
int i = 1, j = 2, k = 3, a;
a = i++ + j - --k;
cout << a << i << k; // 122
}
Операція sizeof()
Операція визначення розміру sizeof призначена для обчислення розміру об’єкту або типу даних у байтах та має дві форми:
sizeof вираз
sizeof ( тип даних )
Приклад:
#include <iostream>
using namespace std;
void main()
{
float x = 3;
cout << "sizeof(float) = " << sizeof(float);
cout << "\nsizeof(x) = " << sizeof x;
cout << "\nsizeof(x + 5.0) = " << sizeof(x + 5.0);
}
Результат роботи програми:
sizeof(float) = 4
sizeof(x) = 4
sizeof(x + 5.0) = 8