- •Міністерство освіти і науки україни
- •Розділ 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. Розв’язати матричні рівняння.
- •Список літератури
Розділ 12. Структури
12.1. Загальна характеристика структури
Структури дають можливість групувати дані і працювати з цими даними як із єдиним цілим.
Структура являє собою множину, що складається з декількох значень, кожне з який може мати свій тип даних. Елементи структур можуть мати різні типи даних.
Для визначення структури використовується синтаксис:
struct [тег структури]
{
в
}
поля структури
визначення члена структури;
} [одна або декілька змінних-структур];
тег-ім’я структури.
Приклад структури з інформацією про компакт-диски:
struct cd_info
{
char title [25]; //назва
char artist [28]; //виконавець
int num_song; //число пісень
float price; //вартість
char date_bought [8]; //дата покупки
} cd1, cd2, cd3;
Тут описані три структурні змінні: cd1, cd2, cd3;
Існує два засоби ініціалізації структур:
при оголошенні;
окремо в тілі програми.
Приклад 1. Ініціалізація при оголошенні
struct cd_info
{
char title[25];
char artist[28];
int num_song;
float price;
char date_bought[8];
} cd1=
{
"Red Moon Men",
"Пугачова", 12, 20.55,
"02/13/98"
};
Приклад 2. Присвоювання в тілі програми.
#include <iostream>
using namespace std;
struct cd_info
{
char title [25];
char artist [28];
int num_song;
float price;
char date_bought [8];
};
void main()
{
cd_info cd1;
strcpy(cd1.title, "Red Moon Men");
cd1.num_song = 12;
cd1.price = 11.95f;
strcpy(cd1.artist, "Пугачова");
cout << "Title: " << cd1.title << "\n";
cout << "Artist: " << cd1.artist << "\n";
cout << "Number of songs: " << cd1.num_song<< "\n";
cout << "Price: " << cd1.price << "\n";
}
Як очевидно з прикладу до полів структури можна звертатися, вказуючи ім’я змінної-структури, ім’я поля та розділяючи ці імена точкою.
У загальному вигляді:
struct bb
{
int field_1;
char field_2;
} c={10,'A'}, a={20,'B'};
int value1 = c.field_1; //10
char value2 = a.field_2; //B
Якщо змінна ptr визначена як вказівка на структуру, то для доступу до полів структури використовується операція "–>". Перед цим необхідно створити об’єкт структури, використовуючи оператор new, а в кінці видалити його за допомогою delete.
Наприклад:
bb *ptr = new bb;
ptr->field_1 = 10;
ptr->field_2 = 'A';
..........................
delete bb;
Оператор ptr->field_1 еквівалентний виразу (*ptr).field_1.
Приведемо приклад роботи з комплексними числами:
#define COMPLEX struct complex_type
COMPLEX
{
float real;
float image;
};
Операція додавання С1 і С2 для одержання С3.
#define COMPLEX struct complex_type
COMPLEX
{
float real;
float image;
};
COMPLEX C1, C2, C3;
C1.real = 1;
C1.image = 2.5f;
C2.real = 2;
C2.image = 3;
C3.real = C1.real + C2.real; //3
C3.image = C1.image + C2.image; //5.5
або
COMPLEX* C1, *C2, *C3;
C1 = new COMPLEX;
C2 = new COMPLEX;
C3 = new COMPLEX;
C1->real = 1;
C1->image = 2.5f;
C2->real = 2;
C2->image = 3;
C3->real = C1->real + C2->real; //3
C3->image = C1->image + C2->image; //5.5
..................................
delete C1;
delete C2;
delete C3;
Структури можуть бути вкладеними, тобто одним із полів структури може бути інша структура.
Приклад:
#include <iostream>
using namespace std;
struct address_info
{
char addr[25]; //Інформація про адресу
char state[20];
};
struct add
{
char name[25];
address_info *address;
double zarp;
};
void main()
{
add t;
t.address = new address_info;
cin >> t.zarp;
cin >>t.name;
cin >>t.address->state;
cin >>t.address->addr;
delete t.address;
}
Вкладена структура має вигляд:
Резюме:
Структури дозволяють групувати дані більш гнучким чином, ніж масиви. Вони можуть містити елементи різноманітних типів даних. Ініціалізувати структури можна двома засобами: під час оголошення, або за допомогою операторів «точка»(.) або "–>" у тілі програми. Структури аналогічні записам бази даних, а їхні елементи – полям записів.