Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Данные представляются в программе в виде констант (мы их рассматривали) и переменных.




Лекция 3

Базовые и производные типы

Представление данных. 1

Типы данных. 2

Базовые типы.. 3

Производные типы.. 4

Скалярные типы.. 4

Структурированные типы.. 4

Описание информационного объекта в программе. 5

Определение и объявление объекта. 5

Примеры описаний программных объектов. 5

Определение и инициализация переменных целых типов. 6

Определение и инициализация переменных вещественных типов. 7

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

Определение и инициализация переменных символьного типа. 7

Определение и инициализация переменных-указателей.. 7

Определение и инициализация переменных-ссылок. 8

Форматы некоторых производных типов и их интерпретация. 9

Атрибуты информационного объекта. 12

Класс памяти информационного объекта. 12

Область действия идентификатора информационного объекта программы 14

Примеры использования переменных разных классов памяти.. 14

Пространство имен.. 17

Основные правила написания и оформления программ.. 18

Представление данных

Данные представляются в программе в виде констант (мы их рассматривали) и переменных.

Переменная:

абстракция, представляемая в программе идентификатором и связанной с ним ссылкой на начальный байт некоторой области памяти, в которой хранится значение переменной и по которому в программе осуществляется доступ к нему (в результате трансляции имя переменной превращается в адрес некоторого участка памяти и во время выполнения программы оно указывает, или ссылается, на этот участок памяти);

в каждый конкретный момент времени может иметь только одно значение, которое может изменять в процессе работы программы;

характеризуется набором некоторых характеристик, называемых атрибутом, и состоянием (значением);

 

Например, определения переменных:

char symbol;

unsigned short counter;

обеспечивают выделение, соответственно, одного и двух байтов памяти:

Память программы – совокупность переменных, имена которых заданы в программе;

Состояние памяти программысовокупность состояний (значений) переменных программы.

Память процесса выполнения программы – представляет собой совокупность участков памяти, которые поставлены в соответствие именам переменных, и не равна «памяти программы» (это происходит, например, из-за того, что в процессе выполнения программы дополнительно выделяется, а затем освобождается, память для динамических переменных).

 

Выбор подходящего представления данных – один из основных вопросов при проектировании программы. При этом под представлением данных понимается их описание на языке программирования в виде констант и переменных разной структуры. Неправильное представление данных может сделать программу ненадежной, неэкономичной, сложной и даже вообще неадекватной задаче. Поэтому при анализе задачи, ее исходных данных и результата, необходимо выбирать экономичный алгоритм ее решения, который и определит представление исходных, промежуточных и конечных данных.

 

Атрибуты данных

Информационный объект в программе характеризуют его атрибуты:

имя (идентификатор)

адрес

значение в конкретный момент времени

тип

класс памяти (определяет местонахождение и время существования памяти, сопоставленной с именемобъекта):

- место размещения (регистр, стек, сегмент данных, динамическая память и т.п.);

- время жизни (постоянное, в течение выполнения программы или временное,
в течение выполнения блока);

- область видимости объекта – часть программы, из которой
допустим обычный доступ к области памяти, связанной с
идентификатором переменной;

область действия идентификатора -часть программы, в которой идентификатор объекта можно использовать для доступа к связанной с ним области памяти:

 

Типы данных

Представление данных связано сих типом. Концепция типа данных основывается на следующих положениях:

l Все данные, а также результаты вычисления выражений или значения, возвращаемые функциями, должны иметь определенный тип.

l Каждая операция или функция требуют аргументов фиксированного типа и выдают результат фиксированного типа. Если операция допускает аргументы нескольких типов, то тип результата можно определить по специальным правилам языка.

Статическая типизация (C, C++, Java) предполагает, что тип значения информационного объекта можно определить по его виду или описанию и для переменных он остается неизменным.

Динамическая типизация (РНР, Perl) предполагает, что тип значения информационного объекта определяется присвоенным или выработанным им значением в момент присваивания (выработки), может быть определен по его значению и для переменных изменен в процессе выполнения программы.

Язык программирования должен:

l иметь стандартные (предопределенные) типы данных;

l иметь возможность описания новых (пользовательских) типов данных:

- простых неструктурированных (путем перечисления значений,
указания интервалов значений и т.п.)

