Основы программирования на C++, PASCAL
Не следует записывать выражений, не имеющих математического смысла. Например, деление на нуль, логарифм отрицательного числа и т. п.
Пример. Цифрами сверху указан порядок выполнения операций:
Данное арифметическое выражение соответствует следующей математической формуле:
В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления xy рекомендуется поступать следующим образом:
• если у — целое значение, то степень вычисляется через умножение; например, х3 → х ∙ х ∙ х; большие степени следует вычислять умножением в цикле;
• если у — вещественное значение, то используется следующая математическая формула: хy = eyln(x).
На Паскале это будет выглядеть так:
Очевидно, что при вещественном у не допускается нулевое или отрицательное значение х. Для целого у такого ограничения нет.
Например,
На Паскале это будет так:
Выражение имеет целый тип, если в результате его вычисления получается величина целого типа. Выражение имеет вещественный тип, если результатом его вычисления является вещественная величина.
Арифметический оператор присваивания имеет структуру, представленную на рис. 17.
Например:
Порядок выполнения оператора присваивания нами уже рассматривался. Следует обратить особое внимание на следующее правило: типы переменной и выражения должны быть одинаковыми. Исключение составляет случай, когда выражение имеет целый тип, а переменная — вещественный.
Упражнения
1. Для следующих формул записать соответствующие арифметические выражения на Паскале:
2. Записать математические формулы, соответствующие следующим выражениям на Паскале:
3. Почему в Паскале аргумент функции всегда записывают в скобках (например, пишут ln(5), а не ln5)?
4. Для следующих формул записать соответствующие арифметические выражения на Паскале:
5. Вычислить значения выражений:
6. Определить тип выражения:
7. Если у — вещественная переменная, а п — целая, то какие из следующих операторов присваивания правильные, а какие нет:
8. Поменять местами значения целых переменных х и у, не используя дополнительные переменные. Найдя такой алгоритм, определить, в чем его недостаток по сравнению с методом обмена через третью переменную. Можно ли его применять для вещественных чисел?
9. Присвоить целой переменной h значение цифры, стоящей в разряде сотен в записи положительного целого числа k (например, если k = 28796, то h = 7).
10. Целой переменной S присвоить значение суммы цифр трехзначного целого числа k.
11. Какую задачу решает следующая программа?
Можно ли того же самого результата достичь более простым способом?