Definición de Algoritmo.
“Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema que termina en un número finito de pasos”.
Las características fundamentales que debe cumplir todo algoritmo son:
Debe ser preciso. e indicar el orden de realización de cada paso.
Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento ; o sea debe tener un número finito de pasos.
La definición de un algoritmo debe describir tres partes : Entrada, Proceso y Salida.
Diseñar un algoritmo para cambiar una llanta a un coche.
Inicio.
Traer gato.
Levantar el coche con el gato.
Aflojar tornillos de las llantas.
Sacar los tornillos de las llantas.
Quitar la llanta.
Poner la llanta de repuesto.
Poner los tornillos.
Apretar los tornillos.
Bajar el gato.
Fin.
Algoritmos Cotidianos.
Son aquéllos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodología para resolverlos.
Algunos ejemplos son:
Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rechazar el pedido.
Pasos del algoritmo:
Inicio.
Leer el pedido.
Examinar ficha del cliente.
Si el cliente es solvente aceptar pedido, en caso contrario rechazar pedido.
Fin.
Determinar el mayor de tres números enteros.
Pasos del algoritmo :
1.- Comparar el primero y el segundo entero, deduciendo cuál es el mayor.
2.- Comparar el mayor anterior con el tercero y deducir cuál es el mayor. Este será el resultado.
Los pasos anteriores se pueden descomponer en otros pasos más simples en los que se denomina refinamiento del algoritmo.
1.- Obtener el primer número (entrada), denominado NUM1.
2.- Obtener el segundo número (entrada), denominado NUM2.
3.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar NUM1. Llamar a este número MAYOR.
4.- Obtener el tercer número (entrada), y se denomina NUM3.
5.- Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este número MAYOR.
6.- Presentar el valor MAYOR (salida).
7.- Fin.
Definición de Lenguajes Algorítmicos.
Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle.
La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera :
Lenguaje Natural.
Lenguaje de Diagrama de Flujo.
Lenguaje Natural de Programación.
Lenguaje de Programación de Algoritmos.
Lenguaje Natural.
Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan términos especializados de una determinada ciencia,
profesión o grupo.
Lenguaje de Diagrama de Flujo.
Es aquél que se vale de diversos símbolos para representar las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cómputo.
Lenguaje Natural de Programación.
Son aquéllos que están orientados a la solución de problemas que se definen de una manera precisa. Generalmente son aplicados para la elaboración de fórmulas o métodos científicos.
El lenguaje natural tiene las siguientes características :
Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).
Son precisos y bien definidos.
Utilizan términos familiares al sentido común.
Elimina instrucciones innecesarias.
Lenguaje de Programación de Algoritmos.
Es aquél que se utiliza para introducir en la computadora un algoritmo específico. Se les conoce también como Lenguaje de Programación.
Lenguaje de Programación :
Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.
Los lenguajes de programación pueden clasificarse por diversos criterios, siendo el más común su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la máquina.
Los principales tipos de lenguajes utilizados son tres :
Lenguaje Máquina.
Lenguaje de bajo Nivel (ensamblador).
Lenguajes de Alto Nivel.
Lenguaje Máquina.
Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario.
Ventajas del Lenguaje Máquina
Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje de programación.
Desventajas del Lenguaje Máquina
Dificultad y lentitud en la codificación.
Poca fiabilidad.
Gran dificultad para verificar y poner a punto los programas.
Los programas solo son ejecutables en el mismo procesador (CPU).
En la actualidad, las desventajas superan a las ventajas, lo que hace prácticamente no recomendables a los lenguajes máquinas.
Lenguajes de Bajo Nivel.
Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son : en inglés : ADD, SUB, DIV, etc. ; en español : SUM, RES, DIV, etc.
Una instrucción típica de suma sería :
ADD M, N, P
Esta instrucción significa “sumar el contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P” . Evidentemente es más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora.
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje máquina.
Mayor facilidad de codificación y, en general, su velocidad de cálculo.
Desventajas del lenguaje ensamblador.
Dependencia total de la máquina lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes máquinas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Machintosh.
La formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel, ya que exige no solo las técnicas de programación, sino también el conocimiento del interior de la máquina.
Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran básicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos.
Lenguajes de Alto Nivel.
Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.
Ventajas de los lenguajes de alto nivel.
El tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes.
La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Nombres de las instrucciones tales como READ, WRITE, PRINT, OPEN, etc.
Las modificaciones y puestas a punto de los programas son más fáciles.
Reducción del costo de los programas.
Transportabilidad.
Desventajas de los lenguajes de alto nivel.
Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo.
No se aprovechan los recursos internos de la máquina que se explotan.
mucho mejor en lenguajes máquina y ensambladores.
Aumento de la ocupación de memoria.
El tiempo de ejecución de los programas es mucho mayor.
Para una mejor compresión de este tema se definirá el concepto de programa, por ser este un término muy utilizado en el diseño estructurado de algoritmos.
Programa : Es un conjunto de instrucciones escritas en un lenguaje de programación que indican a la computadora la secuencia de pasos para resolver un problema.
Historia y apliacacion de los lenguajes algoritmicos.
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.
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 se define un código especial llamado mnemónico 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
Introducción
El computador no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con el computadora además de lo anterior también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Mas aun, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computador se les conoce como programas y no son más que una serie de operaciones que realiza el computador para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema específico. Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera específica las funciones que pueden realizar el computador y las formas en que se pueden manejar los elementos que hay en la misma. Computador: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en el computador como entrada (input) y a continuación se procesan para producir una salida (output).
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (información) en el computador para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos: teclado , scanners (digitalizadores de rastreo), Mouse (ratón), trackball (bola de ratón estacionario), joys tick (palancas de juego), lápiz óptico. Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario. Ejemplo: monitor, impresora. La Unidad Central de Procesamiento (C.P.U) se divide en dos: Unidad de control Unidad Aritmético – Lógica
Unidad de Control: Coordina las actividades de el computador y determina que operaciones se deben realizar y en que orden; así mismo controla todo el proceso del computador.
Unidad Aritmético - Lógica: Realiza operaciones aritméticas y lógicas, tales como suma, resta, multiplicación, división y comparaciones.
La Memoria del computador se divide en dos: Memoria Central o Interna Memoria Auxiliar o Externa
Memoria Central (interna): La CPU utiliza la memoria del computador para guardar información mientras trabaja con ella; mientras esta información permanezca en memoria, el computador puede tener acceso a ella en forma directa. Esta memoria construida internamente se llama memoria de acceso aleatorio (RAM). La memoria interna consta de dos áreas de memoria: La memoria RAM (Randon Access Memory): Recibe el nombre de memoria principal o memoria del usuario, en ella se almacena información solo mientras el computador esta encendido. Cuando se apaga o arranca nuevamente el computador, la información se pierde, por lo que se dice que la memoria RAM es una memoria volátil. La memoria ROM (Read Only Memory): Es una memoria estática que no puede cambiar, el computador puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ahí se encuentran; por lo que se dice que esta memoria es de solo lectura. Los datos de la memoria ROM están grabados en forma permanente y son introducidos por el fabricante del computador. Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) mas comúnmente utilizados son: cintas magnéticas y discos magnéticos.
Definición de Lenguaje
Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación. La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: Los mensajes deben correr en un sentido a la vez. Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicación y Mensaje. Lenguajes de Programación Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con el computador. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. Los lenguajes de programación se cla sifican en:
Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por el computador y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más 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, etc.) son aquellos en los que las instrucciones o sentencias a el computador son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la Escritura y comprensión del programa.
Definición de Algoritmo
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.
Tipos de Algoritmos Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para deFin. ir los pasos del proceso.
1.5 Lenguajes Algoritmicos Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso.
Tipos de Lenguajes Algoritmicos Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).
Metodología para la solución de problemas por medio de
Computador
Definición del Problema
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y Precisa. Es importante que se conozca lo que se desea que realice la computador; mientras esto No se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
Análisis del Problema
Una vez que se ha comprendido lo que se desea del computador, es necesario definir: Los datos de entrada. Cual es la información que se desea producir (salida) Los métodos y fórmulas que se necesitan para procesar los datos. Una recomendación muy práctica es el que nos pongamos en el lugar del computador Y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los Resultados esperados.
Diseño del Algoritmo
Las características de un buen algoritmo son: Debe tener un punto particular de Inicio… Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar En la definición del problema. Debe ser finito en tamaño y tiempo de ejecución.
Codificación
La codificación es la operación de escribir la solución del problema (de acuerdo a la Lógica del diagrama de flujo o pseudocodigo), en una serie de instrucciones detalladas, en un Código reconocible por la computador, la serie de instrucciones detalladas se le conoce como Código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.
Prueba y Depuración
Los errores humanos dentro de la programación de computadores son muchos y Aumentan considerablemente con la complejidad del problema. El proceso de identificar y Eliminar errores, para dar paso a una solución sin errores se le llama depuración. La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la Solución, por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración, ya que De este trabajo depende el éxito de nuestra solución.
Documentación
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, Procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentación se divide en tres partes: Documentación Interna Documentación Externa Manual del Usuario Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso. Documentación Externa: Se define en un documento escrito los siguientes puntos: Descripción del Problema Nombre del Autor Algoritmo (diagrama de flujo o pseudocodigo) Diccionario de Datos
Código Fuente (programa) Manual del Usuario : Describe paso a paso la manera como funciona el programa, con el fin. de que el usuario obtenga el resultado deseado.
Mantenimiento
Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.