Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porPatricia Olivera Álvarez Modificado hace 10 años
2
06/08/2015 FUNCIONES EN C PROF. ADDYS DE LAM Dra. Addys de Lam
3
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. 06/08/2015 Dra. Addys de Lam
4
06/08/2015 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
5
06/08/2015 Dra. Addys de Lam 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();
6
06/08/2015 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
7
06/08/2015 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
8
06/08/2015 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
9
06/08/2015 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 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
10
06/08/2015 EJEMPLO 2: Determinar el mayor de tres cantidades: #include 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
11
06/08/2015 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
12
06/08/2015 La forma general del prototipo de una función tipo_valor_de_retorno nombre_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
13
06/08/2015 #include 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 */ } La función anterior podría ser llamada y comprobada de la siguiente forma: Dra. Addys de Lam
14
06/08/2015 #include 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
15
06/08/2015 /* 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 Función potencia
16
06/08/2015 #include 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; } EJEMPLO: Función para obtener el cuadrado de 1 a 10 Dra. Addys de Lam
17
06/08/2015 Dra. Addys de Lam #include 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); } Mayor de tres cantidades : prototipo
18
06/08/2015 /*Se declaran dentro de una función*/ /*Se crean al entrar en su bloque y se destruye después de salir*/ #include main() { int fx (void); int x; /* x es local al main */ clrscr(); x=10; printf(" La x en el principal es %d\n", x); fx(); getch(); return 0; } fx() {int x; /* x es local a fx()*/ x = 100; printf("La x en fx() es %d\n",x); } AMBITO: VARIABLES LOCALES Dra. Addys de Lam
19
06/08/2015 /*Visualiza el caracter ASCCI cuyo codigo sea igual al numero ingresado por el usuario*/ #include char ascii(int numero); /* Declaracion de la funcion */ main() { int numero; char caracterascii; clrscr(); printf("Ingrese un codigo ASCII: "); scanf("%d",&numero); caracterascii=ascii(numero); printf("El caracter ASCII que corresponde al codigo %d es %c", numero, caracterascii); getch(); return 0; } char ascii(int numero) { char caracterascii; /* Variable Local*/ caracterascii=(char) numero; return(caracterascii); } AMBITO: VARIABLES LOCALES Dra. Addys de Lam
20
06/08/2015 /*variables globales:*/ /*Se conocen en el programa entero y se pueden usar en cualquier bloque de codigo*/ #include int cont; /*cont es global*/ main() { int func1 (void); int func2(void); clrscr(); cont = 100; printf("Valor de cont en el main: %d\n ",cont); func1(); return 0; } func1() { printf("cont en la funcion1: %d\n ",cont); func2(); getch(); return 0; } func2() { int cont ; /*cont es local*/ for(cont=1; cont<10; cont++) printf("."); getch(); return 0; AMBITO: VARIABLES GLOBALES Dra. Addys de Lam
21
06/08/2015 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). USO DE FUNCIONES EXTERNAS ARCHIVOS DE CABECERA DEFINIDOS POR EL USUARIO Dra. Addys de Lam
22
06/08/2015 EJEMPLO 1. 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
23
06/08/2015 3. Se utiliza cuadrado.h #include #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
24
06/08/2015 EJEMPLO ARCHIVO: MATEMATI.C 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; } Dra. Addys de Lam
25
06/08/2015 PROGRAMA PROGRAMA.C #include "d:\cursos\programa\matemati.h" #include #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; Dra. Addys de Lam
26
06/08/2015 PROGRAMA PROGRAMA.C 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); } Dra. Addys de Lam
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.