TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Выражения -

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

 

Выражения

Выражения на 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) Наверх Сокращения следующие
выр - выражение;
конст - константа: непосредственная или ее идентификатор;
перем - идентификатор переменной;
знач - значение;
функ - вызов функции;

 

Префиксы сокращений имеют следующий смысл
ч_ - численный;
ц_ч_ - целочисленный;
л_ - логический;
ук_ - типа указатель.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz