Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.
-
Upload
angeles-saavedra-franco -
Category
Documents
-
view
244 -
download
0
Transcript of Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.
![Page 1: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/1.jpg)
Tercera clase: Control de flujo del programa.
- Arreglos.
- Control de flujo repetitivo.
![Page 2: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/2.jpg)
OPERACIONES CON CADENAS
=~ Este operador es usado en las expresiones regulares para indicar la presencia de un patrón de comparación dentro de una variable que contiene una cadena de caracteres.
$variableobjetivo =~ /patron a buscar/
Para buscar la palabra ejemplo dentro de una cadena Seria:$cadena=“Este es un ejemplo de busqueda”;$cadena =~ /ejemplo/ #SI se encuentra patron$cadena =~ /ejemplar/ #NO se encuentra patron
![Page 3: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/3.jpg)
#!/usr/bin/perl #!/usr/bin/perl#eje00ifbusqueda.pl
$dna="aggtttttttatcggcccc";
if ($dna =~ /atg/ ){ print "Contiene inicio de gen \n";}else{ print "No se encuentra patron de inicio\n"; }
Ejemplo: buscar el inicio del gen (atg) en una cadena de dna imprimir si este se encuentra o no.
![Page 4: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/4.jpg)
ARREGLOS, LISTAS, Listas de variables escalares
Es una lista de datos de tipo escalar. Cada elemento de la lista es una variable escalar a la que se le asocia un valor. Las variables de tipo array se identifican por el prefijo arroba @. Por ejemplo:
@numeros = (10, 34, 12, 23, 33.6, 14, 9);@aminoacidos = (”A", ”R",”Y”,”D”,”C”);@mezcla = ("proteina", 12, "dna",31.234);
910 34 12 23 33.6 14
0 1 2 3 4 5 6
![Page 5: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/5.jpg)
Los elementos de un array se referencían mediante índices.El primer elemento se referencia por el índice 0. Por ejemplo:
$numeros[1]; # vale 34 $aminoacidos[2]; # vale ”Y" $mezcla[0]; # vale ”proteína"
![Page 6: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/6.jpg)
Como obtener el numero de elementos de un arreglo:
@nucleotidos=(‘a’,’g’,’c’,’t’);
$num_elementos=@nucleotidos;
$ultimo_subindice=$#nucleotidos;
![Page 7: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/7.jpg)
#!/usr/bin/perl#eje01arreglosacceso.pl@numeros = (10, 34, 12, 23, 33.6, 14, 9);@animales = ("perro", "gato", "leon");@mezcolanza = ("proteina", 4523, "dna",31.234);
print " $numeros[2] \n";print " $animales[0]\n";print " $mezcolanza[1] $mezcolanza[4] \n";
Ejemplo Arreglos, accediendo elementos en un programa.
![Page 8: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/8.jpg)
Que imprime en pantalla este programa?
#!/usr/bin/perl#eje02arreglosaminoacidos.pl
@amino = ('A','R','N','D','C','P');@codones=("GCC","AGG","AAU","GAU","UGU","CCU");@amino3=("Ala","Arg","Asn","Asp","Cys","Pro");
print "Secuencia Proteina $amino[3]$amino[0]$amino[0]\n";print "Secuencia Proteina 3 $amino3[3]-$amino3[0]-$amino3[0]\n";print "Secuencia RNA $codones[3]$codones[0]$codones[0]\n";
![Page 9: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/9.jpg)
FUNCIONES ASOCIADAS A ARREGLOSFunción push y pop.
push y pop permiten respectivamente insertar y extraer el último elemento de un arreglo.
Por ejemplo:
@arreglo=("uno","dos","tres");
push (@arreglo,"cuatro");
push (@arreglo,"cinco");
$elemento=pop(@arreglo);
tres
uno dos tres
uno dos tres cuatro
uno dos tres cuatro cinco
uno dos tres cuatrocinco
![Page 10: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/10.jpg)
Ejemplo visto dentro de un programa perl:
#!/usr/bin/perl#eje03poppush.pl@arreglo=("uno","dos","tres");
print " Contenido de la lista @arreglo \n";#insertamos un elemento en el arreglo y lo imprimimospush (@arreglo,"cuatro");print " Contenido de la lista @arreglo \n";push (@arreglo,"cinco");print " Contenido de la lista @arreglo \n";
$elemento=pop(@arreglo);
print " Valor extraido $elemento \n";print " Contenido de la lista @arreglo \n";
![Page 11: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/11.jpg)
Las funciones shift y unshift permiten respectivamente suprimir e insertar el primer elemento de un arreglo. Por ejemplo:
@arreglo=(“C",”D",”E");
unshift (@arreglo,”B");
unshift (@arreglo,”A");
$elemento=shift(@arreglo);
C D E
B C D E
A B C D E
B C D E A
![Page 12: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/12.jpg)
#!/usr/bin/perl#eje04shiftunshit.pl@arreglo=("C","D","E");
print " Contenido de la lista @arreglo \n";#insertamos un elemento en el arreglo y lo imprimimosunshift (@arreglo,"B");print " Contenido de la lista @arreglo \n";unshift (@arreglo,"A");print " Contenido de la lista @arreglo \n";
$elemento=shift(@arreglo);
print " Valor extraido $elemento \n";print " Contenido de la lista @arreglo \n";
Ejemplo visto dentro de un programa perl:
![Page 13: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/13.jpg)
La función reverse invierte los valores del
array mientras que la función sort los ordena en sentido creciente.@arreglo=("G","A","D","F","T");
@arreglo=reverse(@arreglo);
@arreglo=sort (@arreglo);
G A D F T
T F D A G
A D F G T
![Page 14: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/14.jpg)
#!/usr/bin/perl#eje05sortreverse.pl@arreglo=("G","A","D","F","T");
print " Contenido de la lista @arreglo \n";@arreglo=reverse(@arreglo);print " Contenido de la lista @arreglo \n";@arreglo=sort (@arreglo);print " Contenido de la lista @arreglo \n";
Ejemplo visto dentro de un programa perl:
![Page 15: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/15.jpg)
Las funciones split y join permiten transformar una cadena en una lista de caracteres.Sintaxis: @lista = split(/expresión/, cadena) $cadena = join(separador, @lista)Ejemplo:
$dna="GACGT";
@arreglo=split('',$dna);
$dna2=join ('-',@arreglo);
G A C G T
GACGT
G-A-C-G-T
![Page 16: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/16.jpg)
Ejemplo visto dentro de un programa perl:
#!/usr/bin/perl#eje06splitjoin.pl$dna="GACGT";
print " Contenido de la variable $dna\n";@arreglo=split('',$dna);print " Contenido de la lista @arreglo \n";$dna2=join ('-',@arreglo);print "valor de la variable 2 $dna2\n";
![Page 17: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/17.jpg)
ESTRUCTURAS DE CONTROL
![Page 18: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/18.jpg)
ESTRUCTURAS DE CONTROL CONDICIONALES
![Page 19: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/19.jpg)
print “ Dame tu nombre \n“;$edad=<STDIN>;If $edad>=18 { print “eres mayor de edad \n“;}else{ print “eres menor de edad \n“;}print “saliendo del programa “;
![Page 20: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/20.jpg)
Las estructuras de control repetitivas permiten realizar un conjunto de sentencias ”N” veces, comúnmente se les llama ciclos, loop, bucles.
![Page 21: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/21.jpg)
ESTRUCTURAS DE CONTROL REPETITIVAS
![Page 22: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/22.jpg)
Condicion? verdadero
falso
Conjunto de instrucciones
Representación de un ciclo mediante diagrama de flujo.
![Page 23: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/23.jpg)
Cont=0
Cont<=0?
Fin PCR
Elevar temp 96
Descender temp 55Elevar a 76
Incrementar Cont
Verdad
Falso
Representacion de PCR en diagrama de flujo
![Page 24: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/24.jpg)
Sentencias repetitivas en Perl:
While
Until
For
Foreach
![Page 25: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/25.jpg)
Sintaxis sentencia While en pseudocodigo podría verse de la siguiente forma:
Mientras (condicion sea verdadera) hacer{
todas las intrucciones
contenidas en el bloque
de intrucciones.
}Fin bloque mientras
![Page 26: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/26.jpg)
Sintaxis sentencia While:
Mientras la condición sea verdadera entra al ciclo
While (condicion){
instrucción 1;
instrucción 2;
instrucción N;
}
![Page 27: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/27.jpg)
Cont=0
Cont<=3
Fin PCR
Elevar temp 96
Descender temp 55
Elevar a 76Incrementar cont
Verdadero
Falso
#!/usr/bin/perl#eje07pcrwhile.pl$cont=0;
while ($cont < 30){ print “Elevando temp a 96\n”; print “descender temp a 55\n”; print “Elevando temp a 76\n”; $cont=$cont+1:}print “Finalizando PCR\n”;
Ejemplo PCR en lenguaje de programación
![Page 28: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/28.jpg)
Ejemplo 2 sentencia While.
Leer una lista de números desde el teclado y sumar sus valores , hasta que se introduzca un numero negativo.
#!/usr/bin/perl#eje08whileacumcont.pl$acumulador=0;$num_leido=0;
while ($num_leido < 0){ print "Introduce un numero:"; $num_leido=<STDIN>; $acumulador=$acumulador+$num_leido;}
![Page 29: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/29.jpg)
Consideraciones importantes:
-La condición debe tener un valor inicial, que asegure entrar al ciclo.
-La condición debe ser modificada dentro del ciclo, para poder salir del ciclo.
-Realizar la sangria de forma adecuada que permita la fácil lectura del programa.
![Page 30: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/30.jpg)
#!/usr/bin/perl#eje08whileacumcont.pl$acumulador=0;$num_leido=0;
while ($num_leido < 0){ print "Introduce un numero:"; $num_leido=<STDIN>; $acumulador=$acumulador+$num_leido;}
-La condición debe tener un valor inicial.
![Page 31: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/31.jpg)
La condición debe ser modificada dentro del ciclo
#!/usr/bin/perl
$acumulador=0;$num_leido=0;
while ($num_leido < 0){ print "Introduce un numero:"; $numero=<STDIN>; $acumulador=$acumulador+$num_leido;}
![Page 32: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/32.jpg)
Realizar la sangria de forma adecuada
#!/usr/bin/perl$acum=0;$num_leido=0;while ($num_leido >= 0){print "Introduce un numero:";$numero=<STDIN>;$acumulador=$acumulador+$num_leido;}
#!/usr/bin/perl$acum=0;$num_leido=0; while ($num_leido >= 0){print "Introduce un numero:";$numero=<STDIN>;$acumulador=$acumulador+$num_leido;}
![Page 33: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/33.jpg)
#!/usr/bin/perl
#eje08whileacumcont.pl$acum=0;$num_leido=0;
while ($num_leido >= 0){ print "Introduce un numero:"; $numero=<STDIN>; $acumulador=$acumulador+$num_leido;}#fin while
#!/usr/bin/perl
#eje08whileacumcont.pl$acum=0;$num_leido=0;
while ($num_leido >= 0){ print "Introduce un numero:"; $numero=<STDIN>; $acumulador=$acumulador+$num_leido;}#fin while
Realizar la sangría de forma adecuada.
CORRECTOS!!!
![Page 34: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/34.jpg)
Ejercicio sentencia While.
Leer una lista de números desde el teclado, sumar sus valores (excepto negativos), y obtener el promedio, hasta que se introduzca un numero negativo.
![Page 35: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/35.jpg)
![Page 36: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/36.jpg)
#!/usr/bin/perl
#eje09whileleerpromedio.pl$acumulador=0;$num_leido=0;$contador_leidos=0;while ($num_leido >= 0){ print "Introduce un numero:"; $num_leido=<STDIN>; if($num_leido>0){ $acumulador=$acumulador+$num_leido; $contador_leidos=$contador_leidos+1; }}$promedio=$acumulador/$contador_leidos;print "Suma de numeros introducidos $acumulador\n";print "Promedio: $promedio\n";
Ejercicio sentencia While.
Leer una lista de números desde el teclado, sumar sus valores y obtener el promedio, hasta que se introduzca un numero negativo, .
![Page 37: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/37.jpg)
Tarea 1 sentencia While.
Almacenar en un arreglo las siguientes secuencias: gcgttaggacgtagctagctagctagctaattgggccc gcgaatgcatgcatgcattatacccacgatgcatcgat gcgaataattgcatgcatgcattatagctacgatgcat tacgtagaattcgatcgatgcatcgatctatagatgat acgtacgtacgatcgatgcatgacatgcaatttggtgg
Determinar, si alguna de estas secuencias contienen alguna caja “tata” o el sitio de pegado de la enzima de restricción Ecori “aatt”, imprimir si alguna o ambas condiciones se prensentan en cada secuencia.
![Page 38: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/38.jpg)
![Page 39: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/39.jpg)
TAREA modificar el ejemplo anterior indicando en que posición de la cadena se encuentra la caja tata o el sitio de restricción, utilizando la funciones de arreglos revisadas anteriormente.
TAREA modificar su ejemplo utilizando la función index.
![Page 40: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/40.jpg)
Sintaxis sentencia Until:
A diferencia del while, mientras la condición sea falsa entra al ciclo.
until (condicion ){
instrucción 1;
instrucción 2;
instrucción N;
}
![Page 41: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/41.jpg)
#!/usr/bin/perl
#eje09whileleerpromedio.pl$acumulador=0;$num_leido=0;
while ($num_leido >= 0){ print "Introduce un numero:"; $num_leido=<STDIN>; $acumulador=$acumulador+$num_leido;}
#!/usr/bin/perl
#eje10until.pl$acumulador=0;$num_leido=0;
until ($num_leido < 0){ print "Introduce un numero:"; $num_leido=<STDIN>; $acumulador=$acumulador+$num_leido;}print "Acumulador $acumulador\n";
while Until
![Page 42: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/42.jpg)
Sintaxis sentencia foreach:
Extrae el contenido del arreglo, agregándolo a la variable, el cual puede se utilizado dentro del ciclo.
foreach variable ( lista ){
instrucción 1;
instrucción 2;
instrucción N;
}
Existen elementos en lista?
verdadero
falso
Extrae elemento asignalo a variable
T F D A G
![Page 43: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/43.jpg)
#!/usr/bin/perl#eje11foreach.pl@nombres=("pedro","lucia","pepito","jorge","ana");
foreach $n (@nombres){ print "nombre: $n \n";}#for
Ejemplo : Definir una lista y acceder a elle mediante ciclo foreach.
![Page 44: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/44.jpg)
Ejemplo N: Leer una secuencia de dna del teclado, contar e imprimir la cantidad de nucleótidos a,g,c,t (cuantos de cada uno) se introdujeron, imprimir también cuantos inválidos se introdujeron.
![Page 45: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/45.jpg)
![Page 46: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/46.jpg)
#eje12foreachcontnucleotidos.pl$cont_g=0;$cont_a=0;$cont_t=0;$novalidos=0;print "Introduce una secuencia de dna :";$dna=<STDIN>;
@lista=split('',$dna);
foreach $nucleotido (@lista){ print "Nucleotido $nucleotido \n"; if ( ($nucleotido eq 'a') or ($nucleotido eq 'A')){ $cont_a++; }elsif( ($nucleotido eq 'g') or ($nucleotido eq 'G')){ $cont_g++; }elsif( ($nucleotido eq 'c') or ($nucleotido eq 'C')){ $cont_c++; }elsif( ($nucleotido eq 't') or ($nucleotido eq 'T')){ $cont_t++; }else{ $novalidos++; }}
![Page 47: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/47.jpg)
TAREA N: Lo mismo que el ejemplo anterior, pero ahora calcular porcentaje de GCs tiene la secuencia, así como porcentajes de ATs contiene la misma
![Page 48: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/48.jpg)
TAREA N: Lo mismo que el ejemplo anterior, pero ahora calcular porcentaje de GCs tiene la secuencia, asi como porcentajes de ATs contiene la misma
![Page 49: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/49.jpg)
Sintaxis sentencia for:
for (expresion inicial; condición de repeticion; incremento){
instrucción 1;
instrucción 2;
instrucción N;
}
![Page 50: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/50.jpg)
Sintaxis sentencia for:
for (expresion inicial; condición de repeticion; incremento){
instrucción 1;
instrucción 2;
instrucción N;
}
![Page 51: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/51.jpg)
#!/usr/bin/perl#eje13for.plfor ($cont=1 ; $cont <=10 ; $cont++){ print "Valor de cont $cont \n";}#for
Ejemplo 4 for:
![Page 52: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/52.jpg)
#!/usr/bin/perl#eje14forpcr.plfor ($cont=0 ; $cont < 30 ; $cont++){ print "*** Estamos en el ciclo $cont*** \n"; print "Elevando temp a 96 \n"; print "Descender temp a 55 temp a 96 \n"; print "Elevando temp a 76 \n";}#forprint "Finalizando PCR\n”;
Ejemplo 5 el ciclo de PCR:
![Page 53: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/53.jpg)
#!/usr/bin/perl
@nombres=("pedro","lucia","pepito","jorge","ana");
$num_elementos=@nombres;$ultimo_subindice=$#nombres;print "Numero de elementos: $num_elementos \n";print "Ultimo subindice: $ultimo_subindice \n";
for ($i=0 ; $i<$num_elementos ; $i++){ print "$nombres[$i] \n";}#for
Ejemplo : Definir una lista y acceder a elle mediante ciclo for.
![Page 54: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/54.jpg)
Ejemplo N: Leer una secuencia de dna del teclado, contar e imprimir la cantidad de nucleótidos a,g,c,t (cuantos de cada uno) se introdujeron, imprimir también cuantos inválidos se introdujeron, realizar el ejemplo con el ciclo for.
![Page 55: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/55.jpg)
#eje15forcontnucleotidos.pl$cont_c=0;$cont_g=0;$cont_a=0;$cont_t=0;$novalidos=0;print "Introduce una secuencia de dna :";$dna=<STDIN>;
@lista=split('',$dna);$numero_elementos=@lista;for($i=0;$i<$numero_elementos;$i++){ $nucleotido=$lista[$i]; print "Nucleotido $nucleotido \n"; if ( ($nucleotido eq 'a') or ($nucleotido eq 'A')){ $cont_a++; }elsif( ($nucleotido eq 'g') or ($nucleotido eq 'G')){ $cont_g++; }elsif( ($nucleotido eq 'c') or ($nucleotido eq 'C')){ $cont_c++; }elsif( ($nucleotido eq 't') or ($nucleotido eq 'T')){ $cont_t++; }else{ $novalidos++; }}
![Page 56: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/56.jpg)
Sintaxis sentencia do while:
Se ejecuta el ciclo al menos una vez, se repite el ciclo si la condición es VERDAD.
do{
instrucción 1;
instrucción 2;
instrucción N;
}while(condicion);
![Page 57: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/57.jpg)
Sintaxis sentencia do until:
Se ejecuta el ciclo al menos una vez, si la condición es FALSA el ciclo se repite.
do{
instrucción 1;
instrucción 2;
instrucción N;
}until(condicion);
![Page 58: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/58.jpg)
#!/usr/bin/perl#eje16dowhile.pl$cont=1;
do{ print ”Num de ciclo $cont \n"; $cont++;}while ($cont <=10);print "Fin de ciclo\n";
#!/usr/bin/perl#eje17dountil.pl$cont=1;
do{ print ”Num de ciclo $cont \n"; $cont++;}until ($cont >10);print "Fin de ciclo\n";
do while do until
![Page 59: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/59.jpg)
LAST
#eje18last.pl$cont=0;while ($cont <30 ){ print "*** Estamos en el ciclo $cont*** \n"; print "Elevando temp a 96 \n"; print "Descender temp a 55 temp a 96 \n"; print "Elevando temp a 76 \n"; $cont=$cont+1; if ($cont == 3){ last; }#if}#forprint "Finalizando PCR\n";
La instrucción last interrumpe la ejecución de la iteración actual y se ejecuta la instrucción que sigue al bloque.
![Page 60: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/60.jpg)
NEXT
#eje19next.pl$cont=0;while ($cont <5 ){ if ($cont == 2){ $cont=$cont+1; next; }#if print "*** Estamos en el ciclo $cont*** \n"; print "Elevando temp a 96 \n"; print "Descender temp a 55 temp a 96 \n"; print "Elevando temp a 76 \n"; $cont=$cont+1;}#forprint "Finalizando PCR\n"
La instrucción next interrumpe la ejecución del bloque de instrucción actual y prosigue la ejecución en la iteración siguente
![Page 61: Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.](https://reader033.fdocuments.ec/reader033/viewer/2022061617/5665b4b61a28abb57c936a49/html5/thumbnails/61.jpg)