Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Salvadoruve2 en 04 de Junio 2016, 15:57

Título: for JavaScript (bucles) Saber tamaño de array con length. Break ejemplo CU01131E
Publicado por: Salvadoruve2 en 04 de Junio 2016, 15:57
Hola buenas, escribo este post no por que haya resulto el ejercicio, sino todo lo contrario es por que me he atascado en este apartado del curso y no puedo avanzar. El ejercicio es el CU01131E del tutorial básico de programador web JavaScript.

Mi problema es que no llego a entender como funciona la función 'for'. Y es que intento entender los dos ejemplos propuestos en este apartado por el curso, pero no logro entenderlos.

No entiendo como esto:

Código: [Seleccionar]
function ejemploFor() {

var palabra = 'Esternocleidomastoideo';

var subpalabra = new Array();

subpalabra[0]='';

var msg = 'Diez primeras letras: \n\n';

for (var i=1; i<=10; i++){subpalabra[i] = subpalabra[i-1] + palabra.charAt(i-1);}

for (var i=1; i<=10; i++){msg = msg + subpalabra[i] +'\n';}

msg = msg + '\nPalabra al revés: \n\n';

for (var i=palabra.length; i>0; i--){

msg = msg + palabra.charAt(i-1);

}

alert (msg);

}

puede llegar a convertirse en esto:

Diez primeras letras:

E
Es
Est
Este
Ester
Estern
Esterno
Esternoc
Esternocl
Esternocle

Palabra al revés:

oediotsamodielconretsE


No escribiría pidiendo ayuda si no me sintiera realmente frustado por que me impide avanzar en el curso. Hay alguna manera de explicarme mejor como funciona la estructura de bucles con los mismos ejemplos del apartado del curso.

Muchas gracias
Título: Re:(CU01131E) for JavaScript (bucles) Saber tamaño de array con length. Break (dete
Publicado por: pedro,, en 05 de Junio 2016, 01:12
Hola Salvadoruve2.

Primer for:
Código: [Seleccionar]
for (var i=1; i<=10; i++){
subpalabra[i] = subpalabra[i-1] + palabra.charAt(i-1);
}
En la primera línea del for especificamos las veces que debe ejecutarse el bucle, en este caso serán 10 veces, empezando con i=1 hasta i=10, y con i++ lo que hacemos es incrementamos el valor de i en una unidad cada vez que se ejecute el bucle.

Cuando i = 1;
subpalbra[1] = (subpalabra[1-1=0] es igual '') +  (palbra.chartAt(1-1=0) = 'E');
Con i=2;
subpalabra[2] = (subpalabra[2-1=1] que es igual a 'E') + (palabra.charAt(2-1=1) que es igual a 's');
Con i=3;
subpalabra[3] = (subpalabra[3-1=2] que es igual a 'Es') + (palabra.charAt(3-1=2) que es igual a 't');
Con i=4;
subpalabra[4] = (subpalabra[4-1=3] que es igual a 'Est') + (palabra.charAt(4-1=3) que es igual a 'e');
...
Con i=10;
subpalabra[10] = (subpalabra[10-1=9] que es igual a 'Esternocl') + (palabra.charAt(10-1=9) que es igual a 'e');

En el segundo for, lo que hacemos es guardar los valores de cada elemento del array subpalabra[] dentro de la variable msg, y a cada vez que añadimos un valor a la variable msg, también añadimos un salto de línea, '\n'. Este bucle también se ejecutará 10 veces como el primero.

El tercer bucle, añade a la variable msg la palabra al revés. En este caso el bucle empieza desde i = 22 hasta llegar a i=1, para ir introduciendo las letras una a una empezando desde el final de la palabra.
Código: [Seleccionar]
for (var i=palabra.length; i>0; i--){

msg = msg + palabra.charAt(i-1);

}


Espero que te valga, pero si sigues teniendo dudas, dilo.

Saludos. ;D
Título: Re:(CU01131E) for JavaScript (bucles) Saber tamaño de array con length. Break (dete
Publicado por: Salvadoruve2 en 05 de Junio 2016, 12:19
Vale vale vale ya lo he entendido.. el primer for es para darle valores a la matriz subpalabra... y el segundo for es para incrustar esos valores en la variable msg para poder luego mostrarlos en la alerta... ..... madre mia lo que me ha costado

El tercer apartado de este ejemplo también lo he logrado entender despues de aplicar la lógica aprendida.

Cuando sea capaz de asimilar esto si no te importa volveré a escribir una entrada para poder entender el ejemplo numero dos del apartado. El refetente al cambio de colores de las etiquetas <p>.

Pero primero voy a volver a verlo con lo aprendido.

muchas gracias