Professional Documents
Culture Documents
innegablemente
Esquemtica de
hamiltoniano.
un
algoritmo
solucionando
un
problema
de
ciclo
Un algoritmo se puede concebir como una funcin que transforma los datos
de un problema (entrada) en los datos de una solucin (salida). Ms aun, los
datos se pueden representar a su vez como secuencias de bits, y en general,
de smbolos cualesquiera. Como cada secuencia de bits representa a un
nmero natural (vase Sistema binario), entonces los algoritmos son en
esencia funciones de los nmeros naturales en los nmeros naturales que s
se pueden calcular. Es decir que todo algoritmo calcula una funcin
donde cada nmero natural es la codificacin de un problema o
de una solucin.
En ocasiones los algoritmos son susceptibles de nunca terminar, por
ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo
nunca devuelve ningn valor de salida, y podemos decir que la funcin
queda indefinida para ese valor de entrada. Por esta razn se considera que
los algoritmos son funciones parciales, es decir, no necesariamente definidas
en todo su dominio de definicin.
Cuando una funcin puede ser calculada por medios algortmicos, sin
importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice
que dicha funcin es computable. No todas las funciones entre secuencias
datos son computables. El problema de la parada es un ejemplo.
Anlisis de algoritmos
Como medida de la eficiencia de un algoritmo, se suelen estudiar los
recursos (memoria y tiempo) que consume el algoritmo. El anlisis de
algoritmos se ha desarrollado para obtener valores que de alguna forma
indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en
funcin del tamao de los valores de entrada.
El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la
computacin y, en la mayora de los casos, su estudio es completamente
abstracto sin usar ningn tipo de lenguaje de programacin ni cualquier otra
implementacin; por eso, en ese sentido, comparte las caractersticas de las
disciplinas matemticas. As, el anlisis de los algoritmos se centra en los
principios bsicos del algoritmo, no en los de la implementacin particular.
Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo
en pseudocdigo o utilizar un lenguaje muy simple tal como Lexico, cuyos
cdigos pueden estar en el idioma del programador.
Algunos escritores restringen la definicin de algoritmo a procedimientos que
deben acabar en algn momento, mientras que otros consideran
procedimientos que podran ejecutarse eternamente sin pararse, suponiendo
el caso en el que existiera algn dispositivo fsico que fuera capaz de
funcionar eternamente. En este ltimo caso, la finalizacin con xito del
algoritmo no se podra definir como la terminacin de este con una salida
satisfactoria, sino que el xito estara definido en funcin de las secuencias
de salidas dadas durante un periodo de vida de la ejecucin del algoritmo.
Por ejemplo, un algoritmo que verifica que hay ms ceros que unos en una
secuencia binaria infinita debe ejecutarse siempre para que pueda devolver
un valor til. Si se implementa correctamente, el valor devuelto por el
algoritmo ser vlido, hasta que evale el siguiente dgito binario. De esta
forma, mientras evala la siguiente secuencia podrn leerse dos tipos de
seales: una seal positiva (en el caso de que el nmero de ceros sea mayor
que el de unos) y una negativa en caso contrario. Finalmente, la salida de
este algoritmo se define como la devolucin de valores exclusivamente
positivos si hay ms ceros que unos en la secuencia y, en cualquier otro
caso, devolver una mezcla de seales positivas y negativas.
Ejemplo de algoritmo
El problema consiste en encontrar el mximo de un conjunto de nmeros.
Para un ejemplo ms complejo vase Algoritmo de Euclides.
Descripcin de alto nivel
Dado un conjunto finito de nmeros, se tiene el problema de encontrar el
nmero ms grande. Sin prdida de generalidad se puede asumir que dicho
conjunto no es vaco y que sus elementos estn numerados como
.
Es decir, dado un conjunto
se pide encontrar
para todo elemento que pertenece al conjunto .
tal que
//
es el nmero de elementos de
devolver
//
Sobre la notacin:
Implementacin
En lenguaje C++:
int max(int c[], int n)
{
int i, m = c[0];
for (i = 1; i < n; i++)
if (c[i] > m) m = c[i];
return m;
toma
Introduccin
Se pueden utilizar muchos lenguajes para programar una computadora. El
ms bsico es el lenguaje de mquina, una coleccin de instrucciones muy
detallada que controla la circuitera interna de la maquina. Este es el dialecto
natural de la maquina. Muy pocos programas se escriben actualmente en
lenguaje de maquina por dos razones importantes: primero, porque el
lenguaje de maquina es muy incomodo para trabajar y segundo porque la
mayora de las maquinas se pide programar en diversos tipos de lenguajes,
que son lenguajes de alto nivel, cuyas instrucciones son ms compatibles
con los lenguajes y la forma de pensar humanos como lo es el lenguaje c
que adems es de propsito general.
Debido a que los programas diseados en este lenguaje se pueden ejecutar
en cualquier maquina, casi sin modificaciones. Por tanto el uso del lenguaje
de alto nivel ofrece tres ventajas importantes, sencillez, uniformidad y
portabilidad.
1.1. Lenguaje de programacin: Sistema de smbolos y reglas que permite
la construccin de programas con los que la computadora puede operar as
como resolver problemas de manera eficaz.
Estos contienen un conjunto de instrucciones que nos permiten realizar
operaciones de entrada / salida, calculo, manipulacin de textos, lgica /
comparacin y almacenamiento / recuperacin.
Los lenguajes de programacin se clasifican en:
2.7 Mantenimiento
Se lleva a cabo despus de terminado el programa, cuando se detecta que
es necesario hacer algn cambio, ajuste o complementacin al programa
para que siga trabajando de manera correcta. Para poder realizar este
trabajo se requiere que el programa este correctamente documentado.
PROGRAMACIN
LOS DATOS Y OPERACIONES BSICAS.
1. IDENTIFICADOR. Un identificador es una serie de caracteres formados
por letras, dgitos y el carcter subrayado ( _ ) que no inicie con dgito, asi
mismo es el nombre que damos a todo lo que manipulamos dentro de un
programa (variables, constantes, funciones, etc). Por ejemplo variables,
constantes, funciones, tipos definidos por el usuario etc.
2. TIPOS DE DATOS. Todos los datos tienen un tipo asociado con ellos. Un
dato puede ser un simple carcter, tal como b, un valor entero tal como 35. El
tipo de dato determina la naturaleza del conjunto de valores que puede tomar
una variable.
Aritmticas
Relacinales
Lgicas
9. PALABRAS RESERVADAS.
Son palabras que tienen un significado especial para el lenguaje y no se
pueden utilizar como identificadores.
10. COMENTARIOS.
Los comentarios pueden aparecer en cualquier parte del programa, mientras
estn situados entre los delimitadores /* comentario */. Los comentarios son
tiles para identificar los elementos principales de un programa o para
explicar la lgica subyacente de estos.
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin
se puede decir que es la representacin detallada en forma grfica de como
deben realizarse los pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican
diferentes procesos en la computadora), se relacionan entre s mediante
lneas que indican el orden en que se deben ejecutar los procesos.
Los smbolos utilizados han sido normalizados por el instituto norteamericano
de normalizacin (ANSI).
2. Pseudocdigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro
idioma) que se emplea, dentro de la programacin estructurada, para realizar
el diseo de un programa. En esencial, el pseudocdigo se puede definir
como un lenguaje de especificaciones de algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo
para dar solucin a un problema determinado. El pseudocdigo utiliza
palabras que indican el proceso a realizar.
DIAGRAMAS DE FLUJO
Los diagramas de flujo representan la secuencia o los pasos lgicos para realizar una
tarea mediante unos smbolos. Dentro de los smbolos se escriben los pasos a seguir.
Un diagrama de flujo debe proporcionar una informacin clara, ordenada y concisa de
todos los pasos a seguir.
Nota: Cuando tengas claro como se hacen los diagramas de flujo te recomendamos
que veas el siguiente enlace: Ejemplos de Diagramas de Flujo. Te presentamos 15
diagramas resueltos. Normalmente para realizar un diagrama de flujo primero se hace
lo que se llama el algoritmo. Un algoritmo es una secuencia de PASOS a seguir para
resolver un problema de forma escrita.
Un ejemplo para cocinar un huevo para otra persona sera:
- Pregunto si quiere el huevo frito.
- Si me dice que si, lo frio, si me dice que no, lo hago hervido.
- Una vez cocinado le pregunto si quiere sal en el huevo.
- Si me dice que no lo sirvo en el Plato. Si me dice que si le hecho sal y despus lo
sirvo en el plato.
Ahora que ya sabemos todos los pasos, mediante el algoritmo, podemos hacer un
esquema con estos pasos a seguir. Este esquema ser el Diagrama de Flujo.
Si uno tiene experiencia puede prescindir del algoritmo escrito, pero siempre
tendremos que tenerlo en mente para hacer el diagrama de flujo sin equivocarnos.
Qu son Los Diagramas de Flujo y Para qu se Usan?
Un algoritmo describe una secuencia de pasos para realizar un tarea. El Diagrama de
Flujo es su representacin esquemtica. Los diagramas de flujo representan la
secuencia lgica o los pasos que tenemos que dar para realizar una tarea mediante
unos smbolos y dentro de ellos se describen los pasos ha realizar.
Por la tanto son una excelente herramienta para comprender el proceso a seguir as
como para identificar posibles errores antes del desarrollo final de la tarea. Se usan
para antes de hacer un programa informtico, analizar lo que tiene que hacer un robot,
en los procesos industriales, etc.
Un diagrama de flujo es til en todo aquello que se necesite una previa organizacin
antes de su desarrollo. En la realizacin de un programa informtico es
imprescindible primero realizar el diagrama de flujo, independientemente del
lenguaje de programacin que usemos despus. Una vez que tenemos nuestro
diagrama de flujo solo tendremos que conocer las rdenes del lenguaje que realizan
esas tareas.
Reglas Bsicas Para la Construccin de un Diagrama de Flujo
1. Todos los smbolos han de estar conectados
ejemplo
de
un
diagrama
de
flujo
para
una
operacin
sencilla.
Hacemos otro?
Bueno vamos hacer uno que nos muestre el resultado del rea de un tringulo en
pantalla.
Como ves en este ni siquiera hemos puesto las operaciones dentro de los smbolos ya
que con la forma del smbolo ya se entiende. No me hemos usado mucho el smbolo
de tomar un decisin, por eso vamos hacer uno en el que nos diga si el nmero es
par o impar:
Si te das cuenta mod significa dividir entre 2. Como ya debes saber si divido un
nmero entre 2 y el resto es 0 el nmero es par. Bien pues hay esta la decisin. Al
dividirlo entre 2 el resto es 0? Hay 2 posibilidades. Si lo es se ve en pantalla "Si es
par", si no lo es se ve en pantalla "No es par". Eso es la toma de decisiones. Adems
los diagramas de flujo no solo valen para informtica, incluso podemos hacer uno
para cocinar un huevo, como vimos al principio.
Bueno ahora vamos hacer uno un poco ms complicado. Tenemos que hacer un
diagrama de flujo para mostrar la suma de los 50 primeros nmeros. Lo primero es
poner a cero la suma y dar el primer nmero a sumar que ser el 0.
Fjate que el diagrama acaba cuando N, que es el nmero en cada momento, es 50.
Mientras no sea 50 el programa vuelve a la tercera secuencia que ser sumarle un
nmero al anterior N = N + 1. Intenta comprenderlo y ver que hace. Puedes realizar
mentalmente el diagrama para el nmero 0 y vers como lo acabas entendiendo.
1
7
INTRODUCCIN