- •Лекция 3 Базовые и производные типы
- •Представление данных
- •Атрибуты данных
- •Типы данных
- •Базовые типы
- •Производные типы
- •Скалярные типы
- •Структурированные типы
- •Описание информационного объекта в программе Определение и объявление объекта
- •Примеры описаний программных объектов
- •Определение и инициализация переменных целых типов
- •Определение и инициализация переменных вещественных типов
- •Определение и инициализация переменных булевского типа
- •Определение и инициализация переменных символьного типа
- •Определение и инициализация переменных-указателей
- •Определение и инициализация переменных-ссылок
- •Форматы некоторых производных типов и их интерпретация
- •Класс памяти информационного объекта
- •Область действия идентификатора информационного объекта программы
- •Примеры использования переменных разных классов памяти
- •Пространство имен
- •Основные правила написания и оформления программ
Атрибуты данных
Информационный объект в программе характеризуют его атрибуты:
-
имя (идентификатор)
-
адрес
-
значение в конкретный момент времени
-
тип
-
класс памяти (определяет местонахождение и время существования памяти, сопоставленной с именем объекта):
- место размещения (регистр, стек, сегмент данных, динамическая память и т.п.);
- время жизни (постоянное, в течение выполнения программы или временное, в течение выполнения блока);
- область видимости объекта – часть программы, из которой допустим обычный доступ к области памяти, связанной с идентификатором переменной;
-
область действия идентификатора - часть программы, в которой идентификатор объекта можно использовать для доступа к связанной с ним области памяти:
Типы данных
Представление данных связано с их типом. Концепция типа данных основывается на следующих положениях:
-
Все данные, а также результаты вычисления выражений или значения, возвращаемые функциями, должны иметь определенный тип.
-
Каждая операция или функция требуют аргументов фиксированного типа и выдают результат фиксированного типа. Если операция допускает аргументы нескольких типов, то тип результата можно определить по специальным правилам языка.
Статическая типизация (C, C++, Java) предполагает, что тип значения информационного объекта можно определить по его виду или описанию и для переменных он остается неизменным.
Динамическая типизация (РНР, Perl) предполагает, что тип значения информационного объекта определяется присвоенным или выработанным им значением в момент присваивания (выработки), может быть определен по его значению и для переменных изменен в процессе выполнения программы.
Язык программирования должен:
-
иметь стандартные (предопределенные) типы данных;
-
иметь возможность описания новых (пользовательских) типов данных:
- простых неструктурированных (путем перечисления значений, указания интервалов значений и т.п.)
- структурированных (обладать средствами, позволяющими строить последовательности и наборы: массивы, структуры, файлы и т.д.). В большинстве случаев новые типы данных определяются с помощью ранее определенных типов данных.
Тип информационного объекта:
определяет:
-
внешнее представление объекта на языке программирования;
-
внутреннее представление объекта в памяти компьютера;
-
требуемое для объекта количество памяти при ее начальном распределении;
-
множество значений, которые могут принимать величины этого типа;
-
способ доступа к элементам составных данных;
-
совокупность операций и функций, которые можно применять к величинам этого типа;
-
интерпретирует двоичные коды значений при последующих обращениях к информационному объекту;
-
используется для контроля типов с целью обнаружения возможных случаев недопустимого присваивания.
С++ обладает средствами, которые позволяют:
-
использовать базовые (простые, встроенные, фундаментальные, стандартные) типы данных;
-
описывать новые (производные) типы данных.