Розробка програм з використанням структур
Приклад 1. Сформувати масив даних про 5 студентів групи. По кожному студенту необхідно мати дані: ПІБ, дата народження, стать. Вивести перелік юнаків, що народились в 1988 році.
|
Питання для самоперевірки
2) Описати структуру, яка описує карту: масть, достоїнство. Ініціалізувати структуру
3) Описати структуру, яка описує кісточку доміно: значення на лівій частині, значення на правій частині. Використовуючи змінну типу цієї структури, присвоїти полям відповідні значення.
4) Написати оператор виводу значень елементів структури, описаної в п.2.
5) Описати структуру, яка описує студента групи: ПІБ, група. Ініціалізувати структуру.
6) Описати структуру, що описує м'яч: колір, розмір, матеріал. Ініціалізувати структуру.
7) Описати структуру, що описує собаку: порода, окрас, рук народження, наявність медалей. Ініціалізувати структуру.
8) Визначити розмір структури, описаної в п.5.
9) Описати структуру, яка описує студента групи: ПІБ, группа, дата народження(день, місяць, рік), адреса(область, місто, вулиця, дім, квартира), використовуючи вкладені структури. Ініціалізувати структуру.
10) Вивести, використовуючи структуру з п.8, ПІБ стулента і його адресу.
Об¢єднання 1) Визначення об‘єднань2) Оголошення об‘єднань3) Доступ до елементів об‘єднань
Об¢єднання - це область пам¢яті, в якій в різні моменти часу можуть знаходитись об¢єкти різних типів. В довільний момент часу об¢єднання може містити тільки один об¢єкт, тому що елементи об¢єднання сумісно використовують одну й ту ж область пам¢яті.
Об¢єднання оголошуються за допомогою ключового слова union в такому ж форматі, як і структури. Формат оголошення:
union Number
{
int x;
float y;
};
Як правило, об¢єднання оголошуються до головної функції, щоб мати доступ до нього з довільної функції.
Пам'ять, яка відповідає змінній типу об'єднання, визначається величиною, необхідною для розміщення найдовшого елемента об'єднання. Коли використовується елемент меншої довжини, то змінна типу об'єднання може містити невживану пам'ять. Всі елементи об'єднання зберігаються в одній і тій же області пам'яті, починаючи з однієї адреси.
Доступ до елементів об'єднання здійснюється тим же способом, що і до структур.
Коли виконано присвоєння Numder.x=78; то звернення то іншого елементу не має сенсу. В пам¢яті буде зберігатись значення останнього присвоєння.
Об¢єднання дозволяє інтерпретувати представлення об'єкту одного типу, начебто цьому об'єкту був привласнений інший тип.
Допустимі операції такі ж, як і у структури.
Указники 1) Визначення указника2) Операції над указниками3) Зв‘язок між указниками і масивами4) Масиви указників Визначення указника Це змінні, значеннями яких є адреса пам‘яті. Указник містить адресу, за якою знаходиться значення. Кожна змінна, яка оголошується як указник, повинна мати перед собою знак *. Формат опису: <тип> *<ім‘я змінної>Символ * може стояти будь-де: int *ptr; int* ptr; int * ptr;Указник може бути ініційований при оголошенн і: int *ptr=(int*)200; або за допомогою операції присвоєння:
|
Операція | Позначення | Опис |
Інкремент | ++ | Збільшення указника для переходу до наступної адреси |
Декремент | - - | Зменшення указника для переходу до попередньої адреси |
Додавання | +, += | Збільшення указника на ціле число |
Віднімання | -, -= | Зменшення указника на ціле число. Можна знайти різницю між двома указниками |
Питання для самоперевірки
1) Описати указник на цілу змінну і ініціалізувати його.
2) Описати указник на дійсну змінну і ініціалізувати його.
3) Описати і ініціалізувати указник на масив 10 цілих елементів.
4) Маємо опис:
int b[8];
int *bPtr=b;
Вивести значення третього елементу масив, використовуючи указник.
5) Маємо опис:
int b[8]={1,2,3,4,5,6,7,8};
int *bPtr=b;
Що буде виведено при виконанні операторів:
cout<<b[7];
cout<<*bPtr;
cout<<*(bPtr+2);
6) Маємо опис:
int b[8]={1,2,3,4,5,6,7,8};
int *bPtr=b;
Що буде виведено при виконанні операторів:
cout<<*(b+7);
bPtr++;
cout<<*bPtr;
cout<<*(bPtr-1);
7) Маємо опис:
int b[8]={1,2,3,4,5,6,7,8};
int *bPtr=b;
Що буде виведено при виконанні операторів:
cout<<*(b+4);
bPtr-=2;
cout<<*bPtr;
cout<<bPtr[3];
8) Маємо опис:
int b[8]={1,2,3,4,5,6,7,8};
int *bPtr=b;
Що буде виведено при виконанні операторів:
cout<<*(bPtr+5);
bPtr++;
cout<<*bPtr;
bPtr+=3;
cout<<*(bPtr-2);
Файли і потоки
1) Введення і виведення потоків
2) Робота з файлами послідовного доступу
3) Приклад діалогової програми з використанням файлів послідовного доступу
4) Робота з файлами довільного доступу
Введення і виведення потоків
Потік -- це послідовність байтів. В операціях введення байти пересилаються від пристрою в оперативну пам'ять. Байти даних можуть представлятися у вигляді символів в коді ASCII, у вигляді внутрішнього формату, у вигляді графічного зображення, цифрового зображення і т.д.
Мова надає можливості для введення-виведення на «низькому» і «високому» рівнях. Уведення-виведення на низькому рівні (тобто неформатоване уведення-виведення) здійснює просто пересилку даних по байтах від пристрою в пам'ять і навпаки. При використанні введення-виведення на високому рівні (тобто форматоване уведення-виведення) байти групуються в певні елементи, наприклад цілі або речовинні числа, символи, рядки і дані типів, визначених користувачем.
При використанні потокового введення-виведення необхідно підключити наступні заголовні файли:
- <iostream.h> -- містить основні відомості, необхідні для всіх операцій з потоками введення-виведення.
- <iomanip.h> -- відомості для форматування
- <fstream.h> -- інформація для операцій з файлами, обробка яких здійснюється користувачем.
В C++ визначено три класи файлового введення-виведення:
ifstream | вхідні файли для читання |
ofstream | вихідні файли для запису |
fstream | файли для читання і запису |
Файли відкриваються шляхом створення об'єктів цих класів потоків.
При роботі з файлами цих класів можна використовувати ряд властивих їм методів ( open – для відкриття потоку, close – для закриття потоку) і застосовувати дуже зручні операції помістити в потік (<<) і узяти з потоку (>>).
Файли що використовуються є текстовими.
Робота з файлами послідовного доступу
1) Виведення у файл
2) Приклад
3) Читання з файлу
4) Приклад
Необхідно створити об'єкт потоку виведення, пов'язаний з файлом, за допомогою конструктора. Параметром для конструктора буде ім'я файлу виведення і режим відкриття файлу.
Можливі режими відкриття файлу приведені таблиці:
Режим | Опис |
ios::out | Відкрити файл для виведення. Вміст файлу очищається |
ios::app | Відкрити для додавання в кінець файлу |
ios::ate | Переміститися в кінець відкритого файлу |
ios::in | Відкрити файл для введення |
ios::frunc | Очищається вміст файлу |
ios::nocreate | Якщо файл не існує, то операція його відкриття не виконується. |
ios::noreplace | Якщо файл існує, то операція його відкриття не виконується. |
Дата добавления: 2015-08-26; просмотров: 752;