Вы находитесь на странице: 1из 9

13.

Definicindemtodos

Amedidaquepensamosenlasolucindeproblemascomplejosoenlarepresentacinde
situacionesquerequierendeunprocesodecodificacinextensa,requerimosdenuevas
herramientasquenospermitandescomponerlasolucindeunproblemaenproblemas
mspequeos.

13.1 Descomposicinfuncional

Ladefinicindemtodosesunaformadeplasmarencdigoelresultadodela
descomposicinfuncionaldefinidaparalograrlasolucindeunproblema.

Laideaesque,habiendodefinidounaseriedetareasquesedebencumplirpara
solucionarunproblema,sedefinalaformaenlaquesedebenrepresentarestastareasa
travsdelasestructurasdeunlenguajedeprogramacin.

13.2 Definicindemtodos

Comosevioenlaslecturasiniciales,unmtodoeslaformaderepresentacindel
comportamientodeunaclase,teniendoencuentaqueestasdefinicionespartendeun
lenguajedeprogramacinorientadoaobjetos.

Unmtodonoesmsqueelresultadodeencapsularunconjuntodeinstruccionesque
hacenpartedelasolucindeunproblemaapartirdeunalgoritmo.Porlotanto,podemos
pensarenellos,comopequeosalgoritmosquetienenresponsabilidadesmuyconcretas
entrminosdecalcularunvalor,presentarinformacinorealizartareasquesehacen
repetidamenteyesconvenientedefinirquepuedanserreutilizables.

13.3 Representacindemtodos

Laformaderepresentarunmtodoesmuysimilaralaformaderepresentarun
algoritmo,dadoque,comovimos,enesencia,sonsecuenciasdeinstrucciones.Veamos
entoncesculeslaformaenlaquepodemosrepresentarlos:

Tabla1.RepresentacindeMtodosenpseudocdigo

AdrianNicolsMalaverBarrera

Mtodo<Nombre del mtodo>


Entradas
Pre:{}
Inicio
Paso 1
Paso 2
.
.
.
Paso n
Fin
Salidas
Pos:{}

Laformaderepresentacineslamisma;sinembargohayquetenerciertascosasen
cuenta:

Nodescuidarladefinicin,porlomenosgeneral,depreyposcondicionesque
indiquenculeselconjuntodevaloresconloscualesesposiblellegarasolucinvlida
delafraccindelproblemadelaqueesresponsablecadamtodo.
Tenerencuentaquecuandoseidentificantareasqueserealizanvariasveces,odesde
variaspartesconelmismoobjetivo,estastareasserncandidatasparaser
encapsuladasenunmtodo.
Laideaeslograrunadescomposicinquepermitapresentarlasolucindeun
problemadeunaformamuchomsclarayconcreta,nocontarconunconjunto
demasiadograndedemtodosquerealizantareasmuypequeas.

Entonces,Enqucasosesconvenienteusarmtodos?

Cuandoseidentificantareasqueserepitenvariasvecesenelcdigodeunprograma.
Porejemplo,elclculodeunpromedio,odeunarazcuadrada.
Cuandolaformaderealizaralgunatareapuedecambiar.Porejemplo,cuandose
hacenclculosbasadosenunafuncinmatemtica,yestafuncinpuedecambiar.
Cuandoelcdigodeunprogramasehacemuylargoycomplicado.Enestecasose
deseadelegarresponsabilidadesavariosmtodosparaquesepuedenencargarde
tareasimportantesparalasolucindelproblemageneral.
Cuandoseencuentraunatareaquepuedeserdispendiosaperonoserelacionaconla
lgicadelproblemaqueseestsolucionando.Porejemplo,presentarunreporteenla
pantallasobrelosresultadosobtenidosenunprocesodeanlisis.

AdrianNicolsMalaverBarrera

Veamosunejemploqueilustraelusodemtodos.

Sedeseacompararlosresultadosobtenidosenelclculodellmitedeunafuncinendos
dimensionesdeacuerdocontresmtodosdistintos.Losresultadossecalculanconbaseen
ladiferenciaentreunvalorconstanteylosvaloresexperimentaleshallados.Adems,como
resultadodelanlisis,sedebenpresentarlosresultadoshalladosconelmtodoms
eficiente.

Comovimosinicialmente,nosbasamosenladescomposicindelproblemaenproblemas
mspequeososubproblemas,queenconjuntodebensolucionarelproblemacompleto.
Unaaproximacininicialpodraserlasiguiente:

Calcularloslmitesconcadamtodo
Compararresultados
Seleccionarelmtodomseficiente
Presentarresultados

Yenunasegundarevisin,podemosidentificarlosmtodosquerequerimos
implementar:

Calcularloslmitesconcadamtodo
o Mtodo1
o Mtodo2
o Mtodo3
Compararresultados
o Mtododecomparacin
Seleccionarelmtodomseficiente
o Mtododeseleccin
Presentarresultados
o Mtodoparamostrarinformacin

Conbaseenestalistapodemosdecirque:

Debemosimplementarlosmtodos1,2y3.
Losmtodosdecomparacinyseleccin,comonorequierenunalgicacomplicada,
puedenhacersedesdeelalgoritmoprincipal.
Elmtodoparamostrarlainformacinhalladapuederequerirdemuchocdigoque
nodefinelasolucindelproblema,porlotantovalelapenaconsiderarsu
implementacin.
Algoquepuedenoserinmediatoeselhechodequecadamtodonecesitaevaluar
valoresdelafuncinendistintospuntos,porlotanto,seestarahaciendolomismo

AdrianNicolsMalaverBarrera

desdevariaspartesysiladefinicindedichafuncincambiara,incurriramosenun
conjuntomuygrandedecambios;porlotantorequerimoshacerestoenunmtodo
externo.

Veamosenunagrficasencillalasrelacionesquedefinimos:

Diagrama1.Posiblesdefinicionesdemtodos

Algoritmoprincipal

Mtodo1 Mtodo2 Mtodo3 MostrarInformacin

Evaluarfuncin

Elsiguientepasoesimplementarcadamtododeacuerdoaloqueserequiere.Estoes,
modelar,especificarycodificarcadaunodelosmtodoscomosifueranalgoritmos
individuales.

Ladefinicindelosmtodosinicialespodraentonces,serlasiguiente:

MtodoMetodo1 MtodoMetodo2 MtodoMetodo2


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:{}

Yparalosotrosmtodos:

MtodoMostrarInformacin MtodoEvaluarFuncion
Entradas Entradas
datos : Real[100] x : Real
Pre:{} Pre:{}

AdrianNicolsMalaverBarrera

Inicio Inicio
. .
. .
. .
Fin Fin
Salidas Salidas
y : Real
Pos:{} Pos:{}

Luegodelaimplementacindecadamtodo,elalgoritmoprincipalpodraserel
siguiente:

AlgoritmoLimites
Entradas
x : Real
Pre:{El lmite de la funcin en el punto x existe}
Inicio
datos1 Metodo1(x)
datos2 Metodo2(x)
datos3 Metodo3(x)

//Identificar la mejor solucin y almacenarla


//en la variable "mejor"

MostrarInformacin(mejor)
Fin
Salidas
R : Real[100]
Pos:{}

Losmtodossoninvocadosdelamismaformaenqueseinvocanlosmtodosgenerales
definidosporellenguajedeprogramacinoquenosondeldominiodelasolucindel
problema.

13.4 Ejemplodeconstruccindemtodosorientadosalasolucinde
problemasqueusanarreglosyciclos

Unadelasventajasquepresentanlosarreglos,esquepuedenserusadosconndices
variables,quepuedensermodificadosconayudadeciclosquesemuevensobrelas
estructurasdefinidas.Paraverestoconmsclaridad,veamosunejemploilustrativo:

AdrianNicolsMalaverBarrera

Serequierecompararelrendimientode10cursosde25estudiantesenlos3exmenes
parcialesdematemticasdelsemestreanterior.Parahacerelanlisisserequiere
presentarinformacinrelacionadaconelpromediodecadacursoencadaexamen,el
promediogeneraldelanotadefinitivaencadacursoylasnotasfinalesmximasencada
curso.

Asimplevista,elproblemanoesmuysimple;porlotantorecurriremosaunproceso
inicialdedescomposicinfuncional:

Qusedebehacer?
Leerinformacindelasnotasdecadacursoyestudiante
Calcularpromediodeexmenes
Calcularlanotadefinitivadelosestudiantesdecadacurso
Hallarlasnotadefinitivamximadecadacurso

Conbaseenestainformacin,tenemoslossiguientesmtodoscomocandidatosparaser
implementados:

Qusedebehacer?
Leerinformacindelasnotasdecadacursoyestudiante
Mtododelecturadenotasdecadacurso
Mtododelecturadenotasdecadaestudiante
Calcularpromediodeexmenes
Mtodoparacalcularpromediodenotasparciales
Calcularlanotadefinitivadelosestudiantesdecadacurso
Mtodoparacalcularpromediodenotasfinales
Hallarlasnotadefinitivamximadecadacurso
Mtodoparabuscarelvalormximo
Presentarinformacin
Mtodoparapresentarinformacindecadaestudiante
Mtodoparapresentarinformacindecadacurso

Analizandolainformacinpodemosdecirqueserabuenodefinirmtodosparala
administracindelainformacindecadacursoteniendoencuenta:

Lecturadenotasporcurso
Calcularelpromediodelosexmenesdeuncurso
Calcularelpromediodelasnotasdefinitivasdeuncurso
Buscarelvalormximoenunconjuntodenotas
Presentarinformacindeuncurso

AdrianNicolsMalaverBarrera

Estosmtodosserninvocadosdesdeelalgoritmoprincipal.Paraeldesarrollodel
ejemplo,analizaremoselsegundo,elterceroyelcuartomtodo.Luegodelprocesode
modeladoyespecificacintendremoselsiguienteresultado:

Mtodo Mtodo
CalcularPromedioEx Mtodo
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:{mximo >= 0 Y
Pos:{promedio>=0 Y mximo <= 5}
promedio[i]<=5, para i promedio<=5}
entre 0 y 2}

Veamosahoraladefinicindelprimermtodo:

Mtodo
CalcularPromedioEx
Entradas
notas[10][25][3] : Real
curso : Entero //curso indica el nmero 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

AdrianNicolsMalaverBarrera

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}

Algunoscomentariossobreelalgoritmo:

Elprimerciclorecorrecadaposicindelarreglodesalidayasignaunvalorinicialde0
encadaposicin.
Elsegundociclorecorrelasposicionesdelamatrizdelcursoadecuado,usandoai
comoelndicequesemueveporlosestudiantesyajcomoelquesemueveporlas
notasdelosexmenes.Alllegaracadaposicin,sevanacumulandolosvaloresenlas
tresposicionesdelarreglodesalida(Seaconsejahacerunapruebadeescritoriode
esteproceso)
Eltercerciclodividelosvaloreshalladospor25,paracalcularelpromediodecada
nota.

Esposibleentonces,recorrerlasposicionesusandondicesquepuedenservariables,en
estecasoparaubicarnosencadaposicindelamatrizdenotasycalcularelpromediode
cadauna.

Enresumen
Ladefinicineimplementacindemtodospermiteorganizarmejoreltrabajoy
descomponerlalgicadelosalgoritmosqueescribimos.Losmtodosdefinidospueden
servireventualmenteparasolucionarsituacionessimilaresyporlotanto,fomentanla
reutilizacindelcdigo.

Paratenerencuenta:
Laimplementacindecdigodelosmtodosfuncionadeformadistintadeacuerdo
conellenguajeenelquesetrabaje.

Eltiempodedicadoaldiseodeunbuenalgoritmoestiempoqueseahorraenla

AdrianNicolsMalaverBarrera

correccindeerroresquepuedanpresentarseposteriormente.

Ladefinicindemtodosesunaconsecuenciadirectadelprocesodedescomposicin
funcionaldeunproblema.

AdrianNicolsMalaverBarrera