Capítulo 4. Estructuras Iterativas

Documentos relacionados
Fundamentos de programación

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

Sentencias de Procesamiento Iterativo: while y do-while

SESIÓN DE EJERCICIOS E1

Programación en Lenguaje C

ESTRUCTURAS DE CONTROL

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

TEMA 4: Programación estructurada

Tema: Estructuras de Repetición en C# [While y Dowhile].

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 Estructurada

Formatos para prácticas de laboratorio

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Programación: Estructuras de Control

Tema: Estructuras de Selección en C#.

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

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Estructuras de Repetición (Repita para)

Versatilidad de la estructura de repetición for

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Programación. Test Autoevaluación Tema 4

Estructuras de Repetición (Hacer-Mientras)

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

Cuales son los tipos de instrucciones que se utilizan en la programación?

Universidad Autónoma del Estado de México Facultad de Medicina

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

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

Guía práctica de estudio 06: Estructuras de repetición

Lenguaje de programación C. Introducción

OPERADORES Y EXPRESIONES

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

Estructuras de control

El lenguaje C. 3. Una instrucción que se ejecutará si la condición es verdadera.

TEMA 4: ALGORITMOS Y PROGRAMAS

Estructuras Repetitivas

ESTRUCTURAS REPETITIVAS EN PHP

Formato para prácticas de laboratorio

Programación Estructurada

Cuáles son los lenguajes que pueden utilizarse para programar Karel?

Estructuras de Control 3

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Lenguajes de programación

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Operadores de comparación

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Informática I. While & do While

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Bloque II. Elementos del lenguaje de programación Java

Conocer los tipos de esquemas condicionales. Entender su funcionamiento y sus diferencias. 1. Introducción. 3. Esquemas condicionales en C

Tema 3. Estructuras de Datos

RECORDAR TIPOS DE DATOS

Introducción a las sentencias de control

Hoja de problemas Estructuras de Control

Lenguaje de Programación: C++ Estructuras de control:switch

Funciones básicas del depurador

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

4.- Leer tres números y escribirlos en orden decreciente

PASO DE PARÁMETROS O ARGUMENTOS EN C. POR DEFECTO, POR VALOR O POR REFERENCIA. SIZEOF MEMORIA (CU00550F)

Introducción al lenguaje C

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

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

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Tema: Entorno a C# y Estructuras Secuenciales.

El lenguaje C. 1. Identificadores, constantes y variables

Estructuras de Decisión Simples y Dobles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

6. Sentencias repetitivas o bucles

5. Sentencias selectivas o condicionales

Ejercicios Tema 6. Funciones

Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn

Introducción a la Informática Estructuras de control repetitivas

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Objetivos. Conceptos 1. ESTRUCTURAS DE CONTROL SELECTIVAS. Estructura condicional if-else

Modularización en lenguaje C. Funciones

ESTRUCTURAS REPETITIVAS

Taller de Resolución de Problemas Computacionales

Programación En Lenguaje C

Actividad colaborativa Ejercicios de programación Programación básica C++

Una Introducción a la Programación Estructurada en C

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Programación Estructurada. Sesión 4:Estructuras de control

Estatutos de Control C# Estatutos de Decisión (Selección)

Descripción de un Programa

TEMA 1: Algoritmos y programas

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

Funciones Tipos de funciones y Recursividad

Tema 3. Patrones y Definiciones de Funciones

Transcripción:

Capítulo 4.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 95 Índice del capítulo 1. Introducción........................................ 97 2. Objetivos........................................... 98 3. La estructura de control for............................. 99 4. La estructura de control while........................... 103 5. La estructura de control do while........................ 105 6. Estructuras de control iterativas anidadas.................. 107 7. Otras estructuras de control: break y continue.............. 109 7.1. break........................................... 109 7.2. continue........................................ 110 8. Bibliografía.......................................... 111 9. Ejercicios propuestos.................................. 112

Universidad del País Vasco / Euskal Herriko Unibertsitatea 97 1. Introducción Después de ver en la sección anterior las estructuras condicionales if y switch, a continuación examinaremos otros tipos de estructuras. Mediante las estructuras condicionales somos capaces de elegir las e x p resiones. Pero esto no suele ser suficiente. En ocasiones se debe repetir la ejecución de algunas expresiones mientras una de las condiciones siga siendo verdadera. En esta sección apre n d e remos cómo se lleva a cabo la ejecución iterativa de las expresiones en función del valor de las condiciones de control. El lenguaje C ofrece fundamentalmente las siguientes estructuras de control iterativas: las sentencias f o r, while y do while.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 98 2. Objetivos El objetivo de este capítulo es estudiar el uso de las sentencias de control iterativas. Como consecuencia d e b e remos ser capaces de escribir nuestros primeros programas utilizando este tipo de sentencias. En concreto estas son las sentencias que debemos aprender a utilizar: Sentencia for Sentencia while Sentencia do while Sentencias iterativas anidadas

