Tema 4: Estructuras de Control Estructura y Contenidos



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

Curso 0 de Informática

Estructuras de repetición

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Soporte lógico de computadoras

Informática I. While & do While

Estructuras de Repetición Repita Mientras

Tema: Arreglos de Objetos en C++.

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

8.1 Un primer bucle FOR Varias formas de utilizar el bucle FOR Calcular el factorial de un número mediante un bucle FOR...

Para dudas, comentarios escribe a: C BASICO

Fundamentos de programación

! Una variable declarada con final no puede volver a ser reinicializada. numero = 2;! ! Para definir constantes

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

Titulo: Suma de N primeros números

Capítulo 4 Procesos con estructuras de repetición

Tema: Sobrecarga de Operadores.

Hoja de problemas Estructuras de Control

Fundamentos de Programción (I)

CI 2125, Computación I

TEMA 4: Estructuras de Control

Fundamentos de Informática

Estructuras de Control en C

Estructuras de repetición hacer-mientras y repita hasta

Distinguir las diferentes estructuras de repetición utilizadas en problemas con ciclos: mientras, haga-mientras, repita-hasta, para.

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Estructuras de control

Oprime click para iniciar

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Lenguaje C Bucles, Condicionales, operadores y Algoritmos.

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011

Tema 2. Software. Informática (1º Ingeniería Civil)

AUTOR CARLOS EDUARDO BUENO VERGARA JORGE ARMANDO BUENO VERGARA USO DE LOS OBJETOS DEL PROGRAMA. Dfd INFORMÁTICA II PROFESOR. JOSÉ FRANCISCO AMADOR

CLASE # 5 TÉCNICAS DE CAJA BLANCA

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Estructuras de Control - Diagrama de Flujo

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Informática FACULTAD DE FÍSICAS

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Curso de Excel Avanzado

Preliminares. Tipos de variables y Expresiones

EJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO)

Ejemplos de conversión de reales a enteros

Problema - Votación. Entrada. Salida. Primera Olimpiada de Informática 1

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Capítulo 6. Introducción a la POO

PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS.

Tema 7: Programación con Matlab

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

ETS Caminos Santander. Curso Ejercicios de introducción a la programación.

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Tema 3. Estructuras de control

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Programación. Ejercicios Tema 5. Funciones

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

Ejercicios Tema 3. Estructuras de Selección

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

LINUX - Los archivos de órdenes I

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

ESTRUCTURA DE DATOS: ARREGLOS

PHP y MySQL. Indice: Switch Bucles For While do...while

Prof. Dr. Paul Bustamante

Tema 2 Límites de Funciones

Introducción al tipo de dato ARRAY

Asignatura. Taller de Computación I

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

MANUAL DE REFERENCIA DE C++

Examen escrito de Programación 1

UNIDAD I NÚMEROS REALES

Estructuras de Control - Diagrama de Flujo

3.2 Operaciones aritmético-lógicas en Pascal

NÚMEROS NATURALES Y NÚMEROS ENTEROS

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

col Type mismatch cadena vacía fila 1 z + i 4 1 fila 2

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

2. Estructura de un programa en Java

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Tema 4: Estructura y Contenidos

Unidad III El lenguaje de programación C

Prof. Dr. Paul Bustamante

Introducción a las sentencias de control

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Divisibilidad y números primos

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Construcción de Escenarios

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Vectores. 27/05/05 Programación Digital I 1

Transcripción:

Tema 4: Estructuras de Control Estructura y Contenidos 4.1. ESTRUCTURA SECUENCIAL. 4.2. ESTRUCTURAS DE SELECCIÓN. 4.2.1. Selección simple ( if ). 4.2.2. Selección binaria ( if... ). 4.2.3. Selección múltiple ( switch ). 4.2.4. Anidamientos. 4.3. ESTRUCTURAS DE REPETICIÓN O ITERATIVAS. BUCLES. 4.3.1. Estructuras no deterministas ( while, do...while ). 4.3.2. Estructuras deterministas ( for ). 4.3.3. Las sentencias break y continue. 4.3.4. Diseño de bucles: anidamientos y bucles infinitos. Fundamentos de Informática ETSI Industrial 1 Universidad de Málaga José Antonio Gómez Ruiz Tema 4: Estructuras de Control OBJETIVOS Establecer la necesidad de las estructuras de control Diferenciar las estructuras de selección de las iterativas Estructuras de selección e iterativas en C / C++ Diseño de bucles: anidamientos y bucles infinitos Todo problema que se pueda resolver en un numero finito de pasos puede expresarse con el uso de estructuras secuenciales, selectivas e iterativas Fundamentos de Informática ETSI Industrial 2 Universidad de Málaga José Antonio Gómez Ruiz

Tema 4: Estructuras de Control Estructura y Contenidos 4.1. ESTRUCTURA SECUENCIAL. 4.2. Estructuras de selección. 4.2.1. Selección simple ( if ). 4.2.2. Selección binaria ( if... ). 4.2.3. Selección múltiple ( switch ). 4.2.4. Anidamientos. 4.3. Estructuras de repetición o iterativas. Bucles. 4.3.1. Estructuras no deterministas ( while, do...while ). 4.3.2. Estructuras deterministas ( for ). 4.3.3. Las sentencias break y continue. 4.3.4. Diseño de bucles: anidamientos y bucles infinitos. Fundamentos de Informática ETSI Industrial 3 Universidad de Málaga José Antonio Gómez Ruiz ESTRUCTURA SECUENCIAL Estructura Secuencial: aquella en la que las instrucciones o sentencias son ejecutadas una a continuación de la otra en un determinado orden Se puede alterar esa secuencialidad usando estructuras o sentencias de control. Estas estructuras permiten variar el flujo de control del programa dependiendo de ciertas condiciones Estructuras de Selección: Permiten que se tomen rutas alternativas de acción dependiendo del resultado de una condición Estructuras de Iteración: (de repetición o bucle): Permiten repetir un conjunto de sentencias un número determinado de veces Fundamentos de Informática ETSI Industrial 4 Universidad de Málaga José Antonio Gómez Ruiz

ESTRUCTURA SECUENCIAL Inicio Inicio Sentencia V? F Selección Sentencia Sentencias Sentencias Sentencia Fin Estructura Secuencial Sentencias? V F Fin Iteración Estructura no Secuencial Fundamentos de Informática ETSI Industrial 5 Universidad de Málaga José Antonio Gómez Ruiz Tema 4: Estructuras de Control Estructura y Contenidos 4.1. Estructura secuencial. 4.2. ESTRUCTURAS DE SELECCIÓN. 4.2.1. Selección simple ( if ). 4.2.2. Selección binaria ( if... ). 4.2.3. Selección múltiple ( switch ). 4.2.4. Anidamientos. 4.3. Estructuras de repetición o iterativas. Bucles. 4.3.1. Estructuras no deterministas ( while, do...while ). 4.3.2. Estructuras deterministas ( for ). 4.3.3. Las sentencias break y continue. 4.3.4. Diseño de bucles: anidamientos y bucles infinitos. Fundamentos de Informática ETSI Industrial 6 Universidad de Málaga José Antonio Gómez Ruiz

ESTRUCTURAS DE SELECCIÓN Controlan la selección de flujos alternativos en un algoritmo Permiten seleccionar una sentencia o grupo de sentencias en función de una condición que, normalmente, es una expresión lógica (véase tema 3) Tipos de sentencias de selección: Selección Simple Selección Binaria Selección Múltiple if if... switch Fundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz SELECCIÓN SIMPLE NO condición SI sentencias_si sentencias_fuera if (<condición>) <sentencias_si> <sentencias_fuera> <condición> es una expresión que puede ser verdadera o falsa Atención, cualquier valor distinto de cero se interpretará como verdadero y el valor cero como falso Por tanto <condición> puede ser cualquier expresión <condición> tiene que ir SIEMPRE entre paréntesis Si hay una única <sentencia_si> se pueden omitir las llaves Fundamentos de Informática ETSI Industrial 8 Universidad de Málaga José Antonio Gómez Ruiz

SELECCIÓN BINARIA NO SI condición sentencias_no sentencias_si sentencias_fuera if (<condición>) <sentencias_si> <sentencias_no> <sentencias_fuera> Las mismas consideraciones que para la selección simple Fundamentos de Informática ETSI Industrial 9 Universidad de Málaga José Antonio Gómez Ruiz SELECCIÓN SIMPLE Y BINARIA /* Determina el número más grande entre tres */ #include <iostream> using namespace std; int main() int n1, n2, n3, mayor; cout << Primer valor: cin >> n1; cout << Segundo valor: ; cin >> n2; cout << Tercer valor: ; cin >> n3; if (n1 > n2) /* Calcular el mayor de n1 y n2 */ mayor = n1; mayor = n2; if (n3 > mayor) /* Ver si n3 es el mayor */ mayor = n3; cout << El valor mayor es << mayor; return 0; Fundamentos de Informática ETSI Industrial 10 Universidad de Málaga José Antonio Gómez Ruiz

