SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Estructuras de
           Repetición:
           Repita Mientras.
           Andrés Arcia
           Departamento de Computación
           Escuela de Ingeniería de Sistemas
           Facultad de Ingeniería
           Universidad de Los Andes



15/05/05          Programación Digital I       1
Programación Estructurada

    La programación estructurada es un paradigma que
    consiste en la organización de un código en bloques
    conformados por estructuras del tipo:
           Secuencial (asignación, lectura, escritura)
           Decisión o selección (simple, doble, múltiple)
           Repetición (Repita mientras, Hacer-Mientras, Repita para)




15/05/05                        Programación Digital I                 2
Estructuras de Repetición
      Estructura de repetición o lazo
      Permite que un conjunto de sentencias (bloque) de
      un programa puedan ser ejecutadas repetidamente
      según el resultado de una expresión lógica.
      Tipos de estructuras de repetición
           Repetición condicional o controlada por un
           centinela: REPITA-MIENTRAS y HACER-
           MIENTRAS.
           Repetición controlada por un contador: REPITA
           -PARA.
      Conceptos Básicos
           Contador
15/05/05   Acumulador      Programación Digital I          3
Contador
    Variable cuyo valor se incrementa o
    decrementa en una cantidad constante
    cada vez que se produce un determinado
    suceso o acción. Se debe realizar
    primeramente una operación de
    inicialización y posteriormente los
    correspondientes incrementos o
    decrementos.
15/05/05          Programación Digital I     4
Operaciones sobre un Contador
       Inicialización:
           contador = valor inicial

       Incremento/decremento:
           contador = contador + valor_constante
           contador = contador – valor_constante
 Ejemplo
 // inicialización
 int i=0, j=1000;
 i++;   // incremento           j--; //decremento
 i+=15; // incremento           j-=10; //decremento

 ¿Cuántas iteraciones hacen falta para que j llegue a 0 (cero)?

15/05/05                   Programación Digital I                 5
Acumulador
    Variable cuyo valor se incrementa o
    decrementa en una cantidad variable cada
    vez que se produce un determinado
    suceso o acción. Se debe realizar
    primeramente una operación de
    inicialización y posteriormente los
    correspondientes incrementos o
    decrementos.

15/05/05           Programación Digital I   6
Operaciones sobre un Acumulador
           Inicialización:
           acumulador = valor inicial

           Acumulación:
           acumulador = acumulador + valor
           acumulador = acumulador * valor
           acumulador = acumulador - valor
           acumulador = acumulador / valor




15/05/05                     Programación Digital I   7
Ejemplo

   float iterador = 0, nota = 15.5;
   unsigned multiplicador = 1; // valor distinto de cero
   signed divisor = 2021;

   - Acumular (Incrementos)
      iterador = iterador + nota;
      multiplicador = multiplicador * nota;
      multiplicador *= nota;

   - Acumular (Decrementos)
      iterador = iterador – nota;
      multiplicador /= nota;




15/05/05                 Programación Digital I            8
Centinela

           Es el valor asignado a una variable que hace que se
           ejecute un bloque de instrucciones. Por lo general existen
           dos puntos críticos dentro del algoritmo, cuando se
           pregunta por el valor centinela y cuando se cambia de
           valor.

   Ejemplo
              char bandera = 1;
              inicio:
              …
              // cuerpo del programa;
              …
              // punto de cambio;
              bandera = 0;
              if (bandera) goto inicio;
15/05/05                        Programación Digital I                  9
Repita Mientras
       Diagrama de flujo                Pseudocódigo en español
                                         Repita mientras (condición)
                                            S1
                                            …
                                            Sn
                                         Fin_RM




                                        Código en C
                                        while (condición)
                                        {
                                          S1
                                          …
                                          Sn
                                        }

15/05/05                   Programación Digital I                      10
Repita Mientras

     Las sentencias (una o más) del cuerpo del lazo se
     ejecutan mientras la condición (expresión lógica) es
     cierta. Cuando la condición es falsa, termina la
     ejecución del lazo.
     Se pregunta al principio por la condición, por tanto el
     lazo se ejecuta cero (si la primera vez la condición es
     falsa) o mas veces.
     Si la condición nunca se hace falsa, el programa entra
     en un “lazo infinito”, es decir, las sentencias del cuerpo
     del lazo se ejecutarán indefinidamente.

15/05/05                   Programación Digital I                 11
Repita Mientras
    Hay que estar pendientes de INICIALIZAR las variables
    que intervienen en la condición antes de ejecutar el lazo
    por primera vez, ya que lo primero que hace la
    estructura es evaluar la condición.
    Hay que estar pendientes de MODIFICAR dentro del
    cuerpo del lazo los valores de las variables que
    intervienen en la condición, para garantizar que en algún
    momento ésta se haga falsa y el lazo pueda terminar su
    ejecución y así tratar que el lazo no sea infinito.



15/05/05                  Programación Digital I            12
Ejemplo
  Pseudocódigo en Español           Código en C
  i=0;                              #define MAX 1000

  REPITA MIENTRAS (i<MAX)           int i=0;
     i=i+1;                         while (i < MAX)
     Escribir (i)                   {
  Fin_RM.                             i++;
                                      printf(“%i”,i);
                                    }

                                    NOTA: recuerde usar las
                                    llaves {} cuando haya más
                                    de una instrucción.


15/05/05                Programación Digital I                  13
Ejemplo
  Pseudocódigo en Español           Código en C
  pot = 1                     #define MAXPOT 500
  REPITA MIENTRAS (pot < 500)
    pot = pot * 2;            int pot=1;
  Fin_RM                      while (pot < MAXPOT)
                                pot *=2;
  Escribir(“potencia =“,pot)
                                    printf(“potencia: %i“,pot);

                                    NOTA: recuerde que puede
                                    omitir las llaves {} cuando
                                    hay solo una instrucción.



15/05/05                Programación Digital I                    14
Ejemplo
    Pseudocódigo en Español            Código en C
    bandera = cierto;                  #define true 1
    contador = 1;                      char bandera=true;
    REPITA MIENTRAS (bandera =         int contador=1;
    cierto)
      Escribir(contador)               while (bandera)
      contador = contador + 1          {
      Si (contador = 10)                 printf(“%i”,contador);
           bandera = falso;              contador++;
      Fin_si                             if (contador == 10)
    Fin_RM                                  bandera = !bandera;
                                       }



15/05/05                 Programación Digital I                   15
Ejemplo
Pseudocódigo en Español                             Código en C
seguir = verdadero                                  char seguir = TRUE;
respuesta = ‘s’                                     char respuesta = ‘s’;
REPITA MIENTRAS (seguir=verdadero)                  while (seguir)
   Escribir (“¿Seguir repitiendo?”)                 {
   Leer (respuesta)                                   printf(“¿Seguir
   Si respuesta = ‘n’                               repitiendo?”);
       seguir = falso                                 scanf(“%c”,&respuesta);
   Fin_Si                                             if (respuesta == ‘n’)
Fin_RM                                                   seguir = false;
                                                    }

seguir = verdadero                                  char seguir = 1;
REPITA MIENTRAS (seguir = verdadero)                int contador = 0;
  contador = contador + 1                           while(seguir)
Fin_RM                                                contador+=1;


15/05/05                   Programación Digital I                          16
Ejemplo
#include <stdio.h>                              Corrida en Frío
                                                Iteración i suma
void main()
{                                                 (0)   0    0
  int i = 0,suma = 0;
                                                  (1)   1    0
     while(i<5)
     {                                            (2)   2    1
          suma += i;
          i++;                                    (3)   3    3
          printf(“%i”,suma);
     }                                            (4)   4    6
}
                                                  (5)   5   10


15/05/05               Programación Digital I                      17
Ejemplo
#include <stdio.h>
void main ()
                                                  Corrida en Frío
{
                                                    Iteración   i
   int i = 1;
                                                       (0)      1
    while ( i < 3 )
    {                                                  (1)      2
       printf(”i es menor que 3n”);
       i++;                                            (2)      3
    }
    printf(”Se termino el lazon”);
}




15/05/05                 Programación Digital I                     18
Salidas abruptas del while
   Algunas veces es conveniente salir de
   forma abrupta de una estructura de
   repetición. Para esto se utiliza la sentencia
   break.
   Según break, el lazo de repetición más
   interno se cancelará.


15/05/05            Programación Digital I     19
Ejemplo de break
Int i, j;                                      Observe que:
i=0;                                           ➢ Hay un par de while anidados


j=0;                                           ➢ El break esta dado por una


while (i>-1)                                   condición y se encuentra en el
{                                              while más interno.
                                               ➢ La condición que imperará en el
    j++;
    while (j<20)                               lazo interno será la del if.
    {
           printf(“Valor de j %i”,j);
           if (j>=15) break;
           // pueden haber mas instr.
    }
}
15/05/05                       Programación Digital I                       20
Regreso abrupto a la condición
   Dentro de un lazo de repetición, se pueden
   hacer regresos abrutos a la condición que
   gobierna al lazo.
   El constructo en C para tal proposito es el
   “continue”.



15/05/05            Programación Digital I       21
Ejemplo del continue
Supongamos que queremos procesar solamente los números
  enteros positivos de un conjunto introducido por
  teclado:
i=0;
while (i<10)
{
    prinf(“Introduzca un número: “);
    scanf(“%i”,&n);
    if (n < 0)
        continue;
    else
       { i++;
            printf(“Procesable”); }
}15/05/05                        Programación Digital I   22
Ejemplo

    Calcular la suma de n números introducidos por teclado.

Análisis E-P-S
Entradas: total de números (n ∈ Z), números (a1, a2, a3, …, an ∈ Z)
    Proceso: Calcular suma = a1 + a2 + a3 + … + an
Salidas: suma ∈ Z




15/05/05                    Programación Digital I                    23
Ejemplo
Algortimo

    0. Inicio
    1. Escribir (“Introduzca el número de elementos a sumar”)
    2. Leer (n)
    3. suma = 0
    4. contador = 0
    5. Repita mientras (contador < n)
         contador = contador + 1
         Escribir (“Introduzca un numero”)
         Leer (num)
         suma = suma + num
             fin_RM
    6. Escribir (suma)
    7. Fin



15/05/05                    Programación Digital I              24
Estructura de Repetición
“Repita mientras”: Ejemplo 3
Codificación
    #include <stdio.h>
    void main ()
    {
         int n, num, suma = 0, contador = 0;
              printf(“Introduzca el número de       elementos   a
    sumar”);
         scanf(“%i”,n);
         while (contador < n)
         {
           contador++;
           printf(“Introduzca un numero”);
            scanf(“%i”,&num);
            suma += num;
           }
           printf(“Suma = %in“, suma);
     }
15/05/05                   Programación Digital I               25
Ejemplo. EPS.
    Leer una serie de números reales y calcular su media.
    La marca de fin de lectura será el –999

Análisis E-P-S
    Entradas: num1, num2, num3, …, numn -999
    Proceso:
        - Acumular la suma e incrementar contador de números
        mientras número leído sea diferente de -999
                  suma = num1 + num2 + num3 + … + numn
                  contador = contador + 1
         - Calcular media = suma / contador
    Salidas: media
15/05/05                    Programación Digital I             26
Ejemplo. Algoritmo.
      0. Inicio
      1. contador = 0
      2. suma = 0
      3. Escribir (“Introduzca el primer número”)
      4. Leer (num)
      5. Repita mientras (num != -999)
            contador = contador + 1
            suma = suma + num
            Escribir (“Introduzca un número”)
            Leer (num)
         Fin_RM
      6. Si (contador != 0) entonces
           media = suma/contador
           Escribir (“La media es =”, media)
         sino
           Escribir (“El usuario no introdujo numeros”)
         Fin_Si
      7. Fin
15/05/05                    Programación Digital I        27
Ejemplo. Código.
#include <stdio.h>                             if (contador != 0)
void main()                                    {
{                                                media = suma/contador;
  float contador = 0.0,                          printf(“La media es = %i”,
        suma = 0.0, media;                     media);
    printf(“Introduzca el primer               }
    numero”;                                   else
    scanf(“%i”,&num);                             printf(“El usuario no
    while (num != -999.0)                      introdujo numeros”);
    {
                                          }
      contador = contador +
                 1.0;
      suma = suma + num;
      printf(“Introduzca un
               número”;
      scanf(“%i”,&num);
    }
15/05/05                     Programación Digital I                       28
Ejercicios Propuestos
     Para cada uno de los siguientes problemas realizar el análisis E-
     P-S, algoritmo y codificación.
     Hallar el resultado de la siguiente sucesión:
     S = 1 + 1/2 + 1/3 + 1/4 … + 1/n
     hasta que 1/N converja hacia e/100 (o sea igual o menor que un
     número e cualquiera dividido entre 100).
     Calcular la sumatoria de los 100 primeros números naturales.

     Calcular independientemente la suma de los números pares e
     impares comprendidos entre 1 y n.



15/05/05                     Programación Digital I                 29
Ejercicios Propuestos
    Escribir todos los enteros positivos menores que 100
    omitiendo aquellos divisibles por 7.
    Encuentre el número de puntos con coordenadas
    enteras que están dentro de la elipse
        2x2 + 3y2 = 100
    En Caracas se hizo una encuesta de los medios de
    transporte urbano mas comunes. A cada persona se le
    preguntó si el autobús, el metro o el carro era el medio
    mas usado para ir al trabajo. Se permitió mas de una
    respuesta. El resultado de la encuesta fue el siguiente:

15/05/05                  Programación Digital I               30
Ejercicios Propuestos
    n1 personas escogieron el autobús
    n2 personas escogieron el metro
    n3 personas escogieron el carro
    n4 personas escogieron el autobús y el metro
    n5 personas escogieron el autobús y el carro
    n6 personas escogieron el metro y el carro
    n7 personas escogieron los tres medios de transporte

¿ Cuántas personas respondieron la encuesta ?
¿ Cuántas personas escogieron sólo un medio de transporte ?
¿ Cuántas personas escogieron dos medios de transporte ?
¿ Cuántas personas escogieron los tres medios de transporte ?
15/05/05                     Programación Digital I             31
Ejercicios Propuestos
    Leer valores que representan años e indique si son o no
    años bisiestos. El programa seguirá leyendo años hasta
    un máximo de 10 o hasta que haya leido 3 años
    bisiestos. Recuerde, una vez más, la regla:
    "Un año es bisiesto si es divisible por 400, o bien si es
    divisible por 4 pero no por 100"
    Por ejemplo, el año 2000 es bisiesto (es divisible por
    400), el año 1992 es bisiesto (es divisible por 4 y no por
    100), y el año 2100 no es bisiesto (es divisible por 4 y
    también por 100).


15/05/05                  Programación Digital I             32
Ejercicios Propuestos
    Imprimir la tabla de multiplicar de un número dado. El
    funcionamiento del programa se muestra en el siguiente
    ejemplo de ejecución.
    Introduzca un número: 5
    La tabla de multiplicar del 5 es:
    5x1=5
    5 x 2 =10
    ...
    5 x 10 =50

15/05/05                   Programación Digital I        33

Weitere ähnliche Inhalte

Was ist angesagt?

compuertas logicas
compuertas logicascompuertas logicas
compuertas logicasbamz19
 
Otaku Sekai
Otaku SekaiOtaku Sekai
Otaku Sekaigeral-93
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructuradoedwinalb
 
Complemento a 1 y a 2
Complemento a 1 y a 2Complemento a 1 y a 2
Complemento a 1 y a 2Jossue Jossue
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructuradoclaudiappaez
 
2 diodos semiconductores_de_potencia
2 diodos semiconductores_de_potencia2 diodos semiconductores_de_potencia
2 diodos semiconductores_de_potenciaFacebook
 
Concepto y tipos de redes inalambricas
Concepto y tipos de redes inalambricasConcepto y tipos de redes inalambricas
Concepto y tipos de redes inalambricasMaytee Rodriguez
 
Algebra booleana y circuitos combinatorios
Algebra booleana y circuitos combinatoriosAlgebra booleana y circuitos combinatorios
Algebra booleana y circuitos combinatoriosJesus Olivier Pereira
 
Ventajas y desventajas de los medios de transmisión
Ventajas y desventajas de los medios de transmisiónVentajas y desventajas de los medios de transmisión
Ventajas y desventajas de los medios de transmisiónDiana Marrufo
 
Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales CarlenisGeraldino
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOFernando Marcos Marcos
 
Circuitos Electronicos 3
Circuitos Electronicos 3Circuitos Electronicos 3
Circuitos Electronicos 3F Blanco
 
Evolucion de los procesadores amd
Evolucion de los procesadores amdEvolucion de los procesadores amd
Evolucion de los procesadores amddayanna930625
 
Cableado Estructurado Diapositivas+
Cableado Estructurado Diapositivas+Cableado Estructurado Diapositivas+
Cableado Estructurado Diapositivas+jukarmatrix
 
Normas de cableado
Normas de cableadoNormas de cableado
Normas de cableadoelber77
 

Was ist angesagt? (19)

compuertas logicas
compuertas logicascompuertas logicas
compuertas logicas
 
Otaku Sekai
Otaku SekaiOtaku Sekai
Otaku Sekai
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructurado
 
Complemento a 1 y a 2
Complemento a 1 y a 2Complemento a 1 y a 2
Complemento a 1 y a 2
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructurado
 
2 diodos semiconductores_de_potencia
2 diodos semiconductores_de_potencia2 diodos semiconductores_de_potencia
2 diodos semiconductores_de_potencia
 
Concepto y tipos de redes inalambricas
Concepto y tipos de redes inalambricasConcepto y tipos de redes inalambricas
Concepto y tipos de redes inalambricas
 
Algebra booleana y circuitos combinatorios
Algebra booleana y circuitos combinatoriosAlgebra booleana y circuitos combinatorios
Algebra booleana y circuitos combinatorios
 
Tema 5 amplificadores
Tema 5 amplificadoresTema 5 amplificadores
Tema 5 amplificadores
 
Ventajas y desventajas de los medios de transmisión
Ventajas y desventajas de los medios de transmisiónVentajas y desventajas de los medios de transmisión
Ventajas y desventajas de los medios de transmisión
 
Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales
 
RED WAN
RED WANRED WAN
RED WAN
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
 
Circuitos Electronicos 3
Circuitos Electronicos 3Circuitos Electronicos 3
Circuitos Electronicos 3
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructurado
 
Evolucion de los procesadores amd
Evolucion de los procesadores amdEvolucion de los procesadores amd
Evolucion de los procesadores amd
 
Cableado Estructurado Diapositivas+
Cableado Estructurado Diapositivas+Cableado Estructurado Diapositivas+
Cableado Estructurado Diapositivas+
 
Fuentes conmutadas
Fuentes conmutadasFuentes conmutadas
Fuentes conmutadas
 
Normas de cableado
Normas de cableadoNormas de cableado
Normas de cableado
 

Andere mochten auch (15)

Diseño de Agenda 2012
Diseño de Agenda 2012Diseño de Agenda 2012
Diseño de Agenda 2012
 
Estructura
EstructuraEstructura
Estructura
 
LA IDENTIDAD DE UNA MARCA
LA  IDENTIDAD DE UNA MARCALA  IDENTIDAD DE UNA MARCA
LA IDENTIDAD DE UNA MARCA
 
Principiios del diseño editorial
Principiios del diseño editorialPrincipiios del diseño editorial
Principiios del diseño editorial
 
Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)
 
Teroria del-color
Teroria del-colorTeroria del-color
Teroria del-color
 
Estructura
EstructuraEstructura
Estructura
 
Metodo proyectual de Bruno Munari
Metodo proyectual de Bruno MunariMetodo proyectual de Bruno Munari
Metodo proyectual de Bruno Munari
 
Composicion elementos
Composicion elementosComposicion elementos
Composicion elementos
 
1 -el diseño y sus elementos
1 -el diseño y sus elementos1 -el diseño y sus elementos
1 -el diseño y sus elementos
 
Principios Basicos Del Diseño Según Wucius Wong
Principios Basicos Del Diseño Según Wucius Wong Principios Basicos Del Diseño Según Wucius Wong
Principios Basicos Del Diseño Según Wucius Wong
 
Modulo - Fundamentos del Diseño
Modulo - Fundamentos del DiseñoModulo - Fundamentos del Diseño
Modulo - Fundamentos del Diseño
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
Estructura Semiformal E Informal
Estructura Semiformal E InformalEstructura Semiformal E Informal
Estructura Semiformal E Informal
 
Espacio Y Estructura
Espacio Y EstructuraEspacio Y Estructura
Espacio Y Estructura
 

Ähnlich wie Clase9

Plataformas tecnologicas introduccion visual studio clase 1 - 4
Plataformas tecnologicas introduccion visual studio   clase 1 - 4Plataformas tecnologicas introduccion visual studio   clase 1 - 4
Plataformas tecnologicas introduccion visual studio clase 1 - 4Richard Eliseo Mendoza Gafaro
 
Introducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En CIntroducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En Cpainni
 
Fundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoFundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoJosé Antonio Sandoval Acosta
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programacióncarlinauribe
 
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6AnaSofiaLpezMilln
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programaciónNataliaVicua1
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programaciónlaurapolindara1
 
Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Sol Hernández
 
Estructuras básicas conceptos básicos de programación (1)
Estructuras básicas  conceptos básicos de programación (1)Estructuras básicas  conceptos básicos de programación (1)
Estructuras básicas conceptos básicos de programación (1)daniel lozada cutiva
 
While para presentación
While para presentaciónWhile para presentación
While para presentaciónIDIECECY
 
Sentencia de control
Sentencia de controlSentencia de control
Sentencia de controlStalyn Cruz
 
Conceptos básicos de programación.pdf
Conceptos básicos de programación.pdfConceptos básicos de programación.pdf
Conceptos básicos de programación.pdfSantiagoMeneses18
 
Conceptos básicos de programación.pdf
Conceptos básicos de programación.pdfConceptos básicos de programación.pdf
Conceptos básicos de programación.pdfssuserec44061
 

Ähnlich wie Clase9 (20)

Plataformas tecnologicas introduccion visual studio clase 1 - 4
Plataformas tecnologicas introduccion visual studio   clase 1 - 4Plataformas tecnologicas introduccion visual studio   clase 1 - 4
Plataformas tecnologicas introduccion visual studio clase 1 - 4
 
Introducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En CIntroducción A Las Estructuras De Seleccion En C
Introducción A Las Estructuras De Seleccion En C
 
Fundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoFundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de Flujo
 
C facil de_v2
C facil de_v2C facil de_v2
C facil de_v2
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
Algoritmos en manufactura avanzada
Algoritmos en manufactura avanzadaAlgoritmos en manufactura avanzada
Algoritmos en manufactura avanzada
 
Plataformas tecnologicas introduccion visual studio
Plataformas tecnologicas introduccion visual studioPlataformas tecnologicas introduccion visual studio
Plataformas tecnologicas introduccion visual studio
 
Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4
 
Estructuras básicas conceptos básicos de programación (1)
Estructuras básicas  conceptos básicos de programación (1)Estructuras básicas  conceptos básicos de programación (1)
Estructuras básicas conceptos básicos de programación (1)
 
Tema 4 iterativas
Tema 4   iterativasTema 4   iterativas
Tema 4 iterativas
 
while y do while
while y do whilewhile y do while
while y do while
 
Tema 4 iterativas
Tema 4   iterativasTema 4   iterativas
Tema 4 iterativas
 
While para presentación
While para presentaciónWhile para presentación
While para presentación
 
Lenguaje C_Curso Secap
Lenguaje C_Curso SecapLenguaje C_Curso Secap
Lenguaje C_Curso Secap
 
Sentencia de control
Sentencia de controlSentencia de control
Sentencia de control
 
Conceptos básicos de programación.pdf
Conceptos básicos de programación.pdfConceptos básicos de programación.pdf
Conceptos básicos de programación.pdf
 
Conceptos básicos de programación.pdf
Conceptos básicos de programación.pdfConceptos básicos de programación.pdf
Conceptos básicos de programación.pdf
 

Clase9

  • 1. Estructuras de Repetición: Repita Mientras. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes 15/05/05 Programación Digital I 1
  • 2. Programación Estructurada La programación estructurada es un paradigma que consiste en la organización de un código en bloques conformados por estructuras del tipo: Secuencial (asignación, lectura, escritura) Decisión o selección (simple, doble, múltiple) Repetición (Repita mientras, Hacer-Mientras, Repita para) 15/05/05 Programación Digital I 2
  • 3. Estructuras de Repetición Estructura de repetición o lazo Permite que un conjunto de sentencias (bloque) de un programa puedan ser ejecutadas repetidamente según el resultado de una expresión lógica. Tipos de estructuras de repetición Repetición condicional o controlada por un centinela: REPITA-MIENTRAS y HACER- MIENTRAS. Repetición controlada por un contador: REPITA -PARA. Conceptos Básicos Contador 15/05/05 Acumulador Programación Digital I 3
  • 4. Contador Variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Se debe realizar primeramente una operación de inicialización y posteriormente los correspondientes incrementos o decrementos. 15/05/05 Programación Digital I 4
  • 5. Operaciones sobre un Contador Inicialización: contador = valor inicial Incremento/decremento: contador = contador + valor_constante contador = contador – valor_constante Ejemplo // inicialización int i=0, j=1000; i++; // incremento j--; //decremento i+=15; // incremento j-=10; //decremento ¿Cuántas iteraciones hacen falta para que j llegue a 0 (cero)? 15/05/05 Programación Digital I 5
  • 6. Acumulador Variable cuyo valor se incrementa o decrementa en una cantidad variable cada vez que se produce un determinado suceso o acción. Se debe realizar primeramente una operación de inicialización y posteriormente los correspondientes incrementos o decrementos. 15/05/05 Programación Digital I 6
  • 7. Operaciones sobre un Acumulador Inicialización: acumulador = valor inicial Acumulación: acumulador = acumulador + valor acumulador = acumulador * valor acumulador = acumulador - valor acumulador = acumulador / valor 15/05/05 Programación Digital I 7
  • 8. Ejemplo float iterador = 0, nota = 15.5; unsigned multiplicador = 1; // valor distinto de cero signed divisor = 2021; - Acumular (Incrementos) iterador = iterador + nota; multiplicador = multiplicador * nota; multiplicador *= nota; - Acumular (Decrementos) iterador = iterador – nota; multiplicador /= nota; 15/05/05 Programación Digital I 8
  • 9. Centinela Es el valor asignado a una variable que hace que se ejecute un bloque de instrucciones. Por lo general existen dos puntos críticos dentro del algoritmo, cuando se pregunta por el valor centinela y cuando se cambia de valor. Ejemplo char bandera = 1; inicio: … // cuerpo del programa; … // punto de cambio; bandera = 0; if (bandera) goto inicio; 15/05/05 Programación Digital I 9
  • 10. Repita Mientras Diagrama de flujo Pseudocódigo en español Repita mientras (condición) S1 … Sn Fin_RM Código en C while (condición) { S1 … Sn } 15/05/05 Programación Digital I 10
  • 11. Repita Mientras Las sentencias (una o más) del cuerpo del lazo se ejecutan mientras la condición (expresión lógica) es cierta. Cuando la condición es falsa, termina la ejecución del lazo. Se pregunta al principio por la condición, por tanto el lazo se ejecuta cero (si la primera vez la condición es falsa) o mas veces. Si la condición nunca se hace falsa, el programa entra en un “lazo infinito”, es decir, las sentencias del cuerpo del lazo se ejecutarán indefinidamente. 15/05/05 Programación Digital I 11
  • 12. Repita Mientras Hay que estar pendientes de INICIALIZAR las variables que intervienen en la condición antes de ejecutar el lazo por primera vez, ya que lo primero que hace la estructura es evaluar la condición. Hay que estar pendientes de MODIFICAR dentro del cuerpo del lazo los valores de las variables que intervienen en la condición, para garantizar que en algún momento ésta se haga falsa y el lazo pueda terminar su ejecución y así tratar que el lazo no sea infinito. 15/05/05 Programación Digital I 12
  • 13. Ejemplo Pseudocódigo en Español Código en C i=0; #define MAX 1000 REPITA MIENTRAS (i<MAX) int i=0; i=i+1; while (i < MAX) Escribir (i) { Fin_RM. i++; printf(“%i”,i); } NOTA: recuerde usar las llaves {} cuando haya más de una instrucción. 15/05/05 Programación Digital I 13
  • 14. Ejemplo Pseudocódigo en Español Código en C pot = 1 #define MAXPOT 500 REPITA MIENTRAS (pot < 500) pot = pot * 2; int pot=1; Fin_RM while (pot < MAXPOT) pot *=2; Escribir(“potencia =“,pot) printf(“potencia: %i“,pot); NOTA: recuerde que puede omitir las llaves {} cuando hay solo una instrucción. 15/05/05 Programación Digital I 14
  • 15. Ejemplo Pseudocódigo en Español Código en C bandera = cierto; #define true 1 contador = 1; char bandera=true; REPITA MIENTRAS (bandera = int contador=1; cierto) Escribir(contador) while (bandera) contador = contador + 1 { Si (contador = 10) printf(“%i”,contador); bandera = falso; contador++; Fin_si if (contador == 10) Fin_RM bandera = !bandera; } 15/05/05 Programación Digital I 15
  • 16. Ejemplo Pseudocódigo en Español Código en C seguir = verdadero char seguir = TRUE; respuesta = ‘s’ char respuesta = ‘s’; REPITA MIENTRAS (seguir=verdadero) while (seguir) Escribir (“¿Seguir repitiendo?”) { Leer (respuesta) printf(“¿Seguir Si respuesta = ‘n’ repitiendo?”); seguir = falso scanf(“%c”,&respuesta); Fin_Si if (respuesta == ‘n’) Fin_RM seguir = false; } seguir = verdadero char seguir = 1; REPITA MIENTRAS (seguir = verdadero) int contador = 0; contador = contador + 1 while(seguir) Fin_RM contador+=1; 15/05/05 Programación Digital I 16
  • 17. Ejemplo #include <stdio.h> Corrida en Frío Iteración i suma void main() { (0) 0 0 int i = 0,suma = 0; (1) 1 0 while(i<5) { (2) 2 1 suma += i; i++; (3) 3 3 printf(“%i”,suma); } (4) 4 6 } (5) 5 10 15/05/05 Programación Digital I 17
  • 18. Ejemplo #include <stdio.h> void main () Corrida en Frío { Iteración i int i = 1; (0) 1 while ( i < 3 ) { (1) 2 printf(”i es menor que 3n”); i++; (2) 3 } printf(”Se termino el lazon”); } 15/05/05 Programación Digital I 18
  • 19. Salidas abruptas del while Algunas veces es conveniente salir de forma abrupta de una estructura de repetición. Para esto se utiliza la sentencia break. Según break, el lazo de repetición más interno se cancelará. 15/05/05 Programación Digital I 19
  • 20. Ejemplo de break Int i, j; Observe que: i=0; ➢ Hay un par de while anidados j=0; ➢ El break esta dado por una while (i>-1) condición y se encuentra en el { while más interno. ➢ La condición que imperará en el j++; while (j<20) lazo interno será la del if. { printf(“Valor de j %i”,j); if (j>=15) break; // pueden haber mas instr. } } 15/05/05 Programación Digital I 20
  • 21. Regreso abrupto a la condición Dentro de un lazo de repetición, se pueden hacer regresos abrutos a la condición que gobierna al lazo. El constructo en C para tal proposito es el “continue”. 15/05/05 Programación Digital I 21
  • 22. Ejemplo del continue Supongamos que queremos procesar solamente los números enteros positivos de un conjunto introducido por teclado: i=0; while (i<10) { prinf(“Introduzca un número: “); scanf(“%i”,&n); if (n < 0) continue; else { i++; printf(“Procesable”); } }15/05/05 Programación Digital I 22
  • 23. Ejemplo Calcular la suma de n números introducidos por teclado. Análisis E-P-S Entradas: total de números (n ∈ Z), números (a1, a2, a3, …, an ∈ Z) Proceso: Calcular suma = a1 + a2 + a3 + … + an Salidas: suma ∈ Z 15/05/05 Programación Digital I 23
  • 24. Ejemplo Algortimo 0. Inicio 1. Escribir (“Introduzca el número de elementos a sumar”) 2. Leer (n) 3. suma = 0 4. contador = 0 5. Repita mientras (contador < n) contador = contador + 1 Escribir (“Introduzca un numero”) Leer (num) suma = suma + num fin_RM 6. Escribir (suma) 7. Fin 15/05/05 Programación Digital I 24
  • 25. Estructura de Repetición “Repita mientras”: Ejemplo 3 Codificación #include <stdio.h> void main () { int n, num, suma = 0, contador = 0; printf(“Introduzca el número de elementos a sumar”); scanf(“%i”,n); while (contador < n) { contador++; printf(“Introduzca un numero”); scanf(“%i”,&num); suma += num; } printf(“Suma = %in“, suma); } 15/05/05 Programación Digital I 25
  • 26. Ejemplo. EPS. Leer una serie de números reales y calcular su media. La marca de fin de lectura será el –999 Análisis E-P-S Entradas: num1, num2, num3, …, numn -999 Proceso: - Acumular la suma e incrementar contador de números mientras número leído sea diferente de -999 suma = num1 + num2 + num3 + … + numn contador = contador + 1 - Calcular media = suma / contador Salidas: media 15/05/05 Programación Digital I 26
  • 27. Ejemplo. Algoritmo. 0. Inicio 1. contador = 0 2. suma = 0 3. Escribir (“Introduzca el primer número”) 4. Leer (num) 5. Repita mientras (num != -999) contador = contador + 1 suma = suma + num Escribir (“Introduzca un número”) Leer (num) Fin_RM 6. Si (contador != 0) entonces media = suma/contador Escribir (“La media es =”, media) sino Escribir (“El usuario no introdujo numeros”) Fin_Si 7. Fin 15/05/05 Programación Digital I 27
  • 28. Ejemplo. Código. #include <stdio.h> if (contador != 0) void main() { { media = suma/contador; float contador = 0.0, printf(“La media es = %i”, suma = 0.0, media; media); printf(“Introduzca el primer } numero”; else scanf(“%i”,&num); printf(“El usuario no while (num != -999.0) introdujo numeros”); { } contador = contador + 1.0; suma = suma + num; printf(“Introduzca un número”; scanf(“%i”,&num); } 15/05/05 Programación Digital I 28
  • 29. Ejercicios Propuestos Para cada uno de los siguientes problemas realizar el análisis E- P-S, algoritmo y codificación. Hallar el resultado de la siguiente sucesión: S = 1 + 1/2 + 1/3 + 1/4 … + 1/n hasta que 1/N converja hacia e/100 (o sea igual o menor que un número e cualquiera dividido entre 100). Calcular la sumatoria de los 100 primeros números naturales. Calcular independientemente la suma de los números pares e impares comprendidos entre 1 y n. 15/05/05 Programación Digital I 29
  • 30. Ejercicios Propuestos Escribir todos los enteros positivos menores que 100 omitiendo aquellos divisibles por 7. Encuentre el número de puntos con coordenadas enteras que están dentro de la elipse 2x2 + 3y2 = 100 En Caracas se hizo una encuesta de los medios de transporte urbano mas comunes. A cada persona se le preguntó si el autobús, el metro o el carro era el medio mas usado para ir al trabajo. Se permitió mas de una respuesta. El resultado de la encuesta fue el siguiente: 15/05/05 Programación Digital I 30
  • 31. Ejercicios Propuestos n1 personas escogieron el autobús n2 personas escogieron el metro n3 personas escogieron el carro n4 personas escogieron el autobús y el metro n5 personas escogieron el autobús y el carro n6 personas escogieron el metro y el carro n7 personas escogieron los tres medios de transporte ¿ Cuántas personas respondieron la encuesta ? ¿ Cuántas personas escogieron sólo un medio de transporte ? ¿ Cuántas personas escogieron dos medios de transporte ? ¿ Cuántas personas escogieron los tres medios de transporte ? 15/05/05 Programación Digital I 31
  • 32. Ejercicios Propuestos Leer valores que representan años e indique si son o no años bisiestos. El programa seguirá leyendo años hasta un máximo de 10 o hasta que haya leido 3 años bisiestos. Recuerde, una vez más, la regla: "Un año es bisiesto si es divisible por 400, o bien si es divisible por 4 pero no por 100" Por ejemplo, el año 2000 es bisiesto (es divisible por 400), el año 1992 es bisiesto (es divisible por 4 y no por 100), y el año 2100 no es bisiesto (es divisible por 4 y también por 100). 15/05/05 Programación Digital I 32
  • 33. Ejercicios Propuestos Imprimir la tabla de multiplicar de un número dado. El funcionamiento del programa se muestra en el siguiente ejemplo de ejecución. Introduzca un número: 5 La tabla de multiplicar del 5 es: 5x1=5 5 x 2 =10 ... 5 x 10 =50 15/05/05 Programación Digital I 33