На главную Самоучитель pascal Форум программистов онлайн Решение задач pascal Задачи pascal Поиск
Как продвинуть сайт на первые места?
Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.

Ускорение продвижения
Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.

13 Июл 13

Функции в паскале


Комментарии :  0        Просмотры :  10546



Функции и процедуры в pascal занимают большое и очень важное место. Благодаря им мы сможем решать огромный набор задач , которые будут стоять перед нами в процессе программирования.

В данном уроке мы рассмотрим такие вопросы , как " как объявить функцию в паскале ? , какие встроеные функции и процедуры есть в паскаль ? Как отличить функцию от процедуры ?.
Многие программы на языке паскаль занимают достаточно много места на рабочем экране. И из-за этого достаточно сложно найти какой-либо элемент даже в собственной программе.

Поэтому в некоторых случаях будет проще заменить некоторые участки кода блоками ( подпрограммами ). В паскале подобные подпрограммы называют функциями и процедурами.

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

Все процедуры и функции объявляются после блока Var ( Блок , в котором объявляются глобальные переменные ). Вы возможно задаетесь вопросом о том , что такое глобальные переменные ?

Глобальные переменные - это переменные , которые существуют в любом участке программе ( далее будет яснее ).

Давайте рассмотрим структуры подпрограмм.

Процедуры в паскале :

Структура процедуры в паскале выглядит так :
Структура процедуры в паскале


Как видно по картинке выше , вначале идет слово procedure. Далее идет имя процедуры , в нашем случае процедура называется "А". После имени процедуры идет описание получаемых переменных. ( Пример : A(n:integer) или A(n:integer;t:string) )

Проще говоря , процедура получает переменную , значение которой мы заносим в целочисленную переменную n ( локальная переменная ). Если мы получаем несколько переменных разных типов , то они перечисляются через точку с запятой ; Блок описания получаемых переменных является необязательным.

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

В третьей строке идет тело процедуры. Тут , я думаю , пояснять ничего не нужно.

Рассмотрим решение такой задачи : Требуется заполнить массив A десятью случайными числами от -10 до 10 , а потом вывести их на экран. Решение выглядит так :
program mypascal;
uses crt;
var
a: array[1..10] of integer;
procedure readA;
var
i:byte;
begin

randomize;
for i:= 1 to 10 do
a[i]:= random(21)-10;

end;
procedure writeA;
var
i:byte;
begin

for i:= 1 to 10 do
write(a[i],' ');

end;
begin

readA; { Процедура заполняет массив A числами от -10 до 10 }

writeA; { Процедура выводит массив A на экран }

end.

Как видно из кода программы , в ней существуют 2 процедуры readA и writeA , которые отвечают за наполнение и вывод массива соответственно.

Также можно рассмотреть подобную задачу : Требуется ввести число и вывести его квадрат на экран. Решение выглядит так :
program mypascal;
var
n:integer;
procedure kv(a:integer);
var
i:byte;
begin

writeln('Квадрат числа ',a,' = ',sqr(a));

end;
begin

write('Введите число : ');
readln(n);

kv(n); { Процедура выводит на экран квадрат числа N }

end.


Здесь процедура kv получает целочисленную переменную n , значение которой заносится в локальную , целочисленную переменную переменную a.

Функции в паскале :

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


Вы , возможно , уже заметили различие. Главное запомнить , что любая функция должна возвращать какой-либо результат в конце своей работы ( в нашем случае функция возвращает целочисленное значение integer ).

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

В остальном же , структура функции аналогична процедуре.

Решим задачу : Нужно ввести число и вывести его корень на экран.
program mypascal;
var
n:integer;
function kor(a:integer):real;
begin

kor:= sqrt(a);

end;
begin

write('Введите число : ');
readln(n);

writeln('Корень из числа ',n,' = ',kor(n));

end.

Заметьте , что корень может быть нецелым числом , поэтому функция возвращает вещественный результат real.

Рекурсии :

Рекурсия - это ещё одна большая тема в pascal , которую мы разберем позже. Но стоит рассказать сейчас о том , что под рекурсией часто понимают использование подпрограммы в подпрограмме ( Например : процедуры в процедуре или функции в функции ).

Рассмотреть использование рекурсии можно на подобной задаче : Заполнить массив десятью случайными числами от -10 до 10 и найти первое отрицательное число ( вывести на экран номер отрицательного числа , если есть ).
program mypascal;
uses
crt;
var
a: array[1..10] of integer;
i:integer;
procedure ser(n:byte);
begin

randomize;
if ( a[n] < 0 ) then
writeln(n,' число отрицательное !')
else
ser(n+1);

end;
begin

for i:= 1 to 10 do
a[i]:= random(21)-10;

for i:= 1 to 10 do
write(a[i],' ');

writeln();

ser(1);

end.


В нашем случае процедура ser работает с определенными элементами массива A. Если элемент массива отрицательный , то выводим сообщение , а если нет , то переходим к этой процедуре ( передовая другой элемент ).

Понять это довольно трудно , ещё труднее пересказать. Однако практикуясь все будет понятнее.

Рейтинг материала : ( 5 / 3 )
Сообщить об ошибке
Комментарии :  0        Просмотры :  10546

Поиск

Решение задач

Если вас интересует решение какой-либо задачи , то вы можете опубликовать
её условие на нашем сайте или форуме. И в скором времени другие пользователи помогут вам.

Опубликовать на сайте

Опубликовать на форуме

Опрос

Какую разновидность паскаля вы предпочитаете ?