1 / 22

FUNCIONES EN C PROF. ADDYS DE LAM

FUNCIONES EN C PROF. ADDYS DE LAM. OBJETIVOS DEFINIR QUE ES UNA FUNCIÓN Y CUAL ES SU FORMATO. CODIFICAR FUNCIONES, SU FORMA DE ACCESO, DECLARACIONES Y AMBITO DE LAS VARIABLE. UTILIZACIÓN DE LAS FUNCIONES EN PROGRAMAS COMPLETOS EN C. CREAR FUNCIONES COMO PARTE DE LIBRERIAS. FUNCIONES

Download Presentation

FUNCIONES EN C PROF. ADDYS DE LAM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FUNCIONES EN C PROF. ADDYS DE LAM Dra. Addys de Lam

  2. OBJETIVOS • DEFINIR QUE ES UNA FUNCIÓN Y CUAL ES SU FORMATO. • CODIFICAR FUNCIONES, SU FORMA DE ACCESO, DECLARACIONES Y AMBITO DE LAS VARIABLE. • UTILIZACIÓN DE LAS FUNCIONES EN PROGRAMAS COMPLETOS EN C. • CREAR FUNCIONES COMO PARTE DE LIBRERIAS. Dra. Addys de Lam

  3. FUNCIONES Una función es un segmento de programa que realiza determinadas tareas bien definidas. Las funciones en C son porciones de código que devuelven uno o ningún valor. . DEFINICION DE UNA FUNCION Tiene tres componentes principales: la primera línea, la declaración de argumentos y el cuerpo de la función. FORMATO: tipo nombre (argumento formal 1, ........argumento formal n) declaración de los argumentos formales { cuerpo de la función } Se devuelve información desde la función hasta el punto del programa desde donde se llamó mediante la sentencia return y devuelve el control al punto de llamada. FORMATO: return expresion ; Se devuelve el valor de expresión al punto de llamada. ( expresión es opcional). Dra. Addys de Lam

  4. Funciones sin argumentos Cuando la función no recibe parámetros se declara con void entre paréntesis o paréntesis vacios. Ejemplo: int decide(void) ó int decide( ) { ... }{ ... } Accede: resp = decide(); Dra. Addys de Lam

  5. EJEMPLO 1: Función para convertir un carácter de minúscula a mayúscula. minusc_a_mayusc (c1) /* primera línea */ char c1; /* declaración de argumento */ { char c2; c2 = ( c1 > = ‘a’ && c1 < = ‘z’) ? ( ‘A’+ c1 - ‘a’) : c1; return (c2); } /* Fin del cuerpo de la función */ NOTA: La primera línea no tiene especificado el tipo, asume un valor entero. Dra. Addys de Lam

  6. EJEMPLO 2: Función que determina el mayor de dos cantidades enteras. void maximo ( x,y ) /* Declaración de argumentos formales */ int x, y; { int z; z = (x > = y ) ? x : y; printf (“\n\nValor maximo = %d”, z); return; } NOTA: void indica que la función no devuelve nada. Dra. Addys de Lam

  7. EJEMPLO 3: Función que calcula el factorial de un número entero positivo dado. long int factorial ( n ) int n; { int i; long int prod = 1; if ( n> 1) for ( i= 2; i <= n; ++i ) prod * = i; return ( prod); } Dra. Addys de Lam

  8. ACCESO A UNA FUNCION: FORMATO: nombre de la función ( argumento actual 1,......., argumento actual n) ó nombre de la función ( ) EJEMPLO 1: Convierte un carácter de minúscula a mayúscula. #include < stdio.h> main ( ) { char minusc, mayusc; char minusc_a_mayusc(char minusc);/* declaración de la función */ printf ( “Entre una letra minuscula:”); scanf (“%c”, &minusc); mayusc = minusc_a_mayusc ( minusc);/* acceso a la función */ printf (“\nLa mayuscula equivalente es %c\n\n, mayusc); } minusc_a_mayusc (c1) /* primera línea */ char c1; /* declaración de argumento */ { char c2; c2 = ( c1 > = ‘a’ && c1 < = ‘z’) ? ( ‘A’+ c1 - ‘a’) : c1; return (c2); } Dra. Addys de Lam

  9. EJEMPLO 2: Determinar el mayor de tres cantidades: #include < stdio.h > main ( ) { int a, b, c, d; printf ( “\na =”); scanf (“%d”, &a); printf ( “\nb =”); scanf (“%d”, &b); printf ( “\nc =”); scanf (“%d”, &c); d = maximo ( a, b); /* acceso a la función */ printf (“\nMaximo es %d”, maximo(c, d)); /* acceso a la función */ getch(); } maximo ( x,y ) /* determina el mayor de dos cantidades */ int x, y; { int z; z = (x > = y ) ? x : y; return (z); } Dra. Addys de Lam

  10. DECLARACIONES DE FUNCIONES En principio, en C, la declaración de una función se puede hacer de tres maneras: a) Mediante una llamada a la función. En efecto, cuando una función es llamada sin que previamente haya sido declarada o definida, esa llamada sirve como declaración suponiendo int como tipo del valor de retorno, y el tipo de los argumentos actuales como tipo de los argumentos formales. Esta práctica es muy peligrosa (es fuente de numerosos errores) y debe ser evitada. b) Mediante una definición previa de la función. Esta práctica es segura si la definición precede a la llamada, pero tiene el inconveniente de que si la definición se cambia de lugar, la propia llamada pasa a ser declaración como en el caso a). c) Mediante una declaración explícita, previa a la llamada. Esta es la práctica más segura y la que hay que tratar de seguir siempre. La declaración de la función se hace mediante el prototipo de la función, bien fuera de cualquier bloque, bien en la parte de declaraciones de un bloque. Dra. Addys de Lam

  11. La forma general del prototipo de una función tipo_valor_de_retornonombre_funcion (lista de tipos de argumentos); Ejemplo: intercambia los valores de dos variables. void permutar(double x, double y) /* Paso por valor */ { double temp; temp = x; x = y; y = temp; } Dra. Addys de Lam

  12. La función anterior podría ser llamada y comprobada de la siguiente forma: #include <stdio.h> void permutar(double, double); void main() { double a=1.0, b=2.0; printf("a = %lf, b = %lf\n", a, b); permutar(a, b); printf("a = %lf, b = %lf\n", a, b); /*No se refleja el cambio porque es por valor */ } Dra. Addys de Lam

  13. #include <stdio.h> #include <conio.h> main () { int potencia(int); /* Declaración del prototipo de la función potencia*/ int suma,n,i; clrscr(); printf("\n \t Entre el valor final de la serie:"); scanf(" %d",&n); suma =1; printf ("\n \t La serie es: %d ",suma); /* Calculo de la sumatoria de la serie */ for(i=2;i<=n;i++) suma += potencia(i); /* Llamado a ejecucion de la funcion potencia*/ /* Visualizacion del resultado final*/ printf("\n \t La sumatoria de Potencias es: %d ",suma); getch(); return 0; } Dra. Addys de Lam

  14. Función potencia /* Definición de la función potencia*/ int potencia(int e) { /* Declaraciones Locales */ int pot,a; /* Valor inicial de la potencia */ pot = e; /* Calculo de la base pot elevado a la potencia e */ for (a=2;a<=e;a++) pot *= e; /* Visualización de los siguientes términos de la serie */ printf(" + %d ", pot); return pot; } Dra. Addys de Lam

  15. EJEMPLO: Función para obtener el cuadrado de 1 a 10 #include<stdio.h> int cuadrado (int ); /*Prototipo de Función*/ main() { int x; clrscr(); for (x=1; x<=10; x++) printf("%d ", cuadrado(x)); printf("\n"); getch(); return 0; } /*Definición de la función*/ int cuadrado (int y) { return y*y; } Dra. Addys de Lam

  16. Mayor de tres cantidades : prototipo #include <stdio.h> main ( ) { int a, b, c, d; int maximo(int,int); printf ("\na ="); scanf ("%d", &a); printf ( "\nb ="); scanf ("%d", &b); printf ( "\nc ="); scanf ("%d", &c); d = maximo ( a, b); /* acceso a la función */ printf ("\nMaximo es %d", maximo(c, d)); /* acceso a la función */ getch(); } maximo ( int x, int y ) /* determina el mayor de dos cantidades */ { int z; z = (x >= y ) ? x : y; return (z); } Dra. Addys de Lam

  17. USO DE FUNCIONES EXTERNAS ARCHIVOS DE CABECERA DEFINIDOS POR EL USUARIO • Crear la función, compilar y guardar con extensión c. • Cuando se desea utilizar deberá incluirse con la directriz #include. • El archivo debe estar entre “ “ (comilla doble). Dra. Addys de Lam

  18. EJEMPLO1. Se crea la función que calcula el cuadrado. int cuadrado (int y) { return y*y; } 2. Se guarda como cuadrado.c Dra. Addys de Lam

  19. 3. Se utiliza cuadrado.h #include <stdio.h> #include “cuadrado.c” main() { int x; for (x=1; x<=10;x++) printf (“%d”, cuadrado(x)); printf (“\n”); getch(); return 0; } Dra. Addys de Lam

  20. multiplicar(int a,int b) { int mult; mult = a*b; return mult; } double elevar_num(int a) { double elevacion; elevacion = a*a; return elevacion; } suma(int a,int b) { int sum; sum = a+b; return sum; } restar(int a,int b) { int res; res = a-b; return res; } EJEMPLOARCHIVO: MATEMATI.C Dra. Addys de Lam

  21. #include "d:\cursos\programa\matemati.h" #include <conio.h> #include <stdio.h> #define PI 3.1416 void main() { int a,b,opc,resp, radio; double area, areatotal, res; do { clrscr(); printf("\n\t\t***MENU***"); printf("\n\t1.Sumar"); printf("\n\t2.Restar"); printf("\n\t3.Multiplicar"); printf("\n\t4.Elevar"); printf("\n\t5.Area de un circulo"); printf("\n\t6.Salir"); printf("\n\tEscoger opción -->\t "); scanf("%d",&opc); if (opc>=1&&opc<=3){ printf("Introduzca dos números separados por coma (#,#)\t"); scanf("%d,%d",&a,&b); } switch(opc) { case 1: clrscr(); resp = suma(a,b); printf ("\nLa suma de %d + %d = %d",a,b,resp); getch(); break; case 2: clrscr(); resp = restar(a,b); printf ("\nLa resta de %d - %d = %d",a,b,resp); getch(); break; PROGRAMA PROGRAMA.C Dra. Addys de Lam

  22. case 3: clrscr(); resp = multiplicar(a,b); printf ("\nLa Multiplicación de %d * %d = %d",a,b,resp); getch(); break; case 4: clrscr(); printf("Introduzca el numero para elevar al cuadrado\t"); scanf("%d",&a); res=elevar_num(a); printf("\nEl numero elevado es %.2f",res); getch(); break; case 5: clrscr(); printf("Introduzca el radio\t"); scanf("%d",&radio); area = elevar_num(radio); areatotal= PI * area; printf("\nEL area del circulo es:%.2f ",areatotal); getch(); break; case 6: clrscr(); printf("Usted escogio salir"); getch(); break; default: clrscr(); printf("Valor fuera de rango...inténtelo de nuevo"); getch(); } }while(opc!=6); } PROGRAMAPROGRAMA.C Dra. Addys de Lam

More Related