• No se han encontrado resultados

4. Subprogrames: Accions i funcions

N/A
N/A
Protected

Academic year: 2022

Share "4. Subprogrames: Accions i funcions"

Copied!
10
0
0

Texto completo

(1)

Edicions UPC

Inici

Contingut

 

 

Pàgina71de90

Tornar

Pantalla Completa

Tancar

Sortir

71/90

4. Subprogrames: Accions i funcions

Motivació

Els programes que hem implementat fins ara consten d’un tot, els càlculs se es fan totalment dins del (únic) flux d’execució implementat a la funció .

En general, això comporta dificultats a l’hora de resol- dre problemes sobretot quan tenen certa complexitat:

– Els problemes són difícils de resoldre, ja que sempre es parteix de zero.

– Els programes són llargs i difícils d’entendre (poc llegibles).

– No es pot evitar resoldre el mateix problema més d’una vegada. Es repeteix codi.

– Els manteniment dels programes (canvis, exten- sions, millores, etc.) es força complicat, canvis a una part del programa impliquen canvis a altres parts.

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina72de90

Tornar

Pantalla Completa

Tancar

Sortir

4. Subprogrames: Accions i funcions

Solució: Disposar d’un conjunt d’accions i funcions més ampli

Si el conjunt d’accions i/o funcions disponibles fos més am- pli:

Seria més fàcil resoldre els problemes.

Obtindríem un major nivell d’abstracció.

Els programes resultarien més curts.

Els programes serien més intel ˚uligibles.

Evitaria haver de resoldre un mateix problema més d’un cop. No repetició de codi.

Facilitaria el manteniment dels programes. Millores, canvis, ampliacions, etc.

(2)

Edicions UPC

Inici

Contingut

 

 

Pàgina73de90

Tornar

Pantalla Completa

Tancar

Sortir

73/90

Exemples

Suposem que volem dissenyar un programa que donats quatre valors enters: E1, E2, E3 i E4 calculi i

// Precondició: cin: E1 E2 E3 E4 i E2>= 0 i E4>= 0 int void

int

>> >> >> >>

while <

<<

while <

<<

return

// Postcondició: cout: E1E2 E3E4

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina74de90

Tornar

Pantalla Completa

Tancar

4. Subprogrames: Accions i funcions

Exemples

Suposem ara que per resoldre el mateix problema dis- posem d’una funció que donats dos valors en- ters , calcula .

// Precondició: cin: E1 E2 E3 E4 i E2>= 0 i E4>= 0 int void

int

>> >> >> >>

<< << <<

return

// Postcondició: cout: E1E2 E3E4

(3)

Edicions UPC

Inici

Contingut

 

 

Pàgina75de90

Tornar

Pantalla Completa

Tancar

Sortir

75/90 Els llenguatges de programació ofereixen un mecanisme d’abstracció que permet ampliar el conjunt d’accions i/o funcions dels que disposem. Aquest mecanisme és la definició d’accions i/o funcions parametritzades.

Les accions i funcions parametrizades són subprogrames que:

Resolen un problema concret.

Les dades que necessiten per resoldre el problema es reben mitjançant els paràmetres.

Tenen un entorn propi que consisteix en:

– Els paràmetres formals.

– Les variables que es defineixen a l’acció o funció.

Aquestes variables s’anomenen variables locals.

No es poden executar de forma independent.

Per executar-se han de ser cridades o bé des de un programa o bé des d’una altra acció o funció.

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina76de90

Tornar

Pantalla Completa

Tancar

Sortir

4. Subprogrames: Accions i funcions

Definició d’accions

Les accions són subprogrames quepoden modificar l’estat de l’programa, acció o funció que les criden. La definició d’una acció consta de dues parts:

Capçalera: és on es dóna un nom a l’acció i on es de- fineixen els paràmetres formals que té l’acció (nombre i tipus).

Cos: és el subprograma que resol el problema associat a l’acció.

Sintaxi:

void

// Declaració d’objectes (constants i variables) locals // Sentencies (composició d’accions)

(4)

Edicions UPC

Inici

Contingut

 

 

Pàgina77de90

Tornar

Pantalla Completa

Tancar

Sortir

77/90

Paràmetres formals d’una acció

S’anomenen paràmetres formals els paràmetres que apareixen a la capçalera de la definició d’una acció o fun- ció.

Els paràmetre són el mecanisme que permet a una ac- ció o funció comunicar-se amb la resta de l’entorn (pro- gram, altre acció o altre funció) on s’ha invocat.

A traves dels paràmetres, l’entorn proporciona a l’acció els valors que aquesta necessita per a resoldre la tasca associada i l’acció li proporciona a l’entorn els resultats.

