Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

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




Enviado por Fermí Vilà



Partes: 1, 2, 3, 4, 5

Monografias.com

– Sitúate en la hoja de cálculo (Hoja1). Crea un botón asociado al procedimiento Prog14 y pruébalo:
– Ejecuta varias veces el programa, observando detenidamente su resultado y el mismo programa ya que
nos encontramos con elementos nuevos, veamos
• Si al escribir un programa, nos encontramos con una línea demasiado larga, podemos
redistribuirla en varias líneas, sin más que escribir el símbolo de subrayado al final de la
línea (o cada línea), precedido de un espacio. Es decir: las líneas de programa:
s = s + “Valor de x después de pasar por el contador x=x+3” + Chr(9) + _
cStr(x)) + Chr(10)






son en realidad una sóla línea.
Declaramos una cadena: Dim s As String y la inicializamos a nada: s=””. No sería
necesario ya que al declararla, automáticamente se inicializa a “nada”.
x=x+3 es un contador, instrumento muy utilizado en “programación”, que nos permite
añadir al valor de X tres unidades.
Si se lee de la siguiente forma, creo que se entiende mejor: “El nuevo valor de X es igual al
anterior valor de x + tres unidades.
La función Chr(9) es equivalente a pulsar la tecla de tabulación: [Tab]
La función Chr(10) es equivalente a pulsar la tecla [Return] o [Intro]. Equivale a Chr$(13)
x=x-2, x=x*3 son dos contadores de “x”, en el primer caso modificará el valor de x
disminuténdolo en 2 unidades y en el segundo lugar multiplicándolo por 3.
El operador “suma” entre “Strings” se comporta como el operador de concatenación “&”. Es
decir: sumar dos textos es equivalente a unirlos: colocarlos uno al lado del otro.
s es una cadena (string) que pasa por diferentes “contadores”: s = s + … En la práctica,
acumulamos en “s” muchos datos, que al incluir el Chr(9) y el Chr(10) se organizan en
diferentes líneas (Chr(10)) y columnas (Chr(91)).
Observa la técnica que utilizamos en este procedimiento: “Acumulamos en s una serie de
datos, durante la ejecución de todo programa y que mostramos al final: MsgBox s”
– Escribe en el Editor de Basic del Macro05.ods, el siguiente procedimiento:

Monografias.com

– Sitúate en la hoja de cálculo (Hoja1). Crea un botón asociado al procedimiento Prog15 y ejecútalo
varias veces: prueba las diferentes posibilidades: H, h, V, v, cualquier cosa.

– Observa el Prog15:
• String*1
Significa “string”, es decir, texto pero de longitud 1, o sea, un solo carácter.
• Or
Significa, evidentemento “o”

– Escribe el siguiente procedimiento:
– Crea un botón asociado al programa Prog16 y ejecuta el programa unas cuantas veces, buscando
detenidamente lo que sucede: observa qué técnica más sencilla tenemos, para interrumpir un programa o
volver a empezar.
Acabamos de ver un programa con el operador lógico “Or”, vamos a ver ahora uno con el
operador lógico “And”: utilizaremos este operador cuando sea preciso que para ejecutar un bloque de
instrucciones se cumpla más de una condición. Observa que deberán cumplirse todas las condiciones …

– Escribe en el Macro05.ods el siguiente procedimiento:
– Crea un botón asociado al programa Prog17 y ejecuta el programa unas cuantas veces. Considera el
caso: “Patatas” y “Total >50”:

Monografias.com

– Estudio del Prog17:
• Observa en primer lugar que no declaramos ninguna variable y el programa funciona
exactamente igual. Si no declaramos una variable, por dfecto, el OpenOffice considerará a
esta variable tipo Variant, esto es un tipo indefinido de variable que toma el valor correcto
cuando adquiere o asignamos un valor. Bajo este punto de vista, podríamos pensar que es
mejor no declarar las variables. Pero hay un problema: el tipo Variant es el que consume
más memoria. La conclusión, pues, es declarar todas las variables, aunque el “BASIC” no

