You are on page 1of 17

Algoritmo

Los diagramas de flujo sirven para representar algoritmos de manera grfica.

En matemticas, lgica, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al- uarismi! " es un conjunto prescrito de instrucciones o reglas #ien definidas, ordenadas y finitas $ue permite realizar una actividad mediante pasos sucesivos $ue no generen dudas a $uien de#a realizar dic%a actividad.& 'ados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se o#tiene una solucin. Los algoritmos son el o#jeto de estudio de la algoritmia.! En la vida cotidiana, se emplean algoritmos frecuentemente para resolver pro#lemas. Algunos ejemplos son los manuales de usuario, $ue muestran algoritmos para usar un aparato, o las instrucciones $ue reci#e un tra#ajador por parte de su patrn. Algunos ejemplos en matemticason el algoritmo de multiplicacin, para calcular el producto, el algoritmo de la divisin para calcular el cociente de dos n(meros, el algoritmo de Euclides para o#tener el m)imo com(n divisor de dos enteros positivos, o el m*todo de +auss para resolver un sistema lineal de ecuaciones.

Definicin formal
En general, no e)iste ning(n consenso definitivo en cuanto a la definicin formal de algoritmo. ,uc%os autores los se-alan como listas de instrucciones para resolver un clculo o un pro#lema a#stracto, es decir, $ue un n(mero finito de pasos convierten los datos de un pro#lema (entrada" en una solucin (salida". ! & . / 0 1 2in em#argo ca#e notar $ue algunos algoritmos no necesariamente tienen $ue terminar o resolver un pro#lema en particular. 3or ejemplo, una versin modificada de la cri#a de Eratstenes $ue nunca termine de calcular n(meros primos no deja de ser un algoritmo. 4

A lo largo de la %istoria varios autores %an tratado de definir formalmente a los algoritmos utilizando modelos matemticos. Esto fue realizado por Alonzo 5%urc% en !6.1 con el concepto de 7calcula#ilidad efectiva7 #asada en su clculo lam#da y por Alan 8uring #asndose en la m$uina de 8uring. Los dos enfo$ues son e$uivalentes, en el sentido en $ue se pueden resolver e)actamente los mismos pro#lemas con am#os enfo$ues. .9 6 2in em#argo, estos modelos estn sujetos a un tipo particular de datos como son n(meros, sm#olos o grficasmientras $ue, en general, los algoritmos funcionan so#re una vasta cantidad de estructuras de datos.. ! En general, la parte com(n en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:4 Tiempo secuencial. ;n algoritmo funciona en tiempo discretizado <paso a paso<, definiendo as una secuencia de estados 7computacionales7 por cada entrada vlida (la entrada son los datos $ue se le suministran al algoritmo antes de comenzar". Estado abstracto. 5ada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementacin (los algoritmos son o#jetos a#stractos" de manera $ue en un algoritmo las estructuras de primer orden son invariantes #ajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente $ueda completamente determinada por una descripcin fija y finita= es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de t*rminos del estado actual. En resumen, un algoritmo es cual$uier cosa $ue funcione paso a paso, donde cada paso se pueda descri#ir sin am#ig>edad y sin %acer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos $ue se pueden leer?escri#ir en un solo paso. Esta amplia definicin a#arca tanto a algoritmos prcticos como a$uellos $ue solo funcionan en teora, por ejemplo el m*todo de @eAton y la eliminacin de +auss- ordan funcionan, al menos en principio, con n(meros de precisin infinita= sin em#argo no es posi#le programar la precisin infinita en una computadora, y no por ello dejan de ser algoritmos. !B En particular es posi#le considerar una cuarta propiedad $ue puede ser usada para validar la tesis de 5%urc%-8uring de $ue toda funcin calcula#le se puede programar en una m$uina de 8uring (o e$uivalentemente, en un lenguaje de programacin suficientemente general":!B Aritmetizabilidad. 2olamente operaciones innega#lemente calcula#les estn disponi#les en el paso inicial.

Cistoria del Algoritmo


La palabra algoritmo proviene del nombre del matemtico llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi ha! muchas variantes para el nombre al usar el al"abeto latin# tales como Al-Khorezmi# Al-Khwarizmi# Al-Khawarizmi# Al-Khawaritzmi o Al-Khowarizmi$ %ue vivi entre los siglos &''' ! '() *u traba+o consisti en preservar ! di"undir el conocimiento de la antigua ,recia ! de la 'ndia) *us libros eran de "cil comprensin# de ah- %ue su principal valor no "uera el de crear nuevos teoremas o nuevas corrientes de pensamiento# sino el de simpli"icar las matemticas a un nivel lo su"icientemente ba+o para %ue pudiera ser comprendido por un amplio p.blico) /abe destacar cmo se0al las virtudes del sistema decimal indio en contra de los sistemas tradicionales rabes$ ! cmo explic %ue# mediante una especi"icacin clara ! concisa de cmo calcular sistemticamente# se podr-an de"inir algoritmos %ue "ueran usados en dispositivos mecnicos similares a un baco en vez de las manos) Tambi1n estudi la manera de reducir el numero de operaciones necesarias %ue "ormaban el clculo) 2or esta razn# aun%ue no ha!a sido 1l el inventor del primer algoritmo# merece %ue este concepto est1 asociado a su nombre) Al-Khorezmi "ue sin duda el primer pensador algor-tmico) 3a en el siglo ('(# se produ+o el primer algoritmo escrito para un computador) La autora "ue Ada 4!ron# en cu!os escritos se detallaban la m%uina anal-tica en 5678) 2or ello %ue es considerada por muchos como la primera programadora aun%ue# desde /harles 4abbage# nadie complet su m%uina# por lo %ue el algoritmo nunca se implement) La idea de resolver un problema o de disponer de un algoritmo es bastante antigua# tal es as-# %ue exist-a la errada creencia %ue no hab-a problema %ue no se pudiera resolver ! en base a ello# el matemtico 9avid :ilbert %uiso descubrir un algoritmo para los algoritmos) :o! en dia gracias a los traba+os de Kurt ,;del# Alonzo /hurch calculo lamba$# Alan Turing ma%uina de turing$# se sabe %ue dentro del universo de problemas# una pe%ue0a parte es computable# luego %ue el ob+etivo %ue perseguia 9avid :ilbert no era computable# es lo %ue se ha denominado como la computabilidad de los algoritmos)

TIPOS DE ALGORITMOS Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtencin de una respuesta o solucin de un problema cualquier Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso.

Son aquellos pasos o instrucciones que involucran clculos numricos para llegar a un resultado satisfactorio

Tipos de algoritmos de razonamiento: Algoritmos Est ti!os: son los que funcionan siempre igual, independientemente del tipo de problema tratado. Algoritmos Adaptativos: algoritmos con cierta capacidad de aprendizaje. Algoritmos Pro"a"il#sti!os: son algoritmos que no utilizan valores de verdad booleanos sino continuos. Existen varios tipos de algoritmos probabil sticos dependiendo de su funcionamiento, pudindose distinguir: ! "lgoritmos numricos: que aproximada del problema. proporcionan una solucin

! "lgoritmos de #ontecarlo: que pueden dar la respuesta correcta o respuesta errneas $con probabilidad baja%. ! "lgoritmos de &as 'egas: que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo. Algoritmo Cotidiano: es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas ( actividades comunes, desde los pasos al levantarnos, as como ir de compras, etc. Algoritmo $oraz: un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una meta )eur sticaconsistente en elegir la opcin ptima en cada paso local con la esperanza de llegar a una solucin general ptima. Algoritmo Determinista: es un algoritmo que, en trminos informales, es completamente predictivo si se conocen susentradas.

Algoritmo %eur#sti!o: es un algoritmo que abandona uno o ambos objetivos* por ejemplo, normalmente encuentran buenas soluciones, aunque no )a( pruebas de que la solucin no pueda ser arbitrariamente errnea en algunos casos* o se ejecuta razonablemente rpido, aunque no existe tampoco prueba de que siempre ser as . &as )eur sticas generalmente son usadas cuando no existe una solucin ptima bajo las restricciones dadas $tiempo, espacio, etc.%, o cuando no existe del todo. Algoritmo de es!alada: la idea bsica consiste en comenzar con una mala solucin a un determinado problema (, repetidamente, aplicar optimizaciones a la misma )asta que esta sea ptima o satisfaga alg+n otro requisito. Cien!ias en &ue se apo'a la algoritmia para produ!ir solu!iones ingeniosas( , -iencias de la -omputacin. , #atemticas. , -iencias Sociales. , -iencias .ol ticas. )C*mo podemos determinar la !omple+idad de un algoritmo, /o existe receta que siempre funcione para calcular la complejidad de un algoritmo, si es posible tratar sistemticamente una gran cantidad de ellos, basndonos en que suelen estar bien estructurados ( siguen pautas uniformes. &oa algoritmos bien estructurados combinan las sentencias de alguna de las siguientes formas: , Sentencias sencillas , Secuencia $*%

, 0ecisin $if% , 1ucles &lamadas a procedimiento. ,


Definicin de Algoritmo. 7;n algoritmo se define como un m*todo $ue se realiza paso a paso para solucionar un pro#lema $ue termina en un n(mero finito de pasos7. Las caractersticas fundamentales $ue de#e cumplir todo algoritmo son:

Debe ser preciso. e indicar el orden de realizacin de cada paso. Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento ; o sea debe tener un nmero finito de pasos. La definicin de un algoritmo debe describir tres partes : Entrada, Proceso y Salida. 'ise-ar un algoritmo para cam#iar una llanta a un coc%e.

nicio. !raer gato. Levantar el coc"e con el gato. #flo$ar tornillos de las llantas. Sacar los tornillos de las llantas. %uitar la llanta. &oner la llanta de repuesto. &oner los tornillos. #pretar los tornillos. 'a$ar el gato. (in.
Algoritmos Cotidianos. 2on a$u*llos $ue nos ayudan a resolver pro#lemas diarios, y $ue los %acemos casi sin darnos cuenta de $ue estamos siguiendo una metodologa para resolverlos.

Algunos e+emplos son< ;n cliente ejecuta un pedido a una f#rica. La f#rica e)amina en su #anco de datos la fic%a del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rec%azar el pedido. 3asos del algoritmo: Dnicio.

Leer el pedido. )*aminar fic"a del cliente. Si el cliente es solvente aceptar pedido, en caso contrario rec"azar pedido.
Ein. 'eterminar el mayor de tres n(meros enteros. 3asos del algoritmo : !.- 5omparar el primero y el segundo entero, deduciendo cul es el mayor. &.- 5omparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado. Los pasos anteriores se pueden descomponer en otros pasos ms simples en los $ue se denomina refinamiento del algoritmo. !.- F#tener el primer n(mero (entrada", denominado @;,!. &.- F#tener el segundo n(mero (entrada", denominado @;,&. ..- 5ompara @;,! con @;,& y seleccionar el mayor = si los dos enteros son iguales, seleccionar @;,!. Llamar a este n(mero ,AGFH. /.- F#tener el tercer n(mero (entrada", y se denomina @;,.. 0.- 5ompara ,AGFH con @;,. y seleccionar el mayor = si los dos enteros son iguales, seleccionar el ,AGFH. 'enominar a este n(mero ,AGFH. 1.- 3resentar el valor ,AGFH (salida". 4.- Ein. Definicin de Lenguajes Algortmicos. Los algoritmos pueden descri#irse utilizando diversos lenguajes. 5ada uno de estos lenguajes permiten descri#ir los pasos con mayor o menor detalle. La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente manera :

Lengua$e +atural. Lengua$e de Diagrama de (lu$o.

Lengua$e +atural de &rogramacin. Lengua$e de &rogramacin de #lgoritmos. Lenguaje Natural. Es a$u*l $ue descri#e en espa-ol, para nuestro caso, los pasos a seguir utilizando un voca#ulario cotidiano. 2e le conoce como lenguaje jergacuando se utilizan t*rminos especializados de una determinada ciencia, profesin o grupo. Lenguaje de Diagrama de Flujo. Es a$u*l $ue se vale de diversos sm#olos para representar las ideas o acciones a desarrollar. Es (til para organizar las acciones o pasos de un algoritmo pero re$uiere de etapas posteriores para implementarse en un sistema de cmputo. Lenguaje Natural de Programacin. 2on a$u*llos $ue estn orientados a la solucin de pro#lemas $ue se definen de una manera precisa. +eneralmente son aplicados para la ela#oracin de frmulas o m*todos cientficos. El lenguaje natural tiene las siguientes caractersticas :

)vita la ambig,edad -algo confuso .ue se puede interpretar de varias maneras/. Son precisos 0 bien definidos. 1tilizan t2rminos familiares al sentido comn. )limina instrucciones innecesarias. Lenguaje de Programacin de Algoritmos. Es a$u*l $ue se utiliza para introducir en la computadora un algoritmo especfico. 2e les conoce tam#i*n como Lenguaje de Programacin. Lenguaje de Programacin : Es un conjunto de pala#ras, sm#olos y reglas sintcticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un pro#lema. Los lenguajes de programacin pueden clasificarse por diversos criterios, siendo el ms com(n su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la m$uina. Los principales tipos de lenguajes utilizados son tres :

Lengua$e 34.uina. Lengua$e de ba$o +ivel -ensamblador/. Lengua$es de #lto +ivel.

Lenguaje M !uina. 2on a$u*llos $ue estn escritos en lenguajes directamente inteligi#les por la m$uina (computadora", ya $ue sus instrucciones son cadenas "inarias (cadenas o series de caracteres de dgitos B y !" $ue especifican una operacin y las posiciones (direccin" de memoria implicadas en la operacin se denominan instrucciones de m !uina o cdigo m !uina. El cdigo m$uina es el conocido cdigo "inario. #entajas del Lenguaje M !uina 3osi#ilidad de cargar (transferir un programa a la memoria" sin necesidad de traduccin posterior, lo $ue supone una velocidad de ejecucin superior a cual$uier otro lenguaje de programacin. Des$entajas del Lenguaje M !uina

Dificultad 0 lentitud en la codificacin. &oca fiabilidad. 5ran dificultad para verificar 0 poner a punto los programas. Los programas solo son e$ecutables en el mismo procesador -6&1/. )n la actualidad, las desventa$as superan a las venta$as, lo .ue "ace pr4cticamente no recomendables a los lengua$es m4.uinas. Lengua+es de 4a+o =ivel) 2on ms fciles de utilizar $ue los lenguajes m$uina, pero al igual $ue ellos, dependen de la m$uina en particular. El lenguaje de #ajo nivel por e)celencia es el ensam"lador. Las instrucciones en lenguaje ensam#lador son instrucciones conocidas como nemot%cnicos. 3or ejemplo, nemot*cnicos tpicos de operaciones aritm*ticas son : en ingl*s : A'', 2;I, 'DJ, etc. = en espa-ol : 2;,, HE2, 'DJ, etc. ;na instruccin tpica de suma sera : A'' ,, @, 3 Esta instruccin significa 7sumar el contenido en la posicin de memoria , al n(mero almacenado en la posicin de memoria @ y situar el resultado en la posicin de memoria 37 . Evidentemente es ms sencillo recordar la instruccin anterior con un nemot*cnico $ue su e$uivalente en cdigo m$uina. B!!B !BB! !B!B !B!! ;n programa escrito en lenguaje ensam#lador, re$uiere de una fase de traduccin al lenguaje m$uina para poder ser ejecutado directamente por la computadora.

El programa original escrito en lenguaje ensam#lador se denomina programa fuente y el programa traducido en lenguaje m$uina se conoce como programa o"jeto, el cual ya es directamente entendi#le por la computadora. #entajas del lenguaje ensam"lador frente al lenguaje m !uina. ,ayor facilidad de codificacin y, en general, su velocidad de clculo. Des$entajas del lenguaje ensam"lador. 'ependencia total de la m$uina lo $ue impide la transporta#ilidad de los programas (posi#ilidad de ejecutar un programa en diferentes m$uinas. El lenguaje ensam#lador del 35 es distinto del lenguaje ensam#lador del Apple ,ac%intos%. La formacin de los programadores es ms compleja $ue la correspondiente a los programadores de alto nivel, ya $ue e)ige no solo las t*cnicas de programacin, sino tam#i*n el conocimiento del interior de la m$uina. Los lenguajes ensam#lador tienen sus aplicaciones muy reducidas, se centran #sicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrnicos. Lengua+es de Alto =ivel) Estos lenguajes son los ms utilizados por los programadores. Estn dise-ados para $ue las personas escri#an y entiendan los programas de un modo muc%o ms fcil $ue los lenguajes m$uina y ensam#ladores. ;n programa escrito en lenguaje de alto nivel es independiente de la m$uina (las instrucciones no dependen del dise-o del %ardAare o de una computadora en particular", por lo $ue estos programas sonporta"les o transporta"les. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras. #entajas de los lenguajes de alto ni$el.

)l tiempo de formacin de los programadores es relativamente corto comparado con otros lengua$es. La escritura de programas se basa en reglas sint4cticas similares a los lengua$es "umanos. +ombres de las instrucciones tales como 7)#D, 87 !), &7 +!, 9&)+, etc. Las modificaciones 0 puestas a punto de los programas son m4s f4ciles. 7educcin del costo de los programas. !ransportabilidad. Des$entajas de los lenguajes de alto ni$el.

ncremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo. +o se aprovec"an los recursos internos de la m4.uina .ue se e*plotan.

muc"o me$or en lengua$es m4.uina 0 ensambladores. #umento de la ocupacin de memoria. )l tiempo de e$ecucin de los programas es muc"o ma0or. 3ara una mejor compresin de este tema se definir el concepto de programa, por ser este un t*rmino muy utilizado en el dise&o estructurado de algoritmos) 2rograma < Es un conjunto de instrucciones escritas en un lenguaje de programacin $ue indican a la computadora la secuencia de pasos para resolver un pro#lema. 'istoria ( apliacacion de los lenguajes algoritmicos. Al igual $ue los idiomas sirven de ve%culo de comunicacin entre los seres %umanos, e)isten lenguajes $ue realizan la comunicacin entre los seres %umanos y las computadoras. Estos lenguajes permiten e)presar los programas o el conjunto de instrucciones $ue el operador %umano desea $ue la computadora ejecute. Los lenguajes de computadoras toman diferentes formas= los de las primeras computadoras, como la E@DA5 y la E'2A5, se componan en el lenguaje real de las m$uinas mismas. La dificultad de programar las m$uinas de esta manera limita#a drsticamente su utilidad y proporciona#a un fuerte incentivo para $ue se desarrollaran lenguajes de programacin ms orientados %acia la e)presin de soluciones con la notacin de los pro#lemas mismos. Los primeros lenguajes de programacin se conocieron como Lenguajes )nsam"ladores, un ejemplo es: 8HA@25F'E, desarrollado para la computadora EEH;8. En los lenguajes ensam#ladores se define un cdigo especial llamado mnemnico para cada una de las operaciones de la m$uina y se introduce una notacin especial para especificar el dato con el cual de#e realizarse la operacin. A mediados de los a-os 1BKs aparecieron los primeros lenguajes de propsito general como EFH8HA@, EFH8HA@ DJ, AL+FL, 5FIFL, IA2D5, 3L?D, A'A, 5,5LL, 3A25AL, etc. pero el desarrollo de nuevas tecnologas, tanto en ar$uitectura de computadoras como en lenguajes de programacin, contin(a a paso acelerado, cada vez con mayor velocidad, el panorama est cam#iando de una etapa de sistemas y lenguajes especialmente desarrollados para aplicaciones individuales. Los lenguajes de programacin actuales son los conocidos como Lenguajes $isuales, como por ejemplo Jisual Eo), Jisual Iasic, Jisual 5 . Tema< Apuntes de los lenguajes algoritmicos, %istoria y sus aplicaciones. Autor<Gadira M.8apia @u-ez. Escuela<Dnstituto 8ecnologico de 5%i%ua%ua DD. /arrera <Lic. en informatica.