Aquest mecanisme de comunicació rep el nom de pas de paràmetres.

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina78de90

Tornar

Pantalla Completa

Tancar

4. Subprogrames: Accions i funcions

Els paràmetres formals es poden classificar en:

Entrada. Un paràmetre d’entrada és un valor que ne- cessita conèixer el subprograma per resoldre el prob- lema. En aquest cas el pas de paràmetres es fa per valor.

Sortida. Un paràmetre de sortida és una variable, que no ha de tenir un valor inicial, on el subprograma deixarà un valor (resultat). En aquest cas el pas de paràmetres es fa per referència i s’indica posant el sím- bol & davant del nom del paràmetre.

Entrada/sortida. Un paràmetre de entrada/sortida és una variable que ha de tenir un valor inicial i que el subprograma pot modificar. En aquest cas el pas de paràmetres es fa per referència i s’indica posant el sím- bol & davant del nom del paràmetre.

Sintaxi: <tipus> { }<nom>

(5)

Edicions UPC

Inici

Contingut

 

 

Pàgina79de90

Tornar

Pantalla Completa

Tancar

Sortir

79/90

Exemples

Acció que donats dos entersa i bcalcula c = a ∗ b i canvia el valor de a pel deb.

// Precondició: a = E1 i b = E2

void int int int

// Postcondició: a = E2 i b = E2 i c = E1*E2

Acció que intercanviï el valor de dos enters.

// Precondició: a = E1 i b = E2

void int int

int

// Postcondició: a = E2 i b =E1

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina80de90

Tornar

Pantalla Completa

Tancar

Sortir

4. Subprogrames: Accions i funcions

Un altre exemple

Acció que calcula si una equació de segon grau (ax2 + bx + c = 0) té solució o no i en cas que en tingui calcula les seves arrels.

void double double double double double bool

double if <

false else

true

(6)

Edicions UPC

Inici

Contingut

 

 

Pàgina81de90

Tornar

Pantalla Completa

Tancar

Sortir

81/90

Crida d’accions

La crida a una acció consisteix en executar el subprograma corresponent amb uns paràmetres concrets. Els paràme- tres concrets amb els que es crida l’acció s’anomenen paràmetres actuals o arguments.

Sintaxi: <nom>(<paramActual1>,<paramActual2>,...,<paramActualn>)

Quan es crida a una acció primer s’actualitzen els seus paràmetres formals segons els paràmetres actuals cor- responents i després s’executa el subprograma.

La correspondència entre els paràmetres formals i els actuals es fa segons l’ordre, és a dir, el primer amb el primer, el segon amb el segon, . . .MAI SEGONS EL NOM!

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina82de90

Tornar

Pantalla Completa

Tancar

4. Subprogrames: Accions i funcions

L’actualització dels paràmetres formals es fa, depenent de si el pas és per valor o per referència, de la següent forma:

Pas per Valor: es copia el valordel paràmetre actual en el paràmetre formal.

Pas per Referència: es copia l’adreça de memòria de la variable corresponent al paràmetre actual en el paràmetre formal i per tant cada vegada que es fa refer- ència al paràmetre formal al cos de l’acció s’està fent referència a la variable que s’ha passat com a paràme- tre actual (les modificacions i consultes es fan sobre la variable corresponent al paràmetre actual).

(7)

Edicions UPC

Inici

Contingut

 

 

Pàgina83de90

Tornar

Pantalla Completa

Tancar

Sortir

83/90 Ha d’existir una correspondència entre els paràmetres ac- tuals i els paràmetres formals en:

Nombre: si l’acció té n paràmetres formals a la seva definició quan es crida ha de tenir n paràmetres actu- als.

Tipus: el tipus dels paràmetres actuals ha de coincidir amb el tipus amb el que s’han definit el paràmetres for- mals corresponents (el primer amb el primer, el segon amb el segon, ...).

Significat: per exemple quan cridem a l’acció arrels el primer paràmetre actual ha de ser el coeficient de segon grau, el segon el de primer grau i el tercer el de grau zero. Si volem resoldre la equació de segon grau 3x2 + x + 5 = 0 hem de cridar a l’acció de la següent manera:

arrels(3.0,1.0,5.0,x1,x2,s)

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina84de90

Tornar

Pantalla Completa

Tancar

Sortir

4. Subprogrames: Accions i funcions

Definició de funcions

Les funcions són subprogrames que no poden modificar l’estat del programa, acció o funció que les criden. Les funcions calculen un valor a partir dels paràmetres i per tant tenen associat un tipus. La definició d’una funció, al igual que les accions, consta de dues parts:

