Язык программирования TurboPascal
Turbo Pascal. Процедуры и функции
Процедуры и функции являются важным инструментом большинства языков программирования. С их помощью можно часто встречающиеся фрагменты программы, одинаковые по выполняемым действиям, но различающиеся только значениями исходных данных, скомпоновать в группу операторов. Для эффективного программирования подобных повторений фрагментов в языках программирования введено понятие подпрограммы.
Подпрограмма – это группа операторов, оформленная как самостоятельная программная единица.
Подпрограмма записывается однократно в определенной части программы, а затем в нужных местах программы обеспечивается обращение к ней. При обращении к подпрограмме ей передаются исходные данные, а после выполнения операторов подпрограммы в основную программу передаются результаты расчетов.
Использование процедур и функций позволяет: сократить объем программы, улучшить структуру программы с точки зрения ее читаемости, уменьшить вероятность ошибок и облегчает процесс создания и отладки программы.
В языке Турбо Паскаль подпрограммы реализуются в виде процедур и функций
Процедуры
Для использования процедуры в программе необходимы:
- описание процедуры;
- вызов процедуры.
Описание процедуры содержит информацию для компилятора об объектах, используемых в процедуре, а также алгоритм решения задачи процедурой.
Вызов процедуры приводит к выполнению операторов, составляющих тело процедуры.
Описание процедуры
Процедура в Турбо Паскале имеет структуру, подобную структуре программы.
Структура описания процедуры имеет следующий вид:
объявление меток; | |||
Const | объявление констант; | ||
Type | объявление типов; | ||
Var | объявление переменных; | ||
procedure | описание процедур и функций, входящих в данную процедуру (внутренние процедуры и функции); |
||
function | |||
Begin | |||
Тело процедуры | операторы процедуры; | ||
End; | точка с запятой «;» ставится всегда |
Таким образом, процедура состоит из:
- заголовка;
- раздела описаний;
- раздела операторов.
Заголовок процедуры в отличие от заголовка программы не может быть опущен.
Формат заголовка
где Procedure – зарезервированное слово;
имя – имя процедуры, определяемое в соответствии с общими правилами построения идентификаторов;
– перечень идентификаторов для обозначения исходных данных и результатов работы процедуры с указанием их типа.
Параметры в списке заголовка процедуры отделяются друг от друга точкой с запятой «;». Если параметры являются однотипными, их можно объединить и записать через запятую. Например:
Здесь SUMMA имя процедуры, a,b,i,n формальные параметры процедуры.
Раздел описаний процедуры содержит объявление меток, констант, типов переменных и внутренних процедур и функций, используемых в разделе операторов процедуры.
Раздел операторов ограничен операторными скобками BEGIN и END . При описании процедуры после END всегда ставится точка с запятой «;».
Вызов процедуры
Если процедура объявлена, то в программе ее можно использовать многократно, просто задавая ее имя и, если необходимо, список аргументов, т.е. вызов происходит с помощью оператора вызова:
где – имя процедуры, к которой происходит обращение;
– перечень конкретных значений (выражений) и имен, подставляемых на место формальных параметров процедуры при ее выполнении.
При описании подпрограмм и вызова их используются понятия формальных и фактических параметров.
Параметры, указываемые в заголовке процедуры при ее описании, называются формальными параметрами. Параметры, указываемые при вызове процедуры, называются фактическими параметрами.
Формальные параметры – это параметры, определяющие тип и место подстановки реальных объектов при вызове процедуры.
При вызове процедуры формальные параметры, указанные в ее заголовке, заменяются на фактические параметры в порядке их следования. Число и тип формальных и фактических параметров должен обязательно совпадать.
ЗАДАЧА 1. Ввести с клавиатуры 15 вещественных чисел в массив и найти сумму этих чисел с помощью процедуры.
ЗАДАЧА 2. Найти наибольший элемент массива и определить его номер. Количество элементов массива и их значения ввести с клавиатуры. Оформить ввод данных, поиск наибольшего элемент массива и определение его номера с помощью процедур.
Функции
Подпрограмма-функция предназначена для вычисления одного параметра. У функции два основных отличия от процедуры:
Первое отличие в заголовке. Он состоит из слова Function , за которым следует имя функции, затем в круглых скобках список формальных параметров, затем через двоеточие записывается тип функции, т.е. тип возвращаемого параметра. Функция может возвращать типы вещественные, порядковые и строковые.
Второе отличие в том, что процедура может иметь несколько выходных параметров-результатов, а функция только одно значение, передаваемое через ее имя. Именно этим объясняется то, что в теле функции хотя бы один раз имени функции должно присваиваться вычисленное значение.
Структура функции такая же, как и структура процедуры.
Заголовок функции имеет вид:
Function – служебное слово;
– имя функции, определяемое в соответствии с общими правилами построения идентификаторов;
– перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов.
Для вызова функции из основной программы или другой подпрограммы следует в выражении, где необходимо использовать значение функции, указать имя функции со списком фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами функции.
ЗАДАЧА 3. Ввести с клавиатуры 15 вещественных чисел в массив и найти сумму этих чисел с помощью функции.
Pascal-Паскаль
Программирование. Стандартные функции Pascal-Паскаль
- Скачено бесплатно: 9293
- Куплено: 414
- Pascal-Паскаль->Программирование. Стандартные функции Pascal-Паскаль
Программирование. Стандартные функции Pascal-Паскаль
Стандартные функции Pascal-Паскаль
Стандартные математические функции Турбо Паскаля | |||
---|---|---|---|
Обращение | Тип аргумента | Тип результата | Примечание |
Abs(x) | Real, integer | Тип аргумента | Модуль аргумента |
ArcTan(x) | Real, integer | Real | Арктангенс (значение в радианах) |
Cos(x) | Real, integer | Real | Косинус, угол в радианах |
Exp(x) | Real, integer | Real | Экспонента |
Frac(x) | Real | Real | Дробная часть числа |
Int(x) | Real, integer | Real | Целая часть числа |
Ln(x) | Real, integer | Real | Логарифм натуральный |
Pi | Нет | Real | 3,141592653 |
Sin(x) | Real, integer | Real | Синус, угол в радианах |
Sqr(x) | Real, integer | Тип аргумента | Квадрат аргумента |
Sqrt(x) | Real, integer | Real | Корень квадратный |
Random | Нет | Real | Псевдослучайное число в интервале [0, 1] |
Random(I) | Integer | Integer | Псевдослучайное число в интервале [0, I] |
Round(x) | Real | Integer | Округление до ближайшего целого |
Trunc(x) | Real | Integer | Отбрасывание дробной части числа |
Порядок вычислений в выражениях следующий:
- вычисляются подвыражения, заключенные в скобки;
- затем выполняются операции с наибольшим приоритетом; обычно используются следующие уровни приоритетов (в порядке убывания):
- возведение в степень;
- мультипликативные операции: * , / , div , mod;
- унарные операции: + , — , abs , not;
- аддитивные операции: +, -;
- операции отношения: = , <>, , =;
- логические операции: and, or, not;
- операции с одинаковым приоритетом выполняются слева направо.
Хотя нет ограничений на сложность выражений, однако выражения, содержащие более 7 операндов, трудны для чтения и понимания и поэтому такие выражения не рекомендуется использовать.
- в Паскале нет стандартной операции или стандартной функции возведения в степень, поэтому используется следующее математическое тождество: x y = e ylnx
- в Паскале существует только стандартная функция вычисления натурального логарифма, поэтому используется следующее математическое тождество: logab= ln b/ln a
Математическое выражение: x 3/2 — 7x + tg (x+2)
Выражение на Паскале: exp(3*ln(x)/2)-7*x+sin(x+2)/cos(x+2)
Операторы действия
Операторы действия — это средства языка, позволяющие изменять в процессе выполнения программы состояние вычислений. Самый простой оператор действия — оператор присваивания.
Пример оператора присваивания
Оператор присваивания, несмотря на кажущуюся простоту, имеет очень важное алгоритмическое значение.
Удобно считать, что выполнение присваивания переменной некоторого значения означает помещение этого значения в выделенный для переменной ящик. При этом каждый запоминающий ящик обладает следующими свойствами.
- В каждый момент времени в ящике может храниться не более одного значения.
- Каждый ящик способен хранить только значения одного и того же типа. Попытка поместить в ящик значение любого другого типа приводит к тому, что ящик отказывается принимать на хранение передаваемое ему значение — это расценивается как ошибка в программе.
- Значение, помещенное в ящик, будет храниться в нем до тех пор, пока в этот ящик не будет помещено новое значение (в момент присваивания соответствующей переменной этого нового значения) — при этом предыдущее содержимое ящика безвозвратно теряется (уничтожается).
- Находящееся в ящике значение считается текущим значением соответствующей переменной. Это текущее значение может быть выдано из ящика для использования сколько угодно раз, но при этом содержимое ящика не меняется: из него каждый раз выдается копия хранящегося значения с сохранением оригинала в ящике без какого-либо изменения.
- К началу выполнения программы содержимое всех запоминающих ящиков считается неопределенным; в частности, их нельзя считать и пустыми, поскольку эти ящики могли использоваться при выполнении предыдущих программ, после чего в ящиках могло что-то остаться.
Еще один оператор действия, хотя его можно лишь условно назвать таковым: он не выполняет никакого действия, это — пустой оператор (в Паскале он обознается знаком «;»). В Паскале оператором действия является также оператор процедуры. Последний из простейших операторов действия — оператор останова, который прерывает работу программы (в Паскале это оператор halt).
Ввод и вывод данных
Ввод данных с клавиатуры производится с помощью стандартной процедуры read( ) или ее разновидности readln( ). Элементы списка ввода — идентификаторы (имена) переменных, перечисляемые через запятую. При выполнении этого оператора пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами (это важно!).
Пример ввода данных с клавиатуры
read(a,b,c);
readln(a,b,c);
Вывод данных на экран производится с помощью стандартной процедуры write( ) или ее разновидности writeln( ).
Список вывода может содержать константы, переменные, выражения, формат вывода. Выражения в списке вывода разделяются запятыми.
Пример вывода данных на экран
write(a,b,c);
writeln(a,b,c);
Окончание ln в имени процедуры означает, что курсор автоматически будет переведен в начало следующей строки экрана.
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту
Функции турбо паскаль
В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
В языке Паскаль имеется два вида подпрограмм — процедуры и функции.
Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными — передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове — фактическими.
Описание и вызов процедур и функций
Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
Формат описания процедуры имеет вид:
Формат описания функции:
Формальные параметры в заголовке процедур и функций записываются в виде:
и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.
Вызов процедуры производится оператором, имеющим следующий формат:
Список фактических параметров — это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.
Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
При вызове процедур и функций необходимо соблюдать следущие правила:
- количество фактических параметров должно совпадать с количеством формальных;
- соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными — они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
Аналогичную задачу, но уже с использованием функций, можно решить так:
Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики
лабы по информатике, егэ
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Pascal: Занятие № 8. Подпрограммы: функции в 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
описание формальных параметров (тех, значения которых передаются из основной программы в функцию):
параметры-переменные — параметры, значения которых становятся доступны и в основной программе (возвращаются в программу)
тип возвращаемого функцией результата описывается в конце заголовка функции через двоеточие:
- Вызывается функция в теле основной программы, только если ее имя фигурирует в каком-либо выражении. В отличие от процедуры, которая вызывается отдельно.
- Внутри функции можно объявлять и использовать локальные переменные: