Descargar

Introducción a la programación en Open office.org Basic (página 4)

Enviado por Fermí Vilà


Partes: 1, 2, 3, 4, 5
edu.red

s=s & "Desviación Típica = " & cStr(dt) MsgBox s End Sub

– Crea un botón en la Hoja2 del Macro08.ods, asociado al procedimiento anterior y ejecuta el programa para el caso: 9.- Procedimientos y Funciones

Se define como procedimiento y/o función a un bloque de código que realiza alguna tarea. Hasta ahora, hemos construido los programas utilizando un único procedimiento, pero a medida que los programas (y los problemas) crecen, se va haciendo necesaria la inclusión de más procedimientos.

Una función es lo mismo que un procedimiento con la salvedad, que la función devuelve un valor al procedimiento o función que lo llama.

– Crea un nuevo libro de cálculo, que deberás grabar como Macro09.ods en TuCarpeta. Crea un Module1 y escribe: – Crea un botón en la Hoja1 del Macro09.ods, asociado al procedimiento Prog40 y ejecuta el programa varias veces.

Observa la sintaxis de una “función”: declaramos los parámetros (en nuestro caso v1 y v2) y declaramos también el tipo de dato que devuelve la función, Integer en nuestro caso.

edu.red

Observa de qué forma “llamamos” a una función: NombreFunción (lista de parámetros), en nuestro ejemplo: Suma(n1,n2)

– Vamos a trabajar con más funciones … Sitúate en el Module1 del Macro09 y escribe:

Y – Crea en Hoja1 de Macro09.ods dos botones de nombre: [Prog41] y [Prog42] asociados a los procedimientos 41 y 42 y ejecútalos: Vamos a por otra función … – Escribe en el Module1 del Macro09: – Crea en Hoja1 de Macro09.ods un botón de nombre [Prog43] asociado al procedimiento “Prog43” y ejecútalo.

– Escribe en el Module1 del Macro09.ods:

edu.red

– Crea en la Hoja1 del Macro09, un botón de nombre [Prog44] asociado al procedimiento “Prog44” y ejecútalo. 10.- Números Aleatorios – Crea un nuevo libro de cálculo, que deberás grabar como Macro10.ods en TuCarpeta. Crea un Module1 y escribe los siguientes procedimientos:

edu.red

– Crea en la Hoja1 de Macro10.ods dos botones de nombre: [Prog45] y [Prog46], asociados a los procedimientos 45 y 46 y ejecútalos.

– La función RND Cada vez que el ordenador procesa una línea que contiene la sentencia Rnd, en la celda correspondiente aparece un número aleatorio, decimal entre 0 y 1. El número puede ser cero, pero nunca 1. El número de decimales es 14 (recuerda que en la hoja de cálculo, por defecto aparecen sólo 2) En realidad la serie de números “Rnd” es pseudoaleatoria, para conseguir que la función Rnd genere verdaderos números aleatorios, en el programa hemos de anteponer la sentencia Randomize, que es lo que consideraremos en el siguiente programa.

