Está en la página 1de 4

ESCUELA POLITCNICA SUPERIOR GRADO EN ING.

QUMICA INDUSTRIAL INFORMTICA PRCTICA 3: WHILE - FOR


HASTA AHORA...
En prcticas anteriores se ha aprendido: La estructura principal de un programa en C: la funcin main y las libreras. Variables y Constantes: con sus respectivos tipos, usos y funcionamiento. Funciones printf/scanf: muestra y obtencin de informacin por pantalla/teclado. Condicionales if/else: ejecucin de un programa en rbol.

OBJETIVOS
En esta prctica aprenderemos el uso de las estructuras iterativas while y for y reforzaremos los conocimientos adquiridos en las prcticas anteriores. Mezclando lo nuevo con lo visto en las prcticas anteriores veremos como se puede dar solucin a casi cualquier algoritmo, usando lo visto hasta ahora exclusivamente.

Introduccin
1. WHILE Hasta ahora hemos aprendido a realizar operaciones aritmticas, asignar resultados de esas operaciones a variables, mostrar datos en pantalla y pedirlos por teclado, y ejecutar partes de cdigo de forma condicional, estudiando para ello las expresiones lgicas. Una de las funciones para las que se pensaron los ordenadores fue la realizacin de tareas repetitivas. Con lo visto hasta ahora la nica forma que tenemos de ejecutar varias veces un cdigo es copiarlo tantas veces como queramos que se repita:

Existe una forma mejor, y es usando una estructura que nos proporciona en lenguaje C para repetir la ejecucin de una porcin de cdigo: la estructura while. La sintaxis es la siguiente:

while (condicin) { // Instrucciones que se van a repetir sentencia1; sentencia2; ... }


Las sentencias incluidas entre las llaves se ejecutarn mientras se cumpla la condicin, que ser una expresin lgica como las que vimos en la estructura if-else. El mismo cdigo de antes escrito mediante la estructura while quedara:

Las estructuras iterativas tambin se llaman bucles, y a cada ejecucin completas de las sentencias contenidas en el bucle se le denomina iteracin. IMPORTANTE: En cada iteracin del bucle debe haber alguna sentencia que posibilite que la evaluacin de la condicin cambie, y podamos salir del bucle. De lo contrario tendramos un bucle infinito. 2. FOR La sentencia for es otra forma de repetir cdigo un nmero determinado de veces. Su sintaxis es ms compacta que la de la sentencia while, y nos permite en una sola lnea escribir la condicin de comprobacin del bucle, la sentencia que nos actualiza el contador, as como la inicializacin de dicho contador. Veamos su sintaxis, y un ejemplo que compara su funcionamiento con un ejemplo equivalente hecho con while:

for (inicializacion;condicin;actualizacin) { // Instrucciones que se van a repetir sentencia1; sentencia2; ... }


Las sentencias incluidas entre las llaves se ejecutarn mientras se cumpla la condicin. Adems, en cada iteracin del bucle, tras las sentencias incluidas entre las llaves, se ejecutar la sentencia de actualizacin. Un cdigo que se puede escribir con while para mostrar por pantalla los 20 primeros nmeros naturales es: #include <stdio.h> int main() { int i; i = 0; while(i<20) { printf("%d, ", i); i++; } printf("\n"); } El cdigo equivalente escrito con la sentencia for sera el siguiente: #include <stdio.h> int main() { int i; for(i=0; i<10; i++) { printf("%d, ", i); } printf("\n"); } Sabiendo todo esto, podemos pasar a realizar los ejercicios correspondientes a la presente prctica.

EJERCICIOS
Ejercicio 1: Escribir un programa que muestre los primeros los primeros 20 nmeros naturales PARES. Ejercicio 2: Escribir un programa que muestre por pantalla la tabla de multiplicar del 5. Ejercicio 3: Modificar el programa anterior para que muestre todas las tablas de multiplicar (del 1 al 10). Nota: No se puede copiar el cdigo anterior 10 veces. Ha de hacerlo con dos bucles for o dos bucles while. Ejercicio 4: Escriba un algoritmo que lea del teclado un nmero entero y que compruebe si es menor que 5. Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Finalmente debe escribir por pantalla el valor ledo. Ejercicio 5: Escribir un programa que calcule la potencia de un nmero real elevado a un exponente entero positivo. Los valores de la base y el exponente se leen del teclado. Para el clculo de la potencia, se realizar con multiplicaciones sucesivas (no se puede utilizar la librera matemtica). Ejercicio 6: Escriba un programa que vaya leyendo del teclado un nmero entero de forma iterativa hasta que el usuario introduzca un nmero positivo. Finalmente deber imprimir un mensaje mostrando el nmero positivo introducido por teclado. Por ejemplo, si el usuario introduce: -12 -4 8 10, entonces el programa debe mostrar el siguiente mensaje: El nmero positivo introducido ha sido 10 Ejercicio 7: Complete el cdigo anterior para que el programa adems cuente cuantos nmeros negativos ha introducido el usuario hasta que tecle un nmero positivo. Finalmente imprimir el mensaje con el valor de dicho contador. Por ejemplo, si el usuario introduce: -10 -5 -7 9, entonces el programa debe mostrar el siguiente mensaje: El usuario introdujo 3 nmeros negativos antes de introducir el primer nmero positivo cuyo valor ha sido 9 Ejercicio 8: Compltelo an ms, para que se solicite un entero que se encuentre entre dos umbrales dados por el usuario y no pare de pedirnos dicho nmero hasta que el que introduzcamos se encuentre, efectivamente, entre esos dos nmeros. Fjese en el ejercicio 4 de la prctica anterior. Ejercicio 9: Modifique el ejercicio de la calculadora de la prctica 2. En este caso, implemente algn mecanismo para que, cada vez que realicemos alguna operacin, podamos seguir realizando tantas operaciones como queramos, hasta que indiquemos la opcin -1 en el men principal. Ejercicio 10: Realice un programa que calcule el factorial de un nmero entero positivo (hay que controlar que lo sea). Como sabr, el factorial de un nmero se define de la siguiente forma:

Ejercicio 11: Escriba un programa que pida dos aos, y muestre todos los aos bisiestos comprendidos entre ambos. Para ello puede valerse del ejercicio 6 de la prctica anterior. Ejercicio 12: Escriba un programa que calcule el resto de la divisin entera entre dos nmeros a y b, enteros positivos dados por el usuario, sin usar los operadores / ni %.

También podría gustarte