nos lo exija.
Observa el uso del operador dos puntos “:”, nos permite escribir varias sentencias distintas
de un programa en una sola línea. Viene a ser el operador contrario al “carácter de
subrayado, precedido de un espacio en blanco”, que nos permitía separar en varias líneas,
una única sentencia.

7.- Otras estructuras de programación

Crea un nuevo libro de cálculo y grábalo con el nombre Macro06.ods en TuCarpeta

Accede al Editor de Basic (deberás crear el Module1 en Macro06.ods) y escribe el siguiente
procedimiento:
– Crea un botón (en Hoja1), asociado al procedimiento Prog18 y ejecuta el programa unas cuantas veces.

Monografias.com

– La estructura de programación “Select Case”
Select Case variable
Case a
Sentencia1
Sentencia2

Case b
Sentencia3
Sentencia4

Case Else
Sentencia5
Sentencia6

End Select
Viene a ser una generalización de la estructura If – Then: según el valor de la “variable”, se ejecutarán
unas sentencias u otras.
Veamos a continuación una generalización en las condiciones del “Select – Case” …
Escribe (en Macro06) el siguiente procedimiento:
Sub Prog19
Dim num As Integer, notanum As Integer
Dim bien As Integer, notacual As String, s As String
Dim hoj As Object, Cel1 As Object, Cel2 As Object
Dim Cel3 As Object, Cel4 As Object, Cel5 As Object
Hoj=ThisComponent.Sheets(0)
Cel1=Hoj.getCellByPosition(4,4):Cel2=Hoj.getCellByPosition(4,5)
Cel3=Hoj.getCellByPosition(4,6):Cel4=Hoj.getCellByPosition(4,7)
Cel5=Hoj.getCellByPosition(4,8)
num=Val(InputBox("Escribe el número total de preguntas")
bien=Val(InputBox("Escribe el número de respuestas acertadas")
notanum=10*bien/num
Select Case notanum
Case 0 to 1
notacual="Muy Deficiente"
Case 2 to 3
notacual="Deficiente"
Case 4
notacual="Insuficiente"
Case 5
notacual="Suficiente"
Case 6
notacual="Bien"
Case 7 to 8
notacual="Notable"
Case 9 to 10
notacual="Excelente"
End Select
s="Nota Cualitativa" & Chr(10) & Chr(10)
s=s & "Número de preguntas =" & num & Chr(10)
s=s & "Número de correctas = " & bien & Chr(10)
s=s & "Nota cualitativa = " & cStr(notanum) & Chr(10)
s=s & "Nota cualitativa : " & notacual
MsgBox s
Cel1.SetFormula("Nota Cualitativa")
Cel2.SetFormula("Número de preguntas " & cStr(num))
Cel3.SetFormula("Número de correctas " & cStr(bien))
Cel4.SetFormula("Nota Cuantitativa " & cStr(notanum))

Monografias.com

Cel5.SetFormula("Nota Cualitativa " & notacual)
End Sub

– Crea en Hoja1 un botón asociado al procedimiento anterior y ejecútalo varias veces, para comprobar su
funcionamiento.
Veamos a continuación otra estructura de programación, en esta ocasión de tipo repetitivo.

– Escribe en el “Editor de Basic” del Macro06.ods el siguiente procedimiento:
– Crea en Hoja1 un botón asociado al procedimiento Prog20 y ejecútalo varias veces, para comprobar su
funcionamiento.

– Estudio del Prog20
• La estructura “For – To – Next”

For indice = número1 To número2
Sentencia 1
Sentencia 2
Sentencia 3

Next

Monografias.com

El bloque de sentencias 1, 2, 3, … se repiten desde el número1 hasta el número2 de unidad en unidad

Observa de qué forma “acumulamos” la suma, utilizamos un contador del tipo: Total =
Total + Valor. Es decir, el nuevo valor de “Total” es el anterior valor de “Total” más el
nuevo número “Valor”.

– Escribe en el “Editor de Basic” de Macro06.ods el procedimiento:
– Crea un botón asociado al procedimiento Prog21y ejecuta el programa.
Si todo funciona correctamente, se rellenará el rango H11:H15 de los números pares 2, 4, 6, 8, 10

– Observa: “For i=2 To 10 Step 2”
Desde i=2 hasta i=10 de dos en dos (step = paso)

Vamos a hacer un programa que nos permita calcular la media de 5 notas …

– Escribe en el “Editor de Basic” de Macro06 el procedimiento:

Crea un botón asociado al procedimiento Prog22 y ejecuta varias veces el programa.
Vamos a por otro ejercicio de “for – to next”: escribe en el “Editor de Basic” del Macro06, el
procedimiento:

Monografias.com

– Crea un botón asociado al procedimiento Prog23 y ejecuta varias veces el programa.

Vamos a estudiar la estructura repetitiva “Do While … Loop” …

– Escribe en el “Editor de Basic” del Macro06.ods el siguiente procedimiento:
– Crea un botón, en la Hoja2 de Macro06.ods, asociado al procedimiento Prog24 y ejecútalo varias
veces.

– La estructura de programación Do While – Loop

Do While condición
Sentencia1
Sentencia2

Loop
Mientras se cumpla la “condición”, se repetirá la ejecución de las sentencias 1, 2, etc.

– Escribe en el “Editor de Basic” del Macro06.ods el siguiente procedimiento:
– Crea un botón, en la Hoja2, asociado al procedimiento Prog25 y ejecútalo.

– En el Prog16 vimos una forma de volver a empezar, pero sólo una vez, en cambio en el Prog25 gracias
a la estructura “Do While – Loop”, disponemos de una tècnica para repetir la ejecución de un programa
(volver a empezar), tantas veces como queramos.

Vamos a complicar el programa, se trata de crear un procedimiento que sirva para incluir
registros en una base de datos. El programa irá pidiendo datos mientras escribamos algún valor en el
“InputBox” correspondiente al campo “nombre”, de forma que si al preguntar el “nombre”, no escribimos
nada, se terminará la ejecución del bloque correspondiente al Do While – Loop

Monografias.com

– Escribe:

Crea un botón asociado al procedimiento Prog26 y ejecútalo varias veces.
Debes tener en cuenta que las celdas de la hoja de cálculo correspondientes a una fecha, deberás
formatearlas así: como fechas.

Al introducir una fecha utilizando el InputBox, por defecto, deberás utilizar la notación inglesa: primero
el mes y después el día.

Graba el libro de cálculo Macro06.ods con el mismo nombre.
Crea un nuevo libro de cálculo, que deberás grabar como Macro07.ods en TuCarpeta y crea un
“Module1”

Programa que suma todos los números que queramos

– Escribe en el Editor de Basic de Macro07 el siguiente procedimiento:

Monografias.com

– Crea un botón, en la Hoja1 de Macro07, asociado al procedimiento anterior y ejecútalo unas quantas
veces.

Monografias.com

Programa que nos resuelve una equación de 2º grado
– Escribe en el “Editor del Basic” del Macro07 el siguiente programa:
Sub Prog28
Dim a As Double, b As Double, c As Double
Dim dis As Double, x1 As Double, x2 As Double
Dim x As Double, Hoj As Object
a=CDbl(InputBox("Coeficiente de x^2"))
Hoj=ThisComponent.Sheets(0)
Hoj.GetCellByPosition(4,0).SetFormula("Coeficiente de x^2 = " & cStr(a))
If a=0 then
Hoj.GetCellByPosition(4,1).SetFormula("No es una ecuación de 2º grado")
Else
b=CDbl(InputBox("Coeficiente de x= "))
Hoj.GetCellByPosition(4,1).SetFormula("Coeficiente de x = " & cStr(b))
c=CDbl(InputBox("Término independiente = "))
Hoj.GetCellByPosition(4,2).SetFormula("Término Independiente = " & cStr(c))
dis=b^2-4*a*c
If dis=0 then
x=(-b)/(2*a)
Hoj.GetCellByPosition(4,4).SetFormula("La ecuación tiene una solución = " &
cStr(x))
End If
If dis<0 then
Hoj.GetCellByPosition(4,4).SetFormula("Las soluciones son imaginarias")
End If
If dis>0 then
x1=(-b+Sqr(dis))/(2*a): x2=(-b-Sqr(dis))/(2*a)
Hoj.GetCellByPosition(4,4).SetFormula("x1 = " & cStr(x1))
Hoj.GetCellByPosition(4,5).SetFormula("x2 = " & cStr(x2))
End If
End If
End Sub
– Crea un botón, en la Hoja1 de Macro07, asociado al procedimiento anterior y ejecútalo para los casos:
• a=0
• a=1 ; b=1 ; c=1
• a=1; b=-4; c=4
• a=1; b=1; c=-6
• Pruébalo también para valores decimales.
– Nota que la función Sqr(), es una función incorporada al Basic del OpenOffice, que nos permite
calcular la raíz cuadrada de un número..

Monografias.com

Suma y Producto de los múltiplos de 2 inferiores a 30

– Escribe en el “Editor del Basic” del Macro07 el siguiente procedimiento:
– Crea un botón, en la Hoja1 de Macro07, asociado al procedimiento anterior y ejecútalo para probarlo

Cálculo del factorial de un número

– Escribe en el “Editor del Basic” de Macro07.ods el siguiente procedimiento:
– Crea un botón, en la Hoja2 de Macro07 asociado al Prog30 y pruébalo varias veces.

– Recuerda que el factorial de un número “x” es x! = x(x-1)(x-2)(x-3)…3.2.1

Monografias.com

Programa que calcula los 10 primeros múltiplos del número que queramos, por último nos da la
suma y el producto de todos ellos.

– Escribe:
– Crea un botón en la Hoja2 de Macro07 asociado al Prog31 y puébalo varias veces

Monografias.com

Tabla de valores de la función y = x2 – 5x + 10

– Escribe en el “Editor del Basic” del Macro07.ods, el siguiente procedimiento:
– Crea un botón, en la Hoja2 de Macro07, asociado al Prog32 y ejecútalo.

Monografias.com

Cálculo de la hipotenusa de un triángulo rectángulo. El programa tiene la opción de volver a
empezar.

– Escribe en el “Editor del Basic” del Macro07.ods, el programa:
– Crea un botón, en la Hoja2 de Macro07 asociado al Prog33 y calcula unas cuantas “hipotenusas”…
– Observa:
UCase(cadena): es una función incorporada al “OpenOffice Basic”, que transforma todas las
letras de “cadena” a mayúsculas.

Es decir, que escribir: UCase(opc) = “S” es equivalente a escribir: opc = “S” Or opc = “s”,
pero más corto.

Monografias.com

Programa que calcula el número “e”

– Escribe en el “Editor del Basic” del Macro07, el siguiente programa:
– Crea un botón, en la Hoja2 de Macro07 asociado a Prog34 y ejecútalo …
– Observa:
Exp(número) es una función incorporada al “OpenOffice Basic”, que nos da como resultado “e”
elevado al “número”. Por lo tanto: Exp(1) = e

Monografias.com

Ejercicios

4) Crea un nuevo libro de cálculo de nombre EjerM04.ods que contenga un procedimiento de nombre
EjerM04, que haga lo siguiente:




El procedimiento nos pide que escribamos dos números positivos menores de 57
El programa nos da como resultado el producto de los dos números
Si los números no son positivos o son mayores de 57, el programa nos lo dice.
El programa nos pregunta al final si queremos volver a empezar
5) Crea un nuevo libro de cálculo de nombre EjerM05.ods que contenga un procedimiento de nombre
EjerM05 que haga lo siguiente:
El programa nos va pidiendo números, hasta que escribimos el número 9999, por último el
programa nos da como resultado el número de números introducidos, exceptuando el 9999

6) Crea un nuevo libro de cálculo de nombre EjerM06.ods que contenga un procedimiento de nombre
EjerM06 que haga lo siguiente:
El programa escribe todos los múltiplos de 23 inferiores a 1000 y por último nos da la suma de
todos ellos.

7) Crea un nuevo libro de cálculo de nombre EjerM07.ods, que contenga un procedimiento de nombre
EjerM07 que haga lo siguiente:



El programa hace una tabla de valores de la función y = sen(7x-5)
El programa nos pide los dos valores de “x” (valores máximo y mínimo de la tabla de valores
El programa nos pide el incremento (variación) de la “x”.
8) Crea un nuevo libro de cálculo de nombre EjerM08.ods que contenga un procedimiento de nombre
EjerM08, que sirva para calcular un cateto de un triángulo rectángulo a partir del otro cateto y la
hipotenusa, de la siguiente forma:




El programa nos pide el valor de la hipotenusa
El programa nos pide el valor de un cateto
Si el cateto es mayor que la hipotenusa, el programa nos da un mensaje de error y se acaba.
El programa nos da como resultado el valor del otro cateto y nos pregunta si queremos volver a
empezar.

9) Crea un nuevo libro de cálculo de nombre EjerM09.ods, que contenga un procedimiento de nombre
EjerM09 y que sirva para resolver ecuaciones de 2º grado del tipo: ax2 + bx = 0

10) Crea un nuevo libro de cálculo de nombre EjerM10.ods, que contenga un procedimiento de nombre
EjerM10 y que sirva para resolver sistemas de ecuaciones del tipo:
ax + by = c
dx + ey = f
Prueba el funcionamiento del programa para el caso a=1, b=-2, c=-3, d=3, e=1,
f=5, si todo funciona correctamente: x=1, y=2. La “salida” debería ser de la forma:
11) Haz un nuevo libro de cálculo de nombre EjerM11.ods, que contenga un procedimiento de nombre
EjerM11 que escriba los 15 primeros múltiplos de 7, su suma y su producto. El programa ha de tener la
posibilidad de volver a empezar.

Monografias.com

12) Crea un nuevo libro de cálculo de nombre EjerM12.ods, que contenga un procedimiento de nombre
EjerM12, que sirva para calcular el área de un triángulo o el área de un rectángulo o el área de un círculo.
El programa ha de tener la posibilidad de volver a empezar.

13) Crea un nuevo libro de cálculo de nombre EjerM13.ods que contenga un procedimiento de nombre
EjerM13 que funcione de la siguiente forma: dados dos vectores del espacio, el programa calcula su
producto escalar, producto vectorial y además nos dé el módulo de los dos vectores y también el módulo
del producto vectorial.
Recordemos:
v=(a,b,c)
p=(d,e,f)
Producto Escalar = ad + be + cf
Producto Vectorial = (bf – ec, de-af, ae-bd)
Módulo de v =
a2 + b2 + c2
La “salida” debería ser de la forma:
14) Crea un nuevo libro de cálculo de nombre EjerM14.ods, que contenga un procedimiento de nombre
EjerM14, y que funcione de la siguiente forma:
El programa nos pide un número y da como resultado la tabla de multiplicar del número introducido.

15) Crea un nuevo libro de cálculo de nombre EjerM15.ods, que contenga un procedimiento de nombre
EjerM15, y que funcione de la siguiente forma: El programa calcula el número “e” mediante el
desarrollo en serie:
e = 1 + 1/1! + 1/(2!) + 1/(3!) + 1/(4!) + … + 1/(50!)

Monografias.com

8.- Arrays

– Crea un nuevo libro de cálculo, que has de grabar con el nombre Macro08.ods en TuCarpeta. Crea un
Module1 y sitúate en su interior para escribir:
– Crea un botón en la Hoja1 del Macro08.ods, asociado al procedimiento anterior y ejecútalo,
observando detenidamente lo que sucede.

– Estudio del “Prog35”:
Dim a(1 To 3) As Double
Definimos lo que se llama “aaray” o “matriz” o “vector” o “arreglo” de una dimensión. Y no es más que
una variable que consta de tres números Double, en realidad tres variables double.
Para acceder a los elementos de nuestro “array” hemos de utilizar la notación:
a(1) = primer elemento;
a(2)=segundo elemento; a(3)= tercer elemento
El programa anterior es muy bonito, pero no sirve para nada, vamos a hacer un programa un
poco más complicado …

Observa la siguiente tabla:

Resulta que cada día de la semana hacemos una jornada laboral distinta, en el ejemplo de la tabla (que
representa el horario laboral de una semana determinada), el lunes empezamos a trabajar a las 8h y
terminamos a las 2h de la tarde, el martes empezamos a las 10h y media y terminamos a las 17h, etc.

