Язык программирования Pascal

  Введение

 

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

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

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

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

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

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

Основные системы программирования

Наиболее популярные языки программирования

Соответствующие им визуальные среды быстрого проектирования программ для Windows

Бейсик (Basic) – для освоения требует начальной подготовки (общеобраз.школа)

Microsoft Visual Basic

Паскаль (Pascal) – требует специальной подготовки

Borland Delphi

Си++ (С++)- требует серьезной подготовки

Microsoft Visual С++

Ява (Java) требует серьезной подготовки

Java: Borland JBuilder


 

В своей работе, я рассмотрю такую  систему программирования, как Паскаль.

Цель работы – описать

-  характеристику системы;

-  стандарты; 

- её преимущества и недостатки.

 

 

 

 

 

 

 

   

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

Целью работы Вирта было создание языка, который:

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

  - имел  бы простой синтаксис;

  - допускал  бы перевод программ в машинный  код простым компилятором;

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

Современные версии Object Pascal

   Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими.

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

О коммерческих разработках  на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало.

Язык системы — это Object Pascal для платформы Microsoft .NET, который содержит все основные элементы современных языков программирования: модули, классы, перезагрузку операций, интерфейсы, исключения, обобщенные классы, а также некоторые средства параллельного программирования.

               Особенность языка.

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

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

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

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

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

Синтаксис и языковые конструкции

Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи, указатели, перечисления и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67, Алгол-68, созданного Никлаусом Виртом AlgolW и предложены Хоаром.

В современных диалектах (Free Pascal) доступны такие операции, как перегрузка операторов и функций.

Стандарты

После начала использования Паскаля  в 1970 году и появления реализаций, расходящихся не только в дополнениях, но и в синтаксисе, был поднят вопрос о стандартизации языка. Стандарт языка был разработан Никлаусом Виртом в 1974 году совместно с Кетлин Йенсен. В дальнейшем, были приняты международный стандарт от ISO и американский от ANSI. На данный момент, выделяют три принципиально разных стандарта: Unextended Pascal (исходный), Extended Pascal (расширенный), Object-Oriented Extensions to Pascal (объектно-ориентированное расширение Паскаля).

 

Стандарты языка Pascal: исходный, международные ISO и американские ANSI

Название

Вариант

Кем/где разработан

Год создания

Pascal Standard

исходный

Н. Вирт, Кетлин Йенсен

1974

Pascal Standard

исходный

ISO 7185:1983 
ANSI/IEEE 770X3.97:1983

1982

Unextended Pascal

исходный

ISO 7185:1990

1989

Extended Pascal

расширенный

ANSI/IEEE 770X3.160:1989

1989

ISO/IEC 10206

1991

Object-Oriented 
Extensions to Pascal

объектно-ориентированное расширение

ANSI/X3-TR-13:1994

1993


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

Стандартизация языка была запаздывающей  по отношению к реальному появлению  в языке тех или иных возможностей. Коммерческие реализации расширяли  стандартный Паскаль; так было сделано  в UCSD Pascal, модификации Object Pascal фирмой Apple, Turbo Pascal от Borland (незначительно модифицированная версия Apple) и его ответвлений. Ни одна из распространённых коммерческих реализаций Паскаля не соответствует в точности ни одному из официальных стандартов языка.

Начало программы

Программы на Паскале начинаются с ключевого слова program и следующего за ним имени программы с точкой, с запятой (в некоторых диалектах является необязательным), за именем может в скобках следовать список внешних файловых дескрипторов в качестве параметров; за ним следует тело программы, состоящее из секций описания переменных, типов и констант, объявлений процедур и функций и следующего за ними блока операторов, являющегося точкой входа в программу. В языке Паскаль блок ограничивается ключевыми словами begin и end. Операторы разделяются точками с запятой, после тела помещается точка, служащая признаком конца программы. Регистр символов в Паскале не имеет значения.

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

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

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

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

program p;

{ Раздел описаний}

Begin

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

end.

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

Необходимо обратить внимание на наличие  точки после служебного слова END. После последнего оператора END всегда ставится точка, тем самым компилятор получает информацию об окончании текста программы. Слово PROGRAM зарезервировано в Паскале и означает начало программы. Далее записывается имя программы (в приведенном примере – Addition). В Турбо Паскале можно опускать объявление имени оператором PROGRAM без каких–либо последствий для программы.

