Паскаль. Основы программирования

       

Арифметические операции с вещественными переменными




Операция

Запись на Паскале

Сложение

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 заканчивается точкой с запятой, а заканчивающий программу - точкой.






Содержание раздела