AnteriorPosterior

6.7. Funciones incorporadas

  Curso: Programación en Pascal (v5), por Nacho Cabanes

6.7. Algunas funciones incorporadas del lenguajes Pascal.

6.7.1. Funciones matemáticas: abs, sin, cos, arctan, round, trunc, sqr, sqrt, exp, ln, odd, potencias.

En el apartado 1.6.3 vimos algunas de las funciones matemáticas que incluye Pascal. Es hora de ver una lista un poco más detallada:

  • Abs: valor absoluto de un número.
  • Sin: seno de un cierto ángulo dado en radianes.
  • Cos: coseno, análogo.
  • ArcTan: arco tangente.  No existe función para la tangente, que podemos calcular como sin(x)/cos(x).
  • Round: redondea un número real al entero más cercano.
  • Trunc: trunca los decimales de un número real para convertirlo en entero.
  • Int: igual que trunc, pero el resultado sigue siendo un número real.
  • Sqr: eleva un número al cuadrado.
  • Sqrt: halla la raíz cuadrada de un número.
  • Exp: exponencial en base e, es decir, eleva un número a e.
  • Ln: calcula el logaritmo neperiano (base e) de un número.
  • Odd: devuelve TRUE si un número es impar.
  • Potencias: no hay forma directa de elevar un número cualquiera a otro en pascal, pero podemos imitarlo con "exp" y "ln", así:

(* ELEVAR.PAS, Elevar un número real a otro *)
(* Parte de CUPAS5, por Nacho Cabanes       *)
 
program elevar;
 
function elevado(a,b: real): real; 
begin 
  elevado := exp(b *ln(a) ); 
end;
 
begin 
  writeln(elevado(2,3)); 
end. 
 

La deducción de esta fórmula es fácil, conociendo las propiedades de los logaritmos y las exponenciales

a^b = exp ( ln ( a^b )) = exp ( b * ln ( a ))

6.7.2. Funciones para manipular cadenas de texto.

En el apartado 4.2.3 vimos también algunas de las funciones de manipulación de cadenas de texto. Vamos a resumirlas ahora y a ver un ejemplo conjunto:

Las funciones incorporadas para el manejo de cadenas son:

  • copy.  Devuelve una subcadena.  Su formato es  function copy(cad: string; posic: integer; cuantos: integer): string;  Es decir, le indicamos en qué cadena nos queremos basar, desde qué posición queremos empezar a tomar las letras y cuántas queremos leer.  Así, copy('JUAN PEREZ', 1, 4)  daría 'JUAN'
  • concat.  Concatena varias cadenas.  Su formato es function concat(cad1 [, cad2,..., cadN]: string): string; (lo que hay entre corchetes es opcional). Lo que hace es crear una cadena de texto a partir de varias que va concatenando.    cadena := concat(cad1, cad2, cad3)  es lo mismo que si tecleásemos:  cadena := cad1 + cad2 + cad3
  • delete.  Borra parte de una cadena.  El formato es procedure delete(var cad: string; posic: integer; cuantos: integer): string;  y lo que hace es eliminar "cuantos" letras a partir de la posición "posic":  si TEXTO es 'JUAN PEREZ', delete(texto, 2, 5) haría que TEXTO pasase a ser 'JEREZ'.
  • insert.  Inserta una subcadena dentro  de una cadena. Su formato es  procedure Insert(texto: string; var donde: string; posic: integer);  donde "texto" es la cadena que queremos insertar, "donde" es la cadena inicial en la que queremos que se inserte, y "posic" es la posición de "donde" en la que se insertará "texto".
  •  length.  Dice la longitud de una cadena de texto:  function length(cad: string): integer;
  • pos.  Indica la posición de una subcadena dentro de una cadena: function pos(subcadena: string; cadena: string): byte; Por ejemplo, pos('Pérez', 'Juan Pérez') devolvería un 6.  Si la subcadena no es parte de la cadena, devuelve 0.
  • val.  Obtiene el valor numérico de una cadena de texto. Por ejemplo, en VAL('250', valor, codigoDeError), "valor" obtendría el valor 250, mientras que en VAL('250 es un numero', valor, codigoDeError), "valor" obtendría el valor 0, y "codigoDeError" sería 4, que es la posición en la que se ha encontrado un símbolo no numérico.

Vamos a ver un ejemplo que las use:

(* CADENAS.PAS, Ejemplo de funciones de cadenas *)
(* Parte de CUPAS5, por Nacho Cabanes           *)
 
program cadenas;
 
var
    frase: string;
    numero: integer;
    codigoError: integer;
 
begin
    frase := 'Esta es una frase de ejemplo';
    writeln('La primera palabra (letras 1 a 4) es: ', copy(frase, 1, 4) );
    writeln('Si anadimos mas texto: ', concat(frase, ' facilito') );
 
    delete(frase, 6, 2);
    writeln('Si borramos la segunda palabra (letras 5 a 7) es: ', frase );
 
    insert('si es', frase, 6);
    writeln('Y si insertamos una nueva segunda (y tercera) palabra: ',  frase);
    writeln('La longitud de la frase es: ', length(frase) );
    writeln('Y la primera a parece en la posicion: ', pos('a', frase) );
 
    frase := '25 unidades';
    writeln('Ahora la frase es: ',  frase);
    val(frase, numero, codigoError);
    writeln('Y el doble de su valor es: ', numero*2 );
    writeln('La conversión ha sido correcta hasta la posición: ', codigoError );
end. 
 
(* Resultado de este programa:
La primera palabra (letras 1 a 4) es: Esta
Si anadimos más texto: Esta es una frase de ejemplo facilito
Si borramos la segunda palabra (letras 5 a 7) es: Esta  una frase de ejemplo
Y si insertamos una nueva segunda (y tercera) palabra: Esta si es una frase de ejemplo
La longitud de la frase es: 31
Y la primera a parece en la posicion: 4
Ahora la frase es: 25
Y el doble de su valor es: 50
Finalmente la frase es: 25 unidades
Y el doble de su valor es: 0
La conversion ha sido correcta hasta la posicion: 3
*)
 

Actualizado el: 07-10-2014 01:12

AnteriorPosterior