Re: tutorial findString

Diego Gomez Deck <[email protected]>
Newsgroups gmane.education.small-land
Message-ID <1092583586.6283.42.camel@runabout>
Hola Esteban,


> Hola colisteros, 
> soy Esteban. Puse una pregunta en el foro sobre "cómo buscar una
> palabra en un texto y asociar un evento a ella". Me respondió Manolón.
> Utilicé su respuesta y me fui de vacaciones; en concreto a escalar el
> Naranjo de Bulnes en Asturias ;-)


Que envidia! :-)


> Allí no pude darme cuenta de las
> múltiples reflexiones que se habían generado a partir de ese hilo.
> Ahora que he vuelto y, como de forma temeraria prometí, tengo listo un
> modestísimo tutorial sobre lo que quería hacer (en sus primero pasos,
>  porque es un proyecto más largo). 


Ví el PDF que subiste a yahoogroups... si no es mucha molestia, te
pediría que escribas el tutorial en nuestro swiki que es donde
pretendemos concentrar toda la información.  Si no sabés como usar el
swiki, etc, preguntá que encantados te damos más información.


> De todas las interesantes respuestas que he leído, me gusta
> especialmente ésta: 
> 
> --- Diego Gomez Deck wrote:
> 
> > ¿Qué es lo que hace falta que el Squeak haga?
> 
> Llevo muy poco tiempo con Squeak y me gusta. Sin embargo, se nota muy
> orientado a problemas de 'tipo ingeniero'. La mayoría de los guiones
> prediseñados son 'avanza', 'rota', 'multiplica', etc. Pero creo que
> hay mucha gente interesada en aplicaciones sobre lenguaje natural. En
> concreto, mi carta a los reyes magos, consistiría en lo siguiente:
> 
> 1.Un guión en la categoría texto para buscar una cadena de caracteres
> en un texto. 


Esto es bastante fácil de hacer.  Lo que me gustaría, antes de hacerlo,
es que hagamos una pequeña carta a los reyes de que tipo de
procesamiento de cadenas necesitamos (además, claro, del findString).

Una primera lista que puede servir como inicio para la discusión puede
ser:

- contains (contiene): si el texto contiene otro texto.

- containsWord: (buscar palabra) que buscaría Platón y no daría
verdadero cuando esté la palabra "Platona".

- startsWith (empieza con)

- endsWith (termina con)

- asUpperCase (como mayúsculas): devuelve una cadena pero con todos los
caracteres en mayúsculas.  Esto es útil para usar en combinación con las
opciones de búsqueda, para que se encuentre con cualquier combinación de
mayúsculas minúsculas. Ejemplo:

  texto asUpperCase startsWith: 'HABÍA UNA VEZ'

En ese ejemplo, cualquier cadena que comience con 'había una vez' o
'HaBÍa uNa Vez' o 'HABÍA UNA VEZ' daría "verdadero".

- asLowerCase (como minúsculas): idem al anterior, pero al revés.

La otra opción, para evitar que tener que concatenar 2 opciones, es
duplicar las funciones de búsqueda y hacerlas todas duplicadas (una que
busque respetando mayúsculas/minúsculas y la otra que ignore esas
diferencias). Ejm:  endsWith y endsWithIgnoringCase, containsWord y
containsWordIgnoringCase, etc.

- match (coincide): Esta función permitiría comparaciones con caracteres
'comodín' (como el * del viejo DOS).  Ejemplos de uso:

  '*pepe*'     match: 'pepe'             --> verdadero
  '*pepe*'     match: 'pepa'             --> false
  '*pepe*'     match: 'xxx pepe yyy'     --> verdadero
  'pepe*'      match: 'xxx pepe'         --> false
  'pepe*pepa'  match: 'pepe ama a pepa'  --> verdadero

Esta última es interesante porque incluye a varias de las anteriores,
ejemplo:

   'pepe*'  match: algo   >>equivale a>>  algo startsWidth: 'pepe'.
   '*pepe'  match: algo   >>equivale a>>  algo endsWidth: 'pepe'.
   '*pepe*' match: algo   >>equivale a>>  algo contains: 'pepe'.

Comentarios?


> Obsérvese que findString da positivo cuando encuentra
> 'Platón' y cuando encuentra 'Platona', lo que ¿quizás? es fácil de
> mejorar.
> 
> 2.Más efectos lógicos: me explico. Una "prueba" en un guión
> corresponde a lo que en lenguaje natural llamamos un condicional:
> 
> si encuentra la palabra clave 'Platón' muestra en la salida el texto
> correspondiente
> 
> Sin embargo, ¿hay una forma tan eficiente para activar un evento
> cuando ocurra una conjunción de objetivos, por ejemplo, encuentre
> "Platón" y "ética" ? 


Esto lo podés hacer hoy, anidando cajas de prueba.  Ejemplo:





> ¿Existe una forma tan eficiente para activar un evento cuando ocurra
> una disyunción de objetivos, por ejemplo "Platón" o "ética"?


Esto se lograría con una caja de prueba detrás de otra caja de prueba.





Saludos,

-- Diego
condiciones OR.jpeg (image/jpeg, 21.3 KB) - not displayed
condiciones anidadas.jpeg (image/jpeg, 36.7 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.