МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Лекція 10Тема : Структури, створення власних типів даних Мета: Ознайомитися з тезнологією створення власних типів. Вивчити синтаксис створення структур. Навчитися розробляти програми зі структами. Структура - це сукупність різнотипних елементів, яким привласнюється одне ім'я ( воно може бути відсутнім), що займає одну область пам'яті. Елементи структури називаються полями. Як і будь-яка змінна, структурна змінна повинна бути описана. Цей опис складається із двох кроків: опис шаблона (тобто состава ) або типу структури й опису змінних структурного типу. Синтаксис опису структури має вигляд: struct < ім'я структури > { <тип 1 > ім'я поля 1; < тип 2 > ім'я поля 2. . . . . . . .; } р1, р2. . . .;
де struct — службове слово; < ім'я структури > — ім'я типу структури ; <тип 1>, <тип 2> — імена стандартних або визначених типів; ім'я поля 1, ім'я поля 2, … — імена полів структури; р1, р2. . . .; - імена змінних типу структура.
Приклад Обробити дані про здачу студентами сесії по предметах: математиці, фізиці й програмуванні, підрахувати середній бал, отриманий студентами по цим курсам. Визначимо структуру: struct stud { char fam [25]; // прізвище й ініціали int mat, fiz, prg; // предмети float sb; // середній бал } st1,st2; Змінні st1 і st2 можна оголосити окремим оператором, наприклад: struc stud st1 st2; Ініціалізація полів структури може вироблятися або при її описі, або в тілі програми. При описі структури ініціалізація полів може виглядати так: struct stud { char fam [25]; int mat,fiz, prg; float sb; } st1 = { " Кравченко И.С.", 4, 5, 5}; st2 = { "Тесленко А.М.", 3, 4, 5}; Якщо ініціалізація полів виробляється в тілі програми, то для звертання до імен полів треба спочатку записати ім'я структурної змінної, а потім ім'я поля, що відокремлюється крапкою ( складові поля). Отже, у випадку , коли змінна st1оголошується в програмі, для її ініціалізації можна записатиstud . st1 = {"Кравченко И. С. ",4 ,5 ,5);або ініціалізація здійснюється за допомогою складових полів, як представлено в наступній програмі: // Р 4_1. СPP - визначення середнього бала // використання складових полів #include < iostream.h > #include < string.h > #include < stdio.h > main ( ) { struct stud { char fam [20]; int mat, fiz, prg; float sb; } st1, st2; strcpy (st1. fam, "Кравченко И.С."); st1 . mat = 4; st1. fiz = 5; st1. prg = 5; st1. sb = (st1. fiz + st1. mat + st1. prg) / 3; st2 = st1; puts (st2. fam); // Вивід прізвища st2; cout << st2. mat << st2. fiz << st2. prg << st2. sb << endl; return 0; } У цій програмі всім полям структури st1 привласнені відповідні значення. Треба звернути увагу, що поле st1. fam одержує значення шляхом використання функції strcpy (st1.fam, "Кравченко И. С. ");. Структурна змінна st2має ту ж структуру, що й st1, тому справедливо операцію st2 = st1; . Якщо в одній функції використається тільки один структурний тип, то цей тип можна повідомляти без імені. Наприклад, раніше розглянуту структуру можна оголосити в такий спосіб: struct { char fam [25]; int mat, fiz, prg; float sb; } st1, st2;
Якщо при описі структур у деякій функції або в межах " видимості" змінних у різних функціях є багато (але не все) однакових полів, то ці однакові поля можна об'єднати в окрему структуру й використати неї при описі інших структур, тобто поля структури можуть самі мати тип "структура". Це називається вкладеністю структур. Наприклад, якщо треба обробляти списки студентів і викладачів університету, причому в студентських списках утримуються дані: прізвище й ініціали, дата ( день, місяць, рік) народження, група й середній бал успішності, а в списках викладачів обробляються такі дані: прізвище й ініціали, дата народження, кафедра, посада. Для обробки списку студентів і викладачів можна оголосити наступні структури: struct stud { char fio [25]; int den,god; char mes [10]; char grup; float sb; } и struct prep { char fio [25]; int den, god; char mes [10]; char kaf, dolg; } В оголошених типах однакові поля має сенс включити в окрему структуру й використати неї при описі інших типів. Поетапно це виглядає так: — загальна структура: struct spd { char fio [25]; int den,god; char mas[10]; } — структура для опису інформації про студентів: struct stud { spd dr; char grup; float sb } st1,st2; — структура для опису інформації про викладачів: struct prep { spd dr; char kaf [10] ; char dolg [15]; } pr1,pr2;
У структурах stud і prep для оголошення поля, що містить дані про прізвище й дату народження використається раніше описаний тип spd. Тепер до поля fio, den, god, mes можна звернутися, використовуючи запис наступного виду: Читайте також:
|
||||||||
|