Origem:Wikilivros,livrosabertosporummundoaberto.
<Introduoprogramao
LgicadeProgramaoatcnicadedesenvolveralgoritmos(sequnciaslgicas)paraatingirdeterminadosobjetivosdentrodecertasregrasbaseadasna
LgicamatemticaeemoutrasteoriasbsicasdaCinciadaComputaoequedepoissoadaptadosparaaLinguagemdeProgramaoutilizadapelo
programadorparaconstruirseusoftware.
Umalgoritmoumasequncianoambguadeinstruesqueexecutadaatquedeterminadacondioseverifique.Maisespecificamente,emmatemtica,
constituioconjuntodeprocessos(esmbolosqueosrepresentam)paraefetuarumclculo.
Oconceitodealgoritmofrequentementeilustradopeloexemplodeumareceita,emboramuitosalgoritmossejammaiscomplexos.Elespodemrepetirpassos
(fazeriteraes)ounecessitardedecises(taiscomocomparaesoulgica)atqueatarefasejacompletada.Umalgoritmocorretamenteexecutadonoir
resolverumproblemaseestiverimplementadoincorretamenteousenoforapropriadoaoproblema.
Umalgoritmonorepresenta,necessariamente,umprogramadecomputador,esimospassosnecessriospararealizarumatarefa.Suaimplementaopodeser
feitaporumcomputador,poroutrotipodeautmatooumesmoporumserhumano.Diferentesalgoritmospodemrealizaramesmatarefausandoumconjunto
diferenciadodeinstruesemmaisoumenostempo,espaoouesforodoqueoutros.Taldiferenapodeserreflexodacomplexidadecomputacionalaplicada,
quedependedeestruturasdedadosadequadasaoalgoritmo.Porexemplo,umalgoritmoparasevestirpodeespecificarquevocvistaprimeiroasmeiaseos
sapatosantesdevestiracalaenquantooutroalgoritmoespecificaquevocdeveprimeirovestiracalaedepoisasmeiaseossapatos.Ficaclaroqueoprimeiro
algoritmomaisdifcildeexecutarqueosegundoapesardeamboslevaremaomesmoresultado.
Oconceitodeumalgoritmofoiformalizadoem1936pelaMquinadeTuringdeAlanTuringepeloclculolambdadeAlonzoChurch,queformaramas
primeirasfundaesdaCinciadaComputao.
ndice
1 Formalismo
2 Trminodoalgoritmo
3 Implementao
4 Anlisedealgoritmos
5 Classificao
5.1 Classificaoporimplementao
5.2 Classificaoporparadigma
5.3 Classificaoporcampodeestudo
5.4 Classificaoporcomplexidade
6 Resumo
7 Bibliografia
Formalismo
Umprogramadecomputadoressencialmenteumalgoritmoquedizaocomputadorospassosespecficoseemqueordemelesdevemserexecutados,comopor
exemplo,ospassosaseremtomadosparacalcularasnotasqueseroimpressasnosboletinsdosalunosdeumaescola.Logo,oalgoritmopodeserconsiderado
umasequnciadeoperaesquepodemsersimuladasporumamquinadeTuringcompleta.
Quandoosprocedimentosdeumalgoritmoenvolvemoprocessamentodedados,ainformaolidadeumafontedeentrada,processadaeretornadasobnovo
valorapsprocessamento,oquegeralmenterealizadocomoauxliodeumaoumaisestruturasdedados.
Paraqualquerprocessocomputacionalterico,oalgoritmoprecisaestarrigorosamentedefinido,especificandoamaneiraqueelesecomportaremtodasas
circunstncias.Acorretudedoalgoritmopodeserprovadamatematicamente,bemcomoaquantidadeassintticadetempoeespao(complexidade)necessrios
paraasuaexecuo.Estesaspectosdosalgoritmossoalvodaanlisedealgoritmos.Asimplementaes,porm,podemselimitaracasosespecficos.
Amaneiramaissimplesdesepensarumalgoritmoporumalistadeprocedimentosbemdefinida,noqualasinstruessoexecutadaspassoapassoapartirdo
comeodalista,umaideiaquepodeserfacilmentevisualizadaatravsdeumfluxograma.Talformalizaoadotaaspremissasdaprogramaoimperativa,que
umaformamecnicaparavisualizaredesenvolverumalgoritmo.Concepesalternativasparaalgoritmosvariamemprogramaofuncionaleprogramao
lgica.
Trminodoalgoritmo
Algunsautoresrestringemadefiniodealgoritmoparaprocedimentosqueeventualmenteterminam.Minksyconstatouqueseotamanhodeumprocedimento
noconhecidodeantemo,tentardescobriloproblemaindecidveljqueoprocedimentopodeserexecutadoinfinitamente,deformaquenuncasetera
resposta.AlanTuringprovouem1936quenoexistemquinadeTuringpararealizartalanliseparatodososcasos,logonohalgoritmopararealizartaltarefa
paratodososcasos.Talcondioconhecidaatualmentecomoproblemadaparada.Basicamente,istoquerdizerquenoexisteumprogramadecomputadorque
possaantever,deformageral,seumoutroprogramadecomputadorvaipararalgumdia.
Paraalgoritmosinterminveisosucessonopodeserdeterminadopelainterpretaodarespostaesimporcondiesimpostaspeloprpriodesenvolvedordo
algoritmodurantesuaexecuo.Porexemplo,podemosquererumalgoritmointerminvelparacontrolarumsinaldetrnsito.
Implementao
Amaioriadosalgoritmosdesenvolvidaparaserimplementadaemumprogramadecomputador.Apesardissoelestambmpodemserimplementadosporoutros
modostaiscomoumaredeneuralbiolgica(talcomonocrebroquandoefetuamosoperaesaritmticas)emcircuitoseltricosouatmesmoemdispositivos
mecnicos.
Paraprogramasdecomputadorexistemumagrandevariedadedelinguagensdeprogramao,cadaumacomcaractersticasespecficasquepodemfacilitara
implementaodedeterminadosalgoritmosouatenderapropsitosmaisgerais.
Anlisedealgoritmos
Aanlisedealgoritmosumramodacinciadacomputaoqueestudaastcnicasdeprojetodealgoritmoseosalgoritmosdeformaabstrata,semestarem
implementadosemumalinguagemdeprogramaoemparticularouimplementadasdealgumoutromodo.Elapreocupasecomosrecursosnecessriosparaa
execuodoalgoritmotaiscomootempodeexecuoeoespaodearmazenamentodedados.Deveseperceberqueparaumdadoalgoritmopodeseter
diferentesquantidadesderecursosalocadosdeacordocomosparmetrospassadosnaentrada.Porexemplo,sedefinirmosqueofatorialdeumnmeronatural
igualaofatorialdeseuantecessormultiplicadopeloprprionmero,ficaclaroqueaexecuodefatorial(10)consomemaistempoqueaexecuodefatorial(5).
Ummeiodeexibirumalgoritmoafimdeanalisloatravsdaimplementaoporpseudocdigoemportugusestruturado.Oexemploaseguirumalgoritmo
emportugusestruturadoqueretorna(valordesada)asomadedoisvalores(tambmconhecidoscomoparmetrosouargumentos,valoresdeentrada)queso
introduzidosnachamadadafuno:
funoSomaDeDoisValores(Anumrico,Bnumrico)
inicio
declareSOMAnumrico
SOMA<A+B
retorne(SOMA)
fim
Classificao
Classificaoporimplementao
Podeseclassificaralgoritmospelamaneirapeloqualforamimplementados.
Recursivoouiterativoumalgoritmorecursivopossuiacaractersticadeinvocarasimesmorepetidamenteatquecertacondiosejasatisfeitaeele
terminado,queummtodocomumemprogramaofuncional.Algoritmositerativousamestruturasderepetiotaiscomolaos,ouaindaestruturasde
dadosadicionaistaiscomopilhas,pararesolverproblemas.Cadaalgoritmorecursivopossuiumalgoritmoiterativoequivalenteeviceversa,masquepode
termaisoumenoscomplexidadeemsuaconstruo.possvelconstruiralgoritmosquesejamaomesmotempoiterativoerecursivo,provavelmentepara
aproveitaralgumaotimizaodetempoouespaoqueissopermita.
Lgicoumalgoritmopodeservistocomoumadeduolgicacontrolada.Ocomponentelgicoexpressaosaxiomasusadosnacomputaoeo
componentedecontroledeterminaamaneiracomoadeduoaplicadaaosaxiomas.Talconceitobaseparaaprogramaolgica.
Serialouparaleloalgoritmossogeralmenteassumidosporseremexecutadosinstruoinstruoindividualmente,comoumalistadeexecuo,oque
constituiumalgoritmoserial.Talconceitobaseparaaprogramaoimperativa.Poroutroladoexistemalgoritmosexecutadosparalelamente,quelevam
emcontaarquiteturasdecomputadorescommaisdeumprocessadorparaexecutarmaisdeumainstruoaomesmotempo.Taisalgoritmosdividemos
problemasemsubproblemaseodelegamaquantosprocessadoresestiveremdisponveis,agrupandonofinaloresultadodossubproblemasemum
resultadofinalaoalgoritmo.Talconceitobaseparaaprogramaoparalela.Deformageral,algoritmositerativossoparalelizveisporoutrolado
existemalgoritmosquenosoparalelizveis,chamadosentoproblemasinerentementeseriais.
Determinsticoounodeterminsticoalgoritmosdeterminsticosresolvemoproblemacomumadecisoexataacadapassoenquantoalgoritmosno
determinsticosresolvemoproblemaaodeduzirosmelhorespassosatravsdeestimativassobformadeheursticas.
Exatoouaproximadoenquantoalgunsalgoritmosencontramumarespostaexata,algoritmosdeaproximaoprocuramumarespostaprximaa
verdadeirasoluo,sejaatravsdeestratgiadeterminsticaoualeatria.Possuemaplicaesprticassobretudoparaproblemasmuitocomplexos,doqual
umarespostacorretainviveldevidosuacomplexidadecomputacional.
Classificaoporparadigma
Podeseclassificaralgoritmospelametodologiaouparadigmadeseudesenvolvimento,taiscomo:
Divisoeconquistaalgoritmosdedivisoeconquistareduzemrepetidamenteoproblemaemsubproblemas,geralmentedeformarecursiva,atqueo
subproblemapequenoosuficienteparaserresolvido.Umexemploprticooalgoritmodeordenaomergesort.Umavariantedessametodologiao
decrementoeconquista,queresolveumsubproblemaeutilizaoasoluopararesolverumproblemamaior.Umexemploprticooalgoritmopara
pesquisabinria.
Programaodinmicapodeseutilizaraprogramaodinmicaparaevitaroreclculodesoluojresolvidasanteriormente.
Algoritmogananciosoumalgoritmogananciososimilarprogramaodinmica,masdiferenamedidaqueassoluesdossubproblemasno
precisamserconhecidasacadapasso,umaescolhagananciosapodeserfeitaacadamomentocomoqueatentoparecesermaisadequado.
Programaolinear
Reduoareduoresolveoproblemaaotransformloemoutroproblema.chamadotambmtransformaoeconquista.
Buscaeenumeraovriosproblemaspodemsermodeladosatravsdegrafos.Umalgoritmodeexploraodegrafopodeserusadoparacaminharpela
estruturaeretornaminformaesteisparaaresoluodoproblema.Estacategoriaincluialgoritmosdebuscaebacktracking.
Paradigmaheursticoeprobabilsticoalgoritmosprobabilsticosrealizamescolhasaleatoriamente.Algoritmosgenticostentamencontrarasoluo
atravsdeciclosdemutaesevolucionriasentregeraesdepassos,tendendoparaasoluoexatadoproblema.Algoritmosheursticosencontramuma
soluoaproximadaparaoproblema.
Classificaoporcampodeestudo
Cadacampodacinciapossuiseusprpriosproblemaserespectivosalgoritmos,adequadospararesolvlos.Exemplosclssicossoalgoritmosdebusca,de
ordenao,deanlisenumrica,deteoriadegrafos,demanipulaodecadeiasdetexto,degeometriacomputacional,deanlisecombinatria,deaprendizagem
demquina,decriptografia,decompressodedadosedeinterpretaodetexto.
Classificaoporcomplexidade
Verartigoprincipal:Complexidadecomputacional.Algunsalgoritmossoexecutadosemtempolinear,deacordocomaentrada,enquantooutrossoexecutados
emtempoexponencialouatmesmonuncaterminamdeseremexecutados.Algunsproblemaspossuemmltiplosalgoritmosenquantooutrosnopossuem
algoritmospararesoluo.
Resumo
Bibliografia
Obtidoem"https://pt.wikibooks.org/w/index.php?title=Introduo__programao/Definies_sobre_Lgica_de_Programao&oldid=422502"
Categoria: Livro/Introduoprogramao
Estapginafoimodificadapelaltimavez(s)20h57minde16dejunhode2016.
EstetextodisponibilizadonostermosdalicenaCreativeCommonsAtribuioCompartilhamentopelamesmaLicena3.0Unportedpodeestarsujeitoa
condiesadicionais.ConsulteasCondiesdeUsoparamaisdetalhes.