Функции языка программирования паскаль
Стандартные функции 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
Функция в Pascal – это подпрограмма, которая всегда возвращает определенное значение (в отличие от процедуры). Поэтому в теле функции ее имени присваивается результат (вычислительное значение), который она возвращает.
Другими словами, функция представляет собой подпрограмму, результатом работы которой выступает определенное значение.
Функции применяют для:
Синтаксис:
Правила применения процедур:
Задача. Найдите значения выражений:
a) (1+x)2
b)
c) |a+ bx|
Перед тем как приступить к составлению программы, нужно перевести данные выражения с математического языка на Pascal.
a) (1+x)2 → sqr(1+x)
b) → sqrt((1+A)*5)
c) |A+ bx| → abs(A+b*x)
Теперь можно переходить к составлению самой программы.
Program Primer;
Uses
Crt;
Var
A : word; <так как подкоренное выражение должно быть положительно>
b, x, result : real;
Begin
ClrScr;
Writeln(‘Введите значения переменных (A-положительно)’);
Write(‘A=’);
Readln(A);
Write(‘b=’);
Readln(b);
Write(‘x=’);
Readln(x);
Result := sqr(1+x);
Writeln (‘sqr(1+x)=’, result);
Result := sqrt((1+A)*5);
Writeln (‘sqrt((1+A)*5)=’, result);
Result := abs(A+b*x);
Writeln (‘abs(A+b*x)=’, result);
Readln;
End.
Задание. Наберите программу, протестируйте ее работоспособность, добавьте комментарий, сохраните файл, после чего распечатайте листинг.
Любые вопросы по материалу можете задать в комментариях. Возникли ли у вас какие-то сложности?
Названный в честь ученого из Франции Блеза Паскаля формальный язык Паскаль, основы программирования которого кратко рассмотрим в данной статье, разработан Никлаусом Виртом в 70-х годах прошлого столетия. Он завоевал популярность у программистов того времени.
Средство общения с машиной располагает алгоритмами, позволяющими работать с текстами, проводить сложные вычисления, составлять графики и рисунки, обрабатывать объемы информации.
Язык программирования Паскаль
Особенность Pascal в его требовательности. Компьютер не станет выполнять код с грамматическими промахами и неточностями в построении блоков данных, из-за чего новички регулярно будут сталкиваться с «ошибками компиляции».
Создание алгоритма требует точной последовательности блоков и команд, идущих в строгом порядке.
Код программы в Паскале состоит из группы частей, выделяемых ключевыми словами и следующих строго друг за другом (например, блок меток не может находиться после раздела констант).
Ввод имени программы (необязательно)
Подключение модулей для дополнительных функций.
Модуль Graph открывает рисование, а Crt позволяет очищать экран операций при помощи команды clrscr.
Указание меток. По команде goto в Pascal программа переходит к этим «закладкам», отмеченным в рабочей части.
Блок постоянных величин. Расписываются имена констант и их значений, тип определяется автоматически.
Раздел переменных. Указанному здесь идентификатору присваивается тип хранимой информации.
После ключевого слова вводится вспомогательная подпрограмма или функция, упрощающая написание основного кода.
Последовательность операторов и манипуляций с величинами для выполнения целей и задач.
Для того, чтобы написать программу, достаточно последнего раздела.
Типы данных
В ходе постижения азов программирования новичку предстоит встретиться с различными типами информации.
Элементы кода могут представать в разных видах:
числа, как с дробной частью, так и без них;
символы – одиночные знаки или наборы текстов и слов;
логические выражения: True(истина) и False(ложь).
Идентификаторы, значения, хранящие информацию в конкретном типе, делятся на изменяемые и постоянные.
Неизменные величины, константы, сохраняют присвоенный показатель на любом участке программы. Для них отведен блок const, где необходимо указать их имя и нужное значение (цифрами, буквами и иными знаками).
Переменные идентификаторы объявляются в разделе var. В отличие от констант, им присваивается не значение, а тип, подходящий для хранения единственного вида информации.
Типы переменных
Переменные могут являться числами, показателями истинности выражений или текстом – все зависит от указанного типа, дающего возможность изменять величину в пределах отведенного диапазона.
Начало работы с изменяемыми значениями происходит с блоков натуральных и целых чисел. Они требуют сравнительно мало памяти и применяются для простых арифметических операций, не приводящих к выведению дробных частей.
Занимаемая память, байт
Более широкие возможности для переменных открывает вещественный тип чисел. Здесь практически нет ограничений, доступны почти все функции и действия.
Занимаемая память, байт
Помимо хранения чисел, другие типы данных позволяют хранить значения в виде знаков и текстов:
Cимвольный тип Char позволяет присваивать переменной значение одного из 256 8-битных символов таблицы ASCII. Функция Ord в Pascal выводит числовой код знака, Chr – обратный процесс.
Cтроковый тип String применяется для присвоения идентификатору последовательности символов. Установленное число символов, именуемое длиной строки и равное 255, не может быть выше. Пользователь может уменьшить это число, указав в квадратных скобках нужную величину.
Строковые переменные можно складывать (например, строить слова и фразы) и сравнивать друг с другом (по количеству и значению символов).
С помощью функции Val в Pascal значение строки переводится в числовой аналог, команда Str служит для выполнения обратной процедуры. Работает в случае, если текст состоит из цифр.
Также возможно редактирование строк. Функцией Pos в Pascal выводятся номера подстрок из общей строки, Copy обеспечивает копирование символов, Delete – удаление знаков, Insert – вставка новых.
В логическом типе данных Boolean меньше всего значений: True(истина) и False(ложь). Для них допускается сравнение и логические выражения. Хранение идентификатора требует 1 байт.
Для логических идентификаторов применяются функции and (согласование), or (выбор), not (отрицание), xor (взаимоисключение).
Операторы
Операторами называются отдельные действия, отмечаемые точкой с запятой (исключение – когда команда размещена перед until, end и else).
Компьютер выполняет операции в точной последовательности и выводит на экран результат.
Присвоение переменной а значения b
Компьютер считывает значение переменной b, после чего продолжает алгоритм.
Вывести на экран показатель а
(если указать ‘а’, будет выписана буква «а»).
Эти три команды – самые частые и простые в программах Pascal. Добавив приставку ln (writeln, readln), машина выполнит переход на новую строку. Более сложные операции по обработке данных выполняются рядом иных операторов.
Переход к метке t и исполнению выделенного ею оператора.
Составной оператор – отдельная группа команд. Может выводиться как процедура.
Выполнение команды, соответствующей условию выражения if: 1, если условие соблюдено, 2 – в противном случае.
(константа 1):(оператор 1);
(константа 2):(оператор 2);
Выбор действия в зависимости от значения переменной l. Вместо констант допускается диапазон значений.
for n:= (задаваемое значение) to (итоговое значение) do
Оператор for в pascal означает исполнение составного оператора до тех пор, пока величина n не достигнет итогового значения.
while (условие завершения) do
Постановка условия и выполнение алгоритма до его завершения.
until (условие выполнения);
Повтор действий до выполнения условия until. В отличие от оператора while, алгоритм всегда выполняется как минимум 1 раз.
Стандартные функции
Не все действия с числами в Паскале требуют формул и выражений. Для математических расчетов предусмотрены специальные функции.
Pascal. Процедуры и функции
Процедуры и функции в языке Pascal являются подпрограммами. Подпрограмма – это именованная часть программы, представляющая собой некоторое собрание операторов, структурированных аналогично основной программе. Подпрограммы не необходимы, но их наличие заметно облегчает работу программиста и увеличивает «ценность» кода.
Описываются подпрограммы между разделом описания переменных и началом тела основной программы. Так выглядит структура всей программы в Pascal:
Как уже было сказано ранее, подпрограммы в Pascal представлены в лице функций и процедур, которые могут быть встроенными и пользовательскими. Первые, как правило, изначально присутствуют в системе, а вторые создаются программистом. Нас интересуют в первую очередь пользовательские подпрограммы, работа со встроенными вызывает меньше хлопот.
После описания, подпрограммой можно пользоваться посредством ее имени. При этом управление из места вызова передается соответствующей подпрограмме.
Для передачи данных, после объявления имени подпрограммы, в круглых скобках необходимо указать параметры, которые в свою очередь можно разделить на передаваемые и возвращаемые. Передаваемые параметры – это переменные, которые подпрограмма получает из главной части программы, а возвращаемые – отдает (возвращает) ей.
Также различают формальные и фактические параметры. Те, что используются при вызове процедуры или функции называются фактическими, а формальные описываются в заголовке подпрограммы, и принимают значения фактических параметров. Формальные параметры должны совпадать типом и количеством с фактическими.
Чтобы стало понятно, где находятся те или иные части подпрограмм, рассмотрим общую форму записи процедур и функций:
Процедура:
Вызов процедуры:
( );
Функция:
В Pascal, также как и во многих других языках программирования, переменные по отношению к программе делятся на локальные и глобальные. Те, которые объявляются в основной части, называются глобальными, а в процедуре или функции – локальными. Локальные переменные в отличие от глобальных могут использоваться лишь внутри подпрограммы, к которой они принадлежат.
Теперь более детально рассмотрим в отдельности каждый вид подпрограмм.
Пользовательские процедуры
Процедура – это независимая совокупность операторов, выполняющих заданную последовательность действий, и определенных отдельно от основной части программы. Она начинается со служебного слова Procedure, после которого идет имя и заголовок процедуры. Остальная часть аналогична основной программе.
Напишем пример программы, показывающей принцип работы простой процедуры.
Программа выводит сумму целых чисел заданного диапазона. Имя процедуры прописано после служебного слова, определяющего, что создана именно процедура. Далее идет заголовок, где первые две переменные – это формальные параметры, в которые передается значение от фактических k и n. Переменная rez возвращает результат и называется параметром-переменной (определяются после слова Var), а k и n – параметрами-значений. Локальная переменная – i, она описана сразу после заголовка процедуры. Вызывая, в основной части программы процедуру sum, в качестве передаваемых параметров мы указали три целочисленных переменных. Заметьте, что их количество соответствует числу формальных параметров. Порядок также важен, т. е. в переменную pk передается значение переменной k, в pn значение n и т. д.
В вышеизложенном примере было бы вполне уместным не использовать параметр-переменную rez, а определить ее локально. В этом состоит различие между процедурами и функциями в Pascal.
Пользовательские функции
В отличие от процедур, функции могут быть задействованы в основной программе, лишь в каком либо выражении. Также для обращения к функции необходимо знать тип данных результата, возвращаемого ей.
Описание функций начинается со служебного слова function, вслед за которым идет ее заголовок, а дальше те же блоки, что и у процедуры.
В вызываемую часть результат работы функции должен быть возвращен посредством имени последней. Это предусматривает хотя бы одно присвоение ей значения.
Допустим необходимо вычислить наибольший общий делитель двух целых чисел. Результатом решения данной задачи будет одно число, поэтому мы воспользуемся именно функцией.
В конце описания функции, ее имени присваивается значение, которое впоследствии примет переменная nod. Как видите, в функцию из основной части передаются только два фактических параметра (m и n), что соответствует количеству формальных параметров. И если в заголовке процедуры после слова Var можно указать переменные, также относящиеся к числу формальных параметров, то в функции эта обязанность лежит на ее имени, принимающем после своей работы какое-то значение.
Процедуры и функции Паскаль
Наряду с другими языками программирования в языке Паскаль присутствуют средства, которые позволяют оформить подпрограмму (своеобразный вспомогательный алгоритм) к основной программе — процедуры и функции Паскаль. Они в основном применяются, когда какое-либо действие или подалгоритм повторяется множество раз в программе, либо когда есть необходимость использовать части ранее составленных алгоритмов.
Подпрограммы — это своего рода разбиения больших программ на отдельные части. Это удобно и эффективно разбивать большие программы на несколько подпрограмм, что упрощает разработку кода основной программы. Чтобы использовать подалгоритм как подпрограмму, нужно присвоить ему имя и описать алгоритм в соответствии с правилами языка Паскаль.
Далее, если появилась необходимость вызвать подалгоритм в основной программе, то упоминают в необходимом месте имя того или иного подалгоритма в сочетании со списком данных (как входных, так и выходных). Это упоминание, как правило, производит выполнение операторов, входящих в подпрограмму и работающих с указанными данными. После выполнения используемой подпрограммы работа основной программы продолжается, но уже начиная с команды, следующей сразу после вызова подпрограммы.
В Паскале можно выделить два типа подпрограмм:
Их структура описания достаточно схожа со структурой программы на Паскале, т.е. в состав процедур и функций также входят и заголовок, и раздел описаний (описание констант, меток, типов, самих функций и процедур, переменных и т.д.), и исполняемая часть (описание процедур): Структура функции в языке программирования Паскаль выглядит следующим образом:
Структура процедуры в Паскале представлена так:
Как и в формате описания функций, так и в формате описания процедур формальные параметры в заголовке функций и процедур представляются следующим образом:
Формальные параметры разделяются запятыми; ключевое слово var в некоторых случаях может быть опущено. Когда параметры имеют одинаковый тип, то имена этих параметров перечисляют чрез запятую, указывая в конце после знака «:» имя соответствующего типа.
Когда описывают параметры, то можно пользоваться только стандартными именами типов, которые определены при помощи команды type. Процедуры вызываются с помощью оператора, имеющего следующую структуру:
В круглых скобочках указан список фактических параметров (их перечисление через «,»). Когда осуществляется вызов процедуры, то фактические параметры выступают в качестве формальных параметров, которые находятся на том же месте в заголовке процедуры. В результате передаются входные параметры, а затем происходит выполнение операторов исполняемой части, а после этого осуществляется возврат в вызывающий блок.
Функция в Паскале вызывается аналогично, однако есть возможность вызвать функцию внутри какого-нибудь выражения, т.е. имя функции может находиться в разделе условий оператора if, справа от оператора присваивания и т.д. Чтобы передать в вызывающий блок выходное значение функции в исполняемой части, перед возвратом в вызывающий блок нужно прописать команду:
Когда появилась необходимость вызвать процедуру и функцию, то следует руководствоваться следующими правилами
Заметка. Имена фактических и формальных параметров могут быть одинаковыми — это не вызывает никаких проблем, поскольку соответствующие им параметры в любом случае окажутся разными по той причине, что хранятся в различных областях памяти.
Пример программы на применение процедуры в языке Pascal
Теперь на практике рассмотрим, как используются процедуры. Задача такая: найти максимум из 2-х целых чисел. Внизу представлен листинг этой программы:
Пример программы на использование функции в языке Pascal
Разработаем предыдущую программу уже с использованием функции:
Надеюсь, благодаря этой статье, Вы будете знать, как использовать процедуры и функции Паскаль.
Pascal. Стандартные функции и выражения
Стандартные функции.
В программировании, довольно часто приходиться выполнять однотипные действия, причем в задачах разного уровня и класса. И для ускорения процесса написания кода эти действия выносят в специальные подпрограммы – стандартные функции. Обращение к такой подпрограмме происходит по ее имени, а в скобках указывается значение аргумента. В следующей таблице указаны те стандартные функции, которые используются в языке программирования Pascal.
Функция | Назначение |
ABS(x) | Вычисление абсолютного значения x: |х| |
SQR(x) | Вычисление квадрата x: x*x |
SIN(x) | Вычисление синуса x: sin x |
COS(x) | Вычисление косинуса x: cos x |
ARCTAN(x) | Вычисление арктангенса x: arctg x |
EXP(x) | Вычисление экспоненты (числа Е) в степени x |
EXP10(x) | Вычисление 10 в степени x |
LN(x) | Вычисление натурального логарифма x |
LOG(x) | Вычисление десятичного логарифма x |
SQRT(x) | Вычисление квадратного корня из x |
A DIV B | Вычисление частного при делении А на В с отбрасыванием остатка |
A MOD B | Нахождение остатка от делении А на В |
TRUNC(x) | Нахождение целой части x |
RANDOM(x) | Псевдослучайное число в интервале [0, x] |
ROUND(x) | Округление значения x в сторону ближайшего целого |
ODD(x) | Проверяет аргумент на нечетность. Результат TRUE, если аргумент нечетный, FALSE – если четный. |
ORD(x) | Возвращает порядковый номер аргумента и, как следствие, преобразует величину порядкового типа в величину целого типа. |
CHR(x) | Определение символа языка Паскаль по его порядковому номеру |
SUCC(x) | Нахождение элемента, идущего после данного в перечне допустимых элементов |
PRED(x) | Нахождение элемента, идущего перед данным в перечне допустимых элементов |
FRAC(X) | Возвращает дробную часть x |
INT(X) | Возвращает целую часть x |
Pi | Значение математической постоянной π |
EOF(x) | Возвращает TRUE, если файл находится в стоянии “конец файла”, иначе FALSE, если нет конца файла |
Выражения
Выражение состоит из переменных, констант, полей в записях, указателей функций, круглых скобок и знаков операций. Для корректной записи выражений необходимо знать не только как обозначаются те или иные операции, функции и т. п., но также стоит предусмотреть приоритеты их выполнения, математические и логические правила, а также некоторые тонкости самого языка. Для более углубленного изучения выражений, стоит рассмотреть несколько примеров.
1) 12+3*3=21 (12+3)*3=45
2) ( a >1) and ( a 3) (a+3>0) and (a+3 1) and (b
Логическая операция OR (или) суть дизъюнкция в логики и поэтому имеет следующую таблицу истинности:
Ложь имеет место только когда X и Y ложны (нули). В том случае, чтобы истина возвращалась только тогда, когда одно из условий верно следует применить оператор XOR (исключающее или):
(a+3>0) and (a+3 1) and (b
4) x ^( a ) = exp( a *ln( x ))
В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:
1 — умножать число само на себя, какое то количество раз;
2 — воспользоваться функциями экспоненты и натурального логарифма.
В этом примере использованы оба варианта, но если степень, в которую необходимо возвести число, достаточно велика, то предпочтение следует отдать второму способу.