Capítulo 3

Manual de PERL

CAPITULO 3


I. Estructuras de control

    La mayoría de las estructuras de control en PERL, han sido heredadas  del lenguaje C/C++, por tanto, para aquellos que conozcan este lenguaje será fácil adaptarse.
 

Estructuras Condicionales Simples:

       Las distintas intrucciones de un programa o algoritmo se ejecutan secuencialmente; pero en ocasiones es necesario bifurcar o desviar momentaneamente esa ejecución en función de nuestras necesidades. La estructura condicional más simple que permite esta bifurcación es el if... (Si...) y permite realizar una acción o grupo de acciones en función de la condición.
 
 if (condición)
    {
        intrucciones...
    }

       En el caso del if en PERL existen 2 variantes en las expresiones que usan en las condiciones de comparación:

1.- Comparación númerica:

    ==    igual que...
    !=     distinto de...
    <      menor que...
    >      mayor que...
    >=    mayor o igual que...
    <=    menor o igual que...
 
 
$edad=22;

if ($edad == 22) 
  {
    print "Tu  edad es: ",$edad;
  }

2.- Comparación alfanumérica, literal o de textos.

    - eq   igual que...
    - ne   distinto de...
    - lt     menor que...
    - gt    mayor que...
    - ge   mayor o igual que...
    - le    menor o igual que...
 
$saludo="hola";

if ($saludo eq "hola"
  {
    print $saludo;
  }

Existe otra estructura condicional simple propia del lenguaje PERL  que  es unless (hacer a menos que...). Se usa cuando queremos que se ejecute una instrucción o grupo de instruciones en el caso de que una variable no esté definida o que la condición no sea verdad, es decir, equivaldría a Si no existe... o  Si no es...

Si no existe:
unless ($saludo
  {
    print "Hola";
  }
if ( ! $saludo
  {
    print "Hola";
  }
Sólo se mostrará el saludo si la variable $saludo no está definida.
 

Si no es:
$saludo="Adiós";

unless ($saludo eq "Hola"
  {
    print "Hola";
  }

$saludo="Adiós";

if ($saludo ne "Hola"
  {
    print "Hola";
  }

Sólo se mostrará el saludo si la variable $saludo no es "Hola".

En el caso de que la condición de lugar a 2 posibilidades se pueden realizar 2 acciones o grupos de acciones. En este caso se utiliza if...else... (Si...sino...)
 
 if (condición)
    {
       instrucciones...
    }
   else
    {
      instrucciones... 
    }

Ejemplo:
 
print"¿Qué edad tienes?";$edad=<STDIN>;
chop($edad);

if ($edad >= 18 )
  {
    print "Eres mayor de edad\n";
  }
else
  {
    print "No eres mayor de edad\n";
  }

    El programa pide la edad de una persona y le indica si es mayor de edad o no. Observamos que tras la entrada de la edad usamos la función chop( ) para eliminar el retorno de carro de la edad; sino lo hacemos así el programa no funcionará, ya que, el valor de la edad terminaría con "\n" y ese caracter no lo comprobamos en las condiciones.


Estructura Condicional Múltiple:

    Hasta este momento hemos estudiado el caso de que una condición nos lleve a realizar una o dos acciones, pero se puede dar el caso de que la condición nos pueda ofrecer más de 2 resultados. En este caso el PERL dispone de una intrucción ideal para este fin, if...elsif...else... (Si...sino-si...sino)
 
print "¿A qué país pertenece la moneda: ";
$moneda=<STDIN>; chop($moneda);

if ($moneda  eq "peseta"
   {
    print "El país es  España" ;
   }
elsif ($moneda eq "dolar")
   {
  print "El país es  EEUU" ;
   }
elsif ($moneda eq "escudo")
  {
  print "El país es  Portugal";
  }
else
  {
  print "No conozco esa moneda";
  }

    El programa es muy simple y pide el nombre de una moneda y muestra el país a que pertenece; siempre que sean las monedas de ciertos paises (España,EEUU y Portugal), en caso contrario muestra no conocer dicha moneda.


Estructuras Repetitivas :

    Hasta este momento sólo hemos empleado estructuras que permiten decidir si se realiza una u otra acción o varias acciones en función de las distintas posibilidades que permite la condición. En el  caso de que queramos repetir una acción o grupo de acciones dependiendo de una condicion, podemos usar for....,foreach...ywhile...Todas estas instrucciones producen los denominados bucles.
 


for...(para...):

    La instrucción for es la  estructura repetitiva  más se usada para crear bucles. Se basa en la repetición N veces, definidas por el programador, de una serie de acciones o instrucciones. Cuando la condición alcanza el máximo de veces definido, concluye esta repetición.

    Los bucles de tipo Para necesitan de unos valores númericos definidos que indican las veces que se repetirá un bloque de instrucciones.Entendemos por bloque de instrucciones a todas las acciones o intrucciones que se encuentren entre las llaves "{ }" que delimitan el ámbito de una estructura de control.

    El bucle se ejecutará N veces que indica una variable que actúa como contador, indicando el valor inicial, el final y el incremento de conteo. El incremento se hace mediante esta nomenclatura:

Incremento de 1 en 1
$var=$var+1;
$var++;
$var+=1;

Incremento de 2 en 2
$var=$var+2;
$var+=2;

y así sucesivamente para otros incrementos.
 
 
PERL
SIGNIFICADO
for ($i=1; $i<=10; $i++)
{
 print "$i\n";
}
Para (valor inicial; valor final; incremento)
{
 Escribe "$i\n";
}

    Este simple programa muestra en pantalla una lista de números desde el 1 al 10.


En ocasiones nos puede interesar que el bucle termine antes del número de veces de repetición estimado o que al alcanzar cierto número de repeticiones se produzca una alteración del bucle...Para permitir estas alteraciones del flujo normal de las repeticiones, tenemos las instrucciones next (siguiente) y last (último).

    next permite saltar la cuenta una vez en un punto determinado del proceso del bucle.
    last  concluye la cuenta y las repeticiones, terminando el bucle.
 
for ($i=1; $i<=10; $i++)
{
  if ($i == 3)
   { 
    next;
   }

  print "$i\n";

}

for ($i=1; $i<=10; $i++)
{
  if ($i == 3)
   { 
    last;
   }

  print "$i\n";

}

    El primer ejemplo muestra una lista de números del 1 al 10, saltando el número 3.
    El segundo ejemplo muestra una lista de números del 1 al 3.
 



foreach...(para cada...):

    Esta instrucción se usa para recorrer los valores de las matrices. La expresión dentro del paréntesis (matriz) es evaluada para producir una lista con sus valores, que actúan como contadores del bucle, ejecutandose el bucle una vez por cada uno de estos elementos.

En este ejemplo el bucle se ejecutará una vez por cada uno de los elementos de la matriz @nombres. Se utiliza una variable contenedor $persona que contiene, en cada pasada, cada uno de los valores de la matriz.
@nombres=("Juan","Antonio","Luis","Marcos");

foreach $persona (@nombres)
{
 print "$persona\n";
}

En este caso se usan las claves (keys) y los valores (values) de una matriz asociada como contador del bucle y se asignan a variables contenedores como $letra y $nombre que podemos usar para mostrar las iniciales de cada una de las personas o los nombres.
%nombres=("J","Juan","A","Antonio","L","Luis");

foreach $letra  (keys %nombres)
{
 print "$letra\n";
}

%nombres=("J","Juan","A","Antonio","L","Luis");

foreach $nombre  (values %nombres)
{
 print "$nombre\n";
}

while...(mientras que...)

Como indica su nombre, un bucle se repetirá mientras que se cumpla o deje de cumplirse una condición. La nomenclatura de esta estructura repetitiva es:

while (condición)
{
intrucciones...
}


Ejemplo: Este programa mostraría el saludo de "Hola", mientras el contador no superase las 5 veces, pero hemos incluido una condición ( if ($n==3) ) para mostrar otro mensaje "Adiós" y salir  (exit ) al llegar a la 3 repetición.
 
$n=1;
while ($n <= 5)
{
 print "Hola\n";

  if ($n==3)
     { 
    print "Adiós";
    exit;
     }

 $n++;

}


do
{
intrucciones...
} until (condición)
 


 

Ejemplo: Este programa mostraría el saludo de "Hola", hasta (until) que el contador no llegue a 3 veces.
 
$n=0;
do
{
 print "Hola\n";
 $n++;

} until ($n == 3)


 
Página anterior
Inicio de página
Página siguiente