Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

В XX веке появились языки программирования, а вместе с ними и переменная. Времена менялись, вместе с потребностью того или иного языка программирования, но едино необходимой была и есть переменная. Именно этот фактор и повлиял на выбор темы для курсовой работы, которая безусловно является актуальной на сегодняшний день. Так как переменная была и е есть способом хранения и отображения информации. Предметом моей курсовой работы являются наиболее востребованные языки программирования т.к. все они используют переменную. В этой курсовой работе я покажу роль переменной в программировании. Разберу виды и типы переменных.

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

Во второй главе описываются основные атрибуты переменных. Значение и характеристика этих атрибут. А так же способы их написания и отображения в разных языках программирования.

В третей главе показаны способы задания переменных в Java и в Perl. А так же установлены их некоторые отличия.

Программирование, переменная как понятие

Прежде чем переходить к понятию переменной, разберёмся в понятии программирование.

Программирование – раздел информатики, занимающийся разработкой средств решения задач на компьютере и созданием программного обеспечения, с помощю которого реализуется вычислительный процесс и обмен информацией с внешним миром. В настоящее время количество языков программирования огромно. В конструкциях различных языков программирования много общего, они классифицируются по своим возможностям, конструктивным особенностям и сферам применения.[1]

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

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

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

— процедурно-ориентированные — алгоритмы;

— объектно-ориентированные — классы и объекты;

— логически-ориентированные — цели, выраженные в исчислении предикатов;

— ориентированные на правила — правила «если…, то…»;

— ориентированные на ограничения — инвариантные соотношения;

— параллельное программирование — потоки данных.[4]

В силу того, что термин «парадигма программирования» определяется достаточно абстрактно, то и классификации парадигм программирования строятся в основном на основе признаков, важных автору классификации в соответствии с классами решаемых задач конкретной предметной области.[5]

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

В широком смысле переменная – это объект данных, который явным образом определён и именован в программе. Простая переменная – это именованный элементарный объект данных.[7]

Понтию «переменная» предшествует понятие «объект данных». Объект данных представляет собой контейнер для значений данных. Это участок памяти, в котором данные хранятся. Каждому объекту данных присущи атрибуты, самым важным из которых является тип данных. Атрибут определяет сколько и каких значений может быть сохранено в объекте данных. Каждому объекту данных характерны такие связывания, как местоположение, значение, имя. Эти связывания могут динамически меняться в процессе выполнения программы.[8]

Алгоритм — строго однозначно определенная для исполнителя последовательность действий, приводящих к решению задач.[9]

Из истории программирования

Основоположником программирования можно считать английского математика Чарлза Бэббиджа (1791 – 1871 гг.). В 20-х годах XІX века ему пришла идея создать такую механическую машину для вычисления, что порядок её действия можно было предварительно записать и в последствии выполнять эти действия на машине автоматически.

Также у истоков программирования стояла Ада Лавлейс, дочь английского поэта Ч.Г. Байрона. Она стала ближайшей помощницей и сподвижницей Бэббиджа, разработала некоторые приёмы управления последовательностью вычислений, описала одну из важнейших конструкций практически любого современного языка программирования - цикл. Аду Лавлейс по праву считают первым в мире программистом.[10] Разработки Ады Лавлейс используются и в современной вычислительной технике.

В середине XІX века британский математик ввёл новую математическую логику. Логические операторы И, ИЛИ и НЕ осуществляют связи в логическом высказывании и благодаря этому дают возможность развиваться новым высказывания. Эта логика, известная как алгебра Буля, лежит в основе компьютерной обработки информации.[11]

Программирование на языках появилось одновременно с вычисли-

тельными машинами. Конрад фон Цузе, построивший первую в мире серию программно-управляемых вычислительных машин (Германия, 1938–1944 г.), сразу же создал язык Plankalkul для записи программ. Квалифицированные сотрудники писали программы на этом языке, а техники затем вручную переводили их в машинные коды.[12]

Попыток классифицировать языки программирования принималось много, например, в книге Т.Пратта и М.Зелковича языки программирования разделены на четыре группы: императивные; аппликативные; основанные на системах правил; объектно-ориентированные.[13]

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

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

Переменная в языках программирования

Переменная, на ряду с условной логикой, является одним из ключевых факторов мощи и гибкости компьютерных программ. Если рассматривать переменную как «ведро», на котором написано имя, а внутри лежит такое значение в которых лежат имена других вёдер, числа и строки, объекты… и вообще практически любые разновидности этой аналогии, которые только можно себе представить.[14]