SELECCIÓN MÚTIPLE switch ( <selector> ) case <valor_1>:<sentencias_1> break; case <valor_2>:<sentencias_2> break; case <valor_3>:<sentencias_3> break; default: <Sentencias_df> Cómo funciona la sentencia switch? 1. Se evalúa el selector 2. Comparación del selector con los <valores_i> 3. Ejecución de las <sentencias_i> correspondientes 4. Cada caso termina con un break, o se continua con <sentencias_i+1> <selector> tiene que ir SIEMPRE entre paréntesis <selector> tiene que ser de tipo ordinal Si el selector no coincide con ningún <valor_i> se ejecutan las <sentencias_df> default no es obligatorio Fundamentos de Informática ETSI Industrial 11 Universidad de Málaga José Antonio Gómez Ruiz SELECCIÓN MÚTIPLE /* Ejemplo de un menú muy simple */ #include <iostream> using namespace std; int main() int opcion; cout << 1.España\n 2.Francia\n 3.Italia\n ; cout << 4.Inglaterra << endl; cout << Selecciona una opción: ; cin >> opcion; switch (opcion) case 1: cout << Hola\n ; break; case 2: cout << Allo\n ; break; case 3: cout << Pronto\n ; break; case 4: cout << Hello\n ; break; return 0; Fundamentos de Informática ETSI Industrial 12 Universidad de Málaga José Antonio Gómez Ruiz

SELECCIÓN MÚTIPLE /* Ejemplo de cómo englobar varios casos */ #include <iostream> using namespace std; int main() char letra; cout << Introduce una letra: ; cin >> letra; switch (letra) /* Aquí el selector es una variable */ case a : /* de tipo carácter*/ case e : case i : case o : case u : cout << Es una vocal minúscula\n ; break; case A : case E : case I : case O : case U : cout << Es una vocal mayúscula\n ; break; default: cout << No es vocal\n ; return 0; Fundamentos de Informática ETSI Industrial 13 Universidad de Málaga José Antonio Gómez Ruiz ANIDAMIENTOS Una sentencia de selección puede contener otra en cualquier rama /*trozo de código con anidamientos */ if (n1>n2) /*Estas llaves se pueden omitir*/ if (n1>n3) cout << El maximo es << n1; cout << El maximo es << n3; if (n2>n3) cout << El maximo es << n2; cout << El maximo es << n3; Fundamentos de Informática ETSI Industrial 14 Universidad de Málaga José Antonio Gómez Ruiz

ANIDAMIENTOS Selección Múltiple cond_1 NO cond_2 SI SI acción_1 acción_2 NO cond_3 NO SI acción_3 M M Fundamentos de Informática ETSI Industrial 15 Universidad de Málaga José Antonio Gómez Ruiz ANIDAMIENTOS /*caso binario especial*/ if (cond_1) acción_1; if (cond_2) acción_2; if (cond_3) acción_3;... Importante la indentación! /* sintaxis abreviada */ if (cond_1) acción_1; if (cond_2) acción_2; if (cond_3) acción_3;... if (nota<5) cout << Suspenso ; if (nota<7) cout << Aprobado ; if (nota<9) cout << Notable ; cout << Sobresaliente ; Fundamentos de Informática ETSI Industrial 16 Universidad de Málaga José Antonio Gómez Ruiz

ANIDAMIENTOS switch (operador) case + : resultado = a+b; break; case - : resultado = a-b; break; case * : resultado = a*b; break; case / : resultado = a/b; break; default: cout << \nindefinido ; Es más legible que... if (operador == + ) resultado = a+b; if (operador == - ) resultado = a-b; if (operador == * ) resultado = a*b; if (operador == / ) resultado = a/b; cout << \nindefinido ; Fundamentos de Informática ETSI Industrial 17 Universidad de Málaga José Antonio Gómez Ruiz ESTRUCTURAS DE SELECCIÓN Desarrolla un programa que lea los coeficientes de una ecuación de segundo grado y calcule e imprima sus soluciones. Deben contemplarse todos los posibles casos que se puedan dar. Diseña primero el algoritmo mediante diagramas de flujo Desarrolla un programa que lea tres números naturales, correspondientes al día, mes y año de una fecha, e indique si es una fecha válida del siglo XX Desarrolla un programa que lea cinco letras que corresponden a una hora en formato 24h (hh:mm) e imprima la hora en formato 12h acompañada de AM o PM según proceda ( p.e. 09:35 -> 09:35 AM ; 18:15 -> 06:35 PM) Fundamentos de Informática ETSI Industrial 18 Universidad de Málaga José Antonio Gómez Ruiz

