Logo FPCode

Pseudocódi

Introducció a l’ús del pseudocodi com a eina per al disseny i la planificació d’algoritmes, abans d’escriure programes en un llenguatge concret.

Coneixements previs

Referències

Índex

  1. Què és el pseudocodi?
  2. Operadors i paraules reservades
  3. Tipus de dades
  4. Variables i constants
  5. Estructures de control
    5.1. Seqüencial
    5.2. Alternativa
    5.3. Iterativa
  6. Estructures modulars
    6.1. Procediments
    6.2. Funcions
    6.3. Pas de paràmetres
    6.4. Funcions predefinides
  7. Estructures de dades complexes
    7.1. Vectors i Arrays
    7.2. Matrius
  8. Recursivitat
  9. Operacions d’entrada i sortida de dades
  10. Eines per treballar amb pseudocodi
  11. Exercicis

1. Què és el pseudocodi?

El pseudocodi és una eina molt útil per dissenyar i entendre algorismes abans de traduir-los a un llenguatge de programació específic. Es tracta d’un llenguatge semblant al llenguatge natural, que facilita l’escriptura d’instruccions de manera clara i senzilla per a qualsevol programador, independentment del llenguatge que utilitzi després.

El pseudocodi no és un llenguatge de programació per si mateix, sinó un sistema que utilitza expressions limitades per representar les estructures bàsiques de control, que vam veure en els paradigmes de programació.

Quan escrivim pseudocodi, busquem expressar algorismes que tinguin una solució finita, amb un únic punt d’inici. Aquesta forma d’estructurar els algorismes ens ajuda molt a l’hora de traduir-los posteriorment a un llenguatge de programació real.

2. Operadors i paraules reservades

Tot i que no existeix una norma estricta per escriure pseudocodi, és recomanable seguir certes convencions que facilitin la seva posterior traducció a codi d’un llenguatge de programació.

Operadors:

Són símbols o paraules clau que s’utilitzen en els llenguatges per realitzar operacions sobre un o més valors (anomenats operands). Aquestes operacions poden ser matemàtiques, lògiques, de comparació, entre d’altres.

TipusOperadors
Aritmètics+ - * / Div Mod ^
Relacionals= < <= > >= <>
Lògicsand or not
Assignació
Comentaris//

Paraules reservades:

Són paraules pròpies del llenguatge que tenen un significat especial i un ús específic. No es poden utilitzar literalment com a noms de variables, funcions o altres identificadors perquè estan reservades per controlar l’estructura i el funcionament del programa.

CatalàAnglèsDescripció
IniciStartMarca l’inici de l’algorisme o programa.
FiEndIndica el final de l’algorisme o programa.
SiIfCondicional que executa un bloc si la condició és verdadera.
LlavorsThenIndica l’acció a fer quan la condició del “Si” és verdadera.
SinóElseBloc alternatiu que s’executa si la condició del “Si” és falsa.
AltramentOtherwiseAlternativa per a condicions addicionals o per defecte.
Per aForBucle que es repeteix un nombre determinat de vegades.
Dins deInUsat per indicar el conjunt o rang en bucles o condicions.
MentreWhileBucle que es repeteix mentre la condició sigui verdadera.
FerDoInici del bloc que s’executa dins d’un bucle o condicional.
RepetirRepeatBucle que s’executa almenys una vegada fins que es compleixi una condició.
Fins queUntilCondició que indica fins quan ha de continuar un bucle.
SegonsSwitchEstructura de selecció múltiple basada en valors específics.
CasCaseCada opció dins d’una estructura “Segons” (switch).
ProcedimentProcedureSubrutina que executa una sèrie d’instruccions sense retornar valor.
FuncióFunctionSubrutina que executa instruccions i retorna un valor.
LlegirReadCaptura dades introduïdes per l’usuari o des d’una font externa.
EscriureWriteEnvia informació a la pantalla, a un fitxer o a altres dispositius.
ImprimirPrintMostra informació per pantalla o sortida estàndard.
RetornarReturnRetorna un valor des d’una funció o n’interromp l’execució.
IncrementarIncrementAugmenta el valor d’una variable (normalment en bucles).
CadascunEachIndica una iteració sobre cada element d’una col·lecció o conjunt.
Per valorBy ValueEs passa una còpia del valor original al paràmetre del procediment o funció.
Per referènciaBy ReferenceEs passa l’adreça de memòria de la variable original al paràmetre del procediment o funció.

3. Tipus de dades

Els tipus de dada determinen la naturalesa de la informació, com s’emmagatzema a la memòria i quines operacions es poden realitzar sobre ella. Normalment s’utilitza per determinar una variable o constant.

CatalàAnglèsDescripció
CaràcterCharUn sol símbol o lletra.
CadenaStringSeqüència de caràcters.
EnterIntegerNombre enter sense part decimal.
DecimalRealNombre amb part decimal (general).
BooleàBooleanValor cert o fals.
DataDateRepresenta dates i hores.

Els tipus de dades que es mostren són els més comuns i reconeguts en general, però és possible trobar altres tipus o subtipus que representin diferents conjunts o subconjunts de dades, segons el llenguatge de programació o el context d’ús.

4. Variables i constants

Les variables són etiquetes o noms que representen llocs a la memòria on es guarden valors temporals. Aquestes permeten emmagatzemar, modificar i manipular dades durant l’execució de l’algorisme, simulant la lògica del programa sense necessitat d’entrar en detalls tècnics específics.

Per declarar una variable, fem servir l’estructura següent:

pseudocodi.txt
Inici
Definir numero1 com Enter;
Fi

Aquí, Enter és el tipus de dada i numero1 el nom de la variable, que serveix per referenciar-la.

Les variables poden canviar de valor mitjançant una operació anomenada assignació, que reemplaça el valor anterior per un de nou. Per exemple:

pseudocodi.txt
Inici
Definir numero1 com Enter;
numero1 ← 5;
// Es canvia el valor de 5 per 10 a la variable numero1
numero1 ← 10;
Fi

D’altra banda, les constants són valors fixos que no canvien durant l’execució del programa. Solen nomenar-se amb lletres majúscules per fer-les més visibles i facilitar-ne la comprensió. La declaració és similar a la de les variables, però només s’assigna un valor una vegada, que no podrà modificar-se després.

Exemple de constants:

pseudocodi.txt
Inici
Definir PI com Real;
PI ← 3,14159;
Definir LIMIT_MAXIM com Enter;
LIMIT_MAXIM ← 500;
Fi

5. Estructures de control

Les estructures de control permeten definir el flux d’execució d’un algorisme. En pseudocodi, aquestes estructures segueixen l’estil de la programació estructurada, dividint el programa en blocs lògics. Podem classificar-les en tres grans grups: seqüencial, alternativa i iterativa.

5.1. Seqüencial

Les instruccions s’executen en l’ordre en què apareixen, una darrere l’altra. No hi ha decisions ni repeticions: simplement, el programa segueix un camí lineal, de dalt a baix.

pseudocodi.txt
Inici
<instrucció1>
...
<instruccióN>
Fi

5.2. Alternativa

Aquestes estructures permeten que l’algorisme prengui decisions. Segons una condició, s’executarà una part del codi o una altra.

1. Alternativa simple (If)

S’executa un bloc d’instruccions només si es compleix una condició booleana.

pseudocodi.txt
Si <condició> Llavors
<instruccions>
Fi Si

2. Alternativa doble (If-Else)

Permet executar un bloc o un altre, segons es compleixi o no la condició.

pseudocodi.txt
Si <condició> Llavors
<instruccions1>
Si no
<instruccions2>
Fi Si

3. Alternativa múltiple (Switch)

Permet avaluar una expressió contra múltiples casos possibles.

pseudocodi.txt
Segons <expressió> Fer
Cas <valor1>
<instruccions1>
Cas <valor2>
<instruccions2>
...
Un altre cas
<instruccionsN>
Fi Segons

Aquesta estructura també es pot implementar anidant diverses estructures Si - Si no.

pseudocodi.txt
Si <condició1> Llavors
<instruccions1>
Si no
Si <condició2> Llavors
<instruccions2>
Si no
Si <condició3> Llavors
<instruccions3>
Si no
<instruccions4>
Fi Si
Fi Si
Fi Si

5.3. Iterativa

Aquestes estructures permeten repetir un bloc d’instruccions mentre es compleixi una condició o durant un nombre de vegades determinat.

1. Iteració amb sortida al principi (While)

Primer s’avalua la condició. Si és vertadera, s’executen les instruccions. Si no, es surt del bucle.

pseudocodi.txt
Mentrestant <condició> Fer
<instruccions>
Fi Mentrestant

2. Iteració amb sortida al final (Do-While)

Primer s’executen les instruccions i després es comprova la condició.

pseudocodi.txt
Fer
<instruccions>
Mentrestant <condició>

Aquesta estructura també es pot trobat amb Repeat. Es lo mateix.

pseudocodi.txt
Repetir
<instruccions>
Fins Que <condició>

3. Iteració amb comptador (For)

Utilitza una variable de control que s’incrementa o decrementa fins a assolir un límit.

Amb increment positiu:

pseudocodi.txt
Definir i com Enter;
Per a i ← 1 Fins N Amb pas Increment 1 Fer
<instruccions>
Fi Per a

Amb increment negatiu:

pseudocodi.txt
Definir i Com Enter;
Per a i ← N Fins 1 Amb pas Increment -1 Fer
<instruccions>
Fi Per a

4. Iteració per a cada element (For Each)

Recorre tots els elements d’un conjunt.

pseudocodi.txt
Definir conjunt[N] Com Entero;
Per a Cada element En conjunt Fer
<instruccions>
Fi Per a Cada

L’ús d’aquest tipus d’estructura requereix conèixer els tipus de dades complexes, que s’expliquen en el següent apartat: Vectors i Arrays

6. Estructures modulars

En programació, descompondre un problema en parts més petites i manejables és fonamental per millorar l’organització, reutilització i llegibilitat del codi. Una de les formes més comunes de fer-ho és mitjançant estructures modulars, com els procediments i funcions.

Podem utilitzar pseudocodi per representar de manera senzilla aquesta descomposició modular, sense necessitat d’utilitzar un llenguatge de programació específic.

6.1. Procediments

Un procediment és un bloc d’instruccions independent que rep un nom (Per convenció, s’acostuma a utilitzar un verb en infinitiu, i la primera lletra s’escriu en majúscula per indicar l’acció que realitza) i s’executa quan és invocat des d’un altre bloc de codi o des d’un altre programa.

A més, pot rebre un o més paràmetres d’entrada (també anomenats arguments), que són variables acompanyades del seu tipus de dada. Aquests paràmetres permeten al procediment treballar amb informació concreta, adaptant el seu comportament als valors rebuts. És important tenir en compte que no és obligatori definir paràmetres. Si el procediment no necessita rebre informació, es pot indicar el seu nom seguit de parèntesis buits.

Un cop invocat, el procediment executa totes les instruccions definides en el seu interior fins arribar al final del bloc. Després, retorna el control al programa o bloc que l’ha cridat, però no retorna cap valor com a sortida.

Sintaxi general

pseudocodi.txt
Procediment nom (paràmetre1 tipus, paràmetre2 tipus, …)
<instruccions>
Fi Procediment
  • Exemple 1: Procediment sense paràmetres

En aquest exemple, es defineix un procediment que no rep arguments. Per tant, en la seva crida s’indicarà únicament el nom seguit de parèntesis buits.

pseudocodi.txt
Procediment MostrarMissatge()
Escriure "Aquest es un missatge";
Fi Procediment
Inici
MostrarMissatge()
Fi
  • Exemple 2: Procediment amb paràmetre

Utilitzant el mateix exemple anterior, s’afegeix un paràmetre al procediment per mostrar una informació.

pseudocodi.txt
Procediment MostrarMissatge(missatge Cadena)
Escriure "El paràmetre rebut es: ", missatge;
Fi Procediment
Inici
Definir salutacio Com Cadena;
salutacio ← "Hola";
MostrarMissatge(salutacio);
Fi

6.2. Funcions

Una funció és similar a un procediment, amb la diferència que sempre retorna un valor com a resultat de la seva execució. També pot rebre paràmetres d’entrada.

Sintaxi general

pseudocodi.txt
Funció nom (paràmetre1 tipus, paràmetre2 tipus, …) : tipusRetorn
<instruccions>
...
Retornar valor;
Fi Funció

Exemple: Funció que suma dos números

pseudocodi.txt
Funció Sumar(a Enter, b Enter) : Enter
Definir resultat com Enter;
resultat ← a + b;
Retornar resultat;
Fi Funció
Inici
Definir x, y, suma Com Enter;
Imprimir "Introdueix el primer número:";
Llegir x;
Imprimir "Introdueix el segon número:";
Llegir y;
suma ← Sumar(x, y);
Imprimir "El resultat és: ", suma;
Fi

6.3. Pas de paràmetres

Tant en els procediments com en les funcions és possible enviar paràmetres, que són valors o variables que s’utilitzen dins el cos del bloc.

Els paràmetres permeten que un procediment o funció treballi amb dades externes, adaptant el seu comportament en funció dels valors que rep. D’aquesta manera, s’evita escriure el mateix codi diverses vegades, reutilitzant el bloc amb diferents dades.

Depenent de com s’enviïn les dades al procediment o funció, els paràmetres poden comportar-se de dues maneres:

  1. Pas del paràmetre per valor

En el pas per valor, al procediment o funció se li envia una còpia de la dada original. Això significa que qualsevol canvi que es faci sobre el paràmetre no afecta el valor original de la variable en el programa principal.

pseudocodi.txt
Procediment Incrementar(x Enter per Valor)
x ← x + 1;
Fi Procediment
Inici
Definir x Com Enter;
x ← 5;
Escriure x;
Incrementar(x);
Escriure x;
Fi

En executar l’exemple, veiem que el valor de x continua sent el mateix.

Terminal window
5
5
  1. Pas del paràmetre per referència

En el pas per referència, al procediment o funció se li envia l’adreça de memòria de la variable original. Això implica que qualsevol canvi sobre el paràmetre modificarà directament el valor de la variable original.

pseudocodi.txt
Procediment Incrementar(x Enter Enter per Referència)
x ← x + 1;
Fi Procediment
Inici
Definir x Com Enter;
x ← 5;
Escriure x;
Incrementar(x);
Escriure x;
Fi

En executar l’exemple, no passarà com en l’anterior; aquesta vegada x tindrà un valor diferent un cop cridat el procediment.

Terminal window
5
6

Quan utilitzar una forma o una altra?

  • S’utilitzarà per valor quan volem protegir la dada original i evitar modificacions. És útil si només necessitem llegir o treballar temporalment amb la dada.
  • S’utilitzarà per referència quan necessitem que el procediment o funció modifiqui el valor de la variable original. És útil, per exemple, per retornar resultats o actualitzar valors.

6.4. Funcions predefinides

En pseudocodi, igual que a la majoria de llenguatges de programació, existeixen funcions predefinides que ens permeten realitzar operacions comunes sense necessitat d’escriure tot el procediment des de zero.

Aquestes funcions estan ja integrades a la gran majoria de llenguatges i ens permeten treballar amb nombres, cadenes de text i operacions lògiques de forma més ràpida i senzilla. Fer-ne un bon ús ens ajuda a escriure algoritmes més clars i no haver de desenvolupar des de zero aquestes operacions.

A continuació es mostren algunes funcions predefinides:

Funcions matemàtiques

Són funcions que permeten realitzar operacions numèriques avançades.

  • Arrel(n) → Retorna l’arrel quadrada de n.
  • Potencia(base, exponent) → Calcula la potència d’un nombre.
  • Abs(n) → Retorna el valor absolut de n.
  • Arrodonir(n) → Arrodoneix el nombre n a l’enter més proper.
  • Aleatori(inf, sup) → Retorna un nombre aleatori entre els valors indicats.
Funcions de cadenes

Aquestes funcions ens permeten treballar amb textos o paraules (també anomenades cadenes de caràcters).

  • Longitud(cadena) → Retorna quants caràcters té la cadena.
  • SubCadena(cadena, inici, fi) → Extreu una part de la cadena.
  • Concatenar(cad1, cad2) → Uneix dues cadenes en una sola.
  • Majúscules(cadena) i Minúscules(cadena) → Converteix tot el text a majúscules o minúscules.

7. Estructures de dades complexes

A més dels tipus de dades simples com enters, reals o cadenes, existeixen estructures de dades complexes que ens permeten emmagatzemar i gestionar col·leccions de valors relacionats. Les dues estructures més comunes són els vectors i les matrius.

Amb el coneixement que tenim fins ara, si volem guardar a memòria el nom d’una fruita, creem una variable. Però, què passa si ara volem guardar una llista de fruites, per exemple, 100 fruites? Hauríem de crear 100 variables diferents? Això seria inviable i poc pràctic.

Per això, existeixen estructures de dades que faciliten l’emmagatzematge ordenat de múltiples dades relacionades i permeten la seva manipulació mitjançant índexs. Aquestes estructures ens ajuden a gestionar col·leccions de dades de forma eficient i organitzada.

7.1. Vectors i Arrays

Un vector o array son termes que serveixen per representar un conjunt d’elements del mateix tipus emmagatzemats en una sola dimensió, és a dir, una llista ordenada. Cada element s’accedeix mitjançant un índex, que indica la seva posició dins del vector.

Declaració
La seva sintaxi és similar a la d’una variable però ara s’indica entre [ ] la quantitat numèrica d’elements. Cal tenir en compte que tots els elements han de ser del mateix tipus. No és possible tenir un vector amb diferents tipus de dades.

pseudocodi.txt
Definir numeros[5] Com Enter;
// Vector amb 5 elements

Accés i recorregut
Per accedir als elements d’un vector, s’utilitza un índex, que representa la posició de l’element dins del mateix. En aquest cas, l’índex començarà en 1, i cada posició s’identifica pel seu número d’ordre.

L’índex mai no ha de superar el límit establert en la declaració del vector. Per exemple, si s’ha declarat un vector amb 5 elements, no és vàlid accedir a l’índex 6 o superior, ja que s’estaria intentant accedir a una posició que no existeix en memòria.

pseudocodi.txt
numero[2] ← 7; // S’afegeix el valor 7 a la posició 2
Escriure "El valor a la posició 2 és: ", numero[2];

Per recórrer els registres dels vectors s’emprarà un bucle.

pseudocodi.txt
// Afegir valors als elements del vector
Per i ← 1 Fins 5 Fer
Escriure "Introdueix el número ", i, ":" ;
Llegir numeros[i];
Fi Per
// Llegir els valors dels elements del vector
Per i ← 1 Fins 5 Fer
Escriure "El número a la posició ", i, " és: ", numeros[i];
Fi Per

7.2. Matrius

Una matriu és una estructura bidimensional que emmagatzema dades en files i columnes. És útil per representar taules, mapes, imatges o qualsevol tipus d’informació que necessiti un doble índex per al seu accés. Una manera senzilla d’entendre-ho és pensar en el taulell del joc Hundir la flota, on cada casella es localitza amb una coordenada composta per una fila i una columna. Així funciona una matriu.

Declaració

pseudocodi.txt
Definir matriu[3,4] Com Real; // Matriu de 3 files i 4 columnes
Definir taulell[10,10] Com Enter; // Matriu de 10 files i 10 columnes

Accés i recorregut
S’accedeix a cada element amb dos índexs: fila i columna.

pseudocodi.txt
matriu[1,1] ← 4.5; // S’afegeix el valor 4.5 a la posició 1,1
Escriure "El valor a la posició 1,1 és: ", matriu[1,1];

Per recórrer les files i columnes de la matriu s’empraran dos bucles anidats.

pseudocodi.txt
// Afegir valors a la matriu
Per i ← 1 Fins 3 Fer
Per j ← 1 Fins 4 Fer
Escriure "Introdueix el valor per la posició (", i, ",", j, "):" ;
Llegir matriu[i,j];
Fi Per
Fi Per
// Mostrar els valors de la matriu
Per i ← 1 Fins 3 Fer
Per j ← 1 Fins 4 Fer
Escriure "El valor a (", i, ",", j, ") és: ", matriu[i,j];
Fi Per
Fi Per

8. Recursivitat

La recursivitat és una tècnica de programació en la qual una funció (o procediment) es crida a si mateixa per resoldre un problema. És especialment útil quan el problema es pot dividir en subproblemes del mateix tipus, més petits.

Encara que pot semblar complexa al principi, la recursivitat permet crear solucions elegants i molt potents. No obstant això, és important usar-la amb cura per evitar errors com crides infinites o consum excessiu de memòria.

Com funciona?

Una funció recursiva té dues parts fonamentals:

  1. Cas base: la condició que atura la recursió.
  2. Crida recursiva: la funció es crida a si mateixa amb un nou valor, acostant-se al cas base.

A continuació es mostrarà un exemple d’un comptador cap enrere, que imprimeix nombres des de n fins a 1. Per entendre-ho millor, es presentaran dues versions: una iterativa i una altra recursiva.

  • Forma iterativa:
pseudocodi.txt
Funcion ComptadorCapEnrere(n: Enter)
Per i ← n Fins 1 Amb pas Paso -1 Fer
Escriure i;
Fi Per
Fi Funcion
Inici
ComptadorCapEnrere(5);
Fi
  • Forma recursiva
pseudocodi.txt
Funcion ComptadorCapEnrere(n: Enter)
Si n > 0 Llavors // cas base
Escriure n;
ComptadorCapEnrere(n - 1); // crida recursiva
Fi Si
Fi Funcion
Inici
ComptadorCapEnrere(5); // Crida inicial
Fi

En la gran majoria de casos, un problema es pot resoldre tant de forma iterativa com recursiva. No obstant això, la recursivitat pot resultar més intuïtiva i senzilla d’aplicar en certs contextos, especialment en problemes amb estructura jeràrquica o que poden dividir-se naturalment en subproblemes.

Exemples clàssics on la recursivitat destaca per la seva claredat són el càlcul del factorial, la sèrie de Fibonacci o el recorregut d’estructures de dades com arbres i grafos. Aquests problemes, tot i que també es poden resoldre de forma iterativa, solen tornar-se molt més complexos d’implementar sense recursió. En canvi, la recursivitat permet expressar la solució de manera més directa, llegible i elegant.

Quan usar recursivitat?
  • 🔁 El problema es pot dividir en subproblemes del mateix tipus.
    Per exemple, per calcular el factorial d’un número n, n’hi ha prou de multiplicar n pel factorial de n - 1, que és el mateix tipus d’operació a una escala menor.

  • El nombre de passos no és fix o no es coneix d’antuvi.
    En problemes com el recorregut d’un arbre binari o la cerca de solucions en un laberint, la profunditat del procés depèn de les dades i no es pot predir fàcilment.

  • 🔍 La solució iterativa és molt més complexa o menys clara.
    Alguns algoritmes, com els de recorregut en profunditat (DFS) o certs algoritmes de generació de combinacions o particions, són significativament més senzills d’expressar amb recursivitat.

  • 📐 Existeix una definició matemàtica recursiva.
    Quan el propi problema ja està formulat de manera recursiva (com Fibonacci o Torres de Hanoi), implementar-lo recursivament sol ser més directe i natural.

Limitacions i problemes de la recursivitat

Encara que la recursivitat pot ser una eina molt poderosa, no sempre és la millor opció. Té algunes limitacions importants que cal conèixer:

  • Més ús de memòria:
    Cada crida recursiva s’emmagatzema a la pila d’execució del programa. Si es fan massa crides (per exemple, en una recursió profunda sense optimització), pot provocar un error de desbordament de pila (stack overflow).

  • Possibilitat de recursió infinita:
    Si no es defineix correctament un cas base, o si les crides no s’acosten a aquest cas, la funció mai no acaba i s’executa indefinidament.

  • Rendiment lent en alguns casos:
    Algunes funcions recursives, com la versió clàssica de Fibonacci, recalculen moltes vegades els mateixos valors, cosa que les fa ineficients si no s’apliquen tècniques com la memorització o la programació dinàmica.

  • Més dificultat per depurar i trobar errors:
    El seguiment d’errors pot ser més complicat en funcions recursives, ja que hi ha moltes crides apilades i el flux del programa no és tan lineal com en una versió iterativa.

9. Operacions d’entrada i sortida de dades

Una de les habilitats fonamentals a l’hora de començar a programar és aprendre com interactuar amb l’usuari, ja sigui per demanar dades o per mostrar resultats. Aquestes accions es coneixen com operacions d’entrada i sortida de dades.

Entrada de dades

L’entrada de dades permet que l’usuari proporcioni informació al programa. En pseudocodi, la instrucció més habitual per a això és:

  • Llegir (o Llegir nomVariable)

Aquesta instrucció pausa l’execució de l’algorisme i espera que l’usuari introdueixi un valor, que es guarda a la variable indicada.

pseudocodi.txt
Algorisme EntradaExemple
Definir edad Com Enter;
Escriure "Introdueix la teva edad:"
Llegir edad;
Fi Algorisme

En aquest exemple, el programa demana a l’usuari la seva edat i la guarda a la variable edad.

Sortida de dades

La sortida de dades permet mostrar informació a l’usuari, enviar-la a un fitxer o a altres dispositius. La instrucció utilitzada per a això és:

  • Escribir (o Escribir expresión)

Pots mostrar text, el valor d’una variable o el resultat d’una operació.

pseudocodi.txt
Algorisme SortidaExemple
Definir nom Com Cadena;
nom ← "Lucía"
Escriure "Benvingut/da, ", nom;
Fi Algorisme

Aquest exemple mostra una salutació personalitzada, unint un text fix amb el contingut d’una variable.

En alguns contextos, és possible trobar una instrucció específica per mostrar informació per pantalla, normalment utilitzant la paraula clau Imprimir.

Això no significa que s’enviï un document a la impressora, sinó que les dades indicades es visualitzaran a la pantalla, generalment a la consola o sortida estàndard del programa.

El més habitual és que entrada i sortida s’utilitzin juntes per construir programes interactius.

pseudocodi.txt
Algorisme EntradaSortida
Definir nom Com Cadena;
Escriure "¿Com et dius?";
Llegir nom;
Escriure "¡Hola, ", nom, "!";
Fin Algorisme

10. Eines per treballar amb pseudocodi

PSeInt (acrònim de “PSeudo Intèrpret”) és una aplicació educativa creada amb l’objectiu d’ajudar els estudiants a desenvolupar la lògica algorítmica utilitzant pseudocodi. Es tracta d’un entorn senzill, intuïtiu i en espanyol, cosa que el converteix en una opció valida per a qui comença en aquest camp.

Característiques

  • Editor de pseudocodi amb suggeriments i ressaltat de sintaxi.
  • Simulador pas a pas, ideal per comprendre el flux d’execució dels algorismes.
  • Detecció d’errors comuns i suggeriments per corregir-los.
  • Conversió automàtica a altres llenguatges de programació, com Python, Java, JavaScript o C#, per visualitzar com s’implementaria un algorisme en un llenguatge real.
  • Suport per a diagrames de flux, que permet representar visualment la lògica abans de codificar-la.

PSeInt permet escriure, simular i validar pseudocodi de forma senzilla, ajudant a entendre la lògica de programació sense preocupar-se per la sintaxi estricta d’un llenguatge específic. A més, inclou altres funcionalitats que permeten transformar pseudocodi en un llenguatge de programació concret.

PseInt

Es pot descarregar des del seu lloc oficial: 👉 https://pseint.sourceforge.net/

11. Exercicis

Exercici 1: Operacions bàsiques

Declara tres variables numèriques: a, b i resultat. Demana a l’usuari que introdueixi els valors de a i b, i després mostra per pantalla la suma, la resta i la multiplicació d’ambdós.

Exercici 2: Operacions per a la figura d’un cercle

Defineix una constant anomenada PI. Demana a l’usuari que introdueixi el radi d’un cercle i calcula la seva àrea utilitzant la fórmula àrea = PI * radi².

Exercici 3: Control de la majoria d’edat

Demana a l’usuari una edat i mostra un missatge que indiqui si és major d’edat o no.

Exercici 4: Login

Demana a l’usuari una contrasenya i verifica si coincideix amb la cadena “1234”. Repeteix la petició fins que encerti.

Exercici 5: Quadrat d’un número

Crea una funció anomenada Quadrat que rebi un número i retorni el seu quadrat. Després, a l’algorisme principal, demana un número a l’usuari, crida la funció i mostra el resultat.

Exercici 6: Saludar Usuari

Defineix un procediment anomenat SaludarUsuari que demani el nom de l’usuari i el saludi. Crida el procediment des de l’algorisme principal.

Exercici 7: Llista de fruites

Crea un vector anomenat fruites amb espai per a 5 elements. Demana a l’usuari que introdueixi els noms de 5 fruites i després mostra la llista completa.

Exercici 8: Taula de multiplicar per 5

Crea una matriu de 10x5 que representi la taula de multiplicar de l’1 al 10. A cada fila s’hi guardarà l’operació a multiplicar, de la següent manera:

| 1 | x | 5 | = | 5 |
| 2 | x | 5 | = | 10 |
| 3 | x | 5 | = | 15 |
...

Mostra la taula completa per pantalla.

🧠 Aquests exercicis són només una petita introducció. Per dominar la lògica de programació, és fonamental seguir practicant de manera constant.

🛠️ Pots trobar més activitats per desenvolupar les teves habilitats al següent enllaç: 👉exercicis👈