II.3. Синтаксис операторов

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

 

Варианты:

II.3.1.

$ оператор = [метка] непомеченный.

$ непомеченный = составной | присваивания | перехода

условный | цикла | пустой | ввода | вывода.

$ пустой = .

$ перехода = goto имя_метки.

$ ввода = read переменная { "," переменная }.

$ вывода = write ( выражение | спецификатор )

{ "," ( выражение | спецификатор ) }.

$ переменная = идентификатор [ "[" индекс "]" ].

$ индекс = идентификатор | целое.

$ спецификатор = skip | space | tab.

II.3.2.

$ оператор = метка непомеченный.

$ непомеченный = присваивания | перехода

условный | цикла | пустой | ввода | вывода.

$ пустой = .

$ перехода = goto имя_метки.

$ ввода = input переменная { "," переменная }.

$ вывода = print ( выражение | спецификатор )

{ "," ( выражение | спецификатор ) }.

$ переменная = идентификатор [ "(" индекс ")" ].

$ индекс = идентификатор | целое.

$ спецификатор = skip | space | tab.

 

II.4. Оператор присваивания

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

Варианты:

II.4.1. Инфиксная форма.

$ присваивание = переменная ASG выражение.

$ выражение = слагаемое { (EQ | NE | LT | GT | LE | GE) слагаемое }.

$ слагаемое = множитель { (ADD | MIN) множитель }.

$ множитель = унарное { (MUL | DIV | MOD) унарное }.

$ унарное = [ MIN ] терм.

$ терм = переменная | число | "(" выражение")".

$ число = целое | действительное.

II.4.2. Префиксная форма

$ присваивание = ASG переменная "," выражение.

$ выражение = простое_выражение | операнд.

$ простое_выражение = операция выражение выражение | "( " MIN выражение ")".

$ операнд = переменная | целое | действительное.

$ операция = MUL | DIV | MOD | ADD |MIN | EQ | NE | LT | GT | LE | GE.

 

II.4.3.Постфикснаяформа

$ присваивание = выражение переменная ASG .

$ выражение = простое_выражение | операнд.

$ простое_выражение = "(" выражение выражение операция ")" | "(" выражение MIN ")".

$ операнд = переменная | целое | действительное.

$ операция = MUL | DIV | MOD | ADD | MIN | EQ | NE | LT | GT | LE | GE.

II.5. Условный оператор

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

Варианты:

II.5.1.

$ условный = if выражение then непомеченный [ else непомеченный ].

II.5.2.

$ условный = if выражение then оператор { ";" оператор }

[ else оператор { ";" оператор } ] end.

II.5.3.

$ условный = if выражение then имя_метки1 "," имя_метки2 "," имя_метки3.

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

II.5.4.

$ условный = case выражение of целое ":" непомеченный

{ or целое ":" непомеченный }

[ else непомеченный ].

II.5.5.

$ условный = switch выражение BST

{/ case целое ":" непомеченный ";" /}

[ default ":" непомеченный ] EST.

Если в двух последних вариантах используется условное выражение, то 1 означает “истина”, а 0 означает “ложь”.

II.6. Оператор цикла

Синтаксис альтернатив в вариантах подобран в стиле программы, как и в случае с условными операторами.

Варианты:

II.6.1.

$ цикл = loop непомеченный.

II.6.2.

$ цикл = while выражение do непомеченный.

II.6.3.

$ цикл = loop оператор { ";" оператор } end.

II.6.4.

$ цикл = repeat непомеченный until выражение.

II.6.5.

$ цикл = for идентификатор "=" целое to целое [step целое] [оператор] { ";" оператор } nextидентификатор.

II.6.6.

$ цикл = for идентификатор "=" целое to целое do непомеченный.

II.6.7.

$ цикл = do имя_метки идентификатор "=" целое1 "," целое2 "," целое3
оператор { ";" оператор } имя_метки continue.

(целое1 – начальное значение, целое2 – конечное значение, целое3 – шаг.)

Варианты тестовых наборов задач

Вариант 1.

  1. Найти НОД двух целых чисел.
  2. Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B количество букв в имени студента, C количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой сумму таких значений функции, которые больше числа M.
  3. Найти сумму, разность, скалярное произведение и квадрат евклидовой нормы двух векторов в n-мерном пространстве.
  4. Отсортировать массив по возрастанию методом поиска минимального элемента.

 

Вариант 2.

  1. Найти НОК двух целых чисел.
  2. Дана функция y(x)=Ax2-Bx-C, где A – количество букв в фамилии студента, B количество букв в имени студента, C количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой среднее арифметическое всех отрицательных значений функции.
  3. Проверить два вектора в n-мерном пространстве на перпендикулярность и коллинеарность.
  4. Отсортировать массив по убыванию методом поиска максимального элемента.

 

Вариант 3.

  1. Проверить, является ли целое число простым.
  2. Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B количество букв в имени студента, C количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой сумму таких значений функции, которые находятся на отрезке от М до N.
  3. Найти индексы максимального и минимального элементов в массиве.
  4. Отсортировать массив по возрастанию методом “пузырька”.

 

Вариант 4.

  1. Найти число сочетаний из n элементов по m.
  2. Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B количество букв в имени студента, C количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой максимальное среди значений функции, квадрат которых не превосходит заданного числа M.
  3. Определить, является ли заданное число x корнем полинома, коэффициенты которого заданы в массиве по возрастанию степеней.
  4. Отсортировать массив по убыванию методом “пузырька”.

 

Вариант 5.

1. Даны целые a и b. Найти c=ab+ba.

  1. Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B количество букв в имени студента, C количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой минимальное среди значений функции, больших заданного значения M.
  2. Найти произведение двух матриц размеров m´n и n´k (Матрица хранится в одномерном массиве по строкам).
  3. Отсортировать массив по возрастанию квадратов его элементов.

 


ВАРИАНТЫ ЛАБОРАТОРНЫХ РАБОТ

N I II T
N T
I II