![]() |
Mòdul
2
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() ![]() |
Triangles rectangles.
Introducció a les funcions
En aquesta pràctica començarem a crear funcions pròpies.
|
|||||||
![]() |
Desenvolupament de la
pràctica
Definiu un projecte nou anomenat m2p08 i
afegiu-li un fitxer de font C/C++ anomenat m2p08.cpp. Escriviu el
següent codi:
Explicació del programa Una funció és una part de codi independent del programa principal i d'altres funcions. A una funció se la pot cridar enviant-li dades i la funció retornarà un valor. De fet, les funcions poden fer més coses que retornar un sol valor, però això serà tema d'un mòdul posterior. En aquesta pràctica es creen i es fan servir dues funcions: hipotenusa i catet. Ambdues funcions reben dos paràmetres del tipus double i retornen un valor, també del tipus double. Per tal de poder fer servir funcions, aquestes s'han de definir. La definició d'una funció consisteix en el codi necessari per tal que realitzi la tasca encomanada. La definició de la funció hipotenusa() és:
La primera línia rep el nom d'encapçalament (header). Consisteix en el tipus de dada que retorna, en aquest cas double, el nom de la funció i, entre parèntesis i separats per comes, la llista d'arguments amb els tipus corresponents. En aquest cas, el nom de la funció és hipotenusa i té dos arguments del tipus double anomenats c1 i c2. Aquests arguments, anomenats arguments formals han de coincidir en tipus i número (no amb nom) amb els arguments actuals que són els arguments que conté una crida a la funció. La crida a una funció es fa incloent el nom en una expressió o sentència del programa principal o bé d'altra funció. La crida a la funció hipotenusa es fa en aquesta línia:
El segon argument d'aquesta funció de la llibreria estàndard printf() és una crida a la funció creada hipotenusa(). Els dos arguments actuals a i b són dues variables del tipus double, els valors de les quals han estat introduïts amb la funció estàndard scanf() en la línia:
Quan es crida a la funció hipotenusa(), els valors de les variables a i b són copiades en les variables formals c1 i c2 de la definició de la funció. La sentència return permet tornar el control al programa que faci la crida. En aquest cas, la paraula return va seguida d'una expressió del tipus double. El valor d'aquesta expressió serà el valor de retorn. El valor de retorn és un valor únic del tipus declarat en la línia d'encapçalament. En aquest cas, el valor de retorn és el valor de la hipotenusa d'un triangle rectangle de catets c1 i c2, calculada mitjançant el conegut teorema de Pitàgores:
Per tal de poder fer servir la funció hipotenusa, s'ha de declarar prèviament. La declaració de la funció es fa mitjançant el prototipus de la funció. Es fa normalment fora de la funció main(). C++ obliga a declarar explícitament una funció abans de cridar-la. El prototipus de la funció hipotenusa() és:
El prototipus d'una funció consisteix en el tipus de valor de retorn, el nom de la funció i una llista de tipus d'arguments (sense identificadors o noms). Si es posen identificadors, aquests són ignorats pel compilador. El mateix que s'ha dit de la funció hipotenusa es pot dir també de la funció catet. |