programación: funciones
TRANSCRIPT
![Page 1: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/1.jpg)
Programación 1
Modularización: funciones y parámetros
Angel Vázquez-Patiñ[email protected]
Departamento de Ciencias de la ComputaciónUniversidad de Cuenca
5 de diciembre de 2016
![Page 2: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/2.jpg)
05/12/16 Angel Vázquez-Patiño 2/42
Objetivos
1) Conocer el concepto de función
2) Conocer el concepto de parámetro
3) Definir funciones en Java
4) Comprender las variables locales y su ámbito
5) Comprender las variables globales y su ámbito
![Page 3: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/3.jpg)
05/12/16 Angel Vázquez-Patiño 3/42
Funciones
![Page 4: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/4.jpg)
05/12/16 Angel Vázquez-Patiño 4/42
Divide et impera
Resolver un problema difícil dividiéndole en partes más simples
![Page 5: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/5.jpg)
05/12/16 Angel Vázquez-Patiño 5/42
Divide et impera
Tantas veces hasta que la resolución sea obvia
![Page 6: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/6.jpg)
05/12/16 Angel Vázquez-Patiño 6/42
Función
Definición● Subalgoritmo, parte de un algoritmo principal
que permite resolver una tarea específica● Puede ser invocada desde otras partes del
algoritmo cuantas veces se necesite● Puede recibir valores (parámetros o
argumentos)● Puede devolver valores
![Page 7: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/7.jpg)
05/12/16 Angel Vázquez-Patiño 7/42
Función
5 25
![Page 8: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/8.jpg)
05/12/16 Angel Vázquez-Patiño 8/42
Función
Función resultado <- Potencia (base, exponente)
resultado <- base ^ exponente;
FinFunción
Algoritmo funcionPotencia
Definir base, exponente Como Entero;
Escribir "Ingrese Base: ";
Leer base;
Escribir "Ingrese Exponente: ";
Leer exponente;
Escribir "Resultado: ", Potencia(base, exponente);
FinAlgoritmo
![Page 9: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/9.jpg)
05/12/16 Angel Vázquez-Patiño 9/42
Función
En Java● Método● Deben estar dentro de clases
public class tiposDeDatos {
public static void main (String args[]) {
System.out.println(“Hola mundo.”);
}
}
![Page 10: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/10.jpg)
05/12/16 Angel Vázquez-Patiño 10/42
Función
Cómo nombrar una función● Letras del alfabeto inglés, dígitos y el carácter _● El primer carácter no puede ser número● No usar palabras reservadas● Usar nombres descriptivos (nemotécnicos)● No usar el mismo nombre de las funciones
para variables ni viceversa
![Page 11: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/11.jpg)
05/12/16 Angel Vázquez-Patiño 11/42
Ejemplo guiado 1
Problema: calcular el cubo de un número
public class Principal {
public static int cubo(int numero) {
return numero * numero * numero;
}
}
Nombre ParámetroTipoTipo
Para devolver un valor
![Page 12: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/12.jpg)
05/12/16 Angel Vázquez-Patiño 12/42
Ejemplo guiado 1
Uso del método cubo
![Page 13: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/13.jpg)
05/12/16 Angel Vázquez-Patiño 13/42
Ejemplo guiado 1
● Otras formas de llamar a la función cubo
![Page 14: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/14.jpg)
05/12/16 Angel Vázquez-Patiño 14/42
Ejemplo guiado 2
Problema: calcular el área de un triángulo● Para más parámetros, se separa con coma
14/42
![Page 15: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/15.jpg)
05/12/16 Angel Vázquez-Patiño 15/42
Ejemplo guiado 3
Problema: calcular el factorial de 5● Es posible usar funciones sin parámetros
15/42
![Page 16: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/16.jpg)
05/12/16 Angel Vázquez-Patiño 16/42
Ejemplo guiado 4
Problema: mostrar la tabla de multiplicar (1-10) de un número● Un método no necesariamente devuelve un
valor
● En Java se usa void para indicar que el método no devuelve ningún valor. Y no se usa nunca return (porque nunca se devuelve nada)
16/42
![Page 17: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/17.jpg)
05/12/16 Angel Vázquez-Patiño 17/42
Ejemplo guiado 4
Problema: mostrar la tabla de multiplicar (1-10) de un número
17/42
![Page 18: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/18.jpg)
05/12/16 Angel Vázquez-Patiño 18/42
Ejemplo guiado 5
Problema: mostrar la tabla de multiplicar del 7● Es posible definir métodos sin parámetros ni
valores de retorno
18/42
![Page 19: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/19.jpg)
05/12/16 Angel Vázquez-Patiño 19/42
Ejercicio propuesto 1
● Definir un método que reciba un número entero y devuelva true si dicho valor es impar y false si es par
● Utilizar un nombre adecuado para la función, i.e., un nombre nemotécnico
19/42
![Page 20: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/20.jpg)
05/12/16 Angel Vázquez-Patiño 20/42
Ejercicio propuesto 1
20/42
![Page 21: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/21.jpg)
05/12/16 Angel Vázquez-Patiño 21/42
Ejercicio propuesto 2
● Realizar una función que reciba un número entero e imprima en pantalla los valores anterior y posterior a ese número
● No es necesario que el método devuelva ningún valor
21/42
![Page 22: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/22.jpg)
05/12/16 Angel Vázquez-Patiño 22/42
Ejercicio propuesto 2
![Page 23: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/23.jpg)
05/12/16 Angel Vázquez-Patiño 23/42
Ámbito de las variables
23/42
![Page 24: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/24.jpg)
05/12/16 Angel Vázquez-Patiño 24/42
Variables locales
● Las que se crean dentro del ámbito del método (dentro de las llaves del método)
24/42
![Page 25: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/25.jpg)
05/12/16 Angel Vázquez-Patiño 25/42
Variables globales
● Se definen en el programa principal● Por defecto, el ámbito de las variables globales
incluye el ámbito local de las funciones● Existen desde el momento en que se declaran
hasta que termina el programa
25/42
![Page 26: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/26.jpg)
05/12/16 Angel Vázquez-Patiño 26/42
Variables locales vs globales
● Las variables locales tiene un tiempo de vida que dura todo el tiempo que dura la ejecución del método que la contiene. Las variables globales duran todo el tiempo que dura la ejecución de la clase (el programa)
● Las variables globales se inicializan por defecto, e.g., los de tipo entero se inicializan con cero. Las variables locales no se inicializan por defecto.
26/42
![Page 27: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/27.jpg)
05/12/16 Angel Vázquez-Patiño 27/42
Variables locales vs globales
![Page 28: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/28.jpg)
05/12/16 Angel Vázquez-Patiño 28/42
Variables locales vs globales
![Page 29: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/29.jpg)
05/12/16 Angel Vázquez-Patiño 29/42
Variables locales vs globales
¡Identifique!
![Page 30: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/30.jpg)
05/12/16 Angel Vázquez-Patiño 30/42
Variables locales vs globales
¿Es correcto?
![Page 31: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/31.jpg)
05/12/16 Angel Vázquez-Patiño 31/42
Variables locales vs globales
¿Y ahora?
![Page 32: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/32.jpg)
05/12/16 Angel Vázquez-Patiño 32/42
Variables locales vs globales
● Aunque tanto el caso (1) como el caso (3) del ejemplo funcionan, es mucho más adecuado el caso(1), ya que permite el uso de la función con cualquier variable o valor que se esté utilizando (y no con una en particular)
![Page 33: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/33.jpg)
05/12/16 Angel Vázquez-Patiño 33/42
Variables locales vs globalesnum es en todos los
casos la variable global
![Page 34: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/34.jpg)
05/12/16 Angel Vázquez-Patiño 34/42
Variables locales vs globales
¿Cuál es el resultado?
¿Cuál es la variable global y cuál la local?
![Page 35: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/35.jpg)
05/12/16 Angel Vázquez-Patiño 35/42
Variables locales vs globales
¿Cuál es el resultado?
¿Cuál es la variable global y cuál la local?
![Page 36: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/36.jpg)
05/12/16 Angel Vázquez-Patiño 36/42
Variables locales vs globales
¿Cuál es el resultado?
![Page 37: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/37.jpg)
05/12/16 Angel Vázquez-Patiño 37/42
Variables locales vs globales
¿Cuál es el resultado?
![Page 38: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/38.jpg)
05/12/16 Angel Vázquez-Patiño 38/42
Ejercicio propuesto 3num <- cociente
ac <- num
Repetir
num <- ac
ac <- 0
Mientras num > 0 Hacer
ac <- ac + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que ac < 10
//****************************************
num <- residuo
ar <- num
Repetir
num <- ar
ar <- 0
Mientras num > 0 Hacer
ar <- ar + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que ar < 10
num <- a_d * ac + ar
a_dc_r <- num
Repetir
num <- a_dc_r
a_dc_r <- 0
Mientras num > 0 Hacer
a_dc_r <- a_dc_r + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que a_dc_r < 10
//****************************************
Escribir "Dividendo: ", dividendo, ". Suma: ", aD
Escribir "Divisor : ", divisor, ". Suma: ", a_d
Escribir "Cociente : ", cociente, ". Suma: ", ac
Escribir "Residuo : ", residuo, ". Suma: ", ar
Escribir " "
Escribir " D = d * c + r -> ", aD, " = ", a_dc_r
Escribir " "
Si aD = a_dc_r Entonces
Escribir " División correcta."
Sino
Escribir " División incorrecta."
Fin Si
FinAlgoritmo
Algoritmo pruebaDelNueve
// Versión de Angel Vázquez
Leer dividendo
Leer divisor
cociente <- trunc(dividendo / divisor)
residuo <- dividendo MOD divisor
//****************************************
num <- dividendo
aD <- num
Repetir
num <- aD
aD <- 0
Mientras num > 0 Hacer
aD <- aD + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que aD < 10
//****************************************
num <- divisor
a_d <- num
Repetir
num <- a_d
a_d <- 0
Mientras num > 0 Hacer
a_d <- a_d + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que a_d < 10
![Page 39: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/39.jpg)
05/12/16 Angel Vázquez-Patiño 39/42
Conceptos y términos importantes
● Variable local y variable global● Ámbito de cada tipo de variable● Actuación de Java ante casos en los que
coinciden los nombres de una variable local con los de una variable global
39/42
![Page 40: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/40.jpg)
05/12/16 Angel Vázquez-Patiño 40/42
Conceptos y términos importantes
● Cómo se comporta una función cuando se usa como parámetro una variable de tipo de dato primitivo (¿funciona de manera similar a una variable global?)
● Palabras reservadas en Java que no pueden ser usadas como nombres de funciones o variables
40/42
![Page 41: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/41.jpg)
05/12/16 Angel Vázquez-Patiño 41/42
Referencia
● Departamento de Ciencias de la Computación, 2016. Guía de aprendizaje del MOOC de Fundamentos de Programación: parte II. Universidad de Cuenca, Cuenca, Ecuador.
● Plataforma MOOC Cedia, https://goo.gl/VDWwKV
![Page 42: Programación: funciones](https://reader030.vdocuments.site/reader030/viewer/2022021506/5878428f1a28ab707b8b6b61/html5/thumbnails/42.jpg)
05/12/16 Angel Vázquez-Patiño 42/42
Preguntas