Tema 4: Estructuras de Control Estructura y Contenidos 4.1. Estructura secuencial. 4.2. Estructuras de selección. 4.2.1. Selección simple ( if ). 4.2.2. Selección binaria ( if... ). 4.2.3. Selección múltiple ( switch ). 4.2.4. Anidamientos. 4.3. ESTRUCTURAS DE REPETICIÓN O ITERATIVAS. BUCLES. 4.3.1. Estructuras no deterministas ( while, do...while ). 4.3.2. Estructuras deterministas ( for ). 4.3.3. Las sentencias break y continue. 4.3.4. Diseño de bucles: anidamientos y bucles infinitos. Fundamentos de Informática ETSI Industrial 19 Universidad de Málaga José Antonio Gómez Ruiz ESTRUCTURAS DE REPETICIÓN También llamadas estructuras de iteración o bucles Permiten repetir una sentencia o grupo de sentencias un número o determinado o indeterminado de veces a priori: bucles deterministas y bucles no deterministas (post-condición y pre-condición) Una condición de control (expresión lógica) permite controlar el número de repeticiones Cuerpo de bucle + condición de control Sentencias a repetir Controla el número de repeticiones Fundamentos de Informática ETSI Industrial 20 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES NO DETERMINISTAS Bucle post-condición: do...while la condición de terminación se evalúa después de cada iteración sentencias condición SI NO sentencias_fuera do <sentencias> while(<condición>); <sentencias_fuera> <condición> tiene que ir SIEMPRE entre paréntesis <sentencias> se ejecuta 1 ó más veces Fundamentos de Informática ETSI Industrial 21 Universidad de Málaga José Antonio Gómez Ruiz BUCLES NO DETERMINISTAS Bucle post-condición: do...while cout << Hola\n ; contador = 1; do cout << - ; contador++; while(contador <= 4); 4 contador Hola ---- Fundamentos de Informática ETSI Industrial 22 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES NO DETERMINISTAS Ejemplo: cálculo aproximado de e x e x = 1 + x + 2 3 x x + 2! 3!... cin >> x; cont=0; serie=0.0; fact=1.0; pot=1.0; do serie = serie + pot / fact; cont++; fact = fact * (float)cont; pot = pot * x; while(pot/fact > 0.000001 ); + Hasta aportación de cada término menor que 0.000001 No se sabe de antemano las veces que se itera el bucle Vamos a mostrar la ejecución de tres iteraciones Fundamentos de Informática ETSI Industrial 23 Universidad de Málaga José Antonio Gómez Ruiz BUCLES NO DETERMINISTAS Ejemplo: validación de entradas por teclado do cout << Número de mes: ; cin >> mes; while (!( mes>=1 && mes<=12 )); do cout << Día del mes: ; cin >> dia; while (!( dia>=1 && dia<=31 )); Validar número de mes Validar día de mes Fundamentos de Informática ETSI Industrial 24 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES NO DETERMINISTAS /* Calcula el número positivo más grande de una lista. La entrada se realiza mientras los números sean mayores que cero */ #include <iostream> using namespace std; int main() int num, max=0; do cout << Introduce un número: ; cin >> num; if( num > max ) max = num; while( num > 0 ); if( max!=0 ) cout << El número más grande es << max; cout << No se han introducido números ; return 0; Fundamentos de Informática ETSI Industrial 25 Universidad de Málaga José Antonio Gómez Ruiz BUCLES NO DETERMINISTAS Bucle pre-condición: while la condición de terminación se evalúa antes de cada iteración condición SI sentencias NO sentencias_fuera SI cuidado con poner involuntariamente un ; while(<condición>) <sentencias> <sentencias_fuera> <condición> tiene que ir SIEMPRE entre paréntesis <sentencias> se ejecuta 0 ó más veces Fundamentos de Informática ETSI Industrial 26 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES NO DETERMINISTAS Bucle pre-condición: while Algunos ejemplos muy utilizados son: Bucle controlado por contador Bucle controlado por centinela Bucle contador Fundamentos de Informática ETSI Industrial 27 Universidad de Málaga José Antonio Gómez Ruiz BUCLES NO DETERMINISTAS Bucle controlado por contador Se ejecuta un numero determinado de veces Se utiliza una variable de control del bucle (vcb) Componentes Inicialización Comprobación de la condición Actualización i=0; /*Inicialización*/ while(i<=10) /*comprobación*/ <sentencias> i++; /*actualización*/ En este tipo de bucles usaremos la sentencia for Fundamentos de Informática ETSI Industrial 28 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES NO DETERMINISTAS Bucle controlado por centinela centinela valor especial de una variable que controla el final del bucle Es necesario actualizar el centinela en cada iteración La primera evaluación de la condición exige una actualización adelantada de la variable de control del bucle cin >> centinela; /*actualización adelantada*/ while(centinela!=0) <sentencias> cin >> centinela; /*actualización*/ Fundamentos de Informática ETSI Industrial 29 Universidad de Málaga José Antonio Gómez Ruiz BUCLES NO DETERMINISTAS Bucle contador Útil cuando se quiere contar el número de veces que se ejecuta el bucle La condición de terminación no depende del contador /*hace eco por pantalla de la entrada y cuenta los caracteres hasta encontrarse un punto*/ contador=0; cin >> ch; while(ch!=. ) cout << ch; contador++; cin >> ch; cout << Caracteres leidos << contador; Fundamentos de Informática ETSI Industrial 30 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES NO DETERMINISTAS /*Ejemplo de bucle contador: calculo de la media de una lista de números hasta introducir el cero */ #include <iostream> using namespace std; int main() int i=0; float x, suma=0.0; cout << Introduce un número: ; cin >> x; while ( x!= 0 ) suma = suma + x; i++; cout << Introduce un número: ; cin >> x; if ( i!= 0 ) cout << La media es << suma/(float)i; cout << No se han introducido números\n ; return 0; Fundamentos de Informática ETSI Industrial 31 Universidad de Málaga José Antonio Gómez Ruiz BUCLES DETERMINISTAS El bucle for Es muy versátil en el lenguaje de programación C for (<inicialización>;<condición>;<actualización>) <sentencias> inicialización NO condición SI expresiones En C la asignación se considera un operador, y, por tanto, las asignaciones son expresiones. sentencias actualización Fundamentos de Informática ETSI Industrial 32 Universidad de Málaga José Antonio Gómez Ruiz

El bucle for BUCLES DETERMINISTAS Lo usaremos cuando el número de veces que se repite el bucle se puede determinar a priori Tendremos siempre una variable de control del bucle (vcb) En el cuerpo del bucle, vcb puede usarse, NUNCA cambiarse for(i=1;i<10;i++) /* i empieza tomando el valor 1, cada vez que el bucle da una iteración se incrementa en 1. El bucle terminará cuando i sea igual a 10, es decir, el último valor que i tomará dentro del bucle será 9 */ for(i=2;i<=128;i*=2) /* i empieza tomando el valor 2; cada vez que el bucle da una iteración i se multiplica por 2. Esto continua mientras i sea menor o igual que 128. Los valores de i dentro del bucle serán 2,4,8,16,32,64 y 128 */ for(j=10;j>0;j--) /* j empieza tomando el valor 10, cada vez que el bucle da una iteración se decrementa en 1. El bucle terminará cuando j sea igual a 0, es decir, el último valor que i tomará dentro del bucle será 1 */ Fundamentos de Informática ETSI Industrial 33 Universidad de Málaga José Antonio Gómez Ruiz BUCLES DETERMINISTAS El bucle for : ejemplo Fundamentos de Informática ETSI Industrial 34 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES DETERMINISTAS El bucle for : ejemplo /* Tabla de multiplicar */ #include <iostream> using namespace std; int main() int i, num; cout << Introduce un número : ; cin >> num; for(i=1; i<=10; i++) cout << num << x << i << = << num*i; cout << endl; return 0; Introduce numero: 5 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10 = 50 Fundamentos de Informática ETSI Industrial 35 Universidad de Málaga José Antonio Gómez Ruiz BUCLES DETERMINISTAS El bucle for : ejemplo /* Factorial de un número */ #include <iostream> Introduce numero: 6 using namespace std; El factorial es 720 int main() int factorial, i, num; cout << Introduce un numero : ; cin >> num; factorial=1; for(i=1; i<=num; i++) factorial*= i; cout << \nel factorial es << factorial; return 0; Fundamentos de Informática ETSI Industrial 36 Universidad de Málaga José Antonio Gómez Ruiz

BREAK y CONTINUE La sentencia break se utiliza para forzar la salida de un bucle independientemente de que se cumpla o no la condición de terminación. La sentencia continue termina la iteración en curso y vuelve a evaluar de nuevo la condición de terminación del bucle. En programación estructurada, no es recomendable el uso de este tipo de sentencias y por lo tanto NO LAS USAREMOS "Se demuestra que todo problema que pueda resolverse en un numero finito de pasos puede expresarse usando únicamente 3 tipos de estructuras o bloques fundamentales, con una sola entrada y una sola salida para organizar dichos pasos: Un proceso secuencial. Un mecanismo de decisión binaria. Un mecanismo de bucle generalizado. (Bohm y Jacopini, 1965) Fundamentos de Informática ETSI Industrial 37 Universidad de Málaga José Antonio Gómez Ruiz ANIDAMIENTOS DE BUCLES Al igual que en las estructuras selectivas, no hay restricciones en las sentencias del cuerpo del bucle La estructura interna debe de estar totalmente incluida en la externa Bucle anidado Bucle más externo Bucle anidado Fundamentos de Informática ETSI Industrial 38 Universidad de Málaga José Antonio Gómez Ruiz

ANIDAMIENTOS DE BUCLES /*Escribe un rectángulo de asteriscos*/ #include <iostream> using namespace std; int main() bucle exterior int i, j; for(i=1;i<=3;i++) bucle interior for(j=1;j<=8;j++) cout << * ; cout << \n ; return 0; ******** ******** ******** Fundamentos de Informática ETSI Industrial 39 Universidad de Málaga José Antonio Gómez Ruiz ANIDAMIENTOS DE BUCLES /*Escribe un rectángulo de asteriscos*/ #include <iostream> using namespace std; int main() int i, j; for(i=1;i<=3;i++) for(j=1;j<= i ;j++) cout << * ; cout << \n ; return 0; bucle exterior bucle interior * ** *** Fundamentos de Informática ETSI Industrial 40 Universidad de Málaga José Antonio Gómez Ruiz

ANIDAMIENTOS DE BUCLES Basándote en el código anterior, modifica el programa para que obtenga los ejemplos adjuntos. La altura del triángulo se pide por teclado. Introduce altura: 3 1 12 123 Introduce altura: 4 1 121 12321 1234321 Fundamentos de Informática ETSI Industrial 41 Universidad de Málaga José Antonio Gómez Ruiz ANIDAMIENTOS DE BUCLES /* Encuentra el primer número perfecto mayor que 28. Un número es perfecto si coincide con la suma de sus divisores, sin contarse el mismo. Ej: 6 = 1+2+3 */ #include <iostream> using namespace std; int main() int encontrado = 0, intento, cont, suma; intento = 29; /* empiezo con el siguiente de 28 */ while(!encontrado) suma=1; /* el 1 es divisor de todos los numeros */ for (cont=2; cont<intento; cont++ ) if ((intento%cont)==0) /* si cont es divisor */ suma+=cont; /* lo sumo */ if (suma == intento ) encontrado = 1; /* si coincide lo hemos encontrado */ intento++; /* sino, probamos con el siguiente */ cout << Número perfecto mayor que 28 = << intento; return 0; Fundamentos de Informática ETSI Industrial 42 Universidad de Málaga José Antonio Gómez Ruiz

BUCLES INFINITOS Un bucle infinito es un bucle que nunca acaba Normalmente se produce cuando un bucle no alcanza la condición de finalización N++; suma = 0; N = 0; while (N <= 100) suma = suma + N; cout << suma; suma = 0; N = 0; while (N <= 100); suma = suma + N; N++; cout << suma; Mucho cuidado con los puntos y coma tras las condiciones Por tanto, al diseñar un bucle, hay que comprobar siempre que las condiciones de finalización serán alcanzadas Fundamentos de Informática ETSI Industrial 43 Universidad de Málaga José Antonio Gómez Ruiz EJERCICIOS Desarrolla un programa que lea una secuencia de números naturales terminada en cero e indique la posición de la primera y última ocurrencia del número doce. Desarrolla un programa que, dado un número natural leído por teclado, indique si es o no número primo. El programa preguntará si se quiere repetir de nuevo el proceso. Desarrolla un programa que, dada una secuencia de ceros y unos terminada en un punto, muestre por pantalla el tamaño de todas las subcadenas de unos e indique cual es la mayor. Fundamentos de Informática ETSI Industrial 44 Universidad de Málaga José Antonio Gómez Ruiz

Tema 4: Estructuras de Control FIN DEL TEMA Fundamentos de Informática ETSI Industrial 45 Universidad de Málaga José Antonio Gómez Ruiz