Anda di halaman 1dari 24

UNIDAD I

Algoritmos

El estudiante:
Desarrollar algoritmos,
mediante el empleo de lenguajes algortmicos en la
solucin de problemas elementales del mbito escolar y de la vida cotidiana,
propiciando soluci ones
creativas y eficientes.

INTRODUCCIN
Las soluciones a los problemas ms comunes, en su mayora, son mtodos
tan mecanizados por los seres humanos que no los notamos. Podemos
mencionar diferentes situaciones cotidianas que ameritan una solucin
mecnica. Por ejemplo, piense en cmo prender una estufa, imagnese que
en vez de verificar primero que el piloto est encendido y despus abrir la
llave de paso del gas se hiciera de manera inversa, indudablemente terminara en tragedia. Podemos sealar ejemplos ms complicados como el
sistema de semforos que controlan el trfico, la comunicacin telefnica
(almbrica e inalmbrica) o incluso la for ma en como se manejan las calificaciones en el mbito escolar que dan como resultado la aprobacin de
una materia o incluso de un semestre.
Todas estas tareas y muchas otras se pueden resolver de una manera ordenada y definida, donde no se d lugar a los errores y se pueda minimizar
accidentes. Claro que los estudiosos de las ciencias se han dado a la tarea
de crear una serie de reglas para resolver cualquier problema, dependiendo del rea que se trate se le llama de distinta for ma (mtodo, procedimiento, etc.).
En el ambiente de la informtica la solucin a este tipo de situaciones se le
llama algoritmo, pero esta notacin no es por puro capricho de los informticos, sino que proviene, como muchos otros procesos informticos,
de una denotacin matemtica que a continuacin explicaremos.

A L G O R I T MO S

1. Qu es un algoritmo?
2. Describe los pasos que se deben llevar a cabo para enviar un correo electrnico.
3. Cules son las caractersticas de los algoritmos?
4. Qu es un diagrama de flujo?
5. Qu es un pseudocdigo?

1.1

TERMINOLOGA EMPLEADA EN ALGORITMOS

La mayora de los problemas infor mticos tiene la tendencia de ocupar la misma


terminologa. De esta for ma podemos enumerar cronolgicamente lo que sucede
cuando queremos resolver un problema a travs de recursos infor mticos.
Identificacin del problema
Generalmente se debe identificar cul es el problema que se pretende resolver a
travs de medios infor mticos y con qu se pretende darle solucin. Los informticos llaman a este paso anlisis.
Todas las situaciones que rodean a un problema que puede ser resuelto mediante la
informtica pueden ser representadas por datos, inclusive hasta las condiciones en
que se presentan. En esta parte del proceso es donde podemos identificar los siguientes tipos de datos:
Datos numricos. Es todo tipo de informacin que se puede expresar por medio
de nmeros. Aqu encontramos los enteros (8, -3, 23, etc.) y los reales (o de
punto flotante 1.5, -3.85, etctera).
Datos alfanumricos. Son un conjunto de caracteres que representan algn tipo de
dato. Estn compuestos por todo el conjunto de caracteres alfabticos (a-z, AZ), numricos (0-9) y algunos caracteres especiales (+, -, *, /, <, >).
Datos lgicos. Son los que podemos representar mediante dos estados: falso y verdadero. Tambin se les conoce como datos boleanos.
Constantes. Son datos que dentro del problema en s nunca cambiarn; por ejemplo, si el problema es calcular el rea de un crculo, ? = 3.141592 ser una constante para cualquier caso.
Variables. Son datos que cambian dependiendo de las condiciones del problema
que se desea resolver. Tomando el mismo ejemplo del clculo del rea de un
crculo, la variable podra ser el radio ya que, dependiendo del tamao del crculo, cambiar ese valor.

11

12

U N I DA D

Expresiones lgicas. Son un conjunto de condiciones que slo pueden tomar dos
estados lgicos: falso y verdadero. Estn compuestos por variables, constantes,
operadores lgicos y operadores relacionales. Los operadores lgicos son: NOT
(no), AND (y) y OR (o). Los relacionales pueden ser: <, >, =, <=, >=, <>.
Dependiendo del lenguaje de programacin que se desee utilizar para resolver el
problema puede o no cambiar la forma en que se representan estos operadores.
Por ejemplo, en lenguajes de programacin basados en AN SI como C, C++ y JAVA
la negacin se representa por el smbolo de admiracin ().
Expresiones aritmticas. Son expresiones que se usan para el clculo de valores aritmticos. Son muy tiles y fciles de entender ya que se representan de for ma
muy parecida a las expresiones matemticas. Los operadores aritmticos son
los siguientes: +, -, *, /, ^, (, ), etc. Al igual que las expresiones lgicas, dependiendo del lenguaje de programacin es la for ma en como se representan algunos de los operadores aritmticos y, en ocasiones, hasta la jerarqua que tienen
unos sobre otros.

I. Realiza una consulta bibliogrfica o en la Internet acerca de los tipos de variables


que existen en los siguientes lenguajes.
Lenguaje

Variables

Constantes

Operadores Aritmticos
lgicos

Jerarqua

C
JAVA
.NET
PASCAL

II. De acuerdo con la consulta anterior menciona en cul de ellos existen coincidencias y diferencias.

Diseo de una solucin


Una vez definido el problema y con qu se quiere o se puede resolver, se planea la
forma de hacerlo, creando un algoritmo de solucin. Usualmente a este proceso se
le llama diseo.

A L G O R I T MO S

Aplicando la solucin
Cuando ya se defini cmo se va a resolver el problema, todo lo que implica su
solucin a travs de diferentes mecanismos, es hora de aplicarlo. Los informticos
le llaman a este proceso implementacin.
Supervisar la solucin
Sera excelente que al aplicar una solucin a un problema, sta resulte correcta al
primer intento. Desafortunadamente no es as, muchas veces el hecho de aplicar una
solucin nos lleva a ms problemas que no estaban previstos. En la informtica hay
que ser muy precisos en los casos que se presentan como problemas y tratar de
prever cualquier tipo de inconveniente o caso especial que se pueda presentar, para
ello se lleva a cabo un proceso llamado prueba o mantenimiento. Es aqu donde el
ciclo se puede llegar a repetir: tratando de solucionar los nuevos problemas que
intervienen en la solucin nos puede llevar de nuevo al anlisis y volver a comenzar
el ciclo. Dnde se romper el ciclo? Se romper cuando el problema sea resuelto
satisfactoriamente y todos los casos particulares estn cubiertos.
Dicho de otra for ma, podemos ver el proceso de solucin como un ciclo de vida,
por eso muchos autores manejan este proceso como el ciclo de vida del software.
Pero, muchas veces aplicar Tecnologas de la Informacin y la comunicacin nos
lleva a implementar soluciones que no precisamente se refieran a la creacin de un
nuevo software. Por ejemplo, si el problema es la vigilancia en una tienda de abarrotes entonces no es completamente necesario crear un software que vigile las actividades de los clientes para asegurarnos de que no se roben la mercanca, bastara
un sistema de cmaras que graben las actividades de los clientes dentro del establecimiento.
1.1.1 Definicin de problema
El Diccionario de la Real Academia Espaola ( DRAE ) define problema como:
Planteamiento de una situacin cuya respuesta desconocida debe obtenerse a
travs de mtodos cientficos.
Hay ciertos problemas que no pueden ser resueltos por mtodos cientficos, por
ejemplo, la existencia del amor, lo bueno y lo malo, predecir el futuro, de esta manera slo nos enfocaremos a problemas que tienen una solucin a travs de mtodos cientficos, los cuales deben tener bsicamente las siguientes caractersticas:
1. El problema debe expresar una relacin entre dos o ms variables.
2. El problema debe estar formulado claramente y sin ambigedad.

13

14

U N I DA D

3. El planteamiento implica la posibilidad de prueba emprica. Es decir, de poder


observarse en la realidad.
1.1.2 Definicin de algoritmo
La ltima edicin del Diccionario de la Real Academia Espaola ( DRAE ) define de la
siguiente for ma el algoritmo: 1
1. Conjunto ordenado y finito de operaciones que per mite hallar la solucin a
un problema; 2. Mtodo y notacin en las distintas formas del clculo.
De esta manera podemos decir que un algoritmo es la creacin de un mtodo o
procedimiento para resolver un problema. Adems, podemos asumir que este proceso es generalmente iterativo. Por consiguiente, el estudio del concepto, diseo y
construccin de algoritmos ser una necesidad ineludible en numerosos aspectos de
la vida y esencialmente en el mundo cientfico y de la ingeniera.
1.1.3 Caractersticas de algoritmos
El concepto de algoritmo no es nada nuevo ya que desde la antigedad ha existido
la necesidad de resolver problemas de for ma ordenada. Este tipo de soluciones
generalmente conviene a problemas matemticos. Si nos remontarnos a la ciudad de
Bagdad del siglo IX , durante el reinado de Al-Mamun, sabio gobernante protector
de las artes, astrnomo e hijo del legendario califa Harn al-Rashid, el cual conocemos a travs del libro de Las Mil y una Noches; encontraremos que ya se haba
escrito un tratado de matemticas que habra de ejercer enorme influencia en todo
el mundo rabe y tambin en la Europa medieval, donde se tradujo al latn cuatro
siglos ms tarde. El libro lo escribi el bibliotecario de Al-Mamun, Mohammed ibn
Musa al-Khwarizm (Mohammed, el hijo de Moiss de Khwarizm), y tena el ttulo
de Hisab al-jabr w al muqabalah (Ciencia de la reunin y la oposicin). En l se
explicaban las reglas para realizar las cuatro operaciones aritmticas elementales utilizando la notacin decimal, as como algunos procedimientos para resolver ecuaciones de primer y segundo grado. Este tratado sir vi como base para los trabajos
de muchos matemticos medievales, e introdujo en Europa la numeracin indoarbiga, cuyos mtodos se popularizaron entre los matemticos hasta casi extinguir el
uso del baco en occidente. De la corrupcin de los nombres del libro y de su autor
se originaron, adems, las palabras lgebra y algoritmo.
En la actualidad, el tr mino algoritmo denota uno de los conceptos fundamentales
de la matemtica. De esta manera, el libro describe que un procedimiento para ser
legtimamente llamado algoritmo, debe reunir las caractersticas siguientes:

1 Del rabe al-Khowrizm, sobrenombre del clebre matemtico rabe Mohamed ben Musa.

A L G O R I T MO S

1. Estar descrito por una lista finita de instrucciones.


2. Contener slo instrucciones efectivamente realizables.
3. Aplicarse en la misma for ma a todos los casos particulares del problema que
resuelva.
4. Terminar despus de ejecutarse cada instruccin a lo ms un nmero finito de
veces.

1.2 METODOLOGA DE SOLUCIN DE PROBLEMAS


Muchos autores manejan diferentes tipos de metodologas para dar solucin a problemas, pero bsicamente todos emplean los mismos pasos aunque los llamen de
forma diferente. Podemos apoyarnos en diferentes disciplinas informticas como
son la ingeniera de software, la algoritmia, la programacin, etc., para acordar
cules son los pasos ms importantes en la resolucin de un problema utilizando las
Tecnologas de la Informacin y la Comunicacin.
No olvidemos que los algoritmos no son exclusivos para resolver problemas de
software, sino tambin para resolver problemas en general. Aunque su mayor uso
es en la construccin de software, donde inter viene la tecnologa.
1.2.1 Identificacin del problema
Lo primero que debemos hacer es identificar el problema ya que si este paso en la
solucin est mal hecho, puede darnos como resultado una mala solucin que eventualmente nos cause ms problemas que antes de aplicar la propuesta.
Las consideraciones que debemos seguir, en general, para identificar un problema
son las siguientes:
Identificar las variables
En cualquier problema estn en juego ciertas condiciones que se dan a travs de
casos especficos, a estos casos les podemos llamar variables. Por ejemplo, si el
problema a resolver es el control escolar, las variables que afectan nuestro problema seran el nombre del alumno, el grado, el grupo, las materias, las calificaciones,
etctera. Es importante identificar todas y cada una de las variables que afectan a
nuestro problema, ya que trabajaremos con ellas y si se omite una podra, dependiendo del problema, causar una tragedia. Imagnese que el problema es entregar la
nmina de una empresa grande y que al hacer el anlisis no se tuvieron en cuenta las
variables antigedad y horas extras trabajadas. Sin estas dos variables el clculo de la
nmina sera incorrecto, lo que terminara seguramente en una huelga o algo parecido; de ah la importancia de incluir todas las variables que intervienen en nuestro
problema.

15

16

U N I DA D

Delimitar la solucin
Es importante definir qu parte del problema se pretende resolver a travs de las
Tecnologas de la Informacin y la Comunicacin, ya que aunque son muy tiles
para la vida cotidiana no son instrumentos de magia que resuelvan y automaticen
cualquier actividad. Por ejemplo, si nuestro problema es llevar el control de ventas
de una ferretera, slo nos interesar saber las caractersticas que tienen los artculos
y su precio. Pero existen factores que rodean a estos artculos que no nos interesaran, por ejemplo, el estado de los artculos, el tamao, quin es el distribuidor, la
existencia del mismo, etctera. Este tipo de datos seran los indicados si el problema se vuelve ms grande y deseamos llevar lo que los administradores llaman un
control de inventarios, pero nuestro problema slo consiste en llevar un control de
cunto se vende. As que delimitar nuestro problema nos sirve para crear una solucin ms concreta y eficiente.
Los recursos
sta es una de las partes ms importantes que hay que considerar para la solucin
de problemas. Se debe tener en cuenta con qu recursos contamos para solucionar
los problemas que se presentan. Por ejemplo, equipo de cmputo, redes, bases de
datos, clientes, recursos econmicos. Todo el conjunto de recursos debe considerarse para resolver el problema, ya que si falta alguno es posible que la solucin no
sea la ms adecuada y simplemente d ms problemas de los que resuelve.
1.2.2 Planteamiento de alternativas de solucin
En todos los aspectos de la vida nos tenemos que enfrentar a una toma de decisiones sean grandes o pequeos los problemas a solucionar. Existe un refrn muy popular que se puede aplicar en esta parte de la solucin de un problema: Cada
cabeza es un mundo. Esta aseveracin es muy cierta ya que para cada problema
existe ms de una forma de resolverse.
Para poder formular alternativas de solucin eficientes que puedan llevarse a cabo,
stas deben contener caractersticas como las siguientes:
1. Efectos futuros. Es importante que la duracin de la solucin de una alternativa sea
la mayor posible, ya que mientras ms tiempo dure funcionando se considera
una mejor opcin. Por ejemplo: cuando el problema es controlar la asistencia de
los empleados de una fbrica para saber cunto se le debe pagar a cada uno de
ellos, este tipo de problemas se puede resolver con un sistema infor mtico a
travs de una tarjeta con cinta magntica o un lector de huellas digitales. Esta
solucin puede durar mucho tiempo y ser ms eficiente que cualquier otra solucin tpica, como un reloj checador y tarjetas.

A L G O R I T MO S

2. Reversibilidad. Se refiere a la velocidad con que una decisin puede revertirse y la


dificultad que implica llevarla a cabo. Por ejemplo: rentar equipo de cmputo a
una empresa o comprarlo, esto implica analizar el costo que tendr el equipo y el
tiempo de vida del mismo.
3. Impacto. Esta caracterstica se refiere a la medida en que otras reas se benefician
de la implementacin de la alternativa. Por ejemplo: cuando hablamos de implementar un centro de impresin en una empresa grande, llevar el control de qu
es lo que se imprime y en qu tipo de papel y tinta se necesita, repercute en
economizar los consumibles como hojas y tintas. Esto ayuda a otras reas como
compras, almacn, etctera.
4. Calidad. Esta caracterstica se refiere a los valores ticos, principios bsicos de
conducta, imagen, etc. De esta manera se requiere que la implementacin de una
solucin no provoque ms problemas de los que intenta solucionar. Por ejemplo:
la construccin de un edificio con los materiales inadecuados por el simple hecho de ser baratos.
5. Periodicidad. Esta caracterstica se refiere a que si el problema es nico o si se
presenta muy seguido. Hay que tener en cuenta su periodicidad para poder justificar el hecho de aplicar tecnologas de la infor macin y la comunicacin. Por
ejemplo: elaborar un complejo sistema de alerta para detectar terremotos en una
zona volcnica con alta actividad ssmica como California, en los Estados Unidos, tiene sentido, pero aplicarla en lugares donde no son comunes los terremotos acabara por ser intil y se desperdiciaran los recursos econmicos y humanos.
1.2.3 Eleccin de una alter nativa de solucin
En esta parte nos encontramos con que ya tenemos varias alternativas de solucin,
ahora nos toca tratar de elegir la ms adecuada. Hay ciertos aspectos que se necesitan tener en cuenta para la eleccin de una alternativa de solucin, como son:
1. Determinar la necesidad de una solucin. Primero hay que reconocer que se tiene la
necesidad de resolver un problema. Muchas veces los problemas son excepcionales y simplemente ocurren una sola vez y no se tiene control de cundo suceden; por ejemplo, un tsunami; sin embargo, hay problemas que s se presentan
con mucha frecuencia como la comunicacin mediante documentos en alguna
empresa o dependencia de gobierno, esto se podra resolver con un sistema de
correo electrnico que per mita ahorrar consumibles de cmputo.
2. Identificar los criterios de decisin. Es necesario considerar todos los aspectos que
implica implementar una alternativa de solucin para poder elegirla. Por ejemplo: el recurso humano, el recurso econmico, el tiempo de solucin, etc.
3. Asignar peso a los criterios. De nada sir ven las caractersticas de una solucin si no
podemos medir cul es la alternativa ms adecuada para solucionar un problema. Muchas veces los criterios en s pueden definir su peso sin necesidad de
ponderarlo, por ejemplo, el costo, el tiempo que se necesita para llevar a cabo la
solucin, etc.

17

18

U N I DA D

4. Desarrollar todas las alter nativas. Para poder comparar las alternativas hay que desarrollarlas. As que este paso simplemente consiste en enlistar todas las alternativas que podran utilizarse para la solucin del problema. Por ejemplo: el Sistema
de Posicionamiento Global (GPS, por sus siglas en ingls) algunas veces es utilizado para trazar el camino ms corto entre un punto y otro, pero qu sucede
cuando existe ms de un camino y se necesita llegar en el menor tiempo; tendramos que evaluar la distancia, el trfico, el clima, etctera. Adems, deben tenerse en
cuenta todos los aspectos que implican implementar cada una de las soluciones.
5. Evaluar las alter nativas. Ya que se identificaron las alternativas hay que evaluar de
manera crtica cada una de ellas. Las ventajas y desventajas de cada alternativa
son ms evidentes cuando se comparan unas con otras.
6. Seleccionar la mejor alternativa. Si se siguen los pasos de una forma adecuada este
proceso no es ms que implementar la alternativa que obtuvo la puntuacin ms
alta en el paso 5.
1.2.4 Desarrollo de la solucin
Dependiendo de las condiciones especficas de cada problema es como se le puede
dar solucin. Los expertos en la infor mtica han creado una serie de tcnicas que
nos pueden ayudar a desarrollar nuestro algoritmo.
Mtodo de fuerza bruta
Comenzamos el estudio de esquemas algortmicos con un mtodo sencillo, pero
que debe evitarse siempre que se pueda, dada su ineficacia; la fuerza bruta. En realidad, no es un esquema algortmico si no ms bien calificativo para una forma de
disear algoritmos: tomar una solucin directa, poco reflexionada. En principio,
esto no es malo, pero dado que no se ha analizado apenas el problema, es muy
probable que no se hayan aprovechado propiedades deducibles del mismo y que la
solucin sea terriblemente ineficiente. Una solucin por fuerza bruta tambin puede
resultar adecuada como primera aproximacin a la solucin final, porque su desarrollo puede permitir profundizar ms sobre el problema y conocer propiedades
que sean utilizadas para obtener otra versin ms eficiente.
Por ejemplo, podemos citar algunos algoritmos de bsqueda de un elemento en un
conjunto de datos. Uno de ellos realizaba una bsqueda secuencial teniendo en cuenta
el nmero de elementos del conjunto de datos y poda usarse con cualquier conjunto. Otro algoritmo realizaba una bsqueda binaria, ste slo se poda usar cuando el
conjunto de datos estuviese ordenado. El algoritmo primero responde a un razonamiento ms sencillo, por lo que uno puede sentirse tentado a usar siempre. sta es
la solucin de fuerza bruta: una solucin directa, pero poco reflexionada. Lo ms
razonable es comprobar si el vector est ordenado y, en caso positivo, aprovechar
esta circunstancia para usar el algoritmo ms eficiente: el de bsqueda binaria.

A L G O R I T MO S

Mtodo voraz
Este mtodo trata de producir el mejor resultado a partir de conjunto de opciones
candidatas. Para ello, se va procediendo paso a paso realizndose la mejor eleccin
de entre las posibles. Puede emplearse en problemas de optimizacin, como en la
bsqueda de caminos mnimos sobre grafos, la planificacin en el orden de la ejecucin de unos programas en una computadora, etc.
Un ejemplo sera dar un cambio utilizando el menor nmero de monedas. Considrese ahora el problema de la devolucin del cambio al realizar una compra (por
ejemplo, en una mquina expendedora de caf). Suponiendo que se tenga la cantidad suficiente de ciertos tipos diferentes de monedas, se trata de dar como cambio
la menor cantidad posible de monedas con las que cuenta la mquina. La estrategia
voraz aplicada comienza devolviendo, cuando se pueda, la moneda de mayor valor
(es decir, mientras el valor de dicha moneda sea mayor o igual al cambio que resta
por dar), contina aplicndose el mismo criterio para la segunda moneda ms valiosa y as sucesivamente. El proceso finaliza cuando se ha devuelto todo el cambio.
Divide y vencers
Consiste en descomponer un problema en subproblemas, resolviendo independientemente los subproblemas para luego combinar sus soluciones y obtener la solucin
del problema original. Esta tcnica se puede aplicar con xito a problemas como la
multiplicacin de matrices, la ordenacin de vectores, la bsqueda en estructuras
ordenadas, etctera.
Como ejemplo sencillo de aplicacin de esta estrategia puede considerarse la bsqueda de una palabra en un diccionario de acuerdo con el siguiente criterio: se abre
el diccionario por la pgina central (quedando dividido en dos mitades) y se comprueba si la palabra aparece all o si es lxico grficamente anterior o posterior. Si
no ha encontrado y es anterior se procede a buscarla en la primera mitad., si es
posterior, se buscar en la segunda mitad. El procedimiento se repite sucesivamente
hasta encontrar la palabra o decidir que no aparece.
Otros tipos de mtodos algortmicos se basan en este principio, como el mtodo de
procesamiento en paralelo, donde el problema es resuelto por varias computadoras
al mismo tiempo y una ltima junta toda la informacin para dar una solucin.
Mtodo de vuelta atrs
Dentro de las tcnicas de diseo de algoritmos, el mtodo de Vuelta Atrs (del
ingls Backtracking) es uno de los de ms amplia utilizacin, en el sentido de que
puede aplicarse en la resolucin de un gran nmero de problemas, especialmente en
aquellos de optimizacin.

19

20

U N I DA D

La construccin de este tipo de algoritmos se asemeja a la construccin de un rbol,


donde el nodo inicial representa el problema en s y cada una de sus ramas es un
posible camino de solucin. Cabe mencionar que para poder aplicar este tipo de
tcnicas de construccin de algoritmos, el problema debe poder descomponerse en
problemas ms pequeos que estn sujetos a condiciones particulares.
Ejemplo: Supngase que se quiere encontrar un algoritmo que dado el sistema numrico binario se busca el conjunto que sume 11 (3 en decimal) en el menor nmero
de pasos.

De esta for ma podemos llegar a ms de una solucin al problema, slo basta elegir
cul es la ms ptima dependiendo de nuestros recursos o de cmo se quiere resolver el problema. As, la solucin ms corta puede o no ser la ms ptima. Esta
tcnica se denomina de vuelta atrs porque si llegamos a un punto donde no podemos resolver el problema lo nico que tenemos que hacer es regresar al nodo anterior y elegir otro camino. Se dice que si ningn nodo del rbol llega a resolver el
problema quiere decir que no tiene solucin algortmica.
Los programadores avanzados utilizan esta tcnica de programacin para aplicaciones que se resuelven fcilmente mediante recursin; otros utilizan este tipo de tcnicas
para resolver problemas de optimizacin y tambin para inteligencia artificial.

Busca en la Internet los siguientes ejemplos de problemas que se resuelven con la


recursividad. Trata de explicar en dnde se encuentra la recursividad y por qu se
necesita usarla en ellos.
Factorial n! = n (n-1)!
Sucesin de Fibonacci f(n) = f(n-1) + f(n-2)

A L G O R I T MO S

Nmeros de Catalan C(2n, n)/(n+1)


Las Torres de Hanoi
Funcin de Acker mann

1.2.5 Evaluacin de la solucin


Ahora que tenemos una o varias soluciones algortmicas para resolver algn problema
que se nos haya planteado, hay que evaluarlas. En este momento tendremos que considerar si es factible o no llevar a cabo ciertas soluciones. Pero es un hecho que hay
que evaluar cada una de ellas. Los aspectos que hay que tener en cuenta se explicaron
anteriormente; ahora nos toca ver si en realidad el algoritmo planteado alcanza el
objetivo de resolver el problema.
Generalmente se usa una prueba que se denomina Prueba de Escritorio, que no es
ms que seguir el algoritmo paso a paso y tabular qu es lo que sucede con las
variables y anotar sus cambios. Si el algoritmo llega a una solucin ptima, se toma
como correcto. Si el algoritmo tiene un amplio rango de valores se puede utilizar
una muestra para deter minar si es correcto o no.

1.3 LENGUAJES ALGORTMICOS


Hasta este momento todo lo que hemos visto es prcticamente teora, lleg la hora
de plasmar nuestros algoritmos de alguna forma que sean claros para cualquier persona que necesite leerlos. Muchas veces los infor mticos se saltan este paso y llegan
directamente a la implementacin en algn lenguaje de programacin; para ello se
necesita tener mucha prctica y memoria fotogrfica, ya que muchas veces se omiten pasos que a la hora de implementarlos en algn lenguaje producen que el programa no llegue a la solucin que habamos planteado como ptima.
De esta manera se han creado lenguajes que puedan representar nuestros algoritmos
y que de esa manera se construya una solucin correcta sin omitir algunos pasos.
Imagnese que si se desea crear un algoritmo para que un robot solde una pieza en
una ensambladora de automviles y la persona encargada de implementar el algoritmo olvida, por muy obvio que sea, comprobar si las piezas estn en su lugar,
obviamente podra terminar en una tragedia.
As que la gente que se encarga de los estndares en cuanto a lo que se refiere a las
tecnologas de la informacin vio la necesidad de representar algoritmos sin tener
que referirse a un lenguaje de programacin en especfico. Aunque es una prctica
muy comn el hecho de representar alguna expresin en ellos tiene en cuenta la
sintaxis de algn lenguaje de programacin.

21

22

U N I DA D

1.3.1 Grficos
Este tipo de lenguaje tiende a representar los algoritmos de una forma grfica. De
esta manera se hace ms fcil la representacin de cada uno de los procesos que
debe llevar a cabo una computadora para resolver problemas.
Diagramas de Flujo
Sin lugar a duda el lenguaje algortmico grfico ms comn son los Diagramas de
flujo. stos pueden definirse como esquemas usados para representar grficamente
un proceso. Pero no slo se utilizan para representar procesos infor mticos, tambin en otras reas como la economa, la administracin, procesos industriales, etc.
Para hacer comprensibles los diagramas de flujo para cualquier persona que deseara
leerlos se sometieron a una estandarizacin, aunque cabe mencionar que su simbologa puede adaptarse al rea especfica en la cual se trabaja. En informtica los
diagramas de flujo se encuentran estandarizados por la norma ISO 5807.
A continuacin explicaremos los smbolos ms comunes que se utilizan en la informtica para representar diagramas de flujo.
Smbolo

Funcin

Terminal

Sirve para especificar el inicio o el fin de nuestro algoritmo.

Flecha

Sirve para indicar el sentido en el que se lleva a cabo cada


uno de los pasos de nuestro algoritmo.

Proceso

Representa una operacin que debe realizarse dentro del


diagrama. Es el smbolo ms usado porque cada operacin que debe hacer la mquina se representa mediante ste.

Documento

Teclado

Existe en infor mtica una variacin del rectngulo o proceso. Para indicar que existe una salida hacia un documento, como un reporte o proceso similar se utiliza este smbolo.
Otra variacin del proceso es la entrada de datos por teclado. En muchas ocasiones es necesario que nuestro algoritmo obtenga valores mediante algn dispositivo externo
y se usa este smbolo para representar dicha entrada.

A L G O R I T MO S

Smbolo

Funcin

Decisin

Cuando nuestro algoritmo debe tomar un camino determinado por las condiciones del problema se usa este smbolo, generalmente el flujo entra por arriba y sale por los
extremos, uno para indicar que la condicin se cumpli y
otro para indicar si la condicin no es satisfactoria.

Conector

Cuando nuestro algoritmo es algo extenso y tiene muchos


caminos, a veces es necesario, por problemas de espacio, el
hecho de conectar la continuidad de nuestro algoritmo mediante este tipo de smbolos, los cuales hacen que el diagrama no se pier da por med io d el cruc e d e la s f lechas
explicadas anterior mente.

Conector de hoja

En ocasiones los algoritmos se vuelven muy complejos y


como generalmente son representados en papel, se tiene la
necesidad de continuarlos en una hoja diferente. Este smbolo es muy parecido al anterior y tiene la misma funcionalidad.

Existen otros smbolos ms especficos para otro tipo de procesos, pero en su


mayora ya no se usan porque representaban procesos en dispositivos que hoy en
da son obsoletos, como grabar en cinta magntica o leer una tarjeta perforada.

Investiga algunos smbolos de diagramas de flujo que se usen en la informtica para representar funciones especficas como ciclos, decisiones especficas, etctera.

Otros lenguajes grficos


Los diagramas de flujo no son los nicos lenguajes algortmicos grficos. Gracias a
la creacin de nuevas tecnologas como son las bases de datos, las redes de computadoras, la inteligencia artificial, el internet, etc., se han creado diferentes tipos de
lenguajes.
El ms comn es el Lenguaje de Modelado Unificado ( UM L por sus siglas en ingls
Unified Modeling Language). Actualmente es el lenguaje algortmico grfico ms
utilizado porque per mite representar ms procesos que los diagramas de flujo y
permite definir qu es lo que le sucede a los datos cuando pasan a travs de un

23

24

U N I DA D

estado a otro. Por ejemplo, cuando en un banco se cae el sistema, por algn problema
como el sistema elctrico, qu sucede con las transacciones que se quedaron a la mitad? UML es capaz de definir qu es lo que sucede con estos datos y cmo regresar a ese
estado anterior a que sucediera el problema. Tambin sirven para especificar estructuras de datos complejas como son los objetos y sus caractersticas.
Cabe mencionar que los diagramas UM L no estn estandarizados, se encuentran respaldados por organizaciones como la OM G (Object Management Group) que regulan cules son los diferentes tipos de diagramas que se usan en este tipo de lenguaje.
Actualmente UM L se encuentra en su versin 2.0, la cual define tres clases de diagramas y sus diferentes variantes.
Diagramas de estructura. Se usan para definir los datos dentro de un algoritmo, en
informtica existe una materia especfica que se llama estructura de datos, los
cuales les sirven a los infor mticos para representar las variables de una for ma
ms til para el proceso en una computadora. Por ejemplo, los objetos, los paquetes, las clases, etctera.
Diagramas de comportamiento. Se utilizan para definir el comportamiento de las diferentes estructuras de datos. Generalmente los algoritmos no son tan sencillos
como para describir que simplemente se va a realizar una suma o una resta, generalmente representan problemas ms complejos como lo que le sucede a una
base de datos cuando cambias un dato dentro de ella; generalmente para cada
proceso especfico sucede que un cambio en un dato provoca cambios en otros.
Por ejemplo, si un empleado llega a tener cierta antigedad en una empresa y la
nmina se calcula automticamente mediante computadora, los algoritmos deben prever que no slo se modifica el dato de su antigedad, sino tambin su
salario, categora, ISR , etctera.
Diagramas de interaccin. Es una variacin de los diagramas de comportamiento
que sirven para indicar cundo existe una interaccin entre varios procesos, lenguajes de programacin o programas previamente elaborados.

Encuentra ejemplos de los diferentes tipos de diagramas UML . Busca en Internet otros tipos de
lenguajes algortmicos y para qu son utilizados, no tan slo en la informtica sino tambin en
otras reas como en la administracin (manuales de procedimientos).

1.3.2 No grficos
Los lenguajes algortmicos no grficos generalmente son utilizados para representar
procesos informticos ya ms especficos. Dicho de otra forma, para representar la
codificacin de un programa sin la necesidad de conocer un lenguaje de programacin especfico.

A L G O R I T MO S

Pseudocdigo
Sin lugar a duda, el pseudocdigo es el lenguaje algortmico no grfico ms utilizado hasta la fecha. Cualquier persona que se diga que tiene experiencia como programador, alguna vez se ha visto en la necesidad de representar sus programas en
pseudocdigo.
El pseudocdigo significa que vas a convertir tu algoritmo en un lenguaje escrito
que se entienda sin utilizar la sintaxis y la gramtica de un lenguaje de programacin
en especfico. Existen diferencias entre las normas de cmo debe realizarse correctamente un pseudocdigo debido a que, como no es necesariamente un lenguaje de
programacin, debe adaptarse a las necesidades del algoritmo en s; por esto varios
autores definen su propia sintaxis y gramtica de for ma diferente.
Nuestro objetivo es tratar de definir una for ma que nos sir va para construir de
manera unificada un pseudocdigo. As definiremos las operaciones ms comunes
que se pueden representar mediante un pseudocdigo.
Datos
En un pseudocdigo los datos se dan por creados desde el momento en el que son
utilizados, as que no es necesario avisar qu variables vamos a ocupar a lo largo de
nuestro algoritmo, ni qu tipo de dato es el que se va a almacenar dentro de l; pero,
una vez que se ha utilizado una variable para almacenar cierto tipo de dato debe
seguir siendo usada para ese tipo. Por ejemplo, si al inicio de nuestro pseudocdigo
declaramos que vamos a usar una variable que llamaremos A y le asignamos un
valor numrico entero como 8, la variable A en el resto del algoritmo deber
solamente poder almacenar datos numricos enteros.
Estructuras de control
En los diagramas de flujo utilizamos los rectngulos que definan un proceso y definimos que era el smbolo ms usado dentro de nuestros diagramas. En el pseudocdigo a este tipo de procesos se le denomina estructuras de control, donde puede
contener uno o varios pasos a seguir. Podemos decir que una estructura de control
puede contener varios pasos que representbamos con ms de un smbolo en los
diagramas de flujo. Las estructuras ms utilizadas son:
Asignacin. Sir ve para darle valores a las variables que usaremos dentro de nuestro algoritmo. Existen varias formas de representar una asignacin debido a que
muchas personas usan la gramtica y sintaxis de un lenguaje de programacin en
especfico. De esta forma, si queremos asignar el valor de 8 a la variable A,
podemos hacerlo de la siguiente manera:

25

26

U N I DA D

Asigne a A el valor de 8
A 8
A:=8
A=8
Secuencia. El conjunto de operaciones que determina un proceso se le conoce
como instruccin; en la mayora de los lenguajes de programacin las instrucciones llevan una secuencia lgica. En los diagramas de flujo esta secuencia era representada por las flechas. En el pseudocdigo son representadas a travs de
instrucciones que generalmente ocupan un rengln. A continuacin mostraremos
la for ma en que debe darse la secuencia en un pseudocdigo:
Instruccin1
Instruccin2
Instruccin3
.
InstruccinN
Selectiva. Comnmente denominada decisin, en los diagramas de flujo se usa el
rombo para representar una decisin que debe tomar nuestro algoritmo mediante una condicin lgica. En el pseudocdigo se puede representar de la siguiente
manera:
Si Condicin entonces
Instrucciones
Fin si
Selectiva doble. La estructura de control selectiva slo representa condiciones verdaderas; de esta forma si el algoritmo arroja una condicin falsa, las instrucciones
no son llevadas a cabo y se salta hasta despus de terminar la instruccin selectiva
o el Fin si. Pero la selectiva doble prev que sea necesario ejecutarse una serie de
instrucciones si la condicin resulta falsa. La selectiva doble se puede representar
de la siguiente manera:
Si Condicin entonces
Instrucciones
Si no
Instrucciones
Fin si
Selectiva mltiple. Algunos autores utilizan el trmino de decisiones anidadas, esto
es porque la consecuencia de una decisin puede desembocar otra decisin. Dicho de otra for ma; una decisin puede contener otra decisin que a su vez contenga otra decisin y as sucesivamente hasta que de alguna forma se acabe el

A L G O R I T MO S

ciclo de decisiones. En los pseudocdigos podemos representar estas decisiones


anidadas de la siguiente forma:
Si Condicin1 entonces
Instrucciones1
Si no Si Condicin2 entonces
Instrucciones2
.
Si no Si CondicionN entonces
Instrucciones N
Fin Si
Selectiva mltiples casos. En algunos lenguajes de programacin pensaron que tener
muchas instrucciones selectivas mltiples entorpecan la comprensin del cdigo,
aunque la mquina las interpretara de forma correcta por ello se crearon las
instrucciones selectivas de mltiples casos; cabe mencionar que no todos los lenguajes de programacin soportan este tipo de representacin de instrucciones
selectivas por lo que se recomienda tener cuidado en su uso en los pseudocdigos. La for ma de representar las instrucciones selectivas mltiples en los pseudocdigos es la siguiente:
Seleccionar Indicador
Caso Valor1:
Instrucciones1
Caso Valor2:
Instrucciones2
.
Caso ValorN
InstruccionesN
Fin Seleccionar
Iterativa. Este tipo de estructuras es usada con frecuencia en los algoritmos, representan ciclos que debe cumplir el algoritmo hasta alcanzar una condicin que
rompa el ciclo. Por ejemplo, cuando tratamos de imprimir una tabla de multiplicar. En el pseudocdigo se usan generalmente dos for mas las cuales podemos
definir como MIEN TRAS y PARA . Las estructuras iterativas MIEN TRAS tienen diferentes variantes que sirven especficamente para ciertos lenguajes de programacin;
de esta for ma se recomienda tener cuidado en el uso de este tipo de estructuras.
Por otra parte, las instrucciones PA RA generalmente son usadas por casi todos los
lenguajes de programacin (al menos los que utilizan los paradigmas de programacin estructurada y programacin orientada a objetos). En el pseudocdigo
podemos representar las instrucciones iterativas de la siguiente forma:

27

28

U N I DA D

Mientras Condicin hacer


Instrucciones
Fin Mientras
Hacer
Instrucciones
Mientras condicin
Nota: La Variable que es usada en esta estructura PA RA se denomina variable de
control y se sobreentiende que existe un incremento de dicha variable cada vez que
regresa a la instruccin Para y no saldr de ese ciclo hasta que la variable de control
alcance el valor final. En el pseudocdigo, como en los lenguajes de programacin,
no se recomienda manipular el contenido de la variable de control, pero s se puede
usar su valor dentro del conjunto de instrucciones.
Recomendaciones
En el pseudocdigo, como en cualquier lenguaje de programacin, se dan ciertas
recomendaciones para que el conjunto de instrucciones que lo for man pueda ser
entendido ms fcilmente.
Nombres de variables. Algunas estructuras tienen instrucciones que son especficas
para determinar dnde empieza y dnde termina dicha estructura. Se recomienda no usar los nombres de este tipo de estructuras como variables dentro del
pseudocdigo. De esta forma no podremos utilizar las palabras Si, Mientras,
Entonces, Para, Fin, etc. para representar nuestras variables. En un lenguaje algortmico no grfico es una simple recomendacin, pero para el caso de los lenguajes de programacin es una regla ya que a este tipo de instrucciones se les
denomina Palabras Reservadas. Existen, segn varios autores, nomenclaturas (conjunto de reglas) para nombrar a nuestras variables; stas son recomendaciones
para no confundir las variables y saber en todo momento qu tipo de dato es el
que puede almacenar dicha variable.
Identacin. Es comn que tanto en los pseudocdigos como en los cdigos de los
lenguajes de programacin se vuelvan muy extensos ya que la secuencia del conjunto de instrucciones se encuentra definida por los renglones. Esto provoca que
cuando tratamos de seguir un pseudocdigo (generalmente cuando se hace una
prueba de escritorio como mencionamos anteriormente) se pierda entre las diferentes estructuras de control. La solucin que proponen los autores de los lenguajes de programacin es incrementar unos cuantos espacios (a decisin del
programador) para especificar que un conjunto de instrucciones forma parte o
est dentro de una estructura de control.

A L G O R I T MO S

Investiga algunas reglas para la construccin del nombre de las variables que se usan comnmente en la programacin y cules son las reglas que debemos seguir para identar de forma
adecuada un programa.

1.3.3 Ejemplos de usos y aplicacin


Como se mencion anteriormente, los lenguajes algortmicos nos sirven para representar nuestros algoritmos de for ma que podamos entenderlos no slo como un
concepto de diagrama de entrada proceso salida sino que construyamos cada
uno de los pasos que debe llevar nuestro algoritmo para resolver el problema que
se nos haya planteado.
En el mundo del software se han creado varias aplicaciones que nos per miten construir nuestros algoritmos de una for ma grfica. Como ejemplos podemos citar los
siguientes:
Software

Tipo

Microsoft Visio
Borland Together
Corel iGrafx
MagicDraw

Propietario

FreeDFD

Libre

Argo UML
T CM

Para el caso de los lenguajes algortmicos no grficos, la nica for ma de construccin de un pseudocdigo es mediante un procesador de texto y la forma de comprobar que nuestro pseudocdigo funciona (aparte de la prueba de escritorio antes
mencionada) es traducir nuestro pseudocdigo a algn lenguaje de programacin y
probarlo mediante un compilador.

29

30

U N I DA D

I. Relaciona ambas columnas.


( ) Son expresiones que se usan para el clculo
de valores aritmticos. Son muy tiles y fciles de entender ya que se representan de
forma muy parecida a las expresiones matemticas. Los operadores aritmticos son los
siguientes: +, -, *, /, ^, (, ), etc.
( ) Son un conjunto de condiciones que slo pueden tomar dos estados lgicos: falso y verdadero. Estn compuestos por variables,
constantes, operadores lgicos y operadores relacionales. Los operadores lgicos son
los siguientes: NOT (no), AN D (y) y OR (o). Los
operadores relacionales pueden ser: <, >, =,
<=, >=, <>.

1. Datos numricos
2. Expresiones aritmticas

( ) Son un conjunto de caracteres que representan algn tipo de dato. Estn compuestos por
todo el conjunto de caracteres alfabticos (az, A-Z), numricos (0-9) y algunos caracteres especiales (+, -, *, /, <, >, etc.).

3. Datos lgicos

( ) Son los que podemos representar mediante


dos estados: falso y verdadero. Tambin se
les conoce como datos boleanos.

6. Expresiones lgicas

( ) Son datos que dentro del problema en s nunca cambiarn.


( ) Es todo tipo de informacin que se puede
expresar por medio de nmeros.
( ) Son datos que cambian dependiendo de las
condiciones del problema que se desea resolver.

4. Variables
5. Datos alfanumricos

7. Constantes

A L G O R I T MO S

II. Define los siguientes conceptos.


1. Algoritmo.

2. Recursividad.

3. Cules son los mtodos ms comunes para resolver un problema en forma de


algoritmos?

31

Anda mungkin juga menyukai