Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Синтаксис в программировании

Синтаксис программы

У каждого языка программирования есть синтаксис и семантика. Синтаксис — это совокупность формальных правил написания про­грамм на данном языке, семантика — это смысловое значение напи­санного.

Важным элементом синтаксиса является алфавит языка, который представляет собой набор всех допустимых в языке символов.

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

Например, в Turbo Pascal используются следующие зарезервиро­ванные слова: and, asm, array, begin, case, const, constructor, destructor, div, do, downto, else, end, file, for и др.

При наборе программы эти слона отображаются на экране белым цветом, напоминая нам, что они являются ключевыми.

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

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

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

Любой язык программирования имеет целый ряд встроенных функ­ций, т.е. готовых программ, одно обращение к которым по их имени приводит к получению результата, например sin (х), cos(x), log(x) и т.д. Напомним, что функция sqrt (х) обеспечивает нахождение квадратно­го корня из указанного аргумента.

Алгоритм, записанный на языке программирования, называется программой.

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

Любая программа выполняется в результате ее трансляции — пере­вода записи операторов на язык компьютера. Каждый оператор в про­грамме после трансляции будет представлен набором кодов команд. Эти команды выполняются в оперативной памяти компьютера.

Все константы и переменные размещаются в своих ячейках памяти в соответствии с присвоенными им идентификаторами — именами.

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

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

Операторы языка программирования позволяют приступить к на­писанию простейших программ с использованием типовых алгорит­мических конструкций.

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

Ранее вы познакомились с основными алгоритмическими конструк­циями: линейной, разветвляющейся и циклической. Для реализации этих конструкций используются соответствующие операторы языка программирования. Синтаксис (правила) записи операторов в различ­ных языках программирования могут несколько отличаться. В связи с этим можно использовать список правил оформления операторов языка — неотъемлемую часть ПО (системы) языка программирования, представленную в разделе «Помощь». Часто в системе языка програм­мирования автоматически воспроизводится типовой оператор при наборе первых символов оператора, а пользователю требуется его под­править. Рассмотрим основные операторы, реализующие типовые ал­горитмические конструкции.

Оператор присваивания. Этот оператор работает так: результат вычисления выражения в правой части требуется присвоить в качестве значения переменной Y. Именно потому, что данный оператор выполняет функции не толь­ко вычисления, но и присваивания, в левой его части не может быть выражения, а только имя одной переменной — ячейки памяти ком­пьютера, в которую производится запись результата вычисления.

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

Оператор вывода. Этот оператор предназначен для вывода резуль­татов или на экран монитора или на принтер.

Читать еще:  Задачи линейного программирования предполагают

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

Оператор условного перехода передает управление только в случае истинности некоторого условия, а в противном случае — просто игно­рируется.

Смысл этого оператора состоит в том, что если условие истинно, то выполняется оператор или группа операторов, следующих за словом THEN, а если условие ложно, то выполняется оператор или группа операторов, следующих за словом ELSE (иначе). Конструкция ELSE здесь заключена в квадратные скобки. По правилам описания форматов это означает ее необязательность. В случае отсут­ствия в формате конструкции ELSE оператор выполняет также дей­ствия: если условие истинно, то выполняется оператор или группа операторов, следующих за словом THEN, а в противном случае — опе­ратор, следующий за оператором IF в программе. Если используется группа операторов, то они разделяются двоеточиями.

Для реализации циклических алгоритмических конструкций ис­пользуется оператор цикла, в языке Basic это «связка» операторов FOR и NEXT. Первый из них является начальным и главным оператором. Он открывает собой тело цикла, т. е. группу операторов, которые будут циклически выполняться фиксированное число раз.

Синтаксис языков программирования

Формализуем основные конструкции языка программирования SML посредством форм Бэкуса-Наура или БНФ (история их создания изложена во вступительной лекции).

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

Определим понятие синтаксиса более строго.

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

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

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

Мы будем рассматривать параллельно БНФ -формализации синтаксиса ламбда-исчисления и языка программирования SML . В последнем случае мы ограничимся базовым набором конструкций языка, подчеркнув такие существенные возможности, как кортежи ( tuples ) и let-выражения .

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

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

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

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

Рассмотрим синтаксис языка программирования SML в сравнении с синтаксисом ламбда-исчисления .

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

