Algoritmos - algoritmo y seudocodigo

Anuncio
Conceptos Básicos
Computadora:
Es un dispositivo electrónico utilizado para procesar información y
obtener resultados. Los datos y la información se pueden introducir
en la computadora como entrada (input) y a continuación se
procesan
para
producir
una
salida
(output).
Proceso de información en la computadora:
Datos de Entrada --> Proceso --> Datos de Salida
Programa:
Es el conjunto de instrucciones escritas con algún lenguaje de
programación y que ejecutadas secuencialmente resuelven un
problema especifico.
Algoritmo:
Conjunto de operaciones que se utilizan para resolver un problema
específico. En este conjunto de instrucciones se indica la secuencia
de operaciones que se deben realizar para, a partir de los datos de
entrada, obtener el resultado buscado.
El concepto de algoritmo es anterior a los ordenadores, y
ampliamente utilizado en el mundo de la ciencia para la resolución
metódica de problemas. Sin embargo, con la aparición de los
ordenadores se comprobó que era una herramienta ideal, ya que
cualquier algoritmo
informático.
puede
transformarse
en
un
programa
Características del algoritmo:
Tiene que ser Finito (con un final), Preciso (detallar el orden de las
operaciones a realizar) y Definido (al aplicar el algoritmo a los
mismos datos de entrada, siempre se obtendrá el mismo resultado
a la salida).
Metodología para la solución de problemas por medio de
computadora.
En general, se escriben algoritmos para resolver problemas que no
son tan fáciles de resolver a primera vista, y de los que necesitamos
especificar el conjunto de acciones que se llevarán a cabo para su
resolución. Además, como lo que interesa es resolver problemas
utilizando la computadora, los algoritmos tendrán como finalidad ser
traducidos en programas, por lo que es conveniente mencionar el
proceso general de resolución de problemas, desde que se dispone
de un algoritmo, hasta que la computadora lo ejecuta.
El proceso es el siguiente:
 Definición y análisis del Problema: definición y
delimitación (macroalgoritmo).Considerar los datos de
entrada, el proceso que debe realizar el ordenador y los
datos de salida.
 Diseño del Algoritmo: se utiliza diferentes herramientas
de representación pseudocódigo, escritura natural de
algoritmo , diagramas de flujo etc.
 Prueba de escritorio: seguimiento manual de los pasos
descritos en el algoritmo.Se realiza con valores bajos y
tiene como finalidad detectar errores.
 Codificación(Programa Lenguaje alto nivel).Selección de
un lenguaje de programación y digitación del
pseudocódigo haciendo uso de la sintaxis y escritura
gramatical del lenguaje seleccionado.
 Compilación o Interpretación del programa: El software
elegido convierte las instrucciones escritas en el
lenguaje comprendidas por el computador.
 Ejecución del Programa: El programa es ejecutado por
el ordenador para llegar a los resultados esperados.
 Prueba y Depuración: Operación de detectar, localizar y
eliminar errores del mal funcionamiento del programa.
 Evaluación de los resultados: Obtenidos lo resultados se
