Informática TIC 2

dimecres, 15 de febrer del 2017

Paràmetres de les funcions

Els paràmetres d'una funció és poden classificar com:

  1. Entrada
  2. Sortida
  3. Entrada/Sortida
En el cas de JS, els paràmetres només són d'entrada. Què significa això?

Que per molt que modifiqui el valor d'un paràmetre dins la funció, quan s'acabi la funció no es veurà aquest canvi a defora de la funció.

Exemple:

Anem a suposar que tenim una funció que donat un nombre ens retorna la suma d'aquest nombre amb el seu següent.

function suma(i) {

   i = i + i+1; // o també i = (2*i) +1
  return i;

}

var nombre = 0;
var res = suma(nombre);
var res2 = suma(nombre);

El valor de la variable res y res2 serà 1.

El que passa realment quan cridam una funció és que és copia el valor del paràmetres reals(0) als paràmetres formals de la funció(i). Per tant quan s'executa la funció és reserva espai de memòria per els paràmetres necessaris i és copien el valor del paràmetres reals. Quan s'acaba la funció, tot l'espai de memòria utilitzat per aquesta, tant si son variables com paràmetres, és alliberat.

En els casos que passem per paràmetre una estructura de dades (array, objectes,...), el que és passa realment és l'adreça de memòria on estan ubicades aquestes , conseqüentment si modificam aquesta dins la funció també resulta modificada. En aquest cas podem veure que les estructures de dades és passen per referència (adreça de memòria),d'entrada i sortida.

Resum

Tipus bàsics de dades (nombre, booleà, caracter, ...) -> d'Entrada
Estructures de dades(Arrays, Objectes, strings) -> d'Entrada i Sortida



dijous, 12 de gener del 2017

Què fa aquesta instrucció?

Què fa si executam aquesta instrucció?

yaya[yaya.length]=baraja[yaya.length].valor

Explica amb el màxim detall que fa aquesta intrucció.

Solució

El que fa aquesta instrucció és afegir un element al array yaya i aquest element és la característica valor de l'array baraja (agafam l'element que es troba a la posició que equival al nombre d'elements que té l'array yaya).

Per tant, una de les condicions perquè funcioni aquesta instrucció és que al manco baraja tenguí un element més que yaya.

dijous, 15 de desembre del 2016

La intenció d'aquest codi és crear el joc de cartes i a cada carta assignar-li un valor aleatori. En aquest cas s'utilitza l'array amb nom baraja.
També la intenció és generar un array dels nombres aleatoris que s'han generat per fer les cartes.

No acaba de funcionar, on hi ha l'error? Què milloraries?
 

for (var n= 0; n<=12; n=n+1){
var nn= Math.random()
baraja[baraja.length]= {palo:"cors"+n, valor: nn};
yaya[yaya.length]=baraja[n].valor

}


for (var m= 0; m<=12; m=m+1){
var mm= Math.random()
baraja[baraja.length]= {palo:"diamants"+m, valor: mm};

yaya[yaya.length]=baraja[m].valor}


Millores que podem fer al codi perquè sigui més bo de llegir:


1. Sagnar el codi, 
Significa que tot el que va dins un parell de claus ho tabulam(feim que les línies comencin a una columna més interior) i així veim clarament què es el que està dins aquest bloc


for (var n= 0; n<=12; n=n+1){
   var nn= Math.random()
   baraja[baraja.length]= {palo:"cors"+n, valor: nn};
   yaya[yaya.length]=baraja[n].valor
}

2. Vigilar el nom de les variables, arrays

Què s'hi deu emmagatzemar dins yaya?
Per la descripció que vos he fet de la intenció del codi al principi, hi emmagatzemam tots els nombres aleatoris que s'ha assignat a les cartes.


Pensau que el codi ha de ser bo de mantenir(ho pot haver de modificar una altra persona i ho ha d'entendre fàcilment, o tu mateix després de passat un any)

No descriu millor el contingut del array el nom nomAleatoris o nombresAleatoris encara que sigui més llarg?

Nota

Pensau que quan un programa es passa a codi executable, mitjançant el procés de compilació, aquests noms que hem assignat al codi font es converteixen en una adreça de memòria(per tant a l'hora d'executar un programa el nom de les variables no fa que s'utilitzi més recursos(memòria principal o CPU),  en el cas dels llenguatges interpretats com es JavaScript el que fa la tasca d'interpretar el codi és el navegador mitjançant el seu intèrpret de JavaScript, el que no sé és com fan aquesta conversió i si la fan. Segur que deu dependre del motor de JavaScript de cada navegador...

El motor de JavaScript que duu el Firefox és el SpiderMonkey escrit amb C/C++(llenguatges compilats)

dijous, 10 de novembre del 2016

Convertir literal a nombre

A vegades ens interessa convertir un literal que conté un nombre amb un nombre, per poder aplicar les operacions matemàtiques.

L'operador que permet aquesta funció és el + a la dreta de la expressió que volem tractar (ja sigui una variable, cadena de texte, funció, etc...) 
(Això ens passarà quan utilitzem JavaScript combinat amb html, ja que tot el que capturam mitjançant html ho interpreta com a String).

Exemple:


var a = "3"

var b = +a

Dins a tenim una lletra amb el caràcter 3 i dins b tenim el nombre 3 que ens permet operar.

+a + b, donaria com a resultat en el cas anterior 6
a + b, donaria com a resultat la cadena de caràcters "33"

 Nota:

Són sinònims els conceptes de literal, cadena de caràcters i String.




dijous, 3 de novembre del 2016

{}

a=3;

if (a===3) {

  b= a % 2;

c = a *2;

}

if (a===3) {

  b=a%2;

}

c=a*2;


for (a=0;a<10;a= a+1)  {

  b= a % 2;

  c = a *2;

}

for (a=0;a<10;a= a+1)  {

  b= a % 2;

}

  c = a *2;