Вычисление значения функции

Задача

Требуется написать программу, вычисляющую значение какой-либо функции у = f(x). Допустим, такой:

у = x – 2, если x > 0,
y = 0, если x = 0,
y = |x|, если x < 0.

Решение

При определении значений подобных функций переменная y вычисляется по-разному (по разным формулам) в зависимости от значения x.

Такие задачи решаются с помощью конструкции условного оператора if - else. Поскольку в данном случае мы имеем три условия (x > 0, x = 0 и x < 0), то потребуется использование еще вложенной конструкции if - else, т. к. в языке Pascal нет оператора множественного ветвления (оператор case в данном случае не подходит).

В языке программирования Паскаль (да и в других тоже) желательно вложенные конструкции if - else помещать во внешнюю ветку else, а не if. Так проще не запутаться.

Таким образом, алгоритм вычисления значения функции может быть таким:

  1. Если x > 0, то у = x - 2
  2. Иначе (ниже идет вложенная конструкция)
  3. Если x = 0, то y = 0
  4. Иначе y = |x|.

В последнем пункте можно опустить оператор if с проверкой, что x < 0, так как если ход выполнения программы дошел до этого пункта, то x уже другим быть и не может (варианты, когда он больше или равен нулю, уже были исключены).

Для определения модуля (абсолютного значения) переменной можно использовать встроенную функцию abs() языка Pascal. В данном случае можно обойтись и без нее: поскольку уже известно, что x отрицателен, то, чтобы получить положительное число (модуль), нужно его умножить на -1.

var
    x, y: integer;
 
begin
    write ('x = ');
    readln (x);
 
    if x > 0 then
        y := x - 2
    else
        if x = 0 then
            y := 0
        else
            y := abs(x);
 
    writeln ('y = ', y);
 
end.

Тема

Условные операторы

Уровень

Простые задачи

Последняя редакция

Комментарии

Запрограммируйте в языке паскаль вычисление куба числа x.

Вычислить значение функции y = min + 2*min + b, определив и использовав функцию min, которая равна минимальному числу среди вводимых: a, b.

Ответ на от Гость

Program few2;
Uses crt;
Var a, b, y, min: integer;
Begin
ClrScr;
Writeln('y:= min+ 2* min+ b');
Write('Значение a: ');
Readln(a);
Write('Значение b: ');
Readln(b);
If a>b then
min:=a;
If a<b then
min:=b;
y:= min+ 2* min+ b;
Begin
If a=b then
Writeln('Невозможно найти значение...')
else
Begin
Writeln('min= ', min);
Writeln('y= ', min, '+ 2* ', min, '+ ', b);
Writeln('Y= ', y);
End;
End;
Readln;
End.

Необходимо составить таблицу значений функции Y=sqrt(sqrX + 5X + 3) на отрезке от 0 до 4 с шагом 0,25. Таблица должна выводится на экран в два столбца с заголовком "Х" и "f(X)".

Ответ на от Гость

var
  x: real;
 
begin
  x := 0;
  writeln('|    X    |    f(X)  |');
  while x <= 4 do
  begin
    writeln('|--------------------|');
    writeln('|     ', x:2:2, '|', '      ', sqrt(sqr(x) + 5 * x + 3):2:2, '|');
    x := x + 0.25;
  end;
  writeln('|--------------------|');
 
end.

Составить программу нахождения значения функции y=1/(1+2x) по значению аргумента.

Ответ на от Гость

Program1;
var x, y: real;
begin
writeln('Ввести: x=');
readln(x);
y:=1/(1+2*x);
write('Ответ: y=', y)
end.

Ответ на от Гость

Var
V, A: real;
Begin
A := 1;
writeln ('———————————');
writeln ('| а | в |');
While A<=5 Do
Begin
writeln ('|———|—————|');
V := A*A 1;
write ('|',A:2:1,'|');
If V<9 Then write ('0');
writeln (V:2:2,'|');
A := A 0.1;
End;
writeln ('———————————');
End.

Дана функция:

_
|
| x - 4, при x <= 2,
<
| x2 + 2, при x > 2.
|_

Найти значение функции (y) в диапазоне x [-10, 10].

var
    x: integer;
 
begin
    for x := -10 to 10 do begin
        if x <= 2 then
            write(x-4:4);
        if x > 2 then
            write(sqr(x) + 2:4);
    end;
 
    writeln();
 
readln;
end.

Можно то же самое, но без вложенных операторов условия. Программа на языке Паскаль:
var
    x, y: integer;
 
begin
    write ('x = ');
    readln (x);
 
    if x > 0 then
        y := x - 2;
    if x = 0 then
        y := 0;
    if x = 0 then
        y := abs (x);
 
    writeln ('y = ', y);
readln
 
end.

Дано число х. Вычислить y. Если число х принадлежит диапазону х [-10;0], то y=x^2; если число х принадлежит диапазону х [0;1], то y=sin^2(x); если число х принадлежит диапазону х [1;5], то y=ln(x^2); иначе y=x.

Ответ на от Гость

program zadacha;
 
var
x, y: real;
 
begin
writeln('Введите x');
readln(x);
if (x >= -10) and (x <= 0) then y := sqr(x)
else if (x >= 0) and (x <= 1) then y := sqr(sin(x))
else if (x >= 1) and (x <= 5) then y := ln(sqr(x))
else y := x;
writeln(y);
end.

Вычислить значение функции:

{x2+5, при x>3

{x-8, при x<=3

На языке Паскаль Написать программы с использованием всех возможных операторов цикла для вычисления значений у, если х принадлежит заданному диапазону, а значения х изменяется с шагом h. Шаг h = 2 диапазон [6 ; 13) задание у=x^2/8х