• 2
  • 3
  • 4
  • 6

Процедуры и функции в Pascal. Часть 2.

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

Структура программы.

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

  1. program <имя программы>;
  2. label <метки>;
  3. const
  4. <описание констант>;
  5. type
  6. <описание типов данны\>;
  7. var
  8. <описание переменных>;
  9. <процедуры и функции>;
  10. begin
  11. <основное тело программы>;
  12. end.

Структура процедуры и функции

Структура процедуры.

До этого момента времени мы использовали из раздела описаний только описание переменных и типов. На этом занятии мы начнем изучать процедуры. Структура процедуры повторяет структуру программы. Отличия выделены «полужирным» шрифтом.

  1. procedure <имя процедуры> (<параметры>);
  2. label
  3. <метки>;
  4. const
  5. <описание констант>;
  6. type
  7. <описание типов данных>;
  8. var
  9. <описание переменных>;
  10. <процедуры и функции>;
  11. begin
  12. <основное тело процедуры>;
  13. end;

Напишу простую программу с процедурой, складывающей два числа.

  1. var
  2. a, b, c: integer;
  3. procedure sum(x, y: integer; var z: integer);
  4. begin
  5. z := x + y;
  6. end;
  7. begin
  8. write('Введите два числа: ');
  9. readln(a, b);
  10. sum(a, b, c); {процедура вызывается своим именем, которое вы написали после зарезервированного слова procedure в описании}
  11. writeln(c);
  12. end.

Итак, что вы видите? Точнее, что вам не понятно в данной программе? Я думаю, что вы не можете понять, почему перед z стоит var, а перед x, y — нет. Но всему свое время.

Процедуры и функцииhttp://learnpascal.ru/wp-content/uploads/2014/06/процедура-300x120.jpeg 300w, http://learnpascal.ru/wp-content/uploads/2014/06/процедура-510x204.jpeg 510w" sizes="(max-width: 1000px) 100vw, 1000px">

Обратимся к примеру, приведенному на рисунке выше. Слева приведен фрагмент текста основной программы, справа — процедура. Как только в теле программы объявляется имя процедуры с параметрами, выполнение «главного» тела прекращается, и управление вычислительными процессами передается процедуре. После выполнения процедуры осуществляется возврат на оператор основной программы, следующий за вызовом процедуры.

Немножко теории:
В любой программе все переменные делятся на два типа: локальные и глобальные. В нашей программы переменные а, b, с — глобальные, а х, у, z — локальные. Глобальные переменные — это переменные из раздела описаний основной части программы, а локальные — из раздела описаний процедур и функций. Локальные переменные существуют только в течение времени работы процедуры, определяются (создаются) при её вызове и исчезают после завершении работы процедуры.

В программе определены переменные a, b, c. В процедуре x, y, z — её параметры, и они являются переменными процедуры. Причем между х, у  и z существует большая разница.

Поясню ее очередным рисунком.

Параметрыhttp://learnpascal.ru/wp-content/uploads/2014/06/параметры-300x120.jpeg 300w, http://learnpascal.ru/wp-content/uploads/2014/06/параметры-510x204.jpeg 510w" sizes="(max-width: 1000px) 100vw, 1000px">

Параметры.

При описании процедуры указывается список формальных параметров. Каждый параметр является локальным по отношению к описываемой процедуре, к нему можно обращаться только в пределах данной процедуры (в нашем примере х, у, z — формальные параметры). Фактические параметры — это параметры, которые передаются процедуре при обращении к ней (а, b, с — фактические параметры). Число и тип формальных и фактических параметров должны совпадать с точностью до их следования.

Параметры-значения.

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

Параметры-переменные.

Другими словами, передача параметров по ссылке. Это те формальные параметры, перед которыми стоит идентификатор var. Передается адрес фактического параметра (обязательно переменной), после этого формальный
параметр становится его синонимом. Любые операции с формальным параметром выполняются непосредственно над фактическим параметром.

Структура функции

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

  1. function <имя функции> (<список формальных операторов>): <тип возвращаемого значения>;

Кроме того, в теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции или переменная result, а в правой — ее значение.

Пример:

  1. var
  2. a, b, c: integer;
  3. function sum(x, y: integer): integer;
  4. begin
  5. sum := x + y;
  6. end;
  7. begin
  8. readln(a, b);
  9. writeln(sum(a, b));
  10. end.

Или так:

  1. var
  2. a, b, c: integer;
  3. function sum(x, y: integer): integer;
  4. begin
  5. result := x + y;
  6. end;
  7. begin
  8. readln(a, b);
  9. writeln(sum(a, b));
  10. end.
НЕБОЛЬШОЕ ПОСЛЕСЛОВИЕ:

Каждая процедура должна иметь одну точку входа и одну точку выхода (то есть использование goto, break, exit нежелательно), использование глобальных переменных в процедуре следует свести к минимуму, взаимодействие с процедурой должно осуществляться (по возможности) только через параметры.
Постепенно вы должны отказаться от технологии неструктурированного программирования. Сегодня мы с вами осваиваем структурную технологию разработки программ, при этом на каждом этапе текущая задача разбивается на ряд подзадач, определяя тем самым некоторое количество отдельных подпрограмм. Концепция процедур и функций — один из механизмов второго витка развития технологий программирования, а именно, структурного проектирования.

MVSocialButtons

Share this post

Отправить в FacebookОтправить в Google BookmarksОтправить в OdnoklassnikiОтправить в Vkcom

Авторизация

Новые пользователи

  • RubenAbsex
  • ArtemAGFa
  • GennadiyHah
  • JorgeGrore
  • Bobbyphiva

Статистика сайта

ОС
Linux v
PHP
5.6.31
MySQLi
5.5.56-cll-lve
Время
08:06
Кэширование
Отключено
GZip
Отключено
Посетители
20569
Материалы
282
Количество просмотров материалов
249398
cassidy clay free pornmalay young girls sucking cockbeeg gallery hdchina young sexyoung inzestpornfree download sunny leon porn hd vedeos moviesxxx.biz Bangladeshi scandalfree daughter gangbangöld granny fikautumn riley porn video free download Bangladeshi scandalfree daughter gangbangöld granny fikautumn riley porn video free download mobile porn sexyoung inzestpornfree download sunny leon porn hd vedeos