4965

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

Лекция

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

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

Русский

2012-11-30

30.5 KB

3 чел.

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

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

Структуры

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

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

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

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( );

}

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

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


 

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

20972. Защита электронных документов с помощью электронной цифровой подписи (ЭЦП) 86 KB
  1] Лабораторная работа № 4 [1] Защита электронных документов с помощью электронной цифровой подписи ЭЦП [2] Оглавление [2.2] Принципы использования ЭЦП [2.5] Контрольные вопросы Цели работы Получить базовые представления о механизмах создания и проверки ЭЦП и о цифровых сертификатах.
20973. Управление учётными записями пользователей MS Windows 84.5 KB
  1] Лабораторная работа № 5 [1] Управление учётными записями пользователей MS Windows [2] Оглавление [2.5] Критерии оценки работы Цели работы Освоение средств администратора операционной системы MS Windows таких как: регистрации пользователей и групп в системе определения их привилегий определения параметров политики безопасности относящихся к аутентификации и авторизации пользователей при интерактивном входе Основные понятия Идентификацию и аутентификацию можно считать основой программнотехнических средств безопасности поскольку...
20974. Реализация политики безопасности в MS Windows 93 KB
  1] Лабораторная работа № 6 [1] Реализация политики безопасности в MS Windows [2] Оглавление [2.3] Политика безопасности [2.6] Критерии оценки работы Цели работы освоения средств администратора и аудитора защищенных версий операционной системы Windows предназначенных для: определения параметров политики безопасности; определения параметров политики аудита; просмотра и очистки журнала аудита.
20975. Ассоциативные списки и списки свойств 23.98 KB
  DEFUN F27 L COND NULL L NIL T CONS LENGTH CDR CAR L F27 CDR L пример SETQ SCLAD 'PROCESSORS MATHERBOARDS MEMORY PUT ‘PROCESSORS ‘CORE2DUO 5 PUT ‘PROCESSORS ‘CORE2EXTREME 8 PUT ‘MATHERBOARDS ‘ASUSp6t7 1 PUT ‘MATHERBOARDS ‘ASUSp6t6 12 PUT ‘MATHERBOARDS ‘INTELdp55kg 34 PUT ‘MEMORY ‘DDR 23 PUT ‘MEMORY ‘DDR2 34 PUT ‘MEMORY ‘DDR3 15 PUT ‘MEMORY ‘SDRAM 15 F27 SCLAD = 2 3 4 Исходный список содержит имена объектов списки свойств которых содержат некоторую информацию. DEFUN F29 L X COND...
20976. Создание фреймов и извлечение информации из них 22.85 KB
  Создать фреймы, описывающие фрагмент библиотечной системы, содержащие как декларативную, так и процедуральную (в том числе использующую переменные ФРЛ-среды) составляющие.
20977. Организация сетей фреймов 33.02 KB
  setq TodayYear 2010 deframeq Book1 Nazvanie value Programmirovanie_na_FRL Author value Book2 status: indirect slot: author Year value 2003 PageNum value 672 Popularity value 2000 Quantity value GetQuantity PARM: TodayYear STATUS: EVAL deframeq Book2 Nazvanie value Programmirovanie_na_LISP Author value Chernov_PBajdun_VBunin_A Year value 1993 PageNum value 40 Popularity value 600 Quantity value GetQuantity PARM: TodayYear STATUS:...
20978. Присоединённые процедуры. Организация сетей фреймов 25.93 KB
  deframeq flat1 Street value Prospect_Mira house value 8 flat value 10 floor value 2 square value 85 roomsnumber value 2 priceclass value 1 price value GetPrice status: eval deframeq flat2 Street value Gagarina house value 1 flat value 123 floor value 18 square value 78 roomsnumber value 3 priceclass value 2 price value GetPrice status: eval deframeq flat3 Street value Lesnaya house value 6 flat...
20979. Рекурсивная обработка числовой информации 18.16 KB
  DEFUN F1_1 M N COND = M N M M T M M F1_1 M 1 N DEFUN F1 M N COND OR = TYPE M INT = TYPE N INT WRONG_ARGUMENT_TYPE = N M F1_1 M N T F1_1 N M Определить наибольший общий делитель двух заданных чисел. Используем формулу DEFUN F2 A B A B F3 A B Определить наименьшее общее кратное двух заданных чисел. DEFUN F3 A B COND = B 0 A = A 0 B = A B F3 A B B T F3 A B A Вычислить квадратный корень из заданного числа....
20980. Рекурсивная обработка списковой информации 23.34 KB
  DEFUN F7_1 L COND NULL L 0 LISTP CAR L F7_1 CAR L F7_1 CDR L T IF NUMBERP CAR L CAR L F7_1 CDR L F7_1 CDR L DEFUN F7 L COND NOT LISTP L Error_Not_list T F7_1 L Определить максимальную глубину списка произвольной структуры. DEFUN F8_1 L COND NULL L 1 ATOM CAR L F8_1 CDR L T MAX 1 F8_1 CAR L F8_1 CDR L DEFUN F8 L COND NOT LIST L Error_Not_list T F8_1 L 1 Найти максимальный элемент в числовом списке...