sábado, 13 de agosto de 2011

ESTRUCTURA REPETITIVA: MIENTRAS QUE (while)

Antes unos conceptos previos:
ESTRUCTURA DE CONTROL REPETITIVAS
1.       Hacer mientras que______(while)
2.       Hacer hasta que_________(do_while)
3.       Desde o para____________(for)

 Bucle
El buque es un conjunto de instrucciones que se repiten.
 Interacción
Es cada una de las veces que se ejecuta el bucle.
 Contador
Un contador es una variable cuyo valor incrementa o decrementa en una cantidad fija se utiliza en los siguientes casos.
Ø  Para contabilizar el número de veces que se desea una operación o grupo de operaciones.
Ø  Un contador toma un valor inicial antes de empezar sus funciones y se debe codificar en el siguiente formato:
  cont=cont +1
 cont=cont -1

Donde: cont es el nombre de tu variable contador.
Acumulador
Un acumulador se encarga de almacenar en una variable el resultado de una o varias operaciones matemáticas que se encuentran dentro de una sentencia repetitiva, para obtener un total acumulado.
Un acumulador se debe inicializar a cero (0) en caso de suma y en uno (1) en caso de producto y se codifica bajo el siguiente formato:
acum=acum+variable
acum=acum*variable
Donde: acum es el nombre de tu variable acumulador.

ESTRUCTURA REPETITIVA: MIENTRAS QUE (while)
La estructura mientras que (while) es aquella en la que el número de repeticiones de bucle no se conoce por anticipado, y el cuerpo del buque se repite mientras se cumple una determinada condición. 
Ø  Condición es una expresión booleana (puede ver verdadera o falsa)  que se evalua al principio del bucle y antes de cada iteración de las sentencias.
Ø  Si la condición es verdadera, se ejecuta el bloque de sentencias y se vuelve al principio del bucle.
Ø  Si la condición es falsa, no se ejecuta el bloque de sentencias y se continúa con la siguiente sentencia del programa.



Una representacion grafica seria como sigue:

Pseudocódigo
Código C++
Mientras (condicon)  Hacer
     grupo de sentencias
FinMientras
while(condicion){
      grupo_de_sentecias
}



Explicación
·         Después de la sentencia: sentencia_n se entra a evaluar la condición  que esta junto a while, si es falsa se pasa el control del programa a la sentencia: sentencia_m (fuera de las llaves como indica la línea de color rojo) para continuar con las otras sentencias… Por lo tanto no se ingresaría ni una sola ves al grupo de sentencias dentro de las llaves del while.

·         En caso de que la condición junto a while sea verdadera se pasa el control del programa  al grupo de sentencias que se encuentran dentro de las llaves (como indica la línea de color verde)para luego regresar (como indica la línea azul) a evaluar la condición esto se repite mientras la condición sea verdadera por lo tanto en el grupo de sentencias que esta dentro de la llaves de:  while se debe de modificar la condición para que en alguna vez la condición evaluada sea falso y salga del bucle para continuar con la sentencia_ m y las otras que continúan.

·         Por eso se dice que el bucle while se ejecuta cero o mas veces.

·         Si la condición nunca llega a ser falsa, tenemos un bucle infinito.

·         La condición se denomina invariante del bucle.
Ejemplos.
E1.
Desarrolle un algoritmo que le permita realizar la escritura de los primeros 100 números naturales.
Análisis. Para poder escribir los primeros 100 números primeo hay que generar dichos valores, Una forma de generar los valores es con la estructuras repetitivas. Declaramos una variable que se inicie con un valor: 1 (int cont=1;) que seria el primer valor a escribir y finaliza en 100 que seria el último número a escribir necesitando un incremento de uno en uno en la variable (se usara un contador).
Inicia: cont=1
Finaliza: cont=100
Incrementa cont en uno o sea : cont =cont+1 
(Código compilado en devC++) copie y péguelo en su compilador para comprovar  
#include<iostream.h>

int main(){
int cont=1;
cout<<"Los primeros 100 numeros naturales"<<endl;
while(cont<=100){
    cout<<cont<<endl;
    cont=cont+1;
};
cout<<"Aqui ya salio del bucle"<<endl;
system("pause");
return 0;
}

E2.
Desarrolle un algoritmo que le permita realizar la suma a los primeros N número impares.

Análisis. Al igual que en el ejercicio anterior es necesario apoyarse en una estructura de tipo cíclica a fin de poder dar solución al problema, la idea es desarrollar la estructura para N veces, una variable que lleve la cuenta para generara los numero impares buscando la relación entre la cuenta y el número como tal (se usara un contador, y un acumulador).
(Código compilado en devC++) copie y péguelo en su compilador para comprovar  

#include<iostream.h>

int main(){
int n,num,cont=1,acum=0;
cout<<"Ingrese un numero : ";
cin>>n;
while(cont<=n){
    num=2*cont-1;
    cout<<num<<endl;         
    acum=acum+num;
    cont=cont+1;
}
cout<<"La suma de los "<<n<<"  Primeros numeros impares es : "<<acum<<endl;

system("pause");
return 0;
}

Nota. El problema se puede resolver de muchas formas por ejemplo solo bastaba con elevar al cuadrado en numero ingresado, la forma como se resolvió es para mostrar como es que funciona la estructura repetitiva while

E3.
Desarrolle un algoritmo que calcule el promedio de los primeros N números naturales.

Análisis. Para dar solución al ejercicio se procede a la siguiente forma: Se debe generar una estructura repetitiva que se encargue de contar el número de términos a sumar, en el caso del ejercicio será N.   La variable que se encarga de contar los términos sirve además como generadora de los términos a sumar. Se acumularan dichos números generados y al final se promedia dicha sumatoria entre el numero de términos sumados.

(Código compilado en devC++) copie y péguelo en su compilador para comprovar  
#include<iostream.h>

int main(){

int n,cont,suma;
suma=0;
cont=1;

float promedio;
cout<<"Ingrese la cantidad de numeros : ";
cin>>n;
while(cont<=n){
    suma=suma+cont;
    cont++; 
};

promedio=(1.0)*suma/n;
cout<<"El promedio de los numeros es : "<<promedio<<endl;
system("pause");
return 0;
}  

Nota. A la división por (1.0) para que salgan los decimales, cont++ equivale a cont=cont+1

E4.
Desarrolle un algoritmo que le permita leer un valor entero positivo N y calcule su factorial.

(Código compilado en devC++) copie y péguelo en su compilador para comprovar  

#include<iostream.h>

int main(){
int n,factorial=1,i=1;
cout<<"Ingrese un numero : ";
cin>>n;
while(i<=n){
    factorial=factorial*i;
    i++;
};

cout<<"El factorial es : "<<factorial<<endl;

system("pause");
return 0;
}


E5.
Desarrolle un algoritmo que le permita leer un valor entero positivo N y decir si es primo o no.

(Código compilado en devC++) copie y péguelo en su compilador para comprovar  
#include<iostream.h>
int main(){

int n,j=2,s=0;
cout<<"Ingrese un numero : ";
cin>>n;
while(j<=n/2){
    if(n%j==0){
        s++;
    }
    j++;
};
Eso es todo por este tema cualquier cosa comenten....

8 comentarios:

  1. Buen Tema Gracias, Me ahorrastes investigar mi examen !

    ResponderEliminar
  2. GRACIAS POR LA
    INFORMACION

    ResponderEliminar
  3. Realizar un codigo que lea numeros enteros tantas veces como sea necesario, termina al introducir un numero menor que 100

    ResponderEliminar
  4. Estoy triste no entiendo la vida

    ResponderEliminar
  5. when vienes aca porque tu profesor de informatica no sirve pa un qlo

    ResponderEliminar
  6. Me ayudo a entnder mejor como funciona exactamente la estructura
    Gracias por la información

    ResponderEliminar