Арифметические операции с вещественными переменными
| Операция
|
| Запись на Паскале
|
|
| Сложение
|
| a + b
|
|
| Вычитание
|
| a - b
|
|
| Умножение
|
| a*b
|
|
| Деление
|
| a/b
|
|
Как видите, единственным отличием от операций с целыми числами - это операция деления, которая обозначается наклонной чертой.
Кроме арифметических операций, в Паскале существуют так называемые стандартные
или встроенные функции, которые выполняются сразу после указания их имени, заведомо объявленных в Паскале, после которого в скобках записывается аргумент функции.
| Функция
|
| Математическое
обозначение
|
| Ее объявление на Паскале
|
|
| Квадратичная
|
|
|
| sqr(x)
|
|
| Абсолютная величина
|
| |x|
|
| abs(x)
|
|
| Квадратный корень
|
|
|
| sqrt(x)
|
|
| Синус
|
| sinx
|
| sin(x)
|
|
| Косинус
|
| cosx
|
| cos(x)
|
|
| Арктангенс
|
| arctgx
|
| arctan(x)
|
|
| Натуральный логарифм
|
| lnx
|
| ln(x)
|
|
| Показательная функция (экспонента)
|
|
|
| exp(x)
|
|
Некоторые из перечисленных встроенных функций могут быть использованы с целыми числами или переменными целого типа (аргумент имеет тип integer).
К таким функциям относятся:
Квадратичная: x2 - sqr(x). Абсолютная величина: |x| - abs(x).
На Паскале нет функций вычисления arcsinx, arccosx, arcctgx. Как с помощью уже известных встроенных функций вычислить значения функций arcsinx, arccosx, arcctgx?
Для этого надо совершить небольшую экскурсию в математику и выразить значение функций arcsinx, arccosx, arcctgx через функцию arctgx.
Arcsinx
Пусть
где |x|
, тогда
отсюда
получаем,
окончательно имеем:
| Функция
|
| Математическая обозначение
|
| Ее объявление на Паскале
|
|
| Арксинус
|
| arcsinx
|
|
|
|
Аналогичными рассуждениями можно получить выражения для arccosx и arcctgx.
| Функция
|
| Математическое обозначение
|
| Ее объявление на Паскале
|
|
| Арккосинус
|
| arccosx
|
|
|
|
| Арккотангенс
|
| arcctgx
|
|
|
|
Пример 3. Составить программу решения квадратного уравнения
ax2 + bx + c = 0.
Наметим план составления программы или, иначе говоря, алгоритм.
Под алгоритмом мы будем понимать последовательность указаний для составления программы.
Алгоритм
1.
Содержание.
Описание переменных и их типов.
2.
Ввод
значений коэффициентов.
3.
Вычисление
значения дискриминанта (d).
Если
d < 0,
тогда уравнение не имеет корней,
иначе,
если d = 0,
тогда уравнение имеет один корень,
вычислить значение этого корня и выдать его на экран,
иначе, уравнение имеет два корня,
вычислить их и выдать на экран.
4. Конец.
Составим
программу, пользуясь алгоритмом.
Program
Problem3; { Программа решения квадратного уравнения }
uses WinCrt;
var
a, b, c, d, x1, x2 : real;
begin
write('Введите коэффициенты уравнения ');
readln(a, b, c);
d := b*b - 4*a*c;
if d < 0
then writeln('Уравнение не имеет корней')
else
if d=0
then
writeln('Уравнение имеет один корень ',-b/(2*a))
else
begin
x1 := (-b - sqrt(d))/(2*a);
x2 := (-b + sqrt(d))/(2*a);
write('Уравнение имеет два различных корня ');
writeln('x1 = ', x1, ' x2 = ', x2)
end
end.
Разберем структуру программы и посмотрим как она будет работать.
ИМЯ ПРОГРАММЫ И КОММЕНТАРИЙ
Имя программы "Problem3;", после этого в комментарии записано содержание программы: "{Программа решения квадратного уравнения};".
РАЗДЕЛ ОПИСАНИЙ
В разделе описаний указаны имена переменных и их типы. Понятно, что переменные a, b, c нужны для значений коэффициентов уравнения, переменная d для значений дискриминанта, а x1 и x2 для корней уравнения. Понятно, что все они принимают вещественные значения, ограничиться целыми невозможно, и имеют тип: real.
РАЗДЕЛ ОПЕРАТОРОВ
Раздел операторов начинается вводом информации. С помощью оператора:
write('Введите коэффициенты уравнения '); readln(a, b, c);
на экран выводится информация, записанная в этом операторе write:
Введите коэффициенты уравнения
В ответ на этот запрос, пользователю надо ввести коэффициенты уравнения, разделяя их пробелами (проще говоря, ввести через пробелы).
Обратите внимание на такую мелочь, в операторе writeln, перед вторым, "заканчивающим" запись апострофом, оставлен пробел. Для чего? Только из эстетических соображений. Следующий оператор readln(a, b, c); будет вводить информацию, которую вы наберете с клавиатуры. Если этого пробела не будет, то вводимое число будет писаться вплотную к слову "уравнения", что, конечно, некрасиво.
Далее вычисляется значение дискриминанта и присваивается переменной d.
Первым условным оператором
if проверяется условие d < 0, если оно выполняется, тогда на экран выдается сообщение, записанное после
then в операторе writeln: "Уравнение не имеет корней", иначе после
else, новое условие
if
d = 0, тогда выполняются операторы после
then, т.е. выдается сообщение, что уравнение имеет один корень, вычисляется его значение и выдается на экран, так как всё это записано в скобках оператора writeln, иначе, остается одно, - когда дискриминант больше нуля, тогда надо выполнить несколько операторов, которые записаны после
else. Но поскольку их несколько, то необходимо открыть операторные скобки
begin, в которых и записать вычисление значений корней и вывод их на экран. После чего необходимо закрыть операторные скобки служебным словом
end.
После этого программа заканчивается служебным словом end с обязательной точкой в конце.
Каждая операторная скобка,
начинаемая словом
begin должна обязательно "
закрываться" словом
end. Если это слово оказывается перед оператором
else или является предпоследним, то точка с запятой после
end не ставится. Во всех других случаях
end заканчивается точкой с запятой, а заканчивающий программу - точкой.