Allanando el camino a los iniciados en Gambas, porque programar en Gambas es un placer!!
domingo, 7 de septiembre de 2014
Contar números pares e impares
Usando MOD
' Gambas class file
'by postapase
Public Sub Form_Open()
Dim x, Num, dato, dato1, par, impar As Integer
Dim Numeros As New Integer[]
Dim todos As String
For x = 0 To 10
Randomize
Wait 0.1
Num = Rnd(0, 100)
Numeros.Add(Num)
Next
For Each dato In Numeros
If dato Mod 2 = 0 Then
Inc par
Else
Inc impar
Endif
Next
For Each dato1 In Numeros
todos &= dato1 & ","
Next
Print Left$(todos, Len(todos) - 1)
Print "Impares= " & impar
Print "Pares= " & par
End
Etiquetas:
For Each...Next,
Left,
MOD,
Randomize,
Rnd
jueves, 4 de septiembre de 2014
Ordenamiento de burbuja usando Repeat y Continue
Otro ejemplo usando Repeat y Continue
Código fuente: OrdenandoNumeros
Que es el Ordenamiento_de_burbuja?
' gambas class file
'by postapase
Public num As Integer
Public numeritos As String
Public Sub Form_Open()
Me.Center
End
Public Sub Button1_Click()
Dim arrayNum As Integer[] = ["55", "86", "48", "16", "82"]
Dim x, y, a, s, Rota1, Rota2 As Integer
TextArea1.Clear
Repeat
If a = 4 Then a = 0
If y = 4 Then y = 0
If arrayNum[y] < arrayNum[a + 1] Then
Inc y
Inc a
Inc s
Continue
Endif
Rota1 = 0
Rota2 = 0
Rota1 = arrayNum[y]
Rota2 = arrayNum[a + 1]
arrayNum[y] = Rota2
arrayNum[a + 1] = Rota1
Dec s
For Each num In arrayNum
numeritos &= num & " "
Wait 0.2
Next
TextArea1.Text &= numeritos & gb.NewLine
numeritos = ""
Until s > 4
For Each num In arrayNum
numeritos &= num & " "
Wait 0.2
Next
TextArea1.Text &= gb.NewLine & "Resultado final es: " & numeritos & gb.NewLine
End
' gambas class file
'by postapase
Public num As Integer
Public numeritos As String
Public Sub Form_Open()
Me.Center
End
Public Sub Button1_Click()
Dim arrayNum As Integer[] = ["55", "86", "48", "16", "82"]
Dim x, y, a, s, Rota1, Rota2 As Integer
TextArea1.Clear
Repeat
If a = 4 Then a = 0
If y = 4 Then y = 0
If arrayNum[y] < arrayNum[a + 1] Then
Inc y
Inc a
Inc s
Continue
Endif
Rota1 = 0
Rota2 = 0
Rota1 = arrayNum[y]
Rota2 = arrayNum[a + 1]
arrayNum[y] = Rota2
arrayNum[a + 1] = Rota1
Dec s
For Each num In arrayNum
numeritos &= num & " "
Wait 0.2
Next
TextArea1.Text &= numeritos & gb.NewLine
numeritos = ""
Until s > 4
For Each num In arrayNum
numeritos &= num & " "
Wait 0.2
Next
TextArea1.Text &= gb.NewLine & "Resultado final es: " & numeritos & gb.NewLine
End
Código fuente: OrdenandoNumeros
Continue
Aquí un ejemplo de como usar Continue y su modo de aplicarlo.
Código fuente: Continue-0.0.1.tar.gz
' gambas class file
'by postapase (novato en programación)
Public Sub btnBuscar_Click()
Dim x, contador, encontrados As Integer '
For x = 1 To txtNumero.Text
If Right$(CString(x)) <> 5 Then Continue 'Right$ nos devuelve el primer caracter empezando de la derecha, y si es diferente a cinco
' no ejecuta las lineas después de este comentario va derecho al Next y del Next a la primera linea dentro del For ,
' en este caso( If Right$(CString(x)) <> 5 Then Continue ), y si es igual se ejecutan las lines siguientes a continue
' aqui el sentido de usar continue
Inc encontrados
Wait 0.05
TextArea1.Text &= " (" & encontrados & ") números terminados en 5: " & x & gb.NewLine
Next
End
Public Sub txtNumero_KeyPress()
Select Case Key.Code ' examina que tecla fue presionada
Case 48 To 57 'si se preciona alguna tecla del 0 al nueve no hace nada
Case Else ' en cambio si se preciona cualquier tecla que no sea las incluidas en el Case anterior detiene el evento
'lo que logramos con esto es que el usuario no pueda teclear letras o cualquier caracter que no sea un número
Stop Event
End Select
End
Public Sub Form_Open()
Me.Center
End
'by postapase (novato en programación)
Public Sub btnBuscar_Click()
Dim x, contador, encontrados As Integer '
For x = 1 To txtNumero.Text
If Right$(CString(x)) <> 5 Then Continue 'Right$ nos devuelve el primer caracter empezando de la derecha, y si es diferente a cinco
' no ejecuta las lineas después de este comentario va derecho al Next y del Next a la primera linea dentro del For ,
' en este caso( If Right$(CString(x)) <> 5 Then Continue ), y si es igual se ejecutan las lines siguientes a continue
' aqui el sentido de usar continue
Inc encontrados
Wait 0.05
TextArea1.Text &= " (" & encontrados & ") números terminados en 5: " & x & gb.NewLine
Next
End
Public Sub txtNumero_KeyPress()
Select Case Key.Code ' examina que tecla fue presionada
Case 48 To 57 'si se preciona alguna tecla del 0 al nueve no hace nada
Case Else ' en cambio si se preciona cualquier tecla que no sea las incluidas en el Case anterior detiene el evento
'lo que logramos con esto es que el usuario no pueda teclear letras o cualquier caracter que no sea un número
Stop Event
End Select
End
Public Sub Form_Open()
Me.Center
End
martes, 2 de septiembre de 2014
Break
Ejemplo simple de como usar Break.
Código fuente: Break-0.0.1.tar.gz
' gambas class file
'by postapase
'usando Break
Public ArrayDeNumeros As New Integer[] 'declaramos un array
' que contendra solo números (tipo integer)y lo inicializamos con New
Public Sub Form_Open()
Dim x As Integer 'declaramos una variable de tipo numerico llamada x para el bucle
Me.Center 'centra el formulario en referencia al escritorio
For x = 1 To 9999 'bucle que agregará al array numérico llamado ArrayDeNumeros los números del 1 al 9999
ArrayDeNumeros.Add(x) ' add lo que hace es agregar el número que contiene x al array
Next
End
Public Sub BuscarNumero()
Dim x As Integer
If Val(txtNumero.Text) <= 0 Then
txtNumero.Text = ""
txtNumero.SetFocus
Return
Endif
For x = 0 To ArrayDeNumeros.Count - 1
LabArray.Text = ArrayDeNumeros[x] 'esto visualiza el número del array actual que se comparara con el número ingresado.
Wait 0.01 ' genera una pausa antes de continuar asi podemos visualizar mejor el proceso
If ArrayDeNumeros[x] = txtNumero.Text Then 'si el item del array es igual al textbox se activa el mensaje
' y el Break, ya que no tiene sentido seguir buscando pues ya encontramos el número, ahí el sentido
' que tiene el comando Break
Message("Break detuvo el bucle porque tu número fue encontrado\nEl número es: " & ArrayDeNumeros[x])
txtNumero.Text = "" 'deja vacío el textbox
txtNumero.SetFocus 'lleva el foco al textbox y queda titilando el cursor pronto para escribir nuevamente
Break ' detiene el bucle y continua leyendo el código después de la instrucción Next
Endif
Next
End
Public Sub btnBuscar_Click()
BuscarNumero 'ejecuta la rutina BuscarNumero
End
Public Sub txtNumero_KeyPress() 'evento que sucede cuando presionamos una tecla
Select Case Key.Code ' examina que tecla fue presionada
Case 48 To 57 'si se preciona alguna tecla del 0 al nueve no hace nada
Case Else ' en cambio si se preciona cualquier tecla que no sea las incluidas en el Case anterior detiene el evento
'lo que logramos con esto es que el usuario no pueda teclear letras o cualquier caracter que no sea un número
Stop Event
End Select
End
'by postapase
'usando Break
Public ArrayDeNumeros As New Integer[] 'declaramos un array
' que contendra solo números (tipo integer)y lo inicializamos con New
Public Sub Form_Open()
Dim x As Integer 'declaramos una variable de tipo numerico llamada x para el bucle
Me.Center 'centra el formulario en referencia al escritorio
For x = 1 To 9999 'bucle que agregará al array numérico llamado ArrayDeNumeros los números del 1 al 9999
ArrayDeNumeros.Add(x) ' add lo que hace es agregar el número que contiene x al array
Next
End
Public Sub BuscarNumero()
Dim x As Integer
If Val(txtNumero.Text) <= 0 Then
txtNumero.Text = ""
txtNumero.SetFocus
Return
Endif
For x = 0 To ArrayDeNumeros.Count - 1
LabArray.Text = ArrayDeNumeros[x] 'esto visualiza el número del array actual que se comparara con el número ingresado.
Wait 0.01 ' genera una pausa antes de continuar asi podemos visualizar mejor el proceso
If ArrayDeNumeros[x] = txtNumero.Text Then 'si el item del array es igual al textbox se activa el mensaje
' y el Break, ya que no tiene sentido seguir buscando pues ya encontramos el número, ahí el sentido
' que tiene el comando Break
Message("Break detuvo el bucle porque tu número fue encontrado\nEl número es: " & ArrayDeNumeros[x])
txtNumero.Text = "" 'deja vacío el textbox
txtNumero.SetFocus 'lleva el foco al textbox y queda titilando el cursor pronto para escribir nuevamente
Break ' detiene el bucle y continua leyendo el código después de la instrucción Next
Endif
Next
End
Public Sub btnBuscar_Click()
BuscarNumero 'ejecuta la rutina BuscarNumero
End
Public Sub txtNumero_KeyPress() 'evento que sucede cuando presionamos una tecla
Select Case Key.Code ' examina que tecla fue presionada
Case 48 To 57 'si se preciona alguna tecla del 0 al nueve no hace nada
Case Else ' en cambio si se preciona cualquier tecla que no sea las incluidas en el Case anterior detiene el evento
'lo que logramos con esto es que el usuario no pueda teclear letras o cualquier caracter que no sea un número
Stop Event
End Select
End
Suscribirse a:
Entradas (Atom)