2ais<,e)ico. 2)9)'oy mi entera autorizacion para $ue manejen este tra#ajo como mejor les paresca, es lo menos $ue puedo %acer me salvaron la vida cuando mas desesperada esta#a, gracias.

Algoritmos y Pseudocdigo Algoritmos


Un algoritmo es un procedimiento a seguir, para resolver un problema en trminos de:

1.

Las

acciones

por

ejecutar

el

2. l orden en !ue dic"as acciones deben ejecutarse Un algoritmo nace en respuesta a la aparicin de un determinado problema. Una algoritmo esta compuesto de una serie #inita de pasos !ue convergen en la solucin de un problema, pero adem$s estos pasos tienen un orden espec%#ico.

ntenderemos como problema a cual!uier accin o evento !ue necesite cierto grado de an$lisis, desde la simple&a de cepillarse los dientes "asta la complejidad del ensamblado de un automvil. n general, cual!uier problema puede ser solucionado utili&ando un algoritmo, en este sentido podemos utili&ar los algoritmos para resolver problemas de computo.

Un algoritmo para un programador es una "erramienta !ue le permite resaltar los aspectos m$s importantes de una situacin y descartar los menos relevantes. 'odo problema de cmputo se puede resolver ejecutando una serie de acciones en un orden espec%#ico.

