Está en la página 1de 9

EL ALGORITMO

En palabras sencillas, un algoritmo es una serie de instrucciones que realizadas en orden


conducen a la solucin de un problema determinado.
Tambin se puede decir que un algoritmo es la fase preliminar a escribir un programa en
cualquier lenguaje de programacin, por lo que la forma de escribirlo puede ser muy personal
segn el programador que lo est diseando, pero en general se debe hacer en una forma tan
clara que cualquier otro programador pueda coger dicho algoritmo, entenderlo fcilmente y
poderlo traducir a su lenguaje de programacin favorito.
En general, hay varias formas de escribir un algoritmo en el papel: Una de ellas es el diagrama
de flujo que consta de rectngulos que encierran las diferentes instrucciones y lneas que
apuntan hacia la siguiente instruccin de modo que no se pierda el orden. Adems, las
operaciones elementales como la entrada de datos, salida de datos, ciclos, etc. (ms adelante
se explicarn) se reconocen de las dems instrucciones porque no se encierran en rectngulos
sino en otra clase de figuras por lo que segn la figura en la que est encerrada la instruccin
se reconoce su significado; Es muy didctico, por lo que es muy fcil de entender as ni siquiera
se conozca al programador que dise el algoritmo.
Tambien existe el pseudocdigo donde cada instruccin ya no es un dibujo sino una lnea
escrita y las operaciones elementales se escriben de una forma tan clara que sea imposible
que algn programador no las entienda.
Para este tutorial utilizaremos los DIAGRAMAS DE FLUJO, y usaremos el programa DFD para
implementar los ejemplos y hacer ms sencilla la explicacin.
En general, un algoritmo se compone de un inicio, un final y una serie de instrucciones las
cuales pueden estar complementadas con condiciones, ciclos, etc.
En los diagramas de flujo, el inicio y el final de un algoritmo se escriben dentro de un CIRCULO
a manera de etiqueta, tal y como lo muestra la siguiente imagen:

Obviamente, entre estas dos "etiquetas" estarn todas las instrucciones de un algoritmo
determinado.
Para realizar las instrucciones en un algoritmo, se utilizan bsicamente Variables y
Operadores.
LAS VARIABLES
En general, las variables son campos en memoria que pueden almacenar cualquier tipo de
informacin (nmeros, letras, frases, valores de verdad, etc. ) que pueden tener cualquier
nombre, que preferiblemente debe ser mnemotcnico, es decir, que tenga relacin con l o los
datos que se almacenarn en la variable.
Los datos numricos se almacenan en las variables una vez en el ordenador en forma binaria
(base 2), y los datos de caracteres como letras y frases se almacenan segn el cdigo ASCII
de las letras, que es un cdigo aceptado mundialmente para representar todos los caracteres
posibles (Por lo menos en muchos idiomas). Este cdigo es un numero desde 0 hasta 255 por

lo que se almacena tambin en forma binaria.


Los nombres de las variables deben seguir unas convenciones generales, que se crearon para
evitar confusiones entre las variables y los operadores aritmticos. Estas son:
* No pueden comenzar con nmeros.
* No pueden contener smbolos u operadores en ninguna posicin del nombre, excepto el
carcter "_".
* No pueden contener espacios.
Como ejemplo aqu hay varios nombres para variables:
* A : Es un nombre correcto, aunque posiblemente muy poco mnemotcnico.
* A23: correcto.
* OJO5MALO : correcto.
* HOLA# : incorrecto, ya que tiene un smbolo dentro de su nombre.
* A 23 : incorrecto, porque hay un espacio dentro del nombre.
* A-23 : incorrecto.
* A_23 : correcto, ya que el carcter "_" es el nico smbolo permitido para nombrar
variables; se puede usar para separar palabras dentro del nombre de una misma variable. Otro
ejemplo podra ser:
PRIMER_NOMBRE o RADIO_CIRCULO.
Una caracterstica de las variables es que son Case Sensitive, es decir que son sensibles al
hecho de s el nombre fu escrito con maysculas o minsculas, por lo que si se llam a una
variable A23, dentro de las dems instrucciones del algoritmo, cuando se haga referencia a
sta variable, no podr utilizarse a23 ya que se tomaran como dos variables diferentes.
Para almacenar valores a las variables se utilizar el operador de asignacin (<-) y se lee "a
'variable' se le asigna 'valor'".
Como se dijo anteriormente, una variable puede contener nmeros, letras, frases, etc., por lo
que en un lenguaje de programacin, sera necesario al principio del algoritmo definir que clase
de datos se van a almacenar y en que variables, pero en el caso del diagrama de flujo esto no
es necesario y suponemos que una variable puede ser de cualquier "tipo", pero al asignarle un
valor que no sea numerico (una letra, o una frase) debemos tener en cuenta que dicho valor
debe estar entre comillas simples (ej.: 'frase').
En los diagramas de flujo, las asignaciones a variables se encierran en RECTANGULOS para
diferenciarlas de los dems tipos de instrucciones.
Aqui tenemos varios ejemplos de asignaciones en diagramas de flujo:

Como se puede ver en el segundo rectngulo se le asign a otra variable (Edad2) el valor de
Edad (el cual contena 23), por lo que obviamente Edad2 termina valiendo 23, pero que pasara
si a Edad no se le hubiera asignado nada antes?

En este caso, la variable Edad vale lo que se conoce como BASURA, es decir, cualquier valor
no controlado en el algoritmo.
DEFINICIN - BASURA: Cuando se hace uso de una variable, se debe ver si se le ha asignado
un valor antes de usarla, ya que de lo contrario contiene lo que se denomina BASURA. La
basura simplemente aparece cuando a una variable se le asigna espacio en la memoria del
ordenador. Dicho espacio no est en blanco ya que como los datos internamente en el
ordenador se manejan en forma binaria hay una cantidad determinada de unos y ceros en ese
espacio (Estados aleatorios que se crean cada vez que se enciende el ordenador). Si no se
asigna a dicha variable un valor y simplemente se utiliza en una operacin aritmtica o una
asignacin, el valor de la variable depender de los unos y ceros que haba cuando se le
asign el espacio, es decir, no se sabr con seguridad cual es el valor de esa variable en ese
momento, por lo que podra producir graves errores en las siguientes instrucciones del
algoritmo.
EJEMPLO EN DFD:
Para implementar el ejemplo anterior en DFD, ejecutamos el programa DFD.EXE e
inmediatamente aparecer un "algoritmo" con las etiquetas de inicio y final, pero sin
instrucciones intermedias.
En la parte superior izquierda se ver un men con botones los cuales tienen los simbolos para
los diferentes tipos de instrucciones en un algoritmo.
Para asignacin se elige el rectngulo:

Luego se coloca el cursor del MOUSE sobre la posicin en la cual se va a colocar la instruccin
de asignacin (en este caso, entre las etiquetas de inicio y fin) hasta que aparezca el dibujo de
una "mano".

Se hace click e inmediatamente aparece el rectngulo de asignacin.


Ahora, para colocar las variable se hace doble click sobre el nuevo rectngulo y voal, ya
podemos colocar las variables y los valores a asigarles.

En el programa DFD, se hace un pequeo control a las variables que contengan BASURA.
Esto se puede apreciar ya que si implementamos el ejemplo en el que a "Edad" no se le
asignaba ningun valor, sale un error como el siguiente:

NOTA: Para verificar si un algoritmo est correcto se presion el botn de EJECUTAR.

LOS OPERADORES
Los operadores son los que permiten efectuar las operaciones aritmticas en el algoritmo.
Los operadores bsicos que se van a usar en este tutorial son los siguientes:
+ , - , * , / : Suma, resta, multiplicacin y divisin respectivamente.
Son las mismas operaciones que en el clculo normal con una pequea diferencia: El resultado
de estas operaciones puede ser un numero entero o un fraccionario, por lo que se deber
especificar cual es el resultado que se desea. Para esto se debe colocar en la
DOCUMENTACIN DEL ALGORITMO (que veremos ms adelante) que la variable no
SOPORTA FRACCIONES (entero), ya que por defecto, todas las variables nmericas podrn
ser fracciones.
Lastimosamente, en DFD no podemos especificar cuando deseamos que una variable no
posea fracciones ya que todas las variable numericas son "reales".
Tambin vamos a usar operadores ms complejos como son:
MOD: D el residuo de dividir un nmero entre otro sin DECIMALES.
Ejemplos:
10 MOD 3 = 1. ya que el 3 est en el 10 3 veces y 3*3=9 por lo que el residuo es 1.
10 MOD 4 = 2. ya que el 4 est en el 10 2 veces y 4*2=8 por lo que el residuo es 2.
^: Potenciacin.
Ejemplo: 10 ^ 3 = 1000.
EJEMPLO EN DFD:

En el ejemplo anterior, la variable "res" terminar valiendo 1.5, pero si se especifica que es una
variable que no soporta fracciones (cosa que no se permite en el programa DFD), su valor ser
1 (Se le quita la parte decimal).
IMPORTANTISIMO: Las operaciones en un ordenador tienen un cierto orden de importancia,
es decir, algunas se efectan primero que otras. Este orden en forma descendente es:
Potenciacin, modulo, divisin, multiplicacin, suma y resta.
Si no se coloca ningn parntesis en la operacin aritmtica, el orden anterior es el que tiene la
mquina para realizar las operaciones, pero al colocar algo entre parntesis, esa parte de
operacin primar sobre las dems.
EJEMPLO EN DFD:

En este caso "n1" valdr 8 ya que la divisin prima sobre la suma por lo que primero se
resuelve 10/2 (5) y luego se suma el 3.
En cambio, para n2 el parntesis hace que la operacin interna prime sobre las dems, por lo
que el resultado sera 13/2 , o sea 6.5 !!!

Nota: Obsrvese que segn se coloquen o no parntesis en las distintas operaciones


aritmticas los resultados cambian, por lo que en el momento de escribir una operacin en un
algoritmo, se debe tener muy en cuenta la primaca de los operadores.
A parte de los operadores matematicos, tambien existen los llamados operadores lgicos.
Operadores lgicos: ( >,<,<=,>=,=,!=,<>,AND,OR,NOT): Sirven para hacer preguntas lgicas,
como si una variable es mayor que otra, igual, menor o igual, diferente, etc.
Retornan lo que se conoce como un valor de verdad, (TRUE o FALSE), (VERDADERO o
FALSO).
En DFD el valor de FALSO se representa como .F. y VERDADERO como .V.
El operador "diferente de", se podr especificar con ' != ' o con ' < > ' , segn el programador lo
elija.
Los operadores AND,OR,NOT se usan para ligar operadores logicos.
* AND indica que las dos condiciones deben ser verdaderas para que el resultado sea
verdadero.
* OR indica que solo una de las dos condiciones debe ser verdadera para que la respuesta
sea verdadera.
* NOT indica que la condicion debe ser falsa para que la respuesta sea verdadera.
Aqu se puede visualizar ms facilmente el uso de estos operadores:

v1 valdr .F. ya que n1 no es mayor que n2.


v2 valdr .F. ya que n1 si es diferete de 1, pero nom no es igual a 'pedro' (las variables son
Case Sensitive) y el operador AND obliga a que las dos condiciones sean VERDADERAS.
v3 valdr .F. ya que n1 si es diferete de n2, por lo que al negarlo d FALSO.
CARACTERSTICAS DE UN ALGORITMO
Hasta el momento, no se ha escrito ningn algoritmo "real" en este texto; lo que se ha hecho es
escribir segmentos de posibles algoritmos para dar algunos ejemplos.
Un verdadero algoritmo debe tener las siguientes caractersticas:
1. Debe tener un numero finito de instrucciones, o sea un principio y un final, por lo que se
deben sealar dentro del algoritmo donde comienza y donde termina.
Para esto usamos las etiquetas de INICIO y FIN.
2. Puede tener o no datos de entrada, es decir, datos iniciales que se necesitan conocer para
que el modelo que el algoritmo representa funcione.
Por lo tanto se necesita un mecanismo para leer esos datos desde los dispositivos de

entrada del ordenador.


Para esto utilizaremos el siguiente simbolo:

en el cual simplemente se colocan los nombres de las variables que deseamos que digite el
usuario desde el teclado separados por comas (,).
Ejemplo:

En este ejemplo, en la pantalla del ordenador saldra:

El mensaje de entrada de datos es un detalle que se coloca al momento de implemetar el


algoritmo en un lenguaje de programacin.
Este ejemplo todava no se puede catalogar como un algoritmo, ya que todava le falta cumplir
con otra caracterstica de los algoritmos.
1. Debe tener al menos uno o ms datos de salida, que en forma practica sera el resultado al
modelo que fue diseado por el programador y que por obvias razones deben ser mostrados
mediante algn dispositivo de salida del ordenador.

Para esto se utilizar el siguiete simbolo:

en el cual simplemente se colocan los nombres de las variables que deseamos mostrar en la
pantalla separados por comas (,).
Adems, aqui podemos colocar los mensajes al usuario directamente para que l sepa lo que
se est mostrando en la pantalla. Para esto, se coloca el mensaje como otra variable (separado
por comas), pero entre comillas simples ya que es ua variable de tipo caracter.
Retomando el ejemplo anterior, el algoritmo finalmente quedara:

En el ejemplo anterior, en la pantalla del ordenador saldra:

Ya hemos visto las partes bsicas de un algoritmo, ahora pasaremos a disear algoritmos con
instrucciones especiales (ciclos, decisiones, etc.), desde los ms simples hasta los ms
complejos.
PASOS PARA DISEAR UN ALGORITMO.
Aunque no hay un mtodo general para disear algoritmos, si se puede decir que lo ms
adecuado es seguir con los siguientes pasos al tratar de resolver un problema determinado:
1. EL ANLISIS: Es importantisimo hacer un buen anlisis de cual es especficamente el
problema a resolver. Para esto es bueno ayudarse mediante grficos del problema o en caso
de que no sea graficable, tambin se puede resolver el problema para casos especficos y
luego generalizarlo para todos los posibles casos.
Tambin se deben observar cuales seran los casos especiales, es decir, aquellos casos
que no cumplan la norma general, y tratar de evaluarlos de otra forma.
Este paso es el que ms tiempo debe llevarle a un buen programador, ya que de un buen
anlisis depende los buenos resultados que arroje el algoritmo.
2. ESCRIBIR EL ALGORITMO: Despus de haber analizado el problema en una forma
abstracta, se debe llevar al papel, mediante instrucciones adecuadas al anlisis.
Si el problema fue bien analizado, este paso es muy rpido a comparacin del anterior.

3. PRUEBA DE ESCRITORIO: Este paso es opcional y se aplica siguiendo paso por paso las
instrucciones del algoritmo, anotando los diferentes valores que van tomando las variables, de
forma que se pueda verificar si hay errores en alguna instruccin.
Obviamente, ste mtodo es muy engorroso para algoritmos muy extensos, por lo que en
estos casos no sera aplicable.
You are not allowed to view links. Register or Login

También podría gustarte