Observa las siguientes relaciones: 0= X<1 0= Y<6 0= Z<6 0<>2 Then opc=1 Exit For End If Next If opc=1 Then Primo="N" Else Primo="S" End If End Function Sub Prog51 Dim num As Integer, Hoj As Object Hoj=ThisComponent.Sheets(0) num=Val(InputBox("Escribe un número entero")) If Primo(num)="S" then Hoj.getCellByPosition(1,0).SetFormula("El número " & cStr(num) & " es primo" Else Hoj.getCellByPosition(1,0).SetFormula("El número " & cStr(num) & " no es primo" End If End Sub – Crea en la Hoja1 de Macro11.ods un botón de nombre [Prog51] asociado al programa anterior y ejecútalo varias veces. – La función “Primo” aunque complicada, es importante porque contiene elementos nuevos: • resto = x Mod i “Mod” es el operador que nos da el resto de la división entera (en nuestro caso entre x e i) • Exit For Forzamos la salida del bucle For – To – Next

edu.red

Programa que calcula el M.C.D. de dos números, utilizando una función

Antes de todo recordemos el Algoritmo de Euclides para el cálculo del M.C.D. Por ejemplo, para calcular el mcd(38,48), hemos de seguir el siguiente proceso:

1.- necesitamos saber el número mayor 2.- divido el mayor entre el menor, 48/36 = 1 y resto12 3.- divido el divisor de antes entre el resto (de antes): 36/12 = 3 y resto 0 4.- continuamos dividiendo divisor/resto, hasta que la división sea exacta 5.- el m.c.d es el último resto distinto de cero, en nuestro caso 12

En general, para calcular el mcd(a,b): 1.-

2.-

3.-

4.- if a<> 0 resto = a mod b a=b b = resto loop mcd = resto – Escribe en el module del Macro11.ods:

Function MCD (a As Integer, b As Integer) As Integer Dim resto As Integer, aux As Integer If a<> 0 resto = a mod b a=b b = resto loop mcd = resto – Escribe en el module del Macro11.ods:

Function MCD (a As Integer, b As Integer) As Integer Dim resto As Integer, aux As Integer If a<> 0 resto=a Mod b a=b b=resto Loop MCD=resto End Function

Sub Prog52 Dim x As Integer, y As Integer Dim Hoj As Object Hoj=ThisComponent.Sheets(0) x=Val(InputBox("Escribe un número")) y=Val(InputBox("Escribe otro número")) Hoj.getCellByPosition(1,5).SetFormula("El MCD de " & cStr(x) & _ 0 resto = a mod b a=b b = resto loop mcd = resto – Escribe en el module del Macro11.ods:

Function MCD (a As Integer, b As Integer) As Integer Dim resto As Integer, aux As Integer If a<> 0 resto=a Mod b a=b b=resto Loop MCD=resto End Function

Sub Prog52 Dim x As Integer, y As Integer Dim Hoj As Object Hoj=ThisComponent.Sheets(0) x=Val(InputBox("Escribe un número")) y=Val(InputBox("Escribe otro número")) Hoj.getCellByPosition(1,5).SetFormula("El MCD de " & cStr(x) & _

edu.red

" y " & cStr(y) & " es " & cStr(MCD(x,y)) End Sub – Crea en la Hoja1 de Macro11.ods un botón de nombre [Prog52], asociado al último procedimiento y ejecútalo varias veces: MCD(5,25) = 5 MCD(7,3) = 1 MCD(720,300) = 60 Adivinanzas Vamos a hacer un programa que nos pregunte un número entero del 1 al 10, y el usuario del programa tiene 5 tentativas para adivinarlo. – Escribe en el Module1 del Macro11.ods Sub Prog53 Dim x As Integer, num As Integer Dim i As Integer, control As Integer Dim Hoj As Object Hoj=ThisComponent.Sheets(0) Randomize x=Int((10+1-1)*Rnd+1) Do While i<5 i=i+1 num=Val(InputBox("Escribe un entero del 1 al 10, intento " & cStr(i))) If num=x Then Hoj.getCellByPosition(1,6).SetFormula("Lo has acertado en " &_ cStr(i) & " tentativas") i=5 control=1 End If Loop If control=0 Then Hoj.getCellByPosition(1,7).SetFormula("Lo siento, se han acabado tus "&_ "vidas, el número era " & cStr(x)) End If End Sub – Crea un botón asociado al Prog53 y ejecútalo varias veces, para probar el programa. Programa que nos pregunta 5 sumas aleatoriamente y al final nos da la “nota” – Escribe en el Module1 del Macro11: Sub Prog54 Dim x As Integer, y As Integer, z As Integer Dim nota As Integer, i As Integer, Hoj As Object Randomize: Hoj=ThisComponent.Sheets(0) For i=1 To 5 x=Int((9+1-1)*Rnd+1) y=Int((9+1-1)*Rnd+1)

edu.red

z=Val(InputBox(cStr(x) & " + " & cStr(y) & " = ")) If z=x+y Then Hoj.getCellByPosition(1,10+i).SetFormula(cStr(x) & _ " + " & cStr(y) & " = " & cStr(z)) Hoj.getCellByPosition(2,10+i).SetFormula(" Muy Bien ") nota=nota+1 Else Hoj.getCellByPosition(1,10+i).SetFormula(cStr(x) & _ " + " & cStr(y) & " = " & cStr(z)) Hoj.getCellByPosition(2,10+i).SetFormula(" No, es falso ") Hoj.getCellByPosition(3,10+i).SetFormula(cStr(x) & _ " + " & cStr(y) & " = " & cStr(x+y)) End If Next Hoj.getCellByPosition(1,11+i).SetFormula(" Tu nota es " & cStr(2*nota)) End Sub – Crea un botón asociado al Prog54 y ejecútalo varias veces.

edu.red

Ejercicios

16) Crea un libro de cálculo de nombre EjerM16.ods que contenga un procedimiento de nombre EjerM16, que sirva para calcular el mínimo común múltiplo de dos números utilizando la función MCD del procedimiento Prog52 (deberás copiarla en el EjerM16) y sabiendo que mcm(x,y) = x*y/MCD(x,y)

17) Crea un libro de cálculo de nombre EjerM17.ods, que contenga un procedimiento de nombre EjerM17, que sirva para simplificar una fracción numérica, deberás utilizar la función MCD del ejercicio anterior. Observa: a / MCD(a,b) b/ MCD(a,b) a b = La “salida” debería ser de la forma: 18) Crea un libro de cálculo de nombre EjerM18.ods, que contenga un procedimiento de nombre EjerM18, que sirva para sumar o restar dos fracciones y después simplifique el resultado.

Observa: c d a b a(mcm(b,d) /d) + c(mcm(b,d) /d) mcm(b,d) = + La “salida” debería ser: 19) Crea un libro de cálculo de nombre EjerM19.ods que contenga un procedimiento de nombre EjerM19, que sirva para calcular el módulo de un vector en el espacio, utilizando una función.

