Раздел: Как стать программистом / Секреты программирования /

Возврат значений через параметры

Все способы изучить Python Все способы изучить Python

Каждый раз, изучая какую-то новую науку, мы задаёмся вопросом - где взять обучающие материалы. Конечно, сегодня нам помогает в этом Интернет. Но иногда на поиски уходит очень много времени, а нужного результата мы не получаем... Собрал для вас кучу полезных ссылок для изучения Python. не благодарите ))) Подробнее...

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

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

x := MyFunc;

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

Но что делать, если надо вернуть не одно, а несколько значений в несколько переменных? Это возможно. Сделать это можно одним из двух способов. Способ первый - использовать указатели. Но это сложновато для новичков, поэтому данный способ здесь рассматривать не будем.

А вот второй способ простой - надо лишь перед параметром функции/процедуры, в который надо вернуть значение, указать ключевое слово var. Например, так:

procedure MyProc(var x : WORD);
begin
  x := x + 100;
end;

Здесь мы передаём в процедуру значение переменной х, и в эту же переменную возвращаем результат.

Точно также это будет работать и в функциях. Разумеется, таких переменных может быть несколько:

procedure MyProc2(var x, y : WORD);
begin
  x := x + y;
  y := y * y;
end;

Ну а теперь пример программы, где это используется:

program myprog;

var ResP, ResF : WORD;

procedure MyProc(var x : WORD);
begin
  x := x * x;
end;

procedure MyProc2(var x, y : WORD);
begin
  x := x + y;
  y := y * y;
end;

function  MyFunc(var x : WORD) : WORD;
begin
  x := x * x;
  Result := x * x;
end;

//*******************************************************************
// ОСНОВНАЯ ПРОГРАММА
//*******************************************************************
begin
  ResP := 2;
  MyProc(ResP);         //ResP = 2
  WriteLn(ResP);        //ResP = Res * Res = 4

  ResF := MyFunc(ResP); //ResP = 4
  WriteLn(ResP);        //ResP = ResP * ResP = 16
  WriteLn(ResF);        //ResF = ResP * ResP = 256

  ResP := 2; ResF := 3;
  MyProc2(ResP, ResF);
  WriteLn(ResP);        //ResP = ResP + ResF = 5
  WriteLn(ResF);        //ResF = ResF * ResF = 9

  WriteLn('The end. Press ENTER...');
  ReadLn;
end.

Надеюсь, в комментариях пояснений достаточно. Вывод на экран будет таким:

Возврат значений через параметры


Директивы компилятора Директивы компилятора
Как это ни странно, но даже многие опытные программисты не используют директивы компилятора, считая их чем-то ненужным и бесполезным. А между тем, директивы компилятора - это очень классная штука. Если их умело применять в своих программах, то можно существенно сократить время на разработку и уменьшить количество рутинных операций. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика