Vous êtes sur la page 1sur 8

2.

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}

Cuando definimos algoritmos de esta forma, obtenemos lo que llamaremos


pseudocdigo, lenguaje que no es demasiado formal y est definido para describir de
formasencilla,claraeindependientedeunlenguajedeprogramacin,instruccionesque
sedebenrealizarparaobtenerelresultadodeunproblema.Msadelanteveremosquees
sencillopasardeestepseudocdigoallenguajedeprogramacinenelquetrabajaremos.

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:

Dado{w>0 Y h>0 Y x>=0 Y x<=w Y y>=0 Y y<=(h/w)*x},


reemplazamos:
30>0 Y 24>0 Y -15>0 Y -15<=30 Y 18>=0 Y 18<=(24/30)*-15
V Y V Y F Y V Y V Y 18<=-12
V Y V Y F Y V Y V Y V
F

Larespuestaesfalsadadoqueelvalordexesnegativo.Enestecasoesimportante
notarquelosvaloresdeentradadefinidos,correspondenaunproblemadistintoal
quesepretendesolucionar,porlotantonotienesentidocalcularsusolucinbajo
elesquemadefinido.

Parax=10, y=5, w=-3, h=4


Dado{w>0 Y h>0 Y x>=0 Y x<=w Y y>=0 Y y<=(h/w)*x},
reemplazamos:
-3>0 Y 4>0 Y 10>=0 Y 10<=-3 Y 5>=0 Y 5<=(4/-3)*10
F Y V Y V Y V Y V Y 5<=-13.3
F Y V Y V Y V Y V Y V
F

Larespuestaesfalsadadoqueelvalordewesnegativo.

Parax=1, y=4, w=8, h=5


Dado{w>0 Y h>0 Y x>=0 Y x<=w Y y>=0 Y y<=(h/w)*x},
reemplazamos:
8>0 Y 5>0 Y 1>=0 Y 1<=8 Y 4>=0 Y 4<=(5/8)*1
V Y V Y V Y V Y V Y 4<=0.625
V Y V Y V Y V Y V Y F
F

Larespuestaesfalsadadoqueelvalordeelpunto(x,y),apesardecumplirla
mayoradelasprecondiciones,estporencimadelahipotenusa.

Parax=5, y=3, w=10, h=8


Dado{w>0 Y h>0 Y x>=0 Y x<=w Y y>=0 Y y<=(h/w)*x},

reemplazamos:
10>0 Y 8>0 Y 5>=0 Y 5<=10 Y 3>=0 Y 3<=(8/10)*5
V Y V Y V Y V Y V Y 3<=4
V

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

Vous aimerez peut-être aussi