4965

Создание новых типов данных

Лекция

Информатика, кибернетика и программирование

Создание новых типов данных Для представления данных о сложных физических и математических объектах необходимо создавать новые типы данных на основе базовых и ранее созданных. Структуры Наиболее простым способом создания нового типа данных является...

Русский

2012-11-30

30.5 KB

2 чел.

Создание новых типов данных

Для представления данных о сложных физических и математических объектах необходимо создавать новые типы данных на основе базовых и ранее созданных.

Структуры

Наиболее простым способом создания нового типа данных является организация структуры.

Структура представляет собой последовательность элементов данных разных типов. Элементы данных называют полями структуры. Каждое поле структуры служит для описания некоторого свойства объекта, описываемого с помощью структуры.

Для создания структуры необходимо создать структурированный тип данных. На языке С++ он описывается следующим образом:

struct имя_типа

{тип_поля1 имя поля1;

тип_поля2 имя поля2;

тип_поля3 имя поля3;

};

Пример структурированного типа

struct Person

{char fam[10];

 int age;

}

Только после создания нового типа данных можно создавать переменные, указатели и массивы этого типа.

Пример структурированных переменных, указателей и массивов

Person A;

Person B[3];

Person *p;

Очевидно, что формат  описания переменной нового типа данных практически ничем не отличается от переменной, например, целочисленного типа данных:

int i;

Для доступа к полям структуры используется операция .

Формат операции . следующий:

Имя_структуры.имя_поля

Пример доступа к полям структур

A.age=25;

Доступ к полям структур, являющихся элементами массива структур, выглядит следующим образом:

имя_массива[номер_структуры].имя_поля

Пример доступа к полям структур в массиве структур

B[1].age=30;

Над структурами стандартом языка С разрешена только операция присваивания. Все остальные операции могут быть только над полями структуры.

Действия над структурами

Обычно действия над структурами и массивами оформляется в виде отдельных функций. Сами структуры или адреса массивов структур передаются в функции через параметры.

Пример программы вычисления среднего значения поля age по массиву структур

#include <stdio.h>

#include <conio.h>

struct Person

{char fam[10];

 int age;

}

int fSred(Person *p, int n);

int fSred(Person *p, int n)

{

int i, s=0;

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

s+=p[i];

return(s/n);

}

main()

{

Person B[3];

int n =3, i, sr;

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

{printf("Input name");

  scanf("%s",p[i].fio);

  printf("Input age");

  scanf("%d",&p[i].age);

}

sr=fSred(B,3);

printf (sr="%d\n",sr);

getch( );

}

Таким образом, при работе со структурами действия оформляются в виде функций отдельно от данных, а данные передаются в функции через параметр. Доступ ко всем элементам данных открытый.

Объединение данных и действий над ними в виде класса, в котором вводятся ограничения на доступ к данным, породило технологию объектно-ориентированного программирования.


 

А также другие работы, которые могут Вас заинтересовать

6488. Хедлайны новостных материалов сетевой ленты slon.ru 32.48 KB
  Хедлайны новостных материалов сетевой ленты slon.ru В последние годы наблюдается тенденция стремительного развития интернет-коммуникации, которая вовлекает все большее число пользователей. Интернет-пространство, в котором информация быстро теряет ак...
6489. Использование темы глобальных катастроф в современной рекламе 32.38 KB
  Использование темы глобальных катастроф в современной рекламе Во второй половине ХХ столетия, цивилизация, достигнув не малых высот в различных сферах общественной жизни-науке, технике, культуре- столкнулась лицом к лицу, с казалось, бы с неразреши...
6490. Тема тюрьмы и воли в творчестве Игоря Гамаюнова (по материалам Литературной газеты) 51.98 KB
  Тема тюрьмы и воли в творчестве Игоря Гамаюнова (по материалам Литературной газеты) В содержании многих неспециализированных газет особое место занимают материалы, повествующие читателям о криминальных происшествиях, судебных разбирательствах, а так...
6491. Подиумная дискуссия: опыт проведения на примере подиумной дискуссии на тему Глобализация: добро или зло 32.67 KB
  Подиумная дискуссия: опыт проведения В рамках предмета Экологическая проблематика в СМИ помимо лекционных занятий, проводятся разные интерактивные формы работы со студентами, в том числе подиумные дискуссии. Данный формат предлагает выступление не...
6492. Климат: мы уже прошли точку невозврата 33.14 KB
  Климат: мы уже прошли точку невозврата Климат будет меняться. В следующие 10 лет нам следует резко поменять свои привычки: контролировать потребление ресурсов, ископаемых, скорее переходить на альтернативные источники энергии, а значит, мен...
6493. Разработка устройства, исключающего образование ползунов на поверхности катания колёс ВСНТ 141.5 KB
  Разработка устройства, исключающего образование ползунов на поверхности катания колёс ВСНТ Вся история развития железнодорожного транспорта связана со стремлением обеспечить максимальные скорости движения, минимальное время нахождения пассажиров и г...
6494. Автоматический стояночный тормоз исключающий самодвижение подвижного состава на станционных путях, перегонах и в пунктах его отстоя 137 KB
  Автоматический стояночный тормоз исключающий самодвижение подвижного состава на станционных путях, перегонах и в пунктах его отстоя. Известно, что при движении железнодорожного подвижного состава под действием силы тяги локомотива последняя расходуе...
6495. Индексный метод в статистических задачах 93.5 KB
  Индексный метод в статистических задачах Цель работы: научиться выполнять расчеты индексов переменного, постоянного состава и структурных сдвигов, расчет индексов с использованием формул взаимосвязи индексов...
6496. Индивидуально–изменчивое поведение 90 KB
  А.Р. Лурия. Индивидуально–изменчивое поведение Прошлые занятия были посвящены наследственно закрепленным формам поведения, которые позволяют животному осуществлять наиболее адекватные формы поведения к медленно изменяющейся или неизменной среде...