Você está na página 1de 31

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

bloques de instrucciones autónomos que pueden ser llamados


desde distintos lugares en un programa.

• Una función es una rutina que devuelve un valor cuando es


ejecutada.

• Un procedimiento es una rutina que no devuelve ningún 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 declaración de procedimiento tiene la forma:

• Dónde ProcedureName es cualquier identificador válido,


statements es una secuencia de sentencias que se ejecutan cuando
el procedimiento es llamado, y las directrices (parameterList) y
localDeclarations son opcionales.
• Crear una aplicación de consola.
• En Delphi Projects seleccionar Console Aplication
• Código del programa
• Guardar el proyecto File->Save All
• Cuando se declara un procedimiento o función, puede especificar
una convención 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


parámetros son pasados a la rutina.

• Estos afectan la eliminación de los parámetros de la pila, la


utilización por paso de parámetros y el manejo de errores y
excepciones. La convención de llamada por defecto es register.
• Las convenciones register y pascal pasan parámetros de izquierda a
derecha; es decir, el parámetro de la izquierda es primero evaluado
y pasado y el parámetro de la derecha es evaluado y pasado
después.

• Las convenciones cdecl, stdcall y safecall pasan parámetros de


derecha a izquierda.

• Para todas las convenciones, excepto cdecl, los procedimientos o


funciones eliminan los parámetros de la pila en el retorno.

• Con la convención cdecl, la llamada elimina los parámetros de la


pila cuando se llama al retorno.

• La convención register utiliza hasta tres registros de la CPU para


pasar los parámetros, mientras que los otros convenios, pasan
todos los parámetros en la pila.

• La convención safecall implementa la excepción ‘firewalls’. En


win32, este implementa el interproceso de notificación de error
COM.
• La siguiente tabla resume las convenciones de llamada.

• La convención por defecto de register es la mas eficiente, ya que


evita la creación de un marco general de la pila.
• La convención 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
código externo. En win32, las API del sistema operativo son stdcall
y SafeCall.
• La convención SafeCall debe ser usada para declarar los métodos
dual-interface. La convención pascal se mantiene por
compatibilidad con versiones anteriores.
• Las directivas near, far y export hacen referencia a llamadas de
convenciones de programación 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 tendría el siguiente


comportamiento:

push Z
push Y
push X
call AProc
• La directiva forward remplaza código, incluyendo declaraciones de
variables locales y estamentos, en una declaración de
procedimiento o función.

• Por ejemplo

Function cslcular(x,y:Integer):Real;forward;

• En algún lugar después de la declaración forward, la rutina se debe


volver a declarar en una definición de declaración que incluye un
bloque.
• Crear una aplicación de consola.
• En Delphi Projects seleccionar Console Aplication
• Código del programa
• Guardar el proyecto File->Save All
• La directiva external, sustituye el bloque de la declaración de un
procedimiento o función, le permite llamar rutinas compiladas por
separado desde su programa.

• La rutinas External pueden venir de objetos file o librerías cargadas


dinámicamente.
• Usted puede declarar más 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 parámetros distintivas.

• Se crean do funciones llamadas Divide, que toman parámetros de


diferentes tipos, cuando se llama a Divide, el compilador determina
cual es la función para invocar.
• Crear una aplicación de consola
• En Delphi Projects seleccionar Console Aplication
• Código de la aplicación
• Guardar el proyecto File->Save All
• Funciones procedimientos a veces contienen otras funciones y
procedimientos dentro de la sección de declaraciones locales de
sus bloques.
• El alcance de una rutina anidada se limita a la función 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
• Código de la aplicación
• Guardar el proyecto File->Save All
• Una lista de parámetros es una secuencia de declaraciones de
parámetros separados por punto y comas entre paréntesis.

• Parámetros constantes
Un parámetro constante (const) es como una constante local o una
variable de solo lectura.

• Parámetros Out
Un parámetro Out, como un parámetro variable se pasa por
referencia. Con un parámetro Out, sin embargo, el valor inicial de la
variable referenciada es descartado o la rutina a la que es pasado. El
parámetro Out es solo para salida.

• Parámetros sin tipo


Parámetros que no tienen un tipo definido.

Function evaluar(var valor1,valor2; valorfinal:Integer):double;


• Parámetros String.

• Parámetros array.

• Parámetros array abiertos.

• Parámetros variantes de array abierto.

• Parámetros por defecto.

• Parámetros 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 función o procedimiento cumple con ciertos criterios, el


compilador inserta el código directamente, en vez degenerar una
llamada.

• Inlining es una optimización del rendimiento que puede resultar en


un código más rápido, pero a expensas del espacio.

• Inline siempre hace que el compilador produzca un archivo binario


grande.

• La directiva inline se utiliza en la declaración de funciones y


procedimientos y las definiciones, al igual que otras directivas.

Você também pode gostar