Por ejemplo considere el algoritmo !ue se elaborar%a para el problema o situacin de levantarse todas las ma(anas para ir al trabajo:

1. 2. *. +. ,. -.

)alir de la cama !uitarse el pijama duc"arse vestirse desayunar arrancar el automvil para ir al trabajo o tomar transporte.

.tese !ue en el algoritmo anterior se "a llegado a la solucin del problema en - pasos, y no se resaltan aspectos como: colocarse los &apatos despus de salir de la cama, o abrir la llave de la regadera antes de duc"arse. stos aspectos "an sido descartados, pues no tienen mayor trascendencia, en otras palabras los estamos suponiendo, en cambio e/isten aspectos !ue no podemos obviarlos o suponerlos, de lo contrario nuestro algoritmo perder%a lgica, un buen programador deber$ reconocer esos aspectos importantes y tratar de simpli#icar al m%nimo su problema.

s importante recalcar !ue los pasos de un algoritmo no son conmutativos pues, no dar%a solucin al mismo problema a tratar.

Robustez de un Algoritmo
0uiere decir !ue un algoritmo debe contemplar todas las posibles #acetas del problema !ue !ueremos resolver, al elaborar un algoritmo no se nos debe escapar ning1n detalle !ue provo!ue un #uncionamiento malo nuestro algoritmo. )i logramos construir un algoritmo robusto, cual!uier giro inesperado del problema ser$ controlado por el algoritmo, es decir, debe ser #le/ible a cambios.

Correctitud de un Algoritmo
s correcto cuando da una solucin al problema a tratar y cumple con todos lo re!uerimientos especi#icados tal !ue cumplamos con los objetivos planteados.

Completitud de un Algoritmo
2uando un algoritmo cuenta con todos los recursos para poder llegar a una solucin satis#actoria

Eficiencia y Eficacia de un Algoritmo


Un algoritmo es eficiente cuando logra llegar a sus objetivos planteados utili&ando la menor cantidad de recursos posibles, es decir, minimi&ando el uso memoria, de pasos y de es#uer&o "umano. Un algoritmo es eficaz cuando alcan&a el objetivo primordial, el an$lisis de resolucin del problema se lo reali&a prioritariamente. Puede darse el caso de !ue e/ista un algoritmo e#ica& pero no e#iciente, en lo posible debemos de manejar estos dos conceptos conjuntamente.

3esolucin de Problemas
Para lograr resolver cual!uier problema se deben seguir b$sicamente los siguientes pasos:

Anlisis del Problema. en este paso se de#ine el problema, se lo comprende y se lo anali&a con todo detalle. Diseo del Algoritmo. se debe elaborar una algoritmo !ue re#leje paso a paso la resolucin del problema. Resolucin del Algoritmo en la computadora. se debe codi#icar el algoritmo.

