Páginas (2): 1 2   
tincho   14-04-2021, 12:17
#1
Hola a todos.
En este tema voy a ir poniendo funciones que estoy agregando a la clase String para hacer que esta se parezca mas a su equivalente en otros lenguajes como Javascript, Go, etc.
Si alguno desea comentar corregir o agregar algo esta invitado a hacerlo, eso si, por favor comente si la función existe en otro lenguaje, para poder referenciarlo y por favor coloque la descripción de esta en inglés.
Mi intensión es proponer luego a los desarrolladores de Gambas la colección de nuevas funciones.
Ejemplo de la versión gambas de la función Compare del paquete strings del lenguaje GO
Código:
'' <b>GO Package strings</b><br>
'' <u>Compare</u> returns an integer comparing two strings lexicographically. The result will be 0 If a == b, -1 If a < b, And +1 If a > b.

Static Public Function Compare(a As String, b As String) As Integer
  If a == b Then
    Return 0
  Else
    If a < b Then
      Return -1
    Else
      Return 1
    Endif
  Endif
End

Saludos
Última modificación: 03-04-2022, 19:42 por tincho.

1 Saludo.
vuott   14-04-2021, 17:44
#2
Perdóname, tincho, ¿puedes aclarar mejor tu intención que los Métodos Confused ya poseídos por la Clase String ?

   https://gambaswiki.org/wiki/cat/string
Última modificación: 14-04-2021, 17:45 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   14-04-2021, 21:45
#3
(14-04-2021, 17:44)vuott escribió: Perdóname, tincho, ¿puedes aclarar mejor tu intención que los Métodos Confused ya poseídos por la Clase String ?

Las funciones que existen en la clase nativa String no las modificare en absoluto solo agregare funciones que no existan en esta ni en gb.Util.
Todo lo que agregue estará en un archivo llamado String.class en mi proyecto local gambas. Tal vez en el futuro toda esta recopilación de funciones podría ir a parar a gb.util, pero eso lo conversare mas adelante con Benoîte.
Saludos
Última modificación: 15-04-2021, 10:36 por tincho.

1 Saludo.
guizans   17-04-2021, 17:44
#4
Hola.

En Gambas ya existe una función que hace eso, y es un poco mas completa.

https://gambaswiki.org/wiki/lang/comp

Un saludo.

P.D.: Hace ya algún tiempo, estando aburrido, amplié la clase String pero me basé en Python, sin mirar el código fuente de Python, es decir, a ojo de buen cubero como entretenimiento. Te subo el archivo, si ves que alguna puede servir, adelante. Aviso que no están en inglés, y la explicación de lo que hace cada función es algo vaga. Cosas del directo, jajajaja.


P.D.2: No me deja subir el archivo, o no se hacerlo. Pongo un enlace donde está almacenada el archivo en mi nube. https://cloud.disroot.org/s/3WFP3qtiJpsiFz8
Última modificación: 17-04-2021, 18:24 por guizans.
tincho   17-04-2021, 18:16
#5
(17-04-2021, 17:44)guizans escribió: En Gambas ya existe una función que hace eso, y es un poco mas completa.
Tenes razón. tiene la opción de decir que método de comparación usar.
Lo voy a estudiar, gracias.
Saludos

1 Saludo.
guizans   17-04-2021, 18:27
#6
De nada. He editado mi respuesta anterior, échale un ojo.

Un saludo.
tincho   17-04-2021, 18:54
#7
(17-04-2021, 18:27)guizans escribió: He editado mi respuesta anterior, échale un ojo.

ok, me lo descargue, lo voy a estudiar, gracias por el aporte.

Recién hice una prueba de rendimiento y si lo hice bien String.Comp es un 50% mas rápido que la que hice yo String.Compare (que usa ==)
Saludos.

1 Saludo.
AlfredoSC   21-04-2021, 18:54
#8
Hola tincho:

Voy a "colgarme" de este hilo porque me pareció que aquí está la respuesta a una programación que estoy haciendo en Gambas.

Resulta que quiero hacer el software de una antigua calculadora CASIO FX800 y encuentro que el operario tiene que introducir por ejemplo:

3.1416*SIN30 + 2

Y finalmente oprimir el botón EXECUTE para dar el resultado.

Estuve haciendo ensayos para ir recorriendo ese String y asignar una variable a 3.1416, luego otra variable al símbolo *, luego otra variable a SIN, otra mas para el signo + y finalmente otra para el 2.

Así podría calcular por prioridades el SIN30, luego multiplicar por 3.1416 y finalmente sumar 2 y dar el resultado....

Así es como funciona esa calculadora y no me puedo dar el lujo de cambiar ese método. Se te ocurren algunas "extensiones" al método String que puedan hacer eso???

Saludos...

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
tincho   21-04-2021, 20:12
#9
(21-04-2021, 18:54)AlfredoSC escribió: Se te ocurren algunas "extensiones" al método String que puedan hacer eso???

Hola Alfredo, si la verdad que no seria muy complicado hacer una extensión que convierta una cadena en una fórmula.
Si quieres te ayudo. pero tendrías que definir las prioridades de símbolos, por ejemplo lo que esta entre paréntesis va antes que lo demás, las sumas van después de las multiplicaciones etc. etc.
Pasame algunos ejemplos mas y veo que sale t le vamos dando forma.
Saludos.

1 Saludo.
tincho   23-04-2021, 22:54
#10
(21-04-2021, 18:54)AlfredoSC escribió: 3.1416*SIN30 + 2

Alfredo, luego de hacer una mega formula para preparar una sentencia traducida desde "3.1416*SIN30 + 2" a "3.1416 * Sin( Rad(30) ) + 2" que es lo que lee la funcion Eval caigo en la cuenta que no tiene sentido, puesto que al tratarse de un programa emulador de la calculadora la sentencia se va escribiendo a medida que se pulsan los botones.
Bien me pregunto ¿Por que no crear la sentencia en el formato que es compatible con Eval ? eso resolveria el problema de forma muy sencilla.
Si al teclear podemos escribir esto > "3.1416*SIN30 + 2"
También podíamos escribir esto otro > "3.1416 * Sin( Rad(30) ) + 2"
De esta manera la calculadora se resume a prepara la sentencia para Eval y listo.

Saludos.

1 Saludo.
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.