elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Leo Gutiérrez., Eleкtro)
| | |-+  No entiendo la secuencia de un bucle
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No entiendo la secuencia de un bucle  (Leído 1,118 veces)
Linton

Desconectado Desconectado

Mensajes: 235



Ver Perfil
No entiendo la secuencia de un bucle
« en: 19 Febrero 2013, 18:58 »

Veamos, es lo siguiente:

Código
  1. num = 54
  2. intento = 0
  3. while intento != num:
  4.    intento = int(input("Adivina la cifra: "))
  5.    if intento > num:
  6.        print("Alto")
  7.    elif intento < num:
  8.        print ("Bajo")
  9. print ("Acertaste")

Línea 3: Mientras que el intento sea diferente al num, entonces ocurrirá...
Y entonces la línea 4 define el intento. ¿¿Pero cómo va a definir después qué es el intento?? ¿No tendría que hacerlo antes?  >:(

 :-\ Esto de los bucles carece de la menor lógica para mí, si alguien me echa una mano se lo agradeceré infinito. Gracias, un saludo.



En línea

engel lex


Desconectado Desconectado

Mensajes: 2.939



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #1 en: 19 Febrero 2013, 19:10 »

el while es un ciclo...

el siempre volverá a evaluar la linea 3 si su intento era erroneo... entonces pasará a la 4 para pedir el nuevo valor... si es correcto, ignorará el if y cuando salte a la linea 3 saldrá del ciclo...


En línea

"Just call me... Doctor"

Leer reglas del Foro



si publicas codigo usa las etiquetas
Linton

Desconectado Desconectado

Mensajes: 235



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #2 en: 19 Febrero 2013, 19:37 »

No entiendo muy bien esa construcción, la verdad  :-\

Tampoco entiendo por qué establece al principio que intento = 0  :huh: :huh: :huh: :huh:

Gracias por tu ayuda, un saludo.
En línea

Eleкtro
Moderador
***
Desconectado Desconectado

Mensajes: 5.402



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #3 en: 19 Febrero 2013, 19:55 »

Sería muy fácil de explicar en una pizarra... dibuja una línea imaginária desde la línea 3 hasta la 8, o imagina una pelota de ping pong que va desde la línea 3 hasta la 8 y la pelota rebota sin parar de arriba a abajo entre ese bloque de código hasta que intento séa el número correcto, aunque no es del todo así, pero si no lo entiendes de esa manera... xD

Tampoco entiendo por qué establece al principio que intento = 0  :huh: :huh: :huh: :huh:
Sería una mala costumbre no otorgarle un valor inicial a una variable, aunque el valor fuese "nulo", o aunque el valor no se vaya a procesar.

saludos

EDITO: mira que explicación más buena:
http://es.wikipedia.org/wiki/While

y http://en.wikipedia.org/wiki/While
« Última modificación: 19 Febrero 2013, 20:07 por EleKtro H@cker » En línea

Como insertar un código:

 

-> Reglas del foro <-
Linton

Desconectado Desconectado

Mensajes: 235



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #4 en: 19 Febrero 2013, 20:36 »

...imagina una pelota de ping pong que va desde la línea 3 hasta la 8 y la pelota rebota sin parar de arriba a abajo entre ese bloque de código hasta que intento séa el número correcto...
Si ya sé que es un proceso cíclico  :) Lo que no entiendo es el orden de la construcción.


Sería una mala costumbre no otorgarle un valor inicial a una variable
¿Por qué? Si ya se van a extraer diferentes valores del input  :huh: Eso no tiene lógica.

Gracias por la ayuda, un saludo.
En línea

Eleкtro
Moderador
***
Desconectado Desconectado

Mensajes: 5.402



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #5 en: 19 Febrero 2013, 20:49 »

¿Por qué? Si ya se van a extraer diferentes valores del input  :huh: Eso no tiene lógica.
  • para hacer más entendible la lectura de un código, por ejemplo.
  • para que una una variable no de error por no tener un valor definido (algo que se ve mucho en Batch por ejemplo)

No se me ocurre más ahora mismo

saludos!
En línea

Como insertar un código:

 

-> Reglas del foro <-
Linton

Desconectado Desconectado

Mensajes: 235



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #6 en: 19 Febrero 2013, 20:54 »

¿Y por qué no se hace así?

Código
  1. edad = int(input("Escribe tu edad: "))
  2. while edad < 18 #lo que sea

Es la secuencia lógica.
En línea

Eleкtro
Moderador
***
Desconectado Desconectado

Mensajes: 5.402



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #7 en: 19 Febrero 2013, 21:07 »

¿Y por qué no se hace así?

Código
  1. edad = int(input("Escribe tu edad: "))
  2. while edad < 18 #lo que sea

Es la secuencia lógica.


EDITO: ups perdón, había leido while not xD

Pero es que en el ejemplo que das no es necesario un búcle, puedes usar una comparación (IF).



