Sunteți pe pagina 1din 31

Los procedimientos y funciones, se conocen como rutinas, que son

bloques de instrucciones autnomos que pueden ser llamados


desde distintos lugares en un programa.
Una funcin es una rutina que devuelve un valor cuando es
ejecutada.
Un procedimiento es una rutina que no devuelve ningn valor.
Las llamadas a funciones, debido a que devuelven un valor, se
puede utilizar como expresiones en las tareas y operaciones.

Ejemplo
X:=MiFuncion(y);

Una declaracin de procedimiento tiene la forma:

Dnde ProcedureName es cualquier identificador vlido,


statements es una secuencia de sentencias que se ejecutan cuando
el procedimiento es llamado, y las directrices (parameterList) y
localDeclarations son opcionales.

Crear una aplicacin de consola.

En Delphi Projects seleccionar Console Aplication

Cdigo del programa

Guardar el proyecto File->Save All

Cuando se declara un procedimiento o funcin, puede especificar


una convencin de llamada con una de las directivas: register,
pascal, cdecl, stdcall y safecall.
Por ejemplo:
Function MiFuncion(X,Y: Real): Real;cdecl;

Las convenciones de llamada determinan el orden en que los


parmetros son pasados a la rutina.
Estos afectan la eliminacin de los parmetros de la pila, la
utilizacin por paso de parmetros y el manejo de errores y
excepciones. La convencin de llamada por defecto es register.

Las convenciones register y pascal pasan parmetros de izquierda a


derecha; es decir, el parmetro de la izquierda es primero evaluado
y pasado y el parmetro de la derecha es evaluado y pasado
despus.
Las convenciones cdecl, stdcall y safecall pasan parmetros de
derecha a izquierda.
Para todas las convenciones, excepto cdecl, los procedimientos o
funciones eliminan los parmetros de la pila en el retorno.
Con la convencin cdecl, la llamada elimina los parmetros de la
pila cuando se llama al retorno.
La convencin register utiliza hasta tres registros de la CPU para
pasar los parmetros, mientras que los otros convenios, pasan
todos los parmetros en la pila.
La convencin safecall implementa la excepcin firewalls. En
win32, este implementa el interproceso de notificacin de error
COM.

La siguiente tabla resume las convenciones de llamada.

La convencin por defecto de register es la mas eficiente, ya que


evita la creacin de un marco general de la pila.
La convencin cdecl es til cuando se llaman funciones de
bibliotecas escritas en C o C++.
Stdcall y SafeCall se recomiendan, en general, para las llamadas a
cdigo externo. En win32, las API del sistema operativo son stdcall
y SafeCall.
La convencin SafeCall debe ser usada para declarar los mtodos
dual-interface. La convencin pascal se mantiene por
compatibilidad con versiones anteriores.
Las directivas near, far y export hacen referencia a llamadas de
convenciones de programacin de Windows de 16 bits.

Un ejemplo practico seria:


procedure AProc(X, Y, Z: Integer); stdcall;
Llamado al procedimiento:
AProc(X, Y, Z);
E nivel de lenguaje de maquina el llamado tendra el siguiente
comportamiento:
push Z
push Y
push X
call AProc

La directiva forward remplaza cdigo, incluyendo declaraciones de


variables locales y estamentos, en una declaracin de
procedimiento o funcin.
Por ejemplo
Function cslcular(x,y:Integer):Real;forward;

En algn lugar despus de la declaracin forward, la rutina se debe


volver a declarar en una definicin de declaracin que incluye un
bloque.

Crear una aplicacin de consola.

En Delphi Projects seleccionar Console Aplication

Cdigo del programa

Guardar el proyecto File->Save All

La directiva external, sustituye el bloque de la declaracin de un


procedimiento o funcin, le permite llamar rutinas compiladas por
separado desde su programa.
La rutinas External pueden venir de objetos file o libreras cargadas
dinmicamente.

Usted puede declarar ms de una rutina en el mismo mbito con el


mismo nombre.
Las rutinas sobrecargadas deben ser declaradas con la directiva
overload y deben tener listas de parmetros distintivas.

Se crean do funciones llamadas Divide, que toman parmetros de


diferentes tipos, cuando se llama a Divide, el compilador determina
cual es la funcin para invocar.

Crear una aplicacin de consola

En Delphi Projects seleccionar Console Aplication

Cdigo de la aplicacin

Guardar el proyecto File->Save All

Funciones procedimientos a veces contienen otras funciones y


procedimientos dentro de la seccin de declaraciones locales de
sus bloques.

El alcance de una rutina anidada se limita a la funcin o


procedimiento en el que se declara.
En nuestro ejemplo NestedProc solo puede ser llamado dentro de
DoSomething.
Ejemplo practico

En Delphi Projects seleccionar Console Aplication

Cdigo de la aplicacin

Guardar el proyecto File->Save All

Una lista de parmetros es una secuencia de declaraciones de


parmetros separados por punto y comas entre parntesis.

Parmetros constantes
Un parmetro constante (const) es como una constante local o una
variable de solo lectura.
Parmetros Out
Un parmetro Out, como un parmetro variable se pasa por
referencia. Con un parmetro Out, sin embargo, el valor inicial de la
variable referenciada es descartado o la rutina a la que es pasado. El
parmetro Out es solo para salida.
Parmetros sin tipo
Parmetros que no tienen un tipo definido.
Function evaluar(var valor1,valor2; valorfinal:Integer):double;

Parmetros String.
Parmetros array.
Parmetros array abiertos.
Parmetros variantes de array abierto.
Parmetros por defecto.
Parmetros por defecto y funciones sobrecargadas.

El compilador de Delphi permite que las funciones y procedimientos


sean marcados con la directiva inline para mejorar el rendimiento.

Si la funcin o procedimiento cumple con ciertos criterios, el


compilador inserta el cdigo directamente, en vez degenerar una
llamada.
Inlining es una optimizacin del rendimiento que puede resultar en
un cdigo ms rpido, pero a expensas del espacio.
Inline siempre hace que el compilador produzca un archivo binario
grande.

La directiva inline se utiliza en la declaracin de funciones y


procedimientos y las definiciones, al igual que otras directivas.

S-ar putea să vă placă și