Hola,

Estoy preparando el tutorial 23. Los temas que trabajaremos serán:

Matrices: métodos para añadir elementos, eliminar, remidensionar...

Bucles: bucle for (desde ...hasta) bucle while (mientras...)

Seguiremos trabajando con cadenas pero combinándolo con matrices.

Como la programación será más compleja vamos a usar lo que se denomina pseudocódigo que no es más que escribir, antes de poner el código, todos los pasos en nuestro lenguaje.

Vamos a dar un pasito más en la complejidad del lenguaje del ordenador.

Espero que antes de un par de días lo pueda publicar aquí.

Visitas: 1097

Respuestas a esta discusión

Hola,

 

Vamos a empezar el tutorial. Lo iré explicando aquí poco a poco y después lo paso a pdf y lo cuelgo.

Vamos a empezar por partes. En este mensaje empezamos a crear los elementos gráficos, campos de texto...

En la aplicación que desarrollo yo he elegido como frases refranes pero cada uno de vosotros puede elegir el contenido que desee.

 

En este tutorial  vamos a dar un paso más en el uso de matrices y bucles. Estudiaremos algunos métodos aplicados a las matrices. Aunque se llaman métodos también podemos considerarlos como funciones. En el caso de los bucles ya conocemos el bucle for. En este tutorial vamos a introducir el bucle do… while.

Para practicar con estos nuevos elementos vamos a crear una aplicación que hará lo siguiente:

1.- El programa escogerá una frase al azar de entre unas 20.

2.- La dividirá en palabras usando matrices y bucles.

3.- Desordenará estas palabras utilizando también matrices y bucles.

4.- Almacenará estas palabras en una variable para crear la frase desordenada.

La idea del juego es que el usuario debe escribir la frase ordenada.

 

Los elementos del interface a modo de maqueta podrían ser algo parecido a esto:

 

 

También vamos a empezar a crear el contenido, la base datos baada en matrices:

 

 

Así que ya podéis empezar a trabajar que  nos queda camino por delante :)

 

 

 

 

 

Vamos a por la segunda parte de la aplicación:

 

1.- ASIGNACIÓN DE VARIABLES INICIALES



 

El siguiente paso será crear las siguientes variables y asignarles un valor inicial o lo que es lo mismo inicializar las variables.

La variable _root.palabra_registrada nos va a servir para ir almacenando letra por letra hasta que se encuentre un espacio. Esta función la hará dentro de un bucle. Esta función se comprenderá mejor cuando la veamos integrada en el bucle.

La variable _root.frase_desordenada  almacenará todas las palabras de la frase pero desordenadas.

La matriz palabras ira almacenando palabra por palabra pero cada una en una variable diferente palabra[1], palabra[2]

La variable _root.num_palabra nos servirá para identificar el índice de la matriz y de esta forma podemos referirnos a cualquier elemento directamente.  Por ejemplo si num_palabra vale 7 entonces   frases[num_palabra]=”En agosto frío en el rostro”.

La variable _root.solución nos servirá para registrar una frase aleatoria entre las 21.

 

Seguimos en la próxima...

 

2.- FUNCIÓN PARA DIVIDIR LA FRASE EN PALABRAS


Haz clic en la imagen para ver en alta calidad


La función que se explica detalladamente en la imagen  se ejecutará al inicio del programa y siempre que pulsemos el botón +.

La función primero inicializa o resetea la matriz palabra y también la variable _root.palabra_registada. Posteriormente se escoge una frase al azar y se pasa a un bucle de repetición que se usa para ir recorriendo letra a letra toda las frase y con el objetivo de detectar cuando existe una palabra.  Por eso cuando llega a un espacio en blanco se almacena la palabra en la matriz. Mientras no se llega al espacio en blanco el bucle va acumulando las letras en la variable _root.palabra_registrada.

El contador _root.palabra++  se encarga  de aumentar el índice de la matriz después de detectada y almacenada la palabra.

La última línea  palabras[num_palabra] = _root.palabra_registrada registra la última palabra en la matriz ya que después de la última palabra de una frase no hay espacio en blanco.

 

3.- FUNCIÓN PARA DESORDENAR LAS PALABRAS DE LA FRASE.

Haz clip en la imagen para ver en alta calidad


En la imagen vemos cómo crear la función para desordenar las palabras. Recordemos que ya tenemos cada palabra como un elemento distinto en la matriz. Pero estas palabras están ordenadas y lo que queremos es que cada vez que se pulse el botón + se desordene la frase. Es decir no solamente en esta aplicación saldrá un frase diferente sino que dentro de cada ejercicio no siempre saldrá la frase igual de desordenada.

Vamos a ver qué hace la función. Para empezar inicializar la variable _root.frase_desordenada= ”” y vacía de contenido la variable pues cada vez que generemos un actividad nueva esa variable debe empezar a acumular las palabras desde el vacío sino al se acumularían las del ejercicio anterior.

 

Ahora introducimos un bucle nuevo.

 

do { // Significa  haz, repite.

 

      // aquí se pone el códifo que se debe repetir

 

}     while (palabras.length>0); //  mientras la longitud de la matriz palabras es mayor que 0

 

