Варианты заданий
Для всех вариантов задаётся общая часть в которую входит следующее:
— Ключевые слова, обозначающие начало и конец программы, описание типа, ввод и вывод, присваивание, true, false.
— Разделители : +, -, _, (, ), =, <, >, ,; ,”, “, ‘,’ и пробел.
— Идентификаторы должны начинаться с буквы, не включать в себя разделители, количество позиций не должно превышать 14.
— x, y, z – условные обозначения переменных. Разрешается заменять их другими идентификаторами. Все начальные присвоения дописать, если необходимо.
— Текст программы должен допускать использование комментариев. Вариант задания выбирается по согласованию с преподавателем.
— Язык реализации студент выбирает самостоятельно. Самостоятельно следует дописать тело процедуры, если процедура есть в варианте задания.
Контекстные условия:
1. Любое имя, используемое в программе, должно быть описано и только
один раз.
2. В операторе присваивания типы переменной и выражения должны
совпадать.
3. В условном операторе и в операторе цикла в качестве условия возможно
только логическое выражение.
4. Операнды операции отношения должны быть целочисленными.
5. Тип выражения и совместимость типов операндов в выражении
определяются по обычным правилам; старшинство операций задано синтаксисом.
В любом месте программы, кроме идентификаторов, служебных слов и чисел, может находиться произвольное число пробелов и комментариев вида {< любые символы, кроме } и ⊥(символ конца текста исходной программы)>} True, false, read и write – служебные слова (их нельзя переопределять, как стандартные идентификаторы Паскаля).
Сохраняется паскалевское правило о разделителях между идентификаторами, числами и служебными словами.
1) PROGRAMM;
integer x;
bool y;
integer z;
x=3;
y=true;
z=(x+2) – (x+convert(y,’integer’));
FUNC convert(bool y, integer s);
ENDF;
END;
2) PROGRAMM;
float x;
integer y;
integer z;
x=3.25;
y=5;
z=(3+2) – (y+convert(x,’integer’));
FUNC convert(float y, integer s);
ENDF;
END;
3) PROGRAMM;
integer x;
string y;
string z;
x=3;
y=”www;
z=y + (“abc”+convert(x,’string’));
FUNC convert(integer y, string s);
ENDF;
END;
4) PROGRAMM;
bool x;
string y;
string z;
x=true;
y=”www;
z=y + (“abc”+convert(x,’string’));
FUNC convert(bool y, string s);
ENDF;
END;
5) PROGRAMM;
integer x;
string y;
integer z;
x=5;
y=”www;
z=x + (5+length(y) – x;
FUNC length(integer s);
ENDF;
END;
6) PROGRAMM;
integer x;
string z;
for x=5 by 1 to 10
z=z+convert (x,’string’);
endfor;
FUNC convert(integer y, string s);
ENDF;
END;
7) PROGRAMM;
integer x;
integer z;
for x=5 by 1 to 10
z=z+x;
endfor;
END;
8) PROGRAMM;
integer x;
integer z;
string y;
y=”www”;
for x=5 by 1 to 10
z= 5+length(y) – x;
endfor;
FUNC length(integer s);
ENDF;
END;
9) PROGRAMM;
integer x;
integer z;
bool y;
y=true;
for x=5 by 1 to 10
z=z+x+convert (y,’integer’);
endfor;
FUNC convert(bool y, string s);
ENDF;
END;
10) PROGRAMM;
integer x;
string z;
bool y;
if x=5 then y=true else y=false endif;
z=”www”+convert(z,’string’) + “5”;
FUNC convert(bool y, string s);
ENDF;
END;
11) PROGRAMM;
integer x;
bool y;
integer z;
if x=5 then y=true else y=false