Основные понятия языка программирования высокого уровня алфавит лексемы примеры

Основные понятия языка

Аннотация: Вводятся базовые для всего дальнейшего изложения понятия: из каких простейших «кирпичиков» состоят все тексты на языке программирования, что понимают под типом данных, какие встроенные типы данных есть в языке C++.

Предисловие

Этот курс лекций построен на основе учебника автора «C/C++. Программирование на языке высокого уровня » [18], который выпускается издательством ПИТЕР с 2001 года по настоящее время. Учебнику был присвоен гриф Министерства образования Российской Федерации, он входит в списки рекомендуемой литературы во многих вузах России и ближнего зарубежья. Материалы учебника, вошедшие в этот курс, подверглись частичному обновлению и переработке. В 2010 году учебник был удостоен премии Правительства Санкт-Петербурга «За выдающиеся достижения в сфере высшего и профессионального образования» в составе учебно-методического комплекса по языкам программирования.

В этот комплекс входят также практикум по C/C++ [19] и учебники по языкам C# и Паскаль [20, построенные по единому принципу. Соответствующие учебные курсы можно найти на этом сайте. В комплекс входит более 250 индивидуальных вариантов заданий на лабораторные работы в расчете на учебную группу из 20 человек (все варианты можно найти в учебнике [18]) и более 1000 тестовых вопросов. Преподавателям будут полезны презентации лекций. На сайте интернет-школы программирования http://ips.ifmo.ru можно проверить правильность выполнения некоторых лабораторных работ с помощью системы автоматического тестирования программ.

Целью этого курса является краткое и четкое изложение основных особенностей языка С++ в соответствии со стандартом ISO / IEC 14882 (2003). Для написания программ во время обучения вы можете использовать, например, компилятор gcc или среду Microsoft Visual C++ 2005 Express Edition . Эти программные продукты распространяются бесплатно и достаточно хорошо поддерживают стандарт.

Читайте также:  Стратегия разработка мобильного приложения

Доброжелательную и конструктивную критику, а также предложения по улучшению курса направляйте автору по адресу pta- ipm @yandex.ru.

Состав языка

Презентацию к лекции Вы можете скачать здесь.

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

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

Все тексты на языке пишутся с помощью его алфавита. Алфавит C++ включает:

  • прописные и строчные латинские буквы и символ подчеркивания (_), который употребляется наряду с буквами;
  • арабские цифры от 0 до 9;
  • специальные символы, например +, *, < и &;
  • пробельные символы — пробел, символы табуляции, символы перевода строки и формата.

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

Из символов базового набора составляются лексемы языка и директивы препроцессора. Символы из набора реализации используются для написания комментариев. Компилятор комментарии игнорирует.

Лексемы

Существуют следующие виды лексем:

  • имена (идентификаторы);
  • ключевые слова;
  • знаки операций;
  • разделители;
  • литералы (константы).

Границы лексем определяются другими лексемами , такими, как разделители или знаки операций.

Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются константа 128 (но не ее часть 12), имя Vasia , ключевое слово goto и знак операции сложения +. Из лексем составляются выражения и операторы.

  • Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы величин a и b .
  • Оператор задает законченное описание некоторого действия.

Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями. Например, int a ; — это оператор описания целочисленной переменной a .

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

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

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

Путь от текста программы к исполняемому коду

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

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

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

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

Если ошибок в программе не обнаружено, выполняется фаза генерации кода.Конкретный вид кода зависит от того, приложение какого типа мы создаем: Windows или . NET . Если это обычное приложение Windows , то строится объектный модуль — заготовка исполняемой программы в машинных кодах. Для приложения . NET формируется код на системно-независимом языке CIL .

Дальнейшая судьба этого кода также зависит от типа создаваемого приложения. Для обычного приложения Windows компоновщик (синонимы — линкер, редактор связей ) формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие элементы стандартных библиотек , которые используются в любой программе (например, для выполнения вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки . Исполняемый модуль имеет расширение . exe и запускается на выполнение обычным образом.

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

Описание синтаксических конструкций

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

Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один.

Рассмотрим лексемы языка С++ .

Имена (идентификаторы)

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

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

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

Не жалейте времени на придумывание подходящих имен. Имя должно отражать смысл хранимой величины, отвечать принятой нотации , быть легко распознаваемым и, желательно, не содержать символов, которые можно перепутать друг с другом, например, 1, l и I (единица, строчная L и прописная i ).

Источник

Оцените статью