lunes, 17 de septiembre de 2007

Practica 9: Ejercicios con While y Do While.

Materia: Lógica Computacional.
Profesor: Lic. Salomón Aquino.

Objetivos. Al finalizar la práctica los estudiantes serán capaces de:
• Resolver Problemas usando estructuras While Y Do While
• Aplicar el concepto de centinelas y banderas con estructuras While y Do While.

Estructura Mientras (While)
Al igual que el bucle for, el bucle While es un bucle de precondición. Esto significa que el programa evalúa la condición antes de entrar en la instrucción o instrucciones del cuerpo del bucle. Como consecuencia de esto, los bucles de precondición se pueden ejecutar desde cero hasta varias veces.
La sentencia while se utiliza para generar bucles repetidamente, hasta que la condición deje de ser verdadera.
Sintaxis:
while ( [condición] ) {
Sentencias;
}

Como en todas las estructuras que hemos visto, si se cuenta con una sola sentencia de repetición, no es necesario escribir las llaves.
Estructura Repetir (Do While)
La sentencia do – while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez. Esta situación se suele dar en algunas circunstancias en las que se ha de tener la seguridad de que una determinada acción se ejecutará una o varias veces, pero al menos una vez.
Cuando se construye un bucle usando while, la evaluación de la condición para la continuación del bucle se realiza al comienzo de cada pasada. Sin embargo, a veces es deseable disponer de un bucle en el que se realice el examen al final de cada pasada.
Con esta sentencia se controla la condición al final del bucle. Si ésta se cumple, el programa vuelve a ejecutar las sentencias del bucle.
La única diferencia entre las sentencias while y do...while es que con la segunda el cuerpo del bucle se ejecutará por lo menos una vez.
Sintaxis:
do {
sentencia1;.......
sentenciaN;
} while ([evaluación]);

Ejemplo 1
Elabore un programa en lenguaje C para calcular el promedio de una lista de x números.
Solucion en WHILE:

#include stdio.h>
#include stdlib.h>
main ( )
{
int n , contar=1;
float x , promedio , suma=0;
printf ("Cuantos números desea leer?: ");
scanf ("%d",&n);
while (contar <= n) {
printf ("x= ");
scanf ("%f",&x);
suma +=x;
++contar;
}
promedio=suma/n;
printf ("\nEl promedio es: %.2f\n",promedio);

system(“pause”);
return 0;
}

Solucion en DO-WHILE
#include stdio.h>
#include stdlib.h>
main ( )
{
int n, contar = 1;
float x, promedio, suma = 0;
printf ("Cuantos numeros?: ");
scanf ("%d",&n);
do {
printf("x= ");
scanf ("%f", &x);
suma +=x;
++contar;
} while (contar <= n);
promedio = suma/n;
printf ("\nEl promedio es: %.2f\n",promedio);
system(“pause”);
return 0;
}


Ejemplo 3 : Uso de centinelas
En el ejemplo se introducen notas mientras que ésta sea distinta de centinela, al final imprime cuántas notas se ingresaron, su suma y un mensaje de final. Nota se ha declarado de tipo entero.
#include stdio.h>
#include stdlib.h>
main()
{
const int centinela = -1;
int nota,suma=0;
int cuenta =0;
printf("Introduzca primera nota:\n");
scanf("%d",¬a);
while (nota != centinela)
{
cuenta++;
suma+= nota;
printf("Introduzca la siguiente nota:\n");
scanf("%d",¬a);
}
printf("la suma es: %d\n",suma);
printf("la cuenta fue: %d\n", cuenta);
puts("final");
system(“pause”);
return 0;
}
Ejemplo 4: Uso de centinelas.
Elabore un programa para solicitar el nombre, apellido, edad y la nota promedio de 5 estudiantes de un curso de computación, el programa debe realizar la petición de los datos hasta que se hallan completado los datos.
Solución:
#include stdio.h>
#include conio.h>
#include stdlib.h>
main()
{
int op,edad;
float nota;
char nombre[20], apellido[20];
op=1;
while (op<=5)
{
system("cls");
if(op==5)
{
printf("\n\n\t");
printf("ESTE ES EL ULTIMO ALUMNO");
}
printf("\n\n\t");
printf("REGISTRO DE ALUMNO # %d",op);
printf("\n\n\t\t");
printf ("Nombre: ");
scanf ("%s",nombre);
printf("\n\n\t\t");
printf ("Escriba su Apellido: ");
scanf ("%s",apellido);
printf("\n\n\t\t");
printf ("Escriba su Edad: ");
scanf ("%d",&edad);
printf("\n\n\t\t");
printf ("Escriba su Nota Promedio: ");
scanf ("%f",¬a);
++op;
}
system("cls");
printf("\n\n\n\t");
printf ("\nE L P R O G R A M A H A T E R M I N A D O\n");
system("pause");
return 0;
}
Nota: Este ejemplo aplica el uso de tabuladores para ordenar la información
Ejemplo 5: Uso de banderas.
El siguiente programa utiliza un juego de adivinación de un número, indicando las veces que se necesitan para encontrar el valor de 77. Note el uso de la instrucción continue que provoca que se ignoren todas las instrucciones que siguen a dicha instrucción.
La instrucción while (!iadivinado) indica que mientras sea verdadero que entre al bucle, esto es porque la variable iadivinado se inicializó a FALSO. Esta variable es la bandera del programa, en el momento en que el usuario digite el número 77, la bandera cambia a verdadero y la condición del bucle deja de ser verdadera y se sale.
Observa también que se definieron dos constantes para que la comparación sea numérica, ya que decimos que verdadero vale 1 y falso vale cero, al escribir por ejemplo, la palabra VERDADERO, en realidad, lo que toma la variable es el valor de 1.
#include
#include
#define VERDADERO 1
#define FALSO 0
int main()
{
int inumero_correcto,iadivinado;
int ivalor_introducido,inumero_intentos;
inumero_correcto=77;
iadivinado=FALSO;
inumero_intentos=0;
while (!iadivinado){
printf("por favor, introduzca el numero de la suerte:");
scanf("%d", &ivalor_introducido);
inumero_intentos++;
if(ivalor_introducido== inumero_correcto)
iadivinado=VERDADERO;
else
continue;
printf ("¡Usted ha necesitado %d intentos para adivinarlo!\n", inumero_intentos);
}
system("pause");
return 0;
}

EJERCICIOS:
Ejercicio 1:
Escriba un programa que calcule el resultado de todos los números del uno al cien (1+2+3+4......).
Ejercicio 2:
Escriba un programa que genere las tablas de multiplicar del 1 al 10.
Ejercicio 3:
Haga un programa que pida el número de alumnos de una clase y luego debe permitir ingresar los nombres de dichos alumnos.
Ejercicio 4:
Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base y un 10% extra por comisiones de sus ventas.
El gerente de la compañía desea saber cuánto dinero obtendrá en la semana cada vendedor por concepto de comisiones y cuánto tomando en cuenta su sueldo base y sus comisiones
Ejercicio 5:
Haga un programa usando bucle do-While, que pida números y luego calcule la media de esos números. El usuario debe introducir los datos hasta que escriba –1 para finalizar la lectura.

Ejercicio 6:
Escriba un programa usando banderas para imprimir y sumar los términos de la serie 2,5,7,10,12,15....50. Nota que a la serie se le suma 2 y a veces 3. (Puedes auxiliarte del algoritmo visto en clase teórica)
Ejercicio 7:
Elabora el programa que escriba los números del 1 al 100 excepto el número 25. Utiliza la función continue.

20 comentarios:

Anónimo dijo...

Gracias
me sirvio de mucho para ender algunas logicas
muy bueno
adios
suerte
y gracis nuevamente

Anónimo dijo...

Muchas Gracias por tu ayuda me sirvio muchisimo...

Anónimo dijo...

no entendi un carajo

Anónimo dijo...

No se entiende ni papa

Unknown dijo...

Donde encuentro la respuesta o el programa para la del ejercicio 4?

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

sale chido
me ayudo para mi tarea

Anónimo dijo...

disculpa cual es el codigo para este problema :(?

Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base y un 10% extra por comisiones de sus ventas.

Anónimo dijo...

y la solucion de los ejercicios¿?

13 dijo...

Gracias, ma salvó... º(`w´)º

Anónimo dijo...

gracias me ayudo mucho

Anónimo dijo...

gracias me dirvio de mucho!!sigan sbiendo ams ejercicios ...pliss

Anónimo dijo...

muxas gracias!!fueron muy utiles...sigan subiendo mas ejercicios..plisss

gangstanation2011 dijo...

disculpe pero en un programa me marca un error al tratar de ejecutarlo es en el de donde solicita el nombre, apellido y nota de un estudiante me podra ayudar es en esta parte scanf ("%f",¬a);
gracias

Anónimo dijo...

Muchas gracias... si alguien ya resolvio los ejercicios seria bueno que los pongan en los comentarios

Anónimo dijo...

este como se le debe acer para q al final te diga si kieres salirte del programa con cualkier tecla o seguir ejecutandolo...urgente

Problemas de Logica dijo...

Enhorabuena por la página
Un saludo

Anónimo dijo...

Putos

Unknown dijo...

Como se resuelve el ejercicio 6

Unknown dijo...

Como se resuelve el ejercicio 6