Nota10

Уроки · BAC · Информатика

Типы данных и выражения в Паскале и C++

Тема из тестов ANCE: Типы данных и выражения

Тема II начинается с типов данных, идентификаторов и значений выражений на двух языках. Здесь типы поставлены рядом, правила операторов и то, как барем платит за каждое значение и каждый тип.

Читать урок на румынском

Что нужно знать

Типы, которые встречаются в тестах

ПаскальC++что хранитпорядковый
integerintцелые числада
realfloatвещественные числанет
charcharодин символда
booleanbooltrue или falseда
stringstringстроку символовнет
(A, B, C) перечисляемыйenum {A, B, C}именованные значения по порядкуда
array[1..10] of integerint B[10]массивнет
record ... endstruct { ... }компоненты разных типовнет

У порядковых типов значения счетные, у каждого есть предыдущее и следующее; на них работают ord, chr, succ, pred и оператор for. Перечисляемый тип порядковый, а его значения нумеруются с нуля: в type xx = (A, B, C, D, E) получается и .

Идентификаторы и ключевые слова
Идентификатор начинается с буквы или подчеркивания и состоит из букв, цифр и подчеркиваний: abc и a1b2 — идентификаторы, а 3a2b не является элементом языка, потому что начинается с цифры. case, for, type (Паскаль), switch, typedef (C++) — ключевые слова, их нельзя брать в качестве имен переменных.

Операторы и их порядок

  • арифметические: +, -, *, а деление имеет две формы: / дает вещественный результат в обоих языках, а div и mod (Паскаль) или / и % между целыми (C++) дают целое частное и остаток
  • div и mod требуют целых операндов: y mod t при вещественном y — синтаксическая ошибка, как и y % t в C++
  • остаток сохраняет знак делимого:
  • сравнения: =, <>, <, <=, >, >= в Паскале; ==, !=, <, <=, >, >= в 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 отбрасывает дробную часть без округления: ; в C++ то же делает приведение int(...). Код ASCII буквы A равен 65, поэтому ord('D') = 68.

Как записать математическое выражение в коде
Дробь пишется в строку, со скобками в числителе и знаменателе, а каждый знак заменяется своей функцией: становится 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).

Остальная часть урока доступна по подписке

Настоящие задания ANCE по этой теме, разбор примера шаг за шагом, типичные ошибки и 7 вопросов для самопроверки открываются по подписке. «Что нужно знать» остаётся бесплатным.

Открывается по подписке

  • Как это бывает на экзамене
  • Разбор примера
  • Типичные ошибки
  • Проверь себя

Проверь свой уровень бесплатно