Понятие «переменная» в языках программирования отличается от общепринятого в математике.[15] В математике переменная, обозначаемая каким-нибудь именем из одного или нескольких символов, представляет (обозначает) собой некоторое значение из заранее оговоренного множества допустимых величин. В языках программирования понятие переменной имеет аналогичный смысл, но не идентичный – это контейнер для хранения данных.[16] Переменная – это программный объект, способный принимать некоторые значения с помощю оператора присваивания.[17] Данные, которые могут храниться в переменной, называют значениями этой переменной.[18]

Помимо математики переменная существует так же и в физике. Но переменная в физике – способ записи физической величины, а в информатике – способ записи, начиная с которого в памяти компьютера хранится текущее значение величины. Например, в математике и физике выражение S = A×B означает, что некая величина S прямо пропорциональна произведению неких величин A и B. В информатике оператор S = A*B означает иное:

- взять значение, хранящееся в ячейке, номер которой соответствует имени А;

- взять значение, хранящееся в ячейке, номер которой соответствует имени В;

- перемножить оба значения и результат поместить в ячейку, номер которой соответствует имени S.

На этапе трансляции вместо имён переменных представляются числовые адреса ячеек памяти. Эти адреса могут быть абсолютными или относительными. Если адрес задан числовым значением, то программу можно исполнять непосредственно. Такие программы записывают в файлах с расширением имени .com. Их называют неперемещаемыми (нерелоцируемыми) программами. Они способны работать только в тех участках памяти, для которых были созданы.[19]

Мы уже знаем, что языки программирования делят на универсальные и специализированные. Переменная в различных языках программирования обозначается и проявляет себя по-разному. В языках программирования для доступа к данным используют символические адреса, представленные переменными.[20]

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

- имя;

- адрес;

- значение;

- тип;

- время жизни;

- область видимости.

2.1. Имя переменной (идентификатор)

Имя переменной (идентификатор) – это идентификатор, используемый в программах для ссылки на значение переменной.[21] Каждая переменная должна иметь уникальное имя в программе, состоящее из латинских букв, цифр и знаков подчёркивания.[22] Связывание объекта данных с одним или несколькими именами, с помощю которых можно ссылаться на объект данных, осуществляется при помощи объявлений и может изменяться при входе и выходе из подпрограмм (блоков).[23] В большинстве языков первым символом в имени может быть либо буква, либо знак подчёркивания. В названии переменной может так же присутствовать символ $. В некоторых языках имена переменных не должны совпадать с зарезервированными ключевыми словами используемого языка. Пример правильных имён теременных: myname, myName, _myname, my_Name, myName134, $myname.

В HTML же перед именем переменной обязательно пишется $. По существу, префикс $ в имени переменной языка HTML указывает интерпретатору, что он имеет дело с переменной, а не чем-либо иным. Поэтому в имени переменной допустимы и ключевые слова языка, такие как if, else, while и т.д.[24]

При указании имени переменной важно учитывать регистр букв: strName и strname – разные переменные. В программе переменные объявляются с помощю ключевого слова, характерного для языка написания. Можно объявить сразу несколько переменных, указав их через запятую.[25]

Имя, соответствующее указанным правилам, может быть каким угодно. Однако желательно, чтобы оно отражало суть содержащихся в соответствующей переменной значений и/или цель её использования. Нередко первый символ в имени переменной указывает на её тип. Не редко первый символ имени переменной указывает на её тип. Вы можете придумать свой стиль образования имён переменных. Важно лишь то, чтобы он был понятен хотя бы вам самим. Тем не менее профессиональные программисты JavaScript не рекомендуют.[26] Но в отличии от PHP язык JavaScript является полностью регистрозависимым.

В языке 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]

Глобальные переменные используйся в тех случаях, когда их значения должны быть доступны одновременно нескольким функциям. В процедурно-ориентированных программах глобальные переменные содержат наиболее важную информацию, используемую программой. Тем не менее, всеобщая доступность глобальных переменных имеет и негативную сторону: они не защищены от несанкционированного и некорректного доступа со стороны функций. В программах, написанных с применением объектно-ориентированного подхода, необходимость в глобальных переменных гораздо меньше.[56]

Следует помнить, что если существует две переменные с одинаковыми именами: одна – глобальная, другая – локальная, то при обращении по этому имени будет получен доступ к локальной переменной. Одноимённая глобальная переменная будет «замаскирована» своей локальной «тезкой».[57]

Всем знаком совет избегать глобальных переменных. Это дельный совет, поскольку довольно трудно отследить, где и как они используются. Из-за «загрязнения пространства имён» (создания нескольких имён, которые могут конфликтовать с вашими локальными переменными) код может изменить глобальную переменную тогда, когда создатель планировал изменить локальную и наоборот. [58]

Время жизни переменных

Время жизни переменной начинается в момент связывания её с определённой областью памяти и заканчивается при разрыве этой связи.

В зависимости от времени жизни все переменные можно разделить на четыре категории.

Это статистические переменные. Они связываются с областью памяти во время трансляции программы и остаются связанными с этой областью до конца выполнения программы. Глобальные переменные и переменные объявляемые в подпрограммах, которые должны сохранять своё значение между отдельными выполняемыми подпрограммами, реализуются как статистические переменные.[59]

Статическую переменную, так же, как и любую другую, можно инициализировать при объявлении. Замечательное свойство таких переменных заключается в том, что они сохраняют своё значение по окончанию работы функции. При очередном вызове используется оставшееся после предыдущей работы значение. В то же время статические переменные зачищены от изменений извне. Одним из традиционных применений статических переменных является использование их в качестве счётчиков для сбора различной статистической информации о вызове функции, например, о количестве вызовов.[60]

Автоматические переменные являются локальными по отношению к блоку и хранятся внутри того блока, где они написаны. Их можно инициализировать произвольными выражениям. Автоматические объекты существуют только во время выполнения данного блока и теряют свои значения при выходе из него. При каждом вхождении в блок им присваиваются начальные значения, заданные в описании. Если начальные значения не заданы, то значения автоматических объектов при входе в блок не определены.[61]

Явные динамические переменные – это переменные, которые связываются с соответствующей областью памяти во время выполнения программы при обработке оператора создания новых объектов, такого, как оператор new в языке C++, использующего в качестве операнда тип задаваемой переменной. Так же, как и автоматические переменные, явные динамические переменные связываются с типом статически. При выполнении оператора создания новой переменной создаётся явная динамическая переменная, имеющая тип операнда, и возвращается указатель на неё.

Неявные динамические переменные – это переменные, которые связываются с соответствующей областью памяти только при присвоении им значений. Время жизни неявной динамической переменной определяется с момента присвоения этой переменной значения до момента присваивания ей нового значения.[62]

Область видимости переменных

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

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

Модуль. Область видимости – все процедуры модуля, в котором переменная объявлена.

Проект. Область видимости – все процедуры модулей активного проекта.[63]

Правила видимости переменных переделяют, каким образом ссылки на переменные, объявленные вне выполняющейся в данный момент подпрограммы (блока), связанны с объявлениями этих переменных. Такое связывание называется ассоциацией и может быть представлено в виде пары, состоящей из идентификатора и связанного с ним объекта данных.[64]

Программисты часто допускают ошибку забывая об области видимости переменных, поэтому, если не помнить принципы её работы, это поможет в отладке некоторых весьма неочевидных ошибок программного ода. Достаточно сказать, что, если вы не объявили переменную каким-нибудь особым образом, её область видимости ограничена локальным пространством: либо в пределах кода текущей функции, либо в пределах кода, на принадлежащего никаким функциям, в зависимости от того, где эта переменная была впервые создана, или где к ней впервые был получен доступ, внутри функции, или за её пределами.[65]

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

Многие языки программирования предлагают несколько уровней видимости и доступа, включая область видимости модуля, класса, функции и блока.[67]

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

Динамическая область видимости имён, реализованная в таких языках программирования, как APL и Snobol, представляет собой множество активаций подпрограмм, в которых активации идентификаторов видимы во время выполнения программы. Динамическая область видимости имён опирается не на пространственную взаимосвязь подпрограмм, а на последовательность их вызовов. [68]

Можно сделать вывод, что основными атрибутами любой переменной являются: имя, адрес, значение, тип, время жизни, область видимости.

Имя переменной и является её индивидуальным идентификатором. Каждой переменной присваивается определённое значение. Семантический смысл заключается в типе переменой. Тип определяет то, какие именно данные хранятся в переменной. Переменная может располагаться в разных местах: внутри функции располагаются локальные переменные, вне функции – глобальные переменные, а некоторые переменные располагаются в определении параметров функции. Важную роль играют время жизни переменных и область видимости переменных. От этих атрибут зависит, как именно будут отображаться заданные переменные.

Переменные в Java и переменные в Perl

Чтобы показать, что переменная в разных языках программирования по-разному пишется и имеет разную область видимости можно привести сравнительную характеристику любых языков программирования. Я же для этой цели выбрала Java и Perl.

Perl предоставляет три типа переменных: скаляры (единственного числа), массивы (множественного числа) и хеши (именуемые также ассоциативными массивами, также множественного числа).[69]

В Java существуют примитивные переменные, переменная типа класс, переменная типа интерфейс, переменная типа “array of T” где T примитивный тип и где T ссылочный тип.

Что же касается Perl – это язык прощающий многие ошибки. Поэтому ну трудно написать программу на Perl, которая будет работать, но при этом делать совсем не то, для чего она предназначалась. Использование инструкции strict может навести порядок в программе при объявлении переменных перед их использованием.[70]

