25

Click here to load reader

Definicion de Algoritmo

Embed Size (px)

DESCRIPTION

computacion

Citation preview

Page 1: Definicion de Algoritmo

DEFINICION DE ALGORITMO

Define algoritmo como un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. Método y notación en las distintas fórmulas del cálculo. El algoritmo constituye un método para resolver un problema mediante una secuencia de pasos a seguir. Dicha secuencia puede ser expresada en forma de diagrama de flujo con el fin de seguirlo de una forma más sencilla. De acuerdo con el concepto anterior, el algoritmo podría estar incluido en la definición de programa de ordenador de la Ley de Propiedad Intelectual (TRLPI), al referirse a éste como toda secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema informático para realizar una función o una tarea o para obtener un resultado determinado, cualquiera que fuere su forma de expresión y fijación. 

Sin embargo, ciertas características de los algoritmos hacen que no puedan ser calificados como programas de ordenador. (Ver recuadro) La consecuencia de estas características es la exclusión del algoritmo del ámbito de protección del derecho de autor, en la medida en que éste constituye una idea, un método de cálculo o una función, afectado por el artículo 96.4 del TRLPI. 

Por otro lado, Preámbulo de la Directiva 91/250/CEE de 1991 sobre la protección jurídica de los programas de ordenador establece que: "en la medida en que la lógica, los algoritmos y los lenguajes de programación abarquen ideas y principios, estos últimos no estarán protegidos con arreglo a la presente Directiva." 

Además, en un Memorándum de 1994 de la OMPI (WIPO) Organización Mundial de la Propiedad Intelectual, se manifestaba: "Es perfectamente cierto que el derecho de autor no protege los algoritmos, sino únicamente las expresiones concretas de los mismos. Precisamente por eso, el derecho de autor puede ofrecer una protección apropiada a los programas de ordenador, sin crear obstáculos infranqueables a la creación independiente de nuevos programas". 

No obstante, existen excepciones a nivel jurisprudencial basadas en la doctrina del "look and feel", que establecen la existencia de plagio cuando se reproduce la estructura, secuencia y disposición de los datos integrados en un programa de ordenador. Estas excepciones podrían aplicarse en el caso de combinaciones de algoritmos o cuando el nivel de complejidad de un algoritmo fuese muy alto. 

Page 2: Definicion de Algoritmo

1.1. PARTES DE UN ALGORITMO

Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida.

Donde:

ENTRADA

Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados esperados.

PROCESO

Pasos necesarios para obtener la solución del problema o la situación planteada.

SALIDA

Resultados arrojados por el proceso como solución.

En el ejemplo del algoritmo de la sumatoria de los dos números, tenemos:

ENTRADA

Valores de las variables A y B.

PROCESO

Asignar a la variable Suma, el valor de A mas el valor de B.

SALIDA

Impresión del valor de la variable Suma, que contiene la sumatoria de los valores de A y B.

¿Cómo se Diseña un Algoritmo?

En programación, un algoritmo establece, de manera genérica e informal, la secuencia de pasos o acciones que resuelve un determinado problema y, para representarlo, se utiliza, fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo.

Así pues, en este artículo, voy a explicar, con un ejemplo, los pasos que "mentalmente" se pueden seguir para diseñar el algoritmo, en Pseudocódigo CEE (C En Español) y ordinograma, de un programa que dé solución a un problema de programación.

En concreto, vamos a ver, desmenuzadamente, cómo se puede diseñar el algoritmo para resolver el ejercicio 1, "Media aritmética de números introducidos",

Page 3: Definicion de Algoritmo

de la sección Repetitiva hacer...mientras del listado de ejercicios de programación resueltos en diferentes lenguajes.

De forma que, los pasos a seguir (siete en este caso) son los siguientes:

· Paso 1

Comprender qué es lo que se nos está pidiendo. En este caso, el enunciado del ejercicio es:

"Diseñe el algoritmo de un programa que:

1º) Pida por teclado un número (dato entero).2º) Muestre por pantalla los mensajes:

    * Ha introducido <cantidad_de_números> número(s)    * La suma es <suma>

3º) Pregunte al usuario si desea introducir otro o no.4º) Repita los pasos 1º, 2º y 3º, mientras que, el usuario no responda 'n' de (no).5º) Muestre por pantalla la media aritmética (dato real) de los números introducidos.

