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.
- Найти НОД двух целых чисел.
- Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B ‑ количество букв в имени студента, C ‑ количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой сумму таких значений функции, которые больше числа M.
- Найти сумму, разность, скалярное произведение и квадрат евклидовой нормы двух векторов в n-мерном пространстве.
- Отсортировать массив по возрастанию методом поиска минимального элемента.
Вариант 2.
- Найти НОК двух целых чисел.
- Дана функция y(x)=Ax2-Bx-C, где A – количество букв в фамилии студента, B ‑ количество букв в имени студента, C ‑ количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой среднее арифметическое всех отрицательных значений функции.
- Проверить два вектора в n-мерном пространстве на перпендикулярность и коллинеарность.
- Отсортировать массив по убыванию методом поиска максимального элемента.
Вариант 3.
- Проверить, является ли целое число простым.
- Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B ‑ количество букв в имени студента, C ‑ количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой сумму таких значений функции, которые находятся на отрезке от М до N.
- Найти индексы максимального и минимального элементов в массиве.
- Отсортировать массив по возрастанию методом “пузырька”.
Вариант 4.
- Найти число сочетаний из n элементов по m.
- Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B ‑ количество букв в имени студента, C ‑ количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой максимальное среди значений функции, квадрат которых не превосходит заданного числа M.
- Определить, является ли заданное число x корнем полинома, коэффициенты которого заданы в массиве по возрастанию степеней.
- Отсортировать массив по убыванию методом “пузырька”.
Вариант 5.
1. Даны целые a и b. Найти c=ab+ba.
- Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B ‑ количество букв в имени студента, C ‑ количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать отдельной строкой минимальное среди значений функции, больших заданного значения M.
- Найти произведение двух матриц размеров m´n и n´k (Матрица хранится в одномерном массиве по строкам).
- Отсортировать массив по возрастанию квадратов его элементов.
ВАРИАНТЫ ЛАБОРАТОРНЫХ РАБОТ
N | I | II | T | |||||||||||
N | T | |||||||||||||
I | II |