Паскаль. Математические функции. Вещественные числа

Паскаль. Математические функции. Вещественные числа

Математика. Запись математических выражений

Если вы - школьник не самых старших классов, то не всё, что здесь написано, будет вам понятно. Не огорчайтесь, при дальнейшем чтении непонятные вещи вам не понадобятся.

В правой части оператора присваивания и в операторе WriteLn мы записывали выражения, имеющие численное значение (например, a+b-8). Такие выражения называются арифметическими. В будущем мы увидим, что выражения могут быть не только арифметическими. А сейчас рассмотрим математические возможности Паскаля.

Четыре действия арифметики (и еще два) обозначаются в Паскале следующим образом:

ДействиеРезультатСмысл
2 + 35Сложение
4 - 31Вычитание
2 * 36Умножение
10 / 52Деление
1 / 20.5Паскаль 0.5
17 div 53Целочисленное деление
17 mod 52Остаток от целочисленного деления

Функции mod и div мы подробно разберём чуть позже.

На уроках математики мы привыкли писать ab+cd, подразумевая: а умножить на b плюс c умножить на d. В Паскале это выражение мы обязаны писать так: a*b+c*d. Иначе компьютер подумает, что нужно к переменной, имеющей имя ab, прибавить переменную, имеющую имя cd. Во избежание двусмысленности знак умножения положено писать всегда. Например, a * (b+c).

Скобки

Ввиду того, что с клавиатуры всю информацию приходится вводить символ за символом в одну строку, ввод двухэтажных выражений (дробей), таких как

Паскаль. Математические функции. Пример дроби

очень затруднен. Поэтому для обозначения деления и выбрана косая черта. Это выражение на Паскале положено записывать так: (a+1)/(b+1). Если бы мы не поставили скобок, то выражение получилось бы таким a+1/b+1, а это неправильно, так как компьютер, как и мы, всегда перед сложением и вычитанием выполняет умножение и деление, поэтому в последнем случае он бы сначала разделил 1 на b, а затем к результату прибавил а и 1.

Вопрос: когда в выражениях можно ставить скобки?
Ответ: всегда, когда у вас возникают сомнения в правильной очередности действий. Лишняя пара скобок не помешает.

Например, требуется записать на Паскале выражение:

Паскаль. Математические функции. Пример выражения

Его можно было бы записать так: (1 + а / (2+a*b)) / (3+а) * b. Однако, при такой записи мы не знаем, что Паскаль будет делать раньше - делить (1 + а / (2+a*b)) на (3+а) или умножать (3+а) на b. А от этого зависит результат. Добавим для верности пару скобок: ((1 + а / (2+а*b)) / (3+а)) * b. Теперь всё в порядке.

К сожалению, в выражениях разрешается писать только круглые скобки. Квадратные и фигурные запрещены. От этого сложные выражения с большим количеством скобок на глаз воспринимаются с трудом, так как трудно для конкретной скобки увидеть ее законную пару. В этом случае советуем идти «от малого к большому», то есть сначала заметить самые малые из взятых в скобки фрагменты выражения (у нас это 3+а и 2+а*b). После этого будет уже легче заметить более крупные фрагменты, такие как 1 + а / (2+а*b), и т.д.

Запись десятичных дробей. Почти во всех языках программирования и уж, конечно, в Паскале, в десятичных дробях принято вместо запятой ставить точку. Пример: 62.8 - шестьдесят две целых восемь десятых.

Математические функции

Кроме четырех действий арифметики Паскаль может выполнять и другие математические действия, например, возведение в квадрат, для чего имеется специальная функция - Sqr. На уроке математики мы обозначаем показатели степени маленькими цифрами и буквами. На компьютере такие цифры и буквы вводить не всегда возможно, поэтому в Паскале принято другое обозначение. Например, пять в квадрате обозначается так - Sqr(5), a+b в квадрате так – Sqr(a+b). Здесь Sqr - сокращение от английского слова square - квадрат. То, что нужно возвести в квадрат, записывается в скобках.

Приведём неполный список математических функций Паскаля:

ДействиеРезультатСмысл
Sqr(5);25Возведение в квадрат
Sqrt(25);5Корень квадратный
Pi;3.1415...Число π
Frac(23.192);0.192Дробная часть числа
Int(3.98);3.0Целая часть числа
Round(5.8);6Округление
Abs(-20);20Абсолютная величина (модуль) числа
Power(5,2);25Rower(x,y) - возводит число x в произвольную степень y
Random;0.73088Случайное число из диапазона (0 - 1)
Random(200);106Случайное целое число из диапазона (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

Пример. Напишем выражение

Паскаль. Математические функции. Пример выражения 2

на языке программирования Паскаль и поместим в переменную s. Получим следующий результат:

s:=abs((sqrt(a+b)+d)/sqr(c-d));

Задание 1

Определите без компьютера, что напечатает данная программа:

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.
Вещественные числа в Паскале

Пример ошибочной программы:

Var a, b, y: Integer;
Begin
  a:=10; 
  b:=6;
  y:= a / b;
  WriteLn(y);
End.

Паскаль откажется выполнять эту программу, так как знает, что при делении целого на целое результат может получиться дробный, а это значит, что в ячейку у придется записывать дробное число. Но описание Var a,b,y: Integer запрещает это делать. Вот вам еще один пример придирчивости Паскаля. Если бы мы даже вместо b:=6 написали b:=2 , все равно Паскаль отказался бы делить.

Что же делать? Конечно же, Паскаль предлагает простой выход. Программист имеет право любую переменную описать не как целую (Integer), а как вещественную (Real). В этом случае переменная имеет право принимать любые целые и дробные значения.

Пример правильной программы:

Var a, b: Integer;
    y: Real;
Begin
  a:=10; 
  b:=6;
  y:=a/b;
  WriteLn(y);
End.

По-английски Real читается «риэл», переводится «вещественный». Под переменную типа Real Паскаль отводит в памяти ячейку размером в 6 байтов.

Что мы увидим на экране в результате выполнил оператора WriteLn(у)? Если вы думаете, что 1.666666, то ошибаетесь. Переменные, описанные как Real, Паскаль выводит на экран в так называемом экспоненциальном формате. Чтобы заставить Паскаль выводить вещественные числа в обычном, понятном виде, допишем кое-что в оператор вывода - WriteLn(у :8:3). Это значит, что мы хотим численное значение переменной у типа Real видеть на экране в привычном виде с 3 знаками после десятичной точки, а всё изображение числа не должно занимать больше 8 символов, включая целую часть, дробную часть, знак и десятичную точку. Этот оператор напечатает на экране 1.667. Здесь напечатано действительно 8 символов (три пробела, предшествующие единице, видны вам, как пустое место). Вместо 8 и 3 в операторе программист может писать любые имеющие смысл числа.

Рассмотрим пример, в котором значение переменной x равно 123.45678. Знаком «_» будем обозначать 1 отступ (пробел).

Как пишем команду в программеЧто видим в результате на экране
Write(x);123.45678
Write(x:8:2);_ _123.46
Write(x:10:4);_ _123.4568

Поэкспериментируйте:

  • Write(у :38:3);
  • Write(у :20:10);
  • Write('Результат равен ', у :8:3);

Турбо-Паскаль 7.0 - Самоучитель
Лукин С.Н.