Hola!.
Encontré estas diapositivas sobre Gambas.
Aunque son para versiones algo más antiguas, explican información
que puede ser interesante para todos sobre nuestro entorno favorito
de programación.
Diapositivas 1
Diapositivas 2
Diapositivas 3
Referencia:
Portal educativo Extremeño
jueves, 28 de junio de 2012
martes, 19 de junio de 2012
Cómo funcionan los controles de alineación
En este ejemplo veréis como funcionan los controles de alineación:
Estos controles son contenedores y permiten alinear sus objetos
o componentes que están dentro de el. Ya sea verticalmente
u horizontalmente.
Tenemos propiedades como Padding que le dice cuanto es la separación
en pixels entre componentes (hijos) de su contenedor (el control de alineación).
En el ejemplo debemos seleccionar uno de los 4 tipos y luego
seleccionar las imágenes, que irán llenando "de una forma"
típica de cada control de alineación.Podréis llenar
cada contenedor hasta un máximo que os avisara.
EjemploControlesAlineación
Buscar estos componentes en:
GambasDoc
También encontrareis información en el manual de Gambas:
Alineación de controles en la pagina 114
- Hbox
- Vbox
- HPanel
- VPanel
Estos controles son contenedores y permiten alinear sus objetos
o componentes que están dentro de el. Ya sea verticalmente
u horizontalmente.
Tenemos propiedades como Padding que le dice cuanto es la separación
en pixels entre componentes (hijos) de su contenedor (el control de alineación).
En el ejemplo debemos seleccionar uno de los 4 tipos y luego
seleccionar las imágenes, que irán llenando "de una forma"
típica de cada control de alineación.Podréis llenar
cada contenedor hasta un máximo que os avisara.
EjemploControlesAlineación
Buscar estos componentes en:
GambasDoc
También encontrareis información en el manual de Gambas:
Alineación de controles en la pagina 114
sábado, 16 de junio de 2012
Como hacer una calculadora
Vamos a crear una aplicación muy
conocida cuando empezamos con
un entorno visual. Una calculadora.
La imagen final sera así:
Con esta calculadora podrás hacer las
operaciones básicas.
La pantalla se borrara cada vez que
hagamos una operación
para mostrar el resultado.
Empezamos por un formulario:
Esta formulario tiene:
Propiedad Height (Altura) del
formulario: 272
Propiedad Width (Ancho) del formulario:
232
Como no queremos que la imagen se
agrande, cambiaremos
la propiedad Resizable a False.
Desaparecerá el icono de maximizar.
Necesitaremos para comenzar
una etiqueta que sera nuestra pantalla LCD.
Dentro de un formulario
tenemos unas coordenadas X e Y. Fijaros en las propiedades de este. Luego,vamos a la
caja de herramientas, que tenemos todos nuestros componentes y seleccionamos label.
Situamos la etiqueta en:
X =11 e Y =15
Si no podéis colocarlo con el cursor
el componente.
Usar sus propiedades X e Y. ;-)
Le damos un alto y un ancho.
Height: 32 y Width: 208
Ahora fijaros. La etiqueta debería dar
la sensación de que tiene profundidad.
Así que cambiaremos su propiedad
Border a Sunken.(Hundida).
Probar a ver que pasa si cambiareis a
otros modos.
Para que los números comiencen por su
derecha, debemos cambiar su alineación. Así que en la propiedad Align
cambiaremos a RIGHT (derecha).
Vamos a la propiedad nombre y la
cambiamos a Pantalla
Ya tenemos nuestro LCD.
Ahora vamos a crear una botonera.
Tendremos:
- Los números.
- Las operaciones.
- El signo igual
- La coma o punto decimal.
Con esto, podemos darnos cuentas de
que tenemos unos grupos de botones divididos según función
Estos grupos de controles son los
conocidos como “Matriz de controles”.
Ganamos en claridad de código y usamos
un mismo código para cada
grupo de botones.
Vamos a crear el primer botón
para los números.
Necesitaremos 10 botones.
Comenzaremos por el 0.
Vamos a nuestra caja de herramientas o
componentes y pulsamos en el
botón que tiene ok en su interior.
Hacemos doble clic sobre el.
Grande,¿ verdad ?.Con este botón
vamos a crear todo el resto de botones
de los números.
Vamos a cambiar su alto y ancho:
Height : 42 y su Width: 49
Vamos a cambiar su nombre:
Name: Boton0
Y vamos a cambiar su propiedad de
texto.
Text: 0
Como es un conjunto de botones o grupo.
Todos estos botones tienen
su índice, que lo identifica en su
grupo, con la propiedad “Tag”
En la que iremos añadiendo un índice.
Como boton0 es el primero de todos.
cambiaremos la propiedad Tag a 0 y así
iremos haciéndolo con cada grupo
de botones. El boton0 es 0, el boton1
es 1, el boton3
es 3, etc.
¿ Estas contento con ese tamaño de
letra para tu botón ?.
Puedes cambiarlo en la propiedad Font
del botón.
Yo lo deje a 11.
Parece que ya de principio nuestro
número esta alineado.
Vamos a desplazar el botón.
Seleccionamos nuestro botón.Nos valemos del lateral de la etiqueta
y lo llevamos hasta abajo.
Podemos colocarlo en:
X: 8
Y: 216
Nos vamos a la propiedad Group del
botón
Y escribiremos: Números
Ahora viene lo interesante. Tenemos
seleccionado nuestro botón 0 y
con el botón derecho del ratón, mostramos el “menú
emergente” y seleccionamos “Copiar”.
Nuestro botón se ha copiado a la
memoria y ahora queremos tener otro igual sobre el formulario. Usamos de nuevo el “menú
emergente” con el botón derecho y “Pegamos”.
Tenemos nuestra copia de botón arriba.
Lo bajamos y lo colocamos encima del primer botón.
Fijaros ahora en las propiedades Name y
Group, automáticamente su nombre ha cambiado a boton1 y se ha incluido en el grupo
Numeros. Tenemos que cambiar la propiedad “Tag”,manualmente.
Como aun tenemos en memoria el primer
botón. Volvemos a usar “Pegar” del menú emergente (Botón Derecho). Una vez mas
hasta tener una fila de tres botones.
Veremos algo así:
Ahora seleccionaremos los tres botones
de la misma fila. Iremos desde el primero al tercero. Dejaremos pulsado el botón
izquierdo y seleccionamos los tres botones.
Cuando los tengamos seleccionados,
usaremos el menús emergente y usamos “Copiar”.
Tendremos tres botones en memoria. Que
vamos a Pegar ahora dos veces, para completar los diez botones de la calculadora.Las tres filas. :-)
Fijaros que al pegar los botones están
seleccionados, vamos a ellos con el botón izquierdo y los ponemos encima de la primera fila
de tres botones.
Una vez mas. “Menú emergente” y
“Pegar”.
Ya tenemos nuestro grupo de botones
“Números”.
Ahora hay que cambiar el contenido del
texto de cada botón
y observar también como han ido
cambiando sus nombres según
hemos ido pegando estos,sobre el
formulario.No olvidar cambiar
su propiedad Tag.
Cambiamos el contenido del texto y
queda así:
Vamos a crear ahora nuestros botones
para las operaciones.
Seleccionamos un botón de los números
,lo copiamos,pegamos y lo situamos
a la derecha del 9.
Tenemos que cambiar sus propiedades de
nombre,grupo,texto y tag.
A su nombre: BotonDiv
Grupo: Operaciones
Text: /
Tag: 0
Ahora que tenemos seleccionado el botón
de dividir. Copiamos y Pegamos,
debajo del botón dividir. Hasta tres
botones más.
Cambiamos de estos tres, sus
propiedades nombre,texto y tag.
Nombrándolos y poniendo su signo de
operación.
BotonPor
BotonMenos
BotonMas
Y tendremos una imagen así:
Para la coma o punto y el signo igual
usaremos botones que no van en un grupo.
Son dos botones independientes.
Así que seleccionamos un botón
cualquiera,copiamos y pegamos.
Y lo colocamos debajo del 2, el botón
para el punto o coma y hacemos
de nuevo la misma operación y
colocamos nuestro igual.
Vamos a los dos botones y cambiamos
para “el punto decimal”.Usaremos un punto.
Su nombre: BotonComa
Borramos su grupo y su tag (índice).
Y hacemos lo mismo con el botón de
igual.
Nombre: BotonIgual
Borramos su grupo y su tag
Tenemos todos los botones de nuestra
calculadora.
Es muy importante que para el futuro
sepáis crear vuestros grupos de controles.
Comencemos con el código.
Vamos a definir unas variables que son
comunes a todo el formulario.
---código---
Private operando1 As Float
Private operando2 As Float
Private operador As String
Private Borrapantalla As Boolean
Private resultado As Float
---código---
Pasamos al formulario y ahora pulsa
sobre cualquier botón de los números.
Fíjate que ha salido como nombre del
evento Click , el grupo que pertenece.
Con esto, tenemos el mismo código
común para todos esos botones.
Vamos a programar su respuesta.
Fijaros en la variable Borrapantalla.
---código---
Public Sub Números_Clic()
If Borrapantalla Then
Pantalla.Text = ""
Borrapantalla = False
Endif
Pantalla.Text = Pantalla.Text &
Last.Text
End
---código---
Es una variable Booleana. No se esta
comparando, pero se esta
comprobando su valor.
Como la variable Booleana por defecto
vale “False” al comienzo.
IF comprueba si es True para saber si estamos con el primer operando
o con el segundo.
Cada vez pulsemos una
tecla de los números su
contenido de texto se añade al
contenido de texto de la etiqueta.
Pantalla.Text = Pantalla.Text &
Last.Text
Al comienzo Pantalla.Text esta vacío
Last.Text nos dice, que de su propiedad
texto de cualquier botón del
grupo Números (el ultimo pulsado), se añadirá a la pantalla y
se
mostrara en esta.
Así se van añadiendo números.
Veamos el código de las operaciones.
Vamos a usar una instrucción
“condicional selectiva múltiple”
---código---
Public Sub Operacion_Clic()
Select Case Last.tag
Case 0
operando1 = CFloat(Pantalla.Text)
operador = "+"
Pantalla.Text = ""
Case 1
operando1 = CFloat(Pantalla.Text)
operador = "-"
Pantalla.Text = ""
Case 2
operando1 = CFloat(Pantalla.Text)
operador = "*"
Pantalla.Text = ""
Case 3
operando1 = CFloat(Pantalla.Text)
operador = "/"
Pantalla.Text = ""
End Select
End
---código----
La propiedad Tag de Last nos devuelve
su índice
“Cada botón de operación tiene que
tener en su propiedad
Tag un valor, de 0 a 3 en este caso”,
que son el número de
operaciones.
Cuando es 0, convierte el contenido de
la pantalla al tipo Real
su operador es “+” y limpia la
pantalla.
Habremos almacenado el primer operando
y su operador.
Podríamos haber usado el propio
contenido del botón para saber
su operador, ya que este se encuentra
en la propiedad de texto
del botón del grupo operaciones.
Y así sucesivamente según su índice
realizara una operación u otra.
El botón de punto o coma.....
---código---
Public Sub BotonComa_Clic()
If InStr(Pantalla.Text, ".")
= False Then
Pantalla.Text = Pantalla.Text &
"."
Endif
End
---código---
Este grupo de instrucciones lo que hace
es buscar la coma dentro
del texto contenido en la etiqueta que
es la pantalla. Si existe la coma
no volverá a escribirse en la
pantalla, otra coma.
Y por ultimo nuestro botón igual:
---código---
Public Sub BotonIgual_Clic()
operando2 = CFloat(Pantalla.Text)
If operador = "+" Then
resultado = operando1 + operando2
If operador = "-" Then
resultado = operando1 - operando2
If operador = "*" Then
resultado = operando1 * operando2
If operador = "/" And
operando2 <> 0 Then resultado = operando1 / operando2
Pantalla.Text = resultado
End
---código----
En este grupo de instrucciones,
almacenamos el segundo operando
y comprobamos cual es la operación que
quiere que hagamos.
También comprueba que si la operación
es dividir,que su operando2 no sea 0
para que no de error.
Hemos hecho
nuestra primera aplicación.
Hay muchas funciones que se le pueden
añadir .Que el contenido de la
pantalla no pase de una cantidad de
números. Etc
Recordar que al pegar las comillas del blog al editor de gambas, hay que cambiarlas.No son el mismo tipo de comillas.Gambas no la interpreta igual.
Ah, para el icono de nuestra calculadora.Ir a propiedades del formulario y usar
la propiedad Icon. ;-)
jueves, 14 de junio de 2012
Ejemplo.Otros dibujos 2
Aquí tenéis otro generador de formas y dibujos.
La aplicación contiene dos controles sliders. Debes usar los dos sliders
para generar el dibujo. Tienen un valor mínimo de tres y máximo de cien.
Use una sentencia condicional para asegurarme de que cada slider tuviera
un valor y que no fuera 0 en uno de los dos.
Ejemplo: Usar primero un poco el de forma y luego el de repetición.
Os muestro algunas de las imágenes que genera:
GeneraDibujos2
martes, 12 de junio de 2012
Lanzador para Fuse.Emulador de Spectrum
Esta es una mini-aplicación para usar junto con el emulador de Spectrum.Fuse.
Permite escoger el directorio donde están las cintas ya sean en formato .TAP
o .TZX, seleccionar y lanzar el emulador para probarlas.
He añadido "por ahora" la opción de usar dos modelos:
- 48K
- 128k Plus 2A
Además de poder seleccionar si quieres que la carga sea lenta.
La mayoría de estos lanzadores se le conocen como Front-End.
Lanzador para Fuse
Mas información sobre Fuse en:
Pagina de Free Unix Emulator Spectrum.(FUSE)
Permite escoger el directorio donde están las cintas ya sean en formato .TAP
o .TZX, seleccionar y lanzar el emulador para probarlas.
He añadido "por ahora" la opción de usar dos modelos:
- 48K
- 128k Plus 2A
Además de poder seleccionar si quieres que la carga sea lenta.
La mayoría de estos lanzadores se le conocen como Front-End.
Lanzador para Fuse
Mas información sobre Fuse en:
Pagina de Free Unix Emulator Spectrum.(FUSE)
Ejemplo.Texto a Voz
Este es un pequeño ejemplo de como convertir un texto a voz,
usando la utilidad del sintetizador de voz "espeak" que nos proporciona
el centro de software que incorpora nuestra distro.
Recordar que hace falta tener instalado espeak para que funcione.
Texto a voz
usando la utilidad del sintetizador de voz "espeak" que nos proporciona
el centro de software que incorpora nuestra distro.
Recordar que hace falta tener instalado espeak para que funcione.
Texto a voz
lunes, 11 de junio de 2012
Función de cadena Split
Como dividir una variable de cadena
en un array o matriz de cadena.
Olvide esta función cuando tratamos el
tema del manejo de cadenas.
Y es una función muy importante.
Permite que una frase, un texto,
podamos dividirla en palabras y
almacenarlas en un array, teniendo en
cuenta el uso de un “separador”.
El separador puede ser cualquier
carácter, símbolo, espacio,etc.
Una sintaxis básica puede ser esta:
Matriz o array de cadena=Split
(cadena,separador)
---código---
DIM atexto AS STRING[]
DIM sfrase AS STRING
sfrase=”En un lugar de la Mancha, de
cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un
hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y
galgo corredor.”
atexto=Split(sfrase,” “)
---código---
El separador seria el espacio y cada
palabra seria almacenada en el array o matriz con
un índice diferente. De esta manera
seria muy fácil hacer un contador de palabras.
Para averiguar el numero de elementos
de un array usamos la propiedad “count”.
El primer índice del array es cero.
Así si el numero de palabras es 2.
El índice cero seria una y el índice
1 seria la segunda.
Count nos devolvería 2. Contando con
el cero.
Solo tenemos que añadir al final del
código:
PRINT atexto.count
Como veis he utilizado el prefijo ”a”
delante de texto
y “s” delante de frase. “A” de
array y “s” de string.
Es una manera fácil de deducir
rápidamente que tipo de variables
es cuando estés viendo el código y la
encuentres en cualquier
parte.
Mas información en el manual de Gambas
en la pagina 59.
O también en:
domingo, 10 de junio de 2012
Circulos.Partes.Polígonos regulares
En este ejemplo encontré dos maneras de dividir el circulo en n partes.
Como también gracias al segundo ejemplo, encontré la forma de hacer
un polígono regular de n lados.
Quizás el primer modo no salga bien a veces cuando el número de partes
es impar.
Con la segunda manera encuentro los puntos sobre la circunferencia.
Tales como la x y la y.Así que fue cuestión de crear un array
de estos puntos y luego pasarlos a la función.
Draw.Poligon
Círculos y Polígonos
Mas información en:
Función Draw.Poligon
Como también gracias al segundo ejemplo, encontré la forma de hacer
un polígono regular de n lados.
Quizás el primer modo no salga bien a veces cuando el número de partes
es impar.
Con la segunda manera encuentro los puntos sobre la circunferencia.
Tales como la x y la y.Así que fue cuestión de crear un array
de estos puntos y luego pasarlos a la función.
Draw.Poligon
Círculos y Polígonos
Mas información en:
Función Draw.Poligon
sábado, 9 de junio de 2012
Ejemplo.Busca clones de M.A.M.E
Esta aplicación fue la primera que hice aprovechando brevemente
los recursos que ofrece Gambas para manejar cadenas.
Para poder usarla,necesitáis tener instalado en el sistema
M.A.M.E. El multi arcade emulador. Sin este, no funcionara.
La aplicación aprovecha la posibilidad de búsqueda de clones y
la muestra en un componente Gridview.
Esta aplicación no baja ningún archivo.Solo trabaja con una lista que ofrece
el emulador. ;-)
Cuando el nombre no lo reconoce, mostrara un mensaje.La aplicación
es un ejemplo de como podemos aprovechar Gambas para algo que nos
gusta.Tu proyecto, llevado a Gambas.
Aquí tenéis el código:
BuscaClonesM.A.M.E
Mas información sobre M.A.M.E
Enlace a la web de MameDev
los recursos que ofrece Gambas para manejar cadenas.
Para poder usarla,necesitáis tener instalado en el sistema
M.A.M.E. El multi arcade emulador. Sin este, no funcionara.
La aplicación aprovecha la posibilidad de búsqueda de clones y
la muestra en un componente Gridview.
Esta aplicación no baja ningún archivo.Solo trabaja con una lista que ofrece
el emulador. ;-)
Cuando el nombre no lo reconoce, mostrara un mensaje.La aplicación
es un ejemplo de como podemos aprovechar Gambas para algo que nos
gusta.Tu proyecto, llevado a Gambas.
Aquí tenéis el código:
BuscaClonesM.A.M.E
Mas información sobre M.A.M.E
Enlace a la web de MameDev
viernes, 8 de junio de 2012
Manejo de cadenas.Continuación
Continuamos donde lo dejamos. Sigamos con las muchas de las operaciones
que podemos hacer con el manejo de
cadenas.
Los espacios en una cadena.
Hay veces que nos interesa eliminar los
espacios contenidos en una variable de cadena.
Ya sea por el comienzo, por el final o
en ambos lados.
Para eliminar por la izquierda usamos:
Ltrim$(cadena)
Imaginar que nuestro usuario entra una
palabra y ha añadido, espacios al principio
que no tienen utilidad.
En el caso de un nombre.
---código---
DIM nombre AS STRING
nombre=” Luisa”
PRINT nombre
nombre= LTrim$(nombre)
PRINT nombre
---código---
Por la derecha lo haríamos con la función RTrim$
---código---
DIM nombre AS STRING
nombre=”Luisa ”
PRINT nombre
nombre= RTrim$(nombre)
PRINT nombre
---código---
Observar los puntos en la salida de
consola.
Ahora usemos Trim$. Con esta función
eliminaremos los espacios
contenidos en la variable de cadena,
tanto al comienzo como al final.
---código---
DIM frase AS STRING
frase=” En un lugar de la Mancha
”
PRINT frase
frase= RTrim$(frase)
PRINT frase
---código---
Es interesante como podemos manejar la
entrada de información y adaptarla
para que nuestro programa nos muestre
el resultado que queremos.
Substituir una palabra,una letra
dentro de una variable de cadena.
Si queremos
realizar esta función debemos usar:
Replace$(Cadena,patrón,remplazo)
Hay situaciones
que no necesitamos una asignación de una variable,simplemente
usamos la
función para que nos muestre un resultado y no almacenamos
la operación en
una variable. Esto es según os convenga hacer.
En este caso no
usaremos una variable, solo una cadena de texto
que está dentro
de las “”
OJO - Cuidado al
copiar y pegar en el editor con las comillas. :-)
Fijaros que
no son “” lo que sale a veces al pegar en el editor
Retocar si hace
falta en el editor de Gambas.
Cambiar de mayúsculas a minúsculas
o viceversa.
A veces
necesitamos convertir el contenido de la variable de cadena a
mayúsculas
o minúsculas.
---código---
DIM palabra as
STRING
palabra=”Aplicación
en Basic”
PRINT palabra
PRINT 'Dejamos
un espacio
palabra=UCase$(palabra)
'Convertimos a mayúsculas
PRINT palabra
PRINT 'Dejamos
un espacio
'Ahora
convertimos a minúsculas
palabra=LCase$(palabra)
PRINT palabra
---código---
Para una búsqueda de una palabra y
nos indique su lugar.
Hay veces que
nos interesa saber si en el contenido de una variable de cadena,
existe una
palabra determinada, un carácter,etc. O también su lugar de
comienzo.
Usaremos la
función:
InStr(cadena,subcadena,posición
de comienzo de búsqueda)
No siempre
tenemos que especificar desde donde buscar,
en otros caso,
si. Por si la palabra se repite y no te interesa
ese lugar de
comienzo.
---código----
PRINT
InStr(“basic basico”,”bas”)
Nos mostrara el
lugar de la primera coincidencia donde se encuentra la palabra “bas”
Pero y si
queremos que nos muestre otro lugar. Debemos especificar en la
instrucción una
posición.
Existe también
otra función que en vez de comenzar la búsqueda por la izquierda
la realiza por
la derecha.
RinStr(cadena,subcadena,inicio)
Ambas funciones
se complementan con el uso de bucles y las
funciones
Left$,Right$ y MID$.
Para añadir espacios
Con esta función
obtendremos un número de espacios en una cadena.
variable_de_cadena=Space$(n)
Donde n es el
número de espacios que queremos.
jueves, 7 de junio de 2012
Manejo de cadenas
El manejo de las cadenas es fundamental
en nuestros programas.
Ya sea para la búsqueda,la
presentación,operaciones,etc.
Gambas nos da muchas posibilidades para
trabajar con ellas.
Tenemos funciones que el propio
lenguaje nos facilita.
Algunas funciones que podemos
encontrar:
- Saber la longitud de una cadena.
- Presentar un texto desde el comienzo,de izquierda a derecha, derecha a izquierda.
- Eliminar los espacios,ya sea por la izquierda o la derecha,todos los espacios.
- Para dividir una cadena en un array de cadena.
- Para cambiar una palabra por otra.
- Para cambiar de mayúsculas a minúsculas o viceversa.
- Para buscar una palabra y que nos diga en que lugar se encuentra. O que existe.
- Para añadir espacios.
Hay muchas más.
Gambas nos da muchas posibilidades con
las funciones propias que incluye.
Longitud de una cadena. Función LEN
Tiene
mucho uso. Acompañado de un bucle FOR – NEXT
encontraremos
muchas posibilidades para nuestro programa.
Averiguaremos
la longitud con la función LEN(variable de cadena)
---código---
DIM
cadena AS STRING
cadena=”candelabro”
PRINT
LEN(cadena)
---código---
Presentar un texto.
Funciones LEFT$,RIGHT$,MID$
Una
manera de darnos cuenta de que un comando o función trabaja con
cadenas
es
que en la propia instrucción suele incluir el carácter “$”
Función LEFT$.
Esta
funcione nos mostrara los caracteres de una cadena comenzando por
su
izquierda.
---código---
DIM
cadena AS STRING
cadena=”candelabro”
PRINT
LEFT$(cadena,3)
---código---
Nos
mostrara desde la izquierda, 3 caracteres que contienen la variable
cadena
Con
la aplicación de los bucles ganamos mucho trabajando con estas
funciones.
Función RIGHT$
Es a
la inversa de la anterior.
---código---
DIM
cadena AS STRING
cadena=”candelabro”
PRINT
RIGHT$(cadena,3)
---código---
Nos
mostrara desde la derecha, 3 caracteres que contienen la variable
cadena
Y la
que creo que es la más potente.
Función MID$
Es
una función capaz de comenzar desde un lugar de la cadena en
concreto
y
decirle cuantos caracteres queremos que nos muestre.
---código---
DIM
cadena AS STRING
cadena=”candelabro”
PRINT
MID$(cadena,3,1)
---código---
Con
esto logramos decirle que queremos que nos muestre desde el comienzo
de la cadena
por
la izquierda, se situé en el carácter que ocupa el “lugar” 3 y
nos muestre una cantidad
de
caracteres. En este caso 1.
Ahora
imaginar lo que podríamos hacer con bucles.
Ejemplo
con LEFT$
---código---
DIM
cadena AS STRING
DIM x
as INTEGER
cadena=”escalera”
FOR
x=1 TO LEN(cadena)
PRINT
LEFT$(cadena,x)
NEXT
---código---
Ejemplo
con RIGHT$
---código---
DIM
cadena AS STRING
DIM x
as INTEGER
cadena=”escalera”
FOR
x=1 TO LEN(cadena)
PRINT
RIGHTS(cadena,x)
NEXT
---código---
Probar
a hacer el bucle FOR a que vaya de mayor a menor usando
estas
dos funciones. ;-)
Y
ahora MID$.
---código---
DIM
cadena AS STRING
DIM x
as INTEGER
cadena=”escalera”
FOR
x=1 TO LEN(cadena)
PRINT
MID$(cadena,x,1)
NEXT
---código---
Ahora
viene lo peculiar. Como veis hemos mostrado una letra de una en una.
Y si
quisiéramos mostrar una a una con una pausa como si escribiéramos
con
una maquina de escribir. :-)
Tendremos
que usar la instrucción WAIT para crear una pausa de x's
milisegundos.
WAIT
0.1 'Añade 100 milisegundos de retraso
WAIT
0.5 'Añade 500 milisegundos de retraso.
Bien.
En el caso de una instrucción PRINT , muestra algo por la consola.
Podemos mostrarla como si fuera una lista o detrás de otro con la ayuda
de
“;”
PRINT
“José ”;
PRINT
“Luis”
También
podemos hacer:
PRINT
“José ”;”Luis”
Naturalmente
queda mas presentable en un componente TextArea
Vamos
al ejemplo. ;-)
---código---
DIM
cadena AS STRING
DIM x
as INTEGER
cadena=”Esto
es un mensaje letra por letra.”
FOR
x=1 TO LEN(cadena)
PRINT
MID$(cadena,x,1);
WAIT
0.2 '
NEXT
---código---
Probar
a cambiar el tiempo en wait. :-)
Continuara....
Os añado una aplicación para que veais ejemplos.
Ejemplo:
Mas información en:
miércoles, 6 de junio de 2012
PSeInt
Este programa permite el estudio de la programación a nivel de pseudocódigo.
Es lo mas parecido al lenguaje humano. No se necesita ningún lenguaje
en concreto.Solo este programa.
Entendiendo el pseudocódigo, seremos capaces de llevar nuestro "algoritmo"
a cualquier lenguaje que pretendamos aprender.
PSeInt
En la propia web, dispones del programa para diferentes sistemas operativos.
Vídeos explicativos y disponéis también de imágenes del programa.
Este programa tiene su propio "interprete" con lo que veremos la salida
de nuestro programa en una consola.
Además permite la creación del "diagrama de flujo" de nuestro "algoritmo".
Ejemplos:
Es ideal para aprender y dar los primeros pasos.
En Youtube tenemos vídeos explicativos de aficionados que han hecho sus
programas y los han publicados en el.
Mas información en:
Algoritmo
Pseudocódigo
Es lo mas parecido al lenguaje humano. No se necesita ningún lenguaje
en concreto.Solo este programa.
Entendiendo el pseudocódigo, seremos capaces de llevar nuestro "algoritmo"
a cualquier lenguaje que pretendamos aprender.
PSeInt
En la propia web, dispones del programa para diferentes sistemas operativos.
Vídeos explicativos y disponéis también de imágenes del programa.
Este programa tiene su propio "interprete" con lo que veremos la salida
de nuestro programa en una consola.
Además permite la creación del "diagrama de flujo" de nuestro "algoritmo".
Ejemplos:
Es ideal para aprender y dar los primeros pasos.
En Youtube tenemos vídeos explicativos de aficionados que han hecho sus
programas y los han publicados en el.
Mas información en:
Algoritmo
Pseudocódigo
Bucles Anidados
Un bucle anidado es un bucle dentro de otro bucle. Así podemos tener varios
bucles anidados según lo que queramos
hacer en nuestro programa.
Ejemplo: el caso de que quisiéramos
crear todas las tablas de multiplicar del 1 al 10.
Tendríamos que hacer
1 x 1,1 x 2,1 x 3...1 x 10
2 x 1,2 x 2, 2 x 3...2 x 10
.
.
10 x 1,10 x 2,10 x 3.....10 x 10
El primer factor podría ser una
variable que iría cambiando 1 al 10
y el segundo seria otra variable que
iría cambiando del 1 al 10.
Con eso sabemos que tenemos las
variables: factor1,factor2.
Con estas dos variables tenemos las
suficientes para nuestro programa.
Podíamos tener una tercera para el
resultado, pero no es realmente necesaria.
Usaremos el tipo de bucle que
queramos,conociendo como es.
Definimos las variables:
Tipo entero: factor1,factor2
Para factor1 repetir de 1 hasta 10
Para factor2 repetir de 1 hasta 10
Mostrar factor1 & “ * “ &
factor2 & “ = “ & (factor1 * factor2)
Fin Para
Fin Para
Un ejemplo típico de uso de los bucles
anidados es con el uso de un array de varias
dimensiones. Si tuviéramos una pizarra
en la que vamos a dibujar un punto, necesitaríamos
saber dos coordenadas. La x y la y. Si
tuviéramos almacenados en un array estas coordenadas
tal que así:
coordenadas(x,y)
Para leer todas los datos del array
coordenadas lo mas aconsejable es usar dos bucles.
Uno dentro del otro. Anidados
Así iríamos leyendo:
coordenadas(0,0),coordenadas(0,1),coordenadas(0,2)....
coordenadas(1,0),coordenadas(1,1),coordenadas(1,2)...
.
.
coordenadas(x,y)
Hasta llegar al ultimo valor almacenado
en el array.
Podemos crear una rejilla. Para el uso
de gráficas es fundamental.
Bien. Cuando queremos comentar algo en
un programa Gambas usamos el símbolo “ ' “
Así una linea de comentario tendría
una aspecto como esto.
' Esto es un ejemplo de comentario
En este código fuente que os pongo
ahora. Veréis que en FORM_OPEN()
existen lineas comentadas. Cada linea
llama a un procedimiento que ejecuta
un tipo distinto de bucle anidado. Como
me interesa ver el resultado de uno
de ellos. Comento el resto y dejo solo
uno para que se ejecute.
Aquí tenéis un ejemplo de la creación de una rejilla.
Puedes hacer click en las celdas que la forman.
martes, 5 de junio de 2012
Letra del NIF Español
Esta pequeña aplicación os calculara la letra que corresponde a vuestro
documento nacional de identidad. Es muy sencilla.
Letra del NIF
documento nacional de identidad. Es muy sencilla.
Letra del NIF
Otros dibujos
Otros dibujos hechos en un DrawingArea.
Si os gusta hacer graficas, el componente es perfecto. ;-)
Dibujos
Si os gusta hacer graficas, el componente es perfecto. ;-)
Dibujos
Los Bucles
Utilizamos los bucles para repetir un
grupo de instrucciones.
Tenemos diferentes bucles.
- Bucle For - Next
- Bucle Do While - Loop . Existe una variación. While - Wend
- Bucle Repeat - Until
Existe un cuarto tipo de bucle, que
usamos con listas de valores de variables o
con objetos.
Bucle For Each - Next
Cada bucle contiene una variable que le
indica cuando debe acabar
el bucle o se ejecute este, mientras se cumpla una
condición.
Con el bucle For – Next conocemos las
veces que se va ejecutar.
Ejemplo:
Vamos a realizar una serie de tablas de
multiplicar con diferentes bucles.
---código----
Public Sub Form_Open()
Dim seleccion As String
Repeat
Print "Selecciona el tipo de
bucle:"
Print "1 - Bucle Do..While"
Print "2 - Bucle For"
Input seleccion
Select Case seleccion
Case "1"
Bucle_DoWhile
Case "2"
Bucle_For
Case Else
Print "No existe esa
opción"
End Select
Until (seleccion = "1") Or
(seleccion = "2")
'Comprobamos la condición al final
'Utilice variable de cadena en vez de
número para que no hubiera
'error con el tipo introducido por teclado. En caso de
número o cadena.
'Una cadena puede parecer un número. "1"
'Una cadena puede parecer un número. "1"
End
Public Sub Bucle_For()
Dim x As Integer
Dim tabladel As Integer
tabladel = 2
For x = 1 To 10
Print x & " * " &
tabladel & " = " & (x * tabladel)
Next
End
Public Sub Bucle_DoWhile()
Dim x As Integer
Dim tabladel As Integer
x = 1
tabladel = 3
Do While x <= 10 ' Comprobamos la
condición al principio.
Print x & " * " &
tabladel & " = " & (x * tabladel)
x = x + 1
'Incrementamos el contador de
bucle en 1.
'Si no fuese así, entraríamos
en bucle infinito y colgaríamos el programa
'ya que siempre se cumpliría la
condición del principio.
'X sería menor de 10 siempre.
Loop
End
---código---
Bien. El programa presenta un menú en
la parte de consola.
Y te da a escoger que bucle quieres ejecutar.
El primer bucle que nos encontramos es
“Repeat”.”Repetir”
Con este bucle sabemos que se va
ejecutar al menos “una vez” ya que la condición del bucle esta al final.
El uso de Repeat en este lugar esta
hecho con la idea de que si se elige una opción diferente a 1,2 .Se volverá a
presentar la opción de que podamos ejecutar la opción 1 y 2, mostrando una vez mas el menú
Until le dice hasta..hasta que la
selección sea 1 o 2. Hemos vuelto a usar
un operador lógico. El operador
“OR”.El cual le dice, que una de las dos opciones es valida.
En este bucle repeat no hay un número
de veces especificadas para que se ejecute. Solo le dice hasta que se cumpla algo.
Vamos con el siguiente:
Bucle Do While - Loop
La primera opción es Do While. “Hacer
mientras” se cumpla una condición.
A la variable tabladel le hemos
“asignado” un número para que nos diga
la tabla de multiplicar de ese número.
“Hacer mientras que x sea menor o
igual a 10.”
Do While x<=10
x nos vale para incrementarla y una vez
llega 10 nuestro bucle termina.
He usado x=x+1
Podía haber usado la instrucción INC
x .La cual “nos incrementa” x en uno
Siempre incrementara el valor que tenga
x en uno hasta cumplir la condición
del bucle.
Como veis, la condición de esta bucle
esta al principio. Así que puede ejecutarse o no, depende de su condición.
Se podría decir que recuerda a una
“instrucción condicional“ con el añadido de
la repetición.
La variable x actúa como variable de
control del bucle. Sin ella nuestro bucle
se ejecutaría hasta el infinito y
podríamos perder el control de nuestro programa.
Loop marca el final del bucle.
Bucle For – Next.
En este bucle sabemos de principio a
fin que se va ejecutar un numero determinado de veces.
Desde 1 hasta 10.
For x=1 TO 10
x ira almacenando los valores de 1
hasta 10.Cuando llega a 11 sale del bucle.
Si, la x en vez de valer 10 y salir, la
variable continua teniendo un valor después
de la ejecución del bucle y su valor
es x+1
Hacer la prueba. Después del NEXT
añadir:
PRINT x
El bucle FOR tiene dos características
interesantes:
Imagina que queremos que el bucle se
ejecute de dos en dos, de tres en tres, etc.
Para eso usamos la instrucción STEP
---código---
DIM x As Integer
FOR x=1 TO 10 STEP 2
PRINT x
NEXT
---código---
Mostrara 1,3,5...9
Podemos hacerlo al revés,que nos
cuente de mayor a menor.
---código----
DIM x As Integer
FOR x=10 To 1 STEP -2
PRINT x
NEXT
---código---
Hemos hecho que vaya de 10 a 0 y hemos
añadido en STEP el valor -2.
Para que los incrementos sean
negativos.
Pregunta.¿ Que bucle debemos usar en
nuestro programa ?.
Dependerá de la condición que quieras
que haga tu programa.
Para mas información sobre bucles:
Suscribirse a:
Entradas (Atom)