Mòdul 5
Aplicacions educatives de full de càlcul
Pràctica 123567

 

Introducció

L'objectiu d'aquesta pràctica és realitzar una versió alternativa de la pràctica 6 del mòdul 4 fent ús de la recursivitat. Us presentem:

  • Tractament de la recursivitat amb relació amb l'atzar.

El problema és el mateix: la Marta i el Pere han quedat en trobar-se a la cafeteria de l'aeroport a partir d'una hora determinada; durant l'interval d'una hora, cada un d'ells pot arribar en qualsevol moment; el temps màxim d'espera d'un a l'altre és d'un quart d'hora; es vol saber quin és el percentatge de vegades que s'arribarien a trobar si repetim la cita. 

Els càlculs que realitzarem són molt similars als de la pràctica 6 del mòdul anterior, però l'estructura del full és molt diferent. 

En aquest exercici es pot apreciar amb molta claredat els avantatges de la solució recursiva versus la solució inicialment donada. En aquella, l'estructura del full estava lligada, per construcció, al nombre de simulacions que es volien realitzar: cada nova simulació suposava una nova línia amb càlculs. A la solució recursiva l'estructura és independent del nombre de simulacions i la grandària del full és molt més reduïda. 

Com ja hem fet a la pràctica 1 disposarem de dos botons. El botó Iniciar permetrà iniciar el procés fixant en 0 el nombre de simulacions. El botó Avançar permetrà incrementar, un a un, el nombre de simulacions obtenint el percentatge de vegades que es troben les dues persones. 

La proposta del full és la següent:
 

 

Desenvolupament de la pràctica
Fase inicial
  • Seleccioneu un nou full  i anomeneu-lo "Aeroport". 
  • Introduïu els rètols de la cel·la B2 i de la fila 5 amb els tipus de lletra adequats. 
  • Situeu adequadament dins de la cel·la els rètols de la fila 5 activant les opcions Horizontal | Centrar, Vertical | Centrar i Ajustar texto del menú Formato | Celdas | Alineación
  • Introduïu el rètol de la cel·la D4 en negreta i alineat a la dreta. 
  • Modifiqueu l'amplada de la  columna A i l'alçada de la fila 1. 
  • Ajusteu l'amplada de la resta de les columnes, cas que sigui necessari. 
  • Doneu-li a la regió B2:G6 un fons groc clar i una vora negra. 
  • Desactiveu la visió de la quadrícula. 
Realització dels càlculs
  • A la cel·la E4 posarem un comptador per conèixer el nombre de simulacions que hem realitzat. A l'igual que hem fet a altres exercicis el valor dependrà del contingut de la cel·la A1 (un 0 o un 1) que ens servirà per controlar l'inici del procés. Poseu a E4 la fórmula 
    • =SI(A1=0;0;E4+1)
    i a la cel·la A1 el valor 0. 
    Observació: si en fer anar el full us surt un missatge dient-vos que no es poden resoldre referències circulars, activeu l'opció Herramientas | Opciones... | Calcular | Iteración i feu que el nombre màxim d'iteracions sigui 1. Valideu els paràmetres entrats. 
  • Introduïu a les cel·les B6 i C6 la fórmula 
    • =ALEATORIO( )
    per tal de generar dos nombres aleatoris entre 0 i 1. 
  • Introduïu a la cel·la D6 la fórmula 
    • =ABS(B6-C6)
    per tal de calcular la diferència entre la hora d'arribada de la Marta i del Pere. 
  • Introduïu a la cel·la E6 la fórmula 
    • =SI(A1=0;0;SI(D6>0,25;0;1))
    anota si la Marta i el Pere s'han trobat. Si el procés encara no ha començat posarà un 0. Si ja ha començat posarà un 0 si la diferència de temps és superior a un quart d'hora (no es troben) i posarà un 1 en cas contrari. 
  • Introduïu a la cel·la F6 la fórmula 
    • =SI(A1=0;0;F6+E6)
    que fa el recompte, de forma recursiva, del nombre de vegades que la Marta i el Pere es troben (suma un 1 en el cas de s'hagin trobat). 
  • Introduïu a la cel·la G6 la fórmula 
    • =SI(A1=0;"";F6/E4*100)
    per tal de calcular el percentatge de vegades que la Marta i el Pere s'han trobat: F6 conté el nombre de vegades que ho han fet i E4 el nombre total de simulacions. 
  • Poseu en negreta el contingut de la fila 6 i de la cel·la E4. 
  • Fixeu tres decimals a les cel·les B6, C6 i D6 i dos decimals a la cel·la G6. 
  • Poseu un 1 a la cel·la A1 i premeu F9 repetidament per tal de comprovar el funcionament del full. 
Incorporació dels botons de control 
  • La mecànica prevista per iniciar el procés és situar un 0 o un 1 a la cel·la A1. En aquesta fase final incorporarem dos botons per tal de realitzar aquest procés amb més comoditat. 
  • Incorporeu els botons Iniciar i Avançar que assignin els valors 0 i 1 a la cel·la A1. [1
  • Poseu una font de color blanc a la cel·la A1 per tal que no es vegi el contingut de la cel·la. 
  • Protegiu la part del full que us sembli més convenient. 
  • Deseu el full. 
Suggeriment

Es proposa la incorporació d'un nou botó (Avançar +) que permeti recalcular el full un nombre determinat de vegades cada cop que es premi el botó. La realització d'aquesta fase requereix la utilització d'alguns elements de programació en Visual Basic que Excel incorpora dintre del seu entorn. 

  • Seguint la mecànica anterior afegiu un nou botó al full de càlcul amb les següents característiques: 
    • El nom del rètol és Avançar + 
    • El nom de la macro associada és Aeroport_avançar_plus. 
    • Les accions associades són l'escriptura d'un 1 a la cel·la A1 i  l'actualització del full mitjançant F9. 
  • Activeu l'opció Herramientas | Macro | Macros, seleccioneu la macro Aeroport_avançar_plus i premeu el botó Modificar
  • Aneu al final del llibre Excel i localitzeu a alguns del fulls el codi associat a la macro Aeroport_avançar_plus que acabeu de crear. 
  • Modifiqueu el codi de la macro per tal que sigui: 
    • Sub Aeroport_avançar_plus() 
          [A1].Select
          [A1] = 1
          For contador = 1 To 10
              Calculate
          Next contador 
      End Sub 


    Les dues línies incorporades (For contador  = 1 To 10  i Next contador) fan que l'acció Calculate (que correspon a prémer F9) es repeteixi 10 vegades. 

  • Tanqueu la finestra d'edició de codi. Aneu al full Aeroport, premeu el botó Avançar + i comproveu el seu funcionament. 

  • Volem que el nombre de vegades que es recalculi el full en prémer el botó Avançar + sigui configurable: 
  • Incorporeu a la cel·la G4 un nombre, per exemple 100. 
  • Aneu novament al full que conté el codi de la macro Aeroport_avançar_plus i canvieu
                    For contador = 1 To 10
                                   per 
                    For contador = 1 To [G4] - 1
    que permet que el nombre de vegades que es repeteix l'acció sigui l'indicat a la cel·la G4 (és necessari restar una unitat ja que la primera actualització es produeix quan s'escriu un 1 a la cel·la A1). 
  • Aneu novament al full Aeroport premeu el botó Avançar + i comproveu ara el seu funcionament. 


Aclariments
[1] Incorporeu els botons Iniciar i Avançar que assignin els valors 0 i 1 a la cel·la A1.

Suposem que al vostre ordinador disposeu dels botons  per tal d'enregistrar còmodament les macros. Aquests botons han estat instal·lats a la pràctica 1 d'aquest mòdul

  • Premeu el botó  i creeu un botó ocupant parcialment les cel·les F2 i F3. 
  • Indiqueu el nom "Aeroport_iniciar" al requadre Nombre de la macro
  • Premeu el botó Grabar.
  • Indiqueu el nom "Aeroport_iniciar" com a nom de la macro. Afegiu el comentari "Escriu 0 a la cel·la A1 per tal d'iniciar el procés" al requadre Descripción:
  • Premeu el botó Aceptar per tal de començar a enregistrar les accions associades al botó. 
  • Assegureu-vos que està desactivada l'opció Referencia relativa dins de la barra d'eines .
  • Situeu el cursor a la cel·la A1. Escriviu el valor 0.
  • Premeu el botó de final d'enregistrament  o activeu el menú Herramientas | Macro | Detener grabación
  • Feu clic amb el botó dret del ratolí a sobre del botó per tal de modificar el seu nom. Anomeneu-lo "Iniciar".
  • Repetiu el procés per tal de crear un segon botó de nom "Avançar" que escrigui un 1 a la cel·la A1.
També podeu fer aquest procés amb el mètode alternatiu que hem presentat al final de la  pràctica 3 d'aquest mòdul.