История языка Паскаль. Способы описания языка программирования. Введение в язык программирования Паскаль
Понятия синтаксиса, семантики и прагматики языка программирования. Алфавит языка Паскаль и основные лексемы. Синтаксические диаграммы Вирта и структура программы. Ключевые (зарезервированные) слова. Константы логического, строкового и символьного типа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 02.06.2015 |
Размер файла | 121,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
История языка Паскаль. Способы описания языка программирования. Введение в язык программирования Паскаль1
История языка Паскаль
Паскаль - язык программирования, созданный в 70-х годах швейцарским профессором Николаусом Виртом специально для обучения программированию. Им же был написан ряд книг [1], [2], [3], в которых подробно рассматриваются возможности этого языка и его применение для решения многих «классических» в области программирования задач. Название языку было дано в честь выдающегося французского математика Блеза Паскаля.
Язык Паскаль характеризуется чёткой структурой программы, простотой и ясностью конструкций. С момента создания Паскаль был универсален и пригоден для решения широкого круга задач. Строгая типизация языка значительно сокращает количество ошибок в программах.
Существует три стандарта языка:
1. Нерасширенный Паскаль (Unextended Pascal) был разработан в 1983 году и практически полностью совпадает с описанием языка по Вирту.
2. Расширенный Паскаль (Extended Pascal) содержит расширения, затрагивающие модульное программирование (отдельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация) и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и др.).
3. Объектный Паскаль (Object Pascal) принят в 1993 г. Он поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и другие атрибуты объектно-ориентированного программирования. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Реализации языка:
Для операционной системы MS-DOS самое большое распространение приобрела реализация языка Паскаль фирмы Borland под названием Turbo Pascal (первая версия языка появилась в 1983 году).
Borland Pascal включает в себя более дешёвый и менее мощный Turbo Pascal и, кроме того позволяет создавать программы как под реальный, так и под защищённый 16-битный режим DOS, а так же программы для Windows. В нем открыты исходные тексты системных библиотек и функций времени выполнения.
Delphi - интегрированная среда разработки ПО для Microsoft Windows на языке Delphi, созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies.
Free Pascal - свободно распространяемый компилятор языка программирования Pascal с ориентациейна Object Pascal.
Lazarus - свободно распространяемая интегрированная Delphi-подобная среда разработки программного обеспечения для компилятора Free Pascal, предоставляющая возможности кроссплатформенной разработки приложений.
PascalABC - система, представляющая собой интерпретатор языка программирования Паскаль с интегрированной оболочкой. Создавалась как учебная среда программирования. Pascal ABC и PascalABC.NET всех версий является свободно распространяемым программным обеспечением.
Учитывая, что задания практических работ могут выполняться студентами с помощью любой из приведенных систем программирования, мы будем стараться описывать только те возможности языка, которые есть во всех этих системах. Описываемые возможности иногда будут шире стандарта языка Паскаль. Связано это с тем, что существует ряд полезных доработок языка де-факто используемых большинством программистов.
Понятия синтаксиса, семантики и прагматики языка программирования
Разработка программы состоит из следующих этапов:
Создание или редактирование текста программы.
Компиляция - перевод программы с языка высокого уровня в машинно-ориентированные коды.
Исполнение откомпилированного файла.
Тестирование и отладка.
Компиляцию программы выполняет особая программа, называемая компилятором.
Этапы компиляции:
Лексический анализ.
Синтаксический анализ.
Семантический анализ.
Генерация промежуточного кода.
Оптимизация кода.
Генерация результирующего машинного кода.
В ходе лексического анализа текст программы разбивается на отдельные составляющие - лексемы. При выделении лексем важную роль играет алфавит языка, а также правила построения ее отдельных элементов: имен, комментариев, констант.
В ходе синтаксического анализа проверяется правильность записи операторов в соответствии с правилами языка. Ошибки, выявленные компилятором во время лексического и синтаксического анализа, называются синтаксическими ошибками.
Семантика языка программирования - это система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений языка. Не все семантические ошибки могут быть выявлены компилятором. Например, запись выражения в виде a/b*c не вызовет ошибки, хотя и является неправильной, исходя из приоритета выполнения операций. В ходе семантического анализа компилятор проверяет соответствие типов и допустимость операндов в операторах. Так попытка изменить значение константы, которая по определению является неизменяемым значением, приведет к семантической ошибке. Использование типа данных, недопустимого в данной конструкции, или несоответствие типов формальных и фактических параметров процедуры или функции, так же является семантической ошибкой.
При описании языков программирования большое внимание уделяется описанию синтаксиса и семантики, но знание только синтаксиса и семантики не сделает из человека программиста, он кроме этого должен знать прагматику языка. Прагматика языка программирования - это, по сути дела, методология программирования, т.е. описание методов и приемов, позволяющих, исходя из постановки задачи, составить программу ее решения. Описание прагматики языка программирования осложняется тем, что некоторые задачи, хотя и формулируются крайне просто, не имеют никакого алгоритма для их решения. Такова, например, задача: проверить, является ли любая данная программа семантически правильной. Задачи этого рода называются алгоритмически неразрешимыми.
Из-за существования алгоритмически неразрешимых задач предмет прагматики становится несколько расплывчатым и неопределенным - нельзя в общем случае дать никаких рекомендаций, которые от постановки задачи гарантированно приводили бы к ее решению. Кроме того, из-за разнообразия задач, решаемых с помощью компьютера, те рекомендации, которые могут быть даны, либо носят чересчур общий характер, либо, наоборот, слишком конкретны, относятся к узкому классу задач. Теория программирования, хотя и может гордиться рядом значительных достижений, ориентирована больше на разработчиков алгоритмических языков и программного обеспечения ЭВМ, чем на пользователей. Многие ее рекомендации представляют собой лишь постановки задач, решение которых потребует еще многих лет труда системных программистов, если вообще когда-либо будет достигнуто. Поэтому большую роль в овладении навыками составления программ играет разбор примеров разной степени сложности из разных классов задач.
Алфавит языка Паскаль и основные лексемы
Алфавит языка Паскаль
Латинские буквы прописные и строчные: A…Z, a…z.
Символы национальных алфавитов, например, русского.
Цифры: (0...9).
Зарезервированные символы:
; |
: |
, |
. |
+ |
- |
* |
/ |
< |
> |
= |
^ |
` |
( |
) |
[ |
] |
{ |
} |
$ |
# |
@ |
Зарезервированные сочетания символов:
:= |
>= |
<= |
<> |
.. |
(* |
*) |
Ключевые (зарезервированные) слова:
and end implementation program type
array file label record unit
begin for mod repeat until
case forward nil set uses
const function not shl var
div goto of shr while
do if or string with
downto in packed then xor
else interface procedure to
Использовать эти слова каким-либо другим способом, например, в качестве имен, нельзя. В большинстве систем программирования ключевые слова выделяются автоматически цветом или шрифтом. Мы же в дальнейшем, ключевые слова в программах будем выделять подчеркиванием.
Правила построения основных видов лексем
Прописные и строчные буквы во всем тексте программы на языке Паскаль не различаются. К основным лексемам относятся: имена, константы, комментарии.
Имена
Имя любого программного объекта в программе на Паскале должно быть идентификатором. К программным объектам относят переменные, константы, типы, саму программу, процедуры и функции. В современных версиях языка Паскаль идентификатор - это последовательность латинских букв, цифр и знака подчеркивания ( _ ), начинающаяся с буквы или со знака подчеркивания. Кроме этого, при записи идентификаторов в программе на Паскале нужно учитывать следующее:
Поскольку большие и маленькие буквы во всем тексте программы не различаются, т.е. идентификаторы Otvet, otvet, OTVET и oTVET будут с точки зрения компилятора эквивалентны.
Идентификатор не может совпадать с ключевым словом. Именно поэтому ключевые слова еще называют зарезервированными словами, т.е. они заняты под нужды языка, и программист их использовать не может.
Пример 3.1
A1, _fg, r_304 - будут являться идентификаторами
123, 1de, авп, packed - не будут.
Константы
Константы, встречающиеся в тексте программы, могут быть различных типов: числовые, строковые, символьные, логические.
Числовые константы могут быть целые и вещественные. Для записи целого числа могут использоваться цифры 0...9 и знаки +, -. Если знак перед числом не указан, то число считается положительным. Допустимы ведущие незначащие нули, при выводе числа они отбрасываются. Целое число, представленное в шестнадцатеричной системе счисления, записывается с использованием префикса $. При выводе такое число будет переведено в десятичную систему счисления.
Пример 3.2. Константы целого типа:
34 |
-825 |
+19 |
000056 |
00 |
- в десятичной форме;
$40 |
-$F |
$0b |
- в шестнадцатеричной форме (при выводе: 64, -15, 11).
Вещественное число может задаваться в форме с фиксированной точкой и с плавающей точкой. При записи вещественного числа в форме с фиксированной точкой в качестве разделителя целой и дробной части используется символ точка (.). Нужно отметить, что десятичная точка требует, по крайней мере, одну цифру слева от себя, т.е. запись .9, например, недопустима. При записи вещественного числа в форме с плавающей точкой сначала записывается мантисса числа (m), затем символ E (или e, поскольку большие и маленькие буквы Паскалем не различаются) и указывается порядок числа (p). Мантисса может быть целым числом или вещественным в форме с фиксированной точкой. Порядок задается целым десятичным числом. Формула, для преобразования числа из формы с плавающей точкой в форму с фиксированной точкой, следующая:
m E p = m ·10p.
Пример 3.3. Константы вещественного типа:
3.1415 |
0.00000127 |
-125.0 |
0.0 |
- в форме с фиксированной точкой;
0.31415E+001 |
789e-4 |
-1e+01 |
- в форме c плавающей точкой (соответствуют числам: 3,1415 0,0789 -10).
3,14 |
.001 |
-5.12E |
2e0.2 |
Вещественные числа, записанные с ошибкой:
Строковая константа - это произвольная последовательность символов, заключенная c обеих сторон в апострофы (`). Если внутри строковой константы должен присутствовать символ апострофа, то он указывается дважды. Пустая строковая константа записывается в виде двух подряд идущих апострофов (``).
Пример 3.4. Константы строкового типа:
`Добро пожаловать!`
`Магнитофон ``Вега`` продан.`
(будет выведено: Магнитофон `Вега` продан.)
Символьная константа - это ровно один символ, ограниченный апострофами. Обращение к любому символу возможен через его номер в таблице кодировки, путем указания этого номера с предшествующим символом решетки (#). Так, записи `D` и #68 дают ссылку на один и тот же символ, так как номер символа D в таблице кодировки равен 68.
Логическая константа может принимать только два значения True или False (при записи слов true и false регистр не имеет значения, как и при записи всего текста программы, при выводе логическая константа будет записана прописными буквами).
Пример 3.5. Константы логического, строкового и символьного типа:
TRUE - логическая константа;
`TRUE` - строковая константа;
`T`, #12 - символьные константы.
Комментарии паскаль язык слово константа
Комментарий с точки зрения Паскаль-компилятора - это последовательность символов, которая должна быть исключена из дальнейшей обработки текста программы. С помощью комментариев программист может пояснять текст программы. Комментарии, безусловно, полезны при передаче текста программы другим лицам, а так же и для самого программиста, если он захочет дорабатывать программу в будущем. Комментарии выделяются символами фигурных скобок, при этом символ { означает начало комментария, а символ } - конец комментария. Альтернативный способ выделения комментариев: с помощью зарезервированных сочетаний символов (* и *), первое из которых означает начало комментария, а второе - конец. Оба выше перечисленных способа создания комментариев позволяют делать как однострочные, так и многострочные комментарии. В современных версиях языка Паскаль, в частности в Pascal ABC, Free Pascal и Delphi, имеется возможность задавать однострочные комментарии с помощью сочетания символов //, которое означает начало комментария, и комментарий при этом распространяется только до конца текущей строки.
Пример 3.6. Использование комментариев в программе.
Var a:integer; (*Переменная а имеет целый тип*)
Begin
Readln(a); // Ввод значения переменной а с клавиатуры
a:=a+1; { Это на потом . . .
a:=a*2;
a:=a-a; }
writeln(a)
End.
В данном примере три комментария, первый - «Переменная а имеет целый тип», второй - «Ввод значения переменной а с клавиатуры» и третий - «Это на потом … а:=a*2; a:=a-a;». Третий комментарий многострочный, и использован для временного исключения части текста из программы.
Структура программы и ее синтаксис
Синтаксические диаграммы Вирта и структура программы
Для описания синтаксиса языка Паскаль будем использовать синтаксические диаграммы, введенные Н. Виртом. Элементы алфавита языка будем заключать в круг, например, , или, если они имеют большую длину, в прямоугольник со скругленными углами, например, . Понятия, требующие дальнейшей расшифровки, будем заключать в прямоугольник, например или . Понятие, расшифровываемое диаграммой, будем писать в начале диаграммы.
Рассмотрим синтаксическую диаграмму понятия «программа на языке Паскаль».
Рис. 1. Синтаксическая диаграмма понятия «программа на языке Паскаль»
На данной диаграмме отражены следующие факты:
обязательным элементом программы является только тело программы (в современных версиях Паскаля это именно так);
телу программы может (могут) предшествовать заголовок программы и(или) раздел описаний.
Рис. 2. Синтаксическая диаграмма понятия «заголовок программы»
Заголовок программы состоит из ключевого слова program, после которого в обязательном порядке должно быть указано имя, а после имени -- точка с запятой, например:
program Primer;
Тело программы представляет собой составной оператор, заканчивающийся точкой.
Рис.3. Синтаксическая диаграмма понятия «тело программы»
Рассмотрим, что представляет собой составной оператор.
Рис. 4. Синтаксическая диаграмма понятия «составной оператор»
Последовательность возникновения тех или иных элементов диаграммы в программе определяется изгибами стрелочек. Так запись на рис. 5 означает, что оператор между begin и end может быть или не быть, но если присутствует, то ровно в одном экземпляре.
Рис. 5. Пример диаграммы, в которой некоторый элемент встречается 0 или 1 раз
Запись на рис. 6 показывает, что операторов может быть много, но если операторов больше одного, то между ними нужно обязательно ставить «точку с запятой» (;).
Рис. 6. Пример диаграммы, в которой некоторый элемент встречается 1 или более раз
Таким образом, тело программы с точки зрения языка Паскаль это ноль или больше операторов, ограниченных спереди ключевым словом begin, а в конце ключевым словом end c точкой (end.). В соответствии с этим определением простейшая программа на языке Паскаль имеет вид:
begin
end.
Данная программа не содержит никаких действий. Она содержит только операторные скобки begin (открывающая скобка) и end (закрывающая скобка), роль которых -- объединить группу операторов в единый блок. Причем, поскольку после end стоит точка (.), данный блок имеет особую роль, он определяет всю программу. В тексте программы так же могут встречаться блоки операторов, оформленные с помощью операторных скобок begin...end, но они уже будут рассматриваться как части программы, а не как вся программа. Синтаксис Паскаля требует, чтобы операторы внутри составного оператора разделялись знаком «точка с запятой» (;). Нужно заметить, что не является ошибкой, если программист ставит точку запятой после каждого оператора, в том числе и после последнего оператора, т.е. перед end. В этом случае лишний знак «точка с запятой» будет трактоваться компилятором как пустой оператор, поскольку имеет место следующее определение:
Рис. 7. Синтаксическая диаграмма понятия «пустой оператор»
Приведенная выше программа, состоящая только из операторных скобок, довольно бесполезна, поскольку ничего не делает. Чтобы наполнить программу смыслом, рассмотрим основные виды операторов.
Раздел описаний
Раздел описаний является одной из частей программы и располагается перед телом программы. Раздел описаний в свою очередь может состоять из следующих частей:
1) раздел подключаемых модулей
uses . . .
2) раздел описания меток
label . . .
3) раздел описания констант
const . . .
4) раздел описания типов
type . . .
5) раздел описания переменных;
var . . .
6) раздел описания процедур и функций.
procedure . . . или function . . .
Раздел подключаемых модулей должен располагаться первым и может встречаться только один раз. Все остальные разделы описаний могут располагаться в любом порядке и встречаться по несколько раз.
Раздел описания меток
Раздел описания меток начинается с ключевого слова label, его синтаксис представлен на рис. 8.
Рис. 8. Синтаксическая диаграмма для раздела описания меток
Меткой может быть идентификатор или целое число без знака. С помощью метки можно пометить любую строку в программе, указав в начале строки саму метку и двоеточие. Перейти на строку, помеченную меткой, можно с помощью оператора перехода, синтаксис которого описан на рис. 9.
Рис. 9. Синтаксическая диаграмма для оператора перехода
Использование меток и операторов перехода в программе ухудшает ее понятность и затрудняет поиск ошибок. Э.Дейкстра и Н.Вирт сформулировали принципы структурного программирования, согласно которым любая программа может быть написана с использованием трех базовых конструкций: последовательное исполнение, ветвление, цикл. Поскольку использование методологии структурного программирования повышает эффективность труда программистов, подавляющее большинство из них используют эти принципы в своей работе, и поэтому раздел label и метки в настоящее время практически не используются. В Паскале АВС раздел label не реализован.
Раздел описания констант
В разделе описания констант можно обозначить некоторую постоянную величину именем, и в дальнейшем обращаться по этому имени к константе. Использование идентификаторов для констант повышает читабельность программы и удобство работы с ней, ведь в случае необходимости изменить значение константы придется менять только в одном месте, и не просматривать всю программу в поисках тех мест, где эта константа встречалась.
Современные реализации языка Паскаль позволяют использовать два типа констант:
«обычные» константы, могут хранить только одну величину (число, символ, строку, логическую величину, величину перечислимого типа) и не могут изменять свое значение по ходу программы;
типизированные константы, могут принимать значения структурированных типов, а так же изменять свое значение в программе. Подробно типизированные константы будут рассмотрены позже.
Синтаксис раздела описания констант приведен на рис. 10.
Рис. 10. Синтаксические диаграммы для описания «обычных» констант
«Обычные» константы удобно использовать, если в программе часто используется одно и то же значение, которое не может измениться (например, ставка подоходного налога). Кроме того, их можно использовать, если значение очень длинное и при его наборе можно ошибиться. Тип для «обычной» константы не указывается. Он определяется автоматически при анализе значения константы. Можно определять константы как значения выражений, используя в качестве операндов даже имена ранее определенных констант. Такие выражения называются константными, основное требование для их вычисления не требуется исполнять всю программу. В выражениях могут использоваться все математические операции (+, -, /, *, div, mod), логические операции (not, or, and, xor), операции отношения и некоторые функции.
Пример 4.1. Определение «обычных» констант.
const Min = 0; {константа - целое число}
Max = 100; {константа - целое число}
e = 2.7; {константа - вещественное число}
SpecChar = '\'; {константа - символ}
HelpStr = 'Нажмите клавишу F1'; {константа - строка}
OK = True; {логическая константа "истина"}
Interval = Max - Min + 1;
e2 = e*e;
BigHelpStr = HelpStr + ' для подсказки';
В Турбо-Паскале есть несколько зарезервированных констант, которые не нужно описывать в программе. Вот некоторые из них:
PI = 3.141592653E+00,
MaxInt = 32767 или 2147483647 (подробнее о константе MaxInt в следующей главе).
Раздел описания переменных
Синтаксис раздела описания переменных приведен на рис. 11.
Рис. 11. Синтаксическая диаграмма для раздела описания переменных
При описании переменной происходит выделение памяти для ее хранения. Начальное значение переменной при описании не присваивается, т.е. в начале работы программы значения всех переменных являются неопределенными.
Литература
Йенсен К., Вирт Н. Паскаль. Руководство пользователя. М.: Финансы и статистика, 1989.
Вирт Н. Систематическое программирования. Введение. М.: Мир, 1977.
Вирт Н. Алгоритмы + структуры данных = программы. - М.: Мир, 1985.
Размещено на Allbest.ru
Подобные документы
Логические конструкции в системе программирования Паскаль. Команды языка программирования, использование функций, процедур. Постановка и решение задач механики в среде системы Паскаль. Задачи статики, кинематики, динамики решаемые с помощью языка Паскаль.
курсовая работа [290,9 K], добавлен 05.12.2008Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.
лекция [55,7 K], добавлен 21.05.2009Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.
дипломная работа [276,6 K], добавлен 26.01.2011Лингвистическая концепция языка Паскаль. Интегрированная инструментальная оболочка. Основы построения программ на ТП 7.0. Алфавит языка и специфика использования символов. Простые типы данных: константы и переменные. Циклические конструкции и операции.
курсовая работа [284,6 K], добавлен 02.07.2011Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.
курсовая работа [292,0 K], добавлен 18.03.2013Описание конструкций языка программирования Паскаль, обеспечивающих ветвление. Организация циклических процессов. Создание программы для ввода последовательности вещественных чисел до появления 0, расчет среднего арифметического данной последовательности.
лабораторная работа [189,8 K], добавлен 17.04.2012Международный стандарт на язык программирования Паскаль. Приемы объектно-ориентированного программирования в Турбо Паскале. Символы языка, его алфавит. Этапы разработки программы. Понятие алгоритмов и алгоритмизации. Структура программ на Паскале.
курсовая работа [29,8 K], добавлен 28.02.2010Понятие алгоритма. Цикл программы. Структурная схема алгоритма. Элементы языка Тurbo Рascal. Алфавит. Идентификаторы. Комментарии. Лексика языка С++. ESC-последовательности. Операции. Ключевые слова. Комментарии.
контрольная работа [43,0 K], добавлен 24.04.2006Изучение истории создания языка Турбо-Паскаль, важнейшего инструмента для обучения методам структурного программирования. Анализ меню управления всеми ресурсами интегрированной инструментальной оболочки, зарезервированных слов, символьных переменных.
презентация [989,7 K], добавлен 06.12.2011