Переменная (программирование)

Поделись знанием:
Перейти к: навигация, поиск

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

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

Область видимости и/или время существования переменной в некоторых языках задаётся классом памяти.





Классификация

Статическая и динамическая типизация переменных

Если тип данных определяется на этапе компиляции, имеет место статическая типизация, а если на этапе выполнения программы — динамическая. В последнем случае иногда говорят, что переменная не имеет типа, хотя данные, содержащиеся в ней, безусловно, относятся к определённому типу данных, но выясняется это уже во время выполнения программы.

В большинстве случаев статическая типизация позволяет уменьшить затраты ресурсов при выполнении программы, поскольку для динамической типизации требуются затраты ресурсов на выяснение типов данных их приведение в выражениях со смешанными типами. Статическая типизация позволяет перекладывать проверку типов на этапе компиляции программы. Это также упрощает обнаружение ошибок ещё на этапе разработки, когда их исправление обходится менее дорого. Тем не менее во многих случаях необходимо применение динамической типизации. Например, необходимость поддержания совместимости при переходе на новый формат представления данных (например, старая часть проекта посылает процедуре дату символьной строкой, а новые объекты используют более современный числовой тип).

Статические и динамические переменные

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

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

Локальные и глобальные переменные. Области видимости

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

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

Простые и сложные переменные

По наличию внутренней структуры, переменные могут быть простыми или сложными (составными).

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

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

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

Соглашения об именовании переменных

См. также


Напишите отзыв о статье "Переменная (программирование)"

Отрывок, характеризующий Переменная (программирование)

В том состоянии раскрытости душевной, в котором находилась Наташа, эта молитва сильно подействовала на нее. Она слушала каждое слово о победе Моисея на Амалика, и Гедеона на Мадиама, и Давида на Голиафа, и о разорении Иерусалима твоего и просила бога с той нежностью и размягченностью, которою было переполнено ее сердце; но не понимала хорошенько, о чем она просила бога в этой молитве. Она всей душой участвовала в прошении о духе правом, об укреплении сердца верою, надеждою и о воодушевлении их любовью. Но она не могла молиться о попрании под ноги врагов своих, когда она за несколько минут перед этим только желала иметь их больше, чтобы любить их, молиться за них. Но она тоже не могла сомневаться в правоте читаемой колено преклонной молитвы. Она ощущала в душе своей благоговейный и трепетный ужас перед наказанием, постигшим людей за их грехи, и в особенности за свои грехи, и просила бога о том, чтобы он простил их всех и ее и дал бы им всем и ей спокойствия и счастия в жизни. И ей казалось, что бог слышит ее молитву.


С того дня, как Пьер, уезжая от Ростовых и вспоминая благодарный взгляд Наташи, смотрел на комету, стоявшую на небе, и почувствовал, что для него открылось что то новое, – вечно мучивший его вопрос о тщете и безумности всего земного перестал представляться ему. Этот страшный вопрос: зачем? к чему? – который прежде представлялся ему в середине всякого занятия, теперь заменился для него не другим вопросом и не ответом на прежний вопрос, а представлением ее. Слышал ли он, и сам ли вел ничтожные разговоры, читал ли он, или узнавал про подлость и бессмысленность людскую, он не ужасался, как прежде; не спрашивал себя, из чего хлопочут люди, когда все так кратко и неизвестно, но вспоминал ее в том виде, в котором он видел ее в последний раз, и все сомнения его исчезали, не потому, что она отвечала на вопросы, которые представлялись ему, но потому, что представление о ней переносило его мгновенно в другую, светлую область душевной деятельности, в которой не могло быть правого или виноватого, в область красоты и любви, для которой стоило жить. Какая бы мерзость житейская ни представлялась ему, он говорил себе:
«Ну и пускай такой то обокрал государство и царя, а государство и царь воздают ему почести; а она вчера улыбнулась мне и просила приехать, и я люблю ее, и никто никогда не узнает этого», – думал он.
Пьер все так же ездил в общество, так же много пил и вел ту же праздную и рассеянную жизнь, потому что, кроме тех часов, которые он проводил у Ростовых, надо было проводить и остальное время, и привычки и знакомства, сделанные им в Москве, непреодолимо влекли его к той жизни, которая захватила его. Но в последнее время, когда с театра войны приходили все более и более тревожные слухи и когда здоровье Наташи стало поправляться и она перестала возбуждать в нем прежнее чувство бережливой жалости, им стало овладевать более и более непонятное для него беспокойство. Он чувствовал, что то положение, в котором он находился, не могло продолжаться долго, что наступает катастрофа, долженствующая изменить всю его жизнь, и с нетерпением отыскивал во всем признаки этой приближающейся катастрофы. Пьеру было открыто одним из братьев масонов следующее, выведенное из Апокалипсиса Иоанна Богослова, пророчество относительно Наполеона.
В Апокалипсисе, главе тринадцатой, стихе восемнадцатом сказано: «Зде мудрость есть; иже имать ум да почтет число зверино: число бо человеческо есть и число его шестьсот шестьдесят шесть».
И той же главы в стихе пятом: «И даны быта ему уста глаголюща велика и хульна; и дана бысть ему область творити месяц четыре – десять два».
Французские буквы, подобно еврейскому число изображению, по которому первыми десятью буквами означаются единицы, а прочими десятки, имеют следующее значение:
a b c d e f g h i k.. l..m..n..o..p..q..r..s..t.. u…v w.. x.. y.. z
1 2 3 4 5 6 7 8 9 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160
Написав по этой азбуке цифрами слова L'empereur Napoleon [император Наполеон], выходит, что сумма этих чисел равна 666 ти и что поэтому Наполеон есть тот зверь, о котором предсказано в Апокалипсисе. Кроме того, написав по этой же азбуке слова quarante deux [сорок два], то есть предел, который был положен зверю глаголати велика и хульна, сумма этих чисел, изображающих quarante deux, опять равна 666 ти, из чего выходит, что предел власти Наполеона наступил в 1812 м году, в котором французскому императору минуло 42 года. Предсказание это очень поразило Пьера, и он часто задавал себе вопрос о том, что именно положит предел власти зверя, то есть Наполеона, и, на основании тех же изображений слов цифрами и вычислениями, старался найти ответ на занимавший его вопрос. Пьер написал в ответе на этот вопрос: L'empereur Alexandre? La nation Russe? [Император Александр? Русский народ?] Он счел буквы, но сумма цифр выходила гораздо больше или меньше 666 ти. Один раз, занимаясь этими вычислениями, он написал свое имя – Comte Pierre Besouhoff; сумма цифр тоже далеко не вышла. Он, изменив орфографию, поставив z вместо s, прибавил de, прибавил article le и все не получал желаемого результата. Тогда ему пришло в голову, что ежели бы ответ на искомый вопрос и заключался в его имени, то в ответе непременно была бы названа его национальность. Он написал Le Russe Besuhoff и, сочтя цифры, получил 671. Только 5 было лишних; 5 означает «е», то самое «е», которое было откинуто в article перед словом L'empereur. Откинув точно так же, хотя и неправильно, «е», Пьер получил искомый ответ; L'Russe Besuhof, равное 666 ти. Открытие это взволновало его. Как, какой связью был он соединен с тем великим событием, которое было предсказано в Апокалипсисе, он не знал; но он ни на минуту не усумнился в этой связи. Его любовь к Ростовой, антихрист, нашествие Наполеона, комета, 666, l'empereur Napoleon и l'Russe Besuhof – все это вместе должно было созреть, разразиться и вывести его из того заколдованного, ничтожного мира московских привычек, в которых, он чувствовал себя плененным, и привести его к великому подвигу и великому счастию.