Capçalera: és on es dóna un nom a la funció, on es de- fineixen els paràmetres formals que té la funció (nom- bre i tipus) i on s’indica de quin tipus és el valor que calcula.

Cos: és el subprograma que resol el problema associat a la funció.

Sintaxi:

// Declaració d’objectes (constants i variables) locals // Sentencies (composició d’accions)

return

(8)

Edicions UPC

Inici

Contingut

 

 

Pàgina85de90

Tornar

Pantalla Completa

Tancar

Sortir

85/90

Paràmetres formals d’una funció

Tots els paràmetres formals d’una funció són d’entrada.

Sintaxi: <tipus> <nom>

Exemple

Funció que calculi la part entera per dalt d’un valor real donat.

// Precondició: r=R1

int double

int int

if double <

return

// Postcondició: arrodonir(R1)=ceil(R1)

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina86de90

Tornar

Pantalla Completa

Tancar

4. Subprogrames: Accions i funcions

Exemple

Funció que calculi el màxim de dos valors enters.

// Precondició: x=E1 i y=E2

int int int

int if <

else

return

// Postcondició: (max(E1,E2) = E1 i E1>=E2) o // (max(E1,E2) = E2 i E2>=E1)

(9)

Edicions UPC

Inici

Contingut

 

 

Pàgina87de90

Tornar

Pantalla Completa

Tancar

Sortir

87/90

Exemple

Funció que donats dos enters E1 i E2 amb E2 ≥ 0 calculi E1E2.

// Precondició: x=E1 i y=E2 i E2 >= 0

int int int

int

while <

return

// Postcondició: exp(E1,E2) = E1E2

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Edicions UPC

Inici

Contingut

 

 

Pàgina88de90

Tornar

Pantalla Completa

Tancar

Sortir

4. Subprogrames: Accions i funcions

Crida de funcions

La crida a una funció consisteix en executar el sub- programa corresponent amb uns paràmetres concrets.

Els paràmetres concrets amb els que es crida l’acció s’anomenen paràmetres actuals o arguments.

Sintaxi: <nom>(<paramActual1>,<paramActual2>,...,<paramActualn>)

Quan es crida a una funció primer s’actualitzen els seus paràmetres formals segons els paràmetres actuals cor- responents, després s’executa el subprograma i final- ment es substitueix la crida a la funció per el valor que retorna la funció.

La correspondència entre els paràmetres formals i els actuals (al igual que en les accions) es fa segons l’ordre, és a dir, el primer amb el primer, el segon amb el segon, . . .MAI SEGONS EL NOM!

Recordeu que una funció és una expressió i per tant la crida a una funció només pot aparèixer on pot aparèixer

(10)

Edicions UPC

Inici

Contingut

 

 

Pàgina89de90

Tornar

Pantalla Completa

Tancar

Sortir

89/90

Exemple

Funció que calculi el màxim de tres valors enters.

// Precondició: x=E1 i y=E2 i z=E3

int int int int

return

// Postcondició:(max3(E1,E2,E3) = E1 i E1>=E2 i E1>=E3) o // (max3(E1,E2,E3) = E2 i E2>=E1 i E2>=E3) o // (max3(E1,E2,E3) = E3 i E3>=E1 i E3>=E2)

cJordi Marco i Fatos Xhafa, 2006. cEdicions UPC, 2006.

Referencias

Documento similar

Mostren la conflictivitat resultant i la presència d’una multiplicitat d’actors que a través de diferents estratègies disputen els territoris, els seus recursos i institucions

Quan parlem de violència fills-pares ens referim a la relació problemàtica que es produeix entre els fills i els pares i que es caracteritza per la presència d’agressions i/o

Tot i que, és un procés força complex, degut a què per una banda els clients de BSF són els propietaris dels estands gastronòmics i, aquests comercialitzen els

Cada una d’aquestes zones es va emplaçar al lloc més convenient i per una adequada comunicació entre zones, independent i segura, coincidint amb un pronunciat desnivell a la zona

Per generar les trajectòries es necessitarà conèixer els següents paràmetres: la posició i l'orientació de l'eina del robot a l'inici i en el punt final desitjat, el temps desitjat

I és que el paper testimonial i marginal que tindrien els grups de joves cineastes llibertaris o el mateix Mateo Santos i els seus afins en els afers cinematogràfics llibertaris

La contextualització de l’Ateneu dins uns paràmetres culturals, uns esdeveniments polítics, una pulsió entre els sectors dirigents de la monarquia restauracionista, entre

L’objectiu, per tant, és analitzar els paràmetres generals relacionats amb els problemes historiogràfics i la identitat nacional com una construcció política,