Académique Documents
Professionnel Documents
Culture Documents
Construccindealgoritmos
Unavezexplicadoslosprocesosdemodeladoyespecificacindealgoritmos,reconocida
su importancia y la manera de formalizar entradas, salidas, pre y poscondiciones,
comenzaremosatrabajarensuconstruccin.
Pensemosenlasiguientesituacin:invitamosaunamigoaconocernuestronuevo
apartamentoperocuandonospideladireccin,soloconocemoselnmerodelatorrey
delapartamento,norecordamosladireccinexactaQuhacemosentonces?Ledamos
instrucciones!
Debemostenerencuentaqueestasinstruccionestienenqueserclarasyprecisaspara
quenuestroamigonosepierdaniseequivoque.Porejemplo:TomelarutaD21de
Transmilenioqueeslamsrpida,ocualquierrutaquelollevealportaldela80;luego
saledelportal,cruzaelpuentepeatonaldelacalle80,siguedoscuadrashaciael
occidente,volteaalaizquierda,siguetrescuadrasyllegaaunconjuntocerradodetorres
grisesyblancasde15pisos.Miapartamentoesel904delatorre8.
NoesdifcilSitenemosclaralainformacin,Esposibleresolverelproblema!
Formalmente,aunconjuntoordenadoyfinitodeinstruccionesquepermitenobtener,
conbaseenunconjuntodeentradas,unconjuntodesalidasquerepresentanlasolucin
alproblema,lollamaremosalgoritmo.
Ahorasabemosloquerequerimosparasolucionarunproblemadeformaorganizada:sus
entradasysalidas,lasprecondicionesyposcondicionesdefinidasparaesosdatosyun
algoritmoquedescriba,apartirdeinstruccionesclarasyprecisas,pasoapasoloquese
debehacerparallegaraunasolucin.
Siqueremosdefinirunalgoritmoenunlenguajequecualquierpersonapuedaentender
debemostenerencuentaciertasreglas.Estasreglasyloselementosqueconstituyenun
algoritmolosiremosconociendoconeltiempo,alolargodeestecurso.Comencemos!
2.1 Asignacin
Unalgoritmosecomponedeunconjuntodeinstruccionesquedebenserrealizadas
ordenadamente,conelobjetivodedarsolucinaunproblema.Laprimeraformaque
POLITCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM
AdrianNicolsMalaverBarrera
1
definiremosparaunainstruccineslaasignacin,quesebasaenasignar,comosu
nombrelodice,unvalorespecficoaunavariable.Estevalorpuedeserunavariable,una
constante,oengeneral,unaexpresin.Conlaasignacinloquesepretendees
almacenarunresultadoenunavariable.Cuandodefinamosasignaciones,loharemosdela
siguientemanera(Paraunadefinicinmsformalconsultalalectura3deestasemana):
<Variable><Expresin>
Veamosalgunosejemplosdeasignaciones:
Tabla1.Ejemplosdeasignaciones
Asignacin Qupuederepresentar?
V15/2 Elclculodeunavelocidad,basadaenvaloresdadosdedistanciaytiempo
A*R*R Elreadeuncrculo
P2**R Lalongituddeunacircunferencia
V*R*R*h Elvolumendeuncilindro
Alconstruirinstruccionesenformadeasignacionesdebemostenerencuentaquelas
expresionesinvolucradasestnestructuradascorrectamente.
Engeneral,unaexpresinpuedeestarmalformadasi:
Contieneerroresrelacionadosconlasintaxisoelordendelossmbolosusados.Por
ejemplo,laexpresin5+<4estmalformada,dadoquepararealizarcualquierade
lasdosoperaciones,serequierendosoperandos.
Contieneoperacionesquenotienensentidoonorespetanlasreglasmatemticas
implicadas.Porejemplo5/(84*2)implicaquesehagaunadivisinporcero,locual
notienevalidez.
Contieneoperacionesquenosepuedenaplicaraltipodedatodelosoperandos
implicados.Porejemplo,noesposibleevaluar57Y85nilaexpresinV+F*3.
Podemosentonces,definirlasinstruccionesdeunalgoritmoconbaseenunconjuntode
asignaciones.Veamosunejemplo:
Sequierecalcularelvolumendeaguaquepuedeseralmacenadoen18vasoscilndricos,
dadoselradiodesubaseysualtura.
AdrianNicolsMalaverBarrera
2
Entonces,loprimeroquedebemoshacereselprocesodemodeladoquesebasaenla
identificacindeentradasysalidas.Podemosdecirquerequerimosdedosvariablesde
entrada,quesonlabaseylaalturadelvasoyobtendremosunasalidaqueeselvalordel
volumen.Luego,identificamoslaspreyposcondicionesquehablarandelosvalorescon
loscualestendrasentidosolucionarelproblema.Finalmente,pasamosadefinirel
algoritmoquenospermiteobtenerunasolucin,quesefundamentaraenelclculodel
volumendeunodelosvasosysuposteriormultiplicacinpor18.
Unaveztengamosestainformacinrequeridadebemosdocumentarlamejor.Entrems
claridadtengamosenladefinicindelproblemaydelalgoritmo,mejoresymsprecisos
sernlosresultadosobtenidos.
Unalgoritmobiendefinidopermiteque,dadounconjuntodedatosdeentradaque
cumplelasprecondiciones,sesigueninstruccionesquepermitenhallarunconjuntode
salidasquedebencumplirlasposcondicionesdefinidas.
2.2 Estructuraformaldeunalgoritmo
Sijuntamoslosprocesosdemodelado,especificacinyconstruccindealgoritmos(con
baseenasignacionescomolohemosvisto)podemosdefinirunaformageneralpara
escribirunalgoritmo.Veamos:
Tabla2.Estructuradeunalgoritmo
Unnombrequeindiqueloquepretendemoshacer
Algoritmo<Nombre del algoritmo> conestealgoritmo
Entradas Variablesdeentrada
Pre:{} Condicionesparalasvariablesdeentrada
Inicio Iniciodelalgoritmo
Paso 1
Paso 2
. Cadapasooinstruccininvolucradaenlasolucin
. delproblema
.
Paso n
Fin Findelalgoritmo
Salidas Variablesdesalidas
Pos:{} Condicionesquedeberncumplirlassalida
AdrianNicolsMalaverBarrera
3
Yparaelejemplovistoantes,ladefinicinpodraserlasiguiente:
Tabla3.Ejemplosdealgoritmodeacuerdoconlaestructura
AlgoritmoVolumenDelCilindro
Entradas
radio, altura: Real
Pre:{radio>0 Y altura>0 }
Inicio
Variables
v: Real
v *radio*radio*altura
volumen 18 * v
Fin
Salidas
volumen: Real
Pos:{volumen > 0}
2.2.1 Unejemplo
Muchasveceslosprocesosdemodeladoyespecificacinrequierenuntrabajoadicional
paraidentificaryposteriormenteconstruirunalgoritmo.Veamosunejemploanms
interesante:
Serequierecalcularelreadecadatringuloconstruidoaltrazarlneasdeunpuntode
coordenadas(x,y)alostresvrtices{(0,0), (w,0) y (w,h)}deuntringulo
ubicadoenelprimercuadrantedelplanocartesiano,comolomuestralagrfica.Elpunto
(x,y)debeestardentrooenelbordedeltringulo.
AdrianNicolsMalaverBarrera
4
Grfica1.Informacindelproblema
Modelado
Entradas:
x, y, w, h: Real
Dadoquerequerimoslainformacindelascoordenadasdelpuntoydelosvaloresdewy
hparaconocerlascoordenadasdelosvrtices.
Salidas:
a1,a2,a3: Real
Dadoqueelalgoritmodebecalcularelreadecadatringulo.
Especificacin
Precondiciones:
1. Queeltringuloestenelprimercuadrante
Paratalfin,debemosdefinirqueelpuntodecoordenadas(w,h)estenelprimer
cuadrante;formalmente:{w>0 Y h>0}.Elpunto(0,0)sedescarta,dadoque
obtendramosuntringulodereacero.
2. Queelpuntodecoordenadas(x,y)estdentrodeltringulo
Debemosdefinirprecondicionessimilaresalasdelpuntoanterior,peroesnecesario
tenerencuentamsfactoresdadoquedebemoslimitarelpuntodentrodeunreams
pequea.Comencemosconx:{x >= 0 Y x <= w};paray,ademsdeverificarquese
encuentreenelintervalo[0,h]debemosverificarqueseencuentredebajoosobrela
hipotenusadeltringulo.Podemosdefinirestasprecondicioneshallandolaecuacinde
larectaquerepresentalahipotenusaparaconocerlaalturaquedeberatenerla
coordenada,comolomuestralasiguientefigura:
AdrianNicolsMalaverBarrera
5
Grfica2.Representacindelacondicinaverificar
Laecuacingeneraldelarectaesy=mx+b,dondemeslapendientedelarectayequivale
ah/w.Comob,elinterceptoconelejeverticalescero,podemosignorarla,ypodemos
escribirloquenosinteresa:lacoordenadaydebesermayoroigualqueceroymenoro
igualquelaalturadelarectaenelpuntox.Estoes:{y>=0 Y y<=(h/w)*x}.
Simplementereescribimosmcomo(h/w).
Poscondiciones:
1. Elvalordecadareadebesermayorquecero,dadoquenotienesentidounrea
negativaycomowyhsonmayoresquecero,nodeberserposibleobtenerreas
nulas.Estoes:{a1>0 Y a2>0 Y a3>0}.
2. Lasumadelasreasdebeserigualalreatotaldeltringulo.Estoes:{a1 + a2 +
a3 = w*h/2},calculandoelreadeltringulocompletoconlafrmula.
Conlainformacindefinida,podemosescribirelalgoritmodelasiguienteforma:
Tabla4.Algoritmodesolucindelproblema
Algoritmoreas
Entradas
x,y,w,h: Real
Pre: {w>0 Y h>0 Y x>=0 Y x<=w Y y>=0 Y y<=(h/w)*x}
Inicio
a1w*y/2 a1ya2secalculanconlafrmulageneral,a3se
a2h*(w-x)/2 calculacomoladiferenciaentreelreatotalyla
a3w*h/2-a1-a2 sumadelasreaspreviamentecalculadas.
Fin
Salidas
a1,a2,a3: Real
Pos:{a1>0 Y a2>0 Y a3>0 Y a1+a2+a3 = w*h/2}
Parafinalizar,verifiquemoselalgoritmoconalgunosvalores.
AdrianNicolsMalaverBarrera
6
Dadoslosvaloresdelasvariablesdeentradax=-15, y=18, w=30, h=24los
reemplazamosenlaexpresinquedescribelasprecondicionesysilasentradasson
vlidas,laexpresindebeserverdadera,enotrocaso,serfalsa.Veamos:
Enestecasolarespuestaesverdaderaypodemosejecutarelalgoritmo.
AdrianNicolsMalaverBarrera
7
a1w*y/2
a110*3/2
a115
a2h*(w-x)/2
a28*(10-5)/2
a220
a3w*h/2-a1-a2
a310*8/215-20
a35
Ahora,conestosvaloresseverificanlasposcondiciones:
Dado{a1>0 Y a2>0 Y a3>0 Y a1+a2+a3 = w*h/2},
reemplazamos:
a1>0 Y a2>0 Y a3>0 Y a1+a2+a3 = w*h/2
15>0 Y 20>0 Y 5>0 Y 15+20+5 = 10*8/2
V Y V Y V Y 40 = 40
V Y V Y V Y V
V
Larespuestahalladaesvlida.
Enresumen
Paralograrlaconstruccindeunbuenalgoritmoesnecesariotenerencuentala
definicincorrectayclaradeentradasysalidas,ydelascondicionesquedefinenque
dichosvaloressonvlidos(precondicionesaplicadasalasentradasyposcondiciones
aplicadasalassalidas).Dichascondicionesserepresentanmedianteexpresiones
booleanasquedebernserverdaderasalreemplazarlosdatos.
Elprimerelementoquenospermiteconstruiralgoritmoseslaasignacin.Mediantesu
usobuscamosasignarvalores(quepuedenserconstantes,variablesoengeneral,
expresiones)avariablesespecficas.
Paratenerencuenta:
Verificarenpapellasolucindelalgoritmoreasparavariosconjuntosdevariables
deentrada.Verificargrficamentequelosvaloreshalladostengansentido.
Verificarlaconstruccin,basndoseenlasgrficas,delasasignacionesquecalculan
elreadecadatringuloindependiente.
Sinnecesidaddetenerencuentalosvaloresdea1ya2,Cmopodracalcularsea3?
AdrianNicolsMalaverBarrera
8