Файл: Понятие переменной в программировании . Виды и типы переменных.pdf
Добавлен: 04.04.2023
Просмотров: 250
Скачиваний: 2
Следует подчеркнуть относительность такого деления: для разных программ одна и та же переменная может иметь разную структуру. Например, компилятор различает в переменной вещественного типа 4 поля: знаки мантиссы и порядка, плюс их значения, но для программиста, компилирующего свою программу, вещественная переменная – единая ячейка памяти, хранящая вещественное число.
Сложные переменные
Сложный (составной) тип – тип данных, объекты (переменные или постоянные) которого имеют внутреннюю структуру, доступную программисту [4]. В разных языках программирования набор базовых сложных типов может несколько отличаться (чаще по названию и деталям реализации). Есть, однако, объективные критерии – однотипность элементов и способ доступа, позволяющие выделить главные представители сложных типов (названия приводятся на примере Pascal, в котором Н.Вирт наиболее чётко сформулировал эти идеи).
Массив (англ. array) (в некоторых языках программирования также таблица, ряд, матрица) – структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона. Одномерный массив можно рассматривать как реализацию абстрактного типа данных вектор [13].
Размерность массива – это количество индексов, необходимое для однозначной адресации элемента в рамках массива. По количеству используемых индексов массивы делятся на одномерные, двумерные, трёхмерные и т. д.
Форма или структура массива – сведения о количестве размерностей и размере (протяжённости) массива по каждой из размерностей; может быть представлена одномерным массивом.
Особенностью массива как структуры данных (в отличие, например, от связного списка) является константная вычислительная сложность доступа к элементу массива по индексу. Массив относится к структурам данных с произвольным доступом [13].
В простейшем случае массив имеет константную длину по всем размерностям и может хранить данные только одного, заданного при описании, типа. Ряд языков поддерживает также динамические массивы, длина которых может изменяться по ходу работы программы, и гетерогенные массивы, которые могут в разных элементах хранить данные различных типов.
Запись – агрегатный тип данных, инкапсулирующий без сокрытия набор значений различных типов [3].
Применяется во многих языках программирования. В одних языках (например, в Паскале) порядок размещения значений в памяти задаётся при определении типа и сохраняется на протяжении времени жизни объектов, что даёт возможность косвенного доступа (например, через указатели); в других языках (например, в ML) порядок размещения не определён, так что доступ к значениям возможен только по квалифицированному идентификатору. В некоторых языках, хотя порядок следования и сохраняется, но выравнивание контролируется компилятором, так что использование адресной арифметики может оказаться платформенно-зависимым. Некоторые языки позволяют присваивание между экземплярами разных записей, игнорируя различия в идентификаторах компонентов записей, и основываясь только на порядке следования. Другие языки, напротив, учитывают только совпадение имён, разрешая различия в порядке их определения.
Впервые записи были представлены в языке Кобол, где они имели довольно сложную нотацию. При проверке согласования типов, Кобол учитывает только совпадение имён полей записей и не учитывает совпадение порядка их следования [3].
Кортежи служат формальным обоснованием записей в теории типов. В то же время, в языках кортежи временами могут реализовываться посредством записей, использующих в качестве идентификаторов индексные номера полей в получаемом кортеже. Более точной теоретической моделью записей является System F-sub (расширение Системы F понятием подтипов). Компонентами записей могут быть функции первого класса, что позволяет реализовывать основные концепции объектно-ориентированного программирования. Имеются практические воплощения этой модели. С другой стороны, классы в объектно-ориентированном программировании естественным образом представляются в виде записей, содержащих поля-данные, которым дополнительно назначен атрибут видимости, сопровождаемых полями-методами, ориентированными на обработку этих записей. Например, именно таким образом классы воплощены в языке C++.
Объектные переменные
В дополнение к типам Byte, Integer, Long, Single, Double и String язык программирования может также иметь объектный тип данных (Object). Переменные или выражения типа Object ссылаются на объект языка или на объект, принадлежащий приложению, например Excel-объекты Workbook, Worksheet и Range.
Как и в случае с другими типами, можно объявлять переменные в модулях, процедурах и функциях с определенным типом Object, что показано в следующем операторе [11]:
Dim myObject As Object
Можно задавать переменную myObject, создаваемую предшествующим оператором Dim, чтобы она содержала ссылку на любой объект. Если вы собираетесь использовать переменную типа Object для некоторых специфических типов объектов, можно также объявлять объектную переменную для этого специфического типа объекта:
Dim InstBook As Workbook
Объектную переменную InstBook, создаваемую этим оператором Dim, можно использовать только для сохранения ссылок на объекты Workbook; при попытке присвоить переменной InstBook ссылку на объект Range или Worksheet отображается сообщение об ошибке несовпадения типов. Аналогично, следующее предложение объявляет объектную переменную, которая может сохранять только объекты Document:
Dim InstDoc As Document
Объектное выражение (object expression) – это любое выражение, которое определяет отдельный объект. Все объектные выражения должны вычисляться до единственной объектной ссылки; объектные выражения используются с единственной целью – создание ссылок на специфические объекты в ваших программах [11].
Объектное выражение может состоять из объектных переменных, объектных ссылок или объектного метода или свойства, которое возвращает объект. Нельзя использовать переменные типа Object или объектные выражения в арифметических, логических или операциях сравнения. Объектная ссылка, созданная с помощью объектного выражения или сохраненная в объектной переменной, в действительности, является только адресом, указывающим место в памяти компьютера, где сохранен объект, на который выполняется ссылка. Поскольку объектная ссылка – это адрес памяти, арифметические, логические операторы и операторы сравнения не имеют смысла.
Перед использованием объектной переменной для ссылки на объект необходимо задать эту переменную, чтобы она содержала ссылку на нужный объект. Присваивание объектной ссылки объектной переменной отличается от присваиваний других переменных; чтобы присвоить объектную ссылку объектной переменной, используется оператор Set.
Оператор Set имеет следующий синтаксис [11]:
Set Переменная=Объект
Переменная – это любая объектная переменная или переменная типа Variant. Объект – любая допустимая объектная ссылка; это может быть другая объектная переменная или объектное выражение. Если Переменная – переменная, объявленная с каким-либо определенным типом (например, Range или Workbook), этот тип должен быть совместим с объектом, на который ссылается Объект.
Класс в программировании. Виды классов в языках программирования
Класс в программировании представляет собой группировку данных, полей и функций или методов. Все они называются переменными, методами или функциями-членами. Программа построена из набора классов. Как только он определен и реализован, можно объявить его элементы аналогично языковым переменным из примитивных типов «int», «double» и «String» [15].
SIMULA был первым объектным языком, он использовался для создания симуляций. Алану Кею, который в то время учился в университете штата Юта, понравился язык тем, что в перспективе его можно было применить для персонального компьютера с целью реализации графически-ориентированных приложений. Он предположил, что такой язык, как SIMULA, предоставит новичкам хороший способ для создания программ, и поделился своим видением с Xerox Parc. В начале 1970-х годов команда, возглавляемая Аланом Кейем, создала первый ПК под названием Dynabook с объектно-ориентированным языком Smalltalk, который существует и по сей день, хотя в коммерческих целях не особо широко используется.
Краткая история языка программирования
Идея объектно-ориентированного программирования (ООП) получила развитие в 1970-х, а в начале 1980-х Бьорн Страуструп интегрировал его в язык Си, который стал называться «C ++» – первый объектно-ориентированный язык (ООЯ), широко используемый в коммерческих целях.
В начале 1990-х годов группа в Sun под руководством Джеймса Гослинга разработала более простую версию C ++ под названием Java. Которая должна была стать языком для приложений видео по запросу. Этот проект Java программирования с нуля так и не был реализован. Группа вынуждена была переориентировать свое внимание на разработку языка для интернет-приложений. Он стал приобретать все более широкую популярность по мере того, как развивался интернет, хотя его проникновение на рынок было довольно сдержанным из-за кажущейся неэффективности.
Объектно-ориентированное моделирование
Классы и объекты являются двумя из немногих ключевых строительных блоков ООП. Они используются для моделирования поведения и инкапсуляции. В реальном мире можно найти множество отдельных однотипных объектов. Например, существуют тысячи велосипедов одной и той же марки и модели. Каждый был построен из одного набора и, следовательно, содержит равные компоненты. В ОО терминах, это означает, что велосипед является экземпляром из класса объектов, известных, как велосипеды. Все просто. Класс в языках программирования – это план, создания конкретных объектов. Например, Bicycle является одной из возможных реализаций.
Переменная – это имя со значением, которое может изменяться во всей программе. В соответствии с содержащейся информацией, они классифицируются на 2 и более типа, в зависимости от используемого языка. В общем случае существует 2 типа классификаций:
Переменные примитивных типов. Они определяются одним значением – целым, с плавающей запятой, символом или логическим знаком.
Переменные-ссылки – это имена более сложной информации: массивы или объекты определенного класса.
Ключевым моментом ООП является предотвращение неверной информации, поскольку переменные не были правильно инициализированы. Для верного определения объектов необходимо использовать конструктор–методов, срабатывающий автоматически каждый раз, когда создается объект. Основная миссия их – зарезервировать память, выполнить инициализацию переменных членов класса в программировании. Они не имеют возвращаемого значения «void», и их имя совпадает с именем общей группы. Его неявный аргумент – это объект, который создается.
Предельная переменная
Классы хранения C используются для описания функций переменной. Они в основном включают в себя область действия, видимость и время жизни, которые помогают отслеживать существование определенной переменной во время выполнения программы.
Язык C использует 4 класса хранения. А именно:
Auto – устанавливается по умолчанию для всех переменных, объявленных внутри функции или блока классов в C. Следовательно, ключевое слово «auto» редко используется при написании программ на языке Си. Доступ к автоматическим переменным возможен только внутри блока/функции, в которой они были объявлены, а не вне их, что определяет их область действия. Конечно, к ним можно получить доступ во вложенные внутри родительского блока/функции, в которых была объявлена автоматическая переменная. Тем не менее, к ним можно получить доступ и вне их области действия, указывая на очень точное место в памяти, где находятся.
Внешний, когда переменная определена в другом месте, а не там, где используется. Как правило, значение присваивается в одном блоке, и это может быть перезаписано в другом. Таким образом, «extern» – это не что иное, как глобальная переменная, инициализированная с допустимым значением, в котором она объявлена для использования в другом месте.
Статический, используется для объявления статических переменных, которые широко применяются при написании классов в C. Они имеют свойство сохранять свое значение даже после того, как выходят за пределы области видимости. Таким образом, можно сказать, что они инициализируются только один раз и существуют до завершения программы, им новая память не выделяется, поскольку они не объявляются повторно, а область действия зависит от функции, для которой они были определены. Глобальные статические переменные могут быть доступны в любом месте программы. По умолчанию им присваивается значение 0 компилятором.