La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.

Presentaciones similares


Presentación del tema: "Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo."— Transcripción de la presentación:

1 Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo.

2 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

3 #!/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.

4 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); 91034122333.614 0123456

5 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"

6 Como obtener el numero de elementos de un arreglo: @nucleotidos=(‘a’,’g’,’c’,’t’); $num_elementos=@nucleotidos; $ultimo_subindice=$#nucleotidos;

7 #!/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.

8 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";

9 FUNCIONES ASOCIADAS A ARREGLOS Funció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 unodostres unodostrescuatro unodostrescuatrocinco unodostrescuatro cinco

10 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 imprimimos push (@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";

11 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 BC D E B C D E A

12 #!/usr/bin/perl #eje04shiftunshit.pl @arreglo=("C","D","E"); print " Contenido de la lista @arreglo \n"; #insertamos un elemento en el arreglo y lo imprimimos unshift (@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:

13 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 AD F T T FD A G A DF G T

14 #!/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:

15 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 AC G T GACGT G-A-C-G-T

16 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";

17 ESTRUCTURAS DE CONTROL

18 ESTRUCTURAS DE CONTROL CONDICIONALES

19 print “ Dame tu nombre \n“; $edad= ; If $edad>=18 { print “eres mayor de edad \n“; }else{ print “eres menor de edad \n“; } print “saliendo del programa “;

20 Las estructuras de control repetitivas permiten realizar un conjunto de sentencias ”N” veces, comúnmente se les llama ciclos, loop, bucles.

21 ESTRUCTURAS DE CONTROL REPETITIVAS

22 Condicion? verdadero falso Conjunto de instrucciones Representación de un ciclo mediante diagrama de flujo.

23 Cont=0 Cont<=0? Fin PCR Elevar temp 96 Descender temp 55 Elevar a 76 Incrementar Cont Verdad Falso Representacion de PCR en diagrama de flujo

24 Sentencias repetitivas en Perl: While Until For Foreach

25 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

26 Sintaxis sentencia While: Mientras la condición sea verdadera entra al ciclo While (condicion){ instrucción 1; instrucción 2; instrucción N; }

27 Cont=0 Cont<=3 Fin PCR Elevar temp 96 Descender temp 55 Elevar a 76 Incrementar 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

28 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= ; $acumulador=$acumulador+$num_leido; }

29 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.

30 #!/usr/bin/perl #eje08whileacumcont.pl $acumulador=0; $num_leido=0; while ($num_leido < 0){ print "Introduce un numero:"; $num_leido= ; $acumulador=$acumulador+$num_leido; } -La condición debe tener un valor inicial.

31 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= ; $acumulador=$acumulador+$num_leido; }

32 Realizar la sangria de forma adecuada #!/usr/bin/perl $acum=0; $num_leido=0; while ($num_leido >= 0){ print "Introduce un numero:"; $numero= ; $acumulador=$acumulador+$num_leido;} #!/usr/bin/perl $acum=0; $num_leido=0; while ($num_leido >= 0){ print "Introduce un numero:"; $numero= ; $acumulador=$acumulador+$num_leido;}

33 #!/usr/bin/perl #eje08whileacumcont.pl $acum=0; $num_leido=0; while ($num_leido >= 0){ print "Introduce un numero:"; $numero= ; $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= ; $acumulador=$acumulador+$num_leido; }#fin while Realizar la sangría de forma adecuada. CORRECTOS!!!

34 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.

35

36 #!/usr/bin/perl #eje09whileleerpromedio.pl $acumulador=0; $num_leido=0; $contador_leidos=0; while ($num_leido >= 0){ print "Introduce un numero:"; $num_leido= ; 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,.

37 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.

38

39 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.

40 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; }

41 #!/usr/bin/perl #eje09whileleerpromedio.pl $acumulador=0; $num_leido=0; while ($num_leido >= 0){ print "Introduce un numero:"; $num_leido= ; $acumulador=$acumulador+$num_leido; } #!/usr/bin/perl # eje10until.pl $acumulador=0; $num_leido=0; until ($num_leido < 0){ print "Introduce un numero:"; $num_leido= ; $acumulador=$acumulador+$num_leido; } print "Acumulador $acumulador\n"; while Until

42 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 FD A G

43 #!/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.

44 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.

45

46 # eje12foreachcontnucleotidos.pl $cont_g=0; $cont_a=0; $cont_t=0; $novalidos=0; print "Introduce una secuencia de dna :"; $dna= ; @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++; }

47 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

48 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

49 Sintaxis sentencia for : for (expresion inicial; condición de repeticion; incremento){ instrucción 1; instrucción 2; instrucción N; }

50 Sintaxis sentencia for : for (expresion inicial; condición de repeticion; incremento){ instrucción 1; instrucción 2; instrucción N; }

51 #!/usr/bin/perl #eje13for.pl for ($cont=1 ; $cont <=10 ; $cont++){ print "Valor de cont $cont \n"; }#for Ejemplo 4 for:

52 #!/usr/bin/perl #eje14forpcr.pl for ($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"; }#for print "Finalizando PCR\n”; Ejemplo 5 el ciclo de PCR:

53 #!/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.

54 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.

55 # eje15forcontnucleotidos.pl $cont_c=0; $cont_g=0; $cont_a=0; $cont_t=0; $novalidos=0; print "Introduce una secuencia de dna :"; $dna= ; @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++; }

56 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);

57 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);

58 #!/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 whiledo until

59 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 }#for print "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.

60 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; }#for print "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

61


Descargar ppt "Tercera clase: Control de flujo del programa. - Arreglos. - Control de flujo repetitivo."

Presentaciones similares


Anuncios Google