Арифметические операции с вещественными переменными
Операция | Запись на Паскале | ||
Сложение | 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 заканчивается точкой с запятой, а заканчивающий программу - точкой.