Pascal для стУдентов Общая информация о центре
Дырка Электронные учебники
Методические пособия
Электронные тренажеры
Программы по конкретным дисциплинам
Оглавление
 

Выражения -

численные, логические и адресные: правила построения

Предыдущий Следующий

Выражения

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

Главным свойством выражений является возможность иметь значение, которое может быть проанализировано или присвоено некоторой переменной.

Выражения делятся по типу значения на следующие типы:

  • численные (целочисленные и дробные);
  • логические;
  • символьные;
  • типа указатель.

Рассмотрим правила нотации, а затем - правила построения каждого из этих типов. Фраза вида

<определяемое_понятие> ::
    <понятие1><понятие2>|
    <понятие3>

будет означать, что <определяемое_понятие> по определению состоит либо из конкатенации <понятия1> и <понятия2> или из <понятия3> (1). В принципе, используя такую (или похожую нотацию), можно задать любую (контекстно-свободную) грамматику, в том числе и весь язык программирования.

Итак, численное выражение по определению есть (2)

<ч_выр> ::
    <ч_знач> |
    <ч_знач><ч_опер><ч_знач> |
    Not <ц_ч_знач>

<ч_знач> ::
    <ч_выр> |
    <ч_перем> |
    <ч_конст> |
    <ч_функ>

<ч_опер> ::
    + | - | * | / |
    div | mod |
    pred(<ц_ч_знач>) | succ(<ц_ч_знач>)

В первом определении численные значения стоящие справа и слева от операции называются операндами. Cтоит отметить следующие моменты

  • тип реультата деления всегда дробный, вне зависимости от тиов операндов;
  • тип операндов у операций mod и div всегда целый; целым является и значение результата;
  • тип результата операций +, -, * целый, если оба операнда целые, и дробный в противном случае;
  • функции pred и succ применимы только к выражениям ординарных типов;
  • любое выражение и значение может быть заключено в скобки без нарушения синтаксической корректности.

Логическое выражение по определению есть

<л_выр> ::
    <л_знач> |
    <л_знач><л_опер><л_знач> |
    Not <л_знач> |
    <результат_сравнения>

<л_знач> ::
    <л_выр> |
    <л_перем> |
    <л_конст> |
    <л_функ>


<л_опер> ::
    And |
    Or |
    Xor


<результат_сравнения> ::
    <выр><знак_операции><выр>


<знак_операции> ::
    < | > | <= |
    >= | <> | =

Знаки имеют тот же смысл, что и слова их прочтения: меньше, больше, меньше (или) равно... Знак <> означает "не равно". Результат сравниния равен True, если выражения стоящие по бокам находятся в отношении, определяемом знаком_операции и False - в противном случае. Выражения при этом должны быть сравнимыми.

Адресное выражение по определению есть

<ук_выр> ::
    @<объект> |
    Addr(<объект>) |
    New([. . . ])|
    Ptr(<число>, <число>)|
    <ук_функ>

Здесь <объект> - идентификатор любого объекта, занимающего некоторое место в памяти (то есть обладающего адресом) - переменной, типизированной константы, процедуры или функции. Параметры у функции New зависят от типа создаваемого объекта. Каждое <число> в параметрах Ptr должно быть совместимо с типом Word.


(1) Наверх Более уместно вместо слова "выражение" использовать слово "терм".

(2) Наверх Сокращения следующие

  • выр - выражение;
  • конст - константа: непосредственная или ее идентификатор;
  • перем - идентификатор переменной;
  • знач - значение;
  • функ - вызов функции;

Префиксы сокращений имеют следующий смысл

  • ч_ - численный;
  • ц_ч_ - целочисленный;
  • л_ - логический;
  • ук_ - типа указатель.


Предыдущий Наверх Следующий
Оглавление
Hosted by uCoz