Sie sind auf Seite 1von 9

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


Método
<Nombre del método>



Entradas

Pre:
{…}

Inicio


 Paso 1
Paso 2
.
.
.
Paso n

Fin

Salidas

Pos:
{…}


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:


Método
Metodo1
 Método
Metodo2
 Método
Metodo2



Entradas
 Entradas
 Entradas


 x : Real
 
 x : Real
 
 x : Real

Pre:
{…}
 Pre:
{…}
 Pre:
{…}

Inicio
 Inicio
 Inicio


 . 
 . 
 .
. . .
. . .
Fin
 Fin
 Fin

Salidas
 Salidas
 Salidas

R : Real[100]
 
 R : Real[100]
 
 R : Real[100]

Pos:
{…}
 
 Pos:
{…}
 
 Pos:
{…}
 


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)

//Identificar la mejor solución y almacenarla


//en la variable "mejor"

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

para i ← 0 hasta 24 hacer


para j ← 0 hasta 3 hacer
promedio[j] ← promedio[j] + notas[curso][i][j]
fin_para
fin_para

Adrian
Nicolás
Malaver
Barrera


para i ← 0 hasta 2 hacer


promedio[i] ← promedio[i] / 25
fin_para
Fin

Salidas

promedio[3] : Real

Pos:
{promedio[i]>=0 Y promedio[i]<=5, para i entre 0 y 2}


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


Das könnte Ihnen auch gefallen