Diseño Estructural de Algoritmos

Anuncio
Conceptos Básicos Y Metodología Para La Solución De Problemas Por Medio De Computadoras
1.1 Definición De Lenguaje
1.2 Definición De Algoritmo
1.3 Algoritmo Cotidiano
1.4 Definición De Lenguaje Algorítmico
1.5 Historia Y Aplicación De Los Lenguajes Algorítmicos
1.6 Definición De Problemas
1.7 Análisis De Los Datos
1.8 Diseño De La Solución
1.9 Codificación
1.10 Prueba y Depuración
1.11 Documentación
1.12 Mantenimiento
1.1 Definición De Lenguaje
Lenguaje
Medio de comunicación entre los seres humanos a través de signos orales y escritos que poseen un
significado. También podría decirse que es cualquier procedimiento que sirve para comunicarse, representado
mediante símbolos y caracteres específicos
Desde El Punto De Vista Informático El Lenguaje Es:
La representación por medio de signos, símbolos y caracteres que existe entre la comunicación de la PC.
Lenguajes De Programación
Son los lenguajes utilizados para escribir programas de computadoras que puedan ser entendidos por ellas.
Los lenguajes de programación se clasifican en tres grandes categorías:
− Máquina
− Bajo nivel (ensamblador) y
− Alto nivel
1
Lenguaje Máquina
Es el lenguaje propio de la computadora, basado en la lógica binaria, de ceros y unos (00010111). Este
lenguaje resulta difícil de utilizar para las personas; ya que el programador debe introducir todos y cada uno
de los comandos y datos en forma binaria, y una operación sencilla como comparar el contenido de un registro
con los datos situados en una ubicación del chip de memoria puede tener el siguiente formato: 11001010
00010111 11110101 00101011.
La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que muy raras veces lo
que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el
mismo.
Lenguaje De Bajo Nivel
(Ensamblador)
Como vimos anteriormente la programación en lenguaje máquina es difícil por ello se necesitan lenguajes que
faciliten este proceso. Por este motivo han sido diseñados los lenguajes de bajo nivel.
Estos lenguajes dan a cada instrucción un mnemónico, como por ejemplo STORE, ADD o JUMP. Los
lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudo difíciles de aprender.
Esta abstracción da como resultado un lenguaje de muy bajo nivel que es específico de cada microprocesador:
El Lenguaje Ensamblador
.Al asignar un código mnemotécnico (por lo general de tres letras) a cada comando en lenguaje máquina, es
posible escribir y depurar o eliminar los errores lógicos y de datos en los programas escritos en lenguaje
ensamblador, empleando para ello sólo una fracción del tiempo necesario para programar en lenguaje
máquina.
En el lenguaje ensamblador, cada comando mnemotécnico y sus operadores simbólicos equivalen a una
instrucción de máquina. Un programa ensamblador traduce el código fuente, (una lista de códigos de
operación mnemotécnicos y de operadores simbólicos), a código objeto (es decir, a lenguaje máquina) y, a
continuación ejecuta el programa, todo esto gracias a un intérprete o a un compilador, los cuáles veremos más
adelante
Sin embargo, el lenguaje ensamblador puede utilizarse con un solo tipo de chip de CPU o microprocesador,
por lo que los programas escritos en un bajo nivel son prácticamente específicos para cada procesador.
Si se quiere ejecutar el programa en otra máquina con otra tecnología, será necesario rescribir el programa
desde el principio.
Así que los programadores necesitaban un método abreviado en el que un enunciado simbólico pudiera
representar una secuencia de numerosas instrucciones en lenguaje máquina, y un método que permitiera que el
mismo programa pudiera ejecutarse en varios tipos de máquinas. Estas necesidades llevaron al desarrollo de
lenguajes de alto nivel.
Lenguaje De Alto Nivel
Los llamados lenguajes de alto nivel son los que se emplean con mayor frecuencia como lenguajes de
programación, porque permiten expresar los algoritmos de una manera y con un estilo fácilmente reconocible
por parte de diversos programadores y usuarios; debido a que están formados por elementos de lenguajes
2
naturales, como el inglés utilizando términos del tipo LIST, PRINT u OPEN como comandos.
En Basic, el lenguaje de alto nivel más conocido, los comandos se introducen desde el teclado, desde un
programa residente en la memoria o desde un dispositivo de almacenamiento, y son interceptados por un
programa que los traduce a instrucciones en lenguaje máquina.
Asimismo, presentan una ventaja fundamental: la facilidad de poder ser transportados de una máquina a otra
sin necesidad de realizar grandes cambios en ellos, por lo que se dice que son independientes de la máquina
empleada.
A este grupo pertenecen los lenguajes más conocidos, tales como el APL, FORTRAN, PASCAL, COBOL,
LISP, PROLOG, C, ADA, PL/I.
Sin embargo, tanto los lenguajes de alto nivel como los de bajo nivel, no son entendibles directamente por la
máquina, sino que necesitan ser traducidos a instrucciones en lenguaje máquina que entiendan las
computadoras por lo que es necesario disponer de una interfase con el lenguaje máquina para que el programa
sea ejecutable. Al respecto existen dos tipos fundamentales de interfase, que son:
a) Compiladores
b) Intérpretes
Un compilador es:
Un traductor que facilita la comunicación entre el programador y la máquina, por medio de un proceso de
transformación llamado compilación.
De esta manera traduce un programa íntegro a lenguaje máquina antes de su ejecución, por lo cual se ejecutan
con tanta rapidez como si hubiesen sido escritos directamente en lenguaje máquina.
El compilador es el más eficaz para la mayor parte de las máquinas, puesto que presenta la ventaja de de que
cada una de las sentencias del programa es interpretada y traducida al lenguaje máquina solo una vez.
Un compilador crea una lista de instrucciones de código máquina, el código objeto, basándose en un código
fuente.
El código objeto resultante es un programa rápido y listo para funcionar, pero que puede hacer que falle el
ordenador si no está bien diseñado.
.
Un intérprete es:
Es un programa que se traduce línea por línea bajo la misma plataforma.
Es Un traductor pero más lento que los compiladores ya que no producen un código objeto, sino que recorren
el código fuente una línea cada vez. Cada línea se traduce a código máquina y se ejecuta. Cuando la línea se
lee por segunda vez, como en el caso de los programas en que se reutilizan partes del código, debe compilarse
de nuevo. Aunque este proceso es más lento, es menos susceptible de provocar fallos en la computadora
1.2 Definición De Algoritmo
3
ALGORITMO
Un algoritmo es una serie de pasos lógicos para realizar una acción, programa o tarea ya que es el primer paso
para realizar un programa.
Y tiene ciertas características que son:
♦ Preciso
Esto quiere decir que debe indicar el orden en cada paso.
♦ Definido
Es decir, si se sigue dos veces, obtiene el mismo resultado cada vez.
♦ Finito
Que tiene fin, o sea un número definido de pasos.
Ejemplos de algoritmos son:
♦ Instrucciones para montar una bicicleta
♦ Hacer una receta de cocina
♦ Obtener el máximo común divisor de dos números, etc.
Los algoritmos se pueden expresar por fórmulas, diagramas de flujo, y pseudocódigos. Ésta última
representación es la más utilizada en lenguajes estructurados como Turbo Pascal.
1.3 Algoritmo Cotidiano
Un algoritmo cotidiano es:
La serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades
comunes, desde los pasos al levantarnos, así como ir de compras, etc.
1.4 Definición De Lenguaje Algorítmico
Para definir el lenguaje algorítmico:
Cabe recordar que el conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le
denomina algoritmo.
Así que el lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a
resolver y encontrar un método que permita resolverlo.
1.5 Historia Y Aplicación De Los Lenguajes Algorítmicos
Al igual que los idiomas sirven de vehículo de comunicación entre los seres humanos, existen lenguajes que
realizan la comunicación entre los seres humanos y las computadoras.
Estos lenguajes permiten expresar los programas o el conjunto de instrucciones que el operador humano desea
que la computadora ejecute.
4
Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la ENIAC y
la EDSAC, se componían en el lenguaje real de las máquinas mismas. La dificultad de programar las
máquinas de esta manera limitaba drásticamente su utilidad y proporcionaba un fuerte incentivo para que se
desarrollaran lenguajes de programación más orientados hacia la expresión de soluciones con la notación de
los problemas mismos.
Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores, un ejemplo es:
TRANSCODE, desarrollado para la computadora FERUT.
En los lenguajes ensambladores como mencionamos anteriormente en el apartado 1.1 se define un código
especial llamado mnemotécnico para cada una de las operaciones de la máquina y se introduce una notación
especial para especificar el dato con el cual debe realizarse la operación.
A mediados de los años 60's aparecieron los primeros lenguajes de propósito general como FORTRAN,
FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C, C++, PASCAL, etc. pero el desarrollo de nuevas
tecnologías, tanto en arquitectura de computadoras como en lenguajes de programación, continúa a paso
acelerado, cada vez con mayor velocidad, el panorama está cambiando de una etapa de sistemas y lenguajes
especialmente desarrollados para aplicaciones individuales. Los lenguajes de programación actuales son los
conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C.
1.6 Definición De Problemas
Con el fin de resolver un problema utilizando un sistema de cómputo, debe seguirse una serie de pasos que
permiten avanzar por etapas bien definidas hacia la solución y ejecución de la misma
Esta serie de fases o pasos deben seguirlas todos los programadores.
Estas etapas son las siguientes
.
Definición del problema
La primera fase en la resolución de un problema por computadora es la definición o análisis del problema. En
donde lo más importante es que conozcamos exactamente lo que debe hacer el programa y "que se desea
obtener al final del proceso
Para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean
descritas con detalle ya que esto es un requisito para lograr una solución eficaz; por lo que es conveniente
hacerse las siguientes preguntas:
1.− ¿Qué entradas se requieren? (Tipo Y Cantidad)
2.− ¿Cuál es la salida deseada? (Tipo Y Cantidad)
3.− ¿Qué método produce la salida deseada?}
1.7 Análisis De Los Datos
Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes aspectos:
1.− Los resultados esperados.
5
2.− Los datos disponibles.
3.− Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado.
Esta sería un diagrama de la resolución de un problema en su más mínima expresión.
Y mientras esto no se comprenda no puede pasarse a la siguiente etapa.
1.8 Diseño De La Solución
Para realizar el diseño de la solución:
Como todos sabemos, una computadora no tiene capacidad para solucionar problemas más que cuando se le
proporcionan los sucesivos pasos a realizar, esto se refiere a la obtención de un algoritmo que resuelva
adecuadamente el problema.
En caso de que obtengamos varios algoritmos, seleccionaremos uno de ellos utilizando criterios ya conocidos.
Esta etapa incluye:
La descripción del algoritmo resultante en un lenguaje natural, en un diagrama de flujo o natural de
programación.
De esta manera, solo se establece la metodología para alcanzar la solución en forma conceptual, es decir; sin
alcanzar la implementación en el sistema de cómputo.
Así tenemos que la información proporcionada constituye su entrada y la información producida por el
algoritmo constituye su salida.
Los problemas complejos se pueden resolver más eficazmente por la computadora cuando se dividen en
subproblemas que sean más fáciles de solucionar.
|
1.9 Codificación
Codificación es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en
etapas precedentes. Esto se refiere a la obtención de un programa definitivo que pueda ser comprensible para
la máquina.
Cabe destacar que si la codificación original se realizó en papel, previo a la compilación deberá existir un
paso conocido como trascripción.
Y posteriormente, una vez que el algoritmo se ha convertido en un programa fuente. Este programa fuente
debe ser traducido a lenguaje máquina, este proceso se realiza con el compilador, y se obtiene el programa
objeto, (siempre y cuando el programa fuente sea correcto) que posteriormente se vuelve un programa
ejecutable.
Estos pasos a continuación se describen de una forma esquematizada:
1.10 Prueba y Depuración
6
La Prueba se realiza tras la compilación.
Si tras la compilación se presentan errores (errores de compilación) en el programa fuente, es preciso volver a
editar el programa, corregir los errores y compilar de nuevo, este proceso se repite hasta que no se producen
errores.
De esta manera se obtiene el programa objeto, que todavía no es ejecutable directamente, pero si no contiene
errores se debe instruir al sistema para que realice la fase de montaje o enlace del programa objeto con las
librerías del programa del compilador; este proceso de montaje produce un programa ejecutable.
La Depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
Cuando se ejecuta un programa, se pueden producir tres tipos de errores:
1.− Errores de compilación. Se producen normalmente por un uso incorrecto de las reglas del lenguaje de
programación y suelen ser errores de sintaxis, por lo tanto la computadora no puede comprender la
instrucción, y obviamente no se obtendrá el programa objeto, y el compilador imprimirá una lista de todos los
errores encontrados durante la compilación.
2.− Errores de ejecución. Estos errores se producen por instrucciones que las computadoras pueden
comprender, pero no ejecutar. Ejemplos de éstos son: una división por cero, y raíces cuadradas de números
negativos; por lo que en este caso se detiene la ejecución del programa y se imprime un mensaje de error.
3.− Errores lógicos. Se producen en la lógica del programa y la fuente del error suele ser el diseño del
algoritmo. Estos errores son los más difíciles de detectar, ya que el programa puede funcionar y no producir
errores de compilación ni ejecución, y solo puede detectarse cuando se advierte un error por la obtención de
resultados incorrectos.
En este caso se debe volver a la fase del diseño del algoritmo, modificarlo, cambiar el programa fuente,
compilar y ejecutar una vez más.
1.11 Documentación
La documentación de un problema consta de las descripciones de los pasos a dar en el proceso de resolución
de un problema. La importancia de la documentación es por su decisiva influencia en el producto final.
Programas pobremente documentados son difíciles de leer, más difíciles de depurar y casi imposibles de
mantener y modificar. Por ello la importancia de la documentación, sin la documentación es imposible
corregir errores futuros o bien cambiar el programa
1.12 Mantenimiento
El mantenimiento se define como la modificación del programa por medio de actualizaciones, que mejoran al
programa, corrigiendo errores o bien actualizándolos para un mejor funcionamiento.
Por ello la documentación es sin duda muy importante para poder llevar a cabo el mantenimiento.
Instituto Tecnológico Superior De Coatzacoalcos Diseño Estructural de algoritmos I
Unidad I
COMPILACIÓN
7
Código
Fuente
Programa
Ejecutable
Código objeto
Codificación
Diseño de la solución
Análisis de los datos
Definición del problema
Prueba y depuración
Mantenimiento
Definición de un problema
Diseño
Del
Algoritmo
Resolución del problema con la computadora
Resolución de un problema
ALGORITMO RESULTANTE EN LENGUAJE NATURAL
ALGORITMO QUE RESUELVA EL PROBLEMA
TRANSCRIPCION
Si la codificación se escribió en papel
Se realiza la:
Algoritmo realizado en etapas anteriores
Para realizar la conversión del algoritmo en programa, se deben sustituir las palabras reservadas en español
por sus homónimos en inglés, (hablando de un lenguaje de alto nivel) y las operaciones, instrucciones
indicadas en lenguaje natural.
CODIFICACIÓN
8
COMPILACIÓN
PROGRAMA FUENTE
PROGRAMA OBJETO
PROGRAMA EJECUTABLE
INTERNA
Esta documentación son los comentarios o mensajes que facilitan el entendimiento del proceso.
EXTERNA
Incluye análisis, diagramas de flujo, y/o pseudocódigos, manuales de usuario, con instrucciones para ejecutar
el programa y para interpretar los resultados.
La documentación de un programa puede ser de dos tipos:
9
Descargar