Nota: Utilice un bucle hacer...mientras."

En pantalla:

Introduzca un número entero: 3Ha introducido 1 número(s)La suma es 3

¿Desea introducir otro (s/n)?: sIntroduzca un número entero: 7Ha introducido 2 número(s)La suma es 10

¿Desea introducir otro (s/n)?: sIntroduzca un número entero: 6Ha introducido 3 número(s)La suma es 16

¿Desea introducir otro (s/n)?: sIntroduzca un número entero: 13Ha introducido 4 número(s)La suma es 29

¿Desea introducir otro (s/n)?: nLa media aritmética es 7.25

Page 4: Definicion de Algoritmo

Introduzca un número entero: 8Ha introducido 1 número(s)La suma es 8

¿Desea introducir otro (s/n)?: nLa media aritmética es 8.000000

Simplemente, al leer el enunciado del problema, ya podemos hacernos una idea de algunas características importantes del algoritmo que vamos a diseñar:

* Existen 5 instrucciones de salida para mostrar por pantalla:

Introduzca un número entero:Ha introducido X número(s)La suma es Y¿Desea introducir otro (s/n)?:La media aritmética es Z

* Existen 2 instrucciones. Una para recoger un dato numérico entero después de mostrar por pantalla:

Introduzca un número entero:

y, otra, para recoger un dato de tipo carácter después de mostrar por pantalla:

¿Desea introducir otro (s/n)?:

* En algún momento, se deberá calcular:

la cantidad de números introducidos,la suma de los mismos yla media aritmética de dichos números,

por tanto, seguramente, emplearemos 2 ó 3 instrucciones de asignación.

* Tendremos que utilizar varias variables para:

recoger el o los números que introduzca el usuario por teclado (numero),contar los números introducidos (contador),almacenar la suma de dichos números (acumulador),preguntar al usuario si desea introducir otro número o no (seguir),¿calcular la media aritmética (media aritmética)?

* Necesitaremos un bucle para que el usuario pueda introducir los números que desee (solamente uno o más), de hecho, ya se nos especifica, en la "Nota" del enunciado, que debemos hacer uso de un bucle hacer...mientras.

Page 5: Definicion de Algoritmo

En los pasos siguientes, vamos a ver cómo combinar los elementos detectados e integrarlos en la estructura de un algoritmo. No obstante, lo vamos a hacer, poco a poco, a medida que vayamos construyendo dicho algoritmo.

· Paso 2

Escribir la estructura básica del algoritmo en pseudocódigo:

Algoritmo Media_aritmetica_de_numeros_introducidos

inicio

...

fin

Obsérvese que, ya podemos nombrar al algoritmo mediante un identificador, en este caso, podemos escribir:

Media_aritmetica_de_numeros_introducidos

En ordinograma, comenzaremos escribiendo el inicio y fin del cuerpo:

· Paso 3

Según se nos indica en el primer punto del ejercicio, el algoritmo debe:

1º) Pedir por teclado un número (dato entero).

Mostrándose por pantalla:

Introduzca un número entero: <número>

Por consiguiente, en el algoritmo hay que escribir una instrucción de salida y otra de entrada. En pseudocódigo:

Algoritmo Media_aritmetica_de_numeros_introducidos

