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

Основы программирования на языке Pascal. (Программирование на языке Паскаль)

Содержание:

Введение

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

Как мы знаем, автором языка программирования Pascal (Паскаль) является Никлаус Вирт, который его создал в 1968 –1971г. Никлаусом Виртом. В наше время данный язык программирования охватывает более широкую область применения, нежели чем при его создании.

Вирт видел целями создания языка Паскаля следующие:

1. язык строился бы на малом количестве основных, базовых понятий;

2. по сути своей имел бы простой синтаксис;

3. разрешал бы переводить программы в машинный код простым компилятором.

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

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

Курсовая работа состоит из введения, двух глав, заключения и библиографии.

Глава 1. Особенности языка Паскаль как программирования

1.1 История создания программирования на языке Паскаль

Прежде чем начать знакомство с языком программирования Паскаль, вспомним истоки его возникновения. Данный язык был разработан Никлаусом Вюртом в 1968-1971годах - известным в то время профессором и директором Института информатики Швейцарской высшей политехнической школы. Имя языку было дано в честь выдающегося французского математика и философа Блеза Паскаля (1623 — 1662)[9].

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

Популярность данного языка объясняется разными причинами [4, с. 18]:

- Паскаль достаточно прост в обучении в силу удачности первоначального описания, компактности;

- данный язык программирования передает основные и наиболее важные идеи и представления алгоритмов в понятной и простой форме, тем самым позволяет программистам использовать средства для проектирования программы;

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

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

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

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

1.2 Понятие системы Турбо Паскаль

Обычно говоря словосочетание «Турбо Паскаль» программисты имеют ввиду следующее:

1. Турбо Паскаль – разновидность языка программирования, который является расширение стандартного Паскаля;

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

Обычный, стандартный Паскаль является подмножеством Турбо Паскаля.[10] Систему программирования Турбо Паскаль назовем Турбо Системой, которая создает благоприятную операционную обстановку для деятельности программиста. Назначение данной системы специализированное, а именно - предоставлять пользователю необходимые средства работы с Паскаль-программой ( в отличие от, например, оболочки операционной системы MS DOS Norton Commander - ее назначение общее).

Турбо-система в работе опирается на потенциал операционной системы, ее возможности. Поэтому определенная урбо-система имеет возможность работать с конкретной операционной системой, ее определенными версиями. Как пример - Турбо-система на IBM PC работает в среде MS DOS, причем более развитые версии Турбо-системы требуют и более высокоразвитых версий DOS.

Турбо Паскаль за время своего существования претерпел немало изменений. Первая версия Турбо Паскаля, фирмы Borland, была выпущена в середине 80х годов прошлого столетия. Сегодня уже известно несколько модификаций данной системы – их шесть: 3.0, 4.0, 5.0, 5.5, 6.0, 7.0. каждая из этих модификаций – это усовершенствованная форма прошлой версии. Все эти версии создавали для семейства машин IBM PC и, соответственно, развивались вместе с этими компьютерами.

Рассмотрим поподробнее некоторые из этих версий. Версия 3.0 – предназначена для персональных компьютеров небольшой мощности (IBM PC/XT). Создаваемые на этой версии программы ограничены по длине - не более 64 Кбайт. Еще один недостаток версии 3.0 – это отсутствие средств раздельной компиляции взаимосвязанных программ. Данная операционная среда достаточно несовершенна.

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

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

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

Версия 6.0 уже имеет новую среду, которая сконцентрирована на работе с устройством ввода – мышью. Также эта версия применяет многооконный режим работы с устройством ввода. Присутствует объектно-ориентированная библиотека Turbo-Vision, есть возможность включать в текст программы команды Ассемблера.

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

Программа на Турбо Паскале имеет три этапа обработки:

1. создание текста программы,

2. компиляция,

3. процесс исполнения откомпилированной программы.

В связи с этим три главные компоненты Турбо-системы – редактор текстов, компилятор, исполнительная система.

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

