Для вычисления значений различных математических выражений в Pascal существуют различные арифметические функции:
Функция | Математическое обозначение | Описание |
abs(x) | |x| | Возвращает абсолютное значениеаргумента |
arctan(x) | arctg(x) | Возвращает значение арктангенсааргумента |
cos(x) | cos(x) | Возвращает значение косинусааргумента |
sin(x) | sin(x) | Возвращает значение синусааргумента |
pi | ? | Возвращает значение числа ?(3.141592653897932385) |
exp(x) | ex | Возвращает экспоненту аргумента |
ln(x) | ln(x) | Возвращает натуральный логарифмаргумента |
sqr(x) | x2 | Возвращает квадрат аргумента |
sqrt(x) | Возвращает корень квадратный изаргумента | |
frac(x) | Возвращает дробную частьаргумента | |
int(x) | [x] | Возвращает целую частьаргумента |
round(x) | Округляет аргумент доближайшего целого |
В таблице отсутствуют функции для вычисления tg(x), ctg(x), arcsin(x), arcos(x), arcctg(x), logax и xa.
Данные функции отсутствуют по той причине, что они могут быть выражены через уже имеющиеся функции, перечисленные в таблице.
Приведем эти выражения ниже. Сначала перечислим сами формулы, выражающие функции tgx, ctgx, arcsin(x), arcos(x), arcctg(x), logax и xa через перечисленные в таблице функции.
Таким образом, мы получим следующие выражения для вычисления значений перечисленных функций:
tg(x)=sin(x)/cos(x);
ctg(x)=cos(x)/sin(x);
arcctg(x)=pi/2-arctan(x);
arcsin(x)=arctan(x/sqrt(1-sqr(x)));
arcos(x) =arctan(sqrt(1-sqr(x))/ x);
logax=ln(x)/ln(a);
xa=exp(a*ln(x));
Пример. Составить программу для вычисления значения выражения
Решение. Составим словесный алгоритм решения данной задачи.
- Ввести значение х
- Вычислить у по заданной формуле
- Вывести у
Для того, чтобы вычислить значение данного выражения, необходимо записать его с помощью математических функций Паскаля:
y:=sqrt(2*x-1)-abs(4*exp(1.2*ln(x))+sqrt(3))/(5*sin(x)+cos(2*x))- arctan(0.25/sqrt(1-sqr(0.25)))
Отметим, что для вычисления использован знак := (он читается «присвоить»). Данный знак вычисляет значение выражения, стоящего справа от него и после этого помещает вычисленное значение в переменную, стоящую слева от него. Данный знак называется оператором присваивания и при его применении обязательным является требование того, чтобы слева от него стояла переменная.
Программа для вычисления данного выражения будет выглядеть следующим образом:
Program Vyrag1;
Uses Crt;
Var x,y:real;
Begin
ClrScr;{Очистить экран}
write(‘Введите х: ‘);{Вывести подсказку на экран}
readln(x);{Ввести значение х}
{Вычислить значение у}
y:=sqrt(2*x-1)-abs(4*exp(1.2*ln(x))+
sqrt(3))/(5*sin(x)+cos(2*x))- arctan(0.25/sqrt(1-sqr(0.25)));
writeln(‘y=’,y:6:3);{Вывести у на экран}
readln;{Задержать работу программы}
End.
Рассмотрим еще один пример. Вычислить значение выражения .
Решение. Словесный алгоритм решения данного задания будет точно таким же, как и в предыдущей задаче. Отличие будет заключаться только в формуле для вычисления у, а еще в том, что в данной программе будет использоваться не две переменные х и у, а три – х, у, z.
Program Vyrag2;
Uses Crt;
Var x,y,z:real;
Begin
ClrScr;{Очистить экран}
write(‘Введите х: ‘);{Вывести подсказку на экран}
readln(x);{Ввести значение х}
write(‘Введите z: ‘);{Вывести подсказку на экран}
readln(z);{Ввести значение z}
{Вычислить значение у}
y:=3*x*x-exp(sin(x))+sqrt(x*x+1)/(pi-arctan(x));
writeln(‘y=’,y:6:3);{Вывести у на экран}
readln;{Задержать работу программы}
End.
Задания для практической работы:
1. Найдите значение выражения:
2. Найдите значение выражения:
3. Найдите значение выражения:
4. Найдите значение выражения:
5. Найдите значение выражения:
6. Найдите значение выражения:
7. Найдите значение выражения:
8. Найдите значение выражения:
9. Найдите значение выражения:
10. Найдите значение выражения:
11. Найдите значение выражения:
12. Найдите значение выражения:
13. Найдите значение выражения:
14. Найдите значение выражения:
15. Найдите значение выражения:
Условный оператор
Разберем задание, на котором поясним назначение и работу условного оператора.
Задание. Составить программу для вычисления значения функции .
Решение
Нам уже приходилось вычислять значения различных выражений, однако они были подобраны так, что значения данных выражений можно было вычислить при любых значениях входящих в них переменных.
При решении данной задачи необходимо учитывать, что корень квадратный из х существует только для неотрицательных значений х (при ). Поэтому в данном случае мы сами должны продумать как должна работать программа при отрицательном и при неотрицательном значениях х. Пусть после ввода значения х программа проверит введенное значение х и выполнит одно из двух действий: если x=0, то вычислит и выведет ответ на экран, иначе выведет на экран сообщение о том, что при отрицательном значении х функция не существует.
Нарисуем блок-схему описанного алгоритма решения задачи:
По блок-схеме алгоритма решения задачи хорошо видно, что после ввода значения х выполнение команд программы разделяется на две части: левую и правую. Команды левой части выполнятся при условии, что введенное значение х окажется больше либо равно 0. Команды правой части выполнятся при условии, что введенное значение х окажется меньше нуля. Таким образом, в зависимости от введенного значения х будет выполнена либо левая, либо правая часть, но никогда не выполняются команды и левой и правой части одновременно.
Организовать такую работу программы можно с использованием условного оператора.
Общий вид условного оператора:
ifthen[else ];
— это выражение типа boolean, которое принимает одно из двух значений: true (истина) или false (ложь);
Истинное значение логического выражения на блок-схемах обычно обозначается знаком «+» или словом «да», а ложное значение – знаком «-» или словом «нет».
— оператор, который будет выполнен в том случае, когда логическое выражение принимает значение true;
— оператор, который будет выполнен в том случае, когда логическое выражение принимает значение false.
Работа условного оператора описывается следующей блок-схемой:
Работает условный оператор следующим образом: если логическое выражение принимает значение true (истина), то выполняется оператор 1, стоящий после служебного слова then, если логическое выражение принимает значение false (ложь), то выполняется оператор 2, стоящий после служебного слова else.
Следует обратить внимание, что секция elseзаключена в квадратные скобки. Ранее говорилось, что квадратные скобки при написании программы не пишутся, а при написании общего вида оператора они означают часть оператора или программы, которая может отсутствовать.
Т.е. условный оператор может иметь сокращенный вид:
ifthen ;
В сокращенном виде условного оператора оператор 1 выполняется при условии, что логическое выражение принимает значение true. Если же логическое выражение принимает значение false, то в сокращенном виде условного оператора ничего не выполняется и программа просто переходит к выполнению оператора следующего за условным оператором.
Работа сокращенного вида условного оператора описывается следующей блок-схемой:
Итак, вернемся к поставленному заданию и напишем программу, вычисляющую значение .
Program KvKoren;
Uses Crt;
Var x,y:real;
Begin
ClrScr; {Очистить экран}
write(‘Введите х: ‘); {Вывести подсказку на экран}
readln(x); {Ввести с клавиатуры значение в переменную х}
if x=0 {Проверить логическое выражение х=0}
then {Выполнить операторы, стоящие после слова then, если логическое выражение x=0 принимает значение true (истина)}
begin {Начало составного оператора}
y:=sqrt(x); {Вычислить корень из х и результат поместить в переменную у}
writeln(‘y=’,y:6:3); {Вывести полученное значение у на экран}
{Обратите внимание, что внутри составного оператора, составляющие его операторы отделяются друг от друга точкой с запятой}
end {Конец составного оператора. Важный нюанс: это конец составного оператора, но не конец условного оператора, поэтому здесь точка с запятой не ставится}
else writeln(‘При х=0 принимает значение false (ложь)}
readln; {Задержка работы программы}
End.
Обратите внимание на то, что в условном операторе после слов then и else может быть написано по одному оператору, однако, если требуется написать несколько операторов, то их нужно писать между зарезервированными словами begin и end, как это сделано после слова then. Ключевые слова begin и end называются операторными скобками, а операторы, заключенные между ними образуют так называемый составной оператор.
Приведем еще один пример использования условного оператора.
Пример. Составить программу для вычисления значения функции, заданной системой:
Решение.
В зависимости от введенного значения х значение у будет вычислено по одной или другой формуле.
Решить эту задачу можно двумя способами:
1)с использованием полного вида условного оператора;
2)с использованием сокращенного вида условного оператора.
Рассмотрим оба варианта. Чтобы увидеть разницу между ними, рассматривать их будем параллельно.
Словесный алгоритм решения данной задачи может выглядеть следующим образом:
Словесный алгоритмрешения задачи с использованием полного вида условного оператора | Словесный алгоритмрешения задачи с использованием сокращенного вида условного оператора |
|
|
Составим блок-схемы решения задачи, соответствующие первому и второму случаю:
Блок-схема решениязадачи с использованием полного вида условного оператора | Блок-схема решениязадачи с использованием сокращенного вида условного оператора |
Приведем тексты программ, соответствующих словесным алгоритмам и блок-схемам:
Текст программы сиспользованием полного вида условного оператора | Текст программы сиспользованием сокращенного вида условного оператора |
ProgramUslOp1; Uses Crt; Varx,y:real; Begin ClrScr; write(‘Введите х: ‘); readln(x); if x | Program UslOp2; Uses Crt; Var x,y:real; Begin ClrScr; write(‘Введите х: ‘); readln(x); if x=3 then y:=x*x-4; writeln(‘y=’,y:6:3); readln; End. |
Задания для решения
1.Даны три числа: a, b и c. Определить: можно ли построить треугольник с данными сторонами.
2.Даны два целых числа a и b. Определить: является ли число а делителем числа b.
3.Составить программу вычисления значения функции
4.Составить программу вычисления значения функции
5.Известны две скорости: одна в километрах в час, другая – в метрах в секунду. Какая из скоростей больше?
6.Составить программу нахождения корней квадратного уравнения ax2+bx+c=0.
7.Дано трехзначное число. Выяснить, является ли оно палиндромом («перевертышем»), т.е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево.
8.Дано трехзначное число. Верно ли, что все его цифры одинаковые?
9.Дано трехзначное число. Определить, есть ли среди его цифр одинаковые.
Задания для практической работы:
Оператор выбора
При написании программ, в которых реализованы алгоритмы ветвящейся структуры, наряду с условным оператором if … then часто используется оператор выбора case. Данный оператор имеет следующий общий вид:
caseof
:;
:;
…………………
:;
[else ]
end;
Рассмотрим как работает оператор выбора и в чем заключаются отличия оператора выбора от рассмотренного выше условного оператора.
Начинается оператор выбора с зарезервированного слова case. Это слово пишется всегда и оно показывает, что начинается оператор выбора. За словом case программист указывает селектор. Селектор – это переменная, которая может быть целочисленного (целые числа в диапазоне от -32768 до 65535), символьного или логического типа. За селектором обязательно следует зарезервированное слово of, которое отделяет селектор от списков выбора. Так как селектор – это переменная, то он может содержать различные значения и работа оператора выбора заключается в том, что он определяет в каком из списков выбора находится значение селектора и выполняет тот оператор, который находится за списком выбора, в котором было найдено значение селектора.
Таким образом, не зная заранее, какое значение находится в селекторе, программист может предусмотреть несколько различных вариантов значений селектора и задать их в одном или нескольких списках выбора, а оператор case выполнит тот оператор, который стоит после соответствующего списка выбора.
Если значение селектора не было найдено ни в одном из списков выбора, то будет выполнен оператор, находящийся в секции else. Но секция else может отсутствовать, тогда, если значение селектора не было найдено ни в одном списке выбора, то оператор case будет просто пропущен, и программа перейдет к выполнению оператора следующего за оператором case.
Статьи к прочтению:
Математика. Выпуск 7. Вычисление значений тригонометрических выражений.
Похожие статьи:
-
Структурная схема вычисления значения функции в виде блок-схемы
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ ЗАДАНИЕ № 1. Составить алгоритм и написать программу, которая по введенному значению аргумента вычисляет значение функции,…
-
Группа Типы действий Операции или элементы Вычисления в круглых скобках ( ) Вычисление значения функции Функции Операции подобные умножению *, / , div ,…