Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Comenzar a programar
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Comenzar a programar 
 
Haber vuelvo otra vez a la carga, ahora me estoy leyendo el libro de gambas, que es bastante explicativo, pero tengo una duda con un ejemplo que dan, porque yo a la vez que me lo voy leyendo voy haciendo los ejemplos y modificandolos según vea oportuno y ahora os quiero mostrar un ejemplo que modifique porque creo que esta mal hecho por que da muchas incoherencias. He aquí el ejemplo (Pag 61)


' gambas module file

Dim Edad As Integer


.................


If Edad >20 Then
  Print "Adulto"
Endif
If Edad >20 Then Print "Adulto"
If Edad < 2 And Edad > 0 Then
  Print "Bebe"
Else If Edad < 12 Then
  Print "Niño"
Else If Edad < 18 Then
  Print "Joven"
Else
  Print "Adulto"
Endif
End


Pero yo al probar el código me daba cuenta de que al poner una edad mayor de 20 años la consola me repetía el nombre Adulto, por lo tanto hice estas modificaciones, haber que piensan ustedes, y haber que moficarían ustedes.

' gambas module file

' Este código no corresponde con el ejemplo de la Pag.61 , este ejemplo ha sido modificado por Alejandro Moya Moya debido a las grandes
' incoherencias vistas en el libro, a su vez se ha añadido el campo Edad para poder probar el programa.
Public Sub Main()
Dim Edad As Integer
' Modifique la edad como usted quiera
Edad = 12

If Edad >= 18 Then
  Print "Adulto"
Endif
If Edad < 2 And Edad >= 0 Then
  Print "Bebe"
Else If Edad < 12 Then
  Print "Niño"
Else If Edad < 18 Then
  Print "Joven"
  
Endif
End

 



 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problemas Para Publicar Mi Programa En "El Centro De Software De Ubuntu" 
 
Radietor:
Citar:
al probar el código me daba cuenta de que al poner una edad mayor de 20 años la consola me repetía el nombre Adulto

Te ocurre porque el codigo tiene dos veces la misma comprobación de la edad
Código: [Descargar] [Ocultar]
  1. If Edad >20 Then
  2.  Print "Adulto"
  3. Endif
  4. If Edad >20 Then Print "Adulto"


Fijate que en las lineas 1 y 4 , se hace la misma comprobación, y si la edad es mayor que 20, entonces va a escribir 2 veces "Adulto"


Sobre tu modificación es correcta, pero cuando pones en el comentario:
....a su vez se ha añadido el campo Edad para...

Es incorrecto lo que dices, no un campo, es una variable, y si lo quieres poner mejor puede añadir que es una variable del tipo integer

Con este ejemplo , añadiendole la orden "input", puedes usarlo para que te pida el valor de la edad, y asi ver como funciona con distintos valores.


Otra cosa que te va a ayudar mucho es usar el "Depurador", con el cual puedes poner un punto de interrupción y ver como se ejecuta el programa paso a paso, viendo los valores que va tomando las distintas variables. Es muy interesante.

Mirate este video tutorial: http://foro.gambas-es.org/viewtopic.php?f=10&t=1348




Nota:
Consejo: Crea un nuevo hilo para comentar otros problemas que ya no tengan que ver con el tema principal Problemas Para Publicar Mi Programa En "El Centro De Software De Ubuntu", para que sea más fácil ayudarte y  que sea util para otros.

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comenzar A Programar 
 
Por eso no vi el tema.Creía que se estaba hablando de otra cosa.  

Bueno, la próxima vez hay que afinar la puntería.

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: Comenzar A Programar 
 
jsbsan escribió: [Ver mensaje]
Radietor:
Citar:
al probar el código me daba cuenta de que al poner una edad mayor de 20 años la consola me repetía el nombre Adulto

Te ocurre porque el codigo tiene dos veces la misma comprobación de la edad
Código: [Descargar] [Ocultar]
  1. If Edad >20 Then
  2.  Print "Adulto"
  3. Endif
  4. If Edad >20 Then Print "Adulto"


Fijate que en las lineas 1 y 4 , se hace la misma comprobación, y si la edad es mayor que 20, entonces va a escribir 2 veces "Adulto"


Sobre tu modificación es correcta, pero cuando pones en el comentario:
....a su vez se ha añadido el campo Edad para...

Es incorrecto lo que dices, no un campo, es una variable, y si lo quieres poner mejor puede añadir que es una variable del tipo integer

Con este ejemplo , añadiendole la orden "input", puedes usarlo para que te pida el valor de la edad, y asi ver como funciona con distintos valores.


Otra cosa que te va a ayudar mucho es usar el "Depurador", con el cual puedes poner un punto de interrupción y ver como se ejecuta el programa paso a paso, viendo los valores que va tomando las distintas variables. Es muy interesante.

