Académique Documents
Professionnel Documents
Culture Documents
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
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
Evaluarfuncin
Elsiguientepasoesimplementarcadamtododeacuerdoaloqueserequiere.Estoes,
modelar,especificarycodificarcadaunodelosmtodoscomosifueranalgoritmos
individuales.
Ladefinicindelosmtodosinicialespodraentonces,serlasiguiente:
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)
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
AdrianNicolsMalaverBarrera
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