La caracteristica principal de un búcle es poder repetir indefinidamente un bloque de código, y en tu ejemplo la variable "edad" está fuera del búcle, lo que quiere decir que con "input" le das un valor UNA SOLA VEZ, y si el valor es menor que "18" entonces el while se quedaría loopeando etérnamente si dentro del bloque del búcle no modificas la variable "edad" a un valor mayor de "18" para que se cumpla la condición, porque solo tiene un valor para comparar (el valor que le des anteriormente con el userinput).

¿Es eso lo que no entiendes?

saludos
« Última modificación: 19 Febrero 2013, 21:46 por EleKtro H@cker » En línea

Como insertar un código:

 

-> Reglas del foro <-
engel lex


Desconectado Desconectado

Mensajes: 2.939



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #8 en: 19 Febrero 2013, 21:21 »

¿Y por qué no se hace así?

Código
  1. edad = int(input("Escribe tu edad: "))
  2. while edad < 18 #lo que sea

Es la secuencia lógica.


si lo haces así tomas el valor antes del while... si la condicion no se cumple, caerás en un ciclo infinito ya que no vuelves a hacer el

Código:
edad = int(input("Escribe tu edad: "))
En línea

"Just call me... Doctor"

Leer reglas del Foro



si publicas codigo usa las etiquetas
HdM


Desconectado Desconectado

Mensajes: 1.430


LARTeando


Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #9 en: 19 Febrero 2013, 21:33 »

Citar
si la condicion no se cumple, caerás en un ciclo infinito

Al contrario, no entrará en el bucle.

@ Linton:

Por eso se inicializa a 0 la 1ª vez, para asegurar la entrada al bucle y muestre el mensaje que corresponda (ya en función de la entrada que dé el usuario en el input), por lo menos una vez.

No sé si habrás visto Do-While, quizá ver 1º esta forma te ayude a entender mejor el funcionamiento de los bucles.

Un saludo.

En línea

- The Show Must Go On -
engel lex


Desconectado Desconectado

Mensajes: 2.939



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #10 en: 19 Febrero 2013, 22:05 »

Código:
Al contrario, no entrará en el bucle.


sorry se me pasó :P


cierto... con el do while es mas facil de digerir :P
En línea

"Just call me... Doctor"

Leer reglas del Foro



si publicas codigo usa las etiquetas
Linton

Desconectado Desconectado

Mensajes: 235



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #11 en: 20 Febrero 2013, 09:21 »

¿Qué es el Do While?

Tampoco entiendo cómo funciona el "acierto": no está declarado algo como

if intento = num:

...para llegar al print final de "¡Acertaste!"

De modo que cuando el usuario teclea el número correcto, que incumple los dos if (ni es mayor ni menor a sí mismo), el programa... ¿vuelve atrás? ¿O basta con eso para que salga del bucle y prosiga con lo que haya por delante?

¡Muchas gracias a todos!  :)
« Última modificación: 20 Febrero 2013, 09:29 por Linton » En línea

engel lex


Desconectado Desconectado

Mensajes: 2.939



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #12 en: 20 Febrero 2013, 17:00 »

el do while es un ciclo similar al while... la diferencia está en que el primero ejecuta y al final pregunta si debe repetirse, esto asegura que se ejecute por lo menos una vez sin importar la condicion...

para comparar lo debes hacer con "=="
Código:
if intento == num:

si lo haces con un solo "=" el sistema creerá que le diste el valor de num a intento, y esa operación es cierta siempre y cuando sea valida (depende del lenguaje valida es que las variables sean del mismo tipo y ambas existan)

Citar
De modo que cuando el usuario teclea el número correcto, que incumple los dos if (ni es mayor ni menor a sí mismo), el programa... ¿vuelve atrás? ¿O basta con eso para que salga del bucle y prosiga con lo que haya por delante?

depende de lo que quieras hacer... lo mas logico, es que al ser correcto, salga del ciclo y continue
En línea

"Just call me... Doctor"

Leer reglas del Foro



si publicas codigo usa las etiquetas
Linton

Desconectado Desconectado

Mensajes: 235



Ver Perfil
Re: No entiendo la secuencia de un bucle
« Respuesta #13 en: 20 Febrero 2013, 19:27 »

¡Gracias, un saludote!  :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Secuencia de Numeros
Desafíos - Wargames
zarocks 13 18,425 Último mensaje 4 Septiembre 2008, 07:51
por Yasmesita
Secuencia fibonacci
Java
Erik# 7 12,862 Último mensaje 1 Octubre 2008, 18:04
por Sk9ITk5Z
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 5,264 Último mensaje 17 Diciembre 2008, 17:43
por Dem0ny
Automatizar una secuencia en una web.
Programación Visual Basic
kas8355 4 731 Último mensaje 29 Abril 2009, 19:36
por kas8355
Bucle incremental con secuencia de valores ajustados
Programación C/C++
VladisMSX1 3 713 Último mensaje 14 Mayo 2012, 17:41
por VladisMSX1
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines