Как найти значение функции на pascal

На занятии будет объяснен алгоритм работы с функциями на Паскале, рассмотрены стандартные функции. Будут разобраны примеры использования функций с параметрами и без параметров.

Содержание:

  • Стандартные функции языка Pascal
    • Арифметические функции (основные)
    • Функции преобразования типов
  • Пользовательские функции Pascal
    • Самостоятельная работа

Арифметические функции (основные)

Функция Назначение Тип результата
abs (x) абсолютное значение аргумента совпадает с типом аргумента
sqr (x) квадрат аргумента совпадает с типом аргумента
sqrt (x) квадратный корень аргумента вещественный
cos (x) косинус аргумента вещественный
sin (x) синус аргумента вещественный
arctan (x) арктангенс аргумента вещественный
exp (x) ex вещественный
ln (x) натуральный логарифм вещественный
int (x) целая часть числа вещественный
frac (x) дробная часть числа вещественный

Функции преобразования типов

round (x) — округляет вещественное число до ближайшего целого.
trunc (x) — выдает целую часть вещественного числа, отбрасывая дробную.

Пользовательские функции Pascal

Функция в Паскале — это подпрограмма, которая в отличие от процедуры всегда возвращает какое-либо значение. Для этого в теле функции её имени присваивается вычисленное значение — результат, который она возвращает.

  • Функция – это подпрограмма, результатом работы которой является определенное значение.
  • Функции используются для:
    • выполнения одинаковых расчетов в различных местах программы;
    • для создания общедоступных библиотек функций.
  • Синтаксис:
  • заголовок начинается служебным словом function
  • 1

  • описание формальных параметров (тех, значения которых передаются из основной программы в функцию):
  • формальные параметры в паскале

  • параметры-переменные — параметры, значения которых становятся доступны и в основной программе (возвращаются в программу)
  • параметры-переменные в паскале

  • тип возвращаемого функцией результата описывается в конце заголовка функции через двоеточие:
  • тип функции

  • Вызывается функция в теле основной программы, только если ее имя фигурирует в каком-либо выражении. В отличие от процедуры, которая вызывается отдельно.
  • Внутри функции можно объявлять и использовать локальные переменные:
  • локальные переменные в функции

  • значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
  • результат функции

Рассмотрим синтаксис:

var;{объявление глобальных переменных}
 
function название (параметры): тип результата;
var; {объявление локальных переменных}
begin{тело функции}
название:=результат; {результат вычислений всегда присваивается функции}
end;
 
begin{тело основной программы}
end.

Пример: написать функцию, которая вычисляет наибольшее из заданных двух значений

Решение:

пример функции в паскале

Вызов функции:
вызов функции в паскале


PascalABC.NET:

Правила описания функции:

1. Мы должны написать тип значения, которое возвращает функция.
2. Переменная Result хранит результат функции.

function f(x: real): real;
begin
  Result := x * x + 1;
end;

Вызов функции стоит в выражении:

// основная программа
begin
 var x := 5;
 var r := Sqrt(x) + f(x);
end.

Задача function 0. Написать функцию, которая вычисляет наибольшее из заданных трех значений. Функция с тремя параметрами.

✍ Пример результата:

Введите три числа:
4 1 6
наибольшее = 6

Пример: Написать функцию на Паскале, которая складывает два любых числа

✍ Пример результата:

первое число:
2
второе число:
5
сумма = 7

Функция суммы двух чисел на паскале

✍ Решение:

1
2
3
4
5
6
7
8
9
10
11
12
var x,y:integer;
function f(a,b:integer):integer;
begin
  f:= a+b;
end;
begin
 writeln('первое число:');
 readln(x);
 writeln('второе число:');
 readln(y);
 writeln('сумма= ',f(x,y));
end.

В рассмотренном примере использования функции в Паскале: функция f имеет два целочисленных параметра — a и b. Через двоеточие в заголовке функции (строка 2) указано, что значение, вычисляемое функцией, будет тоже целочисленным. В теле функции вычисляемая сумма присваивается имени функции. А в основной программе вызов функции осуществляется в качестве параметра оператора writeln.

Таким образом, главное отличие функции от процедуры — это то, что функция производит какие-либо вычисления и выдает в программу результат в виде значения, в то время как процедура чаще всего выполняет какие-либо действия с результатом, например, выводит его на экран (функция этого делать не может).

Задача function 1. При помощи функции найти среднее арифметическое двух чисел (функция с двумя параметрами).

✍ Пример результата:

Введите два числа:
4 7
среднее арифметическое = 5,5

Пример: Составить программу с функцией для вычисления факториала числа.

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var x:integer;
function fact(a:integer):integer;
var i: integer;
begin
  if a<=1 then begin 
        fact:=1;exit;
  end;
  result:=2;
  for i:=3 to a do
     result:=result*i;
  fact:=result;
end;
begin
 writeln('число:');
 readln(x);
 writeln(fact(x));
end.
1
2
3
4
5
6
7
8
9
10
function Fact(n: integer): integer;
begin
  Result := 1;
  for var i:=1 to n do
    Result *= i
