Математика. Запись арифметических выражений
Если вы - школьник не самых старших классов, то не все, что здесь написано, будет вам понятно. Не огорчайтесь, при дальнейшем чтении непонятные вещи вам не понадобятся.
В правой части оператора присваивания и в операторе WriteLn мы записывали выражения, имеющие численное значение (например, a+b-8). Такие выражения называются арифметическими. В будущем мы увидим, что выражения могут быть не только арифметическими. А сейчас рассмотрим математические возможности Паскаля.
Четыре действия арифметики (и еще два) обозначаются в Паскале следующим образом:
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
2 +3 | плюс | |
4 -1 | минус | |
2 *3 | умножить | |
10 /5 | разделить | |
17 div5 | целочисленное деление | |
17 mod5 | остаток от целочисленного деления |
На уроках математики мы привыкли писать ab+cd , подразумевая: a умножить на b плюс c умножить на d. В Паскале это выражение мы обязаны писать так: a*b+c*d. Иначе компьютер подумает, что нужно к переменной, имеющей имя ab, прибавить переменную, имеющую имя cd. Во избежание двусмысленности знак умножения положено писать всегда. Например, a * (b+c).
Скобки. Ввиду того, что с клавиатуры всю информацию приходится вводить символ за символом в одну строку, ввод двухэтажных выражений, таких как
,
очень затруднен. Поэтому для обозначения деления и выбрана косая черта. Это выражение на Паскале положено записывать так: (a+1)/(b+1). Если бы мы не поставили скобок, то выражение получилось бы таким a+1/b+1, а это неправильно, так как компьютер, как и мы, всегда перед сложением и вычитанием выполняет умножение и деление, поэтому в последнем случае он бы сначала разделил 1 на b , а затем к результату прибавил a и 1.
Вопрос: когда в выражениях можно ставить скобки? Ответ: всегда, когда у вас возникают сомнения в правильной очередности действий. Лишняя пара скобок не помешает. Пример: записать на Паскале выражение:
Его можно было бы записать так: (1 + a / (2+a*b)) / (3+a) * b . Однако, при такой записи мы не знаем, что Паскаль будет делать раньше - делить (1 + a / (2+a*b)) на (3+a) или умножать (3+a) на b. А от этого зависит результат. Добавим для верности пару скобок: ((1 + a / (2+a*b)) / (3+a)) * b . Теперь все в порядке.
К сожалению, в выражениях разрешается писать только круглые скобки. Квадратные и фигурные запрещены. От этого сложные выражения с большим количеством скобок на глаз воспринимаются с трудом, так как трудно для конкретной скобки увидеть ее законную пару. В этом случае я могу посоветовать идти "от малого к большому", то есть сначала заметить самые малые из взятых в скобки фрагменты выражения (у нас это 3+a и 2+a*b). После этого будет уже легче заметить более крупные фрагменты, такие как 1 + a / (2+a*b) , и т.д.
Запись десятичных дробей. Почти во всех языках программирования и уж, конечно, в Паскале, в десятичных дробях принято вместо запятой ставить точку. Пример: 62.8 - шестьдесят две целых восемь десятых.
Математические функции. Кроме четырех действий арифметики Паскаль может выполнять и другие математические действия, например, возведение в квадрат, для чего имеется специальная функция - Sqr. На уроке математики мы обозначаем показатели степени маленькими цифрами и буквами. На компьютере такие цифры и буквы вводить не всегда возможно, поэтому в Паскале принято другое обозначение. Например, пять в квадрате обозначается так - Sqr(5), a+b в квадрате так - Sqr(a+b). Здесь Sqr - сокращение от английского слова square - квадрат. То, что нужно возвести в квадрат, записывается в скобках.
Приведу неполный список математических функций Паскаля:
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
Sqr(5) | возведение в квадрат | |
Sqrt(25) | корень квадратный | |
Pi | 3.1415... | число пи |
Frac(23.192) | 0.192 | дробная часть числа |
Int(3.98) | 3.0 | целая часть числа |
Round(5.8) | округление | |
Abs( -20) | абсолютная величина(модуль) числа | |
Random | 0.73088 | случайное числоиз диапазона (0 - 1) |
Random (200) | случайное целое число из диапазона (0 - 199) |
Кроме этого, имеются функции sin, cos, arctan, exp, ln и процедура Randomize. К сожалению, в Паскале нет специальной функции для возведения в произвольную степень.
Примеры:
Выражение Sqr(2+1) при вычислении даст 9
Выражение 10+Sqr(2+1) при вычислении даст 19
Выражение 1+Abs(5-8) при вычислении даст 4
Выражение Sqr(2)+Sqrt(35+1) при вычислении даст 10
Выражение Sqrt(8+Int(41.5)) при вычислении даст 7
Выражение 21 div (Round(Pi+1)) при вычислении даст 5
Задание 11: Определите без компьютера, что напечатает данная программа:
VAR a,b: Integer;
BEGIN
a:=(Sqr(2)+1)*(20- Sqr(2*2))-11;
b:=11 div (a-4);
WriteLn (Sqr(a)+b-1)
END.