Mirate este video tutorial: http://foro.gambas-es.org/viewtopic.php?f=10&t=1348




Nota:
Consejo: Crea un nuevo hilo para comentar otros problemas que ya no tengan que ver con el tema principal Problemas Para Publicar Mi Programa En "El Centro De Software De Ubuntu", para que sea más fácil ayudarte y  que sea util para otros.


Muchas gracias por tu explicación y tus consejos. Y gracias por haber movido el mensaje a un nuevo hilo, es que no sabia donde colocar esta objeción.
Sobre la orden Input lo pense luego cuando no tenía el ordenador delante

Un saludo  
 



 
última edición por Radietor el Domingo, 21 Julio 2013, 13:53; editado 1 vez 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comenzar A Programar 
 
Haber acabo de hacer dos programas, uno es modificando un ejemplo que da el libro y otro es una idea que me vino a la cabeza, pero dicho programa tiene un pequeño error, haber si lo localizáis y me podéis decir como solucionarlo.

El ejemplo modificado, Programa que te da la tabla de multiplicar de un numero que elijas.
' gambas module file

Public Sub Main()
Dim n As Integer
Dim numero As Integer
Print "TABLAS DE MULTIPLICAR"
Print ""
Print "Por favor indique un numero a continuacion"
Input numero
Print "----------------------"
Print ""
For n = 10 To 1 Step -1
  Print n & " X " & numero & " = " & (numero * n)
Next
End


Y este es el programa que cree por mi cuenta.
' gambas module file

' Programa creado por Alejandro Moya Moya

Public Sub Main()
Dim Ax2 As Integer
Dim Bx As Integer
Dim C As Integer
Dim comprobador As Integer
Print "Resolucion de Ecuaciones de Segundo Grado"
Print "Esquema general de una ecuacion de Segundo Grado: Ax² + Bx + C = 0"
Print "Introduzca A"
Input Ax2
If Ax2 = 0 Then
  Print "Error: ¡¡En una ecuacion de Segundo Grado el termino Ax², A no debe ser igual a 0!!"
  Input Ax2
Endif
Print "Introduzca B"
Input Bx
Print "Introduzca C"
Input C

' A continuacion indicaremos las reglas para hacer una ecuacion de segundo grado
comprobador = Bx * Bx - 4 * Ax2 * C
If comprobador = 0 Then
Print "Hay una solucion:"
Print (- Bx) / (2 * Ax2)
Endif
If comprobador < 0 Then
  Print "Error: la raiz es menor que cero, la raiz da " & comprobador
Endif
If comprobador > 0 Then
Print "Hay dos soluciones:"
Print ((- Bx) + comprobador ^ (1 / 2)) / (2 * Ax2)
Print ((- Bx) - comprobador ^ (1 / 2)) / (2 * Ax2)
Endif
End


Haber que mejoras creéis que se puede hacer a cada programa?.

Un saludo,
Alejandro Moya Moya
 



 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comenzar A Programar 
 
Hola Radietor.

Uno de los problemas que te vas a encontrar es que el usuario entre un letra y no un número que es el
tipo de dato que esperas. Busca una solución a eso.

Otra cosa es que uses la función SQR para hallar la raíz cuadrada.

La tabla de multiplicar la hiciste de mas a menos, creo.
Las mejoras que también podemos añadir es hacer conversiones de textos a números y a lo mejor al revés,
en determinados momentos.

He complicado un poco mas el ejemplo de la raíz cuadrada y la hice de esta manera:
A lo mejor hay que modificar un poco los nombres de las variables.

Public Sub Main()
  
  Dim d As Float
  Dim r1, r2 As Float
  Dim terminos As String[] = ["A", "B", "C"]
  Dim valores As New Float[3]
  Dim x As Integer
  
  For x = 0 To terminos.Max
    valores[x] = EntrarValor(terminos[x])
  Next
  
  d = valores[1] ^ 2 - 4 * valores[0] * valores[2]  
  
  If d = 0 Then
    r1 = - valores[1] / (2 * valores[0])
    r2 = 0
  Else If d < 0 Then
    Print "Las raices son complejas"
  Else
    Print "Las raices tienen solución"
    r1 = (- valores[1] + Sqr(d)) / (2 * valores[0])
    r2 = (- valores[1] - Sqr(d)) / (2 * valores[0])
    Print
  Endif
  Print "X1 = " & r1
  Print "X2 = " & r2
  
End

Public Function EntrarValor(letra As String) As Float

  Dim valor As String  
  
  While True  
    Print ("Ingrese el valor de " & letra)  
    Input valor
    If InStr("12345679-", Left(valor, 1)) Then
      Return CFloat(valor)
    Endif
  Wend    
  
