Какие литеры алфавита языка программирования использованы в текстах ваших программ
Описанию грамматики языка предшествует описание его алфавита. Алфавит любого языка состоит из фиксированного набора символов, однозначно трактуемых. Алфавит языков программирования, как правило, связан с литерами клавиатуры печатной машинки. Клавиатуры персональных компьютеров близки к ним по наличию литер.
Алфавиты большинства языков программирования близки друг другу и основываются на буквах латинского алфавита, арабских цифрах и общепринятых спецсимволах, таких как знаки препинания, математических операций, сравнений и обозначений. Большинство популярных языков программирования в своем алфавите содержат следующие элементы:
<буква> : : = AaBbCcDdEeFf ит.д.
<знак арифметической операции >::=*/+-
<служебное слово> :: = begin end if then else for next и т.д.
<спецсимвол> :: = <знак арифметической операции> | <разделитель> |
<основной символ>::=<буква> | <цифра> | <спецсимвол>
<комментарий>::=<любая последовательность символов>
Несмотря на значительные различия между языками программирования, ряд фундаментальных понятий в большинстве из них схожи. Приведем часть этих понятии.
Оператор- одно из ведущих понятий всех языков программирования (теоретически, за исключением чисто декларативных; но в действительности и они используют родственное понятие). Каждый оператор представляет собой законченную фразу языка и определяет однозначно трактуемый этап обработки данных В соответствии с теорией алгоритмов выделяют основные (базисные) операторы языка: присвоения, условный и безусловный переход, пустой оператор. К производным, не основным, относят составной оператор, оператор выбора, оператор цикла и оператор присоединения.
Все операторы языка в тексте программы отделяются друг от друга явными или неявными разделителями, например:
Операторы выполняются в порядке их следования в тексте программы. Лишь с помощью операторов перехода этот естественный порядок может быть нарушен.
Большая часть операторов ведет обработку величин. Величинымогут быть постоянными и переменными.Значения постоянных величин не изменяются в ходе выполнения программы. Величина характеризуется типом, именем и значением. Наиболее распространенные типы величин - числовые (целые и вещественные), символьные, логические. Тип величины определяется ее значением.
Другая важная классификация величин - простые и структурированные. Простая величина в каждый момент может иметь не более одного значения. Ей соответствует одна ячейка памяти (поскольку термин «ячейка» несколько устарел, часто говорят «машинное слово») или ее эквивалент во внешней памяти компьютера. Структурированная величина, имея одно имя, может иметь разом несколько значений. Эти значения представляют собой элементы (компоненты) величины. Самый широкоизвестный пример - массив, у которого элементы различаются по индексам (номерам). Вопрос о структурировании величин - входных, выходных и промежуточных - для успеха решения прикладной задачи не менее важен, чем вопрос о правильном написании последовательности операторов.
Важнейшие характеристики структурированной величины таковы: упорядоченность(да или нет),однородность(да или нет),способ доступак элементам,фиксированность числа элементов(да или нет). Так, массив является упорядоченной однородной структурой с прямым доступом к элементам и фиксированным их количеством.
Всем программным объектам в языках даются индивидуальные имена.Имя программного объекта называютидентификатором(от слова «идентифицировать»). Чаще всего идентификатором является любая конечная последовательность букв к цифр, начинающаяся с буквы:
<идентификатор>::=<буква> | <идентификатор> | <буква>
Как правило, в большинстве языков программирования в качестве идентификатора запрещается использовать служебные слова языка.
Многим слово «идентификатор» не нравится, и в настоящее время чаще употребляют слово «имя», поскольку
Программисты выбирают имена по своему усмотрению. Принципы выбора и назначения имен программным объектам естественны. Следует избегать мало выразительных обозначений, не гоняться за краткими именами. Имена должны быть понятны, наглядны, отражать суть обозначаемого объекта. Например,
Summa, Time, i, j, integral, init и т. п.
Некоторым идентификаторам заранее предписан определенный смысл и их называют стантартными, например, Sin- это имя известной математической функции.
Описанияили объявления программных объектов связаны с правилами обработки данных. Данные бывают разные и необходимо для каждого из них определить его свойства. Например, если в качестве данных выступает массив, то необходимо задать его размерность, границы индексов, тип элементов массива. Описательная часть языка программирования является необходимой как для системных программистов - разработчиков трансляторов, которые должны, в частности, проводить синтаксическую и семантическую диагностику программ, - так и для «прикладного» программиста, которому объявления программных объектов часто облегчают процесс разработки и отладки программ.
В некоторых языках стандартные описания простых числовых и символьных данных опускают (описания по умолчанию), или в них задаются правила описания по имени объекта. Например, в Фортране переменные, имена которых начинаются с букв I,J, К,L,M,N, могут принимать целые значения (при отсутствии явного описания типа, которое возможно), т.е. определены как числовые данные целого типа. В Бейсике-MSX данные строкового типа присваиваются переменным, имена которых заканчиваются специальным символом$:A$,S1$.
Особый интерес представляют в языках программирования описания нестандартных структур данных, таких как запись, файл, объект, список, дерево и т.п.
Приведем список наиболее употребительных обозначений типов данных, используемых в описаниях:
Целый - Integer
Вещественный - Real
Логический - Boolean
Символьный - Char
Строковый - String
Массив - Array
Множество -Set
Файл - File
Запись - Record
Объект - Object
Переменныеиграют важнейшую роль в системах программирования. Понятие «переменная» в языках программирования отличается от общепринятого в математике. Переменная - это программный объект, способный принимать некоторое значение с помощью оператора присваивания. В ходе выполнения программы значения переменной могут неоднократно изменяться. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержимое которой является ее значением. Синтаксис переменной, точнее, ее идентификатора, как правило, имеет вид:
Семантический смысл переменной заключается в хранении некоторого значения. соответствующего ее типу (например, переменная целого типа может принимать значение произвольного целого числа), а также в выполнении с ней операций пересылки в нее и извлечения из нее этого значения.
Функция- это программный объект, задающий вычислительную процедуру определения значения, зависимого от некоторых аргументов. Вводится в языки программирования для задания программистом необходимых ему функциональных зависимостей. В каждом языке высокого уровня имеется в наличии библиотека стандартных функций: арифметических, логических, символьных, файловых и т.п. Функции -стандартные и задаваемые программистом - используются в программе в выражениях.
Процедура- это программный объект, представляющий некоторый самостоятельный этап обработки данных. По сути, процедуры явились преемниками подпрограмм, которые были введены для облегчения разработки программ еще на самых ранних стадиях формирования алгоритмических языков. Процедура имеет входные и выходные параметры, называемые формальными. При использовании процедуры формальные параметры заменяются на фактические.
Модуль(Unit) - это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки.
По сути, модуль - это набор констант, типов данных, переменных, процедур и функций. В состав модуля входят разделы: заголовок, интерфейс, реализация, инициализация.
Заголовокнеобходим для ссылок на модуль.
Интерфейссодержит объявления, включая процедуры и функции.
Раздел «реализация»содержит тела процедур и функций, перечисленных в интерфейсной части.
Раздел «инициализация» содержит операторы, необходимые для инициализации модуля.
Каждый модуль компилируется отдельно, и каждый элемент модуля можно использовать в программе без дополнительного объявления.
Контрольные вопросы и задания
1. Какие преимущества имеют языки программирования высокого уровня по сравнению с машинно-ориентированными языками?
2. Каковы основные составляющие языка программирования высокого уровня?
3. В чем различия понятий языков программирования от аналогичных понятий математического «языка»?
4. С какой целью используются и что представляют собой металингвистические формулы Бэкуса-Наура?
5. Что представляет собой синтаксическая диаграмма Вирта?
6. В чем различие между постоянными и переменными величинами? Чем характеризуется величина?
7. В чем принципиальная разница между величинами простыми и структурированными?
Описанию грамматики языка предшествует описание его алфавита. Алфавит любого языка состоит из фиксированного набора символов, однозначно трактуемых. Алфавит языков программирования, как правило, связан с литерами клавиатуры печатной машинки. Клавиатуры персональных компьютеров близки к ним по наличию литер.
Алфавиты большинства языков программирования близки друг другу и основываются на буквах латинского алфавита, арабских цифрах и общепринятых спецсимволах, таких как знаки препинания, математических операций, сравнений и обозначений. Большинство популярных языков программирования в своем алфавите содержат следующие элементы:
< служебное слово > :: = begin end if then else for next и т . д .
<спецсимвол> :: = <знак арифметической операции> | <разделитель> |
Несмотря на значительные различия между языками программирования, ряд фундаментальных понятий в большинстве из них схожи. Приведем часть этих понятии.
Оператор - одно из ведущих понятий всех языков программирования (теоретически, за исключением чисто декларативных; но в действительности и они используют родственное понятие). Каждый оператор представляет собой законченную фразу языка и определяет однозначно трактуемый этап обработки данных В соответствии с теорией алгоритмов выделяют основные (базисные) операторы языка: присвоения, условный и безусловный переход, пустой оператор. К производным, не основным, относят составной оператор, оператор выбора, оператор цикла и оператор присоединения.
Все операторы языка в тексте программы отделяются друг от друга явными или неявными разделителями, например:
Операторы выполняются в порядке их следования в тексте программы. Лишь с помощью операторов перехода этот естественный порядок может быть нарушен.
Большая часть операторов ведет обработку величин. Величины могут быть постоянными и переменными. Значения постоянных величин не изменяются в ходе выполнения программы. Величина характеризуется типом, именем и значением. Наиболее распространенные типы величин - числовые (целые и вещественные), символьные, логические. Тип величины определяется ее значением.
Другая важная классификация величин - простые и структурированные. Простая величина в каждый момент может иметь не более одного значения. Ей соответствует одна ячейка памяти (поскольку термин «ячейка» несколько устарел, часто говорят «машинное слово») или ее эквивалент во внешней памяти компьютера. Структурированная величина, имея одно имя, может иметь разом несколько значений. Эти значения представляют собой элементы (компоненты) величины. Самый широкоизвестный пример - массив, у которого элементы различаются по индексам (номерам). Вопрос о структурировании величин - входных, выходных и промежуточных - для успеха решения прикладной задачи не менее важен, чем вопрос о правильном написании последовательности операторов.
Важнейшие характеристики структурированной величины таковы: упорядоченность (да или нет), однородность (да или нет), способ доступа к элементам, фиксированность числа элементов (да или нет). Так, массив является упорядоченной однородной структурой с прямым доступом к элементам и фиксированным их количеством.
Всем программным объектам в языках даются индивидуальные имена. Имя программного объекта называют идентификатором (от слова «идентифицировать»). Чаще всего идентификатором является любая конечная последовательность букв к цифр, начинающаяся с буквы:
Как правило, в большинстве языков программирования в качестве идентификатора запрещается использовать служебные слова языка.
Многим слово «идентификатор» не нравится, и в настоящее время чаще употребляют слово «имя», поскольку
Программисты выбирают имена по своему усмотрению. Принципы выбора и назначения имен программным объектам естественны. Следует избегать мало выразительных обозначений, не гоняться за краткими именами. Имена должны быть понятны, наглядны, отражать суть обозначаемого объекта. Например,
Summa, Time, i, j, integral, init и т . п .
Некоторым идентификаторам заранее предписан определенный смысл и их называют стантартными, например, Sin - это имя известной математической функции.
Описания или объявления программных объектов связаны с правилами обработки данных. Данные бывают разные и необходимо для каждого из них определить его свойства. Например, если в качестве данных выступает массив, то необходимо задать его размерность, границы индексов, тип элементов массива. Описательная часть языка программирования является необходимой как для системных программистов - разработчиков трансляторов, которые должны, в частности, проводить синтаксическую и семантическую диагностику программ, - так и для «прикладного» программиста, которому объявления программных объектов часто облегчают процесс разработки и отладки программ.
В некоторых языках стандартные описания простых числовых и символьных данных опускают (описания по умолчанию), или в них задаются правила описания по имени объекта. Например, в Фортране переменные, имена которых начинаются с букв I , J , К, L , M , N , могут принимать целые значения (при отсутствии явного описания типа, которое возможно), т.е. определены как числовые данные целого типа. В Бейсике-MSX данные строкового типа присваиваются переменным, имена которых заканчиваются специальным символом $: A $, S 1$.
Особый интерес представляют в языках программирования описания нестандартных структур данных, таких как запись, файл, объект, список, дерево и т.п.
Приведем список наиболее употребительных обозначений типов данных, используемых в описаниях:
Переменные играют важнейшую роль в системах программирования. Понятие «переменная» в языках программирования отличается от общепринятого в математике. Переменная - это программный объект, способный принимать некоторое значение с помощью оператора присваивания. В ходе выполнения программы значения переменной могут неоднократно изменяться. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержимое которой является ее значением. Синтаксис переменной, точнее, ее идентификатора, как правило, имеет вид:
Семантический смысл переменной заключается в хранении некоторого значения. соответствующего ее типу (например, переменная целого типа может принимать значение произвольного целого числа), а также в выполнении с ней операций пересылки в нее и извлечения из нее этого значения.
Функция - это программный объект, задающий вычислительную процедуру определения значения, зависимого от некоторых аргументов. Вводится в языки программирования для задания программистом необходимых ему функциональных зависимостей. В каждом языке высокого уровня имеется в наличии библиотека стандартных функций: арифметических, логических, символьных, файловых и т.п. Функции -стандартные и задаваемые программистом - используются в программе в выражениях.
Процедура - это программный объект, представляющий некоторый самостоятельный этап обработки данных. По сути, процедуры явились преемниками подпрограмм, которые были введены для облегчения разработки программ еще на самых ранних стадиях формирования алгоритмических языков. Процедура имеет входные и выходные параметры, называемые формальными. При использовании процедуры формальные параметры заменяются на фактические.
Модуль ( Unit ) - это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки.
По сути, модуль - это набор констант, типов данных, переменных, процедур и функций. В состав модуля входят разделы: заголовок, интерфейс, реализация, инициализация.
Заголовок необходим для ссылок на модуль.
Интерфейс содержит объявления, включая процедуры и функции.
Раздел «реализация» содержит тела процедур и функций, перечисленных в интерфейсной части.
Раздел «инициализация» содержит операторы, необходимые для инициализации модуля.
Каждый модуль компилируется отдельно, и каждый элемент модуля можно использовать в программе без дополнительного объявления.
Ключевые слова: Алфавит языка Паскаль,
Изучение алфавита языка лучше всего начинать на примере стандартной программы, используемой при изучении любого языка программирования:
Первое, что мы узнаем — какие же буквы, символы, значки можно использовать в программе на Паскале. Ведь алфавит — конечный набор знаков, из которых строятся все конструкции, — является основой любого языка.
Далее перечислены составляющие алфавита языка Паскаль:
- цифры (обычные десятичные арабские);
- латинские буквы, прописные и заглавные (будем их в дальнейшем называть маленькими и большими). К буквам еще относится символ «_» (подстрочник или нижнее подчеркивание), так как он используется именно в качестве буквы. Во многих конструкциях языка маленькие и большие буквы не различаются;
- специальные символы.
В языке они интерпретируются как один символ (писать символы, входящие в пару, надо обязательно подряд, в одной строке без пробела).
Особое место среди специальных символов занимают служебные (зарезервированные) слова. В языке имеется фиксированный небольшой набор (несколько десятков) слов, зарезервированных для определенных целей (для любых других целей их использовать запрещается). Для того чтобы отличить служебные слова от других наборов символов, в учебниках их принято выделять жирным шрифтом или курсивом, писать с большой буквы, на письме — подчеркивать. Служебные слова состоят из букв — символов алфавита, однако мы их выделяем как особые неделимые единицы алфавита языка.
Мы здесь не задаемся целью привести полностью весь набор символов, допустимых в языке, не предъявляем список служебных слов для заучивания — со всеми этими объектами мы познакомимся в процессе изучения материала.
Перечисленные символы входят в стандарт языка и используются для написания его конструкций. Однако для написания подсказок пользователю или некоторых конструкций в процессе работы программы этих символов бывает недостаточно. Для адаптации программы под пользователей разных стран в язык ввели четвертую группу символов, не входящую в стандарт языка. Это символы национального алфавита, они имеют особый статус, их использование ограничено.
В естественном языке из символов алфавита составляются слова, фразы. Так и в Паскале из символов алфавита строятся сложные конструкции: имена, константы, операторы и, в конце концов, целая программа.
Вернемся к нашей программе, посмотрим, какие элементы алфавита мы в ней использовали.
Слова Program, Begin, End относятся к служебным. Как видим, служебные слова «заимствованы» из английского языка, так что выучить их будет несложно. Большие и маленькие буквы в служебных словах Паскаль не различает.
В нашей программе использовано много разделителей, а вот никаких знаков операций нет. Во второй строке мы видим текст на русском языке. Это — комментарий, пояснение к программе. Комментарий представляет собой один из особых случаев, где можно использовать символы национального алфавита.
Также в нашей программе использованы имена и константы.
Константы. С точки зрения языка константы определяют изображения значений, запись которых подчиняется определенным правилам. Константы могут быть числовые, логические, символьные и строковые (об этом мы, естественно, поговорим подробнее позже).
В нашей программе присутствует одна константа-строка:
Имена. Объекты программы (переменные, функции, процедуры) должны иметь имена (идентификаторы). Иногда эти имена определены заранее, они называются стандартными (например, существует функция sin ). В отличие от служебных слов назначение стандартного идентификатора может быть переопределено программистом (но делать это без особых причин во избежание путаницы не следует). Большинство же имен в своей программе придумывает программист.
В нашей программе именем является слово FIRST , мы его придумали, оно не определено языком. Writeln — тоже имя, но оно стандартное.
Имена (часто их называют идентификаторы) могут состоять из букв и цифр, начинаться должны с буквы, причем под буквами мы здесь подразумеваем только латинские буквы и значок «_». Большие и маленькие буквы в именах язык не различает. Длина имени, вообще говоря, не ограничивается (хотя понятно, что превышать длину строки она никак не может), но различаются идентификаторы по некоторому количеству первых символов (в большинстве версий — 63). Например, имена
A, A234, X45G, Dlina, Summa_Otr, Cos3 — правильные;
234A, СТОЛ, Summa-otr, cos(3) — неправильные;
KROKODIL, krokodil, Krokodil, KrokoDil — одинаковые.
Как и любой другой язык программирования, Pascal имеет свой алфавит. Под алфавитом языка программирования понимают набор символов, с помощью которых могут быть образованы величины, выражения и операторы.
Символы, используемые в идентификаторах
В качестве цифр допустимо использовать 10 арабских цифр от 0 до 9. В идентификаторах они могут присутствовать в любой позиции, кроме первой. Цифры используются также в изображении числовых констант (например, 157 или 12.8). Символ подчеркивания может находиться в любой позиции.
Длина идентификатора может быть любой, но значимыми являются только первые 63 символа, и по этим символам все идентификаторы должны быть уникальными.
Разделители
Разделители используются для отделения друг от друга идентификаторов, чисел, зарезервированных слов. В качестве разделителей можно использовать:
В любом месте программы, где можно поместить один разделитель, их можно поместить любое количество и в любом сочетании. Это позволяет более наглядно представить структуру программы.
Комментарии заключаются либо в скобки , либо в скобки вида (* *) и могут занимать любое число строк. Комментарий, в котором за открывающей скобкой идет знак $, является директивой компилятора. Во время компиляции программы все комментарии, за исключением директив компилятора, игнорируются.
Специальные символы
Специальные символы, выполняющие в языке определенные функции, можно разделить на три категории:
Знаки пунктуации
Допустимые знаки пунктуации и их назначение представлены ниже:
Знаки операций
Зарезервированные слова
В языке Pascal(Паскаль) есть слова, которые не разрешается использовать для своих идентификаторов. Для разных версий Pascal(Паскаль) существует собственный набор зарезервированных слов.
Зарезервированные слова включают служебные слова (например, begin, end, div и т. д.) и имена директив (например, external, forward и т. д.). Служебные слова можно использовать только по своему прямому назначению и их нельзя переопределять. Директивы также имеют свое определенное назначение, но в отличие от служебных слов их можно переопределить, однако делать это крайне нежелательно.
Зарезервированные слова представлены ниже:
Слово | Описание |
---|---|
and | Логическое И |
asm | Начало блока на Ассемблере |
array | Объявление массива |
begin | Начало тела программы, подпрограммы, составного оператора |
case | Оператор выбора |
const | Задание константы |
constructor | объявление конструктора |
destructor | объявление деструктора |
div | получение целой части от деления |
do | признак начала оператора цикла |
downto | указание на просмотр элементов цикла от большого числа к меньшему |
else | альтернативная часть в условном операторе |
end | конец тела программы, подпрограммы, составного оператора |
exports | указывает список процедур и функций, которые может передавать библиотека DLL |
file | файловый тип |
function | начало объявления функции |
goto | оператор перехода |
if | начало условного оператора |
implementation | исполнительная часть модуля |
in | проверка принадлежности множеству |
inherited | наследуемый метод |
inline | директива включения в тело программы части написанной на Ассемблере |
interface | интерфейс модуля |
label | объявление метки |
library | задание библиотеки DLL |
mod | получение остатка от деления |
nil | пустой указатель |
not | логическое НЕ |
object | объявление объекта |
of | тип-компонент в определении массива |
or | логическое ИЛИ |
packed | признак «упакованного массива» |
procedure | начало объявления процедуры |
program | заголовок программы |
record | объявление записей |
repeat | начало цикла с постусловием |
set | объявление множества |
shl | сдвиг битов влево |
shr | сдвиг битов вправо |
string | объявление строки |
then | часть условного оператора |
to | указание на просмотр элементов цикла от меньшего к большему |
type | идентификатор раздела типов |
unit | начало объявление модуля |
until | конец цикла с постусловием |
uses | указатель используемых модулей |
var | идентификатор раздела переменных |
while | начало цикла с предусловием |
with | начало оператора работы с записями |
хог | исключающее ИЛИ |
Зарезервированные слова языка Free Pascal представлены ниже:
abs | absolute | and | arctan | array | as | asm |
begin | boolean | break | case | char | class | const |
constructor | continue | cos | destructor | dispose | div | do |
downto | else | end | eof | eoln | except | exp |
exports | false | file | finalization | finally | for | function |
goto | if | implementation | in | inherited | initialization | inline |
input | integer | interface | is | label | library | ln |
maxint | mod | new | nil | not | object | odd |
of | on | operator | or | ord | output | pack |
packed | page | pred | procedure | program | property | raise |
read | readln | real | record | reintroduce | repeat | reset |
rewrite | round | self | set | shl | shr | sin |
sqr | sqrt | string | succ | text | then | threadvar |
to | true | trunc | try | type | unit | until |
uses | var | while | with | write | writeln | xor |
Неиспользуемые символы
Пунктуация
Компилятор игнорирует пробелы, символы табуляции и перевод строки. По этой причине, пунктуация должна указать компилятору, где заканчивается оператор. Для разделения операторов используется символ ;.
Какие строки должны оканчиваться точкой с запятой:
- Название программы;
- Строки объявления переменных и констант;
- Каждое объявление пользовательских типов данных;
- Почти все операторы языка.
Как было сказано выше, Pascal(Паскаль) не требует наличия отступов в коде программы. Однако они улучшают читабельность кода, что очень полезно для программиста.
Сравним две программы с отступами и без:
Как мы видим, понять что делает вторая программа достаточно сложно, даже на таком простом примере.
Читайте также: