Tipus de dades

Tipus de dades

En Python, com en altres llenguatges de programació, hi ha diferents tipus de dades que podem utilitzar per a guardar informació. Aquests tipus de dades ens permeten guardar valors de diferents formes, com ara nombres, text, llistes, etc.

Quan programem en blocs, els tipus de variables que s’utilitzen són generalment invisibles: quan es declara una variable, el tipus de la variable es determina pel valor que s’hi assigna.

Els tipus de dades apareixen generalment a conseqüència d’errors petits: per exemple, intentar mostrar un nombre amb game.splash requereix que el nombre sigui convertit a cadena, intentar guardar una cadena en una variable que ja ha estat assignada com a cadena, i altres petits errors.

En MakeCode Python podem assignar explícitament un tipus a les variables perquè el programa les tracti com a tal; alguns exemples comuns en Arcade són cadena, nombre i sprite.

Exemple #1: Tipus de dades

En aquest exemple, podem veure dos dels tipus de dades més comuns en Python: cadena i nombre. Aquests tipus de dades ens permeten guardar valors de text i nombres, respectivament.

# Cadena
missatge = "Hola Món!"
game.splash(missatge)

# Nombre
punts = 0
game.splash(punts)

Llegeix atentament el codi Python per identificar les següents parts:

  • missatge = "Hola Món!": En aquesta línia, es declara una variable anomenada missatge i s’assigna el valor "Hola Món!". Aquest valor és una cadena, ja que està envoltat per cometes.
  • game.splash(missatge): En aquesta línia, es crida la funció game.splash i s’hi passa la variable missatge com a paràmetre. Aquesta funció mostra el valor de la variable missatge en pantalla.
  • punts = 0: En aquesta línia, es declara una variable anomenada punts i s’assigna el valor 0. Aquest valor és un nombre, ja que no està envoltat per cometes.
  • game.splash(punts): En aquesta línia, es crida la funció game.splash i s’hi passa la variable punts com a paràmetre. Aquesta funció mostra el valor de la variable punts en pantalla.

Concepte: Tipus de dades implícits i explícits

En Makecode Python, els tipus de dades són generalment implícits: quan es declara una variable, el tipus de la variable es determina pel valor que s’hi assigna. Per exemple, si assignem un nombre a una variable, aquesta variable serà de tipus nombre.

# Tipus de dades implícits
punts = 0

Per tindre major claredat en el codi, podem assignar explícitament un tipus a les variables perquè el programa les tracti com a tal. Això es fa utilitzant la sintaxi : tipus després del nom de la variable.

# Tipus de dades explícits
x: number = 0
missatge: string = "Hola Món!"

En l’exemple anterior, x està definit com a tipus nombre, i missatge està definit com a tipus cadena.

En els exemples següents, es mostra el mateix codi de dues maneres diferents: la primera, amb el tipus de la variable inferit del valor que s’assigna, i la segona, amb el tipus esmentat explícitament.

  1. Revisa els dos exemples següents
  2. Identifica què és diferent entre els dos, i què ha quedat igual
  3. Observa que + serveix també per unir cadenes de text
  4. Executa els dos exemples: identifica si el comportament del codi ha canviat

Exemple #1a: Tipus de dades implícits

paraula = "Hola"
altra_paraula = "Món!"
missatge = paraula + " " + altra_paraula

game.splash(missatge)
print(missatge)

Exemple #1b: Tipus de dades explícits

paraula: string = "Hola"
altra_paraula: string = "Món!"
missatge: string = paraula + " " + altra_paraula

game.splash(missatge)
print(missatge)

Quan utilitzem print en Python, el que fem és mostrar el valor de la variable en la consola de Python. Això ens permet veure el valor de la variable sense haver de mostrar-lo en pantalla. Per accedir a la consola en MakeCode Python, fes clic al botó “Show Data Simulador” a la part esquerra de la pantalla.

Tasca #1: Sortida misteriosa

  1. Comença amb següent codi:

    missatge = "*"
    missatge += "hola"
    missatge += "món"
    
  2. Fes una hipòtesi sobre quin valor s’emmagatzemarà a la variable missatge després d’executar el codi.
  3. Apunta que esperes que s’emmagatzemi a missatge cada vegada que s’assigni un valor (haurien de ser tres línies).
  4. Per provar la teva hipòtesi, afegeix print(missatge) després de la darrera línia del codi, i executa el programa.
  5. Si la sortida no coincideix amb la teva hipòtesi, revisa el que vas escriure al pas 3 i identifica on el valor era diferent de la teva expectativa.
  6. Què entens que fa +=?

Concepte: Mostrar nombres juntament amb cadenes

En Python, per poder mostrar un nombre juntament amb una cadena de text, primer hem de convertir el nombre a una cadena. En cas de no fer-ho, el programa mostrarà un error.

# Error: no es pot concatenar una cadena amb un nombre
punts = 0
game.splash("Punts: " + punts)

Per convertir un nombre a una cadena, utilitzem la funció str().

# Correcte: convertim el nombre a una cadena
punts = 0
game.splash("Punts: " + str(punts))

Tasca #2: Mostrar nombres

  1. Crea un nou projecte a Arcade.
  2. Declara una variable anomenada punts i assigna-li un valor numèric.
  3. Utilitza game.splash per mostrar el valor de la variable punts juntament amb la cadena "Punts: ".
  4. Executa el programa i comprova que el valor de la variable punts es mostra correctament.

En aquesta tasca, pots utilitzar qualsevol valor numèric per a la variable punts. Si vols, pots utilitzar un valor diferent cada vegada que executes el programa.

Concepte: Benefici dels tipus de dades explícits

Els tipus de dades explícits poden ser útils per a evitar errors en el codi. Si assignem un tipus a una variable, el programa ens avisarà si intentem assignar un valor d’un tipus diferent.

Alguns dels casos més comuns en què els tipus de dades explícits poden ser útils són:

  • La variable es reassigna
  • La variable es passa com a paràmetre a una funció (com game.splash)

Exemple #2: Benefici dels tipus de dades explícits

En aquest exemple, la variable punts es declara com a tipus nombre, però després s’intenta assignar un valor de tipus cadena. Això provocarà un error en el programa.

# Tipus de dades explícits
punts: number = 0
punts = "100"
game.splash(punts)

En aquest cas, el programa mostrarà un error en la línia punts = "100", ja que s’està intentant assignar un valor de tipus cadena a una variable de tipus nombre.

Tasca #2a: Agrega tipus de dades explícits

  1. Parteix del següent codi:

    missatge = "Punts:"
    punts = 0
    punts_finals = punts + 100
    final = missatge + " " + str(punts)
    
    game.splash(final)
    
  2. Afegeix tipus de dades explícits a les variables missatge, punts, punts_finals i final.
  3. Executa el programa i comprova que no hi ha errors.

Tasca #2b: Agrega tipus de dades explícits (part 2)

Repeteix el procediment de la tasca #2a en el següent codi:

color = "roig"
compte = 1
sortida = color + str(compte)
resposta = "M'agrada " + color
compte = 2
sortida = sortida + str(compte)
color = color + " o blau"
compte = 3
sortida = sortida + str(compte)
game.splash(str(compte) + color)
game.splash(resposta + color)

Avaluació

Crea un document i:

  • Respon a les següents preguntes:
    • Què és un tipus de dades?
    • Quina és la diferència entre un tipus de dades implícit i explícit?
    • Per què és important utilitzar tipus de dades explícits en el codi?
    • Per a cadascun dels següents exemples, identifica quin tipus de dades s’utilitza:
      • Diners que tens a la butxaca
      • El nom del teu menjar preferit
      • El teu número preferit
      • El nom del teu famós preferit
      • Quantes preguntes hi ha en aquesta pàgina
      • Una adreça de casa
      • Un número de telèfon
      • El nombre de vegades que has anat a la platja

Puja el document a l’aula virtual (tasca 2.1.2).