Презентація. Структура в мові С

Про матеріал
презентація для вивчення складного типу struct та union. Опис в програмі та використання в процесі створення програм.
Перегляд файлу
Складні типи даних у Сі Мова програмування ССтруктура – це об'єднання кількох об'єктів, можливо, різного типу під одним ім'ям, яке є типом структури. Структура. Як об’єкти можуть виступати: змінні, масиви, покажчики та інші структури.
Складні типи даних у Сі Мова програмування ССтруктури дозволяють трактувати групу зв'язаних між собою об'єктів не як множину окремих елементів, а як єдине ціле. Структура є складним типом даних, складеним з простих типів. Загальна форма оголошення структури: struct Імя. Структури{  тип Ім’я. Елемента1;  тип Ім’я. Елемента2;  . . .  тип Ім’я. Елементаn;};Після закриття фігурної дужки } в оголошенні структури обов'язково ставиться крапка з комою.
Складні типи даних у Сі Мова програмування Сstruct date{  int day;     // 4 байта  char *month; // 4 байта  int year;    // 4 байта};Приклад оголошення структури
Складні типи даних у Сі Мова програмування СПоля структури розміщуються у пам'яті в порядку оголошення struct date{  int day;     // 4 байта  char *month; // 4 байта  int year;    // 4 байта};У цьому прикладі структура date займає у пам'яті 12 байт. Крім того, покажчик *month під час ініціалізації буде початком текстового рядка з назвою місяця, розміщеного в пам'яті.
Складні типи даних у Сі Мова програмування СПри оголошенні структур їх дозволяється вкладати одну в іншу. struct date{  int day;     // 4 байта  char *month; // 4 байта  int year;    // 4 байта};struct persone{  char lastname[20];   // прізвище  char firstname[20]; // ім’я  struct date bd;     // дата нарождення};
Складні типи даних у Сі Мова програмування СІніціалізація полів структури Ініціалізація полів структури може здійснюватися двома способами: присвоєння значень елементам структури в процесі оголошення змінної, що відноситься до типу структури; отримання початкових значень структур елементів за допомогою функцій введення-виведення (наприклад, printf() і scanf()).
Складні типи даних у Сі Мова програмування СУ першому способі ініціалізація здійснюється за наступною формою: struct Ім’я. Структури Ім’я. Змінної={Значення. Елемента1, Значение. Элемента2, . . . , Значение. Элементаn};Приклад: struct date bd={24,
Складні типи даних у Сі Мова програмування СДругий спосіб ініціалізації об'єктів мови Сі з використанням функцій введення-виведення. Приклад
Складні типи даних у Сі Мова програмування С#include <stdio.h>#include <stdlib.h>struct date {  int day;  char month[20];  int year;};struct persone {  char firstname[20];  char lastname[20];  struct date bd;};  int main() {struct persone p;  printf(
Складні типи даних у Сі Мова програмування СІм'я структурної змінної може бути зазначено при оголошенні структури. В цьому випадку воно розміщується після закриває фігурної дужки }. Область видимості такої структурної змінної визначатиметься місцем опису структури. struct complex_type  // ім’я структури{  double real;  double imag;} number;    // ім’я структурної змінноїПоля наведеної структурної змінної: number.real, number.imag.
Складні типи даних у Сі Мова програмування СОб'єднання Об'єднаннями називають складний тип даних, що дозволяє розміщувати в тому самому місці оперативної пам'яті дані різних типів. Коли використовується елемент меншої довжини, ніж найдовший елемент об'єднання, цей елемент використовує лише частина відведеної пам'яті. Всі елементи об'єднання зберігаються в одній області пам'яті, починаючи з однієї адреси.
Складні типи даних у Сі Мова програмування СЗагальна форма оголошення об'єднання union Ім’я. Об’єднання{  тип Ім’я. Об’єкта1;  тип Ім’я. Об’єкта2;  . . .  тип Ім’я. Об’єктаn;};Ім’я 1Ім’я 2Ім’я 3 Об'єднання застосовуються для таких цілей: для ініціалізації об'єкта, якщо у кожний момент часу лише один із багатьох об'єктів є активним; для інтерпретації подання одного типу даних як іншого типу.
Складні типи даних у Сі Мова програмування СНаприклад, зручно використовувати об'єднання, коли необхідно дійсне число типу float подати у вигляді сукупності байтів (N = 15.3)#include <stdio.h>#include <stdlib.h>union types{  float f;  unsigned char b[4];};int main(){   union types value;  printf(
Складні типи даних у Сі Мова програмування СПоміняти місцями два молодші байти у введеному числі (Введiть число : 450) #include <stdio.h>#include <stdlib.h>int main() { char temp; union { unsigned char p[2]; unsigned int t; } type; printf(
Складні типи даних у Сі Мова програмування СБітові поля. Використовуючи структури, можна запакувати цілі компоненти ще більш щільно, ніж це було зроблено з використанням масиву. Набір розрядів цілого числа можна розбити на бітові поля, кожне з яких виділяється для певної змінної. При роботі з бітовими полями кількість бітів, що виділяється для зберігання кожного поля, відокремлюється від імені двокрапкою. тип ім’я: Кількість. Біт. Працюючи з бітовими полями потрібно уважно стежити, щоб значення змінної не зажадало пам'яті більше, ніж під неї виділено. Приклад Розробити програму, яка здійснює упаковку дати у формат Рік. Місяць
Складні типи даних у Сі Мова програмування С#include <stdio.h>#include <stdlib.h>#define YEAR0 1980struct date{  unsigned short day : 5;  unsigned short month : 4;  unsigned short year : 7;};int main() {  struct date today;    today.day = 16;  today.month = 12;  today.year = 2013 - YEAR0; //today.year = 33  printf(
Складні типи даних у Сі Мова програмування СМасиви структур Робота з масивами структур аналогічна роботі зі статичними масивами інших типів даних. Приклад
Складні типи даних у Сі Мова програмування С#include <stdio.h>#include <stdlib.h>struct book{ char title[15]; char author[15]; int value;};int main(){ struct book libry[3]; int i; for (i = 0; i<3; i++) { printf(
Складні типи даних у Сі Мова програмування СПокажчики на структури Доступ до елементів структури чи об'єднання можна здійснити за допомогою покажчиків. І тому необхідно ініціалізувати покажчик адресою структури чи об'єднання.
Складні типи даних у Сі Мова програмування СДля роботи з масивом можна використовувати покажчик. При цьому звернення до полів структури через покажчик виглядатиме як: покажчик -> полеабо(*покажчик).полепокажчик - покажчик на структуру чи об'єднання; поле - поле структури чи об'єднання;
Складні типи даних у Сі Мова програмування СДинамічне виділення пам'яті для структур Динамічно виділяти пам'ять під масив структур необхідно, якщо заздалегідь невідомий розмір масиву. Для визначення розміру структури в байтах використовується операція sizeof(ім'я структури). Приклад
Складні типи даних у Сі Мова програмування СПриклад Бібліотека із 3 книг#include <stdio.h>#include <stdlib.h>#include <malloc.h>struct book{  char title[15];  char author[15];  int value;};int main(){  struct book *lib;  int i;  lib = (struct book*)malloc(3 * sizeof(struct book));  for (i = 0; i<3; i++)  {    printf(title);    printf("Введіть автора %d книги : ", i + 1);    gets_s((lib + i)->author);    printf("Введіть ціну %d книги : ", i + 1);    scanf_s("%d", &(lib + i)->value);    getchar();  }  for (i = 0; i<3; i++)  {    printf("\n %d. %s ", i + 1, (lib + i)->author);    printf("%s %d", (lib + i)->title, (lib + i)->value);  }  getchar();  return 0;}Результат виконання: " title="Складні типи даних у Сі Мова програмування СПриклад Бібліотека із 3 книг#include #include #include struct book{  char title[15];  char author[15];  int value;};int main(){  struct book *lib;  int i;  lib = (struct book*)malloc(3 * sizeof(struct book));  for (i = 0; i<3; i++)  {    printf("Введіть назву %d книги : ", i + 1);    gets_s((lib + i)->title);    printf("Введіть автора %d книги : ", i + 1);    gets_s((lib + i)->author);    printf("Введіть ціну %d книги : ", i + 1);    scanf_s("%d", &(lib + i)->value);    getchar();  }  for (i = 0; i<3; i++)  {    printf("\n %d. %s ", i + 1, (lib + i)->author);    printf("%s %d", (lib + i)->title, (lib + i)->value);  }  getchar();  return 0;}Результат виконання: ">
Складні типи даних у Сі Мова програмування СДЯКУЄМО ЗА УВАГУ
Зміст слайдів
Номер слайду 1

Складні типи даних у Сі Мова програмування ССтруктура – це об'єднання кількох об'єктів, можливо, різного типу під одним ім'ям, яке є типом структури. Структура. Як об’єкти можуть виступати: змінні, масиви, покажчики та інші структури.

Номер слайду 2

Складні типи даних у Сі Мова програмування ССтруктури дозволяють трактувати групу зв'язаних між собою об'єктів не як множину окремих елементів, а як єдине ціле. Структура є складним типом даних, складеним з простих типів. Загальна форма оголошення структури: struct Імя. Структури{  тип Ім’я. Елемента1;  тип Ім’я. Елемента2;  . . .  тип Ім’я. Елементаn;};Після закриття фігурної дужки } в оголошенні структури обов'язково ставиться крапка з комою.

Номер слайду 3

Складні типи даних у Сі Мова програмування Сstruct date{  int day;     // 4 байта  char *month; // 4 байта  int year;    // 4 байта};Приклад оголошення структури

Номер слайду 4

Складні типи даних у Сі Мова програмування СПоля структури розміщуються у пам'яті в порядку оголошення struct date{  int day;     // 4 байта  char *month; // 4 байта  int year;    // 4 байта};У цьому прикладі структура date займає у пам'яті 12 байт. Крім того, покажчик *month під час ініціалізації буде початком текстового рядка з назвою місяця, розміщеного в пам'яті.

Номер слайду 5

Складні типи даних у Сі Мова програмування СПри оголошенні структур їх дозволяється вкладати одну в іншу. struct date{  int day;     // 4 байта  char *month; // 4 байта  int year;    // 4 байта};struct persone{  char lastname[20];   // прізвище  char firstname[20]; // ім’я  struct date bd;     // дата нарождення};

Номер слайду 6

Складні типи даних у Сі Мова програмування СІніціалізація полів структури Ініціалізація полів структури може здійснюватися двома способами: присвоєння значень елементам структури в процесі оголошення змінної, що відноситься до типу структури; отримання початкових значень структур елементів за допомогою функцій введення-виведення (наприклад, printf() і scanf()).

Номер слайду 7

Складні типи даних у Сі Мова програмування СУ першому способі ініціалізація здійснюється за наступною формою: struct Ім’я. Структури Ім’я. Змінної={Значення. Елемента1, Значение. Элемента2, . . . , Значение. Элементаn};Приклад: struct date bd={24,"лютого", 2022};Назва елемента структури є складним. Для звернення до елементу структури необхідно вказати ім'я структури і ім'я самого елемента. Вони розділяються крапкою:  Ім’я. Змінної.Ім’я. Елемента. Структуриprintf("%d %s %d",bd.day, bd.month, bd.year);

Номер слайду 8

Складні типи даних у Сі Мова програмування СДругий спосіб ініціалізації об'єктів мови Сі з використанням функцій введення-виведення. Приклад

Номер слайду 9

Складні типи даних у Сі Мова програмування С#include #include struct date {  int day;  char month[20];  int year;};struct persone {  char firstname[20];  char lastname[20];  struct date bd;};  int main() {struct persone p;  printf(" Введiть ім’я : ");  scanf("%s", p.firstname);  printf("Введiть прiзвище : ");  scanf("%s", p.lastname);  printf("Введіть дату народження\n. Число: ");  scanf("%d", &p.bd.day);  printf("Мiсяць: ");  scanf("%s", p.bd.month);  printf(«Рiк: ");  scanf("%d", &p.bd.year);  printf("\n. Ви ввели : %s %s, дата народження %d %s %d року",    p.firstname, p.lastname, p.bd.day, p.bd.month, p.bd.year);  getchar(); getchar();  return 0;}Результат роботи

Номер слайду 10

Складні типи даних у Сі Мова програмування СІм'я структурної змінної може бути зазначено при оголошенні структури. В цьому випадку воно розміщується після закриває фігурної дужки }. Область видимості такої структурної змінної визначатиметься місцем опису структури. struct complex_type  // ім’я структури{  double real;  double imag;} number;    // ім’я структурної змінноїПоля наведеної структурної змінної: number.real, number.imag.

Номер слайду 11

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

Номер слайду 12

Складні типи даних у Сі Мова програмування СЗагальна форма оголошення об'єднання union Ім’я. Об’єднання{  тип Ім’я. Об’єкта1;  тип Ім’я. Об’єкта2;  . . .  тип Ім’я. Об’єктаn;};Ім’я 1Ім’я 2Ім’я 3 Об'єднання застосовуються для таких цілей: для ініціалізації об'єкта, якщо у кожний момент часу лише один із багатьох об'єктів є активним; для інтерпретації подання одного типу даних як іншого типу.

Номер слайду 13

Складні типи даних у Сі Мова програмування СНаприклад, зручно використовувати об'єднання, коли необхідно дійсне число типу float подати у вигляді сукупності байтів (N = 15.3)#include #include union types{  float f;  unsigned char b[4];};int main(){   union types value;  printf("N = ");  scanf("%f", &value.f);  printf("%f = %x %x %x %x", value.f, value.b[0], value.b[1], value.b[2], value.b[3]);  getchar();  getchar();  return 0;}Результат виконання:

Номер слайду 14

Складні типи даних у Сі Мова програмування СПоміняти місцями два молодші байти у введеному числі (Введiть число : 450) #include #include int main() { char temp; union { unsigned char p[2]; unsigned int t; } type; printf("Введiть число : "); scanf("%d", &type.t); printf("%d = %x шiстн.\n", type.t, type.t); // Заміна байтів temp = type.p[0]; type.p[0] = type.p[1]; type.p[1] = temp; printf("Помiняли мiсцями байти, одержали\n"); printf("%d = %x шiстн.\n", type.t, type.t); getchar(); getchar(); return 0;}Результат виконання:

Номер слайду 15

Складні типи даних у Сі Мова програмування СБітові поля. Використовуючи структури, можна запакувати цілі компоненти ще більш щільно, ніж це було зроблено з використанням масиву. Набір розрядів цілого числа можна розбити на бітові поля, кожне з яких виділяється для певної змінної. При роботі з бітовими полями кількість бітів, що виділяється для зберігання кожного поля, відокремлюється від імені двокрапкою. тип ім’я: Кількість. Біт. Працюючи з бітовими полями потрібно уважно стежити, щоб значення змінної не зажадало пам'яті більше, ніж під неї виділено. Приклад Розробити програму, яка здійснює упаковку дати у формат Рік. Місяць

Номер слайду 16

Складні типи даних у Сі Мова програмування С#include #include #define YEAR0 1980struct date{  unsigned short day : 5;  unsigned short month : 4;  unsigned short year : 7;};int main() {  struct date today;    today.day = 16;  today.month = 12;  today.year = 2013 - YEAR0; //today.year = 33  printf("\n Сьогодні %u.%u.%u \n", today.day, today.month, today.year + YEAR0);  printf("\n Розмір структури today : %d байт", sizeof(today));  printf("\n Значення елемента today = %hu = %hx шістн.", today, today);  getchar();  return 0;}Результат роботи

Номер слайду 17

Складні типи даних у Сі Мова програмування СМасиви структур Робота з масивами структур аналогічна роботі зі статичними масивами інших типів даних. Приклад

Номер слайду 18

Складні типи даних у Сі Мова програмування С#include #include struct book{ char title[15]; char author[15]; int value;};int main(){ struct book libry[3]; int i; for (i = 0; i<3; i++) { printf("Введiть назву %d книги : ", i + 1); gets(libry[i].title); printf("Введiть автора %d книги : ", i + 1); gets(libry[i].author); printf("Введiть цiну %d книги : ", i + 1); scanf_s("%d", &libry[i].value); getchar(); } for (i = 0; i<3; i++) { printf("\n %d. %s ", i + 1, libry[i].author); printf("%s %d", libry[i].title, libry[i].value); } getchar(); return 0;}Результат виконання:

Номер слайду 19

Складні типи даних у Сі Мова програмування СПокажчики на структури Доступ до елементів структури чи об'єднання можна здійснити за допомогою покажчиків. І тому необхідно ініціалізувати покажчик адресою структури чи об'єднання.

Номер слайду 20

Складні типи даних у Сі Мова програмування СДля роботи з масивом можна використовувати покажчик. При цьому звернення до полів структури через покажчик виглядатиме як: покажчик -> полеабо(*покажчик).полепокажчик - покажчик на структуру чи об'єднання; поле - поле структури чи об'єднання;

Номер слайду 21

Складні типи даних у Сі Мова програмування СДинамічне виділення пам'яті для структур Динамічно виділяти пам'ять під масив структур необхідно, якщо заздалегідь невідомий розмір масиву. Для визначення розміру структури в байтах використовується операція sizeof(ім'я структури). Приклад

Номер слайду 22

Складні типи даних у Сі Мова програмування СПриклад Бібліотека із 3 книг#include #include #include struct book{  char title[15];  char author[15];  int value;};int main(){  struct book *lib;  int i;  lib = (struct book*)malloc(3 * sizeof(struct book));  for (i = 0; i<3; i++)  {    printf("Введіть назву %d книги : ", i + 1);    gets_s((lib + i)->title);    printf("Введіть автора %d книги : ", i + 1);    gets_s((lib + i)->author);    printf("Введіть ціну %d книги : ", i + 1);    scanf_s("%d", &(lib + i)->value);    getchar();  }  for (i = 0; i<3; i++)  {    printf("\n %d. %s ", i + 1, (lib + i)->author);    printf("%s %d", (lib + i)->title, (lib + i)->value);  }  getchar();  return 0;}Результат виконання:

Номер слайду 23

Складні типи даних у Сі Мова програмування СДЯКУЄМО ЗА УВАГУ

zip
Додано
15 серпня 2022
Переглядів
1508
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку