Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Лекція 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 можна звернутися, використовуючи запис наступного виду:


Читайте також:

  1. Вид заняття: лекція
  2. Вид заняття: лекція
  3. Вид заняття: лекція
  4. Вид заняття: лекція
  5. Вид заняття: лекція
  6. Вступна лекція
  7. Вступна лекція 1. Методологічні аспекти технічного регулювання у
  8. Клітинна селекція рослин.
  9. Колекція фонограм з голосами осіб, які анонімно повідомляли про загрозу вибуху
  10. ЛЕКЦІЯ (4): Мануфактурний період світової економіки
  11. Лекція - Геополітика держави на міжнародній арені
  12. Лекція 02.04.2013




Переглядів: 537

<== попередня сторінка | наступна сторінка ==>
Використання функції як параметра значень | Лекція 11, 12

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.02 сек.