"Информатика", Поляков К.Ю., Еремин Е.А.
Стандартные функции — готовые операции языка Pascal: достаточно указать имя функции и аргумент, чтобы получить результат. Они помогают вычислять модули, степени, корни, значения тригонометрических и других выражений без описания алгоритма с нуля. Важно правильно записывать вызовы, учитывать типы и допустимые значения аргументов, а также помнить, что тригонометрические функции работают с углами в радианах. Для преобразования чисел пригодятся trunc и round, а для случайных значений — random.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Стандартная функция — заранее встроенная в язык программирования операция, которую можно вызвать по имени, не описывая её алгоритм. Например, Pascal уже умеет находить квадратный корень или модуль числа. Это позволяет использовать готовые вычисления и не составлять для них отдельную последовательность команд.
Аргумент функции — значение или выражение в скобках после имени функции, над которым выполняется операция. В записи sqrt(x + 4) аргументом является всё выражение x + 4, а не только x. Благодаря аргументу одна и та же функция подходит для разных исходных данных.
Математические стандартные функции — встроенные функции для вычисления модуля, степени, корня, тригонометрических и показательных выражений. К ним относятся, например, abs, sqr, sqrt, sin и exp. Они нужны, чтобы математическую формулу можно было непосредственно записать в программе.
Функция округления — стандартная функция, преобразующая вещественное число в целое по определённому правилу. В Pascal для этого служат trunc и round, но правила у них разные. Выбор функции зависит от того, нужно ли отбросить дробную часть или округлить число до ближайшего целого.
Вызов функции в Pascal записывают как имя, затем круглые скобки с аргументом: например, sqrt(a + b). Скобки показывают программе, какое значение нужно обработать, и отделяют аргумент от других частей выражения. Вызов возвращает результат, поэтому его можно присвоить переменной или использовать в вычислении, например c := sqrt(a) + 1.
Стандартные функции упрощают программу, потому что готовый вызов заменяет подробное описание алгоритма. Для вычисления квадратного корня не нужно самостоятельно подбирать число и проверять его возведение в квадрат: достаточно написать sqrt(x). Это делает запись короче и снижает вероятность ошибки в вычислительных шагах.
Функции abs, sqr и sqrt выполняют разные операции, хотя в названиях двух последних есть похожие буквы. abs(-5) даёт 5: функция убирает знак минус у отрицательного числа. sqr(5) даёт 25, а sqrt(25) — 5; аргумент sqrt должен быть неотрицательным, иначе вещественный результат в обычной арифметике не определён.
Функции sin, cos и arctan принимают углы и значения в радианной мере. Радианы нужны, потому что так устроены определения тригонометрических функций в математике и их вычисления в языках программирования: например, 90° нужно записать как π/2. У sin и cos аргумент может быть любым вещественным числом, а arctan(x) определена для любого вещественного x и возвращает угол.
trunc и round преобразуют вещественное число в целое, но делают это по-разному: trunc отбрасывает дробную часть, а round округляет до ближайшего целого. Поэтому, например, для 3,8 результаты будут 3 и 4 соответственно. random(n) возвращает псевдослучайное целое число от 0 до n − 1; число называется псевдослучайным, потому что его последовательность создаётся программным алгоритмом, а не возникает без правила.
| Функция | Математическая запись | Назначение | Тип и ограничения аргумента | Тип результата |
|---|---|---|---|---|
| abs(x) | |x| | Вычисляет модуль | Целый или вещественный | Тот же числовой тип |
| sqr(x) | x² | Возводит в квадрат | Целый или вещественный | Числовой |
| sqrt(x) | √x | Извлекает квадратный корень | Вещественный, x ≥ 0 | Вещественный |
| sin(x) | sin x | Вычисляет синус | Вещественный угол в радианах | Вещественный |
| cos(x) | cos x | Вычисляет косинус | Вещественный угол в радианах | Вещественный |
| arctan(x) | arctan x | Находит угол по значению тангенса | Любой вещественный | Вещественный угол в радианах |
| ln(x) | ln x | Вычисляет натуральный логарифм | Вещественный, x > 0 | Вещественный |
| exp(x) | eˣ | Вычисляет экспоненту | Вещественный | Вещественный |
| trunc(x) | Отбрасывание дробной части | Отбрасывает дробную часть числа | Вещественный | Целый |
| round(x) | Округление до целого | Округляет до ближайшего целого | Вещественный | Целый |
| random(n) | Целое число от 0 до n − 1 | Формирует псевдослучайное число | Положительное целое n | Целый |
Сначала найдите в таблице нужную операцию, затем проверьте, подходит ли аргумент по типу и области допустимых значений. Для random(n) верхняя граница результата не включается, а sin и cos ждут угол в радианах. Учитывайте также, что точные особенности типов могут зависеть от реализации Pascal.
Условие: вычислить z = abs(−12) + sqrt(81) − sqr(2). Чтобы не перепутать операции, сначала отдельно найдём значение каждого вызова функции. Затем подставим результаты в исходное выражение и выполним сложение и вычитание.
Итоговый ответ: z = 17. Проверка по смыслу помогает заметить возможную путаницу: квадратный корень из 81 равен 9, а не 81. При записи в Pascal выражение можно сохранить в переменную, если заранее выбрать подходящий числовой тип.
Условие: при a = π/4 вычислить y = sin(a) + cos(a) и вывести результат. Здесь π/4 — это угол в радианах, равный 45°. Для такого угла синус и косинус одинаковы и равны √2/2.
Результат равен √2, приблизительно 1,414. В записи программы π обычно не является отдельной числовой записью, поэтому можно использовать константу Pi, если она доступна, или задать её приближённое значение. Если подставить 45 вместо π/4, функции воспримут это как 45 радиан, и получится другой результат.
Условие: по катетам x и y найти длину гипотенузы, угол между гипотенузой и первым катетом, а длину округлить до целого. Сначала используем теорему Пифагора, затем найдём тангенс угла как отношение противолежащего катета к прилежащему. Для угла формула arctan(y/x) подходит, если x ≠ 0; в прямоугольном треугольнике катеты положительны.
Ответ: c₀ — округлённая длина гипотенузы, α — угол в радианах. Если угол нужен в градусах, его переводят по формуле α · 180/π. Перед вычислением полезно проверить, что x и y положительны, а при необходимости отдельно округлить и угол.
Записывают функцию без круглых скобок или забывают заключить аргумент в скобки, потому что переносят обозначения прямо из математической формулы. Но Pascal должен видеть, где начинается и заканчивается передаваемое выражение: правильно писать sqrt(x + 1). Проверка простая: после имени функции поставьте скобки и убедитесь, что внутри них находится весь аргумент.
Путают sqr(x) и sqrt(x), так как названия похожи. Первая функция возводит число в квадрат, вторая извлекает корень, поэтому sqr(3) = 9, а sqrt(9) = 3. Чтобы проверить запись, спросите себя, какое действие нужно выполнить: умножить число на себя или найти число, квадрат которого равен аргументу.
Передают отрицательное число в sqrt или ноль и отрицательное число в ln, не проверив область определения. Такая ошибка возникает, когда формулу переводят в программу, но забывают ограничения математической операции. До вызова функции проверьте условие x ≥ 0 для sqrt и x > 0 для ln, а если оно может нарушиться, предусмотрите проверку в программе.
Считают, что round и trunc округляют одинаково, потому что обе функции возвращают целое число. На самом деле trunc отбрасывает дробную часть, а round выбирает ближайшее целое: например, для 4,7 результаты равны 4 и 5. Сравните ответы на числе с ненулевой дробной частью, чтобы убедиться, что выбрали нужное преобразование.
Для работы со стандартными функциями нужны переменные, типы данных, арифметические выражения и присваивание: результат вызова функции часто сохраняют в переменной. Также важно знать правила записи программы на Pascal, чтобы правильно оформить выражение и вывести ответ. При переводе формул в команды строят математическую модель задачи и решают, какие величины нужно вычислить. Позже функции пригодятся в задачах с ветвлениями, циклами, координатами, геометрией и случайными данными.
Можно ли передавать функции не число, а целое выражение?
Да, аргументом может быть выражение, если его результат подходит функции по типу и допустимым значениям. Например, sqrt(x + 4) сначала вычисляет x + 4, а затем извлекает квадратный корень.
Почему результат sin(90) не равен единице?
Функция sin принимает угол в радианах, а не в градусах. Число 90 означает 90 радиан; для синуса 90° нужно передать π/2.
Чем отличаются sqr(x) и x*x?
Обе записи возводят x в квадрат и обычно дают одинаковый результат. sqr — встроенная функция, а x*x — умножение переменной на саму себя; выбирайте запись, которая понятнее в конкретном выражении.
Почему программа выдаёт ошибку при вычислении sqrt отрицательного числа?
В обычной вещественной арифметике квадратный корень определён только для неотрицательных чисел. Перед вызовом sqrt проверьте, что аргумент не меньше нуля.
Как получить случайное число в нужном диапазоне?
Вызов random(n) в Pascal возвращает целое число от 0 до n − 1. Чтобы получить число от a до b включительно, используйте a + random(b − a + 1), где a и b — целые и a ≤ b.
§ 25. Стандартные функции