PROGRAMACIÓN UNIDAD 1 FUNCIONES

Anuncio
PROGRAMACIÓN
UNIDAD 1
FUNCIONES
Primavera 2010
Contenido
Introducción
Variables locales, globales y estáticas
Paso de parámetros
• Por Valor
• Por referencia
Recursividad
Introducción
Encuentra el Máximo de
x,y,z y w
max = x;
if (y > max)
max = y;
else
if (z > max)
max = z;
else
if (w > max)
max = w;
Encuentra el Máximo
de x,y,z y w
M1=Maximo(x,y)
M2=Maximo(z,w)
M=Maximo(M1,M2)
int Maximo(int x, int y)
{
if (x > y)
return (x);
else
return (y);
}
Introducción
Divide y Vencerás
La
principal idea detrás de las funciones es dividir un
problema en sub-problemas de solución sencilla
Utilizando bloques (funciones) podemos alcanzar la
solución al problema mas fácilmente
Ventajas
Facilitan
la escritura y lectura de programas
Facilitan la reutilización del código.
Desarrollo modular de los programas
Permiten la construcción de bibliotecas
Definición
Una función es un
segmento del
programa que realiza
determinadas tareas
bien definidas
Todo programa en C
consta de una o mas
funciones
Estructura del programa
#include <stdio.h>
Inclusión de
Librerías
int maximo(int x, int y);
Prototipos de
Funciones
main()
{
int a,b,c;
c = maximo (a,b)
return 0;
}
Programa
Principal
int maximo(int x, int y)
{
return
}
Definición de
Funciones
Formato de las funciones
El formato para la declaración de
funciones es:
tipo-devuelto nombre-de-función(lista-de-parámetros)
{
declaraciones e instrucciones
}
Ejemplo de función
El factorial se define como:
!= 1 ⋅ 2 ⋅ 3 ⋅ L ( − 1) ⋅ int factorial(int N)
{
int f = 1;
int i;
for(i=2; i<=N; i++)
f *= i;
return f;
}
Acceso a una función
Se puede acceder (llamar) a una función especificando
su nombre seguido de sus lista de parámetros
encerrados en paréntesis y separados por comas.
Ejemplo:
factorial(m);
maximo(x,y);
La llamada a la función puede aparecer sola o como
parte de una expresión mas compleja
x = factorial(m)*factorial(n);
Acceso a una función
Los argumentos que aparecen el la llamada de la
función se denominan argumentos actuales
Los argumentos que aparecen en la definición de la
función son llamados argumentos formales.
Debe existir una argumento actual por cada
argumento formal.
Los argumentos actuales pueden ser variables
simples, constantes o expresiones
Ejemplo
#include <stdio.h>
#include <stdlib.h>
Este
programa
calcula el
cubo de los
10 primeros
números
naturales
int cubo(int a);
argumento
formal
int main(){
int i,x;
for(int i = 1; i <= 10 ; i++)
argumento
{
actual
x = cubo(i);
printf("El cubo de %i es %i\n",i,x);
}
system("pause");
return 0;
}
int cubo(int a)
{
return (a*a*a);
}
Ejemplo
#include <stdio.h>
#include <stdlib.h>
int fact(int N);
Este
programa
calcula los
coeficientes
de la
expansión de
un binomio a
la potencia
N.
int main(){
int p;
printf("Teclee la potencia del binomio: ");
scanf("%i",&p);
printf("Los coeficientes son: ");
for(int i= 0; i<=p ; i++)
printf("%i ",fact(p)/(fact(p-i)*fact(i)));
printf("\n");
system("pause");
return 0;
}
argumento
int fact(int N)
{
int i,f =1;
for(i=2; i<=N; i++)
f *= i;
return f;
}
actual
Ejemplo
#include <stdio.h>
#include <stdlib.h>
Este
programa
encuentra el
numero mas
grande de 3
números
int maximo(int x, int y);
int main(){
int a,b,c,d;
printf("a = ");scanf("%i",&a);
printf("b = ");scanf("%i",&b);
printf("c = ");scanf("%i",&c);
d = maximo(a,b);
printf(“El maximo numero es %i \n“,maximo(d,c));
system("pause");
return 0;
}
int maximo(int x, int y)
{
if (x > y)return (x);
else return(y);
}
Ejemplo
#include <stdio.h>
#include <stdlib.h>
Este
programa
encuentra el
numero mas
grande de 3
números
int maximo(int x, int y);
int main(){
int a,b,c,d;
printf("a = ");scanf("%i",&a);
printf("b = ");scanf("%i",&b);
printf("c = ");scanf("%i",&c);
d = maximo(maximo(a,b),c);
printf(“El maximo numero es %i \n“,d);
system("pause");
return 0;
}
int maximo(int x, int y)
{
if (x > y)return (x);
else return(y);
}
Variables
Las variables son objetos que pueden cambiar su
valor durante la ejecución de un programa
Existen tres tipos de variables
Locales
Globales
Estáticas
Las variables locales son objetos definidos tanto en
el programa principal como en las funciones. Su
alcance se limita a al programa principal o función
Variables locales
Cada variable local definida en una función
comienza a existir solo cuando se llama a esa
función
Esta variable desaparece cuando el control regresa
al programa principal
Debido a que no retiene su valor, debe ser
inicializada cada vez que se ejecuta la función, de
otra manera contendrá basura
Ejemplo
#include <stdio.h>
#include <stdlib.h>
int fact(int N);
Variable local
main()
Variable local
fact()
int main(){
int p;
printf("Teclee la potencia del binomio: ");
scanf("%i",&p);
printf("Los coeficientes son: ");
for(int i= 0; i<=p ; i++)
printf("%i ",fact(p)/(fact(p-i)*fact(i)));
printf("\n");
system("pause");
return 0;
}
int fact(int N)
{
int i,f =1;
for(i=2; i<=N; i++)
f *= i;
return f;
}
Variables Globales
Las variables globales
son objetos definidos
antes del inicio del
programa principal y
su alcance es muy
amplio, ya que tiene
influencia tanto en el
programa principal
como en las funciones
#include <stdio.h>
#include <stdlib.h>
int x;
int suma(int a);
main()
{
x = suma(5);
}
int suma(int a)
{
int b
b = a + x;
return b;
}
Variables
globales
Conflicto entre variables
Las variables locales tiene prioridad sobre las
variables globales que cuentan con el mismo
nombre
Si la función hace referencia a una variable global
que tiene el mismo nombre que una variable local
entonces deberá incluirse el operador :: antes de la
variable. Ejemplo:
::suma
Ejercicio
#include <stdio.h>
#include <stdlib.h>
int f1(int x);
int k = 5;
int main(){
int i;
for(i = 1; i <= 3; i++)
f1(i);
system("pause");
return 0;
}
int f1(int x)
{
int k = 2;
k += x;
printf(“El valor de la variable local es %d”,k);
::k += x;
printf(“El valor de la variable global es %d”,k);
return k;
}
Operador Void
El operador void indica que no existe ninguna
salida de la función
Ejemplo:
void
printf();
void intercambio(int x, int y);
También se usa para indicar la ausencia de
parámetros de entrada.
Ejemplo:
int
main(void);
int pop(void);
Paso de parámetros
Los parámetros son las variables de entrada a la
función y son el medio de comunicación entre las
funciones y el programa principal
Los parámetros pueden ser pasados a la función
por:
valor
El
valor de la variable es copiado al parámetro de
entrada. Si este se ve modificado dentro de la función, este
cambio no se vera reflejado en el programa principal
referencia
Parámetro por valor
#include <stdio.h>
void modificar(int a);
main()
{
int a = 2;
printf(“a = %d antes de llamar a la función”,a);
modificar(a);
printf(“a = %d despues de llamar a la función”,a);
}
void modificar(int a)
{
a *=3;
printf(“Valor de a dentro de la función es %d”,a);
}
Ejemplo
Calcule el valor del seno(x) para x de 0 a 45
grados en paso de 5 usando la siguiente formula
3
5
7
x
x
x
sen x = x − + − + ...
3! 5! 7!
La formula supone que x se encuentra en radianes
Utilice al menos una función
Ejemplo
• Se debe
convertir los
Conversión
grados a
de grados
radianes
inicialización x = 0
x <= 45
ciclo
seno
• Es un proceso
iterativo de 0
a 45 en paso
de 5
• calculo del
seno
convertir grados
en radianes
calcula seno(x)
x = x+5
FIN
Ejemplo
x3 x5 x7
sen x = x −
+
−
+ ...
3! 5! 7!
float seno(float x)
{
float fact = 1, pot = x, serie = x;
int signo = -1;
for(int i = 3; i <=50 ; i +=2)
{
fact *= (i-1)*i;
pot *= x*x;
serie += signo*pot/fact;
signo = -signo;
}
return serie;
}
Descargar