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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  while(true) mala practica?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: while(true) mala practica?  (Leído 13,792 veces)
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.355


Ver Perfil
Re: while(true) mala practica?
« Respuesta #10 en: 17 Diciembre 2022, 23:50 pm »

Yo nunca entendí los for, jaja.
No es nada complicado.
Aprender leyendo libros de ejercicios, es una forma de aprender penosa.
Lo ideal es leerse primero y tenerla siempre a mano la especificación del lenguaje que pretendes aprender. Y a partir de ahí cualquier libro de los anteriores (o de donde sea que uno saque la info), es fácil entenderla y aprenderla.

Sin conocer la especificación, no logras saber el alcance ni límites de cada proposición del lenguaje, luego se convierte en una aventura de descubrimiento... y que, como un isla, aquellos 'sitios que no visites', (del lenguaje) no tendrás ni pajolera idea de cómo funciona ni si te puede ser útil. Es decir en definitiva de ese modo solo aprendes con la experiencia, lo que no experimentas, no lo conoces... La teoría está uno obligado a conocerla y la práctica lo que te permite luego es dominarlo al detalle y en profundidad, pero sin lo previo, siempre estarás cojeando del lenguaje...

Si leo
while A==B
entiendo que es
Mientras A sea igual que B (aunque eso de "==" en vez de "=" no tiene mucha lógica que digamos).
...esto es cosa de C y su 'demónica' herencia...
Al parecer pueden complicarse las barbas exasperadamente pero son incapaces de usar el mismo operador para expresar igualdad y asignación, eso les parece :rolleyes: algo irresoluble .

igualdad :: 'If' expresion "=" expresion ['then'] ...
asignacion:: variable "=" expresion


Si leo
for (i = 0; i < max; i++ )
veo Para i que es 0, mientras i sea menor que max, incrementarle 1.
Yo creo que arranca mal porque la palabra "Para" se usa como indicador de cómo hacer algo
...igual que lo anterior, a fin de cuentas...

...eso es simplemente la sintaxis, lo que se te reclama que pongas para que tenga dicho significado... No hay que darle más vueltas. Si tienes un amigo que se llama Pedro y él se empeña en que le llames Perico, pues lo llamas así si quieres que te atienda y ya.

¿Y si ya tienes definida la variable o quieres que la defina el usuario?
...
pero si la variable n no necesita conservar su estado original entonces pa qué crear otra variable. Tal vez for da la opción de no crearla, bueno...
Reutilizar variables, era algo adecuado cuando la memoria era extremadamente limitada. Entonces una misma variable que no se utilizaba más en su contexto, podía servir para otro contexto, asignando el valor propicio al caso...
Eso daba lugar a varios problemas:
--- El nombre debía ser abstracto, para poder utilizarla en varios contextos sin confusión...
--- Si un valor no se establecía cuando cambiaba de contexto, podía generar errores difíciles de localizar.
--- El código era difícil de leer, al usar nombres abstractos para las variables, era fácil perderse... imagina que vas al hopital y tienes que llamar Antonio a un médico, pero también a 2 enfermeros, a varios medicamentos, a ciertos tratamientos incluso a la referencia a alguna planta, ascensor y habitación... después de dar explicaciones a alguien con tantos 'Antonio', tú crees que habrá sido capaz de seguirte o que estará perdido en esa jungla de maleza de idéntico nombre pero distinta definición???

Considera además que un compilador realiza optimizaciones, por lo que uno debe despreocuparse de 'reutilizar' variables, tu usa nombres (significativos) el compilador se encargará de las direcciones...

Por otro lado se ve limitante, puede ser que en un bucle siempre convenga que una variable incremente y el bucle se acabe cuando la variable alcanza cierto valor, pero no estoy seguro, no veo por qué atarme a eso.
Sí y no. Un bucle for es un bucle contador, como te decía en el mensaje anterior, basa su fundamento en un valor conocido, por lo general previamente. Esto es, no requiere que sea constante:
para x = 5 a 20 <--- usa constantes
para x = j a k <--- usa variables, el límite final puede ir variando durante los ciclos...

Si un bucle contador no satisface tus necesidades, es ahí donde los bucles 'while... loop' tienen su utilidad.

¿Estoy equivocado en algo?
Más que equivocado, perdido... Tienes conocimientos muy sesgados que te limitan en exceso (a mi parecer).

Se <agradece ejemplo.
No entiendo esto último... si quieres un ejemplo de uso, ya te sugerí (en el mensaje previo) que programaras generar la función granizo, con ambos tipos de bucles...


En línea

4v1dy4

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: while(true) mala practica?
« Respuesta #11 en: 6 Enero 2023, 17:50 pm »

En fin, academias.

Dile a tu profesor que para todo escritor una sentencia no es necesaria mientras no puede pensarla.

while(no_pienso)
    prejuzgo();

Un ejemplo: Imaginate que implementas un servicio. El (programa) servidor recibe un paquete, el paquete contiene datos, y devuelve otro paquete con esos datos codificados en hexadecimal.

Pseudocodigo:

while(true) do:

remote_pkg=read_pkg(port);

if(is_invalid(remote_pkg)) do:
    local_pkg=err_msg();

else do:
    local_pkg=to_hex(remote_pkg);
   
    if(is_exit(remote_pkg)) do:
       exit();
    end if   

end if

if(!write_pkg(local_pkg, port)) do
    debug("error writing");

end while

¿Por que no implementarlo de otra forma?

La idea de un servicio es estar disponible siempre, para ser exactos, por lo tanto se implementa de esta forma, hasta que se exija lo contrario.

Por cierto, tal vez tu profesor no te anulo por haber utilizado un ciclo infinito sino porque la idea no era respectiva a la implementacion y no por precisamente utilizar un ciclo infinito. De otro modo, probablemente este prejuzgando.


« Última modificación: 6 Enero 2023, 17:56 pm por 4v1dy4 » En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: while(true) mala practica?
« Respuesta #12 en: 23 Febrero 2023, 15:08 pm »

ya que él while además de ser un bucle es como si fuera una función recursiva que se llama a si misma y los parámetros es lo que se tiene que cumplir para que el bucle genere ciclos (vueltas).

Esta analogía me dejó pensando!  ;)
En línea

Blowfish

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: while(true) mala practica?
« Respuesta #13 en: 15 Mayo 2023, 21:37 pm »

Es mala práctica definir un bucle infinito.
En su lugar podrías usar do-while.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines