Upload
fidelramos
View
228
Download
0
Embed Size (px)
Citation preview
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