Programació en C/Procediments i funcions

Procediments i funcions modifica

En la programació C, tot el codi executable resideix dins d'una funció. Una funció és un bloc anomenat de codi que realitza una tasca i llavors torna control a qui l'ha cridat. Fixi's que unes altres llengües de programació poden distingir entre una "funció", "subrutina", "subprograma", "procediment", o " mètode " -- a C, tot això són funcions.

Una funció s'executa sovint (es crida) unes quantes vegades, des d'uns quants llocs diferents, durant una única execució del programa. Després d'acabar una subrutina, el programa tornarà (retorn) al punt de després de la crida.

Les funcions són una eina de programació potent.

Com a exemple bàsic, suposi que està escrivint codi per mostrar els primeres 5 quadrats de nombres, fer una mica de processament intermedi, llavors imprimir (mostrar) els primeres 5 quadrats una altra vegada. Ho podríem escriure així:

...
 for(i=1; i <= 5; i++)
 {
    printf("%d ", i*i);
 }
 ...
 /* Intermediate Processing */
 ...
 for(i=1; i <= 5; i++)
 {
    printf("%d ", i*i);
 }
 ...


Hem d'escriure el mateix bucle dues vegades. Podem voler posar d'alguna manera aquest codi en un lloc separat i simplement saltar a aquest codi quan volem utilitzar-lo. Això quedaria com:


 void Print_Squares()
 {
   int i;
   for(i=1; i <=5; i++)
   {
     print("%d ", i*i);
   }
 }
 int main()
 {
   ...
   Print_Squares();
   ...
   /* Intermediate Processing */
   ...
   Print_Squares();
   ...
 }

Això és precisament el què són les funcions.

Més sobre funcions modifica

Una funció és com una caixa negra. Pren en entrada, fa alguna cosa amb aquesta, llavors torna una resposta.

Fixi's que una funció pot no prendre entrades, o pot no tornar res. En l'exemple citat, si volem fer una funció d'aquell bucle, podem no necessitar entradess, i no estem retornant res (La sortida de text no compta - quan parlem de retornar volem dir dades significatives que el programa pot utilitzar).

Tenim una mica de terminologia per referir-se a funcions:

  • Una funció, anomenada f, que empra una altra funció, anomenada g, es diu que crida g. Per exemple, f crida a g per imprimir els quadrats de deu nombres.
  • Les entrades d'una funció s'anomenen arguments o també paràmetres
  • Una funció g que dóna qualque tipus de resposta a f es diu que retorna la resposta. Per exemple, g retorna la suma dels seus arguments.