Programació en C del PIC 16F690 amb PICkit 2

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Funcions

Una funció és un tros de programa que fa una tasca específica. Les funcions permeten definir aquesta tasca (les seves instruccions) en forma separada i després podem fer servir la funció diverses vegades en el mateix programa. Les funcions es caracteritzen pel seu nom.

Quan es fa la crida a una funció se li passen uns paràmetres, és a dir les variables amb les que haurà de fer el càlcul. Normalment la funció retorna un resultat que passa a substituir el nom de la funció en el lloc on se la crida.

Imaginem-nos que volem fer una funció que calcula l'àrea d'un triangle per emprar-la en un programa en el que hem de sumar les àrees de tres triangles. El tros de programa que crida a la funció podria ser:

	...
	total = area(b1, h1) + area (b2, h2) + area(2*sb3, h3);
	...

Cada cop que cridem a la funció, aquesta s'executarà amb els paràmetres enviats. L'equació de dalt sumarà els tres valors obtinguts com a resultat de les tres crides a la funció.

Els paràmetres poden ser variables (b1, b2, etc.) o expressions més complicades (2*sb3).

En la definició de la funció cal especificar el tipus de variable de cada paràmetre i el del resultat. La definició de la funció anterior podria ser:

float area(float base, float altura)
{
	float resultat;
	resultat = (base * altura) / 2;
	return resultat;
}

Dins el parèntesi de la primera línia li definim el nom de les variables que fan de paràmetres dient-li que són de tipus float. També li diem que el resultat de la funció es comportarà com un valor float.

Fixem-nos que els noms dels paràmetres a la definició de la funció són els que farem servir dintre de la definició de la funció però en la línia on la cridem hi podem posar qualsevol altra variable o expressió; serà l'ordre dels paràmetres de la crida el que indicarà a quina variable interna va cada valor. Per exemple en la tercera crida el primer paràmetre és 2*sb3, doncs aquest valor serà el que es guardarà a base durant els càlculs.

En la primera línia dins la funció definim la variable resultat. Aquesta serà una variable local, és a dir que només existeix dins la funció. També són variables locals base i altura.

El valor que retorna la funció és el que posem després de la paraula return.

La funció area la podríem definir de la següent forma (més compacta):

float area(float base, float altura)
{
	return (base * altura) / 2;
}

És important destacar que la funció ha d'estar definida abans de ser cridada.

Una funció pot tenir més d'una sentència return, per exemple:

float modul(float valor)
{
	if (valor >= 0)
		return valor;
	else
		return -valor;
}

En informàtica és freqüent emprar el concepte de funció. La funció és també un tros de programa que fa una tasca específica però que no retorna cap resultat. Per exemple, podem tenir una funció que escrigui una lletra a una posició d'una pantalla. En C les subfuncions són funcions definides com a void (sense tipus). Per exemple:

void escriu_pantalla(int x, int y, char lletra)
{
	...
}

Les funcions void no tenen la sentència return ja que no hi ha cap valor a retornar; la funció s'acaba quan arriba al final.

El programa principal també és una funció que és de tipus void i no té paràmetres:

void main (void)
{
	...
}

Les nostres funcions poden estar en un fitxer separat i així és més fàcil poder-les carregar en tots els programes en els que les necessitem. Per carregar el fitxer de funcions cal fer servir una instrucció #include, tal com es mostra a l'exemple ST.

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.