Что такое переменная как транслятор определяет тип переменной

Что такое переменная как транслятор определяет тип переменной

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

Причем, эти действия можно выполнять практически сколько угодно раз. Из названия ясно, что переменная – вещь непостоянная. Например, в языке программирования PHP переменные существуют или содержат в себе значение исключительно во время работы скрипта. Как только завершается исполнение скрипта, так и существование переменных прекращается. То есть при переходе с одной страницы web-сайта на другую, переменных и их значений прежней страницы уже нет. Это кроме случаев, когда нужные значения специально передаются другой странице.

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

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

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

Если раньше программы были небольшие и их исходный код располагался в одном файле, то сейчас текст кода может состоять из нескольких файлов. И запомнить уникальное имя каждой переменной, использующейся в программе, становится практически невозможным. Поэтому (и не только) было введено понятие области действия (или области существования) переменных. Область действия – понятие абстрактное. Это понятие применяется только в языках среднего и высокого уровней. Целью применения области действия является разделение пространства имен на несколько независимых частей. Так в программе могут существовать несколько переменных с одинаковыми именами и типами, не мешаю друг другу. Начинающему идея разделения области действия в пределах отдельных файлов исходного кода программы должна быть более понятна. Например, этот подход используется в PHP. Это означает, что переменная, объявленная в одном файле, может быть абсолютно недоступна в других файлах. Например, мы можем объявить переменную с именем MyVar в нескольких файлах проекта, и это не будет ошибкой.

Таким образом, переменная в программировании обладает следующими характеристиками:

Источник

Переменная

Переменная — это именованная область памяти для хранения данных, которые могут изменяться в процессе исполнения программы.

Имена и типы переменных указываются в разделе описаний и не могут изменяться в процессе выполнения программы.

Дискретные (можно перечислить возможные значения):

Вещественные (real, double, extended) — служат для представления действительных чисел с ограниченной точностью.

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

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

При выполнении оператора программа будет приостановлена, пока пользователь не наберет на клавиатуре значения и не нажмет клавишу «Enter». Затем введенные значения будут помещены в переменные, указанные как параметры процедуры ввода. Например, при выполнении оператора

компьютер будет ожидать ввода двух значений, которые затем будут помещены в переменные a и b.

Операторы read и readln отличаются тем, что во втором случае после ввода данных будет переведена строка, т.е. последующие сообщения компьютера будут выводиться с новой строки.

Оператор вывода нужен, чтобы компьютер показал результаты работы программы или какие-либо вспомогательные сообщения. В программе на Pascal он записывается следующим образом:

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

на экран будет выведена сумма переменных a и b, а также значение переменной c. Если нужно вывести на экран какое-либо текстовое сообщение, его нужно заключить в апострофы (одиночные кавычки):

Операторы write и writeln отличаются тем, что во втором случае после вывода данных будет переведена строка, т.е. последующие сообщения компьютера будут выводиться с новой строки.

Для того чтобы переменная получила или изменила свое значение, используется оператор присваивания. В Pascal он записывается следующим образом:

Тип переменной должен совпадать с типом выражения либо быть «более широким» совместимым (т.е. вещественной переменной можно присвоить значение целого выражения; строковой переменной можно присвоить значение символьного выражения).

Читайте также:  Что такое сглаживание в играх smaa

Компьютер сначала вычисляет значение выражения в правой части оператора присваивания, затем помещает его в переменную, указанную слева от символа присваивания «:=».

Например, при выполнении оператора

переменная x получит значение суммы переменных a и b. При выполнении оператора

значение переменной n увеличится на единицу.

Запомните! При присваивании переменной нового значения старое будет потеряно безвозвратно. Например, после выполнения операторов a := b;

обе переменные будут иметь одинаковые значения, равные тому, которое имела переменная b.

Рассмотрим, как составить простую программу, выполняющую какие-либо вычисления. Для этого нам нужно:

Рассмотрим простейший пример.

Разработать программу, вычисляющую длину окружности и площадь круга по известному радиусу.

1) Определим исходные данные и результаты задачи. В данном случае они явно указаны в условии: исходная величина — радиус, результаты — длина окружности и площадь круга. Используем для них традиционные обозначения: R, L и S, соответственно. Все эти переменные могут принимать как целые, так и дробные числовые значения, поэтому следует использовать вещественный тип данных, например, Real.

2) Математически задача описывается известными формулами:

3) Алгоритм в данном случае предельно прост:

4) При вычислениях нам (точнее, компьютеру) потребуется значение π. Вообще говоря, практически все реализации Pascal имеют встроенную константу PI, но мы объявим подобную константу самостоятельно.

Источник

Понятие переменной в программировании. Виды и типы переменных (Понятие Переменная в программировании)

Содержание:

Введение

В данной курсовой работе будет раскрыто понятие переменной, её виды и типы. Так же я затронул тему операторов присваивания, классификации и области действия переменных, в том числе на примере 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 поддерживает несколько ограничений в именовании переменных:

Определение типов данных

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

Источник

Информационный сайт