3esolucin de problemas utili&ando algoritmos


jemplo de licencia de corredor de bienes ra%ces. 2.1 l a(o anterior, varios de los estudiantes !ue Una universidad o#rece un curso !ue prepara a los estudiantes para el e/amen de obtencin completaron el curso presentaron el e/amen para obtener la licencia. .aturalmente la Universidad desea saber !ue resultados obtuvieron sus estudiantes en el e/amen. )e nos "a pedido escribir un programa !ue resuma los resultados recibidos de una lista de 14 estudiantes. 5unto a cada nombre se anoto un 1 si el estudiante aprob el e/amen y un 2 si reprob. /"iba un resumen de los resultados de la prueba indicando el n1mero de estudiantes !ue aprobaron y el n1mero de estudiantes !ue reprobaron . )i m$s de 6c"o estudiantes aprueban el e/amen la Universidad ser$ capa& de aumentar la colegiatura. /"ibir el mensaje 7'eclee resultado7 en la pantalla cada ve& !ue el programa solicite otro resultado de e/amen. )olucin

Algoritmo A grandes rasgos: Anali&ar los resultados del e/amen y decidir si se debe aumentar o no la colegiatura. )e 8niciali&ar puede re#inar como sigue: variables

8ntroducir las primeras 14 cali#icaciones y contar los aprobados y los reprobados. 8mprimir un resumen de los resultados de e/$menes y decidir si se debe aumentar o no la colegiatura.

Pseudocdigo
Pseudocdigo s un lenguaje arti#icial e in#ormal !ue ayuda a los programadores a desarrollar algoritmos. l Pseudocdigo es similar al lenguaje cotidiano9 es cmodo y amable con el usuario, aun!ue no es realmente in verdadero lenguaje de computadora. .o se ejecutan en las computadoras mas bien sirven para ayudar al programadora ra&onar un programa antes de intentar escribirlo en alg1n lenguaje. Un programa ejecutado en Pseudocdigo puede ser #$cilmente convertido en un programa en 2::, si es !ue esta bien elaborado. Por ejemplo

supongamos !ue la nota para aprobar un e/amen es de -4. ser%a:

l enunciado en Pseudocdigo

Si calificacin :; <= entonces 3ostrar >#probado> (inSi


l mismo enunciado se puede escribir en 2:: como:

if - calif :; <= / cout ?? >#probado>;


.tese !ue la operacin de trasladar el Pseudocdigo a cdigo #uente, se lo reali&a con el m%nimo es#uer&o, no se necesita de un mayor an$lisis.

Llevando el jemplo2.1 a Pseudocdigo.

)e puede re#inar m$s aun el algoritmo:

nicializar variables. nicializar los aprobados -aprobados/ en = nicializar los reprobados -reprobados/ en = nicializar el nmero de estudiantes -estudiantes/ en = ntroducir las primeras @= calificaciones 0 contar los aprobados 0 los reprobados. 3ientras -A"ile/ el contador estuantes es menor o igual .ue @= entonces ntroducir el siguiente resultado de e*amen Si el estudiante aprob Sumar @ a aprobados Si no Sumar @ a reprobados (inSi Sumar @ al contador estudiantes (in3ientras mprimir un resumen de los resultados de e*4menes 0 decidir si se debe aumentar o no la colegiatura. mprimir el nmero de aprobados mprimir el nmero de reprobados Si estudiantes es m4s B entonces mprimir >#umentar la colegiatura>. (inSi

;iagramas de #lujo
Un diagrama de #lujo es una representacin gr$#ica de un algoritmo o de una parte del mismo. Los diagramas de #lujo ayudan en la comprensin de la operacin de las estructuras de control <Si, Mientras=. La ventaja de utili&ar un algoritmo es !ue se lo puede construir independiente mente de un lenguaje de programacin, pues al momento de llevarlo a cdigo se lo puede "acer en cual!uier lenguaje. ;ic"os diagramas se construyen utili&ando ciertos s%mbolos de uso especial como son rect$ngulos, diamantes, valos, y pe!ue(os c%rculos, estos s%mbolos est$n conectados entre s% por #lec"as, conocidas como lneas de flujo. A continuacin se detallar$n estos s%mbolos.

Terminal. 3epresenta el inicio y #in de un programa. Proceso. )on acciones !ue el programa tiene !ue reali&ar Decisin. 8ndica operaciones lgicas o de comparacin, as% como e/presiones Entrada / Salida. .os permite ingresar datos, de un peri#rico, as% como mostrarlos Salida. s usado para mostrar datos o resultados Conector. )e coloca al principio y #in de un peda&o de programa, enla&a dos partes cual!uiera de un programa !nea de flu"o o indicador de direccin. 3epresentaremos el correspondiente diagrama de #lujo del ejemplo 2.1

You might also like