Прежде всего, необходимо договориться об обозначениях.

Рассмотрим традиционные обозначения БНФ и поясним смысл каждого из них.

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

Определяющий символ «::=» отделяет определяемую конструкцию от составляющих ее ранее определенных базовых конструкций.

Определяемая конструкция записывается слева от «::=» в угловых скобках » » .

Альтернативы (возможные варианты) конструкций перечисляются по вертикали.

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

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

Поясним смысл приведенных обозначений.

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

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

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

Для иллюстрации перечисленных выше тезисов рассмотрим важнейшие синтаксические категории языка программирования SML .

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

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

Под термином » зарезервированное » (или, иначе, служебное) слово будем иметь в виду конструкцию языка, однозначно интерпретируемую в качестве инструкции языка программирования (например, «if» , «then» , «let» ). Напомним, что в данной нотации цитирование производится без кавычек или других символов-ограничителей.

Читать еще:  Операторы языков программирования

Комментарием назовем произвольный поясняющий текст к программе, который, согласно синтаксису языка SML , положено заключать в ограничители вида «(*» и «*)» .

Синтаксис (программирование)

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

Каждый язык программирования имеет синтаксическое описание. Обычно синтаксис языка определяют посредством правил Бэкуса-Наура.

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

Синтаксис записи функции

Синтаксис записи функции — жёсткое правило, которому должна удовлетворять запись кода функции; форма записи функции. Если синтаксис функции будет неверен, компилятор вернет ошибку и программа не будет собрана, пока ошибка не будет исправлена.

К синтаксическим ошибкам записи функции относятся (неправильная сигнатура):

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

Wikimedia Foundation . 2010 .

Смотреть что такое «Синтаксис (программирование)» в других словарях:

Синтаксис (значения) — Синтаксис: В Викисловаре есть статья «синтаксис» Синтаксис (греч … Википедия

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

Объектно-ориентированное программирование на Python — Объектно ориентированное программирование на Python программирование на Python с использованием парадигмы ООП: с самого начала Python проектировался как объектно ориентированный язык программирования[1]. Содержание 1 Введение 1.1 … Википедия

Шаблон (программирование) — Шаблоны (англ. template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например типам данных, размерам буферов, значениям по умолчанию). В C++ возможно создание шаблонов функций и … Википедия

Конструктор (программирование) — У этого термина существуют и другие значения, см. Конструктор. В объектно ориентированном программировании конструктор класса (от англ. constructor, иногда сокращают ctor) специальный блок инструкций, вызываемый при создании объекта.… … Википедия

SSI (программирование) — У этого термина существуют и другие значения, см. SSI. SSI (Server Side Includes включения на стороне сервера) несложный язык для динамической «сборки» веб страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML… … Википедия

Аспектно-ориентированное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия

Присваивание (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия

Присвоение (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия

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

Синтаксис и семантика языка программирования

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

Синтаксис языка — совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.

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

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

· «::=»— читается как «может быть заменено на»,

· «|» — читается как «или».

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

Пример БНФ

Правила построения конструкции , записанные в

БНФ, могут выглядеть следующим образом:

::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

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

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

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

Алфавит языка программирования Borland Pascal 7.0 включает:

1. строчные, прописные буквы латинского алфавита (a..z, A..Z) и знак подчеркивания ( _ ), который также во многих случаях считается буквой (строчные и прописные буквы не различаются);

Читать еще:  Технологии визуального программирования

3. специальные знаки, состоящие из одного и двух символов:

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

Из символов алфавита в соответствии с правилами синтаксиса строят различные конструкции. Простейшей из них является конструкция .

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

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

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

Структура программы

Программа на Borland Pascal состоит из трех частей: заголовка, раздела описаний и раздела операторов.

  • Заголовок программы не является обязательным, он состоит из служебного слова program и идентификатора — имени программы.
  • Раздел описаний содержит описания всех используемых программой ресурсов (полей данных, подпрограмм и т.д.).
  • Раздел операторов заключается в, так называемые, операторные скобки begin . end и заканчивается точкой. Между операторными скобками записывают управляющие операторы программы, которые разделяют специальным знаком – точкой с запятой «;». Если точка с запятой стоит перед end, то считается, что после точки с запятой стоит «пустой» оператор.
  • В тексте программы возможны комментарии, которые помещают в фигурные скобки.

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

Write (‘Введите два натуральных числа:’);

if a>b then a:=a-b <если a>b, тогда a:=a-b>

Writeln(‘Hauбoльшuй общий делитель равен ’,a);

Программа названа «example». Раздел описаний в данном случае включает только описание переменных (см. параграф 2.3). Раздел операторов содержит операторы ввода исходных данных, вычислений и вывода результатов. Начнем рассмотрение особенностей программирования на языке Borland Pascal с проблемы описания данных.

C++ — Базовый синтаксис

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

  • Объект. Объекты имеют состояния и поведение. Пример: у собаки есть состояния — цвет, имя, порода, а также поведение — виляние, лай, еда. Объект является экземпляром класса.
  • Класс . Класс может быть определен как шаблон / план, который описывает поведение / состояния, которые поддерживает объект своего типа.
  • Методы . Метод — это в основном поведение. Класс может содержать много методов. Это в методах, где записываются логики, обрабатываются данные и выполняются все действия.
  • Переменные экземпляра. Каждый объект имеет свой уникальный набор переменных экземпляра. Состояние объекта создается значениями, присвоенными этим переменным экземпляра.

Структура программы на C ++

Давайте посмотрим на простой код, который будет печатать слова Hello World .

Давайте рассмотрим различные части вышеуказанной программы —

  • Язык C ++ определяет несколько заголовков, которые содержат информацию, которая является необходимой или полезной для вашей программы. Для этой программы необходим заголовок .
  • Строка с использованием пространства имен std; сообщает компилятору использовать пространство имен std. Пространства имен являются относительно недавним дополнением к C ++.
  • Следующая строка ‘ // main () — это начало выполнения программы. ‘- это однострочный комментарий, доступный на C ++. Однострочные комментарии начинаются с // и останавливаются в конце строки.
  • Строка int main () является основной функцией, в которой начинается выполнение программы.
  • Следующая строка cout вызывает на экране сообщение «Hello World».
  • Следующая строка return 0 ; завершает функцию main() и заставляет ее возвращать значение 0 в вызывающий процесс.

Компилировать и выполнять программу на C ++

Давайте посмотрим, как сохранить файл, скомпилировать и запустить программу. Следуйте приведенным ниже инструкциям —

  • Откройте текстовый редактор и добавьте код, как указано выше.
  • Сохраните файл как: hello.cpp
  • Откройте командную строку и перейдите в каталог, в котором вы сохранили файл.
  • Введите ‘g ++ hello.cpp’ и нажмите клавишу ввода для компиляции кода. Если в вашем коде нет ошибок, командная строка приведет вас к следующей строке и сгенерирует исполняемый файл a.out.
  • Теперь введите «a.out» для запуска вашей программы.
  • Вы увидите «Hello World», напечатанный в окне.

Убедитесь, что g ++ находится на вашем пути и что вы запускаете его в каталоге, содержащем файл hello.cpp . Вы можете скомпилировать программы C / C ++ с помощью makefile.

Точки с запятой и блоки в C ++

В C ++ точка с запятой является терминатором утверждения. То есть каждое отдельное утверждение должно заканчиваться точкой с запятой. Он указывает конец одного логического объекта. Например, следующие три разных утверждения:

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

C ++ не распознает конец строки как терминатор. По этой причине не имеет значения, где вы указываете оператор в строке. Например:

Идентификаторы C ++

Идентификатор C ++ — это имя, используемое для идентификации переменной, функции, класса, модуля или любого другого пользовательского элемента. Идентификатор начинается с буквы от A до Z или от a до z или символа подчеркивания (_) , за которым следует ноль или несколько букв, символов подчеркивания и цифр (от 0 до 9).

C ++ не допускает знаков препинания, таких как @, $ и% в идентификаторах. C ++ — это язык программирования с учетом регистра. Таким образом, Manpower и рабочая сила являются двумя разными идентификаторами на C ++.

Вот несколько примеров приемлемых идентификаторов:

Ключевые слова C ++

Следующий список показывает зарезервированные слова в C ++. Эти зарезервированные слова не могут использоваться как константные или переменные или любые другие имена идентификаторов.

Ссылка на основную публикацию
Adblock
detector