Beruflich Dokumente
Kultur Dokumente
13. Definición
de
métodos
A
medida
que
pensamos
en
la
solución
de
problemas
complejos
o
en
la
representación
de
situaciones
que
requieren
de
un
proceso
de
codificación
extensa,
requerimos
de
nuevas
herramientas
que
nos
permitan
descomponer
la
solución
de
un
problema
en
problemas
más
pequeños.
13.1 Descomposición funcional
La
definición
de
métodos
es
una
forma
de
plasmar
en
código
el
resultado
de
la
descomposición
funcional
definida
para
lograr
la
solución
de
un
problema.
La
idea
es
que,
habiendo
definido
una
serie
de
tareas
que
se
deben
cumplir
para
solucionar
un
problema,
se
defina
la
forma
en
la
que
se
deben
representar
estas
tareas
a
través
de
las
estructuras
de
un
lenguaje
de
programación.
13.2 Definición de métodos
Como
se
vio
en
las
lecturas
iniciales,
un
método
es
la
forma
de
representación
del
comportamiento
de
una
clase,
teniendo
en
cuenta
que
estas
definiciones
parten
de
un
lenguaje
de
programación
orientado
a
objetos.
Un
método
no
es
más
que
el
resultado
de
encapsular
un
conjunto
de
instrucciones
que
hacen
parte
de
la
solución
de
un
problema
a
partir
de
un
algoritmo.
Por
lo
tanto,
podemos
pensar
en
ellos,
como
pequeños
algoritmos
que
tienen
responsabilidades
muy
concretas
en
términos
de
calcular
un
valor,
presentar
información
o
realizar
tareas
que
se
hacen
repetidamente
y
es
conveniente
definir
que
puedan
ser
reutilizables.
13.3 Representación de métodos
La
forma
de
representar
un
método
es
muy
similar
a
la
forma
de
representar
un
algoritmo,
dado
que,
como
vimos,
en
esencia,
son
secuencias
de
instrucciones.
Veamos
entonces
cuál
es
la
forma
en
la
que
podemos
representarlos:
Tabla 1. Representación de Métodos en pseudocódigo
Adrian
Nicolás
Malaver
Barrera
La
forma
de
representación
es
la
misma;
sin
embargo
hay
que
tener
ciertas
cosas
en
cuenta:
• No
descuidar
la
definición,
por
lo
menos
general,
de
pre
y
pos
condiciones
que
indiquen
cuál
es
el
conjunto
de
valores
con
los
cuales
es
posible
llegar
a
solución
válida
de
la
fracción
del
problema
de
la
que
es
responsable
cada
método.
• Tener
en
cuenta
que
cuando
se
identifican
tareas
que
se
realizan
varias
veces,
o
desde
varias
partes
con
el
mismo
objetivo,
estas
tareas
serán
candidatas
para
ser
encapsuladas
en
un
método.
• La
idea
es
lograr
una
descomposición
que
permita
presentar
la
solución
de
un
problema
de
una
forma
mucho
más
clara
y
concreta,
no
contar
con
un
conjunto
demasiado
grande
de
métodos
que
realizan
tareas
muy
pequeñas.
Entonces, ¿En qué casos es conveniente usar métodos?
• Cuando
se
identifican
tareas
que
se
repiten
varias
veces
en
el
código
de
un
programa.
Por
ejemplo,
el
cálculo
de
un
promedio,
o
de
una
raíz
cuadrada.
• Cuando
la
forma
de
realizar
alguna
tarea
puede
cambiar.
Por
ejemplo,
cuando
se
hacen
cálculos
basados
en
una
función
matemática,
y
esta
función
puede
cambiar.
• Cuando
el
código
de
un
programa
se
hace
muy
largo
y
complicado.
En
este
caso
se
desea
delegar
responsabilidades
a
varios
métodos
para
que
se
pueden
encargar
de
tareas
importantes
para
la
solución
del
problema
general.
• Cuando
se
encuentra
una
tarea
que
puede
ser
dispendiosa
pero
no
se
relaciona
con
la
lógica
del
problema
que
se
está
solucionando.
Por
ejemplo,
presentar
un
reporte
en
la
pantalla
sobre
los
resultados
obtenidos
en
un
proceso
de
análisis.
Adrian
Nicolás
Malaver
Barrera
Veamos un ejemplo que ilustra el uso de métodos.
Se
desea
comparar
los
resultados
obtenidos
en
el
cálculo
del
límite
de
una
función
en
dos
dimensiones
de
acuerdo
con
tres
métodos
distintos.
Los
resultados
se
calculan
con
base
en
la
diferencia
entre
un
valor
constante
y
los
valores
experimentales
hallados.
Además,
como
resultado
del
análisis,
se
deben
presentar
los
resultados
hallados
con
el
método
más
eficiente.
Como
vimos
inicialmente,
nos
basamos
en
la
descomposición
del
problema
en
problemas
más
pequeños
o
sub
problemas,
que
en
conjunto
deben
solucionar
el
problema
completo.
Una
aproximación
inicial
podría
ser
la
siguiente:
• Calcular
los
límites
con
cada
método
• Comparar
resultados
• Seleccionar
el
método
más
eficiente
• Presentar
resultados
Y
en
una
segunda
revisión,
podemos
identificar
los
métodos
que
requerimos
implementar:
• Calcular
los
límites
con
cada
método
o Método1
o Método2
o Método3
• Comparar
resultados
o Método
de
comparación
• Seleccionar
el
método
más
eficiente
o Método
de
selección
• Presentar
resultados
o Método
para
mostrar
información
Con base en esta lista podemos decir que:
• Debemos
implementar
los
métodos
1,2
y
3.
• Los
métodos
de
comparación
y
selección,
como
no
requieren
una
lógica
complicada,
pueden
hacerse
desde
el
algoritmo
principal.
• El
método
para
mostrar
la
información
hallada
puede
requerir
de
mucho
código
que
no
define
la
solución
del
problema,
por
lo
tanto
vale
la
pena
considerar
su
implementación.
• Algo
que
puede
no
ser
inmediato
es
el
hecho
de
que
cada
método
necesita
evaluar
valores
de
la
función
en
distintos
puntos,
por
lo
tanto,
se
estaría
haciendo
lo
mismo
Adrian
Nicolás
Malaver
Barrera
desde
varias
partes
y
si
la
definición
de
dicha
función
cambiara,
incurriríamos
en
un
conjunto
muy
grande
de
cambios;
por
lo
tanto
requerimos
hacer
esto
en
un
método
externo.
Veamos en una gráfica sencilla las relaciones que definimos:
Diagrama 1. Posibles definiciones de métodos
Algoritmo
principal
Método1
Método2
Método3
Mostrar
Información
Evaluar
función
El
siguiente
paso
es
implementar
cada
método
de
acuerdo
a
lo
que
se
requiere.
Esto
es,
modelar,
especificar
y
codificar
cada
uno
de
los
métodos
como
si
fueran
algoritmos
individuales.
La definición de los métodos iniciales podría entonces, ser la siguiente:
Y para los otros métodos:
Método
MostrarInformación
Método
EvaluarFuncion
Entradas
Entradas
datos : Real[100]
x : Real
Pre:
{…}
Pre:
{…}
Adrian
Nicolás
Malaver
Barrera
Inicio
Inicio
.
.
. .
. .
Fin
Fin
Salidas
Salidas
y : Real
Pos:
{…}
Pos:
{…}
Luego
de
la
implementación
de
cada
método,
el
algoritmo
principal
podría
ser
el
siguiente:
Algoritmo
Limites
Entradas
x : Real
Pre:
{El límite de la función en el punto x existe}
Inicio
datos1 ← Metodo1(x)
datos2 ← Metodo2(x)
datos3 ← Metodo3(x)
MostrarInformación(mejor)
Fin
Salidas
R : Real[100]
Pos:
{…}
Los
métodos
son
invocados
de
la
misma
forma
en
que
se
invocan
los
métodos
generales
definidos
por
el
lenguaje
de
programación
o
que
no
son
del
dominio
de
la
solución
del
problema.
13.4
Ejemplo
de
construcción
de
métodos
orientados
a
la
solución
de
problemas
que
usan
arreglos
y
ciclos
Una
de
las
ventajas
que
presentan
los
arreglos,
es
que
pueden
ser
usados
con
índices
variables,
que
pueden
ser
modificados
con
ayuda
de
ciclos
que
se
“mueven”
sobre
las
estructuras
definidas.
Para
ver
esto
con
más
claridad,
veamos
un
ejemplo
ilustrativo:
Adrian
Nicolás
Malaver
Barrera
Se
requiere
comparar
el
rendimiento
de
10
cursos
de
25
estudiantes
en
los
3
exámenes
parciales
de
matemáticas
del
semestre
anterior.
Para
hacer
el
análisis
se
requiere
presentar
información
relacionada
con
el
promedio
de
cada
curso
en
cada
examen,
el
promedio
general
de
la
nota
definitiva
en
cada
curso
y
las
notas
finales
máximas
en
cada
curso.
A
simple
vista,
el
problema
no
es
muy
simple;
por
lo
tanto
recurriremos
a
un
proceso
inicial
de
descomposición
funcional:
¿Qué
se
debe
hacer?
Leer
información
de
las
notas
de
cada
curso
y
estudiante
Calcular
promedio
de
exámenes
Calcular
la
nota
definitiva
de
los
estudiantes
de
cada
curso
Hallar
las
nota
definitiva
máxima
de
cada
curso
Con
base
en
esta
información,
tenemos
los
siguientes
métodos
como
candidatos
para
ser
implementados:
¿Qué
se
debe
hacer?
Leer
información
de
las
notas
de
cada
curso
y
estudiante
• Método
de
lectura
de
notas
de
cada
curso
• Método
de
lectura
de
notas
de
cada
estudiante
Calcular
promedio
de
exámenes
• Método
para
calcular
promedio
de
notas
parciales
Calcular
la
nota
definitiva
de
los
estudiantes
de
cada
curso
• Método
para
calcular
promedio
de
notas
finales
Hallar
las
nota
definitiva
máxima
de
cada
curso
• Método
para
buscar
el
valor
máximo
Presentar
información
• Método
para
presentar
información
de
cada
estudiante
• Método
para
presentar
información
de
cada
curso
Analizando
la
información
podemos
decir
que
sería
bueno
definir
métodos
para
la
administración
de
la
información
de
cada
curso
teniendo
en
cuenta:
• Lectura
de
notas
por
curso
• Calcular
el
promedio
de
los
exámenes
de
un
curso
• Calcular
el
promedio
de
las
notas
definitivas
de
un
curso
• Buscar
el
valor
máximo
en
un
conjunto
de
notas
• Presentar
información
de
un
curso
Adrian
Nicolás
Malaver
Barrera
Estos
métodos
serán
invocados
desde
el
algoritmo
principal.
Para
el
desarrollo
del
ejemplo,
analizaremos
el
segundo,
el
tercero
y
el
cuarto
método.
Luego
del
proceso
de
modelado
y
especificación
tendremos
el
siguiente
resultado:
Método
Método
CalcularPromedioEx
Método
CalcularPromedioT
Entradas
BuscarValorMaximo
Entradas
Entradas
notas[10][25][3] : Real notas[10][25][3] : Real
curso : Entero
curso : Entero
notas[25] : Real
Pre:
Pre: Pre:
{notas[i]>=0 Y
{notas[i][j][k]>=0 Y {notas[i][j][k]>=0 Y notas[i]<=5, para i
notas[i][j][k]<=5, para i notas[i][j][k]<=5, entre 0 y 24}
entre 0 y 9, j entre 0 y para i entre 0 y 9, Inicio
24 y k entre 0 y 2}
j entre 0 y 24 y k
.
Inicio
entre 0 y 2}
.
. Inicio
.
.
. .
. . .
. . Fin
Fin
Fin
Salidas
Salidas
Salidas
maximo : Real
Promedio[3] : Real
promedio : Real
Pos:
{promedio[i]>=0 Y Pos:
{máximo >= 0 Y
Pos:
{promedio>=0 Y máximo <= 5}
promedio[i]<=5, para i promedio<=5}
entre 0 y 2}
Veamos ahora la definición del primer método:
Método
CalcularPromedioEx
Entradas
notas[10][25][3] : Real
curso : Entero //curso indica el número del curso que
Pre:
{notas[i][j][k]>=0 Y notas[i][j][k]<=5, para i entre 0 y 9, j
entre 0 y 24 y k entre 0 y 2}
Inicio
para i ← 0 hasta 2 hacer
promedio[i] ← 0
fin_para
Adrian
Nicolás
Malaver
Barrera
Algunos comentarios sobre el algoritmo:
• El
primer
ciclo
recorre
cada
posición
del
arreglo
de
salida
y
asigna
un
valor
inicial
de
0
en
cada
posición.
• El
segundo
ciclo
recorre
las
posiciones
de
la
matriz
del
curso
adecuado,
usando
a
i
como
el
índice
que
se
mueve
por
los
estudiantes
y
a
j
como
el
que
se
mueve
por
las
notas
de
los
exámenes.
Al
llegar
a
cada
posición,
se
van
acumulando
los
valores
en
las
tres
posiciones
del
arreglo
de
salida
(Se
aconseja
hacer
una
prueba
de
escritorio
de
este
proceso)
• El
tercer
ciclo
divide
los
valores
hallados
por
25,
para
calcular
el
promedio
de
cada
nota.
Es
posible
entonces,
recorrer
las
posiciones
usando
índices
que
pueden
ser
variables,
en
este
caso
para
ubicarnos
en
cada
posición
de
la
matriz
de
notas
y
calcular
el
promedio
de
cada
una.
En
resumen
La
definición
e
implementación
de
métodos
permite
organizar
mejor
el
trabajo
y
descomponer
la
lógica
de
los
algoritmos
que
escribimos.
Los
métodos
definidos
pueden
servir
eventualmente
para
solucionar
situaciones
similares
y
por
lo
tanto,
fomentan
la
reutilización
del
código.
Para
tener
en
cuenta:
• La
implementación
de
código
de
los
métodos
funciona
de
forma
distinta
de
acuerdo
con
el
lenguaje
en
el
que
se
trabaje.
• El
tiempo
dedicado
al
diseño
de
un
buen
algoritmo
es
tiempo
que
se
ahorra
en
la
Adrian
Nicolás
Malaver
Barrera
corrección
de
errores
que
puedan
presentarse
posteriormente.
• La
definición
de
métodos
es
una
consecuencia
directa
del
proceso
de
descomposición
funcional
de
un
problema.
Adrian Nicolás Malaver Barrera