<имя файла>.раs,

где pas — это стандартное расширение имени файла, который создает системный редактор. Обращение к текстовому редактору происходит с помощью команды Edit. Далее компилятор переводит программу с языка Паскаль на язык машинных команд, при этом проверяет соответствие программы правилам языка программирования (синтаксический и семантический контроль). Если обнаруживает ошибку – ПК выдает сообщение о ней пользователю и сразу прекращает работу. Итоговаю программу, которую получают в результате компиляции, можно сохранить на диске в файле с именем

<имя файла>.ехе

Работа компилятора определяется системной командой Compile. Приведение в действие откомпилированной программы претворяется в жизнь при помощи команды Run. Исполнение самой программы остается подконтрольным Турбо-системе. К примеру сказать, Турбо-система имеет возможность обнаружения ошибки в программе, если при ее исполнении произошел какой-либо сбой.

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

В поле поздних версиях Турбо Паскаля уже имеются системы отладки (Debug). С помощью нее на экране мы имеем возможность просмотра значения любой переменной, а также установления нового значения переменной. Еще одна особенность – возможность прерывания выполнения программы в указанных местах (данные места имеют название «контрольные точки»). Данная система отладки существенно упрощает работу поиска ошибок для программиста.

Глава 2. Программирование на языке Паскаль

2.1 Алфавит языка

Как известно, основа любого языка программирования – алфавит - конечный, фиксированный набор символов, применяемых для составления текстов на данном языке (в нашем случае - программ). Конечно, стройность картины немного портит наличие диалектов, создающихся стихийно и очень часто включающих в себя апокрифические (неканонические) буквы и знаки. В программировании эта проблема решается при помощи понятия "стандарт языка". Его практически невозможно применить к языкам человеческим, которые находятся постоянно в развитии. Рассмотрим некоторые замечания, с помощью которых можно раскрыть все формальности употребления символов в языке Паскаль [3, с. 108].

Таким образом, алфавит языка Паскаль составляют:

1) буквы латинского алфавита;

2) арабские цифры;

3) специальные знаки.

Использование букв латинского алфавита обычно не вызывает вопросов, но, конечно, имеет свои особенности. Первое – использование букв и заглавных, и строчных. Как известно, многие из существующих в мире трансляторов не разделяют буквы на разные регистры. Можно считать записи "progRaM" и "PROGram" идентичными. Второе - часть из символов латиницы и кириллицы аналогичны по начертанию. И тут возникает вопрос – можно ли вместо буквы "К" латинской написать "K" русскую? И получим ответ: в тетради (если вы их сможете различить) - пожалуйста, в программе на ЭВМ - ни в коем случае. На вид они может быть и похожи, но уж коды-то у них совершенно разные, а компьютер, как вам известно, оперирует внутри себя не буквами, а их числовыми кодами.

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

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

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

. конец программы, разделение целой и дробной частей вещественного числа (десятичная точка), разделение полей в переменной типа Record;

, разделение элементов списков;

.. указание диапазона;

: используется в составе оператора присваивания, а также для указания формата вывода в операторе Writeln;

; отделяет один раздел программы от другого, разделяет операторы;

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

- + * / ( ) арифметические знаки (используются по своему назначению);

< > знаки отношений;

= используется в составе оператора присваивания, в разделах описаний констант и типов, используется как знак отношения (равно);

@ имя специального оператора определения адреса переменной, подпрограммы;

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

{} ограничение комментариев в программе;

[ ] заключают в себе индексы элементов массивов;

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

# обозначение символа по его коду;

$ обозначение директивы компилятора, обозначение шестнадцатеричного числа.

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

2.2 Структура программы на Паскале

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

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

В Турбо Паскале, в отличие от стандарта, возможно следующее:

- заголовки программы могут отсуствовать;

- разделы Const, Type, Var, Label могут иметь любую последовательность и встречаться в разделе описаний не один раз.

Рассмотрим примеры программ. Как было сказано выше - Паскаль разрабатывался Н. Виртом как учебный язык. Главный его принцип — поддержание структурной методики программирования. Тот же принцип заложен в основу псевдокода, который называют Алгоритмическим языком (АЯ). По сути своей, разница между АЯ и Паскалем заключается в то, что АЯ — русскоязычный, Паскаль — англоязычный; синтаксис Паскаля определен строго и однозначно в отличие от сравнительно свободного синтаксиса АЯ.

Запись программы на Паскале похожа на английский перевод алгоритма, записанного на Алгоритмическом языке. Сравните алгоритм деления простых дробей, записанный на АЯ, с соответствующей программой на Паскале[1, с. 76].

Здесь использовано следующее равенство:

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

Заголовок программы начинается со слова Program (программа), за которым следует произвольное имя, придуманное программистом (division — деление). Раздел описания переменных начинается со слова Var (variables — переменные), за которым следует список переменных. Тип указывается после двоеточия словом Integer — целый. Начало и конец раздела операторов программы отмечаются словами Begin (начало) и End (конец). В конце программы обязательно ставится точка.

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

Операторы присваивания в Паскале записываются так же, как в АЯ. Знак умножения — * (звездочка).

Вывод результатов на экран дисплея производится с помощью процедуры WriteLn (write line — писать в строку). В рассмотренном примере два целых числа т и п выведутся в строчку, курсор на экране перейдет в начало следующей свободной строки и работа программы завершится.

Необходимо строгое соблюдение правил правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации. Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, после каждого оператора. Перед словом End точку с запятой можно не ставить. Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин.

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

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

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

«Оттранслируем» алгоритм вычисления факториала натурального числа (N!) на Паскале.

Из этого примера, во-первых, видно, как записывается на Паскале оператор цикла с предусловием (цикл-пока):

While <условие выполнения> Do <тело цикла>

(While — пока, Do — делать). Если тело цикла содержит последовательность операторов, то говорят, что оно образует составной оператор, в начале и в конце которого надо писать Begin и End

Служебные слова Begin и End часто называют операторными скобками[7, с.90], которые объединяют несколько операторов в один составной. Если же тело цикла — один оператор (не составной), то операторных скобок не требуется. Тогда транслятор считает, что тело цикла заканчивается на ближайшем знаке «;».

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

Рассмотрим еще один пример программы — решение квадратного уравнения.

В этой программе по сравнению с предыдущими появилось много новых элементов. Имя вещественного типа в Паскале — real.

Цикл с постусловием (цикл-до) программируется оператором

Repeat <тело цикла> Until <условие окончания>

(здесь Repeat — повторять, Until — до). Тело цикла может быть как одиночным, так и составным оператором, однако употребления Begin и End не требуется, поскольку сами слова Repeat и Until выполняют роль операторных скобок.

Знак не равно в Паскале пишется так: <>, знак больше или равно: >=.

В формулах вычисления корней используется стандартная функция квадратного корня (), которая в Паскале записывается так: sqrt (x)[2, с.106]. Последовательность выполнения операций в выражении определяется при помощи скобок, а также старшинством операций. Здесь старшинство операций такое же, как старшинство и в алгебре. Операции с одинаковым старшинством выполняют в соответствии с в порядком их записи (слева направо).

Ветвление в Паскале программируется при помощи условного оператора, который имеет следующую форму:

If <условие> Then <оператор 1> Else «oператор 2>

(здесь If — если, Then — то, Else — иначе). Операторы 1 и 2 могут быть как простыми, так и составными. Составной оператор следует заключать в операторные скобки Begin и End.

Так же, как и в Алгоритмическом языке, возможно использование неполной формы условного оператора:

if <условие> then <оператор>

Отличительная особенность данной программы – это использование в тексте комментариев. Комментарий — это любая последовательность символов, заключенных в фигурные скобки {...}. Также имеется возможность использовать следующие ограничители комментариев (*...*). Комментарий не определяет никаких действий программы и является лишь пояснительным текстом. Он может быть в любом месте программы, где можно поставить пробел.

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

Удачное владение и применение комментариев — признак хорошего стиля программирования.

Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту работу, на компьютере должны быть специальные средства программного обеспечения. На ПК они составляют систему Турбо Паскаль.

2.3 Нынешнее положение Паскаля

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

Сейчас признанными лидерами в области профессионального программирования стали Си-подобные языки. В течение долгого периода Паскаль был, пожалуй, почти единственной альтернативой им в качестве универсального языка. Однако когда труд большинства профессиональных программистов стал практически сводиться лишь к манипуляциям с вызовами более или менее стандартного API-инструментария (Application Programming Interface — интерфейс прикладного программирования), остро встал вопрос выбора единственного языка программирования, на котором (и для которого) будет писаться этот API. Вследствие различных причин — как объективных, так и субъективных — выбор пал на Си/Си++. Во-первых, Си, как и Паскаль, оказался одним из первых языков высокого уровня (ЯВУ), разрешившим проблему «курицы и яйца»: его компилятор был написан на нем же. Во-вторых, компиляторы для Си делать, пожалуй, легче, чем для любого другого языка (что, собственно, и было одной из целей его разработки), поэтому именно их выпуск экономически наиболее целесообразен. Впрочем, не обошлось и без субъективных факторов: значительную долю сегодняшнего API производит фирма Microsoft, уже давно разграничившая с фирмой Borland «сферы влияния» в этой области. Сейчас Borland не выпускает компиляторы для Бейсика и Фортрана, а Microsoft – для Паскаля, и, естественно, не ориентирует свои API на те языки, компиляторы которых сама не выпускает.

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

Однако в области создания СУБД Паскаль до сих пор входит в число лидеров, поскольку продолжается разработка инструментального ПО для работы с объектными версиями этого языка (Delphi). Кроме того, Паскаль и его диалекты зачастую применяются в качестве «внутреннего» языка СУБД.

На сегодняшний день практически все продажи продуктов программирования направлены на многозадачные ОС (Windows, UNIX и пр.); при этом активно применяют API-инструментарий, плюс визуальные средства программирования. 

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

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

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

Медицинские рецепты принято выписывать на латыни. От всех живых языков она отличается тем, что уже не изменяется. К тому же медики, на каком бы языке они ни говорили, имеют в латыни общий язык. Также и про DOS. Его API достаточно лаконичен и уже давно не претерпевает никаких изменений. Все ОС (на платформе Intel) предоставляют возможность с программами DOS, а вот программа, написанная, допустим, для Linux, в Windows уже не запустится. 

Познакомимся поближе с Паскалем для DOS. В образовании и по сей день широко применима последняя 7-я версия Паскаля, выпущенная компанией Borland, созданная более 8 лет назад. Со своим основным предназначением компилятор Паскаля справляется, но часто даже школьники, которым удалось постигнуть начальные азы программирования, встречают барьеры. Основная проблема компилятора - его16-разрядность. Ограничение в 64 Кбайт на все статические данные представляется достаточно жестким при типичных на сегодняшний день 32-128 Мбайт оперативной памяти. Так же и графические режимы: максимальное разрешение, с которым возможно работать Turbo/Borland Pascal, требует лишь 150-Кбайт видеопамяти, в то время как появляются видеоадаптеры, несущие уже 64 Мбайт. 

Сравним теперь компиляторы Паскаля.

Не может не радовать тот факт, что в России все больше начинают уделять внимание легальности использования программных продуктов. В связи с этим всем приходится платить за использование Turbo/Borland Pascal – и частным, и общественным пользователям. И мало кто знает о том, что есть 32-разрядные компиляторы Паскаля, которые для целей некоммерческого пользования совершенно бесплатны, и что примечательно, - более полно используют оперативную память ПК и возможности видеоадаптера. 

Среди компиляторов, которые достигли конкретной степени, - TMT Pascal (www.tmt.com) и Free Pascal Compiler (FPC, www.ru.freepascal.org). В числе других проектов стоит упомянуть P32V Джона Принса (surf.to/p32) и Virtual Pascal (www.vpascal.com), недавно ставший бесплатным. Последний, пожалуй, наиболее тщательно проработан, но в исходном виде не позволяет делать DOS-приложения. 

Отметим тот факт, что в разработке TMT и Free Pascal участвовали наши соотечественники. 

Версия 3.50 компилятора ТМТ выглядит достаточно отлаженным продуктом, потому что большинство выявленных ошибок устранены, да и сам он и его интегрированная среда работают без перебоев и установка их легка. Просматривается при всем этом, к сожалению, немногочисленность коллектива разработчиков - интегрированная среда как отражение в зеркале походит на аналогичные GUI-ориентированные IDE и возможности у нее ограничены - отсутствует даже встроенный наладчик. Во встроенном ассемблере до сих пор отсутствует поддержка SSE, хотя есть 3DNow! и MMX. Более расширенные и зарегистрированные версии компилятора начиная с 1.0 содержали IDE-среду в текстовом режиме, с которой из-за множества ошибок все равно было невозможно работать, а свободно распространяемые - ограничения на объем используемой памяти, но их можно было достаточно легко обойти. Поэтому в версии 3.50 они были сняты, а в последнюю бесплатно предоставляемую добавлена IDE-среда. 

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

Версия компилятора обозначается не двузначным, как принято, а трехзначным числом, так как значение 99 в младшей части версии появилось задолго до того, как основной было присвоено 1.0. Сейчас 1.0 наконец вышла, но она в итоге получилась более сырой, чем предыдущая. Далее, следом выпускают версию 1.02, которая содержит в себе только исправления замеченных ошибок. Одновременно с этим готовилась к выходу версия 1.04.

Здесь уже в состав поставки компилятора включена интегрированная среда, которая работает только в текстовом режиме. Этого не скрывали – в документациях к компилятору честно написано, что это всего лишь отладочная версия. Да и к тому же IDE нуждается в настройках, которые к великому разочарованию, описаны неверно. Эта IDE- своего рода текстовый редактор с встроенным компилятором (почему-то не внешним), в ней нет не то что контекстной подсказки, не говоря и об отладчике. 

Оба компилятора в определенной степени походят на диалект Turbo/Borland Pascal, хотя и различия конечно есть. По большой сути они касаются усовершенствований языка, потому что отсутствуют ограничения, связанные с 16-разрядной сегментированной моделью памяти, есть Си-подобные комментарии. Да, и еще - ТМТ дополнился Си-подобными операциями: , . В Free Pascal появились перегружаемые функции, а у ТМТ - перегружаемые операторы и множество усовершенствований, о чем говорится и в документации. У Free Pascal желаемое нередко выдается за действительное. Так, в одной из предыдущих версий он наотрез отказался компилировать MMX-инструкции, в том числе и пример из документации. Конечно, оба компилятора не во всем похожи. У ТМТ отсутствует 64-разрядный целый тип comp. Притом, скорее всего, его введение и не предполагается, так как существует дополнительный модуль для обработки комплексных чисел, имеющий то же самое название. В Free Pascal же не предусмотрено предопределенных массивов Port и PortW, а в ТМТ есть даже PortD. 

Поскольку оба компилятора используют 32-разрядную плоскую модель памяти, функция seg у обоих возвращает 0, однако в системе программирования Free Pascal неправильно работает функция ptr. Например, в выражении longint(ptr($40,$6c)^) мы можем получить все что угодно, но только не значение счетчика времени BIOS (видимо, программа прекратит работу по ошибке обращения к памяти). У TMT же такая конструкция выполняется правильно. 

После компиляции минимальный размер исполняемого файла для ТМТ составляет около 15 Кбайт, а для Free Pascal - 55 Кбайт. Кроме того, второй требует еще внешнего DPMI-сервера на 20 Кбайт, тогда как у ТМТ он содержится внутри исполняемого файла. 

Чтобы сравнить скорости работы исполняемых файлов, полученных с помощью этих компиляторов, можно использовать тест Ветстоуна по определению производительности системы с точки зрения выполнения операций над числами с плавающей запятой, переписанный с Фортрана на Паскаль. Значительно уступая TMT по оптимизации размера, Free Pascal работает в полтора раза быстрее. В то же время оба компилятора оставляют далеко позади Borland Pascal, особенно на современных процессорах. 
Однако некоторые результаты при измерении производительности выглядят довольно странно. Написанная на ассемблере процедура поиска кратчайшего пути в графе при помощи алгоритма Дейкстры, будучи откомпилированной тем же Free Pascal, выполнялась на 20% быстрее, чем ТМТ. При заполнении таблицы весов дуг графа использовался датчик случайных чисел, измерения повторялись 1000 раз и полученные значения усреднялись, а процедуры чтения, записи и пересылки содержимого оперативной памяти выполнялись в обоих случаях с одинаковой скоростью. 
Среднее время выполнения этого теста для компилятора ТМТ Pascal составило 2,20 с, а для Free Pascal - 1,81 с. 

Бесплатная версия TMT Pascal позволяет делать исполняемые файлы только для DOS, зато при использовании коммерческой один и тот же текст, будучи откомпилированным и для DOS, и для Windows, работает визуально совершенно одинаково, хотя внутренний механизм для DOS реализован через VESA, а для Windows - через DirectDraw. 
Рекомендации
Что же, хотя крупные фирмы и отказались от ведения разработок Паскаля для DOS, небольшие компании, коллективы энтузиастов и даже отдельные программисты весьма успешно продолжили это дело, создавая вполне достойную замену проверенному компилятору Turbo Pascal. Так что если вам нужен надежный компилятор и вы не хотите возиться с установкой и настройкой его самого и прилагаемой к нему среды, а также если при вашей работе предъявляются жесткие требования к объему кода, то лучше остановить свой выбор на ТМТ. Кстати, при применении внешнего DOS-расширителя памяти, например DOS4GW, минимальный объем исполняемого файла можно сократить до 3 Кбайт. Если же вам не терпится самому принять участие в разработке компилятора Паскаля, если вам нужен транслятор, настраиваемый на ваши конкретные задачи и вы согласны над ним поработать, то следует отдать предпочтение FPC. Впрочем, вместе с исходными текстами также поставляется Р32V, однако он в отличие от FPC компилируется в среде Borland Pascal. Правда, P32V - не полный компилятор, так как переводит текст на Паскале не в объектный код, а в текст на языке ассемблера, и поэтому потребуется внешний ассемблер. Если же вы работаете с OS/2, то целесообразнее предпочесть Virtual Pascal.

Заключение

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

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

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

Библиография

1. TurboPascal: практикум. — СПб.: Питер, 2002. — 256 с.: ил.

2. TurboPascal / 2-е изд., перераб., — Вологда: МП «МИК», 1991. — 342с.

3. Абрамов В.Г., Трифонов Н.П. Введение в язык Паскаль. – М. :Наука,1988.-320 с.

4. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. –

М.: Наука, 1987. – 112 с.

5. Бутомо И.Д., Самочадин А.В., Усанова Д.В. Программирование на алгоритмическом языке Паскаль. – Л.: Издательство Ленинградского университета, 1985. – 216 с.

6. Грэхем Р. Практический курс языка Паскаль. – М.: Радио и связь. 1986 –200 с.

7. Йенсен К., Вирт Н. Руководство для пользователя и описание языка. –М., 1982. 151 с.

8. Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука, 1989.– 160 с.

9. Википедия [Электронный ресурс] https:// ru.wikipedia.org/wiki/Паскаль_ (язык_программирования)

10. Электронный словарь на Академике. [Электронный ресурс] http://dic.academic.ru/dic.nsf/ruwiki/2495