Переменная Perl является пакетной переменной, пока перед ней не будет стоять ключевое слово my, тогда она будет считаться лексической переменной, то есть переменной, которая определена внутри блока или файла, в котором она появляется. Пакет определяет пространство имён Perl. Например, в певременной по имени SWWW::Mechanize: :ех $ех — скалярная переменная из пакета WWW::Mechanize, где слово «пакет» используется в смысле пространства имен. Пакетная переменная определяется внутри пакета, в котором она появляется. Другие пакеты могут ссылаться на пакетные переменные путем использования полного имени переменной (например, SText::Wrap::columns).[71]

Когда в Java объявляются переменные, то нужно обязательно указывать их тип. Например: image, sum. В языке программирования Java, когда происходит запуск программы, то все объявленные в ней переменные привязываются к конкретным ячейкам памяти, и не могут менять ячейку до конца выполнения программы.

Что касается непосредственно объявления переменных в Java, то выполняется оно по следующим правилам. В первую очередь при объявлении переменной перед ее именем в обязательном порядке указывается идентификатор типа. Например, инструкцией int n объявляется переменная n целочисленного типа int. В качестве оператора присваивания в Java используется оператор =.[72]

В Java нужно сначала объявить саму переменную, а уж потом присваивать ей значение. А язык Perl не является строго типизированным. Переменные Perl начинают свое существование с присвоением им значения, их не нужно объявлять или инициализировать, хотя это могло бы сделать программу более понятной. [73]Вполне допускается следующий код:

$a = ‘Применить’;

$a = 12;

print $a;

Здесь переменная a сначала принимает значение строкового типа, а затем – числового.[74] В Java это недопустимо так как это может вызвать множество ошибок.

В Perl, чтобы заставить Perl требовать объявления переменных перед присваиванием им значений, в программу включается инструкция use strict. [75]

Что касается доступности переменных в Java, то она определяется блоком, в котором эта переменная объявлена. Блок, в свою очередь, выделяется парой фигурных скобок (то есть { и }).[76]

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

В Java, как и в С++, допускается динамическая инициализация переменных. При динамической инициализации значение переменной присваивается при объявлении, причем значением является выражение, содержащее другие переменные. Пример динамической инициализации переменной:

int a=3,b=4; int c=a*a+b*b;

В данном случае переменная c инициализируется выражением a*a+b*b, то есть получает значение 25. Главное и единственное условие для динамической инициализации — все переменные, входящие в соответствующее выражение, должны быть предварительно объявлены и им должны быть присвоены значения.[78]

В Perl массивы имеют упорядоченную структуру. Размер массива растет по мере необходимости. Если будет ссылка на неинициализированный элемент массива, например на элемент, выходящий за его пределы, Perl возвращает значение undef (не определен).[79]

Массивы в Java относятся к ссылочным типам и описываются своеобразно, но характерно для ссылочных типов. И описываются в три этапа.

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

Второй этап — определение (instantation). На этом этапе указывается количество элементов массива, называемое его длиной, выделяется место для массива в оперативной памяти, переменная-ссылка получает адрес массива. Все эти действия производятся еще одной операцией языка Java — операцией new тип, выделяющей участок в оперативной памяти для объекта, указанного в операции типа, и возвращающей в качестве результата адрес этого участка.

Третий этап — инициализация (initialization). На этом этапе элементы массива получают начальные значения.[80]

Массивы в Java всегда определяются динамически, хотя ссылки на них задаются статически.

В Perl все массивы одномерны, и их можно представлять себе как линейный список скаляров, называемых элементами массива, для ссылки на которые достаточно одного индекса. Массивы Perl хранят однотипные данные, как и в других языках программирования, но скаляр может быть числом или строкой. Поэтому с точки зрения других языков программирования в массивах Perl могут храниться разнотипные данные.[81]

В Perl и Java так же есть хэши. Хэш представляет собой массив, состоящий из пар "ключ-значение", при этом доступ к каждому значению записи осуществляется по ассоциированному с ним ключу.

В Perl Хэш можно представить как %имя_хэша, а доступ к его оnдельным элементам выполняется в форме $имя_хэша{выражение}.

Вот примеры хэшей:

$hash{1}="key1";

$hash{'myset'}="file.txt";

Хэш должен содержать четное количество элементов.

Для удаления элементов из хэша нужно воспользоваться функцией delete: delete($hash{1});

Чтобы выделить отдельные ключи и значения хэша, нужно воспользоваться функциями keys() и values() соответственно.[82]

В Java хэш используется, как составная часть в имени hash. В Java, хеш-код — это целочисленный результат работы метода, которому в качестве входного параметра передан объект. Хэш-значение используется как индекс в таблице, где хранится информация. Java предоставляет стандартный интерфейс к хэш-таблицам. Хэш-таблица из п элементов — это массив списков, средняя длина которых равна п/'(размер_массива). Хэш в Java ссылочным типом.

Следует сделать вывод о том, что переменная играет важную роль в программировании так как она является именованной частью памяти и основным элементом хранения информации. Переменные в каждом языке программирования задаются по-разному. Переменная в Java и переменная в Perl – это разные переменные. Язык Java чувствителен к регистру символов, в отличии от Perl в котором программа способна работать даже с ошибками. Также Java является строго типизированным, в отличии от Perl.

Исходя из множества отличий в Java и Perl можно сделать вывод, что переменные в Java могут по-разному себя проявлять, а в Perl динамические переменные.

ЗАКЛЮЧЕНИЕ

Переменная в программировании занимает значимое место так как играет роль идентификатора, который определяет данные. В процессе выполнения программы переменная может менять своё значение, это характеризует гибкость переменных. Информацию в переменной можно редактировать, хранить, извлечь. Переменная в программировании реализуется посредством языков программирования. Собственно, с появлением языков программирования появилась и сама переменная. Результатом работы над разными переменными является работа с данными.

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Босуэлл Д., Фаучер Т. Читаемый код, или Программирование как искусство / Д. Босуэлл, Т. Фаучер. – СПб.:Питер, 2012. – 2008 с.
  2. Будилов В.А. Интернет-программирование на Java / В.А. Будилов. – СПб.: БХВ-Петербург, 2003. – 704 с.
  3. Васильев А.Н. Java. Объектно-ориентированное программирование: Учебное пособие / А.Н. Васильев. — СПб.: Питер, 2011. — 400 с.
  4. Грошев А.С. Информатика. Учебник для вузов /А.С. Грошев. – Архангельск: Арханг. гос. техн. ун-т, 2010. – 470 с.
  5. Гурский Д. ActionScript 2: программирование во Flash MX 2004. Для профессионалов / Д.Гурский. – СПб.: Питер, 2004. – 1088 с.
  6. Дронов В.А. Macromedia Flash MX. Экспресс- курс / В.А. Дронов. – СПб.: БХВ-Петербург, 2003. – 352 с.
  7. Дронов В.А. Windows 8: разработка Metro-приложений для мобильных устройств / В. А. Дронов. – СПб.: БВХ-Петербург, 2012. – 528 с.
  8. Дунаев Д.Н. Виды задач линейного программирования, способы их решения // Наука и современность. – 2013. - №21. – С. 121-126.
  9. Дунаев В.В. web-программирование для всех / В.В. Дунаев. – СПб.:БХВ-Петербург, 2008. – 560 с.
  10. Дунаев В.В. HTML, скрипты и стили. 3 изд. перераб. и доп. / В.В. Дунаев. – СПб.: БХВ-Петербург, 2011. – 816 с.
  11. Иванов В. Microsoft Office System 2003: Учебный курс / В. Иванов. – СПб.: Питер; Киев: Издательская группа BHV, 2004. – 640 с.
  12. Иванов Н.Н. программирование в Linux/ самоучитель. – 2-е изд., перераб. и доп./ Н.Н. Иванов. – СПб.: БВХ-Петербург, 2012. – 400 с.
  13. Исмаилова С. Большая школьная энциклопедия / С. Исмаилова. – М.: Русское энциклопедическое товарищество, 2004. – 1216 с.
  14. Камаев В.А., Костерин В.В. Технологии программирования: Учебник /В.А. Камаев, В.В. Костерин. -М.: Высш. шк., 2005. – 359 с.
  15. Карабцев С.Н. Программирование на java. Учебное пособие / С.Н. Карабцев. - Кемерово : КемГУ, 2012. – 283 с.
  16. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Бейсик, Си, Паскаль. Самоучитель /Ю.Л. Кетков, А.Ю. Кет-ков. – СПб.: БВХ-Петербург, 2001. – 468 с.
  17. Кобелев И.А., Иванова Л.В., Чекушина В.Е. Два типа языков программирования // Современные проблемы науки и образования, 2014. - №4. – С. 16 – 24.
  18. Колисниченко Д.Н. PHP и MySQL. Разработка веб-приложений. – 5-е изд. перераб. и доп. / Д.Н. Колисниченко. – СПб.: БХВ-Петербург, 2015. – 592 с.
  19. Корниенко М.М., Иванова И.Д. Информатика. Основы алгоритмизации и программирования: Теоретические основы, примеры и задания, практические работы / М.М. Корниенко, Иванова И.Д. – Харьков: Издательство «Ра-нок», 2009. – 48 с.
  20. Кудрявцева И.А. Классификация парадигм программирования в контексте теоретического программирования // Известия Российского государственного педагогического университета им. А.И. Герцена, 2015. - №173. – С. 78 – 89.
  21. Лаптев В. C++. Экспресс-курс. Для начинающих программистов / В. Лаптев. – СПб.: БХВ-Петербург, 2004. – 512 с.
  22. Лафоре Р. Объектно-ориентированное программирование в C++. Классика Computer Science. 4-е изд. / Р. Лафоре. – СПб.: Питер, 2011. – 928 с.
  23. Магда Ю. С. UNIX / Ю.С. Магда. — СПб.: БХВ-Петербург, 2006. — 528 с.
  24. Могилёв А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления / А.В. Могилёв, Л.В. Листрова. – СП.:БХВ-Петербург, 2008. – 320 с.
  25. Непейвода Н.Н. Стили и методы программирования. Лекции 2004 г. / Н.Н. Непейвода. – М.-Ижевск: Институт компьютерных исследований, 2004. – 328 с.
  26. Никсон Р. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. / Р. Никсон. – СПб.: Питер, 2015. – 688 с.
  27. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – 480 с.
  28. Полубенцева М.И. C/C++. Процедурное программирование / М.И. Полубенцева. – СПб.: БВХ-Петербург, 2008. – 448 с.
  29. Прохоренюк Н.А., Дронов В.А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. - 4-е изд., перераб. И доп. / Н.А. Прохоренюк, В.А. Дронов. – СПб.: БХВ-Петербург, 2015. – 768 с.
  30. Симонович С.В. Информатика. Базовый курс: Учебник для вузов. 3-е изд. Стандарт третьего поколения / С.В. Симонович. – СПБ.: Питер. – 2011. – 640 с.
  31. Скляр Д., Трахенберг А. PHP. Рецепты программирования. 3-е изд. / Д. Скляю, А. Трахенберг. – СПб.: Питер, 2015. – 784 с.
  32. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — 880 с.
  33. Строительная информатика: учебное пособие / П.А. Акимов, Т.Б.Кайтуков, М.Л. Мозгалёва, В.Н. Сидоров. – М.: Издательство АСВ, 2014. – 432 с.
  34. Ташков П. Веб-мастеринг на 100%: Html, Css, Javascript, Php, Cms, Ajax, раскрутка / Ташков П. – СПб.:Питер, 2011. – 512 с.
  35. Усов В. Swift. Основы разработки приложений под iOS / В. Усов. – СПб.: Питер, 2015. – 300 с.
  36. Хаббибулин И.Ш. Java 7 / И.Ш. Хаббибулин. — СПб.: БХВ-Петербург, 2012. — 768 с.
  37. Шапошников И.В. PHP 5.1. Учебный курс / И.В. Шапошников. – СПБ.: Питер, 2007. – 192 с.
  1. Кобелев И.А., Иванова Л.В., Чекушина В.Е. Два типа языков программирования // Современные проблемы науки и образования, 2014. - №4. – С. 16-17.

  2. Кудрявцева И.А. Классификация парадигм программирования в контексте теоретического программирования // Известия Российского государственного педагогического университета им. А.И. Герцена, 2015. - №173. – С. 78.

  3. Камаев В.А., Костерин В.В. Технологии программирования: Учебник /В.А. Камаев, В.В. Костерин. -М.: Высш. шк., 2005. – С. 14.

  4. Камаев В.А., Костерин В.В. Технологии программирования: Учебник /В.А. Камаев, В.В. Костерин. -М.: Высшая школа, 2005. – С. 36-37.

  5. Кудрявцева И.А. Классификация парадигм программирования в контексте теоретического программирования // Известия Российского государственного педагогического университета им. А.И. Герцена, 2015. - №173. – С. 78.

  6. Камаев В.А., Костерин В.В. Технологии программирования: Учебник /В.А. Камаев, В.В. Костерин. -М.: Высшая школа, 2005. – С. 114-115.

  7. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 27.

  8. Гурский Д. ActionScript 2: программирование во Flash MX 2004. Для профессионалов / Д.Гурский. – СПб.: Питер, 2004. – С. 162.

  9. Камаев В.А., Костерин В.В. Технологии программирования: Учебник /В.А. Камаев, В.В. Костерин. - М.: Высшая школа, 2005. – С. 22.

  10. Могилёв а.В., Листрова Л.В. Методы программирования. Компьютерные вычисления / А.В. Могилёв, Л.В. Листрова. – СП.:БХВ-Петербург, 2008. – С. 11.

  11. Газаров А. Устранение неисправностей и ремонт ПК своими руками на 100% / А. Газаров. – М.: Питер, 2011. – С. 11.

  12. Непейвода Н.Н. Стили и методы программирования. Лекции 2004 г. / Н.Н. Непейвода. – М.-Ижевск: Институт компьютерных исследований, 2004. – С. 6.

  13. Кобелев И.А., Иванова Л.В., Чекушина В.Е. Два типа языков программирования // Современные проблемы науки и образования. – 2014. - №4. – С. 18.

  14. Скляр Д., Трахенберг А. PHP. Рецепты программирования. 3-е изд. / Д. Скляю, А. Трахенберг. – СПб.: Питер, 2015. – С. 259.

  15. Могилёв А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления / А.В. Могилёв, Л.В. Листрова. – СПб.: БХВ-Петербург, 2008. – С. 26.

  16. Дунаев В.В. web-программирование для всех / В.В. Дунаев. – СПб.:БХВ-Петербург, 2008. – С. 37.

  17. Могилёв А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления / А.В. Могилёв, Л.В. Ли-строва. – СПб.: БХВ-Петербург, 2008. – С. 26.

  18. Дунаев В.В. web-программирование для всех / В.В. Дунаев. – СПб.:БХВ-Петербург, 2008. – С. 37.

  19. Исмаилова С. Большая школьная энциклопедия / С. Исмаилова. – М.: Русское энциклопедическое товарищество, 2004. – С. 281.

  20. Исмаилова С. Большая школьная энциклопедия / С. Исмаилова. – М.: Русское энциклопедическое товарищество, 2004. – С. 281.

  21. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 27-28.

  22. Прохоренюк Н.А., Дронов В.А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. - 4-е изд., перераб. И доп. / Н.А. Прохоренюк, В.А. Дронов. – СПб.: БХВ-Петербург, 2015. – С. 148.

  23. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 29.

  24. Дунаев В.В. HTML, скрипты и стили. 3 изд. перераб. и доп. / В.В. Дунаев. – СПб.: БХВ-Петербург, 2011. – С. 648.

  25. Прохоренюк Н.А., Дронов В.А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. - 4-е изд., перераб. И доп. / Н.А. Прохоренюк, В.А. Дронов. – СПб.: БХВ-Петербург, 2015. – С. 148.

  26. Дунаев В.В. web-программирование для всех / В.В. Дунаев. – СПб.:БХВ-Петербург, 2008. – С. 100.

  27. Колисниченко Д.Н. PHP и MySQL. Разработка веб-приложений. – 5-е изд. перераб. и доп. / Д.Н. Колисниченко. – СПб.: БХВ-Петербург, 2015. – С. 571.

  28. Кобелев И.А., Иванова Л.В., Чекушина В.Е. Два типа языков программирования // Современные проблемы науки и образования. – 2014. - №4. – С. 20.

  29. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 28.

  30. Исмаилова С. Большая школьная энциклопедия / С. Исмаилова. – М.: Русское энциклопедическое товарищество, 2004. – С. 281.

  31. Грошев А.С. Информатика. Учебник для вузов /А.С. Грошев. – Архангельск: Арханг. гос. техн. ун-т, 2010. – С.372.

  32. Дронов В.А. Macromedia Flash MX. Экспресс- курс / В.А. Дронов. – СПб.: БХВ-Петербург, 2003. – С. 253.

  33. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Бейсик, Си, Паскаль. Самоучитель /Ю.Л. Кетков, А.Ю. Кетков. – СПб.: БВХ-Петербург, 2001. – С. 168.

  34. Карабцев С.Н. Программирование на java. Учебное пособие / С.Н. Карабцев. - Кемерово : КемГУ, 2012. – С. 39.

  35. Исмаилова С. Большая школьная энциклопедия / С. Исмаилова. – М.: Русское энциклопедическое товарищество, 2004. – С. 287.

  36. Полубенцева М.И. C/C++. Процедурное программирование / М.И. Полубенцева. – СПб.: БВХ-Петербург, 2008. – С. 108-109.

  37. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 28.

  38. Иванов Н.Н. программирование в Linux/ самоучитель. – 2-е изд., перераб. и доп./ Н.Н. Иванов. – СПб.: БВХ-Петербург, 2012. – С. 358.

  39. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 74.

  40. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 28.

  41. Могилёв А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления / А.В. Могилёв, Л.В. Ли-строва. – СПб.: БХВ-Петербург, 2008. – С. 26.

  42. Будилов В.А. Интернет-программирование на Java / В.А. Будилов. – СПб.: БХВ-Петербург, 2003. – С. 517.

  43. Исмаилова С. Большая школьная энциклопедия / С. Исмаилова. – М.: Русское энциклопедическое товарищество, 2004. – С. 281.

  44. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 28.

  45. Иванов Н.Н. программирование в Linux/ самоучитель. – 2-е изд., перераб. и доп./ Н.Н. Иванов. – СПб.: БВХ-Петербург, 2012. – С. 357.

  46. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 47.

  47. Строительная информатика: учебное пособие / П.А. Акимов, Т.Б.Кайтуков, М.Л. Мозгалёва, В.Н. Сидоров. – М.: Издательство АСВ, 2014. – С. 16 - 17.

  48. Симонович С.В. Информатика. Базовый курс: Учебник для вузов. 3-е изд. Стандарт третьего поколения / С.В. Симонович. – СПБ.: Питер. – 2011. – С. 598.

  49. Симонович С.В. Информатика. Базовый курс: Учебник для вузов. 3-е изд. Стандарт третьего поколения / С.В. Си-монович. – СПБ.: Питер. – 2011. – С. 599.

  50. Гурский Д. ActionScript 2: программирование во Flash MX 2004. Для профессионалов / Д.Гурский. – СПб.: Питер, 2004. – С. 163.

  51. Никсон Р. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. / Р. Никсон. – СПб.: Питер, 2015. – С. 87.

  52. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель. – СПб.: Притер, 2011. – С. 456.

  53. Никсон Р. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. / Р. Никсон. – СПб.: Питер, 2015. – С. 87.

  54. Лафоре Р. Объектно-ориентированное программирование в C++. Классика Computer Science. 4-е изд. / Р. Лафоре. – СПб.: Питер, 2011. - С. 206.

  55. Колисниченко Д.Н. Современный сайт на РНР и JavaScript / Д.Н. Колисниченко. – СПб.: Питер, 2009. – С. 115.

  56. Лафоре Р. Объектно-ориентированное программирование в C++. Классика Computer Science. 4-е изд. / Р. Лафоре. – СПб.: Питер, 2011. - С. 207.

  57. Дронов В.А. Windows 8: разработка Metro-приложений для мобильных устройств / В. А. Дронов. – СПб.: БВХ-Петербург, 2012. – С. 78.

  58. Босуэлл Д., Фаучер Т. Читаемый код, или Программирование как искусство / Д. Босуэлл, Т. Фаучер. – СПб.:Питер, 2012. – С. 115.

  59. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 39.

  60. Лаптев В. C++. Экспресс-курс. Для начинающих программистов / В. Лаптев. – СПб.: БХВ-Петербург, 2004. – С. 80.

  61. Могилёв А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления / А.В. Могилёв, Л.В. Ли-строва. – СПб.: БХВ-Петербург, 2008. – С. 161.

  62. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 39.

  63. Иванов В. Microsoft Office System 2003: Учебный курс / В. Иванов. – СПб.: Питер; Киев: Издательская группа BHV, 2004. – С. 611.

  64. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 40.

  65. Никсон Р. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. / Р. Никсон. – СПб.: Питер, 2015. – С. 86.

  66. Шапошников И.В. PHP 5.1. Учебный курс / И.В. Шапошников. – СПБ.: Питер, 2007. – С. 26.

  67. Босуэлл Д., Фаучер Т. Читаемый код, или Программирование как искусство / Д. Босуэлл, Т. Фаучер. – СПб.:Питер, 2012. – С. 115.

  68. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции / Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – С. 43.

  69. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — С. 512.

  70. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель. – СПб.: Питер, 2011. – С.505.

  71. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — С. 513.

  72. Васильев А.Н. Java. Объектно-ориентированное программирование: Учебное пособие / А.Н. Васильев. —

    СПб.: Питер, 2011. — С. 21.

  73. Переменные Perl начинают свое существование с присвоением им зна-чения, их не нужно объявлять или инициализировать, хотя это могло бы сделать программу более понятной.

  74. Ташков П. Веб-мастеринг на 100%: Html, Css, Javascript, Php, Cms, Ajax, раскрутка / Ташков П. – СПб.:Питер, 2011. – С. 274.

  75. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — С. 513.

  76. Васильев А.Н. Java. Объектно-ориентированное программирование: Учебное пособие / А.Н. Васильев. —

    СПб.: Питер, 2011. — С. 22.

  77. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — С. 515.

  78. Васильев А.Н. Java. Объектно-ориентированное программирование: Учебное пособие / А.Н. Васильев. —

    СПб.: Питер, 2011. — С. 25.

  79. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — С. 516.

  80. Хаббибулин И.Ш. Java 7 / И.Ш. Хаббибулин. — СПб.: БХВ-Петербург, 2012. — С. 67.

  81. Собель М. Linux. Администрирование и системное программирование. 2-е изд. / М. Собель — СПб.: Питер, 2011. — С. 519.

  82. Магда Ю. С. UNIX / Ю.С. Магда. — СПб.: БХВ-Петербург, 2006. — С. 484.