Variacions dels punt de registre i càlculs amb variables  
 
 
 
 

En aquesta primera pràctica del mòdul 5, començareu a desenvolupar una primera part de càlculs de resolució de triangles pel teorema de Pitàgores.
 
Els objectius d'aquesta primera pràctica són:

 

 

 

 

 

    • Modificacions dels punts de registre de línies
    • Combinacions de quadres de text dinàmics i d'entrada en càlculs aritmètics amb variables
 
  
Per repassar els coneixements previs del teorema de Pitàgores, podeu veure aquestes dues pel·lícules i, en finalitzar, l'aplicació:
  
 
 
 Desenvolupament de la pràctica  
    
» Creeu una pel·lícula nova i anomeneu-la pitagor1.  
    
»  Dibuixeu tres línies separades a l'escenari.  
      
  Convertiu aquestes línies en clips de pel·lícula amb els noms: c1, c2 i h.  
      
  »  Poseu a cada instància creada el mateix nom: c1, c2 i h.  
      
  »  Editeu cada instància dels clips de pel·lícula modificant el punt de registre perquè aquest punt quedi situat a l'extrem esquerre de les respectives línies.  
      
  »  Col·loqueu la instància c1 en posició vertical amb el punt de registre en la part inferior.  
      
  »  Col·loqueu, també, la instància c2 en posició horitzontal amb el punt de registre a la part esquerra formant un angle recte amb la instància c1.  
      
  »  Feu el mateix procediment per ubicar la hipotenusa, de forma que coincideixi el seu punt de registre a la part superior de la instància c1.  
      
  »  Us hauria de quedar un triangle rectangle semblant a la imatge 1.  
      
 
 
      
 
Imatge núm. 1
 
      
  »  Afegiu a l'escenari tres quadres de text estàtic: un amb el títol de l'aplicació i els altres dos amb el missatge: "valor del catet", i ubiqueu-los respectivament al costat de cada catet.  
      
  »  Creeu dos quadres més de text, però aquesta vegada que siguin del tipus d'entrada i ubiqueu-los sota els quadres estàtics dels catets corresponents.  
      
  » Ael panell Propiedades , assigneu-li els noms de variables t1 i t2, respectivament. Això us servirà per emmagatzemar els valors dels catets que processareu posteriorment amb codi per fer els càlculs corresponents.  
      
  »  Afegiu un botó que us servirà per incloure el codi que farà els càlculs necessaris.  
      
  Si voleu que quedin correctament ajustats els vèrtex del triangle, podeu utilitzar el tauler Info del menú Ventana / Paneles de diseño / Información, on, modificant les coordenades X, Y, obtindreu un resultat més correcte, o també en el mateix panell de Propiedades.  
      
  L'objectiu de la pràctica és fer una simulació visual i de càlcul de la hipotenusa utilitzant la fórmula del teorema de Pitàgores, de forma que, variant els valors dels catets, variï la dimensió real en píxels de les dimensions del triangle rectangle.  
    
Feu atenció en el fet que l'angle recte format per les instàncies c1 i c2 no ha de variar, mentre que la longitud de la instància c1 ha de variar en sentit de l'eix de coordenades Y (_yscale), i la longitud de la instància c2 ha de variar en el sentit de l'eix de coordenades X (_xscale).  
  
El problema per resoldre correspondrà a fer que la instància h, que fa d'hipotenusa, s'ha d'adaptar a aquestes mesures i dimensionar-se per formar correctament el triangle rectangle.
     
  Aquest problema el podeu resoldre inserint el codi corresponent a les accions del botó que heu creat per fer els càlculs.  
      

» Obriu el tauler d'accions del botó i inseriu el codi que s'anirà comentant.

  
»  Declareu les variables locals c1, c2, amb la finalitat d'assignar a cadascuna el valor numèric dels quadres de text corresponents t1 i t2. Recordeu que la paraula reserva var s'utilitza per crear variables locals.
  

La funció Number() converteix en nombre el contingut d'un quadre de text. Aprofiteu, també, per fer el càlcul de la hipotenusa amb aquests valors numèrics de les variables. Utilitzeu el mètode sqrt() de l'objecte Math per fer els càlculs.

Com podeu esbrinar perfectament, el mètode sqrt() de l'objecte Math us servirà per calcular l'arrel quadrada.

  
El codi resultant seria aquest:
  

on (release) {

var c1=Number(t1);
var c2=Number(t2);
var h = Math.sqrt( (c1*c1)+(c2*c2));

}

  
  Com a programadors d'aplicacions en altres llenguatges, sabeu que el contingut d'un quadre de text s'ha de passar a valor numèric per poder fer operacions matemàtiques. En el cas del llenguatge ActionScript de Flash no és necessari, però, com que us trobareu que en altres casos sí, és un bon hàbit el mètode de treball de convertir els caràcters a valor numèric. No obstant, a la versió ActionScript 2, cal ja especificar el tipus de variable igualment que en altres llenguatges.  
      
»  Afegiu el codi següent, que us servirà, al mateix temps, per protegir que les dimensions del triangle rectangle no sobrepassin les dimensions de l'escenari. En el vostre cas, heu vist adient que les dimensions en píxels dels catets no siguin superiors a 150 píxels.
   
 

on (release) {

var c1=Number(t1);
var c2=Number(t2);
var h = Math.sqrt( (c1*c1)+(c2*c2));
if(parseInt(t1)<1 | parseInt(t1)>150) { _root.t1=""; break; }
if(parseInt(t2)<1 | parseInt(t2)>150) { _root.t2=""; break; }

}

 
  
La funció parseInt() converteix una cadena en un nombre enter. Si la cadena especificada en l'argument no es pot convertir en un nombre, la funció us retorna l'expressió NaN o 0. Els nombres enters que comencin per 0 o que tinguin una arrel de 8 són interpretats com a nombres en base vuit. Si els enters comencen per 0x, s'interpretaran com a nombres hexadecimals. L'espai en blanc que precedeix els nombres enters vàlids s'ignora, així com els caràcters no numèrics finals.
      
Observeu, també, que la funció parseInt() està avaluada en la sentència condicional if {...} per protegir les dimensions de les longituds dels catets.
      
  Podeu analitzar, també, que s'ha inclòs una nova sentència break, que, similar a altres llenguatges, fa que s'ignori el codi que segueix a la sentència i surti del bloc on està ubicada.  
      
»  Ara dimensioneu els dos catets amb els valors que hi ha en els quadres de text d'entrada afegint el codi següent:  
    

_root.c1._yscale=parseInt(t1);
_root.c2._xscale=parseInt(t2);

 
  
  Pareu atenció al fet que la instància c1 ha de dimensionar-se amb _yscale i de la mateixa forma que c2 s'ha de dimensionar amb _xscale.  
  
Ara es tracta de dimensionar la instància h corresponent a la hipotenusa i que se situï als extrems dels dos catets. I per aconseguir-ho, feu que el punt de registre de la instància h es posi a l'extrem superior de la instància c1 amb el codi següent:
  
 

_root.h._x=_root.c1._x;
_root.h._y=_root.c1._y-_root.c1._yscale;

 
       
  La coordenada X de la instància h correspon a la mateixa coordenada X de la instància c1, però la seva coordenada Y correspon a la coordenada Y de la instància c1 menys el _yscale de la mateixa instància. I amb aquest codi, tindríeu situada la instància h amb el seu punt de registre a la part superior del primer catet.  
      
  Una vegada ubicat l'extrem de la hipotenusa en el primer catet, heu de fer coincidir l'altre extrem de la hipotenusa a l'extrem corresponent de l'altre catet. Per aconseguir aquest objectiu, heu de tenir en compte el que s'ha explicat a la introducció de la pràctica. Heu de tenir cura que les coordenades de l'extrem de la hipotenusa estaran en funció de les seves propietats _width i _height.  
      
»  Podeu inserir ja l'última part del codi de l'aplicació:
  

_root.h._width=_root.c2._width;
_root.h._height=_root.c1._height;

  
El codi resultant sencer hauria de ser aquest:
      
 

on (release) {

if(parseInt(t1)<1 | parseInt(t1)>150) { _root.t1=""; break; }
if(parseInt(t2)<1 | parseInt(t2)>150) { _root.t2=""; break; }
var c1=Number(t1);
var c2=Number(t2);
var h = Math.sqrt( (c1*c1)+(c2*c2));
_root.c1._yscale=parseInt(t1);
_root.c2._xscale=parseInt(t2);
_root.h._x=_root.c1._x;
_root.h._y=_root.c1._y-_root.c1._yscale;
_root.h._width=_root.c2._width;
_root.h._height=_root.c1._height;

}

 
      
  »  També podeu completar l'aplicació mostrant els resultats numèrics del càlcul de la hipotenusa en la inserció de quadres de text dinàmics i estàtics tenint un resultat com a l'aplicació que es mostra a continuació.  
  
      
      
  Com es pot veure, aquesta aplicació tindria moltes utilitats de modificacions en aplicacions de geometria noves, i com a exemple, es mostra una variació d'aquesta aplicació utilitzant rectangles, on, en lloc d'utilitzar tres línies, s'utilitzaran quatre.  
      
      
 
 
      
  
  Comproveu el funcionament correce de l'aplicació que heu fet, animeu-vos a fer modificacions i experimentacions noves i segur que us sortirà un treball excel·lent.  
       
     
     
jec