Краткое описание языка программирования паскаль. История развития языка программирования паскаль Что входит в язык программирования паскаль


Существует достаточно света для тех, кто хочет видеть, и достаточно мрака для тех, кто не хочет.

Блез Паскаль (1623-1662)

Язык программирования Паскаль (Pascal) был создан выдающимся специалистом в области computer science Никлаусом Виртом . Свое название язык получил в честь знаменитого французского ученого средневековья Блеза Паскаля.

Впервые предварительное описание языка программирования Паскаль было опубликовано в 1968 году. Паскаль продолжал линию АЛГОЛ-W (язык, над которым Н. Вирт работал в 1965 году в рамках конкурса международной федерации по обработке информации (IFIP) на разработку нового языка программирования – преемника АЛГОЛ-60). Первый вариант компилятора появился в 1971 году, а спустя год вышли в свет соответствующие публикации.

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

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

Разрабатывая язык Паскаль, Никлаус Вирт изначально преследовал следующие основные цели:

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

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

Реализации и диалекты

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

  • UCSD p-System – разработка Калифорнийского университета 1978 года;
  • интегрированная среда разработки Turbo Pascal , созданная фирмой Borland (первая версия появилась в 1983 году);
  • Object Pascal - объектное расширение языка, разработанное Aplle в 1986 году;
  • вариант Object Pascal от Borland (начиная с версии среды Delphi 7, Borland стала официально называть язык Object Pascal как Delphi).

Важную роль в развитии языка сыграло появление свободных реализаций: Free Pascal и GNU Pascal .

Особое внимание стоит уделить разработке Южного федерального университета PascalABC.NET (первая стабильная версия появилась в июне 2009 года). PascalABC.NET – это язык программирования нового поколения, основанный на платформе Microsoft.NET, сочетающий простоту классического языка Паскаль и содержащий практически все современные языковые средства.

PascalABC.NET - это также мощная и интуитивно понятная интегрированная среда разработки, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.

В дальнейших уроках будут рассматриваться возможности именно языка PascalABC.NET.

Среди множества языков программирования, предназначенных для обучения именно навыкам программирования, есть один, выделяющийся особо. Язык Паскаль, названный в честь французского ученого XVII столетия Блеза Паскаля, был разработан в конце 1960-х гг. ученым из Швейцарии Никлаусом Виртом, и далеко не с образовательной целью, как этот язык воспринимают теперь.

Наоборот, в те времена ученые пробовали разные языки программирования для практического применения. И позже этот ученый позднее создал ещё два языка программирования – Оберон и Модула, которые, правда, не получили распространения среди специалистов. Если быть точным, то 1968 году была создана первая версия языка Паскаль (на основе АЛГОЛа), а 1970 году – первый компилятор.

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

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

Особенно это стало ясно после того, когда около 1970-го года профессор Хоар опубликовал две статьи: «Аксиоматическая основа программирования для вычислительных машин» и «О структурной организации данных», в которых делается попытка осмыслить правильность составления алгоритмов программ с математической точки зрения. Как раз язык программирования Паскаль и является первым из языков, в котором имеются все необходимые инструменты для проверки эффективности написанных программ.

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

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

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

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

Больше, применяемых сегодня, никаких языков программирования период 60-х годов не принес, зато, как только он перешел на период 70-х годов сразу же в 1970-м году был разработан Паскаль, тот самый, который и сегодня изучается в школьной программе Информатики и на котором объясняется консольное программирование.

Язык Паскаль был создан Никлаусом Виртом в 1968-1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания - построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные. Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы - язык Модула-2. Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Вирта, язык должен способствовать дисциплинированному программированию, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров. Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

Алфавит языка Паскаль состоит из нескольких разделов:

Латинские буквы: A a B b…

Цифры: 0 1 2..9

Знаки математических операций: + - * /

Знаки математических отношений: <> =

Знаки препинания: . , : ;

Специальные знаки: { } () $ ^

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

Заголовок

Раздел меток

Раздел констант

Раздел типов

Раздел переменных

Раздел процедур и функций

Раздел операторов

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

Разделы между собой разделяются знаком ";"
Раздел операторов заключается в операторные скобки. Это зарезервированные слова begin, end. Раздел операторов заканчивается точкой. Запись внутри операторных скобок, как правило, ведется с отступом в три знака.

1) Располагать операторные скобки с одинаковым отступом от левого края, а операторы по уровням вложенности

оператор1;

оператор2;

оператор3;

2) Использовать строчные буквы для записи операторов, обозначения переменных, процедур, функций и иных компонентов программы. Хотя транслятор Паскаля позволяет использовать и прописные и строчные буквы, на практике применение последних более распространено;

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

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

§ Нельзя использовать зарезервированные слова.

§ Нельзя начинать имя с цифры.

§ При использовании имени не используется пробел.



Примеры:program one; program to_be_or_not_to_be; program x5;

Простые типы данных.

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

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

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

1. Простые типы

2. Структурированные типы

3. Ссылочные типы

4. Процедурные типы

5. Объектные типы

К простым типам относятся: целочисленные типы, вещественные типы, логический тип, символьный тип, перечисляемый тип, интервальный тип.

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

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

2. Значения любого порядкового типа, за исключением целочисленного начинается с порядкового номера ноль (следующий порядковый номер 1, 2, 3…) .

3. Порядковым номером значения целочисленного типа является само значение.

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

К данным любого порядкового типа можно применить любую из пяти операций.

Стандартная операция Ord возвращает порядковый номер указанного значения. Значение указывается в скобках.

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

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

Стандартная операция Low возвращает наименьшее значение в диапазоне порядкового типа, указанного данного.

Стандартная операция High возвращает наибольшее значение в диапазоне порядкового типа, указанного данного.

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

Таблица 6 – Целочисленные типы языка Паскаль

По умолчанию, как правило, для целочисленных данных выбирается тип integer.

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

Пример:
1 - целый тип
1.0 - вещественный тип
100 - десятичный формат (100)
#100 - шестнадцатеричный формат (256)

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

К логическому типу относятся данные типа Boolean.
Значением логического типа могут являться два значения: true (1) и false (0). Для данных логического типа применимы только две операции сравнения: равно и не равно. Переменные типа boolean занимают один байт.

Символьный тип char представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода). В переменную этого типа может быть помещен любой из 256 символов расширенного кода ASCII. Переменная типа char занимает один байт памяти. Значения типа char задаются в апострофах. Кроме того можно задавать значения используя код из таблицы ASCII. Над данными символьного типа можно выполнять операции сравнения.

Перечисляемый тип определяется как упорядоченный набор идентификаторов, заданный путем их перечисления. При этом список идентификаторов разделенных запятой указывается в круглых скобках. Задается перечисляемый тип в разделе type.

Пример:
type A=(2, 4, 1, 7);
B=("c", "L", "3", "|");

Значения переменных перечисляемого типа не могут вводиться с клавиатуры и выводиться на экран.

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

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

В Паскале имеется пять видов вещественных типов (таблица 7).

Таблица 7 – Вещественные типы языка Паскаль

Действия над типами с одинарной, двойной, повышенной точностью и

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