Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Número O Letra
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Número O Letra 
 
Hola!.

Hay funciones de comprobación de tipo de datos que parece que ya no existen en gambas.
A pesar de eso, siguen apareciendo en la wiki. Como  es:



Imaginar este código. Quiero saber si es una letra o es un número.

Public Sub Main()

  Dim numerocadena As String
  
  numerocadena = "4"
  
  If IsNumber(numerocadena) Then Print "Es un número"
  
  ' No existe la función
  'If IsString(numerocadena) Then Print "Es una letra"
 
  If TypeOf(numerocadena) = gb.String Then Print "Es una letra"
  
  
End
 


El resultado seria:

Citar:

Es un número
Es una letra


Otra posibilidad de comprobar si solo es un número o una letra, podría ser:

If IsNumber(cadena) Then
    Print "Es un número"
  Else
    Print "Es una letra"
  Endif
 


Con una misma instrucción tenemos las dos posibilidades. O es cierto o es falso ( Siempre que estemos seguro que el parámetro es una cadena, claro)

Se me ha ocurrido que es posible hacer lo mismo de esta forma:

Public Sub Main()

 LetraONumero("A")
 LetraONumero("1")
  
End

Public Sub LetraONumero(cadena As String)
  
  Dim numero As Integer
  
  Try numero = CInt(cadena)
  If Error Then
    Print "Es una letra"
  Else
    Print "Es un número"
  Endif
    
End
 


Salida:

Citar:

Es una letra
Es un número


Quizás es un poco drastico usar ERROR. Si no uso esa forma, número almacenaría 0.
Cabe la posibilidad que el parámetro de la cadena fuera un cero.

En Python, con el tipo cadenas existen dos métodos para averiguar si es un número o es una letra.

cadena[indice].isalpha() # Comprueba si es una letra
cadena[indice].isnumeric() # Comprueba si es un número
 


Supongo que esos métodos que no existen debieron ser eliminados de la wiki.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 10 Octobre 2015, 12:03; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Com has escrito, a mi parece que el tu planteamiento con-funde el tipo de caracter con el tipo de dato.

Esto es una cadena, pero no es una letra del alfabeto, sino es un número.....un número de tipo String:
Dim s As String

s = "4"


Para saber si una expresión es una letra (...si tiene solo letras del alfabeto...ingles):



Esto... podria ser - o de todos modos referirse a - una letra... pero no es una cadena:
Dim b As Byte

   b = 97

 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
vuott escribió: [Ver mensaje]
Com has escrito, a mi parece que el tu planteamiento con-funde el tipo de caracter con el tipo de dato.

Esto es una cadena, pero no es una letra del alfabeto, sino es un número.....un número de tipo String:
Dim s As String

s = "4"



Correcto. Sabemos que es una cadena, pero como tal es un número dentro de una cadena.
Quizás yo quería saber que número se encuentra dentro de una cadena.

vuott escribió: 

Para saber si una expresión es una letra (...si tiene solo letras del alfabeto...ingles):

Las funciones con caracteres en gambas no las conocía. Ni llegue a verlas cuando estuve viendo el índice.
Otro despiste mas.

vuott escribió: 

Esto... podria ser - o de todos modos referirse a - una letra... pero no es una cadena:
Dim b As Byte

   b = 97
 


b no almacena una "letra", b solo es el nombre de un identificador, el nombre de una variable.
Distinto es:
"ar4io"

Y querer ver dentro de esa cadena, si existe un "número".

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Shell escribió: [Ver mensaje]
b no almacena una "letra"


......estás tan seguro ?    

Public Sub Main()

 Dim b As Byte

   b = 97
  
   Print Chr(b)

End







Shell escribió: [Ver mensaje]
En Python, .......averiguar si es un número o es una letra.

.........isalpha() # Comprueba si es una letra
 

 

Curiosidad:
gambas ofrece pero la posibilidad de usar el recurso parecido al metodo .isalpha() de Python, utilizando la función externa isalpha() de... C    

' int isalpha(int c)
' Checks if the passed character is alphabetic.
Private Extern isalpha(c As Integer) As Integer In "libc:6"


Public Sub Main()

 Dim i, c As Integer

   c = 97

   i = isalpha(c)
  
   Print Cbool(i), Chr(c)
 
End
    
 



 
última edición por vuott el Domingo, 11 Octobre 2015, 01:30; editado 5 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
vuott escribió: [Ver mensaje]
Shell escribió: [Ver mensaje]
b no almacena una "letra"


