УРОК 3. Арифметические операции и функции
Имеется
несколько арифметических операций: «+» - сложение, «-» - вычитание, «*»
- умножение, «/» - деление и «^» - возведение в степень. Очередность их
выполнения следующая: сначала - операция возведения в степень, затем
операции умножения и деления, и в последнюю очередь операции сложения и
вычитания. Для того, чтобы изменить очередность выполнения операций,
используются скобки. Например, в записи «3*(4+5)» вначале выполняется та операция, которая находится в скобках, то есть «4+5», затем результат умножается на «3».
Для разделения целой и дробной части десятичных чисел используется точка. Например, «2.3333» или «0.245», при этом лидирующий ноль можно не указывать, например, «.245». Дробные числа записываются при помощи операции деления, например, «1/2», «1/11»
и так далее. При операции возведения в степень сначала указывается
основание, затем знак возведения в степень и его порядок, например, «2^5», что обозначает «25». Если порядок вычисляется, то он указывается в скобках, например, «2^(3+4)», при этом вначале суммируется порядок (3+4), затем выполняется операция возведения в степень.
При
использовании скобок следите за тем, чтобы количество открывающихся
скобок было равно количеству закрывающихся. Например, следующие
выражения являются неверными: i1=5*((3+4)+3 (нет одной закрывающейся скобки), i1(=4+3) (открывающая скобка находится не в правой части операции присвоения), i1=3+4) (нет открывающейся скобки).
Между переменными и числами обязательно должны быть знаки операций. Например, запись «i1%=3у» недопустима, так как отсутствует операция умножения между «3» и «y». Поэтому после нажатия на клавишу Enter на экране появится сообщение об ошибке («Expected: end-of-statement» - ожидается конец утверждения).
Все
арифметические выражения записываются в одну строчку, и так как в языке
нет дробей, то они пишутся, как и операция деления. Например, число ½
записывается как один деленное на 2, то есть «1/2».
Приведем примеры, где выражения могут быть использованы при программировании:
i1% = 1 / 3 + 1 / 4 + 1 / 5
i1% = 3 ^ 5
i1% = 5 - (4 + 7)
i1% = 2 * x2%
Как
видно, во всех показанных примерах присутствует знак равенства. Если
имеется арифметическое выражение, то при программировании следует
указать действие, с ним производимое. В приведенных примерах
вычисленное значение присваивается переменной i1%. Так, напишем небольшую программу:
i1% = 2
i1% = 5 + (4 + 7)
PRINT i1%
Сначала переменной i1% присваивается значение «2», затем вычисляется выражение «5 + (4 + 7)», которое равно «16», и затем данное значение («16») выводится на экран при помощи оператора PRINT. Таким образом, то значение, которое присутствовало («2»), заменяется во втором операторе новым («16»). Старое значение при этой операции теряется. В то же время при операции вывода на экран имеющееся значение в переменной («16») не исчезает и его можно использовать далее, например, еще раз вывести на экран («PRINT i1%»), или в других выражениях («i2% = i1% * 2»).
Допускается одну и ту же переменную применять в левой и правой частях операции присваивания. Например, оператор «i1% = i1% + 1» увеличивает на единицу значение переменной i1% и используется на практике довольно часто.
Не все операции выполняются правильно, так как иногда возможно возникновение ошибок. Рассмотрим пример.
i1 = 45
i2 = 0
PRINT i1 / i2
В
данном примере не может быть выполнена операция деления, так как
делитель равен нулю. При этом на экране появится окно с текстом
программы, сообщение об ошибке (Division by zero) и оператор, выделенный серым цветом, в котором находится ошибка (PRINT). Нажмите на клавишу Enter и откорректируйте программу.
Следующим
возможным случаем является переполнение числа, то есть тот случай,
когда переменная не предусмотрена для хранения большого числа.
Рассмотрим это на примере.
i1% = 4500
i2% = 55555
PRINT i1 * i2
В данном случае при присвоении во втором операторе переменной i2%
значения 55555 произойдет переполнение, так как максимальное значение,
которое может храниться в данной переменной равно 32 767. На экране
появится сообщение Overflow
(переполнение), а оператор, где встретилось переполнение, как и в
прошлом случае, будет выделен серым цветом. Нажмите на клавишу Enter и откорректируйте программу. В данном случае измените тип переменной на целую переменную двойной точности.
Существует
несколько функций, используемых в Бейсике. Функция - это небольшая
подпрограмма, которая вычисляет и возвращает одно значение. Так,
например, функция ABS возвращает абсолютное значение числа. Например, «i2% = ABS(i1%)», где переменная i2% получает абсолютное значение числа, находящегося в переменной i1%. В этом случае i1%
называется аргументом функции и окружается скобками после названия
функции. Вообще говоря, в разных языках программирования может быть
несколько аргументов, но в языке Бейсик используется один аргумент.
К функциям на языке Бейсик относятся:
ABS - возвращает абсолютное значение числа,
SQR - возвращает квадратный корень числа,
SIN - возвращает значение синуса,
COS - возвращает значение косинуса,
TAN - возвращает значение тангенса,
EXP - возвращает значение натурального логарифма в степени,
LOG - возвращает логарифм,
INT - возвращает целую часть числа,
SGN - возвращает значение, которое равно 1, если аргумент положительный, -1 - отрицательный и 0 для нуля.
Как
видим, около каждого названия применено слово «возвращает», что
означает, что функция проводит вычисления и присваивает его переменной.
Приведем пример.
i2% = 5
i1% = ABS(i2%)
PRINT i1%
Во второй строчке находится функция ABS,
которая вычисляет абсолютное значение переменной, указанной в скобках.
Эта переменная называется аргументом функции. Сама функция вычисляет
значение, с которым нужно что-то сделать. В данном примере абсолютная
величина числа 5 присваивается переменной i1%. Далее, в третьей строчке результат выводится на экран.
Приведем примеры неправильного использования функций: TG(5) (неправильное имя функции, которое должно быть TAN), SIN1 (нет скобок для аргумента), SN(2) (неправильное имя функции, которое должно быть SIN).
В
языке Бейсик функция имеет один аргумент, который содержит исходное
значение. Для тригонометрических функций используется аргумент, в
котором значение выражено в радианах, а не в градусах. Если в
переменной i1% находится значение в градусах, то синус можно вычислить по формуле «SIN (i1%/180)*3.1415».
Рассмотрим пример.
i1% = 1
PRINT ABS(i1%), SQR(i1%)
PRINT SIN(i1%), COS(i1%)
PRINT TAN(i1%), EXP(i1%)
PRINT LOG(i1%), INT(i1%), SGN(i1%)
Р езультат
выполнения показан на рисунке справа от текста. В дальнейшем также
будем приводить текст программы, а справа от него - результат работы
программы. Теперь изменим значение переменной i1% на 2, результат показан на рисунке слева.
Не все значения допустимы. Так, если переменная i1% будет иметь значение минус один, то программа выдаст сообщение «Illegal function call» (неправильный вызов функции) и прекратит выполнение своей работы, так как корень из отрицательного числа не определен.
Отметим, что аргументом функции может быть не только переменная, но и явно заданное число, например, «ABS(.5)».
Помимо
операции деления, которое обозначается значком «/», существует деление
со значком «\», в результате которой получаем целое число от деления.
Кроме того, имеется операция MOD - возврат остатка от деления целых чисел.
Приведем пример.
i1 = 45: i2 = 7
PRINT i1 / i2, i1 \ i2, i1 MOD i2
В данном примере
на экран выводится три числа: первое - результат деления двух чисел с
целой и дробной частью, второе - результат деления с целой частью, и
третье - остаток от деления двух чисел.
Задачи.
1. Выведите на экран результат выполнения следующих операций: а. 22/7 б. 22\7 в. 22 MOD 7 г. 2-3 д. 2+5 е. 55 MOD 5 ж. 33 MOD 7 \ 3 з. 5 * 6 \ 11 и. 3 * 22 \ 7 \ 2 к. 11 + 7 MOD 3 л. (11 + 7) MOD 3 (Отметим, что при выполнении данных операций вначале выполняется оператор MOD, затем операции умножения, далее сложения).
2. Выведите значение косинуса от 30 градусов.
3. Выведите значение логарифма от 1.
4. Выведите значения на одной строке тангенса от 60 градусов и 2 радиан.
5. Выведите значение целой части числа от 8.9.
6. Выведите значение квадратного корня от 2.
7. Выведите значение на одной строке квадратных корней от 4, 9 и 16.
8.
Выведите значение на одной строке абсолютного значения от -2 и -3,
причем одно значение должно быть указано явно, а второе - через
переменную.
|