End
 


Otra idea buena, es que te acostumbres a usar funciones para las operaciones, que llamaras desde un bucle si necesitas
repetir la operación.

Ah, puedes probar ejercicios de ecuación de segundo grados resueltos en:

http://www.vitutor.com/ecuaciones/2/2_e.html

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 22 Julio 2013, 13:06; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comenzar A Programar 
 
Shell escribió: [Ver mensaje]
Hola Radietor.

Uno de los problemas que te vas a encontrar es que el usuario entre un letra y no un número que es el
tipo de dato que esperas. Busca una solución a eso.

Otra cosa es que uses la función SQR para hallar la raíz cuadrada.

La tabla de multiplicar la hiciste de mas a menos, creo.
Las mejoras que también podemos añadir es hacer conversiones de textos a números y a lo mejor al revés,
en determinados momentos.

He complicado un poco mas el ejemplo de la raíz cuadrada y la hice de esta manera:
A lo mejor hay que modificar un poco los nombres de las variables.

Public Sub Main()
  
  Dim d As Float
  Dim r1, r2 As Float
  Dim terminos As String[] = ["A", "B", "C"]
  Dim valores As New Float[3]
  Dim x As Integer
  
  For x = 0 To terminos.Max
    valores[x] = EntrarValor(terminos[x])
  Next
  
  d = valores[1] ^ 2 - 4 * valores[0] * valores[2]  
  
  If d = 0 Then
    r1 = - valores[1] / (2 * valores[0])
    r2 = 0
  Else If d < 0 Then
    Print "Las raices son complejas"
  Else
    Print "Las raices tienen solución"
    r1 = (- valores[1] + Sqr(d)) / (2 * valores[0])
    r2 = (- valores[1] - Sqr(d)) / (2 * valores[0])
    Print
  Endif
  Print "X1 = " & r1
  Print "X2 = " & r2
  
End

Public Function EntrarValor(letra As String) As Float

  Dim valor As String  
  
  While True  
    Print ("Ingrese el valor de " & letra)  
    Input valor
    If InStr("12345679-", Left(valor, 1)) Then
      Return CFloat(valor)
    Endif
  Wend    
  
End
 


Otra idea buena, es que te acostumbres a usar funciones para las operaciones, que llamaras desde un bucle si necesitas
repetir la operación.

Ah, puedes probar ejercicios de ecuación de segundo grados resueltos en:

http://www.vitutor.com/ecuaciones/2/2_e.html

Saludos


Muchas gracias por tu ayuda, lo siento por no haber podido contestar antes. Con respecto al codigo que me has ofrecido hay partes que no entiendo muy bien el porque, sobre todo la parte de la función
 



 
Radietor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comenzar A Programar 
 
Radietor:

No siempre podemos contestar rápidamente.

La función, te cuento:


Public Function EntrarValor(letra As String) As Float

Dim valor As String

While True
Print ("Ingrese el valor de " & letra)
Input valor
If InStr("12345679-", Left(valor, 1)) Then
Return CFloat(valor)
Endif
Wend

End
 


A mi me paso lo mismo cuando vi el True con While la primera vez, Shordi me ayudo con el problema.
Y luego estudiando un poco de Python lo entendí mejor.

Es un bucle que se ejecuta siempre hasta que haya algo que lo rompa o salga de el. Con Return salimos de el.
Cada vez que valor entrado no este dentro de los valores del 1 al 9 y también el símbolo -  (para los negativos),
el bucle se ejecutara otra vez. Con Left  y el valor 1 nos aseguramos, que va leer solo un valor por el lado izquierdo.

Y con Instr, busca un valor dentro de unos valores que tu le des. Ejemplo del 1 al 9. Es muy util.
Si no usamos el IF, podía habernos devuelto la posición, pero solo nos interesa saber, si existe esa subcadena ("1")
dentro de un cadena.("123456..") que nos devolvería verdadero.

http://gambasdoc.org/help/lang/instr?es

Si tienes dudas pregunta.

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
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Comenzar con bases de datos en Gambas3 Josec General 4 Viernes, 14 Octobre 2011, 20:53 Ver último mensaje
Josec
No hay nuevos mensajes Algo Simple Para Comenzar En Gambas Y Sqlite3 Haseo Aplicaciones/Fragmentos de Código 3 Domingo, 22 Septiembre 2013, 19:28 Ver último mensaje
Haseo
No hay nuevos mensajes ¿Con Que Programas Comenzar? konchao1 General 4 Jueves, 04 Septiembre 2014, 23:00 Ver último mensaje
razaAztk
No hay nuevos mensajes Comenzar Por La Parte Visual O Por La Part... Shell General 16 Miercoles, 08 Junio 2016, 20:14 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 1 invitado
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