Pascal

=**История возникновения**=

=== Язык программирования ПАСКАЛЬ (PASCAL) получил свое название не от сокращения каких-то слов, как другие языки: он назван так в честь великого французского математика и физика Блеза Паскаля, который в 1642 г. изобрел счетную машину для арифметических операций – паскалево колесо, как назвали её современники. История создания языка начинается с 1965 г., когда Международная федерация по обработке информации (IFIP) предложила нескольким специалистам в области информатики принять участие в разработке нового языка программирования – преемника АЛГОЛа-60. Среди них был швейцарский ученый, работавший в то время доцентом на факультете информатики Стэнфордского университета Никалаус Вирт, который принял участие в разработке проекта языка под названием АЛГОЛ-W. === === И хотя IFIP отклонила этот проект (был принят проект АЛГОЛ-68 – автор Аад ван Вейнгаартен), Никалаус Вирт по возвращению в Швейцарию в 1967 г. не прекратил работу по созданию нового языка. В результате этой работы в конце 1968 г. профессор Вирт и его сотрудники из Швейцарского федерального института технологии (ETH) в Цюрихе разработали первую версию ПАСКАЛЯ, а спустя два года – первый вариант компилятора. В 1971 г. Н. Вирт выпустил описание своего языка. В связи с появившимся интересом у широкого круга пользователей, а также с учетом первых оценок и апробаций 1974 г. разработана новая версия языка ПАСКАЛЬ. В следующем году опубликовано руководство для пользователей ПАСКАЛЯ, которое по словам Н. Вирта, вполне можно рассматривать как стандартное определение языка. === === Создавая ПАСКАЛЬ, Н. Вирт преследовал две цели: во-первых, разработать язык, пригодный для обучения программированию как систематической дисциплине; во-вторых, реализация языка должна быть эффективной и надежной на существующих вычислительных машинах. === === Как и всякий преемник, ПАСКАЛЬ наследовал многие черты основного предшественника и некоторых других. Как и АЛГОЛ-60, он имеет блочную структуру, т. е. программы составляются из блоков, которые начинаются и оканчиваются словами BEGIN и END соответственно. Операторы языка ПАСКАЛЬ, как и в АЛГОЛе-60, разделяются между собой точкой с запятой. Аналогично АЛГОЛу и ФОРТРАНу в языке имеется оператор перехода, а оператор варианта выполняет те же функции, что и переключатель в АЛГОЛе или вычисляемый оператор перехода в ФОРТРАНе. Простые и гибкие операторы цикла WHILE и REPEAT и оператор варианта CASE, отмечает Вирт, обладают переработанной версией оператора цикла FOR (также заимствованным из АЛГОЛа) они позволяют программисту выразить все, что ему нужно путем использования вложенных иерархических структур, представляющих композиции этих операторов. === === Одним из достоинств языка ПАСКАЛЬ является то, что он воплотил в себе идею структурного программирования, суть которой заключается в том, что с помощью нескольких конструкций можно выразить в принципе любые алгоритмы. «Структурное программирование нацелено на алгоритмический аспект написания программ», – пишет К. Кристиан. ===

Pascal — это императивный язык программирования, разработанный Никлаусом Виртом в 1970 в качестве языка обучения структурному программированию. Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля. Первоначально язык компилировался в байт-код, подобно языку Java. Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис интуитивно понятен даже при первом знакомстве с языком. Тем не менее, первоначально язык обладал множеством недостатков: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п.

==Элементы синтаксиса: ==
 * ~ Комментарий до конца строки ||= нет ||
 * ~ Комментарии, которые могут быть вложенными ||= (*...*) или {...} или (*...} или {...*) ||
 * ~ Регистрозависимость ||= нет ||
 * ~ Регулярное выражение идентификатора переменной ||= [A-Za-z_][A-Za-z0-9_]* ||
 * ~ Регулярное выражение идентификатора функции ||= [A-Za-z_][A-Za-z0-9_]* ||
 * ~ Присваивание значения переменной ||= varname := value ||
 * ~ Объявление переменной ||= varname: type ||
 * ~ Объявление переменной с присваиванием значения ||= varname: type = value ||
 * ~ Группировка выражений ||= ( ... ) ||
 * ~ Блок ||= begin ... end ||
 * ~ Тождественное равенство ||= = ||
 * ~ Тождественное неравенство ||= <> ||
 * ~ Сравнение ||= < > <= >= ||
 * ~ Определение функции ||= function f(p1: type1; p2: type2; ...): returntype; ||
 * ~ Вызов функции ||= f(a, b, ...) ||
 * ~ Вызов функции без параметров ||= f ||
 * ~ Последовательность ||= ; ||
 * ~ Если - то ||= if condition then trueBlock ||
 * ~ Если - то - иначе ||= if condition then trueBlock else falseBlock ||
 * ~ Бесконечный цикл ||= while true do loopBody ||
 * ~ Цикл с предусловием ||= while condition do loopBody ||
 * ~ Цикл с постусловием ||= repeat loopBody until condition ||
 * ~ Цикл for - next для диапазона целых чисел с инкрементом на 1 ||= for i := first to last do loopBody ||
 * ~ Цикл for - next для диапазона целых чисел с декрементом на 1 ||= for i := last downto first do loopBody ||