Es decir este tipo de bucle hace repeticiones mientras se cumpla una condición. En este caso repite mientras la longitud de la matriz sea mayor que 0.

 

 Lo que queremos hacer es generar tantos números aleatorios como elementos tenga la matriz palabras. Una vez que tenemos un número aleatorio , entonces lo utilizamos como índice del elemento de la matriz   palabras[_root.num_palabra] y de esta forma almacenamos la frase en _root.frase_desordenada. Cada vez que generemos un número aleatorio lo que estamos haciendo es elegir una frase en la matriz.

 

Pero surge un problema. Puede pasar que el programa empiece a repetir números aleatorios y esto nos daría dos problemas más. Uno que empezarían  salir palabras repetidas en las frases y el otro y más importante es que el bucle sería infinito ya que la longitud de la matriz siempre sería más grande que 0 y en este caso se produce un bloqueo nada bueno  en el ordenador.  La solución y el pensamiento lógico nos hace eliminar el elemento de la matriz que ha salido aleatoriamente una vez se ha registrado en la _root.frase_desordenada.  Así al eliminar ese elemento, la matriz se hace una unidad más pequeña y la próxima vez ya no podrá salir esa palabra. Al repetirse el bluce llegará un momento que será menor que 0 y es en este momento cuando se produce el stop del bucle.

 

Para eliminar elementos en una matriz utilizamos el siguiente método splice(desde,num elementos borrados):

 

palabras.splice(_root.num_palabra,1);// Una vez añadida la palabra a la frase, borramos esa palabra de la matriz.


Finalmente ejecutamos las funciones:

 

_root.dividir_en_palabras();
_root.desordenar_frase();

 

Recordemos ejecutarlas también en el botón +




 

 

 

 

4. EJERCICIO PROPUESTO.

 

Se puede terminar este mismo ejercicio u otro similar donde se trabajen las nuevas funciones estudiadas. Sería interesante que en caso de error el programa indicara con algún signo  por ejemplo el signo de "?"  los errores como en el ejemplo que se muestra aquí:

 

He embebido aquí mismo la aplicación:Reconstruyendo Refranes

 


 

 

Podemos observar cómo si sale la misma frase al azar no siempre saldrá en el mismo desorden.

Ahora me faltaría añadir contadores y registro de las frases que ha hecho bien. Intentaré hacer una segunda versión más completa.

Archivos adjuntos
Después de estar haciéndolo... sin funcionar, varias veces ... resolviendo los fallos... Ahora siempre me da fallo y no entiendo por qué...
¿Alguna ayuda?
Archivos adjuntos
Es el ajuste automático del cuadro de texto. Tienes que quitarlo porque introduce caracteres ocultos ascii. Al menos eso creo y así si funciona.
¡¡¡Buaaahhh!! Perfecto ¡¡¡Gracias!!!
Un pequeño ajuste ...
Archivos adjuntos
Buen trabajo Juan Manuel. Ahora si que nos has cojido.

Juan Manuel Cortés Fernández dijo:
Un pequeño ajuste ...

 

Os dejo aquí el ejercicio del tutorial terminado y con algunas funcionalidades más que comenté en este post

 

 

Voy a sacarle más provecho al tutorial. A partir de esta aplicación, y modificándola,  voy hacer otra que haga lo siguiente:

 

  • Dividir cada frase en sintagmas o grupos de palabras.
  • Desordenar  aleatoriamente.estos grupos de palabras.
  • Presentar en columna los grupos dentro de un cuadro de texto.

 

El objetivo de la aplicación sería que el usuario seleccione cada grupo o sintagma en un cuadro de texto y luego los pegue en otro para construir el significado completo de la frase.

 

La aplicación se llamará "Atrapa la Definción".  El tema versará sobre conceptos informáticos y TIC. El programa dispondrá de una bateria de 30 definiciones para reconstruir. La finalidad pedagógica es practicar la comprensión lectora. A partir de la lectura de sintagmas aislados el usuario debe leer primero todos y establecer las relaciones sintácticas necesarias para comprender el sentido.

 

Respecto al tema de la interactividad mantendrá la misma que la aplicación anterior: refuerzo positivo en caso de acierto, en caso de error el programa identificará mediante un signo los errores. Añadimos una pequeña modificación y es que en caso de comprobación y no habiendo terminado la frase el programa no rellene con signos de interrogación todos los espacios en blanco.

 

Respecto al diseño solo cambiaremos el color y el dibujo de la portada que será la de un águila atrapando algo.

 

Si os animáis podéis hacer alguna modificación como esta.

 

Sobre el tema de programación: ¿Cómo hacer que la frase se divida en sintagmas o grupos de palabras? Ahí va una pista: cuando pongamos las frases en las matrices escribiremos por ejemplo un asterisco entre los grupos de palabras que nos interesen. Despues en la función dividir_frases, en ves de dividirlas poe el epacio en blanco las divideremos por el asteriso.

 

 

 

 

 

RSS

© 2024   Creado por roger.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio