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...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).
Al parecer pueden complicarse las barbas exasperadamente pero son incapaces de usar el mismo operador para expresar igualdad y asignación, eso les parece 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...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
...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......
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...
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...