Estructuras repetitivas

8,158 views
7,840 views

Published on

Informe

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,158
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
69
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Estructuras repetitivas

  1. 1. LA ESTRUCTURA REPETITIVAS: La estructura do while es otra estructura repetitiva, la cual ejecuta al menosuna vez su bloque repetitivo, a diferencia del while o del for que podían no ejecutarel bloque. Esta estructura repetitiva se utiliza cuando conocemos de antemano quepor lo menos una vez se ejecutará el bloque repetitivo.La condición de la estructura está abajo del bloque a repetir, a diferencia del whileo del for que está en la parte superior.Representación gráfica: El bloque de operaciones se repite MIENTRAS que la condición seaVerdadera.Si la condición retorna Falso el ciclo se detiene. En Java, todos los ciclos repitenpor verdadero y cortan por falso.Es importante analizar y ver que las operaciones se ejecutan como mínimo unavez.
  2. 2. LA ITERACION DO – WHILESu sintaxis será :do { proposición 1 ;proposición 2 ;...............} while (expresión) ;Expresado en palabras , esto significa : ejecute las proposiciones , luego repita laejecución mientras la expresión dé un resultado CIERTO . La diferenciafundamental entre esta iteración y la anterior es que el DO-WHILE se ejecutasiempre AL MENOS una vez , sea cual sea el resultado de expresión.ITERACION FOREl FOR es simplemente una manera abreviada de expresar un WHILE , veamossu sintaxis :for ( expresión1 ; expresión2 ; expresion3 ) {proposición1 ;proposición2 ; ..............}Esto es equivalente a :expresión1 ;while ( expresión2 ) {proposición1 ;proposición2 ; ..............
  3. 3. expresion3 ;}Ejemplo de un programa for#include<stdio.h>#include<math.h>/* Programa para tabular la funcion y = Sen(x) */main(){float a=0;float b=1.6;float c=0.1;floatx,y;for(x=a; x<=b; x=x+c){y=sin(x);printf("%f %f",x,y);}printf(" Presiona una tecla "); getch();}otro ejemplo:#include<stdio.h>#include<math.h>/* Programa para tabular la función y = sen(x) */main(){floatx,y;
  4. 4. for(x=0.0; x<=1.6; x=x+0.1){y=sin(x);printf(" x = %f y = %f",x,y);}printf("Presiona una tecla"); getch();}La expresión1 es una asignación de una ó más variables , (equivale a unainicialización de las mismas ) , la expresión2 es una relación de algun tipo que ,mientras dé un valor CIERTO , permite la iteración de la ejecución y expresión3 esotra asignación , que comunmente varía alguna de las variables contenida enexpresión2 .Todas estas expresiones , contenidas en el paréntesis del FOR deben estarseparadas por PUNTO Y COMA y NO por comas simples .No es imprescindible que existan TODAS las expresiones dentro del paréntesisdel FOR ,pudiendose dejar en blanco algunas de ellas , por ejemplo :for ( ; exp2 ; exp3) ófor (exp1 ; ; ) ófor ( ; ; )Estas dos últimas expresiónes son interesantes desde el punto de vista de su faltade término relacional , lo que implica que el programador deberá haber previstoalguna manera alternativa de salir del lazo ( probablemente mediante BREAK óRETURN como veremos más adelante ) ya que sinó , la ejecución del mismo esinfinita ( ó tan larga como se mantenga encendida la computadora ) .LA SENTENCIA BREAKEl BREAK , ya brevemente descripto con el SWITCH , sirve también para terminarloops producidos por WHILE , DO-WHILE y FOR antes que se cumpla la condición
  5. 5. normal de terminación . En el EJEMPLO siguiente vemos su uso para terminar unWHILE indeterminado.#include<stdio.h>#include<conio.h>main(){char c ;printf("ESTE ES UN LOOP INDEFINIDO ") ;while(1) {printf( "DENTRO DEL LOOP INDEFINIDO (apriete una tecla):" ) ;if( (c = getch()) == Q )break ;printf( "nNO FUE LA TECLA CORRECTA PARA ABANDONAR EL LOOP ") ; }printf("nTECLA CORRECTA : FIN DEL WHILE ") ;}Obsérvese que la expresión while(1) SIEMPRE es cierta , por lo que el programacorrerá imparable hasta que el operador oprima la tecla "secreta" Q . Esto seconsigue en el IF , ya que cuando c es igual al ASCII Q se ejecuta la instrucciónBREAK ,dando por finalizado el WHILE .El mismo criterio podría aplicarse con el DO-WHILE ó con FOR , por ejemplohaciendofor (;;) { /* loop indefinido */............if( expresión )break ; /* ruptura del loop cuando expresión sea verdadera */}
  6. 6. LA SENTENCIA CONTINUELa sentencia CONTINUE es similar al BREAK con la diferencia que en vez determinar violentamente un loop , termina con la realización de una iteraciónparticular y permitiendo al programa continuar con la siguiente.LA FUNCION EXIT()La función EXIT() tiene una operatoria mucho más drastica que las anteriores , envez de saltear una iteración ó abandonar un lazo de programa , esta abandonadirectamente al programa mismo dándolo por terminado . Realiza también unaserie de operaciones útiles como ser , el cerrado de cualquier archivo que elprograma hubiera abierto , el vaciado de los buffers de salida , etc.Normalmente se la utiliza para abortar los programas en caso de que se esté porcometer un error fatal éinevitable . Mediante el valor que se le ponga en suargumento se le puede informar a quien haya llamado al programa ( SistemaOperativo , archivo .bat , u otro programa ) el tipo de error que se cometió.SENTENCIA GOTOSi Ud. se ha admirado de que C tenga la operación GOTO , recuerde que el hechode existir NO lo obliga a usarla , en el mismo sentido que por tener puertas losaviones no está obligado a saltar por ellas en pleno vuelo.El uso del GOTO implica un salto incondicional de un lugar a otro del programa .Esta práctica hace que los programas sean muy dificiles de corregir ó mantener.Si no quedara más remedio que usarlo, (y en programación estructuradaSIEMPRE hay remedio) debe marcarse el destino del salto mediante un nombreseguido por dos puntos .if( c == 0 ) goto OTRO_LADO ;.............................OTRO_LADO:printf(........
  7. 7. En este caso si c es cero se saltean todas las sentencias entre el if y el destino,continuandose con la ejecución del printf() . El destino puede ser tanto posteriorcomo anterior al GOTO invocante .Estructuras de controlEn lenguajes de programación, las estructuras de control permiten modificar elflujo de ejecución de las instrucciones de un programa.Con las estructuras de control se puede: De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If- Then-Else y Select-Case) Ejecutar un grupo de sentencias mientras exista una condición (Do-While) Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until) Ejecutar un grupo de sentencias un número determinado de veces (For- Next) EtcTodas las estructuras de control tienen un único punto de entrada y un único puntode salida. Las estructuras de control se puede clasificar en : secuenciales,iterativas y de control avanzadas. Esto es una de las cosas que permite que laprogramación se rija por los principios de la programación estructurada.Los lenguajes de programación modernos tienen estructuras de control similares.Básicamente lo que varía entre las estructuras de control de los diferenteslenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar laestructura.Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandosguardados.
  8. 8. Tipos de estructura de controlAlgunas estructuras de control en el lenguaje JavaAntecendentesEl término "estructuras de control", viene del campo de la ciencia computacional.Cuando se presentan implementaciones de Java para las estructuras de control,nos referimos a ellas con la terminología de la Especificación del lenguaje Java,que se refiera a ella como instrucciones.Ejecución secuencialPero por lo general las instrucciones se ejecutan una después de la otra, en elorden en que están escritas, es decir, en secuencia. Este proceso se conoce comoejecución secuencial.Transferencia de controlEn Java, como en otros lenguajes de programación por excelencia como C y/oC++, el programador puede especificar que las siguientes instrucciones aejecutarse tal vez no sea la siguiente en secuencia. Esto se conoce comotransferencia de control. Hay que tener en cuenta que la instrucción goto es unapalabra reservada pero no se utiliza ni se recomienda. Un programa bienestructurado no necesita de esta instrucción. Si sabes programar no utilizarasgoto.Estructura de control: selección if simpleSe trata de una estructura de control que permite redirigir un curso de acciónsegún la evaluación de una condición simple, sea falsa o verdadera. Por ejemplo:Escribir un programa en Java que compare dos números e indique si cuál esmayor, menor, mayor y/o igual, menor y/o igual, o si son iguales:
  9. 9. StringstrComparacion = "";...if( numero1 == numero2 )strComparacion += numero1 + " == " + numero2;if( numero1 > numero2 )strComparacion += numero1 + " > " + numero2;if( numero1 < numero2 )strComparacion += numero1 + " < " + numero2;if( numero1 >= numero2 )strComparacion += numero1 + " >= " + numero2;if( numero1 <= numero2 )strComparacion += numero1 + " <= " + numero2;System.out.println(strComparacion);Estructuras de decisión Contenido III. - Estructuras de decisión 3.1 Selección dealternativas 3.2 La construcción if-then-else 3.3 Ifs anidados 3.4 CEstructuras de SelecciónLA ESTRUCTURA DE SELECCIÓN IFLa sentenciaifse la conoce como estructura de selección simple y su función esrealizar o no una determinada acción o sentencia, basándose en el resultado de laevaluación de una expresión (verdadero o falso), en caso de ser verdadero seejecuta la sentencia.
  10. 10. Fig. 5.1La estructura de selección if (que se muestra en la figura 5.1) trabaja de lasiguiente manera: si la evaluación de la expresión o expresiones es verdadera ( 1 )entonces se ejecuta la sentencia a la cual se refiere la estructura de control if.Si fueran varias sentencias a las que se refiere la estructura if (como se muestraen la figura 5.2) se tiene que encerrar todas las sentencias entre llaves ( { } ) y si laevaluación de la expresión es correcta entonces se ejecuta todas las sentenciascontenidas entre las llaves.Fig. 5.2Si la evaluación de la expresión o expresiones resultaría falsa (0), entonces no seejecuta las sentencias.Por ejemplo si dada la edad de una persona quiero dar un mensaje de que es o nomayor de edad, suponiendo que una persona mayor de edad tiene por lo menos21 años, el procedimiento será el siguiente. #include <iostream.h> void main() { cout<<"¿Qué edad tienes? n"; cin>>edad if( edad > 20 ) cout<<"Eres mayor de edad" ; }
  11. 11. #include<iostream.h> voidmain() { cout<<"¿Qué edad tienes? n"; cin>>edad if ( edad > 20 ) {cout<<"Eres mayor de edad"; cout<<"Te estas volviendo viejo "; } }En Pseudocódigo el anterior ejemplo se vería de la siguiente forma: Inicio Mostrar “¿Qué edad tienes?” Leer edad Si Edad > 20 Entonces Mostrar “Eres mayor de Edad” Fin Si FinEl diagrama de flujo de la estructura if se muestra en la Fig. 5.3, este diagramacontiene el símbolo diamante que es llamado el símbolo de decisión, que indicaque decisión se debe tomar. El símbolo de decisión contiene una expresión, y laevaluación de ésta será verdadera o falsa. Las flechas nos indican los dosposibles caminos que se pueden tomar.
  12. 12. fig 5.3El anterior diagrama de flujo funciona de la siguiente manera:1. Si Edad es mayor que 20 (verdadero) entonces se muestra “Eres mayor deEdad”2. Si no entonces no hace nadaImportante. Para mantener el código legible es bueno dejar espacios o sangríasen todas las líneas de código que están dentro de una estructura if / else o if, estasinstrucciones se las alinean un poco más a la derecha y así podemos notarclaramente que forman parte de las sentencias que componen a la estructura if.Esta práctica se puede aplicar a cualquier estructura de control.ESTRUCTURA DE SELECCIÓN IF / ELSELa estructura if / else lo que hace es ejecutar una acción si el resultado de laevaluación de la expresión es verdadera y otra acción si el resultado de laevaluación es falsa.La diferencia con utilizar sólo la estructura if es que si la expresión evaluada esverdadera sólo en ese caso se ejecuta una acción de otro modo se pasa de largo.En cambio en la estructura if / else si la expresión es falsa entonces se ejecutaotra acción.
  13. 13. Fig. 5.4En síntesis lo que hace esta estructura es realizar una acción si la expresión esverdadera y otra si es falsa.Aquí tenemos un ejemplo para ilustrar la estructura if / else. #include <iostream.h> void main() { if( edad > 20 ) cout<<"Eres mayor de edad" ; else cout<<"No eres mayor de edad"; }El diagrama de flujo correspondiente a esta estructura es el siguiente:fig. 5.5El anterior diagrama de flujo funciona de la siguiente manera:
  14. 14. 1. Si Edad es mayor que 20 (verdadero) entonces se muestra: “Eres mayor deEdad”.2. Si no entonces se muestra: “NO eres mayor de Edad”.ESTRUCTURAS CONDICIONALES ANIDADASExiste el caso de estructuras if, if/elseanidadas, que no es más que una estructuraif o if/else dentro de otra.Por ejemplo se desea conocer cuál es el mayor de tres números A, B ,C. 1: #include<iostream.h> 2: voidmain() 3: { 4: int A=0, B=0, C=0; 5: cout<<"Ingrese 3 números"; 6: cin>>A>>B>>C; //Lectura de valores por teclado 7:if( A > B ) 8: {if(A > C ) 9: cout<<"A es el número mayor"; 10: else 11: cout<<"C es el número mayor"; 12: } 13: else 14: {if ( B > C ) 15: cout<<"B es el número mayor"; 16: else 17: cout<<"C es el número mayor"; 18: } 19: }
  15. 15. Para explicar el funcionamiento del problema anterior se han enumerado todas laslíneas de tal programa.Suponiendo que los valores ingresados por teclado fueran: A=2, B=1, C=5. Elprograma actuaría de la siguiente manera.El programa se ejecuta secuencialmente hasta la línea 7 donde encuentra unaexpresión. Cuando se evalúe la expresión (A > B) línea 7, el resultado esverdadero (2 > 1), por lo tanto el programa ejecuta la línea 8, en dicha líneaencuentra otra expresión (A > C) y el resultado de evaluar dicha expresión es falso(2 > 5) por lo que el programa salta hasta la línea 11 y muestra "C es el númeromayor". Luego va a la línea 12 y verifica el cierre de llaves y finalmente saltahasta la línea 19 siendo la última línea de ejecución.

×