Tuesday, July 31, 2012, 07:01 PM - Delphi
{Funciones (function)}Las funciones son "un conjunto de ordenes" en otras palabras
es como un miniprograma dentro del programa principal encargado de una pequeña
tarea en especial, por ejemplo, si hacemos un programa en donde se muestren
los primeros "n" numeros primos, debemos hacer una parte del programa que nos
indique si es primo y otra parte que escriba el numero, pero en delphi
no existe la funcion que nos pueda indicar si un numero es primo, por lo que
debemos hacerla nosotros mismos, ademas el codigo queda tan cargado de ordenes
que en caso de haber algun error es algo dificil hallarlo, y se corre el riego
de estropear mas cosas , por lo que hacemos una function y solo escribimos las
ordenes una sola vez, le damos un nombre y mas adelante cuando necesitemos
realizar esta tarea llamamos a la funcion y el se encargara de hacer el trabajo
tomemos como ejemplo las funciones ya implementadas como:
"TRUNC"
a esta funcion si le emviamos un numero "x" que contenga decimales elimina los
decimales y nos devuelve el numero entero entonces si suponemos q no existe
esta funcion y queremos inventarla la deberiamos escribir asi:
Function Trunc(x:real):integer;
var m:integer; (por dar ejemplos)
N:real;
begin
(aqui debe ir el codigo...)
(pero siempre debe terminar de la sgt. forma)
result:=m;
(esto significa que lo que hizo la funcion debe devolvernos un resultado )
end:
esto que significa
1)fijense que comenzamos con la palabra function por lo que indica a la maquina
que esto sera una funcion
2)despues aparese trunc esta sera el nombre con que llamaremos a la funcion
y puede ser cualquier nombre pero dentro del programa debemos referirnos
siempre con el mismo nombre
es decir para utilizarlo debemos siempre utilizar la palabra trunc O si le
pusiesemos otro nombre como
Function Entero(x:real):integer;
debemos utilizarlo siempre con entero de lo contrario la PC no sabria de que
function hablamos
3)Luego dise "(x:real):integer;"
por partes esto significa
a)(x:real)
Esto nos dice que debemos enviarle una variable del
tipo REAL
para nuestra funcion podemos pedirle distintas cosas que
nuestra funcion necesite y puede ser mas de una variable y de
distintos tipos ejemplo
(x:integer), (x:integer; y:real)
b):integer;
despues del inciso "a" aparese esto que significa que la
funcion despues de realizar su trabajo debe entregarnos
un resultado del tipo "integer"
para nuestra funcion podemos decirle que nos devuelva
un resultado (y solo 1 tipo de resultado) del tipo que queramos
ejemplo
():real;, ():boolean;, ():string;
Toda function debe tener estas partes y se la implementa antes del BEGIN
principal y luego de USES
}
program Project9;
{$APPTYPE CONSOLE}
uses
SysUtils;
{1)escribimos function
2)le damos un nombre es este caso "Esprimo"
3)
a)pediremos que le envien 1 variables "integer" a la funcion
b)la funcion nos devolvera una variable "boolean" esto es,
por si no lo recuerdan una variable logica y nos entrega "TRUE" o "FALSE"
Haremos una funcion que nos avise si el numero que le enviamos es un numero
primo o no
}
function Esprimo(x:integer):boolean ;
var a,i:integer;
P:boolean;
begin
{Si se dan cuenta este es el mismo codigo que implementamos en un tema anterior
para escribir una serie de numeros primos solo que cambiamos algunos nombres
de variables para ser mas exactos
a=num
esprimo=p
XD
}
i:=2;
a:=x;
p:=true;
while i<a do
begin
if ((a mod i)=0)then
begin
p:=false;
end;
i:=i+1;
end;
{Una vez ya hicimos los pasos debemos decirle a la function que debe entregar
como resultado despues de hacer su trabajo
debemos fijarnos que el resultado que entregue sea del mismo tipo que
especificamos al momento de implementar en este caso dijimos
function Esprimo(x:integer):boolean ;
por lo que debemos entregar como resultado una variable boolean
"P" es del tipo boolean y en ella guarda los datos que necesitaba saber sobre
si el numero "x" que entrego a la function es primo por lo que la envio como
resultado
}
result:=p;
end;
{con el END se termino la funcion ahora vamos al programa principal}
var x,i:integer;
begin
writeln('hasta que Nº debo escribir?');
readln(x);
for i:=1 to x do
begin
{nuestra funcion entra en accion como devuelve valores verdadero o falso
la utilizo en la condicion y para que funcione la montonera de lineas que
escribimos mas atras solo debemos escribir el nombre de la funcion y entre
parentesis lo que necesita para trabajar , en nuestro caso un variable del
tipo Integer por lo que envio a "I"
}
if Esprimo(i)=true then {en falso no debe hacer nada por eso
no tengo necesidad de implementarlo}
begin
write(i,',');
end;
end;
{ Mas orden ¿no?}
readln;
end.