PRÁCTICA 14. PROGRAMAR JUEGOS.

  • EJERCICIO 1:  
Se trata de Adivinar un número que el "ordenador" genera de forma aleatoria. Para ello, se pide un número del 0 al 100 al jugador. Se indica si el número es mayor o menor y se pide que introduzca otro, así hasta que lo adivine.

En las siguientes imágenes podemos ver un ejemplo:







Al hacer clic en JUGAR, ocurre lo siguiente (no es obligatorio que sea igual, podemos saltar este paso y que pida el número directamente):






Escribimos el número 34




Finalmente:




Observaciones:

Para generar un número aleatorio del 0 al 100 utilizamos:  
Fix(Rnd * 101)
Para que nos diga si el número es mayor o menor y que nos pida otro, utilizamos:

InputBox("El número buscado es mayor" & vbCrLf & "Introduzca otro número")

(& vbCrLf lo utilizamos para escribir en otra línea).



  • EJERCICIO 2 (No es obligatorio, pero vale para subir la nota media de la asignatura): 
Juego "Muertos y heridos": Se trata de adivinar un número de cuatro dígitos. Si al introducir un número hemos acertado algún dígito y está en su posición correcta, se contará como muerto. Si lo hemos acertado pero no está el dígito en su posición, se contará como herido.









PRÁCTICA 13. CREAR UN BOTÓN Y ASIGNAR UNA MACRO

Agregar un botón y asignarle una macro en una hoja de cálculo

Se puede utilizar un botón para ejecutar una macro y realizar una acción cuando el usuario hace clic en él.


Agregar un botón:

  1. Mostrar la pestaña Programador
  2. En Controles haz clic en Insertar. A continuación, en Controles de formulario, haz clic en el botón Imagen del botón.
Grupo Controles de la ficha Programador
  1. Haga clic en la ubicación de la hoja de cálculo en la que desees que aparezca la esquina superior izquierda del botón.
    Se abrirá el cuadro de diálogo Asignar macro.
  2. Asigna una macro al botón y, a continuación, haz clic en Aceptar.
  3. Para especificar las propiedades de control del botón, haz clic con el botón derecho del ratón en el botón y, a continuación, haz clic en Formato de control.

Ejercicio1: Introduce 25 valores 0 y 1 en la columna A1. Crea un programa que cuente la cantidad de ceros que hay y la cantidad de unos que hay. El resultado debe aparecer en las celdas que quieras. Agrega un botón para que se ejecute la macro.


Ejercicio2: . Crea un programa libre y  agrega un botón para que se ejecute la macro.


PRÁCTICA 12. VISUAL BASIC EN EXCEL - Aspectos elementales

Introducción

Una "macro" es una secuencia de instrucciones que automatiza alguna tarea.

Una macro puede ser ejecutada repetidas veces.

Las macros pueden ser creadas de dos formas:
  • Automáticamente, "grabando" una secuencia de operaciones.
  • Manualmente, escribiendo una a una las instrucciones.




Para guardar las plantillas que contienen macros es necesario "habilitar las macros":



Vista del editor VBA 

Trabajaremos en la ventana del editor de VBA que se abrirá al hacer clic en Programador- Visual Basic, o ALT- F11.
También podemos encontrarla en Herramientas- Macro- Editor de Visual Basic.


Para poder comenzar a programar hacer clic en el primer icono que aparece en la ventana proyecto.

Tipos de macros en VBA
  • SUBRUTINAS ("VBA sub procedures"): Comandos que realizan tareas.
  • FUNCIONES ("VBA functions"): Retornan un valor.
Escritura de código en VBA
  • Sub procedures
Comienzan con la palabra Sub y terminan con End Sub. 
Se identifican por un nombre (seguido de paréntesis).

Ejemplo1: 

Sub HolaMundo()
MsgBox "¡Hola Mundo!"

End Sub


Ejercicio1: Crea un procedimiento en el que aparezcan tu nombre y tu curso.
Ejercicio2: Crea un procedimiento con una frase ilustre.
Ejercicio3: Inventa un procedimiento.

  • Instrucciones elementales
Para el ingreso de datos mediante un cuadro de diálogo:
 InputBox( texto a desplegar)
 Ejemplo2: 

Sub Saluda()
nombre = InputBox ("Dime tu nombre")
MsgBox "Hola " & nombre
End Sub
Para despliegue de resultados mediante un cuadro de diálogo:
MsgBox texto a desplegar


  • Variables
Cada variable se identifica por su nombre.
El nombre de una variable puede contener casi cualquier letra o símbolo, pero debe comenzar siempre por una letra.
No se deben usar espacios ni comas como parte de un nombre de variable, como tampoco los símbolos:$,#, %, & o !, ni operadores aritméticos.

Ejemplos: edad, cantidad_asistentes, GASTOS, NivelLiquido....

No hay distinción entre mayúsculas y minúsculas, por lo tanto los identificadores: Gastos, GASTOS y gastos hacen referencia a la misma variable.


Para asignar un valor a una variable utilizamos el igual (=)


*Si se asigna un número a una variable, la variable será numérica y se podrán realizar operaciones con ella.

*Si se asigna un texto (siempre escrito entre comillas) no se podrán realizar operaciones numéricas.

Las variables pueden ser de distinto tipo: Byte. Boolean, Integer, Long, Date, String, Object...  

Los tipos más utilizados son:

  • Boolean: Valor lógico, sólo tiene dos valores posibles True (verdadero) y False (falso).
  • Integer: Número entero
  • Date: Fecha
  • String: Cadena de caracteres.
Para declarar una variable se utiliza la instrucción Dim, un ejemplo sería:

Dim num As Integer
Para declarar la variable num como un número entero.
  • Operadores
Operadores aritméticos: (Generan como resultado un número)
Suma:+
Resta:-
Multiplicación:*
División:/
Potencia:^
División entera:\ 
Operadores relacionales:( Generan como resultado verdadero o falso)
Mayor:>
Menor:<
Mayor o igual:>=
Menor o igual:<= 
Igual:=

Operadores lógicos:(Generan como resultado otro valor lógico)
And:conjunción
Or:disyunción
Not:negación

Operador de concatenación &:(se utiliza para concatenar dos cadenas de caracteres)

Ejemplo: "Hola" & "Mundo" --------> "HolaMundo"

Estructuras de control
  • Secuencia
Las instrucciones se escriben línea por línea.
Si se desea escribir una instrucción en más de una línea, se debe utilizar el guión bajo (_) que indica la continuación en la línea siguiente.
  
Ejemplo3: 

Sub Calcula()
numero = InputBox("Escribe un valor")
MsgBox numero * 2

End Sub


Ejercicio4: Crea un procedimiento en el que calcules el cuadrado de un número.
Ejercicio5: Crea un procedimiento en el que calcules la suma de dos números.
Ejercicio6: Inventa un procedimiento utilizando algún operador aritmético.
  • Decisión
Determina el curso de acción a seguir dependiendo del valor de verdad de una condición.

If condición Then
acciones si la condición es verdadera
Else
 acciones si la condición es falsa
Endif

Ejemplo4:

Sub Nota()
valor = InputBox("Ingresa la nota")
If valor >= 5 Then
MsgBox "Aprobado"
Else
MsgBox "Suspenso"
End If
End Sub


Ejercicio7: Crea un procedimiento que te diga si una persona es mayor de edad o menor.
Ejercicio8: Crea un procedimiento en el que dados dos números determines cual es mayor.
Ejercicio9: Crea un procedimiento en el que determines si un número es par o no.

  • Iteración
 Realizar iteraciones mientras una condición es verdadera.

Do While condición
       Instrucción 1
       Instrucción 2
       ......
Loop

 

Ejemplo5:Dado un número, N, calculamos mediante un procedimiento la suma de los N primeros enteros.

Sub SumaNumeros()

Dim n As Integer

i = 1
Suma = 0

n = InputBox("Escribe un número")

Do While i <= n

Suma = Suma + i

i = i + 1

Loop

MsgBox Suma

End Sub

Ejercicio10: Crea un procedimiento en el que determines el producto de los N primeros enteros.


Interacción entre VBA y hojas de cálculo.
  • Objetos en VBA para Excel
Representan documentos o partes de un documento de Excel, para acceder y/o modificarlos desde VBA.

Por ejemplo, un objeto de tipo Range representa celdas de un documento y permite leer y alterar los valores guardados en ellas.






Range permite acceder a las celdas de una hoja mediante el ingreso de las coordenadas de las celdas.


Ejemplo6: Programa que escribe en la celda C3 el doble de lo que hay en la celda C2.

Sub DuplicarValor()

dato = Range("C2").Value
Range("C3").Value = dato * 2


End Sub


Ejercicio11: Crea un procedimiento en el que en la primera columna escribas 20 números. En la celda C3 te debe aparecer su producto, en la celda D3 media.


Cells permite acceder a las celdas mediante la especificación de sus coordenadas.

Ejemplo7: Programa que escribe en la celda A1 el valor 1000, en la celda B3 el valor 2000 y en la D1 3000.

Sub Rangos()

Cells(1, 1).Value = 1000
Cells(3, 2).Value = 2000
Cells(1, 4).Value = 3000


End Sub


(Observación es lo mismo Cells(1, 1).Value = 1000 que Cells(1, 1) = 1000, no es necesario poner Value)
  
Ejercicio12: Crea un procedimiento en el que calcules la tabla del 9. Debes introducir los datos como se muestra en la siguiente tabla y dar el resultado en la columna E.



Ejercicio13: Crea un procedimiento en el que calcules la tabla de multiplicar correspondiente al número indicado en la celda A1 (la tabla empieza a desplegarse desde la línea 3 en adelante)