Vamos a hacer un programa para introducir y guardar los datos de dicha tabla.

– Escribe en el Module1 del Macro08.ods el siguiente procedimiento:
– Crea un botón en la Hoja2 del Macro08.ods, asociado al procedimiento anterior y ejecútalo:

Monografias.com

En este programa hemos trabajado con un array bidimensional o matriz de dos dimensiones:
a( 1 To 2 , 1 To 5 )
Sus elementos:
a(1,1), a(1,2), a(1,3), a(1,4), a(1,5)
A(2,1), a(2,2), a(2,3), a(2,4), a(2,5)

El procedimiento Prog36, hemos de reconocer que está muy bien para utilizar matrices bidimensionales y
ciclos anidados, pero es completamente inútil.

Vamos a modificar el procedimiento anterior para que nos calcule el “número total de horas trabajadas a
la semana” …

Escribe en el Module1 de Macro08.ods:
– Crea un botón en la Hoja2 del Macro08.ods, asociado al programa Prog37 y ejecútalo

Si todo funciona correctamente:
– Escribe en el Macro08, el procedimiento:

Monografias.com


Crea un botón en la Hoja2 del Macro08.ods, asociado al procedimiento Prog38 y ejecútalo varias veces.

– Observa de qué forma definimos un array dinámico: al principio del programa, no sabemos el número
de elementos (Dim x() As Double); cuando ya sabemos el número de elementos: ReDim x(número) As
Double

Programa que calcula, dada una serie de 5 números, la media aritmética, las desviaciones respecto
a la media, la desviación media, la varianza y la desviación típica.

Escribe en el Module1 del Macro08.ods el siguiente programa:

Sub Prog39
Dim s As String, sum As Double, med As Double
Dim num(1 To 5) As Double
Dim desv(1 To 5) As Double
Dim sum1 As Double, sum2 As Double, i As Integer
Dim desmed As Double, vari As Double, dt As Double
s="":sum=0:sum1=0:sum2=0
s=s & "Valores de la serie estadística: " & Chr(10)
For i=1 To 5
num(i)=CDbl(InputBox("¿Número?"))
s=s & cStr(num(i)) & Chr(10)
sum=sum+num(i)
Next
med=sum/5
s=s & Chr(10): s=s & "Media Aritmética = " &
cStr(med)
s=s & Chr(10) & "Desviaciones" & Chr(10)
For i=1 To 5
desv(i)=Abs(num(i)-med)
sum1=sum1+desv(i)
sum2=sum2+desv(i)*desv(i)
s=s & cStr(desv(i)) & " – "
Next
desmed=sum1/5
vari=sum2/5
dt=Sqr(vari)
s=s & Chr(10)
s=s & "Desviación Media = " & cStr(desmed)
s=s & Chr(10)
s=s & "Varianza = " & cStr(vari) & Chr(10)

Partes: 1, 2, 3, 4, 5
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter