Sie sind auf Seite 1von 12

ALGORITMOS

En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el objeto de estudio de la algoritmia. En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones. Ejemplo de Algoritmo Simple:

LENGUAJES DE PROGRAMACION
Un lenguaje de programacin es un lenguaje que puede ser utilizado para controlar el comportamiento de una mquina, particularmente una computadora. Consiste en un conjunto de reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programacin y lenguaje informtico como si fuesen sinnimos, no tiene por qu ser as, ya que los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como, por ejemplo, el HTML. Segn la forma de ejecucin Lenguajes compilados Naturalmente, un programa que se escribe en un lenguaje de alto nivel tambin tiene que traducirse a un cdigo que pueda utilizar la mquina. Los programas traductores que pueden realizar esta operacin se llaman compiladores. stos, como los programas ensambladores avanzados, pueden generar muchas lneas de cdigo de mquina por cada proposicin del programa fuente. Se requiere una corrida de compilacin antes de procesar los datos de un problema. Los compiladores son aquellos cuya funcin es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje mquina con cdigo binario). Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el cdigo. Lenguajes interpretados Se puede tambin utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el cdigo objeto que se produce durante la corrida de compilacin para utilizarlo en una corrida de produccin futura, el programador slo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuacin, un programa intrprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente. La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo

de ejecucin) pero ms rpido en tiempo de diseo (porque no se tiene que estar compilando a cada momento el cdigo completo). El intrprete elimina la necesidad de realizar una corrida de compilacin despus de cada modificacin del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de produccin. ALGUNOS LENGUAJES DE PROGRAMACIN:

ABAP ABC Ada ActionScript Afnix ALGOL APL ASP ASP.NET AWK B BASIC BCPL Befunge Boo C C++ C# Caml Clipper CLIPS CLU COBOL CORAL D Delphi DIV Dylan Eiffel Erlang Ensamblador Extended ML Euphoria Fnix Flow-Matic Forth

FORTRAN Gambas GML GRAFCET FP Haskell Icon Inform INTERCAL ISWIM J Java JavaScript Joy KWC LADDER Lexico Lingo Lisp Logo Lua MAGIC Mainsail Mesa Miranda ML Modula Modula-2 Modula-3 Natural NetREXX Oberon Object REXX Objective-C Ocaml Occam Oz Pascal

Parlog Perl PHP PL/1 Plankalkl PostScript PowerBuilder Prolog Python Rapid REXX RPN RPG Ruby Sail Sather Scheme Scriptol Seed7 Self Sh Simula Smalltalk Snobol SPARK Squeak SR Standard ML TI-Basic TCL VBA Visual Basic Visual C++ Visual DialogScript Visual Foxpro Yurix ZPL

Lenguaje de mquina
Es el sistema de cdigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autmata . Este lenguaje est compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la mquina. Un programa consiste en una cadena de estas instrucciones de lenguaje de mquina (ms los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de cada mquina o arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos nicos niveles de tensin. Dichos niveles, por abstraccin, se simbolizan con el cero (0), y el uno (1), por eso el lenguaje de mquina slo utiliza dichos signos. Esto permite el empleo de las teoras del lgebra booleana y del sistema binario en el diseo de este tipo de circuitos y en su programacin. Claude Elwood Shannon, en su Analysis of Relay and Switching Circuits, y con sus experiencias en redes de conmutacin, sent las bases para la aplicacin del lgebra de Boole a las redes de conmutacin. Una red de conmutacin es un circuito de interruptores elctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el ncleo de las puertas lgicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lgicos cada vez ms complejos. Shannon utilizaba el rel como dispositivo fsico de conmutacin en sus redes. El rel, a igual que una lmpara elctrica, posee dos estados: 1 o 0, esto es, activado (encendido), o desactivado (apagado). El desarrollo tecnolgico ha permitido evolucionar desde las redes de rels electromagnticos de Shannon a circuitos con tubos de vaco, luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados cuyas cspide lo forman los circuitos microprogramados.

Lenguaje de alto nivel


Un lenguaje de programacin de alto nivel se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las mquinas.

En los primeros lenguajes de alto nivel la limitacin era que se orientaban a un rea especfica y sus instrucciones requeran de una sintaxis predefinida. Se clasifican como lenguajes procedimentales. Otra limitacin de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programacin para realizar las secuencias de instrucciones lgicas. Los lenguajes de alto nivel se crearon para que el usuario comn pudiese solucionar un problema de procesamiento de datos de una manera ms fcil y rpida. Por esta razn, a finales de los aos 1950 surgi un nuevo tipo de lenguajes de programacin que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman de tercera generacin o de alto nivel, en contraposicin a los de bajo nivel o de nivel prximo a la mquina.

Lenguaje de bajo nivel


Un lenguaje de programacin de bajo nivel es el que proporciona un conjunto de instrucciones aritmeticolgicas sin la capacidad de encapsular dichas instrucciones en funciones que no estn ya contempladas en la arquitectura del hardware. Dicho lenguaje es muy simple o nada complicado, pero estructurar programas a ese nivel es muy difcil. Dado que este lenguaje viene dado por las especificaciones tcnicas del hardware, no permite una abstraccin fuera de lo estipulado para el microprocesador de un ordenador. Consecuentemente, es fcilmente trasladado a lenguaje de mquina. Lenguajes de bajo nivel - Son instrucciones que ensamblan los grupos de conmutadores necesarios para expresar una mnima lgica aritmtica. Estn ntimamente vinculados al hardware. Por norma general estn disponibles a nivel firmware, cmos o chip set. Estos lenguajes estn orientados a procesos. Los procesos se componen de tareas. Contienen tantas instrucciones como la arquitectura del hardware as haya sido diseada.

Por ejemplo: La arquitectura CISC contiene muchas mas instrucciones a este nivel, que la RISC. Son denominados como ensambladores de un hardware concreto.

La compilacin en lenguajes de programacin y sus fases o etapas


La compilacin es el proceso de traduccin de programas fuente a programas objeto. El programa objeto obtenido de la compilacin ha sido traducido normalmente al cdigo comn del lenguaje de mquina. Para conseguir el programa mquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa en lenguaje mquina directamente ejecutable. Existen diversas fases de compilacin o tambin llamadas etapas de la compilacin que se ilustrarn en la siguiente imagen:

El proceso de ejecucin de un programa escrito en un lenguaje de programacin y mediante un compilador tiene los siguientes pasos: 1. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una mquina de escribir electrnica) y guardarlo en un dispositivo de almacenamiento (por ejemplo, un disco). 2. Introducir el programa fuente en memoria. 3. Compilar el programa con el compilador. 4. Verficar y corregir errores de compilacin (listado de errores). 5. Obtencin del programa objeto. 6. El enlazador (linker) obtiene el programa ejecutable.

7. Se ejecuta el programa y, si no existen errores, se tendr la salida del programa. Y, el proceso de ejecucin se ilustra en la siguiente imagen:

Resolucin de Problemas Mediante la Programacin


Aunque el proceso de disear programas es un proceso creativo, se pueden considerar tres pasos que ayudan al programador en este proceso: 1) Anlisis del problema 2) Diseo del algoritmo 3) Resolucin del algoritmo en la computadora Las fases de anlisis y diseo del algoritmo requieren la descripcin del problema en subproblemas y una herramienta de programacin: Diagrama de flujo, Pseudocdigo o Diagrama N-S (diagramas de Nassi-Schneider). En la tercera fase se implementa este algoritmo en un cdigo escrito en un lenguaje de programacin, reflejando las ideas obtenidas en las fases de anlisis y diseo.

Fases para la Resolucin de Problemas


1. Anlisis del Problema. En la fase de anlisis en el proceso de programacin se determina que hace el Programa. Esta fase requiere una clara definicin donde se contemple exactamente lo que debe hacer el Programa y el resultado o solucin deseada. Dado que se busca una solucin se precisan especificaciones De entrada y salida. Para poder definir bien un problema es conveniente responder a las siguientes Preguntas: Que entradas se requieren? (cantidad y tipo) Cual es la salida deseada? (cantidad y Tipo) Que mtodo produce la salida deseada? 2. Diseo del Algoritmo. En la fase de diseo se determina como hace el programa la tarea solicitada. Los Mtodos utilizados para el proceso del diseo se basan en el conocido divide y vencers: la resolucin de Un problema complejo se realiza dividiendo el problema en subproblemas y a continuacin dividir estos En otros de nivel ms bajo, hasta que sea implementada una solucin en la computadora. Este mtodo se Conoce tcnicamente como diseo descendente (top-Down) o modular. El programa principal (el modulo De nivel ms alto) llama a subprogramas (mdulos) de nivel ms bajo, que a su vez pueden llamar A otros subprogramas. Estos mdulos pueden ser

