Vous êtes sur la page 1sur 9

Modernamente, se ha usado el trmino algoritmo en referencia a cualquier procedimiento sistemtico de

clculo, que da lugar a un resultado despus de seguirse una serie de instrucciones precisas.
En el campo de la informtica y la programacin, se ha adoptado el trmino para describir cualquier serie
de instrucciones precisas que dan lugar a un resultado. La relacin con las matemticas sigue siendo
estrecha, aunque ha ganado peso la concepcin como serie de instrucciones precisas, que no
necesariamente implican clculo. As, podramos hacernos una primera idea de qu es un algoritmo
pensando en las instrucciones para montar un mueble desarmado, o en la preparacin de un plato a partir
de una receta de cocina. Veamos lo que sera un algoritmo para frer un huevo:
1. Inicio.
2. Poner a calentar aceite en una sartn.
3. Cuando el aceite humee ligeramente, romper el huevo y verterlo en el
aceite.
4. Esperar que se solidifique el huevo.
5. Retirar el huevo del aceite, dejar que escurra y ponerlo en un plato. Apagar
el fuego.
6. Fin.

Hemos construido el algoritmo con algunas caractersticas como:
Se indica un inicio y un fin. No es estrictamente necesario, pero si tenemos muchos algoritmos,
uno detrs de otro, nos servir de ayuda para identificarlos.
Se ha subdividido el proceso en pasos. De momento, qu abarca el paso es criterio del autor del
algoritmo.
Se numeran los pasos. Tampoco es estrictamente necesario, pero nos ser til al menos hasta
que nos acostumbremos a escribir y leer algoritmos sin numeracin.
Se ha tratado de precisar todos y cada uno de los pasos, definiendo lo mejor posible cada uno de
ellos.
EJERCICIO
Realizar un algoritmo para cruzar una calle.


SOLUCIN
1. Inicio.
2. Buscar un paso de peatones.
3. Mirar a la derecha y comprobar que no vienen coches.
4. Mirar a la izquierda y comprobar que no vienen coches.
5. Comprobar que no hay obstculos ni huecos para llegar al extremo opuesto.
6. Si hay un semforo y est en rojo volver al punto 3.
7. Cruzar.
8. Fin.

En relacin con este caso destacaremos lo siguiente:
Obtener el algoritmo ha sido un proceso creativo: dos personas pueden pensar en distintas
formas de cruzar una calle, en distintas formas de organizar los pasos o en distintas posibilidades
(por ejemplo, que haya un guardia regulando el trfico o que no haya paso de peatones). Para
programar nos apoyaremos en la creacin previa de algoritmos. Por tanto, programar implica
creatividad.
Se busca la economa: que las instrucciones sean las mnimas posibles, que haya el menor
nmero de repeticiones. Lo sencillo es bello.
Se busca la eficiencia: obtener el resultado deseado empleando poco tiempo y pocos recursos y
estando preparados para resolver situaciones imprevistas.
Pueden realizarse saltos entre los distintos pasos, pero el orden es supremo y nunca se
pierde. Ramificaciones y saltos nunca obedecen al azar: siguen un orden. Un camino siempre se
puede repetir si las condiciones iniciales son las mismas.



La idea de algoritmo est profundamente imbricada con la idea de programa informtico. A veces
diramos que se confunden. Las normas aplicables a los algoritmos son normas aplicables a los
programas.

Aprender a desarrollar algoritmos eficientes es
aprender a programar


Volvamos sobre los conceptos de economa y eficiencia a travs de un ejemplo. Trataremos de
desarrollar un algoritmo para poner platos y cubiertos en una mesa de tres comensales.

Algoritmo Poner mesa aprenderaprogramar.com. Versin 1.
1. Inicio.
2. Colocar primer plato delante de una silla.
3. Colocar segundo plato delante de una silla.
4. Colocar tercer plato delante de una silla.
5. Colocar tenedor a la izquierda del primer plato.
6. Colocar tenedor a la izquierda del segundo plato.
7. Colocar tenedor a la izquierda del tercer plato.
8. Colocar cuchara a la derecha del primer plato.
9. Colocar cuchara a la derecha del segundo plato.
10. Colocar cuchara a la derecha del tercer plato.
11. Colocar cuchillo a la derecha de la primera cuchara.
12. Colocar cuchillo a la derecha de la segunda cuchara.
13. Colocar cuchillo a la derecha de la tercera cuchara.
14. Fin.


Algoritmo Poner mesa aprenderaprogramar.com. Versin 2.
1. Inicio.
2. Colocar tres platos, cada uno delante de una silla.
3. Colocar tres tenedores, cada uno a la izquierda de cada plato.
4. Colocar tres cucharas, cada una a la derecha de cada plato.
5. Colocar tres cuchillos, cada uno a la derecha de cada cuchara.
6. Fin.


Algoritmo Poner mesa aprenderaprogramar.com. Versin 3.
1. Inicio.
2. Para cada silla.
a. Colocar plato.
b. Colocar tenedor a la izquierda del plato.
c. Colocar cuchara a la derecha del plato.
d. Colocar cuchillo a la derecha de la cuchara.
3. Siguiente silla hasta completar la mesa.
4. Fin.


Algoritmo Poner mesa aprenderaprogramar.com. Versin 4.
1. Inicio.
2. Para cada silla.
a. Colocar plato con tenedor a la izquierda, cuchara a la derecha y cuchillo a la derecha de la
cuchara.
3. Siguiente silla hasta completar la mesa.
4. Fin.


Algoritmo Poner mesa aprenderaprogramar.com. Versin 5.
1. Inicio.
2. Para cada silla.
a. Colocar platos y cubiertos.
3. Siguiente silla hasta completar la mesa.
4. Fin.


Algoritmo Poner mesa aprenderaprogramar.com. Versin 6.
1. Inicio
2. Colocar platos y cubiertos en la mesa.
3. Fin.


Vamos a utilizar este ejemplo para analizar cuestiones como economa del algoritmo, eficiencia
del algoritmo y el lenguaje utilizado. Todava no estamos utilizando ningn lenguaje de
programacin, sino un lenguaje ms o menos libre al que denominamos pseudocdigo y del que
seguiremos hablando en las prximas entregas del curso.
ECONOMA, EFICIENCIA Y LENGUAJE EMPLEADO
En la entrega anterior, vimos distintas versiones de un algoritmo. Vamos a utilizar el ejemplo
visto para analizar cuestiones como economa del algoritmo, eficiencia del algoritmo y el lenguaje
utilizado.
En cuanto a economa del algoritmo, es la versin 1 la que tiene mayor nmero de instrucciones,
aprecindose que existe cierto grado de repeticin entre ellas. Si el resultado es el mismo,
buscaremos que un algoritmo sea lo ms corto y menos repetitivo posible. Por ejemplo, la
versin 2, hace prcticamente lo mismo eliminando repeticiones.




En cuanto a eficiencia del algoritmo, vamos a suponer que se trata de una mesa grande en la
que se emplean diez segundos en desplazarse desde el puesto de un comensal al de otro. Nos
enfrentamos a la concepcin del algoritmo. En las versiones 1 y 2 se coloca elemento a
elemento, sin tratar de agrupar todos los elementos colocables tras un desplazamiento. En las
versiones 3, 4 y 5 se agrupan los elementos a colocar por silla. En la versin 6 no queda
suficientemente definido cmo se colocar la mesa, con lo cual no sabemos el tiempo que
llevar.
Los tiempos de desplazamiento seran los siguientes:
Versin 1 y 2: 4 vueltas a la mesa x 30 seg/vuelta = 120 seg.
Versin 3, 4 y 5: 1 vuelta a la mesa x 30 seg/vuelta = 30 seg.
Versin 6: no definido.

De momento, pues a continuacin matizaremos, sera el algoritmo versin 5 el que resultara
ptimo pues ana economa y eficiencia.
Analizaremos ahora el lenguaje empleado. ste evoluciona con las versiones del algoritmo
requiriendo cada vez mayor capacidad de comprensin. Supongamos que el algoritmo lo ejecuta
un robot con capacidad para entender rdenes bsicas. La capacidad de comprensin necesaria y
la probabilidad de error variara segn esta tabla:
Versin Capacidad de comprensin necesaria Probabilidad de error
1
Mnima
Necesita interpretar 1, 2, 3
Mnima
2
Mnima
Necesita interpretar cada
Mnima
3
Media
Necesita interpretar cada, siguiente
Baja
4
Media
Necesita interpretar cada, siguiente, frase ms
larga
Baja
5
Alta
Necesita interpretar cada, siguiente y colocar
cubiertos
Alta
P. ej. 3 cubiertos al mismo lado
6
Muy Alta
Necesita interpretar colocar platos y cubiertos
Muy Alta
P. ej. todos los platos y cubiertos en
una pila


Se trata pues, de distintos niveles de lenguaje, algo de lo que ya hemos hablado. Podemos
desarrollar algoritmos con un lenguaje libre, incluso usando elementos grficos, esquemas,
dibujos, etc., sin que su utilidad se vea menoscabada. Sin embargo, dado que nuestro inters se
centra en programar ordenadores, dejaremos de lado los estilos libres y empezaremos a
trabajar enfocados nica y exclusivamente hacia el lenguaje de los ordenadores.
No usaremos directamente un lenguaje, puesto que stos cambian y a nosotros mismos nos
puede interesar usar uno u otro, sino un lenguaje algortmico aplicable a la mayor parte de los
lenguajes de programacin.
Sobre el esquema ya planteado recordemos dnde estamos.




Un programa o serie de instrucciones en un lenguaje informtico se llama cdigo. El lenguaje que
utilizaremos para crear algoritmos tiene la misma concepcin de fondo, las mismas herramientas
y similar sintaxis. De ah que lo llamemos pseudocdigo. Las normas que indicaremos para
escribir pseudocdigo no son de obligado cumplimiento: cada cual puede utilizar sus criterios, si
bien es verdad que la mayora de los programadores tienen formas similares de escribir
pseudocdigo.

En todos los tiempos y ms an en la era en que vivimos, el hombre tiene cada vez mas
necesidad de consultar una mayor cantidad de informacin para poder desarrollar sus
actividades. El gran cmulo de informacin ha hecho necesario que sta tenga que ser
almacenada y organizada correctamente para acceder a ella rpidamente.
Segn lo visto hasta el momento, la nica forma que tiene el ordenador de almacenar la
informacin es mediante variables, que no son mas que porciones de la memoria central del
mismo. Pero al ser la memoria central un conjunto de dispositivos electrnicos que funcionan
mediante la alimentacin elctrica, cuando se apaga el ordenador, toda la informacin que
haba en su memoria central desaparece.

Por lo tanto, para poder acceder a determinada informacin en cualquier momento, se
necesitar que ella est depositada en soportes fsicos los cuales la almacenan en forma
permanente. Este es el caso de la memoria externa o auxiliar como ser disquete, disco duro,
cinta magntica, etc.-, en las cuales sin necesidad de estar conectadas a la corriente elctrica,
la informacin permanece all. La forma de guardar los datos en estos dispositivos auxiliares es
mediante unas estructuras llamadas archivos o ficheros.
Adems, existe una gran diferencia en cuanto a capacidad de almacenamiento entre la
memoria central y las auxiliares, en general la capacidad de las ltimas es muy superior.

Si comprendimos este caso, podramos decir que en un ordenador la informacin de entrada
de la que se parte para su tratamiento se va a obtener de dispositivos externos, desde los que
la va a introducir en su memoria central a travs de variables. A partir de aqu trabajar con
estas variables, y la informacin de salida que obtenga la guardar nuevamente en los
soportes de almacenamiento externos.
Anteriormente se nombr la palabra archivo, la cual es de entender que no es un trmino
puramente informtico, y para comprender este significado podemos comparar con hechos de
la vida cotidiana.
Por ejemplo cuando concurrimos a una biblioteca a pedir un libro prestado, el encargado
consulta su archivo de libros; si trabajamos en alguna empresa, nuestros datos estarn
registrados en un archivo de empleados, etc.- Entonces vemos que al menos todos tenemos de
alguna manera intuitiva el concepto de lo que significa archivo o fichero.
A continuacin veremos algunas definiciones que estn bsicamente relacionados con este
concepto.

7.1.1 Campo
Un campo es un conjunto de caracteres capaz de suministrar una determinada informacin
referida a un concepto. Un campo es un elemento de datos elementales tales como nombre y
apellido, numero de documento, domicilio, etc.-
Al igual que en las variables, al definir un campo hay que indicar claramente sus tres
caractersticas:
Nombre: Nombre que identifica a ese conjunto de caracteres
Tipo: Tipo de caracteres que puede contener (alfabtico, entero, etc.-)
Tamao: Cantidad de caracteres que puede contener
Por ejemplo, si tenemos que definir al campo nmero de documento resultara:
Nombre: documento
Tipo: numrico
Tamao: 8 enteros
Un campo es la entidad lgica ms pequea, consiste en un conjunto de byte que conforman
un dato.
Un campo es la unidad mnima de informacin de un registro.

7.1.2 Registros
Un registro es un conjunto de campos referentes a una entidad en particular y constituyen una
unidad para su proceso. Un ejemplo de un registro puede ser la informacin de un
determinado alumno universitario, que contiene los campos: libreta universitaria, apellido y
nombre, nmero de documento, domicilio, fecha de nacimiento, entre otros campos. La figura
muestra un ejemplo grfico de registro.

7.1.3 Archivos
Es el conjunto de registros homogneos referidos a objetos de la misma naturaleza o del
mismo tipo, almacenados en un soporte externo, que presenta entre s una relacin lgica y
que pueden ser consultados individualmente de forma iterativa o sistemtica.
Tomando el ejemplo anterior, podemos decir que habr un registro por alumno, y habr
tantos registros como alumnos haya. Este conjunto de registros de alumnos formar un
archivo y lo vemos grficamente en la figura.

7.1.3 Archivos
Un archivo en una computadora es una estructura diseada para contener datos, estos estn
organizados de forma tal que pueden ser recuperados fcilmente, borrados, actualizados, etc.-
Al hablar de archivo es imprescindible que cada uno de ellos tenga un nombre para poder
identificarlo. En este caso podra ser un nombre apropiado: ESTUDIANTES.
En resumen, podramos decir que un archivo est formado por un conjunto de registros, y
estos a su vez por un conjunto de campos.

7.1.4 Base de Datos
Es una coleccin de archivos relacionados lgicamente, que se estructura en diferentes formas
para reducir duplicaciones y proporcionar un mejor acceso a los datos. Constituye el nivel mas
alto en la jerarqua de organizacin de los datos, siendo el nivel mas bajo el carcter. As una
base de datos de una universidad podra contener archivos de estudiantes, profesores,
inventarios, libros, etc. La figura presenta grficamente la estructura jerrquica en base de
datos. .

Vous aimerez peut-être aussi