Bucles While / until.

Iniciado por FKT, 5 Agosto 2015, 23:27 PM

0 Miembros y 1 Visitante están viendo este tema.

FKT

Buenas el caso es que estoy estudiando de un libro y bueno se como se usa el Bucle while
Un ejemplo.

#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:


#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.
Solo hay 10 tipos de personas, las que saben binario y las que no.

engel lex

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

En C o C++ no existe "until". Existe solo "while(){}" y "do{}while();".

FKT

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.
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

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.

FKT

Cita de: 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.

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.

Cita de: ivancea96 en  5 Agosto 2015, 23:44 PM
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)
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

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:
int arr[0];
int length = 0;

int i = 0;
while(i < length){
    printf("%i", arr[i]);
    i++;;
}

i = 0;
do{
    printf("%i", arr[i]);
    i++;
}while(i < length);


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.

FKT

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.
Solo hay 10 tipos de personas, las que saben binario y las que no.