Действия с числовыми величинами
Арифметические операции
Таблица 1.6.
Знак | Выражение | Тип операндов | Тип результата | Операция |
+ | A+B | Целые, вещественные | Целый, вещественный | Сложение |
– | A–B | Целые, вещественные | Целый, вещественный | Вычитание |
* | A*B | Целые, вещественные | Целый, вещественный | Умножение |
/ | A/B | Целые, вещественные | Вещественный | Деление |
div | A div B | Целые | Целый | Целое деление (15 div 6 = 2) |
mod | A mod B | Целые | Целый | Остаток от деления (15 mod 6 = 3) |
Стандартные математические функции
К арифметическим величинам могут быть применены стандартные функции Паскаля. Аргументы функции записываются в круглых скобках.
Таблица 1.7.
Обращение | Тип аргумента | Тип результата | Функция |
Pi | – | Вещественный | Число π = 3.1415926536E + 00 |
Abs(x) | Целый, вещественный | Целый, вещественный | Модуль аргумента х (|x|) |
Arctan(x) | Целый, вещественный | Вещественный | Арктангенс х (радианы) |
Cos(x) | Целый, вещественный | Вещественный | Косинус x (x в радианах) |
Exp(x) | Целый, вещественный | Вещественный | ех – экспонента |
Frac(x) | Целый, вещественный | Вещественный | Дробная часть х |
Int(x) | Целый, вещественный | Целая часть х | |
Ln(x) | Целый, вещественный | Вещественный | Натуральный логарифм х (х > 0) |
Random | – | Целый | Случайное число в интервале [0, 1) |
Random(x) | Целый | Целый | Случайное число в интервале [0, х) |
Round(x) | Вещественный | Целый | Округление до ближайшего целого |
Sin(x) | Целый, вещественный | Вещественный | Синус x (x в радианах) |
Sqr(x) | Целый, вещественный | Целый, вещественный | Квадрат х |
Sqrt(x) | Целый, вещественный | Вещественный | Корень квадратный из х (х ≥ 0) |
Trunc(x) | Вещественный | Целый | Ближайшее целое, не превышающее х по модулю |
Арифметические выражения
Арифметическое выражениезадает порядок выполнения действий над числовыми величинами. Арифметические выражения содержат арифметические операции, функции, операнды, круглые скобки. Одна константа или одна переменная – простейшая форма арифметического выражения.
Пример. Запишем по правилам Паскаля следующее математическое выражение:
На Паскале это выглядит так:
(2*a+Sqrt(0.5*Sin(x + у)))/(0.2*c-Ln(х - у))
Чтобы правильно записывать арифметические выражения, нужно соблюдать следующие правила:
1. Все символы пишутся в строчку на одном уровне. Проставляются все знаки операций (нельзя пропускать знак умножения).
2. Не допускаются два следующих подряд знака операций (нельзя А+–B; можно А+(–B)):
3. Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:
• вычисление функции;
• унарная операция смены знака (–);
• *, /, div, mod;
• +, –.
4. Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.
5. Часть выражения, заключенная в скобки, вычисляется в первую очередь. (Например, (A+B) * (C–D) – умножение производится после сложения и вычитания.)
В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления xy рекомендуется поступать следующим образом:
• если у – целое значение, то степень вычисляется через умножение; например, х3 → х · х · х; большие степени следует вычислять умножением в цикле;
• если у – вещественное значение, то используется следующая математическая формула: xy = еyln(х).
На Паскале это будет выглядеть так: Exp(y*Ln(x))
Операторы Паскаля.
Оператор присваивания.
“: =” – знак присваивания.
Формат оператора:
<переменная> : = <выражения>;
Например:
S:=10+(A*B-2.5)/Sin(X)
Операторы ввода-вывода.
Оператор ввода с клавиатурыимеет следующий формат
Read(<список ввода>)
где <список ввода> – это последовательность имен переменных, разделенных запятыми.
Например, Read(a, b, c, d);
Другой вариант оператора ввода с клавиатуры имеет вид:
ReadLn(<список ввода>)
Этот оператор отличается от Read только тем, что после считывания последнего в списке значения для одного оператора ReadLn данные для следующего оператора будут считываться с начала новой строки. Например:
ReadLn(А,В); ReadLn (С,D);
Ввод значений будет происходить из двух строк:
18234 87 (Enter)
2.62E-02 4.5E+01 (Enter)
Оператор вывода на экран имеет следующий формат:
Write(<список - вывода>)
где <список вывода> – это список переменных вывода, разделенных запятыми. Элементами списка вывода могут быть выражения различных типов (константы и переменные).
Пример:
Write(256); {выводится целая константа}
Write(F+D+50); {выводится результат вычисления выражения}
Write(X,Sum,g1,g2); {выводятся значения переменных}
Write('абвгд'); {выводится текст}
При выводе на экран нескольких чисел в строку они не отделяются друг от друга пробелами. Программист сам должен позаботиться о таком разделении. Пусть, например, I = 1; J = 2; К = 3.Тогда, написав в программе
Write (I,' ',J, ' ',K);
получим на экране строку: 1 2 3. После вывода последнего символа курсор остается в той же строке. Следующий вывод на экран будет начинаться с этой позиции курсора.
Другой вариант процедуры вывода на экран:
WriteLn(<список вывода>)
Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn, записанный без параметров, вызывает перевод строки.
В операторе Write можно использовать формат вывода значений переменных. Формат определяет представление выводимого значения на экране. Он отделяется от соответствующего ему элемента двоеточием. Если указатель формата отсутствует, то машина выводит значение по определенному правилу, предусмотренному по умолчанию.
Если x – целое число оператор write(x:a) обозначает, что под переменную x отводится a позиций. Например:
x:=12; write(x:5);
Результат: _ _ _ 25.
Если x – вещественное число оператор write(x:a:b)обозначает, что под всю переменную x отводится a позиций, а под ее дробную часть – b позиций.
Например:
x:=4.5; y:=-24.123;
write(x:5:2, y:8:2);
Результат: _ 4.50 _ _–24.12
Условный оператор
Условный оператор включает в себя операторы, которые выполняются или не выполняются в зависимости от записанного в операторе условия. Оператор имеет вид:
IF «условие» Then «оператор1» Else «оператор2»;
где «условие» – выражение логического типа;
«оператор1» выполняется, если условие верно (True),
«оператор2» выполняется, если условие не верно (False).
Например, вычисление квадратного корня из числа «a» проводится при условии a>=0, операторами:
IF a >= 0 Then b: = Sqrt(a) Else WriteLn( 'a<0' );
В условном операторе может отсутствовать блок Else оператор2; т. е. условный оператор может иметь вид:
IF «условие» Then «оператор1»;
например:
IF a<0 Then a:= abs(a);
В случае нескольких условий, соединенных логическим «И» (операция and) результирующее условие имеет значение True, если каждое условие верно, иначе – False.
В случае нескольких условий, соединенных логическим «ИЛИ» (операция or) результирующее условие имеет значение True, если хотя бы одно условие верно, иначе – False.
Поскольку операции сравнения имеют низший приоритет, то при проверке нескольких условий эти условия заключаются в скобки.