- структурированных (обладать средствами, позволяющими
строить последовательности и наборы: массивы, структуры, файлы и т.д.).
В большинстве случаев новые типы данных определяются
с помощью ранее определенных типов данных.

Тип информационного объекта:

определяет:

внешнее представление объекта на языке программирования;

внутреннее представление объекта в памяти компьютера;

требуемое для объекта количество памяти при ее начальном распределении;

множество значений, которые могут принимать величины этого типа;

способ доступа к элементам составных данных;

совокупность операций и функций, которые можно применять к величинам этого типа;

интерпретирует двоичные коды значений при последующих обращениях к информационному объекту;

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

С++ обладает средствами, которые позволяют:

l использовать базовые (простые, встроенные, фундаментальные, стандартные ) типы данных;

l описывать новые (производные) типы данных.

Базовые типы

К базовым типам относятся:

· арифметические типы

o обобщенные целые ( интегральные ) типы:

o целые

§ short – короткий целый

§ int –целый

§ long – длинный целый

o символьный

§ char – символьный

§ wchar_t – широкосимвольный

o логический

§ bool

o вещественные типы:

o float – вещественный

o double – вещественный с удвоенной точностью

 

Таблица 1.6 Базовые типы С++:

название типа нижняя граница диапазона верхняя граница диапазона точность десятичн. разрядов размер в байтах
bool false true    
char signed char -128      
unsigned char        
short short int signed short -32 768 32 767    
unsigned short   65 535    
int signed int -2 147 483 648 2 147 483 647    
unsigned int   4 294 067 295    
long signed long long int 2 147 483 648 2 147 483 647    
unsigned long   4 294 067 295    
float -3.4*1038 3.4*1038    
double -1.7*10308 -1.7*10308    
void        
void *        
               

 

Б.Страуструп отмечает, что в большинстве приложений можно обойтись выделенными типами (int, char, bool, double); остальные базовые типы являются вариациями и предназначены для оптимизации и решения специальных задач.

Производные типы

Из базовых типов и типа void, с помощью знаков операций и разделителей *, &, [ ], () и механизмов определения типов структурированных данных, можно конструировать множество производных типов.

Производные типы:

· скалярные;

· структурированные;

· функции;

 

Скалярные типы

К скалярным типам относятся:

· арифметические типы,

· «пустой» тип void,

· указатели,

· ссылки,

· перечисляемый тип enum

 

Перечисляемый тип – это упорядоченный набор именованных элементов, каждый из которых имеет уникальный идентификатор и является константой данного типа. Каждому элементу списка перечисления соответствует значение типа int (начиная с нуля, с последующим увеличением значения (по умолчанию) на единицу).

Объявление перечисляемого типа:

enum имя_типа {значение_1, значение_2, …, значение_n};

Например:

enum color {red, green, blue, black, white}; // определение типа-перечисления

или

enum color {red, green=2, blue, black=7, white}; // определение типа-перечисления

 

color my_color = red; // определение переменной типа color с инициализацией

 

 

Структурированные типы

Новые типы данных можно определить на основе ранее определенных типов. Если значения нового типа данных представляют собой совокупность значений компонент, принадлежащих к определенным ранее типам компонент, то новый тип называется структурированным ( составным ).

Структурированный ( агрегатный ) тип данных – это тип, характеристиками которого являются: множественность элементов, его структура, способ доступа к элементам, тип элементов и операции с данными этого типа (массивы, структуры, объединения, классы). Множество значений такого типа определяется множеством значений его элементов и их количеством.

 

Наборы данных не всегда нужно сохранять в памяти исполняемой программы. Нередко обработку набора данных можно выполнить по мере получения элементов этого набора – при вводе, чтении из файла или вычислении элементов. Нередко излишне хранение набора промежуточных данных программы. Например, вычисление минимального элемента матрицы из элементов, максимальных в ее строках, не требует сохранения этих максимальных элементов. Вычисление минимального элемента делается попутно с вычислением максимальных элементов.

Практически невозможно дать рекомендации выбора представления наборов данных в общем случае – этому вопросу необходимо уделять внимание при рассмотрении каждой конкретной задачи.





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 448 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

2430 - | 2139 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.