Fundamentos de Informtica - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Fundamentos de Informtica

Description:

Una funci n es un bloque de c digo al que ponemos un nombre, y que realiza una ... llamada a una funci n es equivalente a copiar el c digo de la funci n en la ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 32
Provided by: rodrigolv
Category:

less

Transcript and Presenter's Notes

Title: Fundamentos de Informtica


1
Fundamentos de Informática
  • Funciones

Rodrigo Álvarez Virgós (rodri.virgos_at_gmail.com)
2
Definición (I)
  • Una función es un bloque de código al que ponemos
    un nombre, y que realiza una determinada tarea.
  • Las funciones reciben unos datos de entrada
    (llamados parámetros), procesa estos datos, y
    devuelve un sólo dato de salida.

3
Definición (II)
  • Aunque no lo parezca, las funciones no son algo
    nuevo para nosotros, siempre las hemos usado.
  • printf, scanf, puts, sqrt, pow son funciones que
    nos brinda el lenguaje C.
  • Ahora veremos cómo hacer nuestras propias
    funciones.

5.0
pow
25.0
2.0
4
Sintaxis (I)
  • lttipogt nombre función (lttipogt nombre parámetro1,
    lttipogt nombre parámetro2, )
  • Hay que escribir el tipo para cada uno de los
    parámetros, aunque sean todos del mismo tipo
  • int funcion (int a, b, c)
  • int funcion (int a, int b, int c)

5
Sintaxis (II)
  • Una función puede no recibir ningún valor. Si es
    el caso, se escribe void como único parámetro
    (o nada, omitiendo el void).
  • Las funciones pueden no devolver ningún valor. En
    este caso se escribe también void como tipo de
    salida.

6
Nombres de funciones
  • float dividir (int dividendo, int divisor)
  • char a_mayusculas (char caracter)
  • int pedir_opcion_menu (void)
  • float decimales (float numero)
  • void mostrar_cabecera ()
  • void f (float a, char b, int c, int d)

7
Funcionamiento (I)
  • Para usar una función en un programa, hay que
  • Declarar el prototipo de la función.
  • Declarar el cuerpo de la función e implementar
    su comportamiento.
  • Invocar a la función.

8
Funcionamiento (II)
  • include ltstdio.hgt
  • float doble (float)
  • int main ()
  • float a, b
  • printf(Dame un numero ) scanf(f, a)
  • b doble (a)
  • printf(2f f, a, b)
  • float doble (float cantidad)
  • return (cantidad 2)

9
Definición y cuerpo
  • El cuerpo de una función es la función
    propiamente dicha.
  • Contiene el código del algoritmo que usa la
    función, y obtiene un resultado.
  • int primer_divisor (int n)
  • int divisor 2
  • while (n divisor ! 0)
  • divisor
  • return divisor

10
Invocación (I)
  • La llamada a una función es equivalente a copiar
    el código de la función en la línea en la que se
    invoca.
  • Cuando el compilador encuentra la invocación a
    una función, salta a la primera línea de la
    función, hasta el return, y vuelve a la
    sentencia siguiente a la que hace la llamada.

11
Invocación (II)
  • void main()
  • mostrar_mensaje(Hola, Manolo)
  • void mostrar_mensaje(char mensaje, char
    usuario)
  • mostrar_nombre (usuario)
  • printf(s \n, mensaje)
  • return
  • void mostrar_nombre(char nombre)
  • printf(s dice , nombre)
  • return

12
Ejemplo funcionamiento (I)
  • int main()
  • int numero1, numero2, mayor
  • puts(Dame dos números )
  • scanf(dd, numero1, numero2)
  • mayor calcular_mayor (numero1, numero2)
  • printf(El mayor es d, mayor)
  • return 0
  • int calcular_mayor (int a, int b)
  • if (a gt b) return a
  • return b

13
Ejemplo funcionamiento (II)
  • int main()
  • int n1, n2, m
  • puts(Dame números )
  • scanf(dd, n1, n2)
  • m calcular_mayor(n1, n2)
  • printf(El mayor de d y d es d, n1, n2, m)
  • return 0
  • int calcular_mayor(int a, int b)
  • if (a gt b) return a
  • else return b
  • int main()
  • int n1, n2, m
  • puts(Dame 2 números )
  • scanf(dd, n1, n2)
  • if (n1 gt n2) m n1
  • else m n2
  • printf(El mayor de d y d es d, n1, n2, m)
  • return 0

Mismo código con y sin función
14
Prototipos (I)
  • El compilador lee las líneas de código una a una
    y de arriba abajo.
  • Cuando encuentra la invocación a una función, el
    compilador es incapaz de procesar el nombre de la
    función (el cuerpo está debajo del main).
  • Escribiendo el prototipo, el compilador sabe que
    después del main habrá definida una función con
    ese nombre.

15
Prototipos (II)
  • En el prototipo no se escribe ningún
    comportamiento, sólo el nombre, el tipo de
    entrada y el tipo de los parámetros.
  • int doble (int valor)
  • float raiz_enesima (float, int)
  • long int factorial (int)
  • char a_mayusculas (char)
  • int a_decimal (int numero_binario)

