Você está na página 1de 8

Clase: 05 Tema: Funciones y procedimientos + Operaciones con fechas + Funciones de cadenas.

------------------------------------------------------------Resumen:

Funciones. Delphi, es un lenguaje estructurado, lo cual indica que los programas escritos en este lenguaje, pueden descomponerse en pequeos mdulos que pueden ser llamados cuando los necesitemos. Estos mdulos en Pascal se llaman funciones y se identifican mediante un nombre. Se declaran del siguiente modo:

function nombre (argumento1: tipo; argumento2: tipo;...) : tipo; Begin //codigo End;

Donde nombre es el nombre que se asignar a la funcin, argumento1 y argumento2 son valores que pasan a la funcin y tipo es el tipo de valor que retornar como resultado. Por ejemplo, si queremos implementar en Pascal la funcin matemtica: f(x, y) = (x * x + y) / x siendo x e y nmeros enteros, se realizara de este modo:

Function f (x: integer; y: integer) : integer; Begin F = (x * x + y) / x; End;

Dicha funcin, se definir una sola ocasin durante el programa, y nicamente ser necesario hacer llamada a esta funcin mediante su nombre y sus valores dados entre parntesis.

a := f(1, 2); {llamada a f con x=1 e y=2} b := f(a, 3); {llamada a f con x=a e y=3} c := f(a, b) + f(1, 4);

Los valores colocados entre parntesis de la funcin, reciben el nombre de argumentos. Estos se comportan dentro de la funcin, como si se tratase de variables.

Procedimientos Toda funcin que no retorna ningn valor, o que no realiza operaciones matemticas o no genera resultados numricos, recibe el nombre de procedimiento. La programacin estructurada, se basa en dividirse en pequeas partes autosuficientes que realizan una tarea muy concreta, y que pueden ser invocados cuando se desee. Se puede realizar alguna funcin o tarea especifica que arroje informacin de modo no numrico, o sin realizar operaciones, es entonces cuando se utilizan los procedimientos. Un procedimiento se declara del mismo modo que una funcin, a diferencia que la palabra reservada Function cambia por Procedure y al final de la lista de argumentos no se pone ningn tipo de valor de respuesta, pues no arroja ningn resultado. Ejemplo:

Program Ejemplo2; Procedure Di (mensaje: String); Begin Showmessage(mensaje); End;

Begin Di (Mi nombre es: ); Di (David Osornio Fernndez); End;

Tambin es posible construir funciones o procedimientos que no tengas argumentos, pues pueden realizar una tarea concreta, no importando alguna otra cosa. Ejemplo:

Program Ejemplo3; Procedure Saluda; Begin Showmessage(Hola a todos);

End;

Begin Saluda; End;

Donde se declaran los procedimientos y las funciones?: Ver clase 03.

Funciones para fechas Si deseamos cargar la fecha en una variable este se debe declarar asi: var fecha: tdate; Convertir fecha a texto: edit1.text:=DateToStr(DateTimePicker1.date); Convertir texto a fecha: fecha := StrToDate( '23/08/2007' ); Comparaciones de fechas If (DateTimePicker1.DateTime>MonthCalendar1.Date) then begin showmessage('DateTimePicker1.DateTime es mayor que MonthCalendar1.Date'); end; Deseo ver todas las funciones para las fechas: Parte 1 Parte 2 Parte 3

Funciones de cadenas FUNCTION CompareStr(S1, S2: String): Integer; Realiza una comparacin entre las cadenas S1 y S2. Dicha comparacin diferencia las maysculas de las minsculas, por lo que la cadena 'Abc' no ser la misma que la cadena 'abc'. La funcin devuelve 0 si ambas cadenas resultan ser idnticas, un nmero positivo si la primera cadena (S1) es mayor que la segunda cadena (S2) o un nmero negativo si la primera cadena es menor que la segunda cadena.

FUNCTION CompareText(S1, S2: String): Integer;

Hace lo mismo que la funcin anterior, con una pequea diferencia: no distingue entre maysculas y minsculas, por lo que las cadenas 'Abc' y 'abc' sern iguales para esta funcin, con lo que nos devolvera el valor 0.

FUNCTION Copy(S: String; Inicio, CuantosCar: Integer): String; Devuelve una subcadena de la cadena pasada como argumento, S. Toma como posicin inicial dentro de S la dada por Inicio, y a partir de ah toma CuantosCar caracteres. Si Inicio es mayor que la longitud de la cadena, devuelve cadena vaca. Si a partir de Inicio, CuantosCar excede el nmero de caracteres que haya en la cadena, slo devuelve hasta el final de la cadena. Vamos a ver algunos ejemplos para terminar de aclararnos:

Tenemos definido, como constante, lo siguiente: Cadena = 'Esto_es_una_cadena_larga_para_hacer_pruebas'; Y los siguientes resultados para varias llamadas a Copy: Copy(Cadena, 1, 10); --> 'Esto_es_un' Copy(Cadena, Length(Cadena) + 2, 2); --> '' Copy(Cadena, Length(Cadena) - 3, 5); --> 'ebas' Copy(Cadena, 0, 5); --> 'Esto_'

PROCEDURE Delete(VAR S: String; Inicio, CuantosCar: Integer); Borra de la cadena pasada como argumento los caracteres comprendidos entre la posicin inicial dada por el argumento Inicio, y borra CuantosCar. Al igual que con la funcin Copy, si Inicio es mayor que la longitud de la cadena, no borrar nada, y si a partir de Inicio, CuantosCar excede el nmero de caracteres que haya en la cadena, slo borrar hasta el final de la cadena. Vamos a ver tambin ejemplos. Para ello, supongamos que tenemos tres variables de tipo String, llamadas s1, s2 y s3, cuyo contenido sea el mismo, concretamente, la cadena de los ejemplos para Copy. As, tendramos lo siguiente: Delete(s1, 1, 10); --> s1 = 'a_cadena_larga_para_hacer_pruebas' Delete(s2, Length(s2) + 2, 4); --> s2 = 'Esto_es_una_cadena_larga_para_hacer_pruebas' Delete(s3, Length(s3) - 3, 5); --> s3 = 'Esto_es_una_cadena_larga_para_hacer_pru'

PROCEDURE Insert(S: String; VAR S1: String; Indice: Integer); Este procedimiento nos fusiona una cadena en otra comenzando en la posicin dada por

Indice. La cadena resultado ser almacenada en S1, y se copiar la cadena S dentro de S1 a partir de la posicin Indice. Vamos a ver algunos ejemplos, suponiendo que tenemos los valores siguientes para las variables: S := 'Cadena_Inicial', S1 := 'Otro_texto' Insert(S, S1, 3); --> S1 = 'OtCadena_Inicialro_texto' Insert(S, S1, 6); --> S1 = 'Otro_Cadena_Inicialtexto' Insert(S, S1, Length(S1) + 3); --> S1 = 'Otro_textoCadena_Inicial'

FUNCTION IntToHex(Valor, Digitos: Integer): String; Esta funcin nos devuelve una cadena que resulta de convertir el nmero que pasamos en Valor a hexadecimal. La variable Digitos nos dice el nmero mnimo de dgitos hexadecimales a devolver. Por ejemplo: IntToHex(54367, 1); --> D45F IntToHex(54367, 10); --> 000000D45F

FUNCTION IntToStr(Valor: Integer): String; Simplemente, nos devuelve la representacin del nmero pasado en la variable Valor como una cadena.

FUNCTION Length(S: String): Integer; Nos devuelve el nmero de caracteres que tiene la cadena S, es decir, su longitud.

FUNCTION LowerCase(S: String): String; Devuelve una cadena que resulta de convertir a minsculas la cadena pasada como argumento.

FUNCTION Pos(SubC, C: String): Integer; Esta funcin busca la subcadena SubC dentro de la cadena C. Devuelve un valor entero que resulta ser el ndice del primer carcter de SubC dentro de C. Si no encuentra la subcadena, devuelve el valor 0. Por ejemplo, supongamos que tenemos tres variables de tipo String, S1 := 'Cadena', S2 := 'de', S3 := 'algo'. Tendramos los resultados: Pos(S2, S1); --> 3 Pos(S3, S1); --> 0

FUNCTION StrToInt(S: String): Integer; Convierte la cadena pasada como argumento a su representacin numrica como entero. Si la conversin no es posible, saltar una excepcin por error de conversin.

FUNCTION StrToIntDef(S: String; ValorPorDefecto: Integer): Integer; Convierte la cadena S a un entero. Si la conversin no es posible, en lugar de provocar una excepcin, devolver el valor que se le pase en la variable ValorPorDefecto.

FUNCTION Trim(S: String): String; Devuelve una cadena que resulta de eliminar los espacios y caracteres de control existentes en S tanto al principio como al final. Por ejemplo: Trim(' Hola Mundo :-) '); --> 'Hola Mundo :-)' Trim(' Hola :-)'); --> 'Hola :-)' Trim('Hola :-) '); --> 'Hola :-)'

FUNCTION TrimLeft(S: String): String; Devuelve una cadena que resulta de eliminar los espacios y caracteres de control existentes en S slo al principio.

FUNCTION TrimRight(S: String): String; Devuelve una cadena que resulta de eliminar los espacios y caracteres de control existentes en S slo al final.

FUNCTION UpperCase(S: String): String; Devuelve una cadena que resulta de convertir a maysculas la cadena pasada como argumento.

Ver mas funciones de cadenas: Parte 1 Parte 2

Ejercicio 1: Crear una ventana como se muestra en la figura:

Crear una funcion que compare si fecha1 es mayor que fecha2, que devuelva 1 si es verdadero y 0 si es falso: CompararFechas(a:tdatetime;b:tdatetime):integer; En el boton "verificar" llamar a la funcion CompararFechas y mostrar mensaje del resultado. En el boton Go de "ver el texto en mayusculas". Mostrar con showmessage el edit1.text en mayusculas. En el boton Go de "mostrar la cantidad de letras". Mostrar cantidad de letras que existe en edit1.text. En el boton "cerrar ventana", antes de cerrar la aplicacion preguntar al usuario si desea cerrar la ventana.

Ejercicio 2: Crear un formulario que halle la cantidad de letras, nmeros y espacios de un texto.

Você também pode gostar