definicion de algoritmo.docx

Upload: fidelramos

Post on 07-Jul-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    1/27

    DEFINICION DE ALGORITMO:

    define algoritmo como un conjunto ordenado y finito de oeracione! "ue ermite #allar la !oluci$n

    de un ro%lema& M'todo y notaci$n en la! di!tinta! f$rmula! del c(lculo& El algoritmo con!tituye un

    m'todo ara re!ol)er un ro%lema mediante una !ecuencia de a!o! a !eguir& Dic#a !ecuencia

    uede !er e*re!ada en forma de diagrama de flujo con el f in de !eguirlo de una forma m(!

    !encilla&De acuerdo con el conceto anterior+ el algoritmo odr,a e!tar incluido en la definici$n de rograma

    de ordenador de la Ley de -roiedad Intelectual .TRL-I/+ al referir!e a '!te como toda !ecuencia

    de in!truccione! o indicacione! de!tinada! a !er utili0ada!+ directa o indirectamente+ en un !i!tema

    inform(tico ara reali0ar una funci$n o una tarea o ara o%tener un re!ultado determinado+

    cual"uiera "ue fuere !u forma de e*re!i$n y fijaci$n&

    1in em%argo+ cierta! caracter,!tica! de lo! algoritmo! #acen "ue no uedan !er calificado! como

    rograma! de ordenador& .2er recuadro/ La con!ecuencia de e!ta! caracter,!tica! e! la e*clu!i$n

    del algoritmo del (m%ito de rotecci$n del derec#o de autor+ en la medida en "ue '!te con!tituye

    una idea+ un m'todo de c(lculo o una funci$n+ afectado or el art,culo 34&5 del TRL-I&

    -or otro lado+ -re(m%ulo de la Directi)a 367897CEE de 6336 !o%re la rotecci$n jur,dica de lo!rograma! de ordenador e!ta%lece "ue: ;en la medida en "ue la l$gica+ lo! algoritmo! y lo!

    lenguaje! de rogramaci$n a%ar"uen idea! y rinciio!+ e!to! and feel;+

    "ue e!ta%lecen la e*i!tencia de lagio cuando !e reroduce la e!tructura+ !ecuencia y di!o!ici$n

    de lo! dato! integrado! en un rograma de ordenador& E!ta! e*cecione! odr,an alicar!e en elca!o de com%inacione! de algoritmo! o cuando el ni)el de comlejidad de un algoritmo fue!e muy

    alto&

    Algoritmo

    En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas,un algoritmo (del griego y latín, dixit algorithmus y este a su vez delmatemático persa Al-Juarismi[! " es un con#unto preescrito de instrucciones o

    reglas $ien de%nidas, ordenadas y %nitas &ue permite realizar una actividadmediante pasos sucesivos &ue no generen dudas a &uien de$a realizar dichaactividad'[! )ados un estado inicial y una entrada, siguiendo los pasossucesivos se llega a un estado %nal y se o$tiene una solución' *os algoritmosson el o$#eto de estudio de la algoritmia'[!

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    2/27

    En la vida cotidiana, se emplean algoritmos +recuentemente para resolverpro$lemas' Algunos e#emplos son los manuales de usuario, &ue muestranalgoritmos para usar un aparato, o las instrucciones &ue reci$e un tra$a#adorpor parte de su patrón' Algunos e#emplos en matemática son el algoritmo demultiplicación, para calcular el producto, el algoritmo de la división paracalcular el cociente de dos nmeros, el algoritmo de Euclides para o$tener elmáximo comn divisor de dos enteros positivos, o el mtodo de .auss pararesolver un sistema lineal de ecuaciones

    )e%nición +ormalEn general, no existe ningn consenso de%nitivo en cuanto ala de%nición +ormal de algoritmo' /uchos autores los se0alan como listas deinstrucciones para resolver un cálculo o un pro$lema a$stracto, es decir, &ueun nmero %nito de pasos convierten los datos de un pro$lema (entrada" enuna solución (salida"'[! [! [1! [2! [3! [4! 5in em$argo ca$e notar &ue algunosalgoritmos no necesariamente tienen &ue terminar o resolver un pro$lema enparticular' 6or e#emplo, una versión modi%cada de la cri$a de Eratóstenes &uenunca termine de calcular nmeros primos no de#a de ser un algoritmo'[7!

    A lo largo de la historia varios autores han tratado de de%nir +ormalmente a losalgoritmos utilizando modelos matemáticos' Esto +ue realizado por Alonzo8hurch en 914 con el concepto de :calcula$ilidad e+ectiva: $asada en sucálculo lam$da y por Alan ;uring $asándose en la má&uina de ;uring' *os dosen+o&ues son e&uivalentes, en el sentido en &ue se pueden resolverexactamente los mismos pro$lemas con am$os en+o&ues' '[n algoritmo +unciona en tiempo discretizado ?paso apaso?, de%niendo así una secuencia de estados :computacionales: por cadaentrada válida (la entrada son los datos &ue se le suministran al algoritmoantes de comenzar"'

    Estado a$stracto' 8ada estado computacional puede ser descrito +ormalmenteutilizando una estructura de primer orden y cada algoritmo es independiente

    de su implementación (los algoritmos son o$#etos a$stractos" de manera &ueen un algoritmo las estructuras de primer orden son invariantes $a#oisomor%smo'

    Exploración acotada' *a transición de un estado al siguiente &uedacompletamente determinada por una descripción %#a y %nita@ es decir, entrecada estado y el siguiente solamente se puede tomar en cuenta una cantidad%#a y limitada de trminos del estado actual'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    3/27

    En resumen, un algoritmo es cual&uier cosa &ue +uncione paso a paso, dondecada paso se pueda descri$ir sin am$igedad y sin hacer re+erencia a unacomputadora en particular, y además tiene un límite %#o en cuanto a lacantidad de datos &ue se pueden leerBescri$ir en un solo paso' Esta ampliade%nición a$arca tanto a algoritmos prácticos como a&uellos &ue solo+uncionan en teoría, por e#emplo el mtodo de CeDton y la eliminación de.auss-Jordan +uncionan, al menos en principio, con nmeros de precisiónin%nita@ sin em$argo no es posi$le programar la precisión in%nita en unacomputadora, y no por ello de#an de ser algoritmos'[! En particular es posi$leconsiderar una cuarta propiedad &ue puede ser usada para validar la tesis de8hurch-;uring de &ue toda +unción calcula$le se puede programar en unamá&uina de ;uring (o e&uivalentemente, en un lengua#e de programaciónsu%cientemente general"=[!

    Aritmetiza$ilidad' 5olamente operaciones innega$lemente calcula$les están

    disponi$les en el paso inicial'/edios de expresión de un algoritmo*os algoritmos pueden ser expresados demuchas maneras, incluyendo al lengua#e natural, pseudocódigo, diagramas deFu#o y lengua#es de programación entre otros' *as descripciones en lengua#enatural tienden a ser am$iguas y extensas' El usar pseudocódigo y diagramasde Fu#o evita muchas am$igedades del lengua#e natural' )ichas expresionesson +ormas más estructuradas para representar algoritmos@ no o$stante, semantienen independientes de un lengua#e de programación especí%co'

    *a descripción de un algoritmo usualmente se hace en tres niveles=

    ')escripción de alto nivel' 5e esta$lece el pro$lema, se selecciona un modelomatemático y se explica el algoritmo de manera ver$al, posi$lemente conilustraciones y omitiendo detalles'

    ')escripción +ormal' 5e usa pseudocódigo para descri$ir la secuencia depasos &ue encuentran la solución'

    1'Gmplementación' 5e muestra el algoritmo expresado en un lengua#e deprogramación especí%co o algn o$#eto capaz de llevar a ca$o instrucciones'

     ;am$in es posi$le incluir un teorema &ue demuestre &ue el algoritmo escorrecto, un análisis de comple#idad o am$os'

    )iagrama de Fu#o

    )iagrama de Fu#o &ue expresa un algoritmo para calcular la raíz cuadrada deun nmero Artículo principal= )iagrama de Fu#o'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    4/27

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    5/27

    programación' Ius&ue +uentes más precisas para tener mayor comprensión deltema'

    5istemas +ormales*a teoría de autómatas y la teoría de +unciones recursivas

    proveen modelos matemáticos &ue +ormalizan el concepto de algoritmo' *osmodelos más comunes son la má&uina de ;uring, má&uina de registro y+unciones -recursivas' Estos modelos son tan precisos como un lengua#emá&uina, careciendo de expresiones colo&uiales o am$igedad, sin em$argose mantienen independientes de cual&uier computadora y de cual&uierimplementación'

    Gmplementación/uchos algoritmos son ideados para implementarse en unprograma' 5in em$argo, los algoritmos pueden ser implementados en otrosmedios, como una red neuronal, un circuito elctrico o un aparato mecánico y

    elctrico' Algunos algoritmos inclusive se dise0an especialmente paraimplementarse usando lápiz y papel' El algoritmo de multiplicación tradicional,el algoritmo de Euclides, la cri$a de Eratóstenes y muchas +ormas de resolverla raíz cuadrada son sólo algunos e#emplos'

    Karia$les5on elementos &ue toman valores especí%cos de un tipo de datosconcreto' *a declaración de una varia$le puede realizarse comenzando con var'6rincipalmente, existen dos maneras de otorgar valores iniciales a varia$les=

    '/ediante una sentencia de asignación'

    '/ediante un procedimiento de entrada de datos (por e#emplo= LreadL"'

    E#emplo=

      '''

      i=M@  read(n"@

      Dhile i N n do $egin

      (O cuerpo del $ucle O"

      i =M i P

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    6/27

      end@

      '''

    Estructuras secuenciales*a estructura secuencial es a&uella en la &ue unaacción sigue a otra en secuencia' *as operaciones se suceden de tal modo &ue

    la salida de una es la entrada de la siguiente y así sucesivamente hasta el %ndel proceso' *a asignación de esto consiste, en el paso de valores o resultadosa una zona de la memoria' )icha zona será reconocida con el nom$re de lavaria$le &ue reci$e el valor' *a asignación se puede clasi%car de la siguiente+orma=

    '5imples= 8onsiste en pasar un valor constante a una varia$le (a Q 3"

    '8ontador= 8onsiste en usarla como un veri%cador del nmero de veces &uese realiza un proceso (a Q a P "

    1'Acumulador= 8onsiste en usarla como un sumador en un proceso (a Q a P $"2')e tra$a#o= )onde puede reci$ir el resultado de una operación matemática&ue involucre muchas varia$les (a Q c P $OB2"'

    >n e#emplo de estructura secuencial, como o$tener la área de un triángulo=

    Gnicio

    '''

      Foat $, h, a@

      print+(:)iga la $ase:"@

      scan+(:R+:, S$"@

      print+(:)iga la altura:"@

      scan+(:R+:, Sh"@

      a M ($Oh"B@

      print+(:El área del triángulo es R+:, a"

    '''

    Tin

    Algoritmos como +uncionesArtículo principal= ;eoría de la computa$ilidad'

     

    Es&uemática de un algoritmo solucionando un pro$lema de ciclohamiltoniano'>n algoritmo se puede conce$ir como una +unción &ue trans+orma

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    7/27

    los datos de un pro$lema (entrada" en los datos de una solución (salida"' /ásaun, los datos se pueden representar a su vez como secuencias de $its, y engeneral, de sím$olos cuales&uiera'[! [9! [! 8omo cada secuencia de $itsrepresenta a un nmero natural (vase 5istema $inario", entonces losalgoritmos son en esencia +unciones de los nmeros naturales en los nmerosnaturales &ue sí se pueden calcular' Es decir &ue todo algoritmo calcula una+unción donde cada nmero natural es la codi%cación de un pro$lema o de unasolución'

    En ocasiones los algoritmos son suscepti$les de nunca terminar, por e#emplo,cuando entran a un $ucle in%nito' 8uando esto ocurre, el algoritmo nuncadevuelve ningn valor de salida, y podemos decir &ue la +unción &uedainde%nida para ese valor de entrada' 6or esta razón se considera &ue losalgoritmos son +unciones parciales, es decir, no necesariamente de%nidas entodo su dominio de de%nición'

    8uando una +unción puede ser calculada por medios algorítmicos, sin importarla cantidad de memoria &ue ocupe o el tiempo &ue se tarde, se dice &ue dicha+unción es computa$le' Co todas las +unciones entre secuencias datos soncomputa$les' El pro$lema de la parada es un e#emplo'

    Análisis de algoritmosArtículo principal= Análisis de algoritmos'

    8omo medida de la e%ciencia de un algoritmo, se suelen estudiar los recursos(memoria y tiempo" &ue consume el algoritmo' El análisis de algoritmos se hadesarrollado para o$tener valores &ue de alguna +orma indi&uen (oespeci%&uen" la evolución del gasto de tiempo y memoria en +unción deltama0o de los valores de entrada'

    El análisis y estudio de los algoritmos es una disciplina de las ciencias de lacomputación y, en la mayoría de los casos, su estudio es completamentea$stracto sin usar ningn tipo de lengua#e de programación ni cual&uier otraimplementación@ por eso, en ese sentido, comparte las características de lasdisciplinas matemáticas' Así, el análisis de los algoritmos se centra en losprincipios $ásicos del algoritmo, no en los de la implementación particular' >na+orma de plasmar (o algunas veces :codi%car:" un algoritmo es escri$irlo enpseudocódigo o utilizar un lengua#e muy simple tal como *exico, cuyos códigospueden estar en el idioma del programador'

    Algunos escritores restringen la de%nición de algoritmo a procedimientos &uede$en aca$ar en algn momento, mientras &ue otros consideran

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    8/27

    procedimientos &ue podrían e#ecutarse eternamente sin pararse, suponiendo elcaso en el &ue existiera algn dispositivo +ísico &ue +uera capaz de +uncionareternamente' En este ltimo caso, la %nalización con xito del algoritmo no sepodría de%nir como la terminación de este con una salida satis+actoria, sino&ue el xito estaría de%nido en +unción de las secuencias de salidas dadasdurante un periodo de vida de la e#ecución del algoritmo' 6or e#emplo, unalgoritmo &ue veri%ca &ue hay más ceros &ue unos en una secuencia $inariain%nita de$e e#ecutarse siempre para &ue pueda devolver un valor til' 5i seimplementa correctamente, el valor devuelto por el algoritmo será válido,hasta &ue evale el siguiente dígito $inario' )e esta +orma, mientras evala lasiguiente secuencia podrán leerse dos tipos de se0ales= una se0al positiva (enel caso de &ue el nmero de ceros sea mayor &ue el de unos" y una negativaen caso contrario' Tinalmente, la salida de este algoritmo se de%ne como ladevolución de valores exclusivamente positivos si hay más ceros &ue unos enla secuencia y, en cual&uier otro caso, devolverá una mezcla de se0alespositivas y negativas'

    E#emplo de algoritmoEl pro$lema consiste en encontrar el máximo de uncon#unto de nmeros' 6ara un e#emplo más comple#o vase Algoritmo deEuclides'

    )escripción de alto nivel)ado un con#unto %nito de nmeros, se tiene elpro$lema de encontrar el nmero más grande' 5in prdida de generalidad sepuede asumir &ue dicho con#unto no es vacío y &ue sus elementos estánnumerados como '

    Es decir, dado un con#unto se pide encontrar tal &ue para todo elemento &uepertenece al con#unto '

    6ara encontrar el elemento máximo, se asume &ue el primer elemento (" es elmáximo@ luego, se recorre el con#unto y se compara cada valor con el valor delmáximo nmero encontrado hasta ese momento' En el caso &ue un elementosea mayor &ue el máximo, se asigna su valor al máximo' 8uando se termina derecorrer la lista, el máximo nmero &ue se ha encontrado es el máximo de todo

    el con#unto'

    )escripción +ormalEl algoritmo puede ser escrito de una manera más +ormal enel siguiente pseudocódigo=

    Algoritmo Encontrar el máximo de un con#unto

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    9/27

    +unción max("

    BB es un con#unto no vacío de nmerosBB

     Q BB es el nmero de elementos de BB

     Q

    para Q hasta hacer

    si entonces

    Q

    devolver

    5o$re la notación=

    :Q: representa una asignación= Q signi%ca &ue la varia$le toma el valor de @

    :devolver: termina el algoritmo y devuelve el valor a su derecha (en este caso,el máximo de "'

    GmplementaciónEn lengua#e 8PP=

    int max(int c[!, int n"

    U

      int i, m M c[!@

      +or (i M @ i N n@ iPP"

      i+ (c[i! V m" m M c[i!@

      return m@

    W

    Kase tam$in;ipos de algoritmos segn su +unciónAlgoritmo de ordenamiento

    Algoritmo de $s&ueda

     ;cnicas de dise0o de algoritmosAlgoritmos voraces (greedy"= seleccionan loselementos más prometedores del con#unto de candidatos hasta encontrar unasolución' En la mayoría de los casos la solución no es óptima'

    Algoritmos paralelos= permiten la división de un pro$lema en su$pro$lemas de+orma &ue se puedan e#ecutar de +orma simultánea en varios procesadores'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    10/27

    Algoritmos pro$a$ilísticos= algunos de los pasos de este tipo de algoritmosestán en +unción de valores pseudoaleatorios'

    Algoritmos determinísticos= el comportamiento del algoritmo es lineal= cadapaso del algoritmo tiene nicamente un paso sucesor y otro antecesor'

    Algoritmos no determinísticos= el comportamiento del algoritmo tiene +orma deár$ol y a cada paso del algoritmo puede $i+urcarse a cual&uier nmero depasos inmediatamente posteriores, además todas las ramas se e#ecutansimultáneamente'

    )ivide y vencerás= dividen el pro$lema en su$con#untos dis#untos o$teniendouna solución de cada uno de ellos para despus unirlas, logrando así lasolución al pro$lema completo'

    /etaheurísticas= encuentran soluciones aproximadas (no óptimas" a pro$lemas$asándose en un conocimiento anterior (a veces llamado experiencia" de losmismos'

    6rogramación dinámica= intenta resolver pro$lemas disminuyendo su costecomputacional aumentando el coste espacial'

    Xami%cación y acotación= se $asa en la construcción de las soluciones alpro$lema mediante un ár$ol implícito &ue se recorre de +orma controladaencontrando las me#ores soluciones'

    Kuelta atrás ($acYtracYing"= se construye el espacio de soluciones del pro$lemaen un ár$ol &ue se examina completamente, almacenando las solucionesmenos costosas'

     ;emas relacionados8ota superior asintótica

    8ota in+erior asintótica

    8ota a#ustada asintótica

    8omple#idad computacional

    )iagramas de Fu#o

    )iagrama Cassi-5hneiderman

    /á&uina de ;uring

    )isciplinas relacionadas8iencias de la 8omputación

    Análisis de algoritmos

    8omple#idad computacional

    Gn+ormática

    Gnteligencia arti%cial

    Gnvestigación operativa

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    11/27

    /atemáticas

    6rogramación

    Xe+erencias'Z Jump up to= a $ c d e Irassard, .illes@ Iratley, 6aul (997"'Tundamentos de Algoritmia' /adrid= 6XEC;G8E A**' G5IC 8A8GC' G5IC 97-4-417-1'

    4'Jump up Z 8arl Xeynolds S 6aul ;ymann (

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    12/27

    Gntroduction to Algorithms' A 8reative Approach, /am$er, >'

    Algorithms in 8 (1r ed", 5edgeDicY, X' (tam$in existen versiones en 8PP y Java"

     ;he )esign and Analysis o+ 8omputer Algorithms, Aho, A'

    Enlaces externos`iYili$ros

     `iYili$ros al$erga un li$ro o manual so$re Algoritmia'

     `iYcionario tiene de%niciones para algoritmo' ìYcionario

    6ortal de algoritmia

     ;cnicas de )ise0o de Algoritmos manual &ue explica y e#empli%ca los distintosparadigmas de dise0o de algoritmos' Xosa .uere&ueta y Antonio Kallecillo(pro+esores de la >niversidad de /álaga"'

     ;ransparencias de la asignatura :Es&uemas Algorítmicos:, 8ampos, J'

    Apuntes y pro$lemas de Algorítmica por )omingo .imnez 8ánovas

    8urso de )ise0o de Algoritmos de 8arlos 6es

    Algoritmos y )iagramas de Tlu#o

    martes, 2 de marzo de 9Algoritmo

    A*.HXG;/H5

    )ETGCG8GC= >n Algoritmo, se puede de%nir como una secuencia deinstrucciones &ue representan un modelo de solución para determinado tipo depro$lemas' H $ien como un con#unto de instrucciones &ue realizadas en ordenconducen a o$tener la solución de un pro$lema' 6or lo tanto podemos decir&ue es un con#unto ordenado y %nito de pasos &ue nos permite solucionar unpro$lema'

    *os algoritmos son independientes de los lengua#es de programación' En cadapro$lema el algoritmo puede escri$irse y luego e#ecutarse en un lengua#e de

    di+erente programación' El algoritmo es la in+raestructura de cual&uiersolución, escrita luego en cual&uier lengua#e de programación'

    6rograma= >n programa es una serie de instrucciones ordenadas, codi%cadasen lengua#e de programación &ue expresa un algoritmo y &ue puede sere#ecutado en un computador'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    13/27

    8*A5GTG8A8GC )E A*.HXG;/H5= *os algoritmos se pueden clasi%car en cuatrotipos=

    Algoritmo computacional= Es un algoritmo &ue puede ser e#ecutado en una

    computadora' E#emplo= Tórmula aplicada para un cálculo de la raíz cuadrada deun valor x'

    Algoritmo no computacional= Es un algoritmo &ue no re&uiere de unacomputadora para ser e#ecutado' E#emplo= Gnstalación de un e&uipo de sonido'

    Algoritmo cualitativo= >n algoritmo es cualitativo cuando en sus pasos oinstrucciones no están involucrados cálculos numricos' E#emplos= *asinstrucciones para desarrollar una actividad +ísica, encontrar un tesoro'

    Algoritmo cuantitativo= >na algoritmo es cuantitativo cuando en sus pasos oinstrucciones involucran cálculos numricos' E#emplo= 5olución de unaecuación de segundo grado'

    8AXA8;EXf5;G8A5 )E >C A*.HXG;/H= ;odo algoritmo de$e tener las siguientescaracterísticas=

    ' )e$e ser 6reciso, por&ue cada uno de sus pasos de$e indicar de maneraprecisa e ine&uívoca &ue se de$e hacer'

    ' )e$e ser Tinito, por&ue un algoritmo de$e tener un nmero limitado depasos'

    1' )e$e ser )e%nido, por&ue de$e producir los mismos resultados para lasmismas condiciones de entrada'

    2' 6uede tener cero o más elementos de entrada'

    3' )e$e producir un resultado' *os datos de salida serán los resultados dee+ectuar las instrucciones'

    6AX;E5 )E >C A*.HXG;/H= ;odo Algoritmo de$e tener las siguientes partes=

    Entrada de datos, son los datos necesarios &ue el algoritmo necesita para sere#ecutado'

    6roceso, es la secuencia de pasos para e#ecutar el algoritmo'

    5alida de resultados, son los datos o$tenidos despus de la e#ecución delalgoritmo'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    14/27

     ;8CG8A5 )E XE6XE5EC;A8GC= 6ara la representación de un algoritmo, antesde ser convertido a lengua#e de programación, se utilizan algunos mtodos de

    representación escrita, grá%ca o matemática' *os mtodos más conocidos son=

    )iagramación li$re ()iagramas de Fu#o"'

    )iagramas Cassi-5hneiderman'

    6seudocódigo'

    *engua#e natural (espa0ol, ingls, etc'"'

    Tórmulas matemáticas'6seudocódigo

    En ciencias de la computación, y análisis numrico el pseudocódigo (o +alsolengua#e" es una descripción in+ormal[! de alto nivel de un algoritmoin+ormático de programación, compacto e in+ormal, &ue utiliza lasconvenciones estructurales de un lengua#e de programación verdadero[! ,pero &ue está dise0ado para la lectura humana en lugar de la lectura mediantemá&uina, y con independencia de cual&uier otro lengua#e de programación'Cormalmente, el pseudocódigo omite detalles &ue no son esenciales para lacomprensión humana del algoritmo, tales como declaraciones de varia$les,código especí%co del sistema y algunas su$rutinas' El lengua#e deprogramación se complementa, donde sea conveniente, con descripcionesdetalladas en lengua#e natural, o con notación matemática compacta' 5e utilizapseudocódigo pues este es más +ácil de entender para las personas &ue elcódigo de lengua#e de programación convencional, ya &ue es una descripcióne%ciente y con un entorno independiente de los principios +undamentales de unalgoritmo' 5e utiliza comnmente en los li$ros de texto y pu$licacionescientí%cas &ue se documentan varios algoritmos, y tam$in en la plani%cacióndel desarrollo de programas in+ormáticos, para es$ozar la estructura delprograma antes de realizar la e+ectiva codi%cación' Co existe una sintaxis

    estándar para el pseudocódigo, aun&ue los ocho G)ELs &ue mane#anpseudocódigo tengan su sintaxis propia' Aun&ue sea parecido, el pseudocódigono de$e con+undirse con los programas es&ueleto &ue incluyen código %cticio,&ue pueden ser compilados sin errores' *os diagramas de Fu#o y >/* puedenser considerados como una alternativa grá%ca al pseudocódigo, aun&ue seanmás amplios en papel'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    15/27

    Aplicación[editar editar código!/uchas veces, en los li$ros de texto ypu$licaciones cientí%cas relacionadas con la in+ormática y la computaciónnumrica, se utilizan pseudocódigo en la descripción de algoritmos, de manera&ue todos los programadores puedan entenderlo, aun&ue no todos conozcan elmismo lengua#e de programación' .eneneralmente, en los li$ros de texto, hayuna explicación &ue acompa0a la introducción &ue explica las convencionesparticulares en uso' El nivel de detalle del pseudocódigo puede, en algunoscasos, acercarse a la de +ormalizar los idiomas de propósito general'

    >n programador &ue tiene &ue aplicar un algoritmo especí%co, so$re todo unodes+amiliarizado, generalmente comienza con una descripción enpseudocódigo, y luego :traduce: esa descripción en el lengua#e deprogramación meta y lo modi%ca para &ue interacte correctamente con elresto del programa' *os programadores tam$in pueden iniciar un proyectodescri$iendo la +orma del código en pseudocódigo en el papel antes de

    escri$irlo en su lengua#e de programación, como ocurre en la estructuración deun en+o&ue de ;op-doDn y Iottom-up arri$a hacia a$a#o'

    5intaxis[editar editar código!En la actualidad y por lo general, elpseudocódigo, como su nom$re lo indica, no o$edece a las reglas de sintaxisde ningn idioma en particular ni es de +orma estándar sistemática, a pesar de&ue cual&uier escritor en particular vaya a pedir prestado las estructuras decontrol general, la sintaxis y el estilo, por e#emplo, de algn lengua#e deprogramación convencional' 6ero en caso de &ue se &uiera e#ecutar, se de$ellevar a +orma tipo, para &ue no genere mensa#es de error' *as +uentes

    populares incluyen la sintaxis de 6ascal, IA5G8, 8, 8PP, Java, *isp, y A*.H*'6or lo general, se omiten las declaraciones de varia$les' A veces, las llamadasa +unciones, los $lo&ues de código y el código contenido dentro de un loop seremplazan por una sentencia de una línea en lengua#e natural'

    )ependiendo del escritor, el pseudocódigo puede variar mucho en su estilo,yendo desde en un extremo, una imitación casi exacta de un lengua#e deprogramación real, hasta al acercarse a una descripción en prosa de +ormatode pseudocódigo en el otro extremo'

    Este es un e#emplo de pseudocódigo (para el #uego matemático $izz $uzz"=

    6seudocódigo estilo Tortran=

    programa $izz$uzz

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    16/27

    hacer i M hasta

    esta$lecer printnum$er a verdadero

      si i es divisi$le por 1

      escri$ir :Iizz:

      esta$lecer printnum$er a +also

      si i es divisi$le por 3

      escri$ir :Iuzz:

    esta$lecer printnum$er a +also

      si printnum$er, escri$ir i

      escri$ir una nueva línea

    %n del hacer

     6seudocódigo estilo 6ascal=

    procedimiento $izz$uzz

    para i =M hasta hacer

      esta$lecer printnum$er a verdadero@

      5i i es divisi$le por 1 entonces

      escri$ir :Iizz:@

      esta$lecer printnum$er a +also@

      5i i es divisi$le por 3 entonces

      escri$ir :Iuzz:@

      esta$lecer printnum$er a +also@

      5i printnum$er, escri$ir i@

      escri$ir una nueva lína@

    %n

     6seudocódigo estilo 8=

    su$proceso +uncion $izz$uzz

    para (i N- @ iNM@ iPP" U

      esta$lecer printnum$er a verdadero@

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    17/27

      5i i es divisi$le por 1

      escri$ir :Iizz:@

      esta$lecer printnum$er a +also@

      5i i es divisi$le por 3

      escri$ir :Iuzz:@

      esta$lecer printnum$er a +also@

      5i printnum$er, escri$ir i@

      escri$ir una nueva línea@

    W

     

    8aracterísticas y partes[editar editar código!*as principales características deeste lengua#e son=

    '5e puede e#ecutar en un ordenador (con un G)E como por e#emplo 5*E, *66,6ilato\, /aruga 5cript, 5eudocódigo o 65eGnt' Htros Gdes de consideración sonGnter-6 y Algor"

    'Es una +orma de representación sencilla de utilizar y de manipular'

    1'Tacilita el paso del programa al lengua#e de programación'

    2'Es independiente del lengua#e de programación &ue se vaya a utilizar'

    3'Es un mtodo &ue +acilita la programación y solución al algoritmo delprograma'

     ;odo documento en pseudocódigo de$e permitir la descripción de=

    'Gnstrucciones primitivas'

    'Gnstrucciones de proceso''''

    1'Gnstrucciones de control'

    2'Gnstrucciones compuestas'

    3'Gnstrucciones de descripción'

    Estructura a seguir en su realización=

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    18/27

    '8a$ecera'

    '6rograma'

    '/ódulo'

    1';ipos de datos'

    2'8onstantes'

    3'Karia$les'

    '8uerpo'

    'Gnicio'

    'Gnstrucciones'

    1'Tin'

    )e%nición de datos del pseudocódigo[editar editar código!*a de%nición de

    datos se da por supuesta, so$re todo en las varia$les sencillas, si se emplea+ormaciones= pilas, colas, vectores o registros, se pueden de%nir en la ca$eceradel algoritmo, y naturalmente cuando empleemos el pseudocódigo para de%nirestructuras de datos, esta parte la desarrollaremos adecuadamente'

    Tunciones y operaciones[editar editar código!8ada autor usa su propiopseudocódigo con sus respectivas convenciones' 6or e#emplo, la instrucción:reemplace el valor de la varia$le por el valor de la varia$le : puede serrepresentado como=

    asigne a el valor de

    *as operaciones aritmticas se representan de la +orma usual en matemáticas'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    19/27

     

    Estructuras de control[editar editar código!En la redacción del pseudocódigose utiliza tres tipos de estructuras de control= las secuenciales, las selectivas y

    las iterativas'

    Estructuras secuenciales[editar editar código!*as instrucciones se siguen enuna secuencia %#a &ue normalmente viene dada por el nmero de renglón' Esdecir &ue las instrucciones se e#ecutan de arri$a hacia a$a#o' *as instruccionesse e#ecutan dependiendo de la condición dada dentro del algoritmo'

     

    Estructuras selectivas[editar editar código!*as instrucciones selectivasrepresentan instrucciones &ue pueden o no e#ecutarse, segn el cumplimientode una condición'

     

    )iagrama de Fu#o &ue muestra el +uncionamiento de la instrucción condicional'

     

    *a condición es una expresión $ooleana' Gnstrucciones es e#ecutada sólo si lacondición es verdadera'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    20/27

    5electiva do$le (alternativa"[editar editar código!*a instrucción alternativarealiza una instrucción de dos posi$les, segn el cumplimiento de unacondición'

     )iagrama de Fu#o &ue muestra el +uncionamiento de la instrucción condicional'

     

    *a condición es una varia$le $ooleana o una +unción reduci$le a $ooleana(lógica, KerdaderoBTalso"' 5i esta condición es cierta se e#ecuta Gnstrucciones,si no es así, entonces se e#ecuta Gnstrucciones'

    5electiva mltiple[editar editar código!;am$in es comn el uso de unaselección mltiple &ue e&uivaldría a anidar varias +unciones de selección'

     

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    21/27

    En este caso hay una serie de condiciones &ue tienen &ue ser mutuamenteexcluyentes, si una de ellas se cumple las demás tienen &ue ser +alsasnecesariamente, hay un caso si no &ue será cierto cuando las demáscondiciones sean +alsas'

    En esta estructura si 8ondición es cierta, entonces se e#ecuta sóloGnstrucciones' En general, si 8ondicióni es verdadera, entonces sólo see#ecuta Gnstruccionesi

    5electiva mltiple-8asos[editar editar código!>na construcción similar a laanterior (e&uivalente en algunos casos" es la &ue se muestra a continuación'

     

    En este caso hay un Gndicador es una varia$le o una +unción cuyo valor escomparado en cada caso con los valores :Kalori:, si en algn caso coincidenam$os valores, entonces se e#ecutarán las Gnstruccionesi correspondientes' *asección en otro caso es análoga a la sección si no del e#emplo anterior'

    Estructuras iterativas[editar editar código!*as instrucciones iterativasrepresentan la e#ecución de instrucciones en más de una vez'

    Iucle mientras[editar editar código!Artículo principal= Iucle Dhile'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    22/27

    El $ucle se repite mientras la condición sea cierta, si al llegar por primera vezal $ucle mientras la condición es +alsa, el cuerpo del $ucle no se e#ecutaninguna vez'

     )iagrama de Fu#o &ue muestra el +uncionamiento de la instrucción mientras

     

    Iucle repetir[editar editar código!Existen otras variantes &ue se derivan apartir de la anterior' *a estructura de control repetir se utiliza cuando esnecesario &ue el cuerpo del $ucle se e#ecuten al menos una vez y hasta &ue secumpla la condición=

     

    *a estructura anterior e&uivaldría a escri$ir=

     

    Iucle hacer[editar editar código!El Iucle hacer se utiliza para repetir un$lo&ue de código mientras se cumpla cierta condición'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    23/27

     

    Iucle para[editar editar código!Artículo principal= Iucle +or'

    >na estructura de control muy comn es el ciclo para, la cual se usa cuando sedesea iterar un nmero conocido de veces, empleando como índice unavaria$le &ue se incrementa (o decrementa"= 6lantilla=)e%niciones

    la cual se de%ne como=

     

    Iucle para cada[editar editar código!6or ltimo, tam$in es comn usar laestructura de control para cada' Esta sentencia se usa cuando se tiene unalista o un con#unto y se &uiere iterar por cada uno de sus elementos=

     

    5i asumimos &ue los elementos de son , entonces esta sentencia e&uivaldría a=

     

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    24/27

     

    jue es lo mismo &ue=

     

    5in em$argo, en la práctica existen me#ores +ormas de implementar estainstrucción dependiendo del pro$lema'

    Es importante recalcar &ue el pseudocódigo no es un lengua#e estandarizado'Eso signi%ca &ue di+erentes autores podrían dar otras estructuras de control o$ien usar estas mismas estructuras, pero con una notación di+erente' 5in

    em$argo, las +unciones matemáticas y lógicas toman el signi%cado usual &uetienen en matemática y lógica, con las mismas expresiones'

    El anidamiento[editar editar código!8ual&uier instrucción puede ser sustituidapor una estructura de control' El siguiente e#emplo muestra el pseudocódigodel ordenamiento de $ur$u#a, &ue tiene varias estructuras anidadas' Estealgoritmo ordena de menor a mayor los elementos de una lista '

     

    En general, las estructuras anidadas se muestran indentadas, para hacer mássencilla su identi%cación a simple vista' En el e#emplo, además de laindentación, se ha conectado con Fechas los pares de delimitadores de cadanivel de anidamiento'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    25/27

    )esarrollo de algoritmos[editar editar código!8on este pseudocódigo se puededesarrollar cual&uier algoritmo &ue=

     ;enga un nico punto de inicio'

     ;enga un nmero %nito de posi$les puntos de trmino'

    aya un nmero %nito de caminos, entre el punto de inicio y los posi$lespuntos de trmino'

    Tunciones y procedimientos[editar editar código!/uchas personas pre%erendistinguir entre +unciones y procedimientos' >na +unción, al igual &ue una+unción matemática, reci$e uno o varios valores de entrada y regresa unasalida mientras &ue un procedimiento reci$e una entrada y no genera ningunasalida aun&ue en algn caso podría devolver resultados a travs de sus

    parámetros de entrada si estos se han declarado por re+erencia (ver +ormas depasar argumentos a una +unción o procedimiento"'

    En am$os casos es necesario de#ar en claro cuáles son las entradas para elalgoritmo, esto se hace comnmente colocando estos valores entre parntesisal principio o $ien declarándolo explícitamente con un enunciado' En el caso delas +unciones, es necesario colocar una pala$ra como regresar o devolver paraindicar cuál es la salida generada por el algoritmo' 6or e#emplo, elpseudocódigo de una +unción &ue permite calcular (un nmero elevado apotencia "'

     

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    26/27

     

    >n e#emplo de procedimiento seria el algoritmo de Hrdenamiento de $ur$u#a,por el &ue partiendo de una lista de valores estos se ordenan, nótese &ue en unprocedimiento, no se calcula el valor de una +unción, sino &ue se realiza unaacción, en este caso ordenar la lista'

     

    Kenta#as del pseudocódigo so$re los diagramas de Fu#o[editar editarcódigo!*os pseudocódigos presentan los siguientes $ene%cios=

    'Hcupan mucho menos espacio en el desarrollo del pro$lema'

    '6ermite representar de +orma +ácil operaciones repetitivas comple#as'

    1'Es más sencilla la tarea de pasar de pseudocódigo a un lengua#e deprogramación +ormal'

  • 8/18/2019 DEFINICION DE ALGORITMO.docx

    27/27

    2'5i se siguen las reglas de identación se puede o$servar claramente losniveles en la estructura del programa'

    3'En los procesos de aprendiza#e de los alumnos de programación, stos estánmás cerca del paso siguiente (codi%cación en un lengua#e determinado, &ue los&ue se inician en esto con la modalidad )iagramas de Tlu#o"'

    4'/e#ora la claridad de la solución de un pro$lema'

    Enlaces externos[editar editar código!6seudocódigo - )iagramas de Fu#o,programación $ásica

    5intaxis del pseudocódigo 8EE (8 en espa0ol"

    Toro 6rogramación, tutoriales y e#emplos

    65EGC; - 6G6E pseudointrprete

    E#ercicios de programación en peseudocódigo

    Gntrprete de algoritmos en espa0ol

     ;utorial de 6seudocódigo en Espa0ol

    Xe+erencias[editar editar código!'Jump up Z ^6seudocódigo - Estructurascondicionales_' 8onsultado el 7 de diciem$re de '

    'Jump up Z ^Gnstroducción al 6seudo8ódigo_' 8onsultado el 7 de diciem$re de'

    Ii$liogra+ía[editar editar código!'6e0a /arí, Xicardo (3" (en espa0ol"')ise0o de programas= +ormalismo y a$stracción (1 edición"' 6earson Alham$ra'pp' 2