inicio

   escribir (“Introduzca un número entero: " )

Page 6: Definicion de Algoritmo

   leer (numero)   ...

fin

Se tiene que declarar la variable numero, así escribimos:

Algoritmo Media_aritmetica_de_numeros_introducidos

variables   entero numero

inicio

   escribir (“Introduzca un número entero: " )   leer (numero)   ...

fin

En ordinograma:

Recordemos que, en los ordinogramas no se representa la declaración de variables.

· Paso 4

A continuación, en el segundo punto del ejercicio se nos indica que:

2º) El programa debe mostrar por pantalla los mensajes:

* Ha introducido <cantidad_de_números> número(s)* La suma es <suma>

Page 7: Definicion de Algoritmo

De modo que, incorporamos dos nuevas instrucciones de salida al algoritmo, en las que vamos a mostrar el valor de una variable contador para mostrar la cantidad de números introducidos por el usuario y, por otra parte, el valor de una variable acumulador, para mostrar la suma de dichos números. En pseudocódigo:

algoritmo Media_aritmetica_de_numeros_introducidos

variables   entero numero

inicio

   escribir( "Introduzca un número entero: " )   leer( numero )   ...

   escribir( "Ha introducido ", contador, " número(s)" )   escribir( "La suma es ", acumulador )   ...

fin

Y declaramos las nuevas variables: contador y acumulador.

algoritmo Media_aritmetica_de_numeros_introducidos

variables   entero acumulador, contador, numero

inicio

   escribir( "Introduzca un número entero: " )   leer( numero )   ...

   escribir( "Ha introducido ", contador, " número(s)" )   escribir( "La suma es ", acumulador )   ...

fin

En ordinograma:

Page 8: Definicion de Algoritmo

Pero, ¿qué valores tienen los variables contador y acumulador? Inicialmente, almacenarán un cero (0) cada una de ellas y, después de leer un número, habrá que incrementar el valor de contador en uno (1) y sumar el valor de dicho número a acumulador.

algoritmo Media_aritmetica_de_numeros_introducidos

variables   entero acumulador, contador, numero

inicio   acumulador ← 0   contador ← 0

   escribir( "Introduzca un número entero: " )   leer( numero )

   acumulador ← acumulador + numero   contador ← contador + 1

   escribir( "Ha introducido ", contador, " número(s)" )   escribir( "La suma es ", acumulador )   ...

fin

En ordinograma:

Page 9: Definicion de Algoritmo

· Paso 5

Atendiendo al tercer punto del ejercicio:

3º) Preguntar al usuario si desea introducir otro número o no.

Al algoritmo le añadimos una nueva instrucción de salida, otra de entrada y declaramos una nueva variable (seguir).

En pseudocódigo:

algoritmo Media_aritmetica_de_numeros_introducidos

variables   carácter seguir     entero acumulador, contador, numero

inicio   acumulador ← 0   contador ← 0

   escribir( "Introduzca un número entero: " )   leer( numero )

   acumulador ← acumulador + numero   contador ← contador + 1

   escribir( "Ha introducido ", contador, " número(s)" )

Page 10: Definicion de Algoritmo

   escribir( "La suma es ", acumulador )

   escribir( "¿Desea introducir otro número (s/n)?: " )   leer( seguir )   ...

fin

En ordinograma:

· Paso 6

Teniendo en cuenta el cuarto punto del ejercicio:

4º) Repetir los pasos 1º, 2º y 3º, mientras que, el usuario no responda 'n' de (no).

Page 11: Definicion de Algoritmo

Es necesario hacer uso de una instrucción de control repetitiva que, como se especifica en la "Nota" del ejercicio, será un bucle hacer...mientras. En cualquier caso, también podríamos habernos hecho las preguntas del apartado ¿Cuándo usar un bucle u otro? Del Curso de Diseño de Algoritmos:

* ¿Se conoce, de antemano, el número de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones? No, por tanto, descartamos el bucle "para".* ¿El bloque de instrucciones debe ejecutarse al menos una vez? Sí, de forma que, optamos por hacer uso de un bucle "hacer...mientras".

En pseudocódigo:

algoritmo Media_aritmetica_de_numeros_introducidos

variables   carácter seguir     entero acumulador, contador, numero

inicio   acumulador ← 0   contador ← 0

   hacer     escribir( "Introduzca un número entero: " )     leer( numero )

     acumulador ← acumulador + numero     contador ← contador + 1

     escribir( "Ha introducido ", contador, " número(s)" )     escribir( "La suma es ", acumulador )

     escribir( "¿Desea introducir otro número (s/n)?: " )     leer( seguir )   mientras ( seguir <> 'n' )   ...

fin

Fíjese que, la inicialización de los variables contador y acumulador no están dentro del bloque de instrucciones del bucle, ya que, ello provocaría un error de lógica.

En ordinograma:

Page 12: Definicion de Algoritmo

· Paso 7

Y, finalmente, para el quinto punto:

5º) Mostrar por pantalla la media aritmética (dato real) de los números introducidos.

Añadimos una última instrucción. En pseudocódigo:

algoritmo Media_aritmetica_de_numeros_introducidos

variables   carácter seguir     entero acumulador, contador, numero

Page 13: Definicion de Algoritmo

inicio   acumulador ← 0   contador ← 0

   hacer     escribir( "Introduzca un número entero: " )     leer( numero )

     acumulador ← acumulador + numero     contador ← contador + 1

     escribir( "Ha introducido ", contador, " número(s)" )     escribir( "La suma es ", acumulador )

     escribir( "¿Desea introducir otro número (s/n)?: " )     leer( seguir )   mientras ( seguir <> 'n' )

   escribir( "La media aritmética es ", acumulador / contador )fin

Nótese que, para mostrar la media aritmética no hemos utilizado una nueva variable y, de esta forma, también nos ahorramos escribir una nueva instrucción de asignación:

media aritmética ← acumulador / contador

En ordinograma, la solución final será:

Page 14: Definicion de Algoritmo

Puede consultar la codificación de este algoritmo en lenguaje C y en Pascal. No obstante, téngase en cuenta que en Pascal se hace uso del bucle "repetir...hasta" en vez de "repetir...mientras".

Si le ha gustado este artículo y desea incluirlo en su sitio web, puede hacerlo sin ningún problema, siempre y cuando cite como fuente del mismo a www.carlospes.com

Desarrollo del algoritmo

Introducimos una técnica que acelera el proceso para encontrar los   vecinos más cercanos de todos los elementos de una base de datos, la idea es indexar

Page 15: Definicion de Algoritmo

este conjunto de puntos con un algoritmo de pivotes como el FQTrie conservando las ventajas del FQA y mejorando algunas de ellas, además la complejidad de este algoritmo es lineal en su construcción, posteriormente usar está para

encontrar los   vecinos más cercanos de cada punto. 

La idea principal del algoritmo es, realizar una consulta de rango con un

radio  , para cada elemento, es decir, se

hacen   consultas de rango con radio r, es importante enfatizar que para cada punto se utilizan los mismos pivotes usados para generar el índice. 

La estructura auxiliar (cola de prioridad) usada para el desarrollo del algoritmo

consiste en mantener para cada punto al menos los   elementos más cercanos durante el proceso, manteniendo un radio máximo, el cual corresponde al elemento más alejado y es precisamente el que esta en el tope de la cola de prioridad. Como primer paso la cola de prioridad es inicializada usando los pivotes (puesto que estos puntos conocen todas las distancias a los demás puntos, véase

la figura  ) y cada una de las colas de prioridad para los puntos que no son

pivotes son rellenadas con los   pivotes más cercanos véase esto en la

figura  , con esto se asegura que los   vecinos más cercanos estén dentro del radio inicial, el cual está acotado por los pivotes,

Diseño del Algoritmo:En la etapa de análisis del proceso de programación se determina que hace el programa. En la etapa de diseño se determina como hace el programa la tarea solicitada. Los métodos mas eficaces para el proceso de diseño se basan en el conocido por Divide y Vencerás, es decir, la resolución de un problema complejo se realiza dividiendo el problema en sub problemas y a continuación dividir estos sub problemas en otros de nivel mas bajo, hasta que pueda ser implementada una solución en la computadora. Este método se conoce técnicamente como diseño descendente (Top Down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma más detallada se denomina refinamiento sucesivo.Cada sub programa es resuelto mediante un modulo (sub programa) que tiene un solo punto de entrada y un solo punto de salida.Cualquier programa bien diseñado consta de un programa principal (el modulo de nivel mas alto) que llama a sub programas (módulos de nivel mas bajo) que a su vez pueden llamar a otros sub programas. Los programas estructurados de esta forma se dice que tienen un diseño modular y el método de romper el programa en módulos más pequeño se llama Programación Modular. Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso por diferentes programadores) y a continuación combinarlos entre si. El proceso implica la ejecución de los siguientes pasos hasta que el programa se termina:

Page 16: Definicion de Algoritmo

programar modulo. Comprobar el modulo. Si es necesario, depurar el modulo. Combinar el modulo con los módulos anteriores.

El proceso que convierte los resultados del análisis del problema en un diseño modular con refinamiento sucesivo que permitan una posterior traducción al lenguaje se denomina diseño de algoritmo.El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.

Programa Instrumento rector derivado de la planificación institucional, destinado al cumplimiento de las funciones de una organización, por el cual se establece el orden de actuación, así como los objetivos o metas, cuantificables o no (en términos de un resultado final), que se cumplirán a través de la integración de un conjunto de esfuerzos y para lo cual se requiere combinar recursos humanos, tecnológicos, materiales y financieros; especifica tiempos y espacio en los que se va a desarrollar y atribuye responsabilidad a una o varias unidades ejecutoras debidamente coordinadas.

Un programa es un conjunto de instrucciones u ordenes basadas en un lenguaje de programación que una computadora interpreta para resolver un problema o una función especifica.

1.- Es la relación ordenada de actividades, en informática se le conoce como la serie codificada de instrucciones.

3. Redacción de un algoritmo en un lenguaje de programación.

4. Conjunto de instrucciones ordenadas correctamente que permiten realizar una tarea o trabajo específico.

5. Toda secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema informático para realizar una función o una terea o para obtener un resultado determinado, cualquiera que fuere su forma de expresión y fijación.

6. Conjunto secuenciado de instrucciones que quedan escritas en un lenguaje determinado con unos fines específicos. Aunque en el lenguaje común con frecuencia se denomina programa al sistema operativo, la diferencia estriba, precisamente, en la especificidad de aquél frente al carácter de gestión global de éste. La palabra software engloba ambos.

Page 17: Definicion de Algoritmo

Definición de computadora:

Máquina electrónica rápida y exacta que es capaz de aceptar datos a través de un medio de entrada, procesarlos automáticamente bajo el control de un programa previamente almacenado, y proporcionar la información resultante a un medio de salida.

Un sistema informático está compuesto a su vez por dos subsistemas: Hardware y Software.

Describiremos un sistema computacional enumerando los siguientes elementos:

1. Computadora y todos sus periféricos (hardware)

2. Instrucciones legibles (software)

3. Datos a procesar

4. Manuales de operación

5. Procedimientos y personas que utilizan el sistema

¿Qué es un lenguaje máquina?

El lenguaje máquina es el único que entiende la computadora digital, es su "lenguaje natural". En él sólo se pueden utilizar dos símbolos: el cero (0) y el uno (1). Por ello, al lenguaje máquina también se le denomina lenguaje binario. La computadora sólo puede trabajar con bits, sin embargo, para el programador no resulta fácil escribir instrucciones tales como:

10100010111100110010001000010010

Una dificultad añadida a los lenguajes binarios es el hecho de que son dependientes de la máquina (o mejor dicho, del procesador), es decir, cada procesador utiliza un lenguaje máquina distinto (un juego de instrucciones distinto) que está definido en su propio hardware. En consecuencia, un programa escrito para un tipo de procesador no se podrá usar en otro equipo que utilice un procesador distinto, ya que, el programa no será portable o transportable. Para que dicho programa pueda funcionar en una segunda computadora, habrá que traducir todas las instrucciones escritas en el lenguaje máquina del primer equipo al lenguaje binario de la segunda computadora.

Page 18: Definicion de Algoritmo

(High-level lenguaje). Tipo de lenguajes de programación que permite al programador escribir programas (algoritmos) que son más o menos independientes de un tipo particular de computadora (del hardware). Estos lenguajes son considerados de alto nivel porque son más parecidos al lenguaje natural humano y más lejanos al lenguaje de las máquinas.

En contraste, los lenguajes ensamblador son considerados lenguajes de bajo nivel porque están muy cerca al lenguaje que manejan las máquinas.

La principal ventaja de los lenguajes de alto nivel sobre los de bajo nivel, es que son más fáciles de leer, escribir y mantener por humanos. Al final, los programas escritos en alto nivel deben ser traducidos en un lenguaje máquina específico empleando un compilador o un intérprete. De esta manera pueden ser ejecutados por una máquina específica.

Los primeros lenguajes de programación de alto nivel fueron diseñados en los 50. Actualmente existen cientos de lenguajes de este tipo como Ada, Algol, BASIC, COBOL, C, C++, FORTRAN, LISP, Pascal,Prolog, etc.¿Qué es un lenguaje de bajo nivel?

Los lenguajes de bajo nivel, también llamados lenguajes ensambladores, permiten al programador escribir instrucciones de un programa usando abreviaturas del inglés, también llamadas palabras nemotécnicas, tales como: ADD, DIV, SUB, etc. Un programa escrito en un lenguaje ensamblador tiene el inconveniente de que no es comprensible para la computadora, ya que, no está compuesto por ceros y unos. Para traducir las instrucciones de un programa escrito en un lenguaje ensamblador a instrucciones de un lenguaje máquina hay que utilizar un programa llamado ensamblador, como se muestra en la siguiente figura:

Figura - Funcionamiento de un ensamblador.

LENGUAJES DE BAJO NIVEL

       Se llaman de bajo nivel porque están muy cercanos al hardware del ordenador. Es necesario conocer a fondo la arquitectura de la maquina para la que se va a programar.El primer lenguaje de este tipo que se utilizó fue el lenguaje máquina, que consiste en un conjunto de instrucciones en binario, es decir, con ceros y unos, con los cuales se indica al ordenador qué hacer. Este lenguaje es muy complicado y la

Page 19: Definicion de Algoritmo

posibilidad de cometer errores es muy alta, por lo que ya no se utiliza.Para solventar estas dificultades apareció el lenguaje ensamblador, que consiste en asignar una abreviatura a cada instrucción en binario, de forma que sea más fácil recordarla y más difícil equivocarse. Sin embargo, con este lenguaje sigue siendo necesario conocer muy bien el hardware del ordenador.

LENGUAJES DE ALTO NIVEL

       Los lenguajes de alto nivel suelen utilizar términos ingleses del tipo LIST, PRINT u OPEN como comandos que representan una secuencia de decenas o de centenas de instrucciones en lenguaje máquina. 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.Los programas traductores son de dos tipos: intérpretes y compiladores. Con un intérprete, los programas que repiten un ciclo para volver a ejecutar parte de sus instrucciones, reinterpretan la misma instrucción cada vez que aparece. Por consiguiente, los programas interpretados se ejecutan con mucha mayor lentitud que los programas en lenguaje máquina. Por el contrario, los compiladores traducen 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.Se considera que fue la estadounidense Grace Hopper quien implementó el primer lenguaje de ordenador orientado al uso comercial. Después de programar un ordenador experimental en la Universidad de Harvard, trabajó en los modelos UNIVAC I y UNIVAC II, desarrollando un lenguaje de alto nivel para uso comercial llamado FLOW-MATIC. Para facilitar el uso del ordenador en las aplicaciones científicas, IBM desarrolló un lenguaje que simplificaría el trabajo que implicaba el tratamiento de fórmulas matemáticas complejas. Iniciado en 1954 y terminado en 1957, el FORTRAN (acrónimo de Formula Translator) fue el primer lenguaje exhaustivo de alto nivel de uso generalizado.En 1957 una asociación estadounidense, la Association for Computing Machinery comenzó a desarrollar un lenguaje universal que corrigiera algunos de los defectos del FORTRAN. Un año más tarde fue lanzado el ALGOL (acrónimo de Algorithmic Language), otro lenguaje de orientación científica. De gran difusión en Europa durante las décadas de 1960 y 1970, desde entonces ha sido sustituido por nuevos lenguajes, mientras que el FORTRAN continúa siendo utilizado debido a las gigantescas inversiones que se hicieron en los programas existentes. El COBOL (acrónimo de Common Business Oriented Language) es un lenguaje de programación para uso comercial y empresarial especializado en la organización de datos y manipulación de archivos, y hoy día está muy difundido en el mundo empresarial.El lenguaje BASIC (acrónimo de Código de Instrucciones Simbólicas de Uso General para Principiantes) fue desarrollado en el Dartmouth College a principios de la década de 1960 y está dirigido a los usuarios de ordenador no profesionales. Este lenguaje se universalizó gracias a la popularización de los micrordenadores en las décadas de 1970 y 1980. Calificado de lento, ineficaz y poco estético por sus detractores, BASIC es sencillo de aprender y fácil de utilizar. Como muchos de

Page 20: Definicion de Algoritmo

los primeros microordenadores se vendieron con BASIC incorporado en el hardware (en la memoria ROM), se generalizó el uso de este lenguaje.Aunque existen centenares de lenguajes informáticos y de variantes, hay algunos dignos de mención, como el PASCAL, diseñado en un principio como herramienta de enseñanza, hoy es uno de los lenguajes de microordenador más populares; el Logo fue desarrollado para que los niños pudieran acceder al mundo de la informática; el C, un lenguaje de Bell Laboratories diseñado en la década de 1970, se utiliza ampliamente en el desarrollo de programas de sistemas, al igual que su sucesor, el C++. El LISP y el PROLOG han alcanzado amplia difusión en el campo de la inteligencia artificial.