los evalúa para verificar si son correctos. Un programa
puede arrojar resultados incorrectos aun cuando su
ejecución no muestra errores.
Existen diferentes formas de traducir un algoritmo a un programa.
Se ha escogido la representación en un lenguaje de alto nivel,
debido a que los lenguajes de este tipo proporcionan un mayor nivel
de abstracción y familiarización con el lenguaje natural (inglés).
Aquí también es importante recordar que las computadoras tienen
su propio lenguaje (binario), por lo que es necesario un proceso de
traducción (realizado por el compilador) para que se traduzca el
conjunto de sentencias escritas en un lenguaje de programación de
alto nivel (código fuente), a un conjunto de instrucciones que sean
compresibles para la computadora (código de máquina).
Finalmente, y aunque el proceso involucrado es más complejo que
lo que aquí se ha descrito, si todo está bien, el resultado de este
proceso será la ejecución del programa basado en el algoritmo.
Teniendo en consideración lo anterior, debería ser claro que el
papel del algoritmo es fundamental, ya que sin algoritmo no puede
haber programas, y sin programas, no hay nada que ejecutar en la
computadora. Es importante mencionar y enfatizar también que, un
algoritmo es independiente tanto del lenguaje de programación en
que se exprese, como de la computadora en la que se ejecute, por
lo que no deberían ser diseñados en función de ello.
Otro aspecto muy importante dentro de los algoritmos, es el del
análisis y diseño de algoritmos. El análisis y diseño formal de
algoritmos es una actividad intelectual considerable y no trivial en
general, ya que el diseño de buenos algoritmos requiere creatividad
e ingenio, y no existen reglas para diseñar algoritmos en general,
esto es, todavía no existe un algoritmo para diseñar algoritmos y
que además éstos sean buenos, por lo que, aunque es importante
mencionarlo y tenerlo en cuenta.
Cinco importantes condiciones de un algoritmo
Los algoritmos, además de ser un conjunto finito de reglas que dan
lugar a una secuencia de operaciones para resolver un tipo
específico de problemas, deben cumplir con cinco importantes
condiciones las mismas que son descriptas a continuación:.
Las cinco condiciones , reducen significativamente el espectro tan
amplio que hasta ahora se ha manejado como algoritmo. Así por
ejemplo, aunque una receta de cocina podría considerarse como un
algoritmo, es común encontrar expresiones imprecisas en ella que
dan lugar a ambigüedad (violando la condición 2), tales como
“añádase una pizca de sal”, “batir suavemente”, etc., invalidando
con ello la formalidad de un algoritmo dentro del contexto que nos
interesa.
1. Finitud: Un algoritmo tiene que acabar siempre tras un número
finito de pasos. (Un procedimiento que tiene todas las
características de un algoritmo salvo que posiblemente falla en su
finitud, se conoce como método de cálculo.)
2. Definibilidad: Cada paso de un algoritmo debe definirse de
modo preciso; las acciones a realizar han de estar especificadas
para cada caso rigurosamente y sin ambigüedad.
3. Conjunto de entradas: Debe existir un conjunto especificado de
objetos, cada uno de los cuales constituye los datos iniciales de un
caso particular del problema que resuelve el algoritmo. A este
conjunto se le denomina conjunto de entradas del algoritmo.
4. Conjunto de salidas: Debe existir un número especificado de
objetos, cada uno de los cuales constituye la salida o respuesta que
debe obtener el algoritmo para los diferentes casos particulares del
problema. A este conjunto se le denomina conjunto de salidas del
algoritmo. Para cada entrada del algoritmo, debe existir una salida
asociada que constituye la solución al problema particular
determinado por dicha entrada.
5. Efectividad: Un algoritmo debe ser efectivo. Esto significa que
todas las operaciones a realizar por el algoritmo deben ser lo
bastante básicas para poder ser efectuadas de modo exacto, y en
un lapso de tiempo finito por el procesador que ejecute el algoritmo.
Estructura de un algoritmo
Aunque no existe una única forma de representar un algoritmo, la
estructura general de un algoritmo debería ser :cada uno tiene
formas diferentes aunque esencialmente iguales de representar un
algoritmo Elementos de la programación estructurada: algoritmos,
pseudo código y diagramas de flujo
Estructura general de un algoritmo
Algoritmo <nombre_del_algoritmo>
Inicio
definición de constantes
declaración de variables
Sentencia 1
Sentencia 2
.
.
.
Sentencia n
Fin
Aunado a la estructura general del algoritmo propuesta , se
considera recomendable que, partiendo de la descripción del
problema y de un análisis inicial, se determine la entrada, la salida y
el proceso general de solución del algoritmo.
Lenguajes de Programación:
Es un conjunto de símbolos, caracteres y reglas (programas) que le
permiten a las personas comunicarse con la computadora.
Los lenguajes de programación tienen un conjunto de instrucciones
que nos permiten realizar operaciones de entrada/salida, cálculo,
manipulación de textos, lógica/comparación y
almacenamiento/recuperación.
Los lenguajes de programación se clasifican en:
 Lenguaje Maquina: Son aquellos cuyas instrucciones son
directamente entendibles por la computadora y no necesitan
traducción posterior para que la CPU (Unidad Central de
Proceso) pueda comprender y ejecutar el programa. Las
instrucciones en lenguaje maquina se expresan en términos de la
unidad de memoria mas pequeña el bit (dígito binario 0 o 1).
 Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las
instrucciones se escriben en códigos alfabéticos conocidos como
mnemotécnicos para las operaciones y direcciones simbólicas.
 Lenguaje de Alto Nivel: Los lenguajes de programación de alto
nivel (BASIC, pascal, cobol, fortran, VisualB,C etc.) son aquellos
en los que las instrucciones o sentencias a la computadora son
escritas con palabras similares a los lenguajes humanos (en
general en ingles), lo que facilita la escritura y comprensión del
programa.
Técnicas para la formulación de algoritmos
Las dos herramientas utilizadas comúnmente para diseñar
algoritmos son:
 Diagrama de Flujo
 Pseuducodigo
Diagrama de Flujo.
Un diagrama de flujo es la representación gráfica de un algoritmo.
También se puede decir que es la representación detallada en
forma gráfica de como deben realizarse los pasos en la
computadora para producir resultados. Esta representación gráfica
se da cuando varios símbolos (que indican diferentes procesos en
la computadora), se relacionan entre si mediante líneas que indican
el orden en que se deben ejecutar los procesos. Los símbolos
utilizados han sido normalizados por el instituto norteamericano de
normalización (ANSI).
Recomendaciones para el diseño de Diagramas de Flujo
 Se deben se usar solamente líneas de flujo horizontales y/o
verticales.
 Se debe evitar el cruce de líneas utilizando los conectores.
 Se deben usar conectores solo cuando sea necesario.
 No deben quedar líneas de flujo son conectar.
 Se deben trazar los símbolos de manera que se puedan leer
de arriba hacia abajo y de izquierda a derecha.
 Todo texto escrito dentro de un símbolo deberá ser escrito
claramente, evitando el uso de muchas palabras.
Pseudocodigo.
Lenguaje de especificación, mezcla de lenguaje de programación y
español (o ingles o cualquier otro idioma) que se emplea, dentro de
la programación estructurada, para realizar el diseño de un
programa. En esencial, el pseudo código se puede definir como un
lenguaje
de
especificaciones
de
algoritmos.
Es la representación narrativa de los pasos que debe seguir un
algoritmo para dar solución a un problema determinado. El pseudo
código utiliza palabras que indican el proceso a realizar.
Descargar