end;
begin
 var x:= readInteger('число:');
 println(x,'! = ',fact(x));
end.

В рассмотренном примере функция имеет один параметр — a. Вычисляемое функцией значение имеет целочисленный тип, это указывается в заголовке функции (строка 2). В теле функции в цикле for вычисляется факториал числа. Результат вычисления присваивается имени функции (строка 9). В теле программы для вывода результата функции она вызывается в операторе writeln (строка 14), который и выводит результат на экран.


PascalABC.NET:

Короткое определение функции:

function Sq(x: real) := x * x + 1;
 
begin
  var x := 10;
  var r := Sq(x) + Sq(2)
end.

Короткая запись

Если тело функции состоит только из одного оператора, PascalABC.NET позволяет использовать при описании сокращенный синтаксис, без ключевых слов begin и end:

1
2
3
4
5
6
##
function SumXY(x,y: real) := x + y;
// основная программа
begin
  Print (SumXY(9,2)); //11
end;

Задача function 2. Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. N — параметр функции.

Пример:

Введите число:
100
сумма = 5050

Задача function 3. Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна (в два раза больше предыдущего результата), на 3-ю – 4 зерна, на 4-ю – 8 зерен…). N — параметр функции.

Пример:

Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.

Задача function 4. Описать функцию IsDigit(A), которая возвращает истину, если целое число A представляет цифру (то есть A лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N (N ≥ 0) данных чисел.

  
Пример:

Введите N:
3
Введите число:
2 >>> true
Введите число:
34 >>> false
Введите число:
4 >>> true

Задача function 5. Вычисление степени числа с помощью функции на языке Паскаль.

 
Пример:

Введите число:
3
Введите степень числа:
2
Результат 3^2 = 9

Задача function 6. Описать функцию Calc(A, B, Operation) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Operation: 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1, N2, N3.

  
Пример:

Введите два числа:
5  7
Введите номер операции (1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение):
2
Результат 5*7 = 35

* Из задачника М. Э. Абрамян (Proc22)

Самостоятельная работа

1 вариант: Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R (R — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S=π∗R2. В качестве значения Пи использовать 3.14.

* Из задачника М. Э. Абрамян (Proc18)

Пример:

Введите радиус:
5.2
Площадь круга = 16,328‬
___
Введите радиус:
6.3
Площадь круга = 19,782‬‬
___
Введите радиус:
7.1
Площадь круга = 22,294

2 вариант: Описать функцию TriangleP(a, h), находящую периметр равнобедренного треугольника по его основанию a и высоте h, проведенной к основанию (a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты (периметр = сумме длин всех сторон). Для нахождения боковой стороны b треугольника использовать теорему Пифагора: b2=(a/2)2+h2.

* Из задачника М. Э. Абрамян (Proc20)

Пример:

Введите основание треугольника:
6
Введите высоту треугольника:
5
Периметр треугольника = 17,83095 
___
Введите основание треугольника:
...
Введите высоту треугольника:
...
Периметр треугольника = ... 
___
Введите основание треугольника:
...
Введите высоту треугольника:
...
Периметр треугольника = ... 

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

Автор admin Просмотров 17.2к. Обновлено 26 сентября 2021

Дана следующая функция y=f(x):
y = 2x — 10, если x > 0
y = 0, если x = 0
y = 2 * |x| — 1, если x < 0

Требуется найти значение функции по переданному x.

  1. Получить с клавиатуры значение x.
  2. Если x больше 0, то вычислить выражение 2*x-10, результат присвоить переменной y.
    1. Иначе если x равен 0, то присвоить y значение 0.
      1. Иначе присвоить y результат выражения 2*|x|-1.
  3. Вывести значение y на экран.

Pascal

Язык Си

Python

КуМир

Basic-256

Самый эффективный способ изучения любого языка программирования – практика. Поэтому начнем изучение языка Pascal с простого примера: табулирования функции, а также поиска экстремумов функции в заданном диапазоне.

Табулирование функции представляет собой вычисление значения функции для каждого соответствующего аргумента, заданного с определенным шагом, в четко установленных границах. Проще говоря в заданном диапазоне от крайнего левого значения шагаем до крайнего правого значения и в каждой точке шага вычисляем значение функции.

Экстре́мум (лат. extremum — крайний) в математике — максимальное или минимальное значение функции на заданном множестве.

Для примера возьмем функцию: y=2x+3 и диапазон от -3 до 3 включительно. Шаг возьмем равным 1.

Составим таблицу табулирования функции:

Табулирование функции и поиск её экстремумов в заданном дипазоне на Pascal

Как видно из таблицы экстремумы функции в заданном диапазоне: максимум = 9, минимум = -3

Теперь составим программу. Для начала дадим нашей программе имя.

Program tabulirovanie;

Далее объявляем переменные, которые будем использовать в программе. Для этого используется служебное слово VAR после которого перечисляются имена необходимых нам переменных через запятую. Потом ставим двоеточие и пишем какого типа будут эти переменные.

integer – если нам нужны целочисленные значения и real -если мы будем использовать вещественные числа. Для универсальности математических программ используют, как правило, тип real, поскольку в зависимости от вида функции значения редко бывают целочисленными.

var x, x1, x2, y, s, min, max : real;

где x1 и x2 – границы интервала, x – текущая координата по оси x, y – значение функции в точке x, max и min – экстремумы функции и s – шаг табулирования.

Для упрощения алгоритма вычисление значения функции y в точке x вынесем в отдельную подпрограмму. Для этого используем служебное слово function далее следует значение fun, которое будет возвращать результат расчета, произведенного в подпрограмме. В скобках указываем имя аргумента, которое передаем для расчета в подпрограмму. Все значения будут типа real, т.е. вещественные числа.

function fun(a: real): real;

begin

fun := 2 * a + 3;

end;

Теперь приступим к самой программе. Для обозначения определенного блока команд используется пара служебных слов begin…..end, которые всегда находятся в паре. У каждого begin должен быть в программе end.

begin

write(‘Введите начало диапазона : ‘); Readln(x1);

write(‘Введите конец диапазона : ‘); Readln(x2);

write(‘Введите шаг табулирования : ‘); Readln(s);

Для вывода текста на экран используется команда write / writeln. Разница между этими командами состоит в том, что после команды write курсор остается в конце строки, а после команды writeln курсор переводится в начало следующей строки.

Команда Read / Readln предназначена для ввода данных с клавиатуры в соответствующую переменную, указанную в скобках.

Печатаем шапку нашей таблицы табулирования.

writeln(‘ Х Y’);

Теперь нашей “рабочей” переменной x присваиваем значение начала диапазона, т.е. x1. Значениям экстремумов присваиваем значение функции в начальной точке.

x := x1; min := fun(x1); max := min;

Для табулирования нам надо будет повторять несколько одинаковых команд до тех пор, пока наше значение x не достигнет конца диапазона. Поэтому нам нужен цикл с условием: делать до тех пор пока x меньше либо равен правой границе диапазона, т.е. x2. Для этого используем цикл while <условие> do

while x <= x2 do

begin

Вычисляем значение функции в точке x.

y := fun(x);

Сравниваем полученное значение с переменными max и min. Если значение функции y больше значения переменной max, то заменяем значение переменной max на y. Аналогично проверяем минимум.

if y > max then max := y;

if y < min then min := y;

Выводим значения х и у на экран.

writeln(x:10:3, y:10:3);

Делаем шаг вправо, увеличиваем значение x на величину нашего шага s.

x := x + s;

Команды внутри цикла закончились, поэтому не забываем написать end.

end;

По окончании цикла выводим на экран значения экстремумов функции.

writeln(‘ Максимум функции: ‘, max:10:4);

writeln(‘ Минимум функции: ‘, min:10:4);

end.

Вот так будет выглядеть программа табулирования и результаты ее работы.

Табулирование функции и поиск её экстремумов в заданном дипазоне на Pascal



Ученик

(121),
на голосовании



6 лет назад

Голосование за лучший ответ

ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО*

Высший разум

(278462)


6 лет назад

Заводите еще одну переменную, в которой будете хранить текущее минимальное значение.
Перед циклами его выставляете в какое-то большое значение, типа миллиона или миллиарда.
Внутри циклов после вычисления значения функции сравниваете это значение и текущее минимальное значение. Если значение функции меньше, то присваиваете текущему минимальному вычисленное значение.
А в конце, после циклов у вас и останется самое минимальное среди всех значений значение. Его вы и выведете пользователю.

Евгений СухаревУченик (121)

6 лет назад

Спасибо! Я думал про такой вариант. Так скорее всего и сделаю, просто немного смущает выставление минимума до большого числа, я думал есть более универсальный вариант.

Вспомогательные алгоритмы используют тогда, когда в программе необходимо выполнять одно и то же действие несколько раз.

Рассмотрим три вспомогательных алгоритма на языке программирования Pascal:

  • функции;
  • процедуры;
  • рекурсии.

Функция — это подпрограмма, в результате работы которой выводится одна переменная (число или текст).

Обрати внимание!

Общий вид описания функции:

function F (x: тип): тип функции;

begin

        F: (=) выражение;

end;

Функция описывается до начала описания основной программы.

Напишем программу, которая будет выбирать из двух введённых с клавиатуры значений наибольшее.

С помощью функции опишем алгоритм нахождения большего из двух чисел, а в блоке основной программы запросим ввод данных и воспользуемся уже готовой функцией. В результате работы программы будет выведена одна переменная.

Screenshot18.png

Напишем программу, которая по координатам точек будет вычислять длины сторон квадрата. Найдём периметр квадрата.

Описание функции. Здесь мы указали координаты для первой и второй точек одной стороны, тип функции real, т. к. в формуле используется квадратный корень и значения могут получаться нецелыми.

В блоке подпрограммы описан алгоритм вычисления длины стороны по формуле, известной из геометрии.

Далее в теле основной программы мы задаём координаты для каждой стороны квадрата совместно с функцией. Вычисляем периметр.

Скриншот 19-10-2021 102128.jpg

Подумай! Как нужно изменить последнюю программу, чтобы она стала универсальной для любого квадрата? Попробуй написать такую программу.

Добавить комментарий