Le preguntaría a mi instructor, pero cada vez que lo hago, me da una respuesta aún más vaga a mis preguntas, así que les pido ayuda a todos. "Aprendimos" (es decir, vimos videos) sobre los bucles for y while y lo entiendo, siento que lo hago, pero cada vez que se trata de hacer las tareas asignadas, siento que no tienen sentido. Como en la clase de matemáticas en la escuela secundaria, te enseñaban sobre los problemas, pero luego, cuando llegaba el momento de hacer tu tarea, los problemas eran completamente diferentes a los que acababas de aprender. Por ejemplo, dice que la estructura básica del ciclo while es:
while(condition is true) { //do something }Pero luego en esta tarea, me da:
// Another way to write a while loop is to have a boolean variable // where the condition goes and then test every time if you need to // change the boolean to false. // Below we have a variable lessThan5 and it is set to true. // Create a loop that tests if our variable 'j' is less than 5. // If it is less than 5 then Increment it by 1. If it is not // less than 5 then set our lessThan5 variable to be false. let lessThan5 = true; let j = 0; while(lessThan5) { }No aprendimos nada sobre el uso de valores booleanos en bucles while y siento que debo inferir qué hacer y qué estructura usar y simplemente no tengo idea. Aparte del hecho de que siento que las instrucciones para muchas de estas preguntas están mal redactadas, ¡lo que solo me confunde más!
Entonces está este tercero:
// Example of what the number game would look like: // Couple things to note: // Math is a built in object in javascript. // Math.round() will round a decimal number to a whole number. // Math.random() returns a decimal number between 0 to 1. // (But not including 1) function guessNumberGame(guess) { let guessing = true; let number = Math.round(Math.random() * 100); while(guessing) { if(guess === number) { guessing = false; } else { guess = Number(prompt("That number didn't work. Try again: ")); } } } // Problem 3 // We will give you a number through the 'num' parameter // Create a while loop that will loop 'num' amount of times. // For example if num is 3 then your while loop should loop 3 times // If num is 20 then the loop should loop 20 times. // Increment k every loop. let k = 0; function keepLooping(num) { }Si este Problema 3 está destinado a estar relacionado de alguna manera con el ejemplo del juego de números, no puedo verlo. Ni siquiera sé qué es lo que necesito preguntar. ¿Tiene esto sentido para alguien? Y nadie más está haciendo preguntas públicamente sobre nada de esto, y me hace sentir estúpido y como si yo fuera el único demasiado tonto para entender lo que está pasando. Me estaba yendo muy bien y antes de lo previsto con todo esto hasta este momento, pero nada de esto tiene sentido para mí.
¡Bienvenido a la programación, JavaScript (JS) y StackOverflow (SO)!
Profundicemos un poco más en esto. Primero, una introducción rápida a JavaScript: en JavaScript, todo se puede clasificar como una expresión o una declaración . A un nivel súper alto y no técnico:
expresión : algo que produce un valor
instrucción : una instrucción para la computadora
(Para una explicación mucho más larga, ver aquí )
A menudo, las declaraciones tienen ranuras que pueden tomar expresiones . Los bucles son un gran ejemplo de eso.
Por ejemplo, 1 + 1 es una expresión, ya que produce el valor 2 . Aún más simple, 1 por sí solo también es una expresión, ya que produce el valor 1 . while(/*some expression here*/) es una declaración que tiene un espacio para una expresión . for(s1, e2, e3) también es una declaración que tiene ranuras para declaraciones y ranuras .
Por lo tanto, el bucle while actúa sobre una expresión y continuará en bucle mientras el valor devuelto por esa expresión sea verdadero. verdad y falsedad es un concepto interesante en JavaScript y puede ser un ensayo completo por sí mismo, pero el tl; dr de esto es que todo lo que == true es verdadero, y cualquier cosa que == false es falso
Entonces, para su primera pregunta, 0 < 5 == true , mientras que 5 < 5 == false . Por lo tanto, si hace que el valor de j sea mayor o igual a 5, el ciclo se romperá.
let lessThan5 = true; let j = 0; while(lessThan5) { // For each cycle of the loop, check if `j` is less than 5 if (j < 5) { // If `j` is less than 5, increment it j++; // This is equivalent to saying j = j + 1, or j += 1 } else { // If `j` is not less than 5, set `lessThan5` to `false` // Not when the loop goes to iterate again, `false == false`, and it stops lessThan5 = false; } }Creo que dado lo anterior, debería poder resolver el tercer problema. Háganos saber si tiene problemas con él, muéstrenos lo que intenta y estaremos encantados de ayudarlo un poco más :)
Respiremos hondo y relajémonos. Soy un desarrollador muy senior y no puedo decir, a partir de sus ejemplos, qué está pasando aquí. Tal vez eso se deba a que su instructor es terrible, tal vez se deba a que se perdió algo de contexto en su clase, por lo que se omite en la pregunta.
Puedo responder a las dos preguntas que te han hecho. Espero que sea útil.
Primero:
No sé por qué sus materiales afirman que un bucle while podría escribirse de esta manera. He completado la tarea, pero parece muy extraño. Pero si quieren que lo completes, aquí tienes una solución.
// Another way to write a while loop is to have a boolean variable // where the condition goes and then test every time if you need to // change the boolean to false. // Below we have a variable lessThan5 and it is set to true. // Create a loop that tests if our variable 'j' is less than 5. // If it is less than 5 then Increment it by 1. If it is not // less than 5 then set our lessThan5 variable to be false. let lessThan5 = true; let j = 0; while(lessThan5) { if (j >= 5) { lessThan5 = false; } else { j++; } } Pasando al segundo fragmento, el segundo fragmento, para mí, no parece estar relacionado con guessNumberGame de ninguna manera.
Y la solución al "Problema 3" me parece inútil. Un bucle que no hace nada no es útil en la vida real.
Dicho esto, la solución al "Problema 3" es la siguiente:
// Problem 3 // We will give you a number through the 'num' parameter // Create a while loop that will loop 'num' amount of times. // For example if num is 3 then your while loop should loop 3 times // If num is 20 then the loop should loop 20 times. // Increment k every loop. let k = 0; function keepLooping(num) { while(k < num) { k++; } }