20) Crea un libro de cálculo de nombre EjerM20.ods, que contenga un procedimiento de nombre EjerM20, que sirva para calcular el área de un triángulo en el espacio, utilizando la función del ejercicio anterior. Recuerda: A=(a1,a2,a3), B=(b1,b2,b3), C=(c1,c2,c3) AB=(b1-a1,b2-a2,b3-a3), AC=(c1-a1,c2-a2,c3-a3) Área del triángulo ABC = mitad del producto vectorial de AB y AC. Compruébalo para el caso:

edu.red

21) Crea un libro de cálculo de nombre EjerM21.ods, que contenga un procedimiento de nombre EjerM21, que construya el triángulo de Tartaglia o Pascal de la siguiente forma: 1º.- Crea una función que calcule el factorial de un número. ?m? m! 2º.- Crea otra función que permita calcular un número combinatorio: ?n ? 3º.- El triangulo de Tartaglia no es más que los resultados de los números combinatorios: ?0? ?0? ?1? ?1? ?0? ?1? ?2? ?2? ?2? ?0? ?1? ?2? … …

4º.- El programa nos ha de preguntar de entrada el número de filas del triángulo.

22) Crea un libro de cálculo de nombre EjerM22.ods, que contenga un procedimiento de nombre EjerM22, tal que: – El programa nos pregunta cuántas multiplicaciones queremos hacer. – El programa nos las pregunta aleatoriamente – Al final el programa nos da la nota cualitativa (utiliza una función). 23) Crea un libro de cálculo de nombre EjerM23.ods, que contenga un procedimiento de nombre EjerM23, que calcule un determinante de tercer orden. Recuerda: b e h a d g c f = aei + dch + bfg – gec – hfa – dbi i Compruébalo para el caso:

24) Crea un libro de cálculo de nombre EjerM24.ods que contenga un procedimiento de nombre EjerM24, que sirva para discutir un sistema de tresecuaciones con tres incógnitas, sólo en los casos compatible determinado e incompatible y lo resuelve en el caso compatible determinado. De la siguiente forma:

1º) Crea una función que sirva para calcular un determinante de tercer orden (ejercicio anterior). 2º) Dado el sistema:

Calcula los determinantes: a b c ax+by+cz=j dx+ey+fz=k gx+hy+iz=l

j b c a j c a b j det = d e f detx = k e f dety = d k f detz = d e k g h i l h i g l i g h l 3º) Si det no es 0 entonces el sistema es compatible determinado

edu.red

Si det es 0 y (detx no es cero o dety no es 0 o detz no es 0) entonces el sistema es incompatible.

4º) Si el sistema es compatible determinado, la solución por Cramer es x=detx/det, y=dety/det, z=detz/det

Pruébalo para los casos: 25) Crea un libro de cálculo de nombre EjerM25.ods, que contenga un procedimiento de nombre EjerM25, que resuelva un sistema de dos ecuaciones con dos incógnitas por el método de Cramer. Crea una función que calcule un determinante de 2º orden

Compruébalo para los casos: 26) Crea un libro de cálculo de nombre EjerM26.ods que contenga un procedimiento de nombre EjerM26, que calcule los 50 primeros términos de la sucesión de término general: (3n+1) / (2n-1)

edu.red

12.- Cuadros de Diálogo

a) Crea un nuevo libro de cálculo, que deberás grabar como Macro12.ods. Crea, como siempre, un Module1 asociado al Macro12.

– Sitúate en el Editor de Basic. Accede al menú contextual de la pestaña “Module1”, es decir: • Sitúa el cursor del ratón encima de la pestaña Module1 • Pulsa el botón derecho del ratón: • Selecciona la opción: Insertar Diálogo BASIC

– Nos acabamos de situar en una nueva pantalla (Dialog1), que contiene un formulario o cuadro de diálogo vacío. Si observas el ángulo inferior izquierdo de la pantalla:

podemos situarnos fácilmente en el editor de BASIC (clic en la pestaña Module1) y/o volver al formulario (clic en la pestaña Dialog1).

– Desde la pantalla del Dialog1, haz clic en el icono “Insertar elementos de Control”:

Si mantienes pulsado el botón izquierdo, aparecerán todas sus opciones:

edu.red

Y puedes arrastrarlo (clic en el marco de la ventana) a cualquier punto de la pantalla: – Haz clic en el “Campo de Texto” del cuadro “Campos de Control”:

Marca un pequeño recuadro en el formulario:

– Clic en el “Botón” del cuadro “Campos de Control”: – Marca un pequeño recuadro debajo del campo de texto que acabamos de insertar. – Marca otro “CommandButton”, a la derecha del anterior: – Selecciona el formulario, para ello deberás hacer: • Clic en “Flecha de Selección” del cuadro Campos de Control: • Marca una ventana que abarque al formulario entero.

edu.red

– Una vez seleccionado el formulario, hazlo más pequeño y observarás que todos los elementos del interior también se hacen más pequeños. Resitúa los elementos, hasta tener aproximadamente: – Selecciona el “CommandButton1” y accede a sus propiedades: clic en el campo de control “Propiedades”:

Observa que podemos resituar los elementos en pantalla, de manera que se encuentre visible: • La ventana de propiedades. • El formulario • El Cuadro de Controles De esta forma si seleccionamos otro elemento del formulario (o el mismo formulario) accedemos automáticamente a sus propiedades (pruébalo).

– Con el “CommandButton1” seleccionado y sus “Propiedades” a la vista. Cambia el contenido de la propiedad “Título”, que era CommandButton1 por “Saludo”.

– Selecciona el “CommandButton2” y cambia su propiedad “Título” por “Borrar Saludo”

– Creo que está claro lo que nos proponemos: Al hacer clic en el botón [Saludo], queremos que salga escrito (en el cuadro de texto), un saludo. Por ejemplo: “Bienvenido al Basic del OpenOffice” y al hacer clic en [Borrar Saludo], nos gustaria que se borrara el mensaje anterior. Veamos: •

• En primer lugar, investiga el nombre del cuadro de texto: basta que selecciones el cuadro de texto y observes su Propiedad = Nombre. Si todo funciona correctamente verás que es TextField1. Si observas el contenido de su propiedad “Texto”, verás que no tiene nada; es lógico, el cuadro de texto está vacio. Sitúate en el Module1 (clic en la pestaña correspondiente) y escribe:

edu.red

• •

• Vuelve al Dialog1 y selecciona el botón [Saludo]. En su ventana de propiedades, haz clic en la pestaña Acontecimientos. Sitúa el cursor de escritura en el campo “Boton del ratón pulsado” y haz clic en el botón […]. [Asignar] Selecciona ClicSaludo de Macro12.ods Standard Module 1 [Aceptar] [Aceptar]

Asocia al botón [Borrar Saludo] el programa ClicBorrarSaludo. Es decir: selecciona el botón [Borrar Saludo] en Dialog1. Accede a la pestaña Acontecimientos, en su ventana de propiedades. Y en el campo Boton del ratón pulsado, asigna el procedimiento ClicBorrarSaludo. Sitúate en la hoja de càlculo e inserta un botón de nombre “HOLA”, asociado al procedimiento AbreFormulario – Prueba el funcionamiento de lo que hemos “programado”: • Clic en el botón [HOLA]. Si todo va bien, aparece el formulario. • Clic en el botón [Saludo] • • Clic en el botón [Borrar Saludo] Para acabar, clic en la “X” del extremo superior derecho del formulario.

edu.red

– Sitúate en el Editor de Basic (Module1) para “estudiar” nuestro programa: el procedimiento AbreFormulario: Es bastante extraño: el Basic del OpenOffice es una versión de Basic, próxima a Java. De todas formas no te preocupes: las tres líneas de nuestro programa (observa en la segunda línea que aparece el nombre del formulario: Dialog1), sirven para abrir el formulario de nombre Dialog1.

Observa también que la declaración: Dim oDialogo As Object se encuentra al principio del módulo, y fuera de todo programa, de esta forma evitamos el tener de declarar el formulario, en cada uno de los demás procedimientos del módulo.

El procedimiento ClicSaludo, está más claro: … TextField1.Text = “mensaje” El campo de texto de nombre “TextField1”, propiedad “Text” (texto) ha de ser igual a “mensaje”. Es decir, el contenido (propiedad Text) del campo de texto (TextField1) es “mensaje”. El “prefijo”, oDialogo.Model deberemos escribirlo en todos los controles que aparezcan en los procedimientos del formulario.

b) Vamos a hacer un formulario más complicado: crea un nuevo libro de cálculo que deberás grabar como Macro13.ods. Crea un Module1, también un Dialog1 asociado al Macro13

– Inserta en el formulario, una etiqueta: Clic en el icono “Etiqueta” del Cuadro de Controles:

De propiedad “Título”: Introduce la clave secreta Sitúa el cursor de escritura en el campo Fuente (propiedad de la etiqueta que acabamos de insertar) y clic en su botón […]. Selecciona Fuente: Arial. Estilo: Negrita Cursiva y Tamaño: 12 [Aceptar] Cambia el color de fondo (la etiqueta ha de estar seleccionada) a “Amarillo Pastel”

– Selecciona el formulario (deberás deseleccionar la etiqueta y marcar un recuadro que abarque todo el formulario) De esta forma podemos acceder a sus propiedades: por ejemplo, coloca como “Color de fondo= Gris azulado” – Inserta un campo de texto a la derecha del texto “Introduce la clave secreta”. En su propiedad “Caracter de contraseña”, escribe un asterisco.

– Inserta dos botones: • El “CommandButton1” de propiedad “Título”: Aceptar • El “CommandButton2” de propiedad “Título”: Salir

edu.red

– Vamos a programar nuestros botones: • Sitúate en el Module1 y escribe: – Asocia al botón [Aceptar] el programa “Aceptar”: • En la pantalla correspondiente al “Dialog1” • Selecciona el botón [Aceptar] • Clic en la pestaña Acontecimientos de la ventana Propiedades • En el campo Al Ejecutar o en Botón del ratón pulsado, asignale el procedimiento Aceptar de Module1

– Haz lo mismo para asociar al botón [Salir] el procedimiento Salir del Module1.

– Sitúate en la hoja de cálculo e inserta un botón de nombre [CONTRASEÑA] y asignalo al procedimiento AbreForm del Module1. Por último ejecuta y prueba el programa. – Observa: • • La función UCase(argumento), convierte el argumento en mayúsculas. Gracias al uso de esta función, podemos introducir la contraseña en mayúsculas o minúsculas. Una de las líneas (sentencias) del programa “Aceptar” es el nombre de otro programa: “Salir”. Es decir llamamos (se ejecuta) al procedimiento Salir. c) Ya habíamos hecho un programa que calculaba el factorial de un número, vamos a repetirlo pero visualmente, es decir, utilizando un formulario y controles … – Crea una nueva hoja de cálculo de nombre Macro14.ods con un Module1 y un Dialog1

edu.red

– Crea el siguiente formulario: • • El título no es más que una etiqueta (Label1), con la propiedad “Borde = en 3D” y “Alineación = Centrado” El control que hay debajo de “Escribe un …” es otro cuadro de texto (TextField2), con el “Color de Fondo = Verde Pastel” – Escribe en el Module1 el código:

Dim oDialogo As Object

Sub AbreForm DialogLibraries.LoadLibrary("Standard") oDialogo=createUnoDialog(DialogLibraries.Standard.Dialog1) oDialogo.execute() End Sub

Sub Salir oDialogo.endExecute() End Sub

Sub Calcular Dim i As Double, fact As Double fact=1 For i=1 To CDbl(oDialogo.Model.TextField1.Text) fact=fact*i Next oDialogo.Model.TextField2.Text="El factorial de " & _ oDialogo.Model.TextField1.Text & " es " & _ cStr(fact) End Sub

Sub Otro oDialogo.Model.TextField1.Text="" oDialogo.Model.TextField2.Text="" End Sub

– Asocia al botón [Calcular] el procedimiento Calcular

– Asocia al botón [Otro] el procedimiento Otro

– Asocia al botón [Salir] el procedimiento Salir.

– Crea en la Hoja1 del Macro14 un botón de nombre [FACTORIAL] y asócialo al procedimiento AbreForm

Sólo nos queda probar el programa (espero que te funcione correctamente).

edu.red

d) Crea una nueva hoja de cálculo de nombre Macro15.ods con un Module1 y un Dialog1

– Crea el siguiente formulario: – Creo que está claro lo que pretendemos: tenemos dos campos de texto (TextField1 y TextField2), escribimos en el primero el número de un DNI (8 dígitos) y al hacer clic en el botón [Calcula], aparece en el “TextField2”, el NIF correspondiente, es decir el DNI anterior más la letra correspondiente al Nif.

Veamos: – La letra correspondiente al NIF de un DNI es la siguiente: se divide el DNI entre 23, sin decimales, es decir por ejemplo: 40940754/23 = 1780032 y Resto =18. Según el resto de la división, que será un número de 0 a 22 le corresponde la letra del NIF, según la siguiente tabla: Resto 16 17 18 19 20 21 22 Letra del NIF Q V H L C K E Resto 0 1 2 3 4 5 6 7 Letra del NIF T R W A G M Y F Resto 8 9 10 11 12 13 14 15 Letra del NIF P D X B N J Z S En nuestro ejemplo, a un DNI igual a 40.940.754 le corresponde un resto de la división por 23 de 18, por lo tanto la letra del NIF de nuestro ejemplo será la “H”.

– El problema ahora es “traducir” los cálculos anteriores al Basic del OpenOffice… Int() es una función incorporada (igual que MsgBox() y muchas más), que nos da la parte entera del número que escribamos como argumento. Así: Int(40940754/23) =1780032, nos da el resultado de la división sin decimales (es lo que en matemáticas se llama división entera) Pensemos ahora en la “prueba de la división: El dividendo = divisor*cociente + resto”. O lo que es equivalente: “El resto de la división = dividendo – divisor*cociente”. En nuestro ejemplo: 18 = 40.940.754 – 23*Int(40940754/23)

– Escribe en el Module1, la “function” siguiente y compara la igualdad anterior con la instrucción de nuestra función Letra: num = x – 23*Int(x/23)

Function Letra(x As Double) As String Dim num As Double num=x-23*Int(x/23) Select Case num Case 0 Letra="T" Case 1 Letra="R" Case 2 Letra="W" Case 3 Letra="A" Case 4 Letra="G" Case 5 Letra="M"

edu.red

Case 6 Letra="Y" Case 7 Letra="F" Case 8 Letra="P" Case 9 Letra="D" Case 10 Letra="X" Case 11 Letra="B" Case 12 Letra="N" Case 13 Letra="J" Case 14 Letra="Z" Case 15 Letra="S" Case 16 Letra="Q" Case 17 Letra="V" Case 18 Letra="H" Case 19 Letra="L" Case 20 Letra="C" Case 21 Letra="K" Case 22 Letra="E" End Select End Function – Escribe en el Module1, los procedimientos: Dim oDialogo As Object Sub AbreForm DialogLibraries.LoadLibrary("Standard") oDialogo=createUnoDialog(DialogLibraries.Standard.Dialog1) oDialogo.execute() End Sub Sub Calcula Dim cadena As String cadena=oDialogo.Model.TextField1.Text Select Case Len(cadena) Case Is<8 MsgBox "Has de escribir 8 dígitos" Case Else oDialogo.Model.TextField2.Text=oDialogo.Model.TextField1.Text & _ cStr(Letra(CDbl(oDialogo.Model.TextField1.Text)) End Select End Sub – Asocia al botón [Calcula] el procedimiento Calcula

edu.red

– Crea en la Hoja1, un botón de nombre [NIF] y asócialo al procedimiento AbreForm

Ejecuta y prueba el funcionamiento de nuestro programa.

e) Crea una nueva hoja de cálculo de nombre Macro16.ods con un Module1 y un Dialog1

– Crea el siguiente formulario: Ten en cuenta las siguientes propiedades: •

• TextField2 Sólo lectura = Sí

TextField4 Sólo lectura = Sí Juego de Caracteres. Tamaño = 24

Los últimos cuadros de texto (desde el TextField5 hasta el TextField10): Alineación = Centrado Sólo Lectura = Sí Juego de Caracteres. Tamaño = 14

– Lo que pretendemos es simular un juego de lotería, que funcione de la siguiente forma: el programa sortea seis números del 1 al 49 y nosotros hemos de adivinar uno de estos números. En los últimos cuadros de texto (TextField5, …, TextField10) aparecerán los seis números del sorteo, cada vez que hagamos clic en [Sorteo]. Es simplemente para comprobar el funcionamiento del programa (al final, podemos borrarlos).

– El primer problema de nuestro programa, es tener guardados los seis números del sorteo, para ello utilizaremos un array de 6 elementos )números enteros), que deberíamos declarar a nivel de módulo, para que se encuentren “presentes” en los diferentes procedimientos que haremos. Aprovecha también para escribir en el Module1, el programa que abre un formulario:

edu.red

Observa pues, que declaramos una variable matricial (Loteria) de una dimensión, con seis valores enteros: Loteria(0), Loteria(1), …, Loteria(5)

– Escribe en el Module1 el procedimiento: Vamos a ver si entendemos el programa:

– Definimos cinco variables: • i: es el índice de un ciclo For – To – Next de i=0 hasta i=5, a partir del cual guardaremos en Loteria(i) los números sorteados. • j: es el índice de otro ciclo For – To – Next de j=0 hasta j=i, que servirá para investigar si algún valor de “Lotería” está repetido • NumeroSorteado: representa el número aleatorio de 1 hasta 49 (NumeroSorteado = Int(Rnd*49)+1) • HaSalido: controlará si el numero sorteado ya ha salido • Trabajar: controlará el ciclo Do While – Loop • Básicamente el funcionamiento es: Si el valor de “NumeroSorteado” (número aleatorio entre 1 y 49) es igual a algún valor de “Loteria()”, entonces “HaSalido=1”, y “NumeroSorteado” vuelve a tomar otro número aleatorio entre 1 y 49. Si el valor de “NumeroSorteado” no ha salido, el valor de Loteria(), es igual a dicho número y salimos del Do While – Loop (Trabajar = 0)

– Asocia al botón [Sorteo] del Dialog1, el procedimiento anterior (Al Ejecutar = document:Standard.Module1.Lote)

– Sitúate en la Hoja1 e inserta un botón de nombre [Lotería] asociado al procedimientoAbreForm.

– Ejecuta el programa que hemos hecho hasta ahora: • Clic en [Lotería] de la Hoja1 • Clic en [Sorteo] del formulario. Ejecuta el programa varias veces, para comprobar que los 6 valores de la lotería son distintos.

Continuemos … – Al escribir un número del 1 al 6 en el cuadro de texto TextField3, nos interesa que aparezca en el TextField4 el número correspondiente de la “Lotería” …

edu.red

Escribe en el Module1 el procedimiento: – Accede a las Propiedades (solapa: Acontecimientos) del TextField3, y asigna al “acontecimiento: Texto Modificado” el procedimiento “Orden”. Nos quedará: Texto Modificado = document:Standard. Module1.Orden

Esto quiere decir, que sólo por escribir un número (o cambiarlo) en TextField3, en el TextField4 aparecerá automáticamente el número de la “Loteria()”.

Pruébalo. -Observa el procedimiento “Orden”: • La variable “i” es el número que escribimos en el tercer cuadro de texto (i = Val(…TextField3 …)) • La variable “Elemento” es el valor correspondiente del vector Loteria(): Si i=1 entonces Elemento = Loteria(i-1)=Loteria(0) Si i=2 entonces Elemento = Loteria(i-1)=Loteria(1) • Etc. Dicho valor de “Elemento”, se escribe en el cuadro de texto 4: …TextField4 … = cStr(Elemento) Para acabar el programa de la lotería: Nos interesa que al escribir un número (del 1 al 49), en el primer cuadro de texto y pulsar [Tab] para pasar a otro control (Al perder el foco), aparezca en el segundo cuadro de texto, un mensaje indicando si lo hemos adivinado o no … – Escribe en el Module1:

edu.red

– Accede a las propiedades (solapa: acontecimientos) del TextField1, y asigna al acontecimiento = “Al perder el foco” el procedimiento document:Standard.Module1.Adivino

Sólo nos queda probar exhaustivamente nuestro programa. Recuerda que por último debes grabar nuestro libro Macro16.ods con el mismo nombre.

f) Vamos a hacer un programa, deberíamos hablar de proyecto, que conste de más de un formulario … Crea una nueva hoja de cálculo de nombre Macro17.ods con su Module1 y dos formularios: Dialog1 y Dialog2

– Crea aproximadamente el siguiente formulario (Dialog1): – Y el Dialog2: – Escribe en el Module1:

Partes: 1, 2, 3, 4, 5

 Página anterior Volver al principio del trabajoPágina siguiente