Estructuras de Repetición: Repita Mientras.

Documentos relacionados
ESTRUCTURAS REPETITIVAS

Estructuras de Repetición (Hacer-Mientras)

Unidad 2. La lógica de programación. Tema 4. Arreglos y estructuras de repetición

Estructuras de Repetición (Repita para)

Estructuras de Decisión Simples y Dobles

Tema 3. Estructuras de control

SESIÓN DE EJERCICIOS E1

Estructuras de Decisión Simples y Dobles

TEMA 5. ESTRUCTURAS DE CONTROL: BUCLES.

TEMA 4: Programación estructurada

Fundamentos de programación

Estructuras de Decisión Simples y Dobles. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Estructuras de Decisión Múltiple

Capítulo 13 INSTRUCCIONES DE CONTROL REPETITIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

TEMA 4. ESTRUCTURAS DE CONTROL

Operadores aritméticos

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Estructuras de control. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Programación Estructurada

Paso de Parámetros a una Función

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

SESIÓN DE EJERCICIOS E1

Lección 3 Sentencias de control

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

5. ESTRUCTURAS DE REPETICIÓN

Sentencias DO-WHILE EN C++

Capítulo 3. Sentencias condicionales

Autor: Ing. Nahuel González INTRODUCCIÓN A C. Clase 1

Expresiones Aritméticas

Sentencias iterativas

Objetivos de la práctica: - Trabajar las estructuras de control repetitivas en la realización de programas.

Operadores de comparación

Estructuras de Control Selección o Decisión

fundamentos de programación (unidad 4) programación estructurada en Java

Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -.andresmtzgwordpress.com

Repetición Condicional

TEMA 3. Sentencias de control.

Programación en Lenguaje C

Estructuras de Repetición

Operadores de comparación

Introducción a la Programación

Informática Ingeniería en Electrónica y Automática Industrial

Sentencias de control de flujo

Conocimientos previos

Programación: Estructuras de Control

Facultad de Ciencias de la Computación. Abraham Sánchez López Grupo MOVIS

Fundamentos de Informática 6. Estructuras de control (y sus algoritmos)

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Programación I Teoría I.

ESTRUCTURAS DE CONTROL

Programación. Test Autoevaluación Tema 4

Introducción general al Lenguaje C (2010/2011)

Expresiones Aritméticas

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

FACULTAD DE INGENIERIA

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Mientras (expresión lógica) Instrucciones a repetir mientras la expresión lógica es verdadera Fin Mientras

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Formatos para prácticas de laboratorio

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

Conceptos. Generales ALGORITMOS

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Formato para prácticas de laboratorio

ESTRUCTURAS DE REPETICIÓN AREA PROGRAMACIÓN 1

1.9. SENTENCIAS DE CONTROL DE PROGRAMA

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE REPETICIÓN

Capítulo 12 INSTRUCCIONES DE CONTROL ALTERNATIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

RECORDAR TIPOS DE DATOS

MÚLTIPLES Estructuras condicionales anidadas if(expresion1 o condición1){ Sentencias1 } else { if (expresion2){ Sentencias2

Unidad 3. Estructuras de control en diagrama de Flujo y pseudocódigo Tema Iteración o Repetitivas (mientras)

Lenguaje de programación C. Introducción

Sentencias de Procesamiento Iterativo: while y do-while

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

TEMA 5. PROGRAMACIÓN BÁSICA EN MATLAB /OCTAVE

Programación 1 Tema 5. Instrucciones simples y estructuradas

Fundamentos de Informática ETSID. Tema 4: Estructuras de Repetición (Bucles).

Codificación de Estructuras Repetitivas

Tipo de Dato: Arreglos

Examen de Fundamentos de la Programación (Modelo 1)

Transcripción:

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 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) 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 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. 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)? 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. 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 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; 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; Programación Digital I 9

Repita Mientras Diagrama de flujo Pseudocódigo en español Repita mientras (condición) S 1 S n Fin_RM Código en C while (condición) { S1 } S n 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. 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. Programación Digital I 12

Ejemplo Pseudocódigo en Español i=0; Código en C #define MAX 1000 REPITA MIENTRAS (i<max) i=i+1; Escribir (i) Fin_RM. int i=0; while (i < MAX) { } i++; printf( %i,i); NOTA: recuerde usar las llaves {} cuando haya más de una instrucción. Programación Digital I 13

Ejemplo Pseudocódigo en Español pot = 1 REPITA MIENTRAS (pot < 500) pot = pot * 2; Fin_RM Escribir( potencia =,pot) Código en C #define MAXPOT 500 int pot=1; while (pot < MAXPOT) pot *=2; printf( potencia: %i,pot); NOTA: recuerde que puede omitir las llaves {} cuando hay solo una instrucción. Programación Digital I 14

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

Ejemplo Pseudocódigo en Español seguir = verdadero respuesta = s REPITA MIENTRAS (seguir=verdadero) Escribir ( Seguir repitiendo? ) Leer (respuesta) Si respuesta = n seguir = falso Fin_Si Fin_RM seguir = verdadero REPITA MIENTRAS (seguir = verdadero) contador = contador + 1 Fin_RM Código en C char seguir = TRUE; char respuesta = s ; while (seguir) { printf( Seguir repitiendo? ); scanf( %c,&respuesta); if (respuesta == n ) seguir = false; } char seguir = 1; int contador = 0; while(seguir) contador+=1; Programación Digital I 16

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

Ejemplo #include <stdio.h> void main () { int i = 1; } while ( i < 3 ) { printf( i es menor que 3\n ); i++; } printf( Se termino el lazo\n ); Corrida en Frío Iteración i (0) 1 (1) 2 (2) 3 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á. Programación Digital I 19

Ejemplo de break Int i, j; i=0; j=0; while (i>-1) { j++; while (j<20) { printf( Valor de j %i,j); if (j>=15) break; // pueden haber mas instr. } } Observe que: Hay un par de while anidados El break esta dado por una condición y se encuentra en el while más interno. La condición que imperará en el lazo interno será la del if. 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. 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) else continue; { i++; printf( Procesable ); } 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 (a 1, a 2, a 3,, a n Z) Proceso: Calcular suma = a 1 + a 2 + a 3 + + a n Salidas: suma Z 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 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 = %i\n, suma); } 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: num 1, num 2, num 3,, num n -999 Proceso: - Acumular la suma e incrementar contador de números mientras número leído sea diferente de -999 suma = num 1 + num 2 + num 3 + + num n contador = contador + 1 - Calcular media = suma / contador Salidas: media 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 Programación Digital I 27

Ejemplo. Código. #include <stdio.h> void main() { float contador = 0.0, suma = 0.0, media; printf( Introduzca el primer numero ; scanf( %i,&num); while (num!= -999.0) { contador = contador + 1.0; suma = suma + num; printf( Introduzca un número ; scanf( %i,&num); } } if (contador!= 0) { media = suma/contador; printf( La media es = %i, media); } else printf( El usuario no introdujo numeros ); 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. 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 2x 2 + 3y 2 = 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: Programación Digital I 30

Ejercicios Propuestos n 1 personas escogieron el autobús n 2 personas escogieron el metro n 3 personas escogieron el carro n 4 personas escogieron el autobús y el metro n 5 personas escogieron el autobús y el carro n 6 personas escogieron el metro y el carro n 7 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? 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). 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: 5 x 1 = 5 5 x 2 =10... 5 x 10 =50 Programación Digital I 33