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

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

Содержание:

Введение

Язык программирования Pascal был создан в 1974 году швейцарским программистом Николасом Виртом и назван в честь французского физика, математика, философа Б. Паскаля (1624-1663), который являлся автором Паскалины – первой в мире суммирующей вычислительной машины (1642 год).

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

Вторая обеспечивала разработку конкретных представлений рассматриваемого языка, что были бы надежными и эффективными на современных ЭВМ.»

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

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

Объект исследования – теория языков программирования.

Предмет исследования – принципы применения переменной в программировании.

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

В соответствии с рассмотренной целью выделены задачи:

– рассмотреть основные понятия теории языков программирования;

– описать классификацию языков программирования;

– охарактеризовать язык программирования Паскаль;

– рассмотреть понятие переменной;

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

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

Проблему использования переменных изучали разные ученые: Н.Вирт, Дж.Соллоу, А.Пахомов, Д.Фаронов. Как результат исследования учеными были выпущены учебники и пособия по изучению языка Паскаль.

1.Основы теории языков программирования

1.1.Понятие языка программирования

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

Языки программирования – это формальные искусственные языки, которые имеют:[5]

– алфавит;

– синтаксис;

– семантику.

Алфавит – это набор символов, которые программисту разрешено использовать при написании программы.

Синтаксис – это система правил, которая предназначена для записи конструкции языка.

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

Все языки программирования применяются при написании программных продуктов для компьютеров (или ЭВМ – электронных вычислительных машин).

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

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

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

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

Но здесь речь идет только об специальных универсальных языках программирования, что нашли широкое применение для разработки программ в самых различных областях человеческой жизнедеятельности. Каждый из таких языков создавался для конкретных целей и имеет достоинства и недостатки. [10]

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

Знание всех концептуальных оснований теории языков программирования с точки зрения реализации и использования и базовых языковых конструкций позволяет:[15]

– более обоснованно выбирать язык программирования для создания конкретного проекта;

– разрабатывать эффективные алгоритмы;

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

– ускорить изучение самых новых языков программирования;

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

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

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

1.2. Парадигмы языков программирования

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

Рисунок 1 – Парадигмы программирования

Парадигма программирования – это совокупность методов, подходов, стратегий, понятий и идей, определяющая стиль создания программ.

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

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

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

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

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

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

Логическое программирование — это парадигма программирования, изучающая методы и возможности на выводе новых фактов согласно заданным логическим правилам. [16]

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

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

Planner применялся для того, чтоб понизить требования для вычислительных ресурсов и обеспечивать возможность вывода фактов, не используя стек. Далее был создан язык Prolog, который вовсе не требовал плана для перебора вариантов и также был, в этом смысле, некоторым упрощением языка Planner.[20]

Объектно-ориентированное программирование — парадигма программирования, для которой основными концепциями являются термины объектов и классов.

Класс – это тип, который описывает устройство объектов. Понятие класса подразумевает некоторое поведение или способ представления. Термин «объект» подразумевает нечто, что может обладать определённым поведением или способом представления. Говорят также, что объект – экземпляр класса. Класс также можно сравнить с неким чертежом, согласно которому и создаются объекты. Обычно все классы разрабатывают так, чтобы их объекты также соответствовали объектам из предметной области.

1.3.Классификация языков программирования

Рассмотрим классификацию языков программирования в разрезе их поколений.

  1. Поколение 1GL. Сюда относятся, языки низкого уровня - бинарные языки процессоров, представляющие набор (алфавит) команд, которые записаны в двоичном коде, которые данный процессор выполняет непосредственно или сразу подать на арифметическо-логическое устройство центрального процессора.
  2. Поколение 2GL. К этому поколению относятся системные языки, ассемблеры, автокоды, языки среднего уровня, языки, понятные человеку и переводимые в языки низкого уровня, машинный двоичный код. Само программирование на 2GL производительнее, чем в 1GL, поскольку более удобны они для человеческого восприятия. [12]
  3. Поколение 3GL – это языки высокого уровня – текстовые языки, которые приближенные по словарю и своему синтаксису к человеческому языку, позволяющие записывать конструкции в форме, что является удобной для человеческого мышления, подобные обычному тексту. Программирование на 3GL производительнее, чем для 2GL, поскольку более удобны для восприятия и короче ассемблерных.
  4. Поколение 4GL – языки визуального программирования для составления блок-схем, позволяющие отображать разные алгоритмы в проектах, что значительно облегчает создание, а также анализ алгоритмов.
  5. Поколение 5GL – это интеллектуальные языки программирования, которые позволяют передавать функцию создания алгоритма компьютеру, а за программистом остается лишь постановка задачи. Программирование на языках этого поколения на порядок производительнее, нежели на 4GL.[8]

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

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

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

2.Понятие переменной. Применение переменных на языке Паскаль

2.1. Понятие о языке Паскаль

Язык программирования Паскаль был разработан Никлаусом Виртом в институте информатики (Цюрих, Швейцария). Первоначальная цель для разработки языка – необходимость тренажера для изучения программирования. Однако очень скоро наблюдалась чрезвычайная эффективность языка в самых разных приложениях: от решения небольших математических задач до разработки сложнейших программных систем - баз данных, компиляторов, операционных систем и прочее.

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

Название языку Н.Вирт дал в честь выдающегося ученого Блеза Паскаля. Стоит отметить, что первоначально язык компилировался подобно языку Java в байт-код.

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

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

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

http://tipidannih.narod.ru/ssilochnij.files/image002.gif

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

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

var

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

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

p := @С[j];

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

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

var

pp: ^pin;

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

pp := @p1;

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

pp1 p1 i

http://tipidannih.narod.ru/ssilochnij.files/image003.gif

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

Такой указатель обозначается словом nil и присваивается любой ссылочной переменной.

Для выполнении операции присваивания записывается код:

p := nil;

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

Над ссылочными переменными допускаются всего 3 операции: проверка на неравенство и равенство. Эти операции проверяют, могут ли ссылаться два указателя на одну переменную, и обозначаются символами '=', '<>':

in := p11=p12;

if p11 <> nil then ...

Существует также 2 способа доступа к имеющимся переменным.

Первый способ – это обращение к переменной с помощью её имени, так называемый прямой способ.

Второй – обращение по переменной к её адресу, которая содержится в указателе. Этот способ доступа называют косвенным.[3]

Для обращения к переменным по их адресу, что находится в ссылочных переменных, используют операцию "разыменование".

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

i := i + 1;

p^ := p^ + 1;

полностью идентичны и выполняют аналогические действие.

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

В таком случае "указателя на указатель" возможно применять многократное разыменование:

pp1^^

Разыменование ссылочных переменных, значением которой является nill, является недопустимым, поскольку в данном случае не существует переменных, на которые ссылается указатель.[14]

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

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

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

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

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

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

– область памяти для которой размещается программный код программы;

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

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

Для создания динамической переменной используется процедура New.

Основным параметром данной процедуры считают переменную ссылочного типа:

New(p);

При выполнении такого оператора:

1) в динамической памяти выделяется место для переменной целого типа;[8]

2) ссылочной переменной p присваивается указатель на организованную динамическую переменную.

В результате получим динамическую переменную. Поскольку имени (идентификатора) она не имеет, поэтому прямое обращение к ней просто невозможно. Один способ, это косвенное обращение к ней путём разыменования переменной p, содержащей указатель на эту динамическую переменную:[13]

p^ := 28;

Процедура New применяется также в функциональной форме:[7]

p := New(pin);

В данном случае параметром New будет ссылочный тип.

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

Освобождение динамических переменных осуществляется при помощи процедуры Dispose, в которой параметром является ссылочная переменная, что содержит ссылку на удаляемую переменную:

Dispose(p);

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

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

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

MaxAvail: longint;

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

MemAvail: longint;

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

Рассмотрим программу, которая с помощью ссылочного типа данных выводит коды символов

Program P1;

Uses Crt;

Var

p: ^char;

j: byte;

Begin

clrscr;

new(p);

for j:=0 to 255 do

begin

p^:=chr(j);

write(j:3,'=',p^);

end;

dispose(p);

repeat until keypressed;

End.

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

Заключение

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

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

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

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

Со временем фирма Borland завершила линию продуктов языка Турбо Паскаль и перешла к созданию системы визуальной разработки для ОС Windows - Delphi.

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

В работе были реализованы задачи:

– рассмотрены основные понятия теории языков программирования;

– описана классификация языков программирования;

– охарактеризован язык программирования Паскаль;

– рассмотрено понятие переменной;

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

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

Список литературы

  1. Абрамов В. Г. Введение в язык паскаль. - М.: Наука, 2013. - 320 c.
  2. Андреева Т. А. Программирование на языке Pascal. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2013. - 240 c.
  3. Арсак Ж. Программирование игр и головоломок. - М.: Главная редакция физико-математической литературы издательства "Наука", 2016. - 224 c.
  4. Аручиди, Н. А. Компьютер в работе бухгалтера. - М.: Феникс, 2016. - 368 c.
  5. Гагарина Л. Г. Компьютерный практикум для менеджеров. - М.: Финансы и статистика, 2014. - 352 c.
  6. Грызлов В. И. Турбо Паскаль 7.0. - М.: ДМК, 2016. - 416 c.
  7. Епанешников А. М. Программирование в среде Turbo Pascal 7.0. - М.: Диалог-Мифи, 2013. - 368 c.
  8. Зеленяк О. П. Современный задачник по Турбо Паскалю. - М.: ДМК Пресс, 2014. - 312 c.
  9. Карпов А.В. Постановка и автоматизация управленческого учета. - М.: Результат и качество, 2014. - 504 c.
  10. Касторнова В. А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль. - М.: БХВ-Петербург, 2016. - 304 c.
  11. Кашаев С. М. Паскаль для школьников. Подготовка к ЕГЭ (+ CD-ROM). - М.: БХВ-Петербург, 2013. - 336 c.
  12. Кашаев С. М. Паскаль для школьников. Подготовка к ЕГЭ. - М.: БХВ-Петербург, 2014. - 336 c.
  13. Кетков А.А. Практика программирования: Бейсик, Си, Паскаль. Самоучитель (+ дискета). - М.: БХВ-Петербург, 2013. - 480 c.
  14. Кетков А.А. Свободное программное обеспечение. FREE PASCAL для студентов и школьников (+ CD). - М.: БХВ-Петербург, 2013. - 376 c.
  15. Кетков Ю. А. Свободное программное обеспечение. FREE PASCAL для студентов и школьников. - М.: БХВ-Петербург, 2014. - 384 c.
  16. Климова Л. М. Pascal 7.0. Практическое программирование. Решение типовых задач. - М.: КУДИЦ-Образ, 2014. - 528 c.
  17. Кореневская О. В. Турбо Паскаль 7.0. - М.: НТ Пресс, 2014. - 144 c.
  18. Культин, Н. Turbo Pascal в задачах и примерах. - М.: БХВ-Петербург, 2012. - 256 c.
  19. Культин, Н. Программирование в Turbo Pascal 7.0 и Delphi. - М.: БХВ-Петербург, 2014. - 400 c.
  20. Фаронов А.К. Turbo Pascal 7.0. – М.: Наука, 2015.-430с.