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])
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.
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.
← 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 queptox. - 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.
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
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
- Per claredat:
preu * IVA_GENERALs’entén millor quepreu * 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? | Sí | 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.
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) |
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:
x > y(x mòdul y) = 0(x > 10) O (y < 5)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.
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:
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. Llegirdemana dades a l’usuari iEscriureen 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.