Файл: Понятие переменной в программировании. Виды и типы переменных. ( Адрес переменной).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 26.06.2023

Просмотров: 97

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

В языке PHP длина переменных составляет 7-10 символов. Если вы научитесь укладываться в 7 символов, то ускорите работу сценария минимум на 15%, поскольку, чем короче имя переменной, тем быстрее с ней работает PHP.[27]

Недопустимость одноимённости переменных в программах и подпрограммах является причиной ошибок в больших программах и затрудняет использование чужих программ. [28]

Адрес переменной

Адрес переменной – это адрес области памяти, с которой связана данная переменная. Для связывания с переменной свободная область памяти соответствующего размера извлекается из пула доступной памяти. Этот процесс называется выделением памяти. Разрыв связи между некоторой областью памяти и переменной называется освобождением памяти. При освобождении памяти её область, с которой разрывается связь, возвращается обратно в пул доступной памяти. Выделение и освобождение памяти выполняется специальными программами управления памятью, которые недоступны программисту.

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

Возможен случай, когда несколько имён переменных связанны с одной и той же областью памяти. Такие переменные называются альтернативными (alais-именами).[29]

Значение переменной

Значение переменной – это текущее содержимое ячеек памяти, отведённых для её значения. В ходе работы программы значение переменных может изменяться. В некоторых языках программирования переменная может быть неопределённой. Это означает, что в ходе выполнения алгоритма ей ещё не было присвоено какое-либо значение.[30]

Переменная, которая хранит единственное значение, называется скалярной. Переменная может использоваться и для хранения серии чисел, такая переменная является массивом.


Массив – переменная, предназначенная для хранения пронумерованной сери значений (элементов массива). Массив обязательно должен быть описан перед его использованием.[31] Доступ к нужному элементу массива выполняется по его порядковому номеру, называемому индексом. А общее число элементов массива называется его размером. Массив идеально подходит в тех случаях, когда нужно хранить в одной переменной упорядоченный набор данных. Ведь массив фактически представляет собой одну переменную.[32]

В большинстве задач приходится иметь дело с массивами, элементами которых являются числа того или иного типа, символы и строки фиксированной длины. Однако приходится обрабатывать и битовые массивы, каждый элемент которых представлен одним, или несколькими двоичными разрядами, соответствующими кодам цветности пикселов графических изображений. Некоторые системы программирования позволяют работать с массивами, состоящими из неоднородных элементов. Например, с массивами, каждый элемент которых представлен строкой переменной длины.[33] Значение может быть указанно сразу (инициализация), а в большинстве случаев задание начальной величины можно и отложить.[34]

Операция присваивания значений переменным называется инициализацией. Инициализация – это присвоение переменным начальных значений перед выполнением программы или в ходе её работы.[35]

Большие неприятности могут ожидать программиста, если он небрежно обращается с переменными, в частности – если он забывает присваивать им значения перед использованием. Хороши й компилятор выдаёт предупреждение, когда встречает непроинициализированную переменную. Пример инициализации на языке C++:

int iNumber = 5;

char cSymbol = ‘A’ ;

Если при определении программист явно не присвоил переменной какого-либо значения, компилятор может проинициализировать её сам. Правила неявной инициализации:

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

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

- динамические переменные не инициализируются (т.е. имеют случайное значение той области памяти, которая была выделена под объект в куче).[36]


Переменная сохраняет присвоенное ей значение до тех пор, пока этой переменной не будет присвоено новое значение, при этом предыдущее значение переменной теряется безвозвратно.[37] Для примера можно привести из языка Phiton, который способен на различные «фокусы», недоступные во многих других языках программирования. Мы можем одной инструкцией объявить несколько переменных и присвоить им значения. Аналогичным образом, одной лишь инструкцией мы можем поменять значения двух переменных.

Например:

a, b = 7, 8

print(a, b)

a, b = b, a

print(a, b)

Результат работы такой программы:

$ python3 var4.ру

7 8

8 7[38]

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

<левая часть оператора присвоен.> <оператор присвоен.> <выражение>.

Существует несколько альтернативных решений для реализации присвоения. В некоторых языках программирования (FORTRAN, Pascal, Ada) присваивание существует только в качестве самостоятельного оператора, при этом левой частью оператора присваивания может быть единственная переменная. Оператор присваивания в языках C, C++ и Java может использоваться в качестве операнда в выражении, что позволяет присваивать значение нескольким переменным одновременно, например:

COUNT = SUMMA = 0; [39]

Тип переменной

С каждой переменной связывается определённый тип значений, которые она может принимать. Тип переменной связывает переменную с множеством значений, которые она может принимать. Переменная должна быть связанна с определённым типом до того, как к ней можно будет обращаться[40]. Семантический смысл переменной заключается в хранении некоторого значения, соответствующего её типу (например, переменная целого типа может принимать значение произвольного целого числа), а также в выполнении с ней операций пересылки в неё и извлечения из неё этого значения.[41]

В большинстве языков программирования переменные обладают типом, который указывает, какие данные хранятся в переменной. Например, это могут быть целые числа, такие, как 3, -7, 0, другой тип переменных используется для хранения вещественных чисел 3.14 -2.7, 17.0 и т. п.. Например, для компьютера существует разница между числом 17 и числом 17.0. В первом случае мы имеем целое число, а во втором – вещественное число. Также существует тип, который представляет отдельный символ, например, А, ; . Есть свой тип для представления строк, например, «Hello».[42]


Тип переменной определяет допустимые значения переменной. От него зависит набор операций, в которых её можно использовать. Например, числа можно складывать и умножать, а текстовые данные – нет. От типа переменной так же зависит способ представления её значения в памяти компьютера (сколько выделано ячеек и в каком порядке).[43] Тип переменной связывает переменную с множеством значений, которые она может принимать. Переменная должна быть связана с определённым типом до того, как к ней можно будет обращаться.[44]

Тип переменной определяется типом данных, на которые эта переменная ссылается в данный момент: одна и та же переменная может быть, к примеру, сначала числом, затем строкой. [45]Тип данных – это некоторый класс объектов, данных вместе с набором операций для создания работы с ними. Различают следующие основные элементы спецификации типа данных:

- атрибуты, характеризующие объекты данных заданного типа;

- значения, которые могут принимать объекты данных заданного типа;

- операции, которые допустимы над объектами данных заданного типа.[46]

Типы данных различаются, начиная с нижних уровней системы. Концепция типа данных появилась в языках программирования высокого уровня как естественное отражение того факта, что обрабатываемые программой данные могут иметь различные множества допустимых значений, хранится в памяти компьютера различным образом, занимать различные объёмы в памяти и обрабатываться с помощю различных команд процессора.

Каждый язык программирования поддерживает один или несколько встроенных типов данных (базовых типов). Развитые языки программирования, помимо этого, дают программисту возможность вводить и описывать собственные типы данных (производные), комбинируя или расширяя существующие.[47]

Чтобы переменную можно было использовать в программе, её надо предварительно описать, указав её тип. Пока переменная не описана, обращаться к ней нельзя (хотя в некоторых языках программирования, например, в Бейсике м Фортране, считается, что все переменные, не объявленные явно, имеют числовой тип). После того, как переменная описана, к ней можно обращаться, но она обычно исходно имеет неопределённое значение, поэтому её надо предварительно инициировать.[48]

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


Чтобы избежать этой проблемы и позволить программистам активно применять нужные структуры данных, в современных языках программирования разрешено определять собственные типы данных, которые допускается использовать в командах описания на ровне с базовыми типами.[49]

Объединив вышесказанное мы видим, что переменная представляет собой значение определённого типа. Если же перейти к более простому и ориентирующемся на объект трактованию, то переменная – это объект данных, который явным образом определён и назван программистом.[50]

Локальные переменные создаются внутри функции, и к ним имеется доступ только из кода этой функции. Обычно это временные переменные, которые используются до выхода из функции для хранения частично обработанных результатов.[51] Локальные переменные целесообразно применять в функции, написанной для общего пользования. Поскольку функция вызывается многими сценариями, которые могут быть написаны разными программистами, нужно не допустить конфликта имён переменных, используемых внутри функции (то есть дублирования), с именами переменных в программе, которая вызывает функцию. Локальные переменные устраняют эту проблему. При использовании внутри функции встроенные команды объявляют переменную локальной по отношению к функции, в которой она определяется. [52] Пример локальной переменной на языке PHP:

<?php

Function longdate($timestamp)

{

$temp = date(“l F jS Y” . $timestamp):

Return “Дата: $temp”:

}

?>

В этом примере значение, возвращённое функцией date, присваивается певременной ременной $temp, которая затем вставляется в строку, возвращаемую определяемой функцией. Как только будет осуществлён выход из функции, значение переменной $temp удаляется, как будто она вообще никогда не использовалась.[53]

Глобальные переменные определяются вне каких-либо функций. Глобальная переменная видима из всех функций данного файла, которые определены позже, чем сама глобальная переменная. Как правило, необходимо, чтобы все глобальные переменные были видимы из всех функций, поэтому их определение располагают в начале листинга. Иногда глобальные переменные называют внешними, поскольку они являются внешними по отношению к любой из функций программы. Глобальные переменные и переменные объявляемые в подпрограммах, которые должны сохранять своё значение между отдельными выполняемыми подпрограммами, реализуются как статистические переменные. [54]Глобальная переменная объявлена в теле скрипта и доступна во всех объявленных в скрипте функциях.[55]