Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo tantas veces como queramos sin tener que reescribirlo. En C:
#include ... // Programa principal int main (int argc, char **argv) { ... } // Subprogramas ... // Funciones y procedimientos IMPORTANTE: Los subprogramas sólo se ejecutan cuando son invocados desde el programa principal o desde otros subprogramas.
Para crear un subprograma, lo primero que tenemos que hacer es escribir su cabecera (prototipo), que incluye el nombre del subprograma y su lista de parámetros: float sqrt (float x) ... Además de la cabecera, tendremos que escribir el cuerpo de la función: ... //Calculamos la raíz cuadrada ... //Valor devuelto por la función return ... Una vez que hemos completado la implementación del subprograma, podemos usarlo cuando lo necesitemos:
a = sqrt(4.0) b = 2*sqrt(a+delta) c = 1 /sqrt(b) x=(-b +sqrt(b*b-4*a*c))/(2*a)
c= sqrt(2.33+sqrt(4*b)/34.12) ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgkAAAF9CAIAAAABW2zlAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xuzddbx9VfE3cBHplC4DkA4pEQSkG+nuFmmQ7m4BKQFpkJKWlJYWlJAuQUEQaZQQwef9Y57XcrPPufd7+55z75w/7muftVfM+qxzZ9bMrDUz0n//+9+v5CcRSAQSgUQgEagg8LX3339/jDHGSEwSgUQgEUgEhg8Cn3766ZhjjtnJfL9GMIwyyiid1MhXiUAikAgkAkMMgZFGGqnzGX2189f5NhFIBBKBRGAYIpCyYRguek45EUgEEoERIJCyYQQA5etEIBFIBIYhAikbhuGi55QTgUQgERgBAikbRgBQvk4EEoFEYBgikLJhGC56TjkRSAQSgREgkLJhBADl60QgEUgEhiECKRuG4aLnlBOBRCARGAECKRtGAFC+TgQSgURgGCKQsmEYLnpOORFIBBKBESCQsmEEAOXrRCARSASGIQIpG4bhoueUE4FEIBEYAQIpG0YAUL5OBBKBRGAYIpCyYRguek45EUgEEoERIJCyYQQA5etEIBFIBIYhAikbhuGi55QTgUQgERgBAl8bwftevL722ms/+uijagcTTzzxIossUi25//77//rXv1ZLxhlnnGWWWaZa8uijjz777LPVEsmIVlpppWpuimeeeeaxxx6rETvbbLPNOOOMpVD209/85jeffPJJtdp3vvOdOeecs1py0003yYVXLZlqqqnmn3/+asnvfve7v//979WS0Ucf/Uc/+lG15Mknn3ziiSeqJSOPPPKKK674ta/9D/PPP//8mmuukYCpWg3NKK+WXH/99f/617+qJd/61rfmnXfeasltt9321ltvVUsmnXTSH/7wh9WSe+65529/+1u1ZLzxxltqqaWqJe+9997NN99cyxQ733zzfeMb3yjVPv74YyR99tln1YZzzDHHdNNNVy357W9/q7dqyRRTTLHAAgtUSxqRnHDCCRdbbLFqnd///vcvv/zyXHPNNe2001bL8zkRSAT6D4H+kg3/+c9/8H1/q6T7t6/JhkceeeSll16q1hlttNFwq69+9X8KzeOPP/6nP/2pWodUWHrppaupTAmPP/zhDzWYiJCqbPj3v/+NJOy4Wg2bq8mG++67T2G1zhtvvFGTDQ8++OA//vGPah18H0mjjjpqKXzqqacaScL1xh9//FLnww8/fOCBB2qMGM+tygYEI6kmP0ivmmzAQN99990qSY2yAdo1SSwpYE02vPnmmw899FANyckmm6wqG4xuuFodXdVkA7RNsIZkTTaAqCZl4VOTDVb/9i8+p5xySm3Q/JoIJAL9hMBIOGbmBO0ncLPbvkLg7rvvvvDCC1M29BWe2U8iYONetWE0AtJf/gYi5+KLL24cL0sSgUQgEUgEWh+B/pINr7/++sknn9z6808KE4FEIBFIBBoR6C/Z0DhSliQCPUaAM8Onx82zYSKQCHQXgf7yRXeXjqyfCHSCgENKPp1UyFeJQCLQtwik3tC3eGZviUAikAgMBQRSNgyFVcw5JAKJQCLQtwj0l02pejHNSf99993X9TS3Fhxd33DDDatXCu69914nFN2TcoJ+0UUXXX755V2DiEk6IO9KV3XCjttuscUWjsDfeeedbnI1YrHCCivMPvvsyp3lf/rpp9dee23H590vi+sI7g3UbqhFD7pyCcs9A4e6Vl999WmmmUa5o1YXXXTRq6++6nmCCSZYd911xx133MYRS8k777xz3nnn/epXv3LjD4Xrr7/+pptuWs4Hu7zm5t0dd9wBhyWXXPJ73/uev9H2xRdfbDzTNf3006NEhUMPPbQKZjQZe+yxt99++3g+44wzFl988amnnrpQggZNEBwlYDT9mPhll11mFVZdddXqRFxWcMtkzTXXrBZeffXV//znP9dbbz23K5ANHLc33N1DWLWau4THH3/85ptvXlat+tazm3RuwMVcfHWLzb05WHl2pS6uMhx33HE/+MEPvv/979fa5tdEIBEYLARGxrXd2+rz4V24dV/MRegbbrjBpTBcNUTCrbfeeuyxx7pv5TqVQa+44go867nnnsMop5xyymOOOea6665TMtZYY3l75ZVX4jsYnwtxvuIpWJtbYEqcg3INWPmf//zn0047zVVqzz4410QTTaTyLrvsMvfcc/uKbR111FGYvovTJ5xwAhaGL1fni/Ett9xyr732mkL933XXXRtssAEGuuOOOx588MHAwbtPPPFE4gH/6gSoNdZY49RTTzVN9/vM7mc/+xkOHmNhspijibsYbKYvvPDCbrvtBqLghm7SbbLJJghDrSn85S9/wZcd59eVW+Kuhbt0rZz8IOdIPs/wCfmKYCJwtdVWK4SRQMQSlk0uurVnCu67/fGP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FiUCiUAiMKQRSNnQZHmXXnppGoMXHNGTTTZZkxpZlAgkAonAkEYgZUOT5Z111lk/++wzLxZccMEmr7MoEUgEEoGhjkDKhiYr7GzSVFNN5W86G5qgk0WJQCIwDBBI2dB8kWkMn3/++SKLLNL8dZYmAolAIjCkEUjZ0Hx5l1pqqXHGGWfcccdt/jpLE4FEIBEY0giM9O9//9tpnCE9xx5O7uWXX/7Wt77Vw8bZLBFIBBKBFkZAONE4jdkRjYMfa+/+++9fdtllJ5hggo5IzPJEIBFIBBKBjhD48MMPN99884MPPrijCj0rH3zZ8NZbb62zzjqnnHJKzyaQrRKBRCARGM4IXPfFp88RSH9Dn0OaHSYCiUAi0PYIpGxo+yXMCSQCiUAi0OcIpGzoc0izw0QgEUgE2h6BlA1tv4Q5gUQgEUgE+hyBlA19Dml2mAgkAolA2yOQsqHtlzAnkAgkAolAnyMw+GdYRzil22+//YMPPijVJplkkvnmm2+ErRor/P73v3/ttdcWXXTRwb3tfMcdd7z//vujjz66q9eNRPZVyQsvvPDEE09IRJFJ6/oK0uwnERhWCLSB3rD77rtLqFA+AmgvtthiTz75ZLfWSXCkjTfe+JJLLhEJo1sNGys/88wzq6++emN5V0ruueeeJZZYYpNNNjnmmGO6Ur/Hda6//nqI+dvjHrJhIpAIDGcE2kA2WB63/my347P99tvfddddJ598creW7e6777aDPu2000YaaaRuNWys/Pjjj990002N5V0pOffcc2WGOOecc66++uqu1M86iUAikAgMCgJtYFOCiwQ7Cy+8cADk4c477yxWJltjxpMbb7xx5plnPvDAA8XeYE654YYbhEIiP9Zaay2b9HvvvfePf/zjxx9/vPPOO6+33nqiq77xxhuXXnrpHHPMofwPf/jD97///c0220y3Z555pgAeG264oQDdhvvXv/7185//nFyZccYZqR2zzz773/72NzYu2R1OOukkKeGefvppGskZZ5zx3e9+99BDDxWihPi55ZZbELPTTjtNPPHE1UV9/vnn0aZQpKY//elP884776233nrBBRd89NFHyyyzjP5VRtjFF1/8gx/84IADDqAwuTRuRii/7LLLvvGNb5iOdEOHH374aKONtscee0w66aTR/+WXX06Ruu222zRcZZVV5plnnuq4V1xxxXjjjbf4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y1+effbZah1vpRQcZZRRSqGBDFdDxliR7K+U33fffTIYVqtJWVhLgPjHP/7x7bffrtaRtbCa488rmWInn3zyKpG1ofNrItCIQMqGRkyyZDgisN56680333zVmY8++uhKqnkTZdiWObxax1tJZ6s8XYWbb765hqCkthK1lsI//elPcrjW6kguO91005XC//73v+r88wyVTBcAACAASURBVJ//rFabdtppa7JBSnOsv1pnookmqsmGn/zkJ9KYzzzzzLUR82si0AkCKRs6ASdfDSME8OLTTjut8wlv9sWn8zqrf/HpvM6SX3w6r2ObLyhC53W83X///UdY57MvPiOslhUSgSoC6W/I30MikAgkAolAHYGUDXVE8nsikAgkAolAyob8DSQCiUAikAjUEUjZUEckvycCiUAikAikbMjfQCLwfwhsvvnmQxWINdZY4xvf+MZQnV3Oq58QyHNK/QRsdttmCGy//fZtRnGXyd1oo426XDcrJgL/H4GUDV/6KbzxxhtHHXWUnErV0lFHHfXggw/u1k/mrLPOevfdd3feeedutRqSlc8777zHHnvskEMOcV0gJnj66af/9a9/dfjSxbGuTNnp0ksvvdQlL5XdJNhjjz1GG220WkNpms4888z33nvPza/ddtut9HzXXXddf/31elhppZXmn3/+EQ534YUXGsj9Axtt98W23HLL6o77nnvuufzyyx999FGFiy+++GqrrVZuNpjgBx98UO1/3HHH3WuvvRxFPeOMM1yaaxx60003nWGGGZTfcMMN7kksvfTSpc7tt9+u0K8uZvrxxx+D68gjj1TB/Ql3Gmo/yP/85z8HHHDAnnvuOdZYY5VO0HnBBRe42eBynOO5rkqY0Q477NB4Cc5btyuWWWaZRiKVPPXUU+eee+4RRxwRb4118cUXg8jXCSaYANo6dCXwmmuu2W677Zr2kIVtiYCMmP5zBvFz7bXXupvTXQL8FhdccMHutqrVb+wkbqtOM800LiuVzwILLNDdgdZcc01XYbvbakjW33HHHd26ev/992N2uOTEE0/861//uuuT/e1vf+tfa7LJJptxxhmxIdh+/vnntebrr7++y2WxZC4Y//nPf1bhpptuwqCnn3565V//+texzs4HdbXNPgCPPvTQQw866KA555xzlVVWKU1OOOEEb2eaaaaf/vSnsm6ZBVvNp59+GhXQ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Aj/60Y+qkoC0WHfddYfYHHM6QxKBlA1DcllzUq2CwOqrrz7OOOMUaliTVlpppVYhLulIBDpGIGVDx9jkm0Sg1wjMNddcn3/+eelmlFFG+da3vtXrXrODRKDfEUjZ0O8Q5wDDGQEGpemnn74gsOCCCw5nNHLubYRAyoY2WqwktS0RYFaiLiCdcWmTTTZpyzkk0cMPgZQNw2/Nc8YDiwB3dLnNsOiiiw7s4DlaItBDBFI29BC4bJYIdBGBmWeeOWpONtlkeeWti6BltUFHIGXDoC9BEjD0EZh99tlNkgIx9KeaMxwqCKRsGCormfNoYQTiTsM666zTwjQmaYnAlxBI2ZA/iESg3xFYdtllHVhynrXfR8oBEoE+QiDjKfURkNlNmyPw4YcffvLJJ/00CW6G3//+9++9914/9Z/dDnkERhpppPHHH38gp5myYSDRzrFaF4FFFlmkekmtdQlNyoYlAoI23nzzzQOpeqZsGJY/tJx0AwIff/zxY4891lCcBYlASyCw3nrrUW0HkpT0Nwwk2jlWIpAIJALtgUDKhvZYp6QyEUgEEoGBRCBlw0CinWMlAolAItAeCKRsaI91SioTgUQgERhIBFI2DCTaOVYikAgkAu2BQMqG9linpDIRSAQSgYFEIM+wDiTaOVY7IXD//fdXb8MJmTfxxBN3dwIfffSRW2/jjTfeHHPM0d22fVv/oYce+te//jXmmGN+73vf69ueq729/PLLf/3rXzNNRf8hPGA9p94wYFDnQG2GwIYbbuhCXPnMOeece++9d3fncMkllwix9/e//727DRvrn3322SeddFJjeVdKfvnLX84333zm8otf/KIr9Xtc54ILLlhrrbV63Dwbtg4CqTe0zlokJS2HwK677rr88ssHWdjr0UcfvfDCCy+11FJdJ/S222476qijll566a436agmtjvbbLN19Lbz8kceeWSaaaY5/fTTv/Od73ReM98mAoFAyob8JSQCHSLwjW98gzCI11NMMcX111//hz/8gWz473//e+mllzI6TTDBBD/84Q+jDnPKXXfdNe64495yyy0/+clPZppppmuuuUYPf/nLX6688spVVllFPxSI3/72t9/+9rd/97vf/eMf/1h//fXnmWcee3kNRWktQbw/+OCD0047jRWIcWbLLbccddRRb7/99rfffvull17SlRFRMvfcc5MW0047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059KbR8VXGOec845o5UeovAf//jHXnvtNc000yhfZJFF7r33XuWgPvXUUz0YywSPPfZYqzPPPPP87W9/U2hx4UzrMnGtpLlvnE6WJALDEIGUDV9adJxl1FFHxXc++uijww47DOfdY489HnzwQUaJ6ie2oviph69//evYH8b3ox/96JxzzmHe2WSTTXAlpgxdY/p4N56I6WCIJI1CDfGpGPjzzz8nHqpaAtY8xxxzTDbZZESCmng9MaOH5ZdfXg+o0hB3PuKII5ZbbjmC5/LLLy9zOO6446644goNN9poI0McddRRtd80waMhKbXxxhufe+65hlbhs88+W3vttU888UTjohNJLFrcGLW28ZXIPOCAA0wZSeToMcccc8stt1Rrfvjhh0Ag3hZeeGF1XnvttTXWWGOuuebC5e+8886oyeI/xhhjKDz99NMvvfRSedLVnHTSSbfffvsnn3yy9EYOodBaRAnJFxHHeCPQAHCtZpxxxhNOOOGSSy5Rh2i/8MILN9hgA+YvSxDCDw6ffvqpt4cccsjTTz9tghaIuCLIFfKgPP/883pTiB7CSQ/V6eRzIjA8EUib0pfWfYIJJjj88MMx3LvvvhvXOO2000YeeWTW/45+HN5iKzPPPPOVV16JCfIJ25CqrGTzzTe3XbVzn3jiiWefffZll112xRVXxBA76qqU2/CyeOCwe+65p40wNofRkz020fSVhx56SM2XX36ZYAjC7HZxQ4WYIC6JXdJLfLVfXnPNNffee++pp566dE6P0VA1JXbrq666qgcM94477jAFstDXH/zgB1i/gZZeeunSsDzQXfbdd19CVMlmm232ne98B2HVaoagRWHf888/v/Lxxx9/m222weJXX311G/yHH37Yfp/XnVbhLSk10UQTwYoUHHPMMXfaaadab40EKAEvcNCA6cOK9H3zzTeJcBKCO4FoVIc2wBMTUsFXnpKLLroI5VtvvbWv5r7ppptSRDwTOR523HFHQpGkeeedd5oOmoWJwLBCIGVDfblXXnllm2ibWdxtiimm8Pr444/H7Kr1ME37biVTTjklPuWBgQKLYbKoVqMNYN94sR0uVoUn2rbXx+v0O7lCotjwMvLgdMTVeOONp1uia7HFFoumk0wySTw4R/T666+PPvro8dU+3e5YSZENGrJQ4ftRgSJC6fFs4//uu++W8njLCtRUNtAV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) Todos los cambios que hagamos dentro del subprograma para modificar un parámetro pasado por referencia se reflejarán en el parámetro actual correspondiente. PASO POR VALOR vs. PASO POR REFERENCIA
Una función es un subprograma que devuelve, de forma explícita, un valor: tipo nombre (parámetros formales) { ! Declaraciones locales ... ! Sentencias ejecutables ... ! Valor devuelto return ...; } Ejemplo: Programa modular para sumar dos números int suma (int a, int b) { return a+b; } int main () { int x,y,s; printf(“Escriba 2 números enteros"); scanf(“%d %d”, &x, &y); s = suma(x,y); printf(“La suma es%d", s); return 0; A diferencia de las funciones, no devuelven ningún valor: void nombre(parámetros formales) { //Declaraciones locales ... //Sentencias ejecutables ... } Llamada a la subrutina: nombre(parámetros actuales) Ejemplo: Visualizar un mensaje en pantalla Declaración: void mostrarMensaje(char *mensaje); Uso:
mostrarMensaje(“Mensaje informativo”); Implementación: void mostrarMensaje (char *mensaje) { printf(“MiPrograma v1.0
”); printf(“%sn”, mensaje); }En C sólo existe el paso de parámetros por valor: // Paso de parámetros por valor void sub (int x, int y) { x =x+y; } int main ( ) { int z,t; z=5; t=10; printf("%d %d
",z,t); //5 10 sub(z,t); printf("%d %d
",z,t); //5 10 sub (z,4); printf ("%d %d
",z,t); //5 10 sub(z,2*t+20); printf("%d %d
",z,t); //5 10 sub(3,20); printf("%d %d
",z,t); //5 10 sub(z+32,20); printf("%d %d
",z,t); //5 10 }
El paso de atributos por referencia se puede simular si utilizamos punteros (pasamos como parámetros las direcciones en memoria de las variables que queremos modificar dentro del subprograma): // Paso de parámetros por referencia void sub (int *x, int y) { *x =(*x)+y; } int main ( ) { int z,t; z=5; t=10; printf("%d %d
",z,t); //5 10 sub(&z,t); printf("%d %d
",z,t); // 15 10 sub (&z,4); printf("%d %d
",z,t); //19 10 sub(&z,2*t+20); printf("%d %d
",z,t); //59 10 sub(&3,20); // ERROR sub(&(z+32),20); // ERROR }
#include <stdio.h> int a,b; void MiSub1 (int x, int *y) { int h = x*4; *y = h+ x + 3 + a; } void MiSub2 (int x) { int b = 2*x; a = b + 3; } int main () { a=3; b=4; MiSub1(a,&b); printf(“%d %d”,a,b); MiSub2(32); printf(“%d %d”,a,b);
}
Salida del programa: 3 21 67 21
Se desaconseja el uso de variables globales Si un subprograma requiere utilizar un dato externo,dicho dato ha de pasársele como parámetro al subprograma (para que el subprograma conserve su “independencia”)
static Variables locales de tipo estático void ejemplo () { int x = 3; // = auto int x=3; static inty = 4; ... } La primera vez que ejecutemos el subprograma, se le asignará el valor 3 a la variable ‘x’ y el valor 4 a la variable ‘y’. A partir de ese momento, NO se volverá a asignar a ‘y’el valor 4, sino que se recordará cuál era el último valor de‘y’ en la ejecución anterior del subprograma. Ejercicio: ¿Salida del siguiente programa?
#include <stdio.h> void miSub() { static int x = 4; printf(“%d
”, x); x++; } int main () { miSub(); miSub(); miSub() }- Ejemplo: Intercambio de dos variables enteras
void swap (int *x, int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; } Uso: swap(&a,&b);
Ejemplo: Distancia euclídea entre dos puntos en el plano
#include <stdio.h> #include <math.h> typedef struct Punto2D { float x,y; } Punto2D; float distancia (Punto2D p, Punto2D q)
{ return sqrt((p.x-q.x)*(p.x-q.x) +(p.y-q.y)*(p.y-q.y)); } int main (int argc, char *argv[]) {Punto2D p1, p2; p1.x = 1; p1.y = 1; p2.x = 0;p2.y = 0; printf("Distancia: %f
", distancia(p1,p2)); return 0;
}
|