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

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

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

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

Добавлен: 05.04.2023

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

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

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

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

Необходимо заметить, что все перечисленные недостатки языка вовсе не проявляются или даже могут стать достоинствами при обучении алгоритмизации и программированию. Также, основным языком программирования в 70-х годах был Фортран, который обладал гораздо более существенными неточностями и недостатками, а Паскаль представлял при этом собой значительный шаг вперед.[9]

Автор языка понимал также недостатки созданного языка, перестал его модернизировать и разработал языки Оберон и Модула-2.

Тем не менее, все достоинства языка заставляли коммерческие и некоммерческие фирмы разрабатывать системы для программирования на основе Паскаля.

Из числа последних сильно выделяется фирма Borland, язык Turbo Pascal которой был сильно расширен, были устранены разные недостатки языка, добавлены возможности. Язык стал значительно богаче, но одновременно, он потерял переносимость.

Важным этапом в развитии языка, считается появление свободного языка Паскаль версии GNU Pascal, который не лишь вобрал в себя все черты других Паскалей, позволил наконец полностью отказываться от «грязных» методик программирования, особенно присущих, Turbo Pascal, а и обеспечил черезвычайно большую портабельность написанных программ (более 25 различных платформ, под 10 различными ОС).

В нынешний момент пользуются популярностью такие версии языка:

– Free Pascal;

– TMT Pascal;

– GNU Pascal.

Также продолжает использоваться Borland Pascal. Развитием этого языка является Object Pascal – следующая версия языка Паскаль, которая расширенная методами объектно-ориентированного программирования. Нынешние версии Borland Pascal лежат в основе интегрированной среды программирования Delphi.[18]

Отметим, что в России разработан язык Глагол, который имеет очень близкую к Паскалю типологию, но в отличие от него сначала спроектирован на применение только русских слов.

2.2.Понятие переменной

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


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

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

Формат:

Var

<идентификатор> : <тип>;

Пример:

var

А, В : integer;

Summa : real;

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

Кроме констант и переменных существуют так называемые типизированные константы, которые являются своеобразным промежуточным звеном между переменными и константами. Слово «константа» означает, что данные этого типа описываются в разделе const, а слово «типизированная» указывает, что для них должен указываться и тип, как у переменных.

Программа формируется из некоторых предложений, состоящих из разделителей и лексем, которые формируются в свою очередь из конечного набора букв, образующих алфавит языка. Этот язык состоит из латинских букв (прописных – А, … , Z, строчных – а, …, z), арабских цифр (0, … ,9) и специальных символов.[2]

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

Другими словами, регистры при написании программ никакой роли не играют. Разделителями между словами являются:[14]

  • пробелы;

–символы конца строки;

– точка с запятой;

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

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

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

Рассмотрим правила составления названий переменных: [11]

  • переменные начинаются с буквы, или же знака подчеркивания;

– содержит лишь буквы, цифры, знак подчеркивания;

– между двумя разными переменными должен быть разделитель;


– максимальная длина переменной 127 символов;

– все символы являются значимыми;

– переменная не должна повторять зарезервированные слова.

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

Примеры названия переменных: x, s1, s23, as_d_sd46.

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

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

– все типы данных определяют совокупность значений, к которой принадлежит константа, что может принимать выражение и переменная или выработать операция и функция;

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

– все операции и функции требуют аргументов фиксированного типа и выдают результаты фиксированного типа.

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

Тип данных определяет:

– все возможные значения переменных, функций, выражений, констант, принадлежащих к типу;

– внутренние формы представления данных в ПК;

– операции и функции, что могут быть выполнены над величинами, что принадлежат к данному типу.[13]

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

В языке Паскаль существуют скалярные, структурированные типы.

К cкалярным форматам относятся стандартные типы, а таккже типы, определяемые пользователями.

Стандартные типы данных включают целые, символьный, действительные, логические и адресный тип. Типы, определяемые пользователем, – это перечисляемый и интервальный.

Все структурированные типы имеют 4 разновидности:

– массивы;

– записи;

– множества;

– файлы.


Кроме перечисленных, Паскаль включает еще 2 типа - процедурный и объектный.

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

– все возможные значения для порядкового типа представляются ограниченным упорядоченным множеством;

– к любому порядковому типу данных может быть применена функция Ord, что в качестве результата дает порядковый номер для конкретного значения в типе данных;

– к порядковому типу могут применяться стандартные функции Pred, Succ, что возвращают предыдущее, а также последующее значения соответственно;

– для любого порядкового типа могут применяться стандартные функции High и Low, которые возвращают наибольшее и наименьшее значения величин указанного типа.

Также в языке Паскаль введены понятия совместимости и эквивалентности типов.

Два типа данных Т1 и Т2 называются эквивалентными (идентичными), когда выполняется одно из следующих условий:

– Т1 и Т2 представляют собой одно и то же имя формата;

– тип Т2 описанный с применением типа Т1 при помощи равенства или последовательности равенств.

К примеру,

type

T1 = Integer;

T2 = T1;

T3 = T2;

Менее строгие ограничения определяются совместимостью типов. Например, типы данных являются совместимыми, когда:[17]

– являются оба целыми ибо действительными;

– оба интервальные с общим базовым;

– они эквивалентны;

– один тип - интервальный, а другой – базовый;

– один тип - строковый, иной - символьный.

Приведение типов дает возможность рассматривать одну и ту же величину данных в памяти ПК как принадлежащую совсем разным типам.

Для этого применияется конструкция

Имя_Типа(переменные или значения).

Напрмер,

Integer('В')

представляет собой значение для кода символа 'В' в двухбайтном представлении целого числа.

2.3. Пример использования переменных в указателях

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

Указатель в Паскале – это переменная, что содержит адрес объекта для определённого базового типа.

В определении ссылочного типа применяется базовый тип, перед ним ставится знак указателя, - символ '^'.


Приведем пример:

Type

m = array[1..10] of integer; {определение базового типа}

pm = ^m; {указатель на массив}

pin = ^integer; {указатель на целое число}

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

Приведем пример:

Type

pm = ^m;

m = array[1..10] of integer;

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

Var

p11, p12: pin;

m1: ^mas;

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

Если в программе объявлена переменная, например:

Var

а: integer;

то для обращения по её имени к этой переменной мы получим содержимое данной переменной.

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

p1 := @a;

В результате образуется такая связь:

p1 а

Рисунок 2 – Созданная связь

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

var

С: array[1..15] of integer;

то обращение @С[j] имеет смысл указателя на j-ое целое число в массиве С и также участвует в присваивании:

p := @С[j];

3.2. Особенности в использовании указателей

Базовым типом ссылочного типа может быть абсолютно любой тип данных, даже и ссылочный, по этой причине допустимо определение типа "указатель на указатель". К примеру, для объявленного ранее ссылочного типа pin можно записать:

var

pp: ^pin;

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

pp := @p1;

Образовавшиеся связи после этого выглядят так:[16]

pp1 p1 i

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