The topic in the ANCE tests: Типы данных и выражения
zzz
Тема II начинается с типов данных, идентификаторов и значений выражений на двух языках. Здесь типы поставлены рядом, правила операторов и то, как барем платит за каждое значение и каждый тип.
У порядковых типов значения счетные, у каждого есть предыдущее и следующее; на них работают ord, chr, succ, pred и оператор for. Перечисляемый тип порядковый, а его значения нумеруются с нуля: в type xx = (A, B, C, D, E) получается ord(A)=0 и ord(E)=4.
Идентификаторы и ключевые слова Идентификатор начинается с буквы или подчеркивания и состоит из букв, цифр и подчеркиваний: abc и a1b2 — идентификаторы, а 3a2b не является элементом языка, потому что начинается с цифры. case, for, type (Паскаль), switch, typedef (C++) — ключевые слова, их нельзя брать в качестве имен переменных.
Операторы и их порядок
арифметические: +, -, *, а деление имеет две формы: / дает вещественный результат в обоих языках, а div и mod (Паскаль) или / и % между целыми (C++) дают целое частное и остаток
div и mod требуют целых операндов: y mod t при вещественном y — синтаксическая ошибка, как и y % t в C++
остаток сохраняет знак делимого: −7mod4=−3
сравнения: =, <>, <, <=, >, >= в Паскале; ==, !=, <, <=, >, >= в C++
логические: not, and, or в Паскале; !, &&, || в C++
порядок: функции и скобки, затем not, затем *, /, div, mod, and, затем +, -, or, и в конце сравнения
Присваивание и сравнение В Паскале присваивание — это :=, а = сравнивает: c = chr(ord(c) - 2) не меняет c, а дает значение типа boolean. В C++ присваивание — =, сравнение — ==, и само присваивание имеет значение того типа, что и переменная слева.
Стандартные функции abs, sqr (Паскаль) или pow (C++), sqrt, trunc, round, ord, chr, length. trunc отбрасывает дробную часть без округления: trunc(68,8)=68; в C++ то же делает приведение int(...). Код ASCII буквы A равен 65, поэтому ord('D') = 68.
Как записать математическое выражение в коде Дробь пишется в строку, со скобками в числителе и знаменателе, а каждый знак заменяется своей функцией: sinx1−cos2x становится sqrt(abs((1 - sqr(cos(x))) / sin(x))) в Паскале и sqrt(fabs((1 - pow(cos(x), 2)) / sin(x))) в C++. За каждую функцию и за скобки барем дает отдельный балл.
Вывод с форматом В Паскале write(y:0:2) выводит вещественное число с двумя знаками после запятой, а write(x:5) выравнивает по пяти позициям. В C++ то же самое делают setw(5), fixed и setprecision(2).
The rest of the lesson is in the subscription
The real ANCE items where the topic appears, the step-by-step solved example, the typical mistakes and the 7 check questions open with the subscription. “What you must know” stays free.
Source of the tests: the National Agency for Curriculum and Assessment, ance.gov.md. Nota10 is not affiliated with MEC or ANCE. Automatic grading is an estimate, not an official grade.