Что такое переменная в программировании
Переменная (от англ. variable) — поименованная или адресуемая иным способом область памяти, которую можно использовать для доступа к данным. Звучит сложно и пугающе, не правда ли? Однако на практике такое определение вашему ребенку не потребуется. По крайней мере, на начальных этапах изучения программирования.
Переменная простыми словами — это хранилище данных. Сюда можно положить какое-то значение (например, число, строку или другой тип данных). Еще более простой вариант представить себе переменную — подумать о том, что нас окружает. Например, переменной может быть какой-то небольшой мешочек, куда можно положить, к примеру, яблоко. Оно будет там находиться до тех пор, пока мы не решим произвести с яблоком какие-то действия.
Переменную в любой программе необходимо объявлять. То есть достать этот мешочек перед тем, как положить в него яблоко. В современных приложениях переменных может быть сколько угодно много. Например, в одном мешочке хранится яблоко, в другом — конфета.
В переменных хранятся определенные данные, которые можно впоследствии использовать в программе. Для того, чтобы переменная появилась, необходимо ее объявить (зарезервировать ячейку памяти под определенные данные). В разных языках переменные объявляются по-разному в зависимости от синтаксиса. Где-то это может быть слово «var», где-то «let». Существуют также неизменяемые переменные, которые задаются только раз и объявляются словом «const».
Переменные в программе нужны не только для хранения данных, но и для различных операций с ними. Например, можно создать простой калькулятор, используя всего три переменные — a, b и c. Как это будет работать? Не углубляясь в тонкости синтаксиса каждого отдельно взятого языка программирования, покажем простой пример:
То есть у нас есть три переменные. Первые две используются для вычисления, а третья служит для того, чтобы в нее записывалось значение суммы. Причем первые две переменные могут быть с заданными исходными значениями, а могут быть и пустыми (то есть переменная объявляется, но ей не присваивается никакое значение). Во втором случае, можно самим подставлять значения и на их основе будут производиться расчеты.
Кстати, данные можно записывать сразу в программе. Если взять наш пример выше, вместо латинских букв мы можем сразу же использоваться цифры. Например, 1+2 = 3. Однако в этом случае программа, которую вы напишете, не будет обладать должной гибкостью. То есть можно посчитать в ней только заданные значения и для того, чтобы что-то изменить, каждый раз придется в коде писать новые числа и только тогда мы получим другой результат.
Переменные позволяют добавить гибкости приложению. То есть мы сами можем менять их значения и каждый раз получать необходимые результаты без вмешательства в код программы.
При работе с средой разработки Scratch также используются переменные. Здесь есть отдельный раздел, где может их создавать. При нажатии на специальную кнопку, у нас появится окно, где можно задавать имя и значение переменной. Также, в Scratch есть возможность определения области видимости, то есть будет ли переменная доступна только одному спрайту или всем.
Важно помнить о том, что если переменная доступна всем спрайтам, она должна иметь уникальное имя. Две переменные с одним из тем же именем в одной и той же области видимости существовать не могут.
А если планируется использование переменных в разных областях видимости (спрайтах), здесь допустимо использование одинаковых имен.
Как называть переменные? Можно просто латинскими буквами. Однако наиболее популярный и эффективный вариант — описательное именование, чтобы мы, работая с кодом в будущем, могли знать, какое именно значение в переменной и что туда «положить» в случае, если планируются такие действия. При обучении через скретч лучше сразу пользоваться английскими названиями переменных. Дело в том, что во взрослом программировании весь код пишется исключительно на английском и в будущем, если ребенок в будущем будет работать с иностранными компаниями, ему придется изучить этот язык.
Например, у нас есть переменная, в которую заносятся какие-то животные. Ее можно назвать «Zhivotnye», но лучше сразу писать «Animals».
Для чего можно использовать переменные в Scratch? В целом, для любой программы, которую мы здесь пишем. Например, у нас есть два персонажа, и они должны двигаться по экрану. Мы можем задать им скорость вручную, а можем внести эти данные в переменную и затем менять скорость одновременно для обоих персонажей. Это будет более эффективно.
Помимо скорости, в качестве переменных могут выступать и другие динамические параметры, например, количество шагов. И это далеко не все возможности.
О переменных в программировании
Если заглянуть в википедию, то можно увидеть, что переменная в программировании — это поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Слово, из этого определения, на которое я хотел бы обратить ваше внимание — это данные. Так ли на самом деле, что в языках программирования, на которых мы пишем, переменные используются только для доступа к данным. Я, например, пишу на PHP. И в нём, как и в других языках программирования, переменные, кроме доступа к данным, используются также для доступа к объектам(экземплярам классов) и массивам(ассоциативным и обычным) и ещё некоторым вещам. Данные(строки, целые числа, числа с плавающей точкой, булевы значения), объекты(экземпляры классов) и структуры( ассоциативные и обычные массивы, если брать PHP) для человека по-сути являются разными сущностями (абстракциями), и было бы разумным, в наших языках программирования, обращаться с ними, как с разными вещами, игнорируя факт того, что для машины они являются одним и тем же(именованными областями памяти). Для этого я предлагаю вместо переменных начать пользоваться такими сущностями как, например: объект, структура, данные.
Такая замена даёт возможность ментального разделения таких разных и не имеющих ничего общего сущностей(абстракций) как объекты, структуры и данные.
RFC для PHP по этой теме уже в процессе создания.
PS
Вообщем создать RFC для PHP не вышло, тк разработчики PHP сказали, что не хотят тратить символы которые будут нужны для реализации этой задумки. Добавлю от себя что в PHP это всё равно не получилось бы реализовать потому, что у него динамическая типизация. Но! В языке со статической типизацией, где типы не меняются, это вполне можно реализовать. Поэтому надеюсь разработчики таких языков обратят своё внимание на предложенную идею.
Что такое переменная в программировании (Delphi, C#, PHP, JavaScript, Python)?
Всем привет друзья. Сейчас я расскажу вам о переменных: что такое переменные в программировании, зачем они нужны и как их использовать.
Это будет обобщающий урок, и то что я буду рассказывать и показывать в этой статье и видео к ней, применимо ко всем языкам программирования. Не важно, что вы сейчас изучаете: Delphi, C#, PHP, JavaScript, Python, или какой-нибудь другой язык программирования. То что я расскажу в этом уроке, будет применимо абсолютно к любому языку программирования.
Что такое переменная в программировании
Переменная — это определенная ячейка памяти, в которую можно записать различные значения. Как правило, этой ячейке памяти устанавливают какое-нибудь имя.
Переменную в программировании можно сравнить с ящиком для игрушек.
Например, у нас есть ящик. И на этот ящик мы нанесем наклейку «Игрушки» на английском «Toys». Теперь мы знаем, что этот ящик у нас предназначен для игрушек и в него мы будем помещать только их.
Если мы положим в наш ящик игрушку (например, мишку), то мы присвоим переменной значение. В переменной Toys будет храниться Мишка (Bear).
На практике в программировании это выглядит так:
На языке Delphi
На языке PHP
На языке JavaScript
На языке C#
На языке Python
Значение переменной можно копировать и менять. Например, если у нас будет еще один ящик «Вещи» (Things), то мы можем в него положить наш ящик «Игрушки» (Toys). И теперь в нашем ящике «Вещи» будет находится «Мишка».
На практике это выглядит так: (Далее пример я буду наводить только на языке JavaScript, потому что принцип работы с переменными идентичен и для Delphi, и для C#, и для PHP, и для Python. И в обычном блокноте вы можете создать файл с расширением html и повторять всё за мной.)
Код JavaScript:
Если мы достанем из ящика «Игрушки» (Toys) нашего мишку и положим в него кролика «Bunny», то и в ящике «Вещи» (Things) у нас теперь буде кролик (Bunny).
Код JavaScript:
Переменным можно присваивать результаты каких-то вычислений. Если говорить о числах, то их можно складывать, вычитать, умножать и делить. Строки также можно складывать.
Например, у нас есть два ящика (две переменные). В одном у нас кролик, а в другом — мишка. Если мы эти два ящика положим в ящик «Вещи», то теперь в ящике «Вещи» будут и кролик, и мишка.
На практике это выглядит так:
Код JavaScript:
Ну и давайте рассмотрим пример работы с числами.
Код JavaScript:
Как видите ничего сложного в этом нет.
Имя переменной
Имя переменной может состоять как из одной, так и из нескольких букв. Например, можно задать имя переменной Toys (Игрушки), или MyToys (Мои игрушки). Также можно использовать числа при определении переменной. Например, toy1, toy2, toy3 и т.д.
Важно знать, что когда вы указываете имя переменной, нужно использовать только английские буквы и нельзя использовать пробелы.
Также нельзя использовать зарезервированные слова. У каждого языка программирования они свои и для раскрытия этой темы нужно делать отдельный урок по переменным в каждом из этих языков программирования.
Еще очень важно назначать переменным осмысленные имена. Потому что когда вы будете создавать большие проекты (программы), то в последствии вам будет легче понимать свой код. Вы легко вспомните, что означает та, или иная переменная. Ведь если вы дадите переменным имена i, b, f, Str1, то спустя некоторое время вы забудете для чего объявляли именно эти переменные, и будет очень тяжело понять, что они означают. А вот когда вы видите имя переменной Toys, то вы сразу понимаете, что хранится в этой переменной (в нашем случае — игрушки).
Ну и для закрепления этой темы, давайте я еще покажу как по ходу выполнения программы, переменная может менять свое значение.
Код JavaScript:
Надеюсь, вам понравился этот урок.
Видео по этой теме
Переменная (программирование)
Переме́нная в императивном программировании — поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной.
В других парадигмах программирования, например, в функциональной и логической, понятие переменной оказывается несколько иным. В таких языках переменная определяется как имя, с которым может быть связано значение, или даже как место (location) для хранения значения.
Область видимости и/или время существования переменной в некоторых языках задаётся классом памяти.
Содержание
Классификация
Статическая и динамическая типизация переменных
Если тип переменной определяется на этапе компиляции, имеет место статическая типизация, а если на этапе выполнения программы — динамическая. В последнем случае иногда говорят, что переменная не имеет типа, хотя данные, содержащиеся в ней, безусловно, относятся к определённому типу данных, но выясняется это уже во время выполнения программы.
В большинстве случаев статическая типизация позволяет уменьшить затраты ресурсов при выполнении программы, поскольку для динамической типизации требуются затраты ресурсов на выяснение типов данных их приведение в выражениях с смешанными типами. Статическая типизация позволяет перекладывать проверку типов на этапе компиляции программы. Это также упрощает обнаружение ошибок ещё на этапе разработки, когда их исправление обходится менее дорого. Тем не менее во многих случаях необходимо применение динамической типизации. Например, необходимость поддержания совместимости при переходе на новый формат представления данных (например, старая часть проекта посылает процедуре дату символьной строкой, а новые объекты используют более современный числовой тип).
Статические и динамические переменные
Адрес поименованной ячейки памяти также может определяться как на этапе компиляции, так и во время выполнения программы. По времени создания переменные бывают статическими и динамическими. Первые создаются в момент запуска программы или подпрограммы, а вторые создаются в процессе выполнения программы.
Динамическая адресация нужна только тогда, когда количество поступающих на хранение данных заранее точно не известно. Такие данные размещают в специальных динамических структурах, тип которой выбирается в соответствии со спецификой задачи и с возможностями выбранной системы программирования. Это может быть стек, куча, очередь и т. п. Даже файл, в том смысле, который заложил Н.Вирт в Паскаль, является динамической структурой.
Локальные и глобальные переменные. Области видимости
По зоне видимости различают локальные и глобальные переменные. Первые доступны только конкретной подпрограмме, вторые — всей программе. С распространением модульного и объектного программирования, появились ещё и общие переменные (доступные для определённых уровней иерархии подпрограмм). Область видимости иногда задаётся классом памяти. Ограничение видимости может производиться путём введения пространств имён.
Ограничение зоны видимости придумали как для возможности использовать одинаковые имена переменных (что разумно, когда в разных подпрограммах переменные выполняют похожую функцию), так и для защиты от ошибок, связанных с неправомерным использованием переменных (правда, для этого программист должен владеть и пользоваться соответствующей логикой при структуризации данных).
Простые и сложные переменные
По наличию внутренней структуры, переменные могут быть простыми или сложными (составными).
Простые переменные не имеют внутренней структуры, доступной для адресации. Последняя оговорка важна потому, что для компилятора или процессора переменная может быть сколь угодно сложной, но конкретная система (язык) программирования скрывает от программиста её внутреннюю структуру, позволяя адресоваться только «в целом».
Сложные переменные программист создаёт для хранения данных, имеющих внутреннюю структуру. Соответственно, есть возможность обратиться напрямую к любому элементу. Самыми характерными примерами сложных типов являются массив (все элементы однотипные) и запись (элементы могут иметь разный тип).
Следует подчеркнуть относительность такого деления: для разных программ одна и та же переменная может иметь разную структуру. Например, компилятор различает в переменной вещественного типа 4 поля: знаки мантиссы и порядка, плюс их значения, но для программиста, компилирующего свою программу, вещественная переменная — единая ячейка памяти, хранящая вещественное число.
Понятие переменной в программировании. Виды и типы переменных (Понятие Переменная в программировании)
Содержание:
Введение
В данной курсовой работе будет раскрыто понятие переменной, её виды и типы. Так же я затронул тему операторов присваивания, классификации и области действия переменных, в том числе на примере Visual Basic. Более подробно раскрыты понятия простых и сложных переменных, операторов присваивания, статистической и динамической типизации.
Понятие Переменная в программировании.
Данные хранятся в ячейках памяти компьютера. Когда мы вводим число, оно помещается в память. Но как узнать, куда именно? Как в последствии обращаться к этим данными? Раньше, при написании программ на машинном языке, обращение к ячейкам памяти осуществляли с помощью указания регистров. Но уже с появлением ассемблеров, при обращении к данным стали использовать так называемые переменные. Механизм связи между переменными и данными может различаться в зависимости от языка программирования и типа данных. Пока достаточно запомнить, что данные связываются с каким-либо именем и в дальнейшем обращение к ним возможно по этому имени.
В программе на языке Python связь между данными и переменными устанавливается с помощью знака =. Такая операция называется присваиванием. Например, выражение sq = 4 означает, что на объект (данные) в определенной области памяти ссылается имя sq и обращаться к ним теперь следует по этому имени.
Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:
Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее вызвать (написать имя и нажать Enter).
Пример работы с переменными в интерактивном режиме:
Таким образом одним из важнейших понятий в языках программирования является понятие переменной. При программировании в машинных кодах выполнение простейшей арифметической операции над двумя числами требуется указать код операции, адреса ячеек оперативной памяти, где хранятся эти числа, и указать адрес ячеек памяти, где будет храниться результат операции. При выполнении такой программы по команде процессора данные передаются из этих ячеек на регистры процессора (так называются ячейки памяти процессора), где над ними и производится определенная операция. Иногда, согласно алгоритму задачи, результат может помещаться, записываться в ту же ячейку памяти, в которой хранилось одно из чисел, над которым выполнялась операция. В этом случае прежнее значение данных будет заменено новым.
В языках программирования высокого уровня аналогом этих ячеек памяти является переменная. Отсюда следующее определение.
Переменная–это именованная область памяти, где хранятся данные, с которыми производятся в программе определенные операции, действия и которые могут изменяться при выполнении программы. Само название «переменная» предполагает ее изменчивость.
Важнейшее положение языков программирования: «После присвоения переменной некоторого значения вместо этого значения можно использовать переменную. Это равносильно использованию самих значений.». Именно в этом состоит основный смысл введения переменных в языках программирования.
Long Integer (Длинное целое)
Currency (Денежные единицы)
от 0 до 65 535 символов
True (Истина) или False (Ложь)
Dim Flag As Boolean
от January (Январь)1, 100, до December (Декабрь) 31, 9999
Dim Birthday As Date
16 байт (для чисел); 22 байт на символ (для строк)
для всез типов данных
В расчетных задачах можно выделить переменные, являющиеся начальными данными, переменные для хранения промежуточных результатов и результирующие переменные, для вычисления которых и формулируется задача.
Именно использование переменных в программе позволяет выполнять одну и ту же программу с различными начальными значениями переменных без изменения кода программы.
После трансляции программы в машинные коды каждой переменной в компьютере выделяется определенная область оперативной памяти со своим адресом. Делают это трансляторы при переводе кодов программы, написанной программистом, в машинные коды и операционная система.
Но при разработке программы программиста совершенно не волнует, какой будет адрес выделяемой память и величина этой памяти для хранения значений переменных. Главное, если программист каким-либо способом задал, присвоил переменным какие-то значения, то в любых выражениях программы, где будут встречаться эти переменные, их значения будут подставляться вместо переменных.
Имена переменных
Каждая переменная должна иметь уникальное имя. Программист сам решает, исходя из постановки задачи и ее алгоритма, какие имена давать переменным. Рекомендуется переменным давать смысловые, информационные имена.
Некоторые требования при задании имен переменным:
Последнее требование будет ясно позже, после знакомства с областью видимости переменных. Примеры разрешенных и неразрешенных имен:
sngX, Data_Rogdenya, strNomerGruppi
Фамилия, NameStudent, Цена, Num_Room, D25
Date of Work, 5Numer, Next
(Next– слово из оператора циклаVB, ключевое словоVB).
В Visual Basic можно задавать имена переменным на русском языке.
Типы данных
Как уже указывалось, после трансляции программы в машинные коды разным переменным будут выделены свои и разные по величинеучастки памяти. Величина выделяемой памяти зависит оттипа данного, которое будет храниться в переменной. Но поскольку данные хранятся в переменных, то можно говорить отипах переменных. Приведем базовые типы переменных, используемые вVB:
Здесь приводится префикс для каждого типа переменных. Это придумка венгерских программистов. Префикс пишется строчными буквами в начале имени переменной и указывает на ее тип. Вводить префикс рекомендуется в больших программах. Примеры переменных с префиксом приведены в следующем параграфе.
Выбор типа переменных – забота программиста. Если тип переменной выбран неправильно, выполнение программы может сразу или в один «прекрасный» момент прерваться. Например, если при определении суммы натуральных чисел S = 1 + 2 + 3 + …+ n переменную S объявить как Integer, то при сложении 256 чисел (n = 256) и более будет переполнение, так как сумма будет превышать число 32767, которое является максимальным для переменной целого типа.
Следовательно, при выборе типа переменной программиста должны интересовать предельные значения переменных определенного типа, чтобы переменные программируемой задачи полностью соответствовали выбранному типу по своим возможным значениям.
Объявление переменных
Рассмотрим объявление переменных на примере языка Visual Basic.
В начале программы (процедуры) переменную рекомендуется объявлять с помощью оператора Dim (или Public, или Private, или Static). После оператора Dim (от английского Dimension – размер, величина) пишется имя переменной, затем ключевое слово As (как) и название типа переменной. Например:
Dim sngY As Single, curЦена As Currency, i As Integer
Dim ДатаРожд As Date
Static Баллы As Integer
Здесь переменные sngY иcurЦена приведены с префиксами.
Имена переменных еще называют идентификаторами (от английского Identification–отождествление, распознавание, обозначение). Интересно, что все возможные слова перевода соответствуют сути идентификатора, имени переменной.
В VB объявление переменных не обязательно. Но лучше, во избежание возможных ошибок программирования, приучить себя обязательно объявлять переменные. Для этого достаточно ввести в разделе General Declarations Окна написания кодаоператор Option Explicit. После этого VB не пропустит ни одного необъявленного переменного.
Другие, краткие способы объявления переменных здесь не рассматриваются. В кратких способах объявления переменных тип переменных может не указываться. Но следует знать, что если тип переменной не объявлен, она имеет тип Variant. А в этом случае переменной можно присвоить значение любого типа данных.
Оператор присваивания
Как уже указывалось выше, перед использованием переменной в программе необходимо ей присвоить значение. Это делается с помощью оператора присваивания, который известен всем как знак равенства «=». Операция присваивания имеет следующий синтаксис:
ИмяПеременной = Выражение
В качестве выражения может быть записана не только формула, но и константа (числовая, текстовая, дата, значение логической переменной и т. д.). Понимается этот оператор так: «Значение выражения, которое всегда записывается справа от оператора присваивания, присваивается переменной, имя которой всегда записывается слева от знака присваивания».
В третьей строке примера вычисляется выражение и его значение присваивается переменной Y. Следует отметить, что переменная х обязательно должна получить некоторое значение перед вычислением выражения Sin(x) + Cos(x/2), иначе случится аварийный останов программы.
Оператор типа k = k + 1 называется счетчиком. Счетчик демонстрирует отличие знака равенства от оператора присваивания. С точки зрения алгебры выражение для счетчика – полная бессмыслица, так как, сократив k, мы получаем, что 0 = 1 (!?). А согласно правилам программирования – величина k увеличивается на 1. Действительно, в выражении справа значениеk, которое имело оно к моменту выполнения этого выражения, складывается с 1 и присваивается опять же переменной k.
Сохранение данных в переменных А, Fam, Y, kс помощью оператора присваивания показано во всех приведенных кодах примера.
Получение данных из переменных х и k демонстрируют третий и четвертый коды примера. Это происходит всегда, когда имена переменных записываются в выражениях, следующих после оператора присваивания “=”. При выводе переменных с помощью оператора Print также происходит получение данных из переменных, если их имена записаны после этого оператора.
Область видимости переменных
При программировании необходимо не только объявить все используемые переменные с правильным заданием их типов, но и определить область их видимости. Поясним, что это такое.
Все переменные, объявленные только в событийной процедуре, нигде больше не могут быть использованы. Если их имена ввести в любой оператор другой процедуры, то это будут уже другие переменные, но с такими же именами. Такие переменные называются локальными в процедуре.
Если требуется, чтобы переменная могла использоваться в любой событийной процедуре одной формы, она должна быть объявлена в разделе General Declarations формы. Это надо сделать, например, в том случае, когда для ввода переменных создается отдельная процедура, а обработка введенных данных происходит в другой процедуре этой же формы. Такие переменные принято называть локальными в форме.
В случае, когда разрабатываемое приложение состоит из нескольких форм и в них используются одни и те же переменные, то эти общие для всех форм и процедур переменные следуют объявлять в разделе General Declarations программного модуля Module. Такие переменные называются глобальными в приложении.
В кратком и в систематизированном виде все изложенное выше приведено в следующей таблице.
Область видимости переменных и их объявление
Область видимости переменной
Место объявления
Глобальная в приложении
В разделе General Declarations программного модуля Module оператором Public
В разделе General Declarations формы оператором Dim или Public
Локальная в процедуре
В процедуре оператором Dim или Static
Классификация
Статическая и динамическая типизация переменных
Статическая типизация — приём, широко используемый в языках программирования, при котором переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа). Примеры статически типизированных языков — Ада, С++, D, Java, ML, Паскаль.
Динамическая типизация — приём, широко используемый в языках программирования и языках спецификации, при котором переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Таким образом, в различных участках программы одна и та же переменная может принимать значения разных типов. Примеры языков с динамической типизацией — Smalltalk, Python, Objective-C, Ruby, PHP, Perl, JavaScript, Lisp, xBase, Erlang.
В некоторых языках со слабой динамической типизацией стоит проблема сравнения величин, так, например, PHP имеет операции сравнения «==», «!=» и «===», «!==», где вторая пара операций сравнивает и значения, и типы переменных. Операция «===» даёт true только при полном совпадении, в отличие от «==», который считает верным такое выражение: (1==»1″). Стоит отметить, что это проблема не динамической типизации в целом, а конкретных языков программирования.
Если тип данных определяется на этапе компиляции, имеет место статическая типизация, а если на этапе выполнения программы — динамическая. В последнем случае иногда говорят, что переменная не имеет типа, хотя данные, содержащиеся в ней, безусловно, относятся к определённому типу данных, но выясняется это уже во время выполнения программы.
В большинстве случаев статическая типизация позволяет уменьшить затраты ресурсов при выполнении программы, поскольку для динамической типизации требуются затраты ресурсов на выяснение типов данных и их приведение в выражениях со смешанными типами. Статическая типизация позволяет проводить проверку типов на этапе компиляции программы. Это также упрощает обнаружение ошибок ещё на этапе разработки, когда их исправление обходится менее дорого.
Тем не менее, во многих случаях необходимо применение динамической типизации. Например, необходимость поддержания совместимости при переходе на новый формат представления данных (например, старая часть проекта посылает процедуре дату символьной строкой, а новые объекты используют более современный числовой тип).
Статические и динамические переменные
Адрес поименованной ячейки памяти также может определяться как на этапе компиляции, так и во время выполнения программы. По времени создания переменные бывают статическими и динамическими. Первые создаются в момент запуска программы или подпрограммы, а вторые создаются в процессе выполнения программы.
Динамическая адресация нужна только тогда, когда количество поступающих на хранение данных заранее точно не известно. Такие данные размещают в специальных динамических структурах, тип которой выбирается в соответствии со спецификой задачи и с возможностями выбранной системы программирования. Это может быть стек, куча, очередь и т. п. Даже файл, в том смысле, который заложил Н. Вирт в Паскаль, является динамической структурой.
Локальные и глобальные переменные. Области видимости
По зоне видимости различают локальные и глобальные переменные. Первые доступны только конкретной подпрограмме, вторые — всей программе. С распространением модульного и объектного программирования, появились ещё и общие переменные (доступные для определённых уровней иерархии подпрограмм). Область видимости иногда задаётся классом памяти. Ограничение видимости может производиться путём введения пространств имён.
Ограничение зоны видимости придумали как для возможности использовать одинаковые имена переменных (что разумно, когда в разных подпрограммах переменные выполняют похожую функцию), так и для защиты от ошибок, связанных с неправомерным использованием переменных (правда, для этого программист должен владеть и пользоваться соответствующей логикой при структуризации данных).
Простые и сложные переменные
По наличию внутренней структуры, переменные могут быть простыми или сложными (составными).
Простые переменные не имеют внутренней структуры, доступной для адресации. Последняя оговорка важна потому, что для компилятора или процессора переменная может быть сколь угодно сложной, но конкретная система (язык) программирования скрывает от программиста её внутреннюю структуру, позволяя адресоваться только «в целом».
Рассмотрим подробнее простой тип.
Простым типом в информатике называют тип данных, о объектах которого, переменных или постоянных, можно сказать следующее:
Создание переносимого кода (кода, результат компилирования/интерпретации которого разными трансляторами одинаков на разных платформах) возможно, если не пытаться интерпретировать значения простых типов. Например, на разных платформах числа могут отличаться основанием системы счисления, разрядностью, порядком байт, форматом представления. При работе форматами представления чисел код выполняется быстрее, но переносимость теряется.
Как правило, к простым относятся числовые типы:
Введение простых типов преследовало несколько целей:
Большинство языков программирования содержат предопределённые функции для работы с простыми типами:
Некоторые языки (например, C и C++) не ограничивают программиста в выборе способа обработки значений простых типов, даже позволяют определить поля для простого типа.
Сложные переменные программист создаёт для хранения данных, имеющих внутреннюю структуру. Соответственно, есть возможность обратиться напрямую к любому элементу.
Самыми характерными примерами сложных типов являются массив (все элементы однотипные) и запись (элементы могут иметь разный тип).
Следует подчеркнуть относительность такого деления: для разных программ одна и та же переменная может иметь разную структуру.
Например, компилятор различает в переменной вещественного типа 4 поля: знаки мантиссы и порядка, плюс их значения, но для программиста, компилирующего свою программу, вещественная переменная — единая ячейка памяти, хранящая вещественное число.
Рассмотрим подробнее сложный тип.
Сложный (составной) тип — тип данных, объекты (переменные или постоянные) которого имеют внутреннюю структуру, доступную программисту.
В разных языках программирования набор базовых сложных типов может несколько отличаться (чаще по названию и деталям реализации). Есть, однако, объективные критерии — однотипность элементов и способ доступа, позволяющие выделить главные представители сложных типов (названия приводятся на примере Pascal, в котором Н.Вирт наиболее чётко сформулировал эти идеи).
Разумеется, этот список не включает даже всех предопределённых в языках типов, но он отражает большинство моделируемых программистами структур данных.
Очень важной идеей, также родившейся на границе 60-70-х годов XX века, является возможность произвольного конструирования нужных структур из небольшого набора предопределённых типов. Чем адекватнее программист смоделировал обрабатываемые данные в рамках такого «конструктора», тем безошибочнее и долговечнее будет разработанная программа.
Переменные на примере языка Visual Basic
VBA поддерживает несколько ограничений в именовании переменных:
Определение типов данных
Чтобы в тексте программы распознать тип данных переменной или константы можно использовать стандартную приставку (префикс) в нижнем регистре в названии переменной в соответствии с приведенной таблицей.