16
Prototipos (III)
  • include ltstdio.hgt
  • float doble (float)
  • int main ()
  • float a, b
  • printf(Dame un numero ) scanf(f, a)
  • b doble (a)
  • printf(2f f, a, b)
  • float doble (float cantidad)
  • return (cantidad 2)

17
Parámetros
  • Ante todo, los parámetros son variables como
    otras cualquiera.
  • Son los datos de entrada de la función (la
    función los necesita para operar con ellos y
    devolver un resultado).
  • Hay dos tipos de parámetro
  • Parámetros por valor.
  • Parámetros por referencia.

18
Parámetros por valor (I)
  • Son una copia de la variable o constante que se
    pasa a la función en la invocación.
  • El parámetro es una variable independiente del
    main. Cuando se modifica el valor de un
    parámetro, las variables del main permanecen
    inalteradas.

19
Parámetros por valor (II)
  • void main (void)
  • float real 5.21478
  • printf(Antesf\n, real)
  • modificar (real)
  • printf(Despuesf\n, real)
  • void modificar (float numero)
  • numero 1.547

real 5.21478
numero 5.21478
numero 1.547
20
Parámetros por referencia (I)
  • Las referencias no son copias, sino que son alias
    de los valores pasados a la función.
  • El parámetro y su argumento son la misma
    variable. Si se cambia el valor del parámetro se
    cambia tanto dentro como fuera de la función.

21
Parámetros por referencia (II)
  • Para indicar que un parámetro es una referencia
    se indica con el símbolo
  • Ejemplo
  • void ejemplo_funcion(int a, int b)
  • a es una copia y b una referencia
  • Cuando pasamos un array por parámetro, éste ya es
    un alias y no es necesario poner

22
Parámetros por referencia(III)
  • void main (void)
  • float real 5.21478
  • printf(Antesf\n, real)
  • modificar (real)
  • printf(Despuesf\n, real)
  • void modificar (float numero)
  • numero 1.547

real 5.21478
real 5.21478 numero
real 1.547 numero
real (y por tanto numero) cambia
23
Parámetros por referencia (IV)
  • void main (void)
  • float r3 5.21, 8.95, 0.847
  • printf(Antes f f f\n, r0, r1, r2)
  • modificar (reales)
  • printf(Despues f f f\n, r0, r1, r2)
  • void modificar (float n)
  • n0 n2 n1 0.021 n2 1478.0

24
Resultado de las funciones (I)
  • Una función debe devolver un valor siempre.
  • Para ello se usa la palabra return.
  • return ltvalorgt si la función devuelve int,
    float, char, etc.
  • return si la función devuelve void.
  • Es el punto de salida de la función, cuando el
    compilador encuentra esta palabra, la función
    termina.

25
Resultado de las funciones (II)
  • char a_mayusculas (char caracter)
  • if ((caracter gt a) (caracter lt z))
  • return (caracter 32) printf(Tonto el que
    lo lea\n)
  • return caracter

26
La función main (I)
  • main (principal) es una función más, que se
    invoca automáticamente cuando se ejecuta un
    programa, no necesita invocación explícita dentro
    del código.
  • Las funciones también son llamadas subprogramas,
    ya que una función es una subordinada de otra
    función la función main.

27
La función main (II)
La función main solemos declararla como int,
pero podría devolver cualquier tipo de valor.
  • include ltstdio.hgt
  • void main(void)
  • printf(Hola, mundo!!)
  • return
  • include ltstdio.hgt
  • int main(void)
  • printf(Hola, mundo!!)
  • return 0

28
Ámbito de las variables (I)
  • Si se declara una variable dentro de un bloque de
    código, ésta es accesible sólo dentro de ese
    bloque.
  • Una función declarada dentro de una función es
    accesible sólo dentro de la propia función
    (incluyendo el main).
  • Para que dos funciones compartan una misma
    variable, se usan los parámetros.

29
Ámbito de las variables (II)
  • void main ()
  • float num 74, res
  • restriplicar (num)
  • float triplicar (int i)
  • return (i3)
  • void main ()
  • float num 74, res
  • res triplicar ()
  • float triplicar ()
  • return num3

30
Objetivos de las funciones
  • Separar la lógica de una operación fuera de la
    función main. El main junto con el resto de
    funciones forman lo que se llama programación
    estructurada.
  • Ahorrar código. Una función se puede invocar
    tantas veces como sean necesarias.

31
Ahorro de código
  • void main()
  • int a, b
  • puts(Dame dos numeros)
  • scanf(dd, a, b)
  • printf(Divisor de ad , primer_divisor (a))
  • printf(Divisor de bd , primer_divisor (b))
  • int primer_divisor (int n)
  • divisor 2while (n divisor ! 0)
  • divisor
  • return divisor
  • void main()
  • int a, b, divisor
  • puts(Dame dos numeros)
  • scanf(dd, a, b)
  • divisor 2while (a divisor ! 0)
  • divisor
  • printf(Divisor de ad , divisor)
  • divisor 2while (b divisor ! 0)
  • divisor
  • printf(Divisor de bd , divisor)

Con función
Sin función
Write a Comment
User Comments (0)
About PowerShow.com