planeados, codificados, comprobados y depurados Independientemente y luego combinarlos entre s. Este proceso implica la ejecucin de estos pasos Hasta que el programa se ha terminado. El diseo del algoritmo es independiente del lenguaje de Programacin en el que se vaya a codificar posteriormente. 3. Implementacin del Algoritmo. Para implementar un algoritmo en la computadora, se debe ejecutar Los siguientes pasos: Codificacin y documentacin, Compilacin y ejecucin, Verificacin y finalmente La Depuracin. (a) Codificacin y documentacin. Es la escritura en un lenguaje de programacin de la representacin en de un algoritmo, en el caso de este curso se utilizan como lenguajes Octava o Mitla. La codificacin se conoce como programa fuente. La documentacin puede ser interna y externa. La documentacin interna es la contenida en lneas de comentarios. La documentacin externa Incluye anlisis, diagramas de flujo y/o pesado cdigos, manuales de usuarios con instrucciones Para ejecutar el programa y para interpretar los resultados. La documentacin es vital cuando se Desea corregir posibles errores futuros o bien cambiar el programa. Estos cambios se denominan Mantenimiento del programa. Adems es de buena costumbre para todo buen programador, dejar Comentado su cdigo, para que el futuro programador pueda darle mantenimiento fcilmente a el Programa, o incluso, si es el mismo creador quien debe darle mantenimiento. La importancia de La documentacin debe ser destacada por su influencia en la etapa final, ya que programas pobremente Documentados son difciles de leer, ms difciles de depurar y casi imposibles de mantener Y modificar. (b) Compilacin y ejecucin. Una vez que el algoritmo se ha convertido en un programa fuente, debe Ser traducido a lenguaje maquina. Este proceso se realiza con el compilador y el sistema operativo Que se encarga prcticamente de la compilacin. Si al compilar el programa fuente se presentan Errores (errores de compilacin), es necesario volver a editar el programa, corregir los errores y Compilar de nuevo. Esto se repite hasta que ya no se presenten ms errores, obtenindose el Programa objeto. Cuando no existen errores en el programa fuente se debe instruir al sistema Operativo para que efectu la fase de montaje o enlace, del programa fuente con las libreras del Programa del compilador. Este proceso de montaje produce un programa ejecutable. Cuando se Ha creado un programa ejecutable este se puede ya ejecutar desde el sistema operativo con solo Teclear su nombre. Suponiendo que no existen errores durante la ejecucin (errores en tiempo de Ejecucin), se obtendr la salida de resultados correctos del programa. (c) Verificacin y depuracin. Es el proceso de ejecucin del programa con una amplia variedad De datos de entrada, llamados datos de test o prueba como son: valores normales de entrada, Valores extremos de entrada que comprueben los lmites del programa y valores de entrada que Comprueben aspectos especiales del programa. Estos determinaran si el programa contiene errores o no.

Diseo de Algoritmos
Existen varias tcnicas de diseo de algoritmos que permiten desarrollar la solucin al problema planteado, algunas de ellas son:

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecutar de forma simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseudoaleatorios Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene nicamente un paso sucesor y otro ancesor. Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas se ejecutan simultneamente. Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo. Meta heursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones. Vuelta Atrs (Back tracking): se construye el espacio de soluciones del problema en un rbol que se examina completamente, almacenando las soluciones menos costosas.

Diagrama de flujo
Un Diagrama de Flujo representa la esquematizacin grfica de un algoritmo , el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema . Su correcta construccin es sumamente importante porque, a partir del mismo se escribe un programa en algn Lenguaje de Programacin. Si el Diagrama de Flujo est completo y correcto, el paso del mismo a un Lenguaje de Programacin es relativamente simple y directo. Es importante resaltar que el Diagrama de Flujo muestra el sistema como una red de procesos funcionales conectados entre s por " Tuberas " y "Depsitos" de datos que permite describir el movimiento de los datos a travs del Sistema. Este describir : Lugares de Origen y Destino de los datos , Transformaciones a las que son sometidos los datos, Lugares en los que se almacenan los datos dentro del sistema , Los canales por donde circulan los datos. Adems de esto podemos decir que este es una representacin reticular de un Sistema, el cual lo contempla en trminos de sus componentes indicando el enlace entre los mismos. Algunos Smbolos usados para crear diagramas de flujo:

Inicio o fin del programa

Pasos, procesos o lneas de instruccin de programa de cmputo

Operaciones de entrada y salida

Toma de decisiones y Ramificacin

Conector para unir el flujo a otra parte del diagrama

Cinta magntica

Disco magntico

Conector de pagina

Lneas de flujo

Anotacin

Display, para mostrar datos

Enva datos a la impresora

C++
Es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programacin multiparadigma. Actualmente existe un estndar, denominado ISO C++, al que se han adherido la mayora de los fabricantes de compiladores ms modernos. Existen tambin algunos intrpretes, tales como ROOT. Una particularidad del C++ es la posibilidad de redefinir los operadores (sobrecarga de operadores), y de poder crear nuevos tipos que se comporten como tipos fundamentales. El nombre C++ fue propuesto por Rick Mascitti en el ao 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que C++ es una extensin de C.

Das könnte Ihnen auch gefallen