......estás tan seguro ?    


Sabía que ibas a usar un ejemplo para el código del carácter ascii.  
El código es distinto...eeee..no lo líes.

Recuerda que la idea de la pregunta es encontrar un número dentro de una cadena.  
Además b sigue almacenando un número, solo que tu has usado una función para
mostrar y convertir ese número a una cadena. ( si lo hubiera )...es lo contrario a lo que yo quiero.




Citar:

Curiosidad:
gambas ofrece pero la posibilidad de usar el recurso parecido al metodo .isalpha() de Python, utilizando la función externa isalpha() de... C    

' int isalpha(int c)
' Checks if the passed character is alphabetic.
Private Extern isalpha(c As Integer) As Integer In "libc:6"


Public Sub Main()

 Dim i, c As Integer

   c = 97

   i = isalpha(c)
  
   Print Cbool(i), Chr(c)
 
End
    


La segunda asignación no parece correcta. Debería ser un valor booleano lo que almacena i. La has definido del tipo entero.  

Bueno, es que si buscas:

Python.Wikipedia

Y ves donde dice "Influido por..". Hay diferentes lenguajes y entre ellos esta "C" y otros más.
Ya ves...Python tiene influencias de "C". Ahí está el problema!. La mala hierba!.    

Puede que tenga influencias, pero el código no resulta tan complejo.  
Es un código mas fácil de comprender, tanto como el programador quiera, claro.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Domingo, 11 Octobre 2015, 11:59; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Shell escribió: [Ver mensaje]
La segunda asignación no parece correcta. Debería ser un valor booleano lo que almacena i. La has definido del tipo entero.

En el standard C no existe el valor Booleano. Además la función isalpha() quiere un Entero y devuelve un Entero:
int isalpha(int c)

 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Citar:

En el standard C no existe el valor Booleano. Además la función isalpha() quiere un Entero y devuelve un Entero:


En Python el valor que devuelve es Boolean.  Vaya, en "C" no tenéis el tipo booleano.
Entonces no sabéis cuando es verdadero o falso. ¿ Cómo hacéis para  hacer eso con las condicionales ?.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Shell escribió: [Ver mensaje]
Vaya, en "C" no tenéis el tipo booleano.
Entonces no sabéis cuando es verdadero o falso. ¿ Cómo hacéis para  hacer eso con las condicionales ?.  



En C nosotros vivimos en un beato estado de absoluta y eterna Verdad.  
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Citar:

En C nosotros vivimos en un beato estado de absoluta y eterna Verdad

   

Ya me había dado cuenta. Que inocentes..
¿ Y eso no lo hace más complicado en ciertas ocasiones ?. A ver que dice el manual de C que tengo por aquí..
Así que ceros y unos. Entones expresiones como:

If valor then....
 


¿ No existen ?.
¿ Necesitáis  decir  ?.
If valor = 1 then...
 


Naturalmente el "Then" no existe tampoco en "C". En Python tampoco existe.
Lo que lleva a decir que en Basic se usan  instrucciones que pueden ser redundantes, pero te obliga a usarlas.

Asi que...
if (valor = 1)....
 


Demasiados paréntesis y llaves. Debe ser que el inventó el "C" era cerrajero.
Vaya lenguaje mas "sexua"...paréntesis y llaves..guarros!.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 12 Octobre 2015, 09:56; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número O Letra 
 
Shell escribió: [Ver mensaje]
¿ No existen ?.


Se hace referencia a 0 y 1.



Shell escribió: [Ver mensaje]
Vaya lenguaje mas "sexua"...paréntesis y llaves..guarros!

El C es un himno a la vida.    
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Tamaño De Letra De IDE De Gambas QuImotXo General 6 Miercoles, 04 Noviembre 2009, 15:45 Ver último mensaje
jguardon
No hay nuevos mensajes Ejemplo De Busqueda En Un Listbox, Letra A... Shell Aplicaciones/Fragmentos de Código 1 Viernes, 25 Marzo 2016, 22:07 Ver último mensaje
reyes
No hay nuevos mensajes Validacion De Letra Ñ yireh General 1 Martes, 19 Abril 2016, 08:45 Ver último mensaje
vuott
No hay nuevos mensajes Problemas Con La Letra Ñ gones Bases de Datos 1 Viernes, 05 Julio 2019, 13:16 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron