Pseudocodi

De Viquipèdia
Dreceres ràpides: navegació, cerca

Introducció[modifica | modifica el codi]

Dins el marc de les ciències de la computació i l’anàlisi numèrica, el pseudocodi (o fals llenguatge) és una descripció a molt alt nivell de l’estructura d’un programa. Encara que utilitzi estructures típiques de la programació es diu que és a alt nivell perquè una persona amb pocs o sense coneixements informàtics pugui entendre i interpretar la porció de codi que estigui llegint.

Normalment, en un codi escrit en pseudocodi s’obvien detalls que no siguin essencials com ara la declaració de variables molt específiques, la codificació de rutines del sistema, etc. També moltes vegades és necessari per una correcta interpretació enriquir el pseudocodi amb anotacions en llenguatge natural, o amb notació matemàtica.

Per tant, s'utilitza el pseudocodi perquè és una abstracció de l’algoritme a un llenguatge que les persones poden entendre i facilita la feina alhora d’interpretar un problema més complex.

Es poden trobar exemples d’ús de pseudocodi en llibres de text on es faci referència a algoritmes d’ordenació, d’inserció, estructures bàsiques de programació (estructures condicionals, iteratives, etc.) i també en documentacions de planificació de programes (estudis, projectes, etc.).

Malgrat que sigui semblant el pseudocodi amb el codi del programa, s'ha d’evitar confondre'ls. Els diagrames de flux i el llenguatge UML podrien ser considerats com una alternativa gràfica al pseudocodi encara que puguin ser més extensos sobre paper.

Aplicacions[modifica | modifica el codi]

Com s’ha comentat anteriorment, l’ús del pseudocodi es troba en llibres de text i publicacions científiques i relacionades amb la informàtica i la computació numèrica per la descripció i explicació d’algoritmes de manera que tots els programadors/lectors puguin llegir-ho sense la necessitat de conèixer algun llenguatge de programació. Un programador que ha d’aplicar un algoritme específic majoritàriament inicia l’ús de pseudocodi per a aquella interpretació i llavors ho tradueix al llenguatge desitjat

Sintaxi[modifica | modifica el codi]

Generalment no obeeix a cap regla bàsica que regeixi com ha d’ésser redactat, sinó que cada autor redacta particularment i a la seva manera, encara que no significa que diferents algoritmes de diferents autors no coincideixin amb la declaració de variables. La forma en què estan escrites les estructures tenen un lligam.

Característiques i parts del pseudocodi[modifica | modifica el codi]

Hi ha una sèrie de característiques en aquest llenguatge que són:

ExempleEstructuraPseudocodi.png

  • Com s’ha explicat abans, és una manera de representació senzilla i entenedora d’un algoritme.
  • Facilita la codificació de llenguatge natural a llenguatge de programació.
  • És independent del llenguatge de programació que s’utilitzarà.

Tots els documents escrits en pseudocodi han de compartir:

  • Instruccions primitives: poden ser d’entrada, d’assignació o de visualització.
  • Instruccions de definició de dades: per exemple X: enter.
  • Instruccions de control: són utilitzades per a controlar la seqüència d’execució del programa.
  • Instruccions compostes: són aquelles instruccions que són executades directament pel processador i estan construïdes per un conjunt d’accions agrupades en mòduls.

En tot algoritme en pseudocodi hi ha una estructura com la següent capçalera:

  • Programa
  • Mòdul
  • Tipus de dades
  • Constants
  • Variables
  • Cos
  • Inici
  • Instruccions
  • Fi

Definició de dades del pseudocodi[modifica | modifica el codi]

Es defineixen les dades a la capçalera de l’algorisme tal com es veu a l’exemple següent.

Pseudocodi2.png

Un esquema visual del tipus de dades que es poden trobar en el pseudocodi podria ser el següent, on es reflecteixen tots els tipus de dades:

Pseudocodi3.png

Dades d’un programa[modifica | modifica el codi]

En altres apartats s'ha comentat que un programa està format per un algorisme més unes dades. Pel que fa a les dades, en un algorisme podem trobar manipulacions de:

  • Constants: es caracteritzen per ser valors que no es veuen alterats durant l'execució de l'algorisme. Es defineixen al principi de l'algorisme.

Pseudocodi4.png

  • Variables: una variable és una dada el valor de la qual pot variar durant l'execució.
  • Expressions:
    • Aritmètiques: donen com a resultat un valor numèric.
      • +
      • – (unari i binari)
      • * (producte)
      • div (divisió entera)
      • mod (residu o mòdul)
      • ** (potència)
      • / (divisió real)
    • Lògiques: es connecten amb els següents operadors.
      • Operadors de relació: donen com a resultat cert o fals. La seva sintaxi és:
           expressió1 OP_RELACIÓ expressió2: 
  • < (menor que)
  • > (major que)
  • <> (diferent de)
  • = (igual que)
  • <= (menor o igual)
  • >= (major o igual)
Funcions i operacions[modifica | modifica el codi]

Com que el pseudocodi és un llenguatge de descripció, es poden tenir diferents interpretacions alhora de definir diferents operacions, com ara a l'hora de fer una assignació en dues variables:

  • Assignació de valors
    • x <--- y;
    • x := y;
    • x = y;

En els tres casos s’assigna a x el valor de y.

Altres tipus d’operacions matemàtiques es representarien de la forma usual, com ara:

  • Resultat = sin(a)
  • Resultat = x^2+⅔

Operacions d’entrada-sortida[modifica | modifica el codi]

Per tal que un algorisme pugui obtenir les dades d'entrada i mostrar els resultats de sortida, calen unes operacions específiques: les operacions d’entrada-sortida.

Operacions d’entrada[modifica | modifica el codi]

Les operacions d'entrada (o també anomenade de lectura) s'utilitzen per obtenir dades des d'un dispositiu d'entrada (teclat, fitxer, etc).

Es poden llegir enters, reals i caràcters.

  • llegirEnter(), que retorna un enter.
  • llegirReal(), que retorna un real.
  • llegirCaracter(), que retorna un caràcter.
Pseudocodi6.png

Operacions de sortida[modifica | modifica el codi]

Les operacions de sortida (o també anomenades d'escriptura) s'utilitzen per treure el valor d'una variable (també d'una constant, d'una expressió o d'un missatge) cap a un dispositiu de sortida (pantalla, fitxer, etc.).

Es poden escriure enters, reals o caràcters, així com cadenes de caràcters. Una cadena de caràcters ha d'aparèixer entre doble cometa.

Estructures de control[modifica | modifica el codi]

algorisme nom
   const
   // definició de constants
   fconst
   tipus
   // declaració de nous tipus de dades
   ftipus
   var
   // declaració de variables
   fvar
   inici
   // cos (instruccions)
falgorisme

S’utilitzen tres tipus d’estructures de control:

  • Les seqüencials.
  • Les selectives.
  • Les iteratives.

Estructures seqüencials[modifica | modifica el codi]

Consisteix en el fet que les instruccions s’executin una darrere l’altra.

Un bloc d’instruccions és una seqüència d'instruccions que s'executen seqüencialment.

Pseudicidi6.png

Amb pseudocodi s'escriuen una sota l‟altra, o, si es vol fer-ho a la mateixa línia, separades per un.

Existeix un altre tipus de representació a part del pseudocodi: els diagrames de flux

La representació de la composició seqüencial utilitzant diagrames de flux és:

Pseudocodi7.png
Diagrama de flux condicional

Estructures selectives[modifica | modifica el codi]

Controla l'execució d'un bloc d’instruccions segons es compleixi o no una condició (resultat d'avaluar una expressió booleana), de tal manera que, si l'expressió dóna CERT, s'executa el bloc; si és FALS, no s'executa i se segueix amb la següent instrucció.

Exemple de pseudocodi[modifica | modifica el codi]

Tot seguit es mostrarà un exemple d’un algoritme amb el seu pseudocodi i el seu diagrama de flux. L’algoritme es consta de demanar un nombre enter, i si el nombre enter és deu es mostra en un missatge per pantalla:

Pseudocodi8.png

Condicional si doble[modifica | modifica el codi]

Diagrama de flux condicional

Controla l'execució de dos blocs d’instruccions en funció de si es compleix o no una condició, de tal manera que si la condició és certa s’executarà el bloc; altrament no s’executara.

L’exemple del condicional si doble:

Pseudocodi10.png

Instrucció cas[modifica | modifica el codi]

El cas és una operació que es fonamenta en complir condicions. Es defineix un cas amb tots els valors que es volen contemplar. Un cop definida l’estructura, s’avaluarà el resultat i en funció del cas s’efectuarà una operació/bloc d’instruccions o una altra:

Pseudocoi13.png

Diagrama de flux mentre

Instrucció mentre[modifica | modifica el codi]

S’utilitza la instrucció quan no es coneix per endavant el nombre d'iteracions que cal fer i el cos del bucle es repeteix mentre es compleix un condició concreta. En funció de la condició, doncs, permet que el bloc d’instruccions del cos del bucle s'executi de 0 a moltes vegades.

Pseudocdi14.png

Instrucció per[modifica | modifica el codi]

Diagrama de flux per

Només es pot utilitzar la instrucció per quan es coneix el nombre d’iteracions que cal fer.

El funcionament de la instrucció és el següent:

  • varComptador ha de ser de tipus enter
  • valorInicial i valorFinal són constants/expressions/variables de tipus enter.
  • varComptador s'incrementa amb el valor especificat per pas, és a dir, amb n al final de cada iteració. Si no hi ha la paraula pas ni n, s'incrementa amb 1 de manera automàtica.
  • varComptador no pot aparèixer a valorInicial ni a valorFinal.

Pseudocodi16.png

No es pot modificar varComptador, ni tampoc les variables que apareguin a valorFinal.

Si valorInicial>valorFinal, no fa cap iteració.