Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 6

Diagrames de Flux

Els diagrames de flux són una eina complementaria del pseudocodi i ajuda de vegades a
entendre les estructures bàsiques de programació d’una forma gràfica. Per un altre costat, per fer
el disseny d’un programa llarg amb els diagrames de flux, es fa difícil de treballar, ja que
ocupen moltes pàgines. Aquí us faré una breu introducció al tema, només per tenir una altre
forma d’entendre les estructures de programació que hem vist fins ara.

Els símbols que fem servir quan fem un diagrama de flux són els següents

símbol Explicació Exemple

Per un procés que modifica


les dades Sumasuma+2

Entrada/Sortida de dades Llegir dades

Selecció entre dos


alternatives depenent de la A>0?
condició

Procediment o subrutina a
part del programa principal TrobarLletra
( ja la veurem amb més
detall al segon trimestre)

Connector entre dos accions

Inici/final del programa Inici

Per exemple, per calcular el sou d’un treballador, ens fan falta saber les hores treballades, i el
preu per hora. Si fem el pseudocodi, el que farem és

Inici

Variables

Entera :Hores

Coma Flotant : souBrut

Const coma flotant :PREU_HORA=10.50


Procés

Llegir hores

souBrut=hores*PREU_HORA

escriure souBrut

final del procés

Ara per fer això amb un diagrama de flux, farem

Inici

Llegir
hores

souBrut hores*PREU_HORA

Escriure souBrut

Final

Aquest diagrama de flux, ens informa de les accions que hem de fer en el nostre programa d’una
forma visual. Ara veurem les estructures selectives, i les estructures repetitives amb diagrames
de flux.

Estructures selectives

Són les que ens permeten triar entre dos o més camins d’execució depenent del valor de la
condició que posem. En pseudocodi, són com aquest exemple

D=b*b-4*a*c

Si D>0 llavors

X1=(-b+ARREL(D))/(2*a)
X2=(-b-ARREL(D))/(2*a)

Escriure X1,X2

si no

escriure “no hi ha arrels”

final si

D b*b-4*a*c

NO
D>=0? Escriure “NO HI HA ARRELS"

Si

X1(-B-ARREL(D))/(2*A)

X2(-B+ARREL(D))/(2*A)

Escriure X1,X2

Continuar

Aquí veiem que la estructura selectiva si, ens permet modificar el flux d’execució del programa
depenent del valor del Discriminant ( D) de la equació de segon grau. Veiem que el flux
d’execució és únic, o anem per un camí o per un altre. El flux final es selecciona depenent del
valor de D, per això es coneixen com estructures selectives.

De vegades, ens podem trobar amb moltes estructures si, cosa que fa complex el codi. Per això
hi ha les estructures en cas de, que permeten triar un camí, de entre un seguit de camins
depenent d’un valor, per exemple, per escriure el mes de l’any en lletres, a partir del mes de
l’any en número ho podem fer amb un cas que depèn del número de mes

Llegir mesNumero

En Cas de mesNumero

Cas 1

Escriure “Gener”
Cas 2

Escriure “Febrer”

Etc

Final en cas de

Amb un diagrama de flux, això es faria

mesNumer
o

1 2 3

Escriu
“GENER”

Estructures Repetitives

Són les que permeten repetir una acció o accions, tantes vegades com calgui i es coneixen com
bucles. En tenim dos tipus:

 Estructures per, si sabem “a priori”( abans d’executar el bucle) quantes vegades en


farem les accions de dins del bucle

 Estructures mentre si no sabem “a priori”, quantes vegades s’executarà el bucle, ja que


depèn d’una condició externa ( si l’usuari vol continuar o no, si el fitxer té encara dades
per transmetre o no etc)

Les estructures per tenen el següent pseudocodi, recordeu que cal tenir un índex que anirà des
de un valor inicial fins a un valor final, amb un increment opcional ( en general per defecte
l’increment és 1)

Per Index=valor_Inicial fins Valor_final increment

Accions

Final per

Per exemple, per sumar els números enters parells entre 2 i 100 farem
Enter numero

Enter suma

Suma0

Per numero=2 fins 100 incrementa numero en 2

Suma suma+numero

Final per

Escriure suma

suma0

Numero0

Sumasuma+numero

Numeronumero+2

Numero=<10
0 si

no

Escriure Suma

Quan no sabem el número d’iteracions ( de vegades) que es repetirà el bucle, aleshores hem de
triar una estructura mentre, ja que aquesta ens permet controlar l’execució del bucle depenent
d’una condició ( entrada del usuari, longitud d’un fitxer etc). Per exemple si un usuari vol
escriure noms, fins a que escrigui la cadena FINAL, com no sabem quan l’usuari es cansarà
d’escriure.

El pseudocodi podia ser com aquest

Cadena entrada
Constant cadena CENTINELA”FINAL”

Llegir entrada

Mentre entrada <> CENTINELA

Escriure cadena

Llegir cadena

Final mentre
inici

Llegir entrada

Entrada<>CENTINEL
A

SI

Escriu entrada

Llegir entrada

Continua l’execució
Aquí podem parlar d’una instrucció que té molt mala premsa en programació, el famós GOTO,
que ens permet tornar enrere. En aquest curs està prohibit fer servir el GOTO, tot i que de
vegades en codi antic potser us trobeu algun goto heretat. En general el goto és una mostra de
programació dolenta, que dona lloc al anomenat codi spaguetti ( el flux d’execució va torna
enrere en un punt, després en un altre) i per això s’ha d’evitar.

Aquí també hem fet servir una constant, anomenada CENTINELA, que ens permet controlar el
bucle mentre que hem fet. Imaginem que volem canviar la paraula que controla el final del
bucle, només hem d’anar a la constant i donar-li un altre valor.

You might also like