Скачиваний:
17
Добавлен:
01.05.2014
Размер:
381.95 Кб
Скачать

Программа

<программа>::= <глобальное_описание> void main ( ) <составной_оператор> |

void main ( ) <составной_оператор>

<составной_оператор>::= { <множество_операторов> } | { }

<множество_операторов>::= <оператор> | <множество_операторов> <оператор>

<глобальное_описание>::= <глобальное_описание> <объявления> | <объявления>

<оператор>::= <метка> <оператор_1> | <оператор_1>

<метка>::= id :

<оператор_1>::= <оператор_ввода> | <оператор_вывода> | <оператор_усл_перехода> |

<оператор_безусл_перехода> | <цикл> | <оператор_присваивания> |

<составной_оператор> | <оператор_матр_выражения> | ;

Переменные, константы и типы объявляются в глобальном описании до функции main. Повторное объявление переменных и констант недопустимо.

Константы не могут изменяться в теле программы..

Любой идентификатор программы должен быть ранее объявлен.

Ключевые слова не могут использоваться в качестве идентификаторов.

Оператор ввода

<оператор_ввода>::= scan ( <переменные_ввода> );

<переменные_ввода>::= <переменная> | <переменные_ввода> , <переменная>

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

Оператор вывода

<оператор_вывода>::= print ( <значения_вывода> );

<значения_вывода>::= <ар_выражение> | <значения_вывода> , <ар_выражение>

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

Оператор безусловного перехода

<оператор_безусл_перехода>::= goto id ;

Оператор осуществляет безусловный переход к оператору, помеченному меткой (id).

Метка должна быть объявлена до данного оператора, и должна быть уникальной в

пределах программы.

Оператор условного перехода

<оператор_усл_перехода>::= if ( <лог_выражение> ) <оператор> |

if ( <лог_выражение> ) <оператор> else <оператор>

Если логическое выражение возвращает истину, то выполняется первый оператор,

иначе второй оператор после директивы else, если он присутствует.

<лог_выражение>::= <лог_выражение> <оп_равно_неравно> <условие> | <условие>

<условие>::= <ар_выражение> | <условие> <оп_сравнения> <ар_выражение>

<оп_равно_неравно>::= != | ==

<оп_сравнения>::= > | < | >= | <=

Типы операндов сравнения могут int или float. Результат: тип int, где

значение (0) - ложь, (1) - истина

Оператор Цикла

<цикл>::= for ( <заголовок_цикла> ) <оператор>

<заголовок_цикла>::= <параметр_1> ; <параметр_2> ; <параметр_3>

| ; <параметр_2> ; <параметр_3> | <параметр_1> ; ; <параметр_3> |

| <параметр_1> ; <параметр_2> ; |

| ; ; <параметр_3> | ; <параметр_2> ; | <параметр_1> ; ; | ; ;

<параметр_1>::= <операция_присвоения>

<параметр_2>::= <лог_выражение>

<параметр_3>::= <операция_присвоения>

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

Арифметические выражения

<ар_выражение>::= <ар_выражение> <оп+-> <слагаемое> | <слагаемое>

<слагаемое>::= <множитель> | <слагаемое> <оп*/> <множитель>

<множитель>::= ( <ар_выражение> )

| <переменная>

| det ( <ар_выражение> )

| transpose ( <ар_выражение> )

| <числовая_константа>

<оп+->::= + | -

<оп*/>::= * | /

<числовая_константа>::= inum | fnum

Элементами арифметических выражений являются:

  • переменные и константы целого и вещественного типа

  • матрицы

  • определитель матрицы

Выражение задает порядок вычисления значения, основанный на обычном правиле вычисления слева направо и старшинстве операций.

Арифметические операции выполняются над целыми, вещественными или матричными операндами и порождают результат типа в соответствии с таблицами:

+

int

float

fmatr

int

int

float

-

float

float

float

-

fmatr

-

-

fmatr

-

int

float

fmatr

int

int

float

-

float

float

float

-

fmatr

-

-

fmatr

*

int

float

fmatr

int

int

float

-

float

float

float

-

fmatr

-

-

fmatr

/

int

float

fmatr

int

int

float

-

float

float

float

-

fmatr

-

-

-

Операнды арифметической операции должны быть одного типа. Язык допускает

только преобразование типа intк типуfloat.

Если операнды операции - матрицы, то размерности этих матриц должны

соответствовать данной операции.

Соседние файлы в папке kurs