Universidad del País Vasco / Euskal Herriko Unibertsitatea 99 3. La estructura de control for A menudo conocemos de antemano cuántas veces se deben repetir durante la ejecución de un pro g r a m a algunas expresiones, o si deben repetirse mientras el valor de una expresión cumpla una determ i n a d a condición. En este caso se utiliza la e s t ructura de control for. En esta compleja estructura iterativa se encuentran los siguientes elementos: Expresión inicial Expresión condicional Expresión bucle Expresiones que vamos a ejecutar y la sintaxis correspondiente a esta expresión de control for es la siguiente: for (expresión inicial; expresión condiciona;, expresión bucle) expresión(es); Cuando vamos a ejecutar solamente una expresión las llaves no son imprescindibles. De todas formas se recomienda utilizarlas siempre para evitar errores difícilmente corregibles. El funcionamiento de esta expresión de control es la siguiente: 1. Valorar la expresión inicial (iniciación). 2. Valorar la expresión condicional. De resultar falsa, pasar a la sentencia siguiente del pro g r a m a (salir del bucle). 3. Si la expresión condicional es verdadera se llevan a cabo las expresiones del cuerpo de la expresión. 4. Evaluar la expresión bucle (actualizar) y volver al punto 2. En la figura 1 se presenta un diagrama donde se muestra de forma gráfica el funcionamiento de esta estructura de control.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 100 Valorar expresión inicial N O Expr. cond.? Expresión bucle actualizar S I Expresiones Figura 1: Funcionamiento de la estructura de control for. 1. Ejemplo En este ejemplo se muestra el funcionamiento de un bucle f o r simple. El objetivo de esta estructura de control es visualizar 10 veces un mensaje. Expresión inicial Expresión condicional Expresión bucle for (cont = 1; cont <= 10; cont++) printf ( %d Buena suerte con la estructura for! \n, cont); En este bucle for se utiliza la variable cont para contar cuántas veces hemos visualizado el mensaje. Toma el valor inicial 1 y después de confirmar la condición incrementa su valor. Mientras la condición sea verdadera se visualizará el mensaje que la función printf define. Por lo tanto en la pantalla veríamos lo siguiente: 1 Buena suerte con la estructura for! 2 Buena suerte con la estructura for! 3 Buena suerte con la estructura for! 4 Buena suerte con la estructura for! 5 Buena suerte con la estructura for! 6 Buena suerte con la estructura for! 7 Buena suerte con la estructura for! 8 Buena suerte con la estructura for! 9 Buena suerte con la estructura for! 10 Buena suerte con la estructura for!

Universidad del País Vasco / Euskal Herriko Unibertsitatea 101 2. Ejemplo Escribir un programa que imprime un número y el cuadrado que le corresponde para todos los números comprendidos entre uno y un límite predefinido. #include <stdio> #define LIMITE 10 main () int n = 0; printf ( Num Num elevado a 2 \n ); for (n = 1; n <= LIMITE; n++) printf ( %5d %5d\n, n, n * n); El resultado que ofrece este programa es el siguiente: Num Num elevado a 2 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 En los ejemplos que vienen a continuación se muestran diferentes usos de la estructura de control f o r. a) Estructura de control for utilizando el operador decrementar for (num = 10; num > 0; num ) printf ( %2d segundos\n, num); 10 segundos 9 segundos 8 segundos 7 segundos 6 segundos 5 segundos 4 segundos 3 segundos 2 segundos 1 segundos

Universidad del País Vasco / Euskal Herriko Unibertsitatea 102 b) Utilizando la estructura de control for para contar del modo que deseemos: for (num = 10; num < 60; num += 10) printf ( %d \n, num); 10 20 30 40 50 c) Utilizando la estructura de control for para contar caracteres: for (carac = a ; carac <= z ; carac++) printf ( el código ASCII correspondiente al carácter %c es el: %d \n, carac, carac); el código ASCII correspondiente al caracter a es el: 97 el código ASCII correspondiente al caracter b es el: 98 el código ASCII correspondiente al caracter c es el: 99.... el código ASCII correspondiente al caracter z es el: 122 d) Para evaluar la expresión bucle podemos utilizar la expresión que deseemos: for (x = 1; x <= 85; x = (5 + x) * 2) printf ( %d \n, x); e) Utilizando más de una expresión inicial y de control del bucle D e n t ro de la estructura de control f o r nos es posible utilizar más de una expresión inicial y también más de una expresión bucle. En este ejemplo se muestra mediante una tabla el valor c o rrespondiente al peso de cada producto. El peso inicial son 5 gramos y el valor 20. Luego a causa del aumento de 5 gramos el precio aumenta en 12. #include <stdio.h> #define UNO 20 #define OTRO 12 main () int gramos, valor; printf ( Gramos Valor \n ); for (gramos = 5, valor = UNO; gramos <= 60; gramos += 5, valor += OTRO) printf ( %5d %7d \n, gramos, valor); Gramos Valor 5 20 10 32 15 44 20 56 25 68 30 80 35 92 40 104 45 116 50 128 55 140 60 152

Universidad del País Vasco / Euskal Herriko Unibertsitatea 103 4. Estructura de control while Podemos decir que se trata de una de las estructuras iterativas más generales. Mientras la condición escrita dentro de la estructura de control sea cierta se ejecutan las expresiones definidas dentro del cuerpo del bucle. Está formada por los siguientes elementos: Expresión condicional Expresiones y su formato es el siguiente: while (expresión condicional) expresiones; Valorar expresión inicial N O Condición? S I Expresiones Figura 2: Funcionamiento de la estructura de control while. Esta estructura de control funciona de la siguiente manera: 1. Se evalúa la expresión condicional. De ser cierta se ejecutan las expresiones de la estructura y nuevamente pasamos a evaluar la expresión condicional.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 104 2. De ser falsa la expresión condicional se termina la ejecución del bucle y se pasa a las siguientes instrucciones del programa. Ejemplo: num = 1; while (num <= 10) printf ( suerte con el bucle while \n ); num++; suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while suerte con el bucle while Comparándola con la estructura de control f o r para salir del bucle w h i l e la expresión condicional se debe cambiar dentro del bucle. De otro modo entraríamos en un bucle infinito como podemos ver en el siguiente ejemplo: num = 1; while (num <= 100) printf ( suerte con el bucle while \n );

Universidad del País Vasco / Euskal Herriko Unibertsitatea 105 5. La estructura de control do while Tal y como hemos podido ver en la estructura while las expresiones del cuerpo tan solo se ejecutan si la e x p resión condicional es cierta. Como veremos ahora utilizando la estructura do while, las expresiones del cuerpo se ejecutarán por lo menos una vez, porque la expresión condicional se haya en la salida del bucle. Los elementos que la forman son los siguientes: Expresiones Expresión condicional y su formato es el siguiente: do expresiones; while (expresión condicional); Esta estructura de control funciona así: Expresiones N O Condición? S I Figura 3: Funcionamiento de la estructura de control do while. Las expresiones del cuerpo se ejecutan al menos una vez. A continuación se evalúa la expresión condicional y de ser cierta se vuelven a ejecutar las expresiones. De ser falsa se pasa a la siguiente sentencia del programa.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 106 Ejemplo: num = 1; do printf ( buena suerte con el bucle do while \n ); num++; while (num <= 10); buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while buena suerte con el bucle while

Universidad del País Vasco / Euskal Herriko Unibertsitatea 107 6. Estructuras de control iterativas anidadas Tal y como hemos podido observar las estructuras de control iterativas se utilizan sobre todo para crear bucles. En esos bucles se repiten unas cuantas veces unas expresiones, generalmente en función del valor de una condición. Dentro de un bucle pueden existir otros bucles y en estos casos se denominan bucles anidados. En el siguiente ejemplo se puede observar un bucle anidado: for (expresión inicial; expresión condicional; expresión bucle) while (expresión condicional) for(expresión inicial; expresión condicional; expresión bucle) do expresiones; while (expresión condicional) expresión(es); En el siguiente ejemplo se muestran dos estructuras de control iterativas anidadas. Imaginemos que queremos dibujar el triángulo que viene a continuación mediante el carácter *. * ** *** **** ***** ****** ******* ********

Universidad del País Vasco / Euskal Herriko Unibertsitatea 108 El programa preguntará cuantos asteriscos hay en la base y tomando ese dato dibujará la imagen. #include <stdio.h> void main (void) int base = 0; int cont = 1, linea_cont = 1; printf ( Introduzca los asteriscos que quiera para la base: \n ); scanf ( %d, &base); while (cont <= base) for (linea_cont = 1; linea_cont <= cont; linea_cont++) printf ( * ); printf ( \n ); cont++;

Universidad del País Vasco / Euskal Herriko Unibertsitatea 109 7. Otras estructuras de control: break y continue Hemos visto en anteriores secciones las estructuras de control más usadas en el lenguaje C: i f, i f - e l s e, s w i t c h, f o r, w h i l e y do while. Hay otras estructuras de control que deben utilizarse junto a estas tan sólo en excepciones: b re a k, c o n t i n u e y g o t o. De estas tres tan sólo examinaremos las dos primeras. El uso de la tercera está absolutamente prohibido puesto que va en contra de la buena práctica de pro g r a- mación. Estas estructuras de control no son muy adecuadas desde el punto de vista de la programación estructurada y si es posible no deben ser utilizadas. 7.1. break En ocasiones es conveniente salir del bucle sin tener en cuenta la expresión que lo controla (la expre s i ó n condicional) si es que ha ocurrido una excepción. Para ello se utiliza principalmente la sentencia break. Por otra parte, ya hemos visto la importancia que tiene en la estructura de control switch. Por ejemplo: while ((ch = getchar ())! A ) if (ch = =. ) break; printf( has introducido %c \n, ch); Como puede fácilmente se puede observar podemos escribir esta parte del programa de otra manera y sin utilizar la sentencia break. while ((ch = getchar ())! A && (ch!=. )) printf( has introducido %c \n, ch);

Universidad del País Vasco / Euskal Herriko Unibertsitatea 110 7.2. continue En algunos casos, cuando el cuerpo de las estructuras iterativas resulta complejo, puede suceder que no sea necesario ejecutar una parte del cuerpo a pesar de querer seguir dentro del bucle. Para ello se utiliza la sentencia continue. Por ejemplo: while ((ch = getchar ())! A ) if (ch = =. ) continue; printf( has introducido %c \n, ch); En este caso lo que hace c o n t i n u e es no tomar en cuenta los puntos. También aquí se puede escribir fácilmente el mismo programa sin utilizar continue. while ((ch = getchar ())! A ) if (ch! =. ) printf( has introducido %c \n, ch);

Universidad del País Vasco / Euskal Herriko Unibertsitatea 111 8. Bibliografía KERNIGHAN, BW., RITCHIE D.M. The C Programming Language. Ed. Prentice Hall. QUERO, E., LÓPEZ HERRANZ, J. Programación en Lenguajes Estructurados. Ed. Paraninfo. WA I T E, M., PR ATA, S., MA RT I N, D. P rogramación en C. Introducción y Conceptos Avanzados. Ed. Anaya Multimedia. AUTONAKOS, K.C., MANSFIELD, K.C. Programación Estructurada en C. Ed. Prentice Hall.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 112 9. Ejercicios propuestos 1. Calcular el factorial de un número entero y positivo. 2. Se quiere programar el juego del código. Para ello se definirá una constante de dos dígitos en el p rograma y el jugador (el usuario del programa) tendrá que adivinarlo. Tendrá como máximo 10 oportunidades y el ordenador le informará en cada jugada de cuantas le quedan. Si el jugador adivina el número, el ordenador felicitará al jugador antes de finalizar el programa y le pondrá una nota. Si el jugador no adivina el código en la décima oportunidad, el programa terminará con una invitación a jugar de nuevo. 3. Mediante un programa calcular la raíz de N mediante la fórmula de Newton. N / E i + E i E i+1 = 2 Continuar con el proceso hasta que se cumpla la siguiente condición: E i - E i+1 =< epsilon a) Datos de entrada: Número N, epsilon (precisión) y E 0 (aproximación a la raíz correspondiente al número N). b) Calcular Ei+1 y controlar que se cumpla la condición final. c) Si la condición no se cumple repetir el paso b). d) Si la condición se cumple visualizar la raíz. 4. Este programa leerá una cadena de caracteres introducida mediante teclado (carácter a carácter), y nos dirá cuantos espacios vacíos tenemos y si hemos introducido letras. El final de la cadena será un carácter elegido anteriormente.

Universidad del País Vasco / Euskal Herriko Unibertsitatea 113 5. Escribir un programa que logrará la siguiente suma: N S i i i=1 Donde N es un número introducido mediante el teclado. Utilizar las instrucciones FOR, DO-WHILE y WHILE. 6. Escribir un programa que visualiza en pantalla la tabla de caracteres, partiendo del carácter que posee el código 33. Lo que veremos en pantalla será lo siguiente: En cada línea se visualizarán 8 caracteres y a la derecha de cada uno de ellos el código ASCII correspondiente (en total 28 líneas). columnas 7 10 17 20 27 30 línea 1 33! 34 35 # línea 2 41 ) 42 * 43 + NOTA: El programa sólo visualiza los caracteres escritos en negrita.