Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: FKT en 5 Agosto 2015, 23:27 pm



Título: Bucles While / until.
Publicado por: FKT en 5 Agosto 2015, 23:27 pm
Buenas el caso es que estoy estudiando de un libro y bueno se como se usa el Bucle while
Un ejemplo.
Código:
#include <stdio.h>
#include <stdlib.h>

int main(){


int x = 12;

while (x == 12)
{  
      printf("X es igual a 12");
}


return 0;
}

Ya se que es un ejemplo muy malo pero bueno al fín y al cabo esun ejemplo.
Bueno aun no he explicado mi problema, en el libro pone que el bucle Until es un bucle while con la instrucción condicional invertida y la pregunta es tu puede hacer esto por ejemplo:

Código:
#include <stdio.h>
#include <stdlib.h>

int main(){

int x = 9;

while (x != 9)
{
     printf("x es diferente a 9");
}
return 0;
}
Este ejemplo que he echo por ejemplo, no entiendo porque un bucle until tiene que ser el "contrario" de uno while si se puede hacer asi.
Espero que entendais lo que quiero decir.
Salu2.


Título: Re: Bucles While / until.
Publicado por: engel lex en 5 Agosto 2015, 23:32 pm
es algo meramente de nombre, estoy seguro que le mencionas a cualquier programacion un ciclo "until" y no sabrá o simplemente dirán que es while :P



Título: Re: Bucles While / until.
Publicado por: ivancea96 en 5 Agosto 2015, 23:33 pm
En C o C++ no existe "until". Existe solo "while(){}" y "do{}while();".


Título: Re: Bucles While / until.
Publicado por: FKT en 5 Agosto 2015, 23:41 pm
A vale ya decía yo, bueno lo primero gracias por contestar  :-)

Y ahora ya que estamos si me podeis explicar la diferencia de entre el bucle while y do-While que la verdad lo he estado mirando y no lo entiendo nada jeje.


Título: Re: Bucles While / until.
Publicado por: ivancea96 en 5 Agosto 2015, 23:44 pm
la única diferencia es que en "do{}while();", la instruccion se hace primero, y se comprueba la condición despues. En "while(){}", primero se comprueba la condición.

Ah, y ten en cuenta que "do{}while();" siempre acaba con punto y coma.


Título: Re: Bucles While / until.
Publicado por: FKT en 5 Agosto 2015, 23:53 pm
la única diferencia es que en "do{}while();", la instruccion se hace primero, y se comprueba la condición despues. En "while(){}", primero se comprueba la condición.

Entonces si haces un programa da lo mismo si lo haces con While(){} o do{}while(){}
és cuestión de gustos??Ah, y ten en cuenta que "do{}while();" siempre acaba con punto y coma.

Ah, y ten en cuenta que "do{}while();" siempre acaba con

Te refieres a la ejecución del while solo o después del parentesis en while?(del do-while)


Título: Re: Bucles While / until.
Publicado por: ivancea96 en 6 Agosto 2015, 00:01 am
Después del paréntesis del "do{}while();". Se acaba con ;.

No, no es lo mismo do{}while(); que while(){}. Hay ocasiones donde no importa si se comprueba antes o después la condición, pero hay otras donde sí importa. Te pongo un ejemplo.

Es un poco absurdo, pero espero que se entienda:
Código
  1. int arr[0];
  2. int length = 0;
  3.  
  4. int i = 0;
  5. while(i < length){
  6.    printf("%i", arr[i]);
  7.    i++;;
  8. }
  9.  
  10. i = 0;
  11. do{
  12.    printf("%i", arr[i]);
  13.    i++;
  14. }while(i < length);
  15.  

El código es simplemente sacar por pantalla los números del arreglo. La longitud del arreglo es 0.
En el primer while, se comprueba si 'i' es menor a la longitud. Como no cumple la condición, no entra en el bucle.
En el segundo, el do-while, entra directamente al código, sacando por pantalla un resultado erróneo, puesto que no hay ningún valor en arr[0] (por no decir que puede tirar error, según el caso). La comprobación la hace al final, cuando i = 1.


Título: Re: Bucles While / until.
Publicado por: FKT en 6 Agosto 2015, 00:10 am
A vale ya lo entiendo  ;D
Gracias por explicarmelo ivancea96 que la verdad es que no entendia los ejemplos de los sitios donde miraba.
Salu2.