Главная » Презентації на українській мові » Информатика (Програмування)

СТРУКТУРИ ДАНИХ ТА ОБ’ЄДНАННЯ В С++

 

СТРУКТУРИ ДАНИХ ТА ОБ’ЄДНАННЯ В С++.


План


Загальні відомості про структури.


Елемент структури типу поля бітів.


Об’єднання.


ЗАГАЛЬНІ ВІДОМОСТІ ПРО СТРУКТУРИ.


Структура - це структурований тип даних, що є
іменованою сукупністю різнотипних елементів.


Тип структура зазвичай використовується при
розробці інформаційних систем, баз даних.


Наприклад, відомості про виплату студентам
стипендії потрібно організувати у вигляді:


СТУДЕНТ


Прізвище


Курс


Стипендія


Група


Елементи такої структури (прізвище, курс, група,
стипендія) називаються полями. Кожному полю
повинно бути поставлено у відповідність ім'я і тип.


Формат опису структурного типу наступний:


struct ім’я_типу


{визначення_елементів};


Для розглянутого прикладу визначення відповідного
структурного типу може бути наступним:


struct student {


char fam[30];


int kurs;


char grup[3];


float stip;


};


Після цього student стає ім'ям структурного типу,
який може бути призначений деяким змінним. У
відповідність із стандартом С це потрібно робити
так:


struct student stud1, stud2;


Правила С++ дозволяють в цьому випадку службове
слово struct опускати і писати


student stud1, stud2;


Тут stud1 і stud2 — змінні структурного типу.


Можна взагалі не задавати ім'я типу, а описувати відразу змінні:


struct {


char fam[30];


int kurs;


char grup[3];


float stip; } stud1, stud2, *pst;


Звернення до елементів (полів) структурної величини
проводиться за допомогою уточненого імені
наступного формату:


ім'я_структури.ім’я_елемента


Приклади уточнених імен для описаних вище
змінних:


stud1.fam;


stud1.stip


Значення елементів структури можуть визначатися
введенням, привласненням, ініціалізацією.


Приклад ініціалізації в описі:


student stud1={"Кротов", 3, "Ф32",
350};


Нехай в програмі визначений покажчик на структуру


student *pst, stud1;


Тоді після виконання оператора привласнення


pst=&stud1;


до кожного елементу структурної змінної stud1 можна
звертатися трьома способами. Наприклад, для поля
fam


stud1.fam або (*pst).fam або pst->fam


У останньому варіанті використовується знак операції
доступу до елементу структури: —>. Аналогічно
можна звертатися і до інших елементів цієї змінної:


pst->FIO, pst->grup, pst->stip.


Допускається використання масивів структур.
Наприклад, відомості про 100 студентів можуть
зберігатися в масиві, описаному таким чином:


student stud[100];


Тоді відомості про окремих студентів
позначатимуться, наприклад, так:


stud [1].fam, stud[5].kurs


Якщо потрібно узяти першу букву прізвища 25-го
студента, то слід писати:


stud[25].fam[0].


Приклад 13.1. Ввести відомості про N студентів. Визначити прізвища студентів, що отримують найвищу стипендію.


#include <stdio.h>


#include <conio.h>


void main() {


const N=5;


int i;


float maxs;


struct student {


char fam[15];


int kurs;


char grup[3];


float stip; } ;


student stud[N] ;


clrscr();


for(i=0;i<N;i++)


{ printf("%d-y student", i);


printf("\n Prizvishe:");scanf("%s",&stud[i].fam);


printf("Kurs:"); scanf("%d",&stud[i].kurs);


printf("Grupa:"); scanf("%s",&stud[i].grup);


printf("Stupendiya:"); scanf("%f",&stud[i].stip);


}


maxs=0;


for(i=0;i<N;i++)


if(stud[i].stip>maxs) maxs=stud[i].stip;


printf("\n Student, sho otrimuyut maximalnu stipendiyu.",maxs);


for(i=0; i<N; i++)


if(stud[i].stip==maxs) printf("\n%s",stud[i].fam);


getch();


}


Елемент структури типу поля бітів.


Використання структури в програмі на С дозволяє працювати з
окремими бітами, тобто з розрядами двійкового коду. Для цього
використовуються елементи структури типу поля бітів.


Формат структури, що містить поля бітів, наступний:


struct ім’я_структури


{ тип ім’я_поля_1: довжина_ в_бітах;


тип ім’я_поля_2: довжина_ в_бітах;


. . .


тип ім’я_поля_N: довжина_в_бітах;


} ;


Як тип полів можуть використовуватися
специфікатори int, unsigned, signed.
Мінімальною величиной такого типу може бути
структура, що складається всього з одного бітового
поля.


Приклад опису такої структури:


struct onebit


{ unsigned bit:1;


} cod;


Звичайно, для змінної cod в пам'яті буде виділено 8
біт (1 байт), але використовуватися буде тільки
один перший біт.


ОБ'ЄДНАННЯ.


Об'єднання — це ще один структурований тип
даних.


union ім’я_типу


{ визначення_елементів};


Об'єднання відрізняється від структури способом
організації у внутрішній пам'яті. Всі елементи
об'єднання в пам'яті починаються з одного байта.


Хай в програмі описана структура:


struct s

{ int i;

char ch;

long int L;};


Розташування її елементів в пам'яті буде наступним:


Розглянемо об'єднання з наступним описом:


union s

{ int i;

char ch;

long int L;

};


Величина з таким типом в пам'яті буде розташована
таким чином:


Приклад 13.2. Складемо програму рішення наступної задачі: з клавіатури вводиться символ. Вивести на екран двійковий код цього символу.


//Отримання двійкового коду символа


#include <stdio.h>


#include <conio.h>


//Структура бітових полів


struct byte{


int b1:1;


int b2:1;


int b3:1;


int b4:1;


int b5:1;


int b6:1;


int b7:1;


int b8:1;


};


//Об’єднання - змінна


union bits


{char ch; byte cod;} u;


//Прототип функції декодування


void decode(bits x);


//Основна програма


void main()


{


do {u.ch=getche(); //Введеня символа з клавіатури


printf (":"); decode(u);


} while(u.ch!='q'); //Символ q- признак кінця введення


}


//Функція декодування


void decode(bits u)


{ if (u.cod.b8) printf("1"); else printf ("0");


if (u.cod.b7) printf ("1"); else printf ("0");


if (u.cod.b6) printf("1"); else printf("0");


if (u.cod.b5) printf("1"); else printf("0");


if( u.cod.b4) printf("1"); else printf("0");


if (u.cod.b3) printf("1"); else printf("0");


if (u.cod. b2 ) printf("1"); else printf ("0" );


if (u.cod.b1) printf("1"); else printf ("0"); printf("\n");


}

Категория: Информатика (Програмування) | Добавил: SYLER (13.04.2017)
Просмотров: 364 | Комментарии: 1 | Рейтинг: 0.0/0

Вам также могут быть интересны презентации:
Вільне падіння. Прискорення вільного падіння
Родини айстрових, гарбузових, селерових, зонтичних, марантових…
ІВАН НЕЧУЙ – ЛЕВИЦЬКИЙ
Країни басейну Середземномор’я
Оксокислоти
Василь Слапчук
Оноре де Бальзак Повість “Гобсек”
Тканини рослин
Енеїда. І. П. Котляревського – перший твір нової української літератури
Презентація на тему: “Оцінка діяльності Б. Хмельницького в сучасній історичній літературі”
Всего комментариев: 1
avatar
0
1 SYLER • 18:34, 18.04.2017
Крутая презентация
avatar