2  Variables, tipus de dades i operadors

Objectius

  • Comprendre què és una variable i com funciona l’assignació.
  • Reconèixer els tipus de dades bàsics i els literals.
  • Distingir entre variables i constants.
  • Fer servir operadors aritmètics, relacionals i lògics dins d’expressions.
  • Traçar (seguir a mà) l’execució d’un algorisme pas a pas.

En l’apartatat anterior vam aprendre què és un algorisme i com representar-lo. Ara aprofundirem en les dades: com les guardem, com les combinem i com seguim mentalment què fa un algorisme. Tot en pseudocodi, encara sense utilitzar cap llenguatge de programació, com Java.

2.1 Variables

Un programa treballa amb dades: números, textos, valors de cert o fals… Per guardar aquestes dades mentre el programa funciona, fem servir variables.

Una variable és un espai de memòria amb un nom on guardem un valor que pot canviar al llarg del programa.

NotaAnalogia: una caixa etiquetada

Imagina una prestatgeria plena de caixes. Cada caixa té una etiqueta (el nom) i a dins hi ha una cosa (el valor). Pots mirar què hi ha, treure-ho i posar-hi una altra cosa. La variable edat és una caixa etiquetada que conté un valor numèric.

L’assignació

Guardar un valor en una variable s’anomena assignació. En pseudocodi fem servir la fletxa :

    edat ← 25

Es llegeix: “la variable edat pren el valor 25”. La fletxa apunta cap a l’esquerra: el valor de la dreta entra a la variable de l’esquerra.

Molt important: l’assignació no és una igualtat matemàtica. Mira aquest exemple:

    comptador ← 5
    comptador ← comptador + 1

Després d’aquestes dues línies, comptador val 6.

La segona línia diu: “agafa el valor actual de comptador (5), suma-li 1 (dona 6) i torna a guardar el resultat a comptador.

En matemàtiques, comptador = comptador + 1 no tindria sentit; en programació, és habitual.

AlertaError típic: confondre amb = matemàtic

x ← y guarda a x el valor de y, però x i y continuen sent caixes diferents.

Si després canvies y, x no canvia. No estan “enllaçades”: només s’ha copiat el valor en el moment de l’assignació.

Regles per als noms de variables

Un bon nom explica què conté la variable. Segueix aquestes normes:

  • Fes servir noms descriptius: preuTotal és molt millor que pt o x.
  • Sense espais ni accents. Fem servir camelCase: la primera paraula en minúscula i la resta amb la inicial en majúscula (nomComplet, notaMitjana).
  • No comencis mai per un número.

Mini-repte

Quin valor conté a al final?

a ← 10
b ← 3
a ← b
b ← 20

(Pista: recorda que l’assignació copia el valor en aquell instant. La resposta és 3.)

2.2 Tipus de dades i literals

No totes les dades són iguals. Un número, un text i un valor de cert/fals es tracten de maneres diferents. El tipus de dada indica quina mena de valor guarda una variable i quines operacions s’hi poden fer.

En pseudocodi treballarem amb aquests tipus bàsics:

Tipus Què guarda Exemples de valors
Enter Números sencers, sense decimals 0, 42, -7
Real Números amb decimals 3.14, -0.5, 100.0
Caràcter Un sol símbol 'a', '?', '7'
Cadena Un text (seqüència de caràcters) "Hola", "DAM 2026"
Booleà Només dos valors: cert o fals cert, fals


Un literal és un valor escrit directament al codi. A edat ← 25, el 25 és un literal enter. A nom ← "Ada", "Ada" és un literal de cadena.

ConsellCometes: la pista del tipus

Fixa’t en les cometes. 'a' (cometes simples) és un caràcter. "a" (cometes dobles) és una cadena d’un sol caràcter. I 7 sense cometes és un número, però "7" és el text “set”. No són el mateix!

Exemple

    Algorisme FitxaPersona
        nom ← "Marta"                       // Cadena
        edat ← 19                           // Enter
        alcada ← 1.68                       // Real
        inicial ← 'M'                       // Caràcter
        esMajorEdat ← cert                  // Booleà
        Escriure nom, "té", edat, "anys"
    FiAlgorisme
AlertaError típic: barrejar tipus incompatibles

No té sentit sumar un text i un número com si fossin la mateixa cosa: "casa" + 5 no és una operació aritmètica vàlida.

Cada operació espera uns tipus concrets. Vés amb compte de saber sempre quin tipus conté cada variable.

2.3 Constants

Si tenim un valor que no ha de canviar mai durant el programa: el número π, el tipus d’IVA, el nombre de dies de la setmana, podem fem servir una constant.

Una constant és com una variable, però amb el valor fixat: un cop assignat, no es pot modificar. Per convenció, els noms de constants s’escriuen en MAJÚSCULES:

Constant PI ← 3.14159
Constant IVA_GENERAL ← 0.21
Constant DIES_SETMANA ← 7
NotaPer què fer servir constants?
  • Per claredat: preu * IVA_GENERAL s’entén millor que preu * 0.21.
  • I per seguretat: si l’IVA canvia, ho modifiques en un sol lloc, i evites tocar-ho per error.

Una constant protegeix un valor que no ha de canviar.


Com a resum, podem concloure:

Variable Constant
El valor pot canviar? No, mai després d’assignar-lo
Convenció de nom camelCase MAJÚSCULES
Exemple preuTotal IVA_GENERAL

2.4 Operadors i expressions

Una expressió és una combinació de valors, variables i operadors que es calcula per obtenir un resultat. (nota1 + nota2) / 2 és una expressió que dona un número. Els operadors són els símbols que indiquen l’operació.

Operadors aritmètics

Treballen amb números i donen un número:

Operador Operació Exemple Resultat
+ Suma 4 + 3 7
- Resta 4 - 3 1
* Multiplicació 4 * 3 12
/ Divisió 10 / 4 2.5
mòdul Residu de la divisió entera 10 mòdul 3 1


L’operador mòdul (residu) és molt útil. Per exemple, per saber si un número és parell: n mòdul 2 = 0.

AlertaError típic: la prioritat dels operadors

Com en matemàtiques, la multiplicació i la divisió es fan abans que la suma i la resta. 2 + 3 * 4 val 14, no 20.

Si vols forçar un altre ordre, fes servir parèntesis: (2 + 3) * 4 val 20.

En cas de dubte, posa parèntesis: fan el codi més clar.

Operadors relacionals

Comparen dos valors i donen sempre un booleà (cert o fals):

Operador Significat Exemple Resultat
= Igual a 5 = 5 cert
Diferent de 5 ≠ 3 cert
> Més gran que 5 > 8 fals
< Més petit que 5 < 8 cert
Més gran o igual 5 ≥ 5 cert
Més petit o igual 3 ≤ 2 fals

Operadors lògics

Combinen valors booleans per construir condicions més complexes:

Operador Dona cert quan… Exemple
I (conjunció) totes dues parts són certes (edat ≥ 18) I (teCarnet = cert)
O (disjunció) almenys una part és certa (esCap) O (esFestiu)
NO (negació) inverteix el valor NO (plou)
ConsellCom recordar I i O
  • I és exigent: ho vol tot. Perquè “tinguis 18 anys I carnet”, cal complir les dues coses.
  • O és generós: en té prou amb una. “Fa fred O plou” és cert si passa almenys una de les dues.

Exemple

    Algorisme PotConduir
        Llegir edat
        Llegir teCarnet             
        potConduir ← (edat ≥ 18) I (teCarnet = cert)
        Escriure "Pot conduir?", potConduir
    FiAlgorisme

Mini-repte

Digues si aquestes expressions donen cert o fals, sabent que x ← 7 i y ← 2:

  1. x > y
  2. (x mòdul y) = 0
  3. (x > 10) O (y < 5)
  4. NO (x = 7)

(Respostes: cert, fals, cert, fals.)

2.5 Entrada i sortida en pseudocodi

Un programa útil es comunica amb l’usuari. Fem servir dues instruccions:

  • Llegir variable: demana una dada a l’usuari i la guarda a la variable (entrada).
  • Escriure ...: mostra un text o un valor per pantalla (sortida).
Escriure "Com et dius?"
Llegir nom
Escriure "Hola,", nom

2.6 Traça d’algorismes

Aquí arriba una de les habilitats més importants del capítol. Traçar un algorisme vol dir executar-lo tu, a mà, pas a pas, anotant com canvien les variables. És com fer de “ordinador humà”.

Traçar serveix per a dues coses: entendre què fa un algorisme que has llegit, i trobar errors en un algorisme que has escrit.

La millor eina és una taula de traça: una columna per variable i una fila per pas.

Exemple

Volem intercanviar els valors de dues variables, a i b. Aquest és l’algorisme:

    Algorisme Intercanvi
        a ← 3
        b ← 8
        aux ← a          // guardem a en un lloc segur
        a ← b
        b ← aux
        Escriure a, b
    FiAlgorisme

Fem-ne la traça. A cada línia, anotem el valor de cada variable després d’executar-la:

Pas Instrucció a b aux
1 a ← 3 3
2 b ← 8 3 8
3 aux ← a 3 8 3
4 a ← b 8 8 3
5 b ← aux 8 3 3


Resultat: a val 8 i b val 3.

Els valors s’han intercanviat! La variable aux (auxiliar) és imprescindible: sense ella, en fer a ← b perdríem per sempre el valor original de a.

AlertaError típic: intercanviar sense variable auxiliar

Si escrius a ← b i després b ← a, totes dues acaben valent el mateix (el valor original de b). El valor de a s’ha perdut.

Sempre cal una variable auxiliar per guardar temporalment un dels dos valors.

Exemple amb repetició: sumar de l’1 al 5

Vegem una traça amb un bucle. Aquest algorisme suma els números de l’1 al 5:

Algorisme SumaFinsCinc
    suma ← 0
    i ← 1
    Mentre i ≤ 5 fer
        suma ← suma + i
        i ← i + 1
    FiMentre
    Escriure suma
FiAlgorisme

La instrucció Mentre ... fer repeteix el bloc mentre la condició sigui certa (ho veuràs a fons al capítol de repetició). Fem la traça:

Pas i i ≤ 5? suma
Inici 1 0
Volta 1 1 → 2 cert 0 + 1 = 1
Volta 2 2 → 3 cert 1 + 2 = 3
Volta 3 3 → 4 cert 3 + 3 = 6
Volta 4 4 → 5 cert 6 + 4 = 10
Volta 5 5 → 6 cert 10 + 5 = 15
Sortida 6 fals 15


Quan i arriba a 6, la condició i ≤ 5 és falsa i el bucle s’atura. El resultat és 15. La traça t’ha permès seguir exactament com creix suma volta a volta.

Aquest algorisme, en diagrama de flux:

flowchart TD
    inici([Inici]) --> init["suma ← 0<br/>i ← 1"]
    init --> cond{"i ≤ 5?"}
    cond -->|Sí| cos["suma ← suma + i<br/>i ← i + 1"]
    cos --> cond
    cond -->|No| esc[/"Escriure suma"/]
    esc --> fi([Final])

ConsellFes traces sempre en paper

Quan un algorisme no fa el que esperes, no et quedis mirant-lo. Agafa paper, dibuixa la taula de traça i executa’l a mà amb un exemple concret.

En 9 de cada 10 casos, l’error salta a la vista en una fila de la taula.

Mini-repte

Fes la taula de traça d’aquest algorisme i digues quant val resultat al final:

    resultat ← 1
    i ← 1
    Mentre i ≤ 4 fer
        resultat ← resultat * i
        i ← i + 1
    FiMentre

(Pista: estàs calculant un factorial. La resposta és 24.)

2.7 Resum

  • Una variable és una caixa amb nom que guarda un valor que pot canviar.
  • L’operador d’assignació () copia un valor a la variable; no és una igualtat matemàtica.
  • El tipus de dada (enter, real, caràcter, cadena, booleà) determina quins valors i operacions són vàlids. Un literal és un valor escrit directament.
  • Una constant guarda un valor que no canvia mai; s’escriu en MAJÚSCULES.
  • Els operadors poden ser aritmètics (donen números), relacionals (donen booleans) o lògics (I, O, NO). Els parèntesis controlen la prioritat.
  • Llegir demana dades a l’usuari i Escriure en mostra.
  • Traçar un algorisme és executar-lo a mà amb una taula de traça. És la millor eina per entendre’l i per trobar-hi errors.