PROGRAM Addition; 
{ ADDITION.PAS – Программа суммирования двух введенных целых чисел} 
VAR 
Number_1, Number_2, Sum: INTEGER; 
BEGIN 
Write (‘ Введите первое число:’); 
ReadLn (Number_1); 
Write (‘Введите второе число:’); 
ReadLn (Number_2); 
Sum := Number_1 + Number_2; 
WriteLn (‘ Сумма введенных чисел равна: ‘,Sum); 
END.

После заголовка программы следует текст, заключенный в фигурные скобки. Это - комментарий. Комментарий – выделенная фигурными скобками информация для пояснения, которая не исполняется программой. Кроме фигурных скобок {}, могут использоваться также пары символов (* и *) слева и справа от комментария соответственно.

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

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

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

Разделитель ; отмечает конец оператора или описания. Использование особого разделителя позволяет располагать несколько операторов на одной строке.

 

Типы данных

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

В программе написанной на языке  паскаль для переменных отводится  специальная "секция" VAR (агн VARiable - переменная) и каркас программы выглядит так:

 Имя Программы;

  var

  Здесь идёт объявление переменных.

begin

  Здесь идёт текст программы.

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

Объявляются переменные таким образом:

Имя Переменной : Имя Типа;

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

Целые типы.

Имя типа.

Диапозон значений.

Размер памяти.

Shortint

- 128 .. 127

1 байт

integer

- 32768 .. 32767

2 байтa

Long

- 2147483648 .. 2147483647

4 байтa

byte

0 .. 255

1 байт

Word

0 .. 65535

2 байтa


 

Вещественные типы

Имя типа.

Диапазон значений.

Число цифр мантиссы.

Размер памяти.

Real

2.9e-39 .. 1.7e+38

11 - 12

6 байт

Single

1.5e-45 .. 3.4e+38

7 - 8

4 байт

Double

5.0e-324 .. 1.7e+308

15 - 16

8 байт

Extende

3.4e-4932 .. 1.1e+4932

19 - 20

10 байт

Comp

-9.2e+18 .. 9.2e + 18

19 - 20

8 байт


 

 

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

 
Целые типы данных


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



Значения целых типов  могут изображаться в программе  двумя способами: в десятичном виде (традиционно, в виде последовательности цифр) и в шестнадцатеричном виде (в этом случае число предваряется знаком «$», а цифры старше 9 обозначаются латинскими буквами от А до F).

Пример:

Var

x1, x2:integer;

y1:byte;

y2:word;

Над данными целого типа определены следующие арифметические операции: сложение «+», вычитание «-», умножение «*», деление «/», целочисленное деление div, остаток от деления mod. Результат выполнения этих операций над целыми операндами также имеет целый тип.Также с целыми числами можно производить операции, результаты которых не целые числа. Это обычное деление и операции отношения. Кроме того, имеется большое количество встроенных функций для работы с целыми числами: abs, sqr, sqrt, sin, cos, exp, ln и др.

Над данными целого типа определены следующие операции отношения: равно «=», не равно «<>», больше «>», меньше «<», больше или равно «>=», меньше или равно «<=», вырабатывающие результат логического типа (Boolean).

 

     Вещественные типы

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

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

Над действительными  числами выполнимы операции сложения (+), вычитания (-), умножения (*) и деления (/). Результатом этих операций является также действительное число. Даже если хотя бы один из операндов вещественный, то результат этих операций также будет вещественным. Операция деления (/) дает вещественный результат и в случае двух целых операндов. Например, 6 / 2 = 3.0.Для действительных чисел допустимы такие же операции отношения (сравнения), что и для целых чисел.

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

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

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

Не имеющая аргументов функция pi возвращает число Пифагора.

Нельзя использовать переменные и  константы вещественного типа:

- в функциях pred, succ, ord;

- в качестве индексов массивов;

- в операторах передачи управления в качестве меток.

                                  Операторы управления

Рассмотрим методику составления алгоритмов с помощью блок-схем и описаны основные операторы языка: условный оператор if, оператор выбора case, операторы цикла while..do, repeat..until, for..do.

Как правило, созданию программы предшествует разработка алгоритма

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

Типичные этапы решения задачи изображаются следующими геометрическими фигурами:

 

 

 

 

 

• блок начала (конца) Надпись внутри блока: «начало»

• блок ввода (вывода) данных. Надпись внутри блока: ввод (вывод) и список вводимых (выводимых) переменных;

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

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

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

Линейный процесс — это конструкция, представляющая собой последовательное выполнение двух или более блоков.

Разветвляющийся процесс задает выполнение одного или другого

оператора в зависимости от выполнения условия.

Циклический процесс задает многократное выполнение оператора

или группы операторов.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим операторы языка  программирования Free Pascal, реализующие  основные конструкции алгоритма.

       Линейный процесс                          Разветвляющийся процесс

Циклический процесс

Оператор присваивания

Оператор присваивания в языке Free Pascal состоит из двух символов: двоеточия  и знака равенства. Символы := всегда пишут слитно.

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

В общем случае оператор присваивания имеет вид: имя переменной := значение;

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

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

Например, запись a:=b означает, что  переменной а присваивается

значение b.

Типы переменных a и b должны совпадать или быть совместимыми для присваивания, то есть тип, к которому принадлежит переменная b, должен находиться в границах типа переменной а.

     Составной оператор

Составной  оператор – группа операторов языка Free Pascal, отделенных друг от друга точкой с запятой, начинающихся со служебного слова begin и заканчивающихся служебным словом end:

begin

оператор_1;

...

оператор_n

end;

Транслятор воспринимает составной  оператор как один оператор.

     Условные операторы

В языке Free Pascal одна из основных конструкций  алгоритма,

разветвляющийся процесс, реализована  двумя условными операторами: if и case.

. Для организации вычислений  в зависимости от какого-либо  условия в языке Free Pascal используется  условный оператор if…then…else, который в общем виде записывается так:

if условие then оператор_1 else оператор_2;

где if…then…else – зарезервированные  слова, условие – выражение логического  типа, оператор_1 и оператор_2 – любые  операторы языка Free Pascal.

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

   Оператор варианта case.

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

case переменная of

набор_значений_1: оператор_1;

набор_значений_2: оператор_2;

 

набор_значений_N: оператор_N

else

альтернативный_оператор

end;

Оператор работает следующим образом. Если переменная принимает значение из набора_значений_1, то выполняется оператор_1. Если переменная принимает значение из набора_значений_2, то выполняется оператор_2 и так далее. Если переменная не принимает значений из имеющихся наборов, то выполняется альтернативный оператор, расположенный после ключевого слова else. Тип переменной должен быть только перечислимым (включая

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

 

Модули

До появления модулей  в их современном виде некоторые  реализации Паскаля поддерживали модульность  за счёт механизма включения заголовочных файлов, похожего на механизм #include в языке Си: с помощью специальной директивы, оформляемой в виде псевдокомментария, например, {$INCLUDE "файл"}, содержимое указанного файла прямо включалось в текст программы в исходном, текстовом виде. Таким образом можно было разделить программный код на множество фрагментов, для удобства редактирования, но перед компиляцией они автоматически объединялись в один файл программы, который в итоге и обрабатывался компилятором. Такая реализация модульности примитивна и имеет множество очевидных недостатков, поэтому она была быстро заменена.

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

Чтобы использовать модуль, главная программа или другой модуль должны импортировать данный модуль, то есть содержать объявление о его использовании. Это объявление делается с помощью инструкции подключения  модулей, представляющей собой ключевое слово USES, за которым через запятую следуют имена модулей, которые требуется подключить. Инструкция подключения должна следовать непосредственно за заголовком программы, либо после ключевого слова INTERFACE, если подключение производится в модуле. Модули спроектированы в расчёте на обеспечение раздельной компиляции — компилятор не должен компилировать импортированные модули для того, чтобы откомпилировать модуль, который их использует. Однако, чтобы правильно компилировать модуль, компилятор должен иметь доступ к секции интерфейса всех используемых им модулей. Существует два разных, иногда совмещаемых подхода к организации такого доступа.

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

 

 

 

 

 

 

               

 

 

                                 СОДЕРЖАНИЕ

 

     Введение

1. Первоначальные сведения о  системе Паскаль.

2.Современные версии системы.

3. Особенность языка.

4.Стандарты.

5.Функциональные элементы системы.

Заключение.

Список используемой литературы.