Está en la página 1de 21

Tecsup

Virtu@l
Algoritmos y
Herramientas
de
Programacin

Copyright 2007 por TECSUP

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

NDICE
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.

15.
16.
17.
18.
19.
20.

Introduccin ....................................................................................... 3
Objetivos ............................................................................................. 3
Historia de la programacin ............................................................ 3
Qu es programacin?..................................................................... 3
Qu es un Algoritmos?.................................................................... 3
Fundamentos de la programacin .................................................. 4
El valor del lenguaje .......................................................................... 7
Errores de los programas.................................................................. 7
Pasos para crear un programa ......................................................... 7
Caractersticas de los programas ..................................................... 7
Importancia relativa .......................................................................... 8
Representacin de la informacin ................................................... 8
Datos.................................................................................................... 8
Clasificacin de los lenguajes de programacin............................ 8
14.1. Lenguajes imperativos ......................................................... 8
14.2. Lenguajes declarativos....................................................... 15
Lenguajes de programacin ........................................................... 17
Interpretes y compiladores............................................................. 19
Compiladores ................................................................................... 20
Estructurado VS Objetos................................................................. 20
Glosario ............................................................................................. 21
Referencias Bibliogrficas............................................................... 21

Pgina 2

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

1. Introduccin
Esta unidad nos permite conocer los elementos fundamentales de
los lenguajes de programacin, la importancia de los algoritmos,
nos da un alcance de los diferentes lenguajes de programacin.
Tambin revisamos la diferencia entre los intrpretes y
compiladores.

2. Objetivos

Definir el concepto de programacin.


Definir los conceptos de programa y algoritmo.
Enumerar y diferenciar los lenguajes de programacin.
Definir la diferencia entre intrpretes y compiladores.

3. Historia de la programacin
Al desarrollarse las primeras computadoras electrnicas, se vio la
necesidad de programarlas, es decir, de almacenar en memoria la
informacin sobre la tarea que iban a ejecutar. Las primeras se
usaban como calculadoras simples; se les indicaban los pasos de
clculo, uno por uno.
John Von Neumann desarroll el modelo que lleva su nombre,
para describir este concepto de "programa almacenado". En este
modelo, se tiene una abstraccin de la memoria como un conjunto
de celdas, que almacenan simplemente nmeros. Estos nmeros
pueden representar dos cosas: los datos, sobre los que va a
trabajar el programa; o bien, el programa en s.
Un programa es el arte
de:
- Seleccionar la parte que
nos interesa de la realidad.
- Sintetizarla en unos
pocos datos.
- Reproducir su
comportamiento.
Y analizar las
consecuencias.

4. Qu es programacin?

Programacin es: hacer, construir, programas.


Un programa es el arte y la tcnica de :
Seleccionar la parte que nos interesa de la realidad.
Sintetizarla en unos pocos datos.
Reproducir su comportamiento.
Y analizar las consecuencias.
O sea, que es un soporte fundamental a la ingeniera.

5. Qu es un Algoritmos?

Forma de escribir la solucin de un problema.

Pgina 3

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

Serie ordenada y finita de instrucciones elementales que


trabaja sobre los datos modificndolos.
A partir de los valores iniciales.
Calcula los valores finales.
Muchas veces hay que ir llevando a los datos a travs de
mltiples transformaciones.
Estados: inicial -> intermedios -> final. .

Actividad:
Qu es un programa?
Qu es un algoritmo?
6. Fundamentos de la programacin
Cmo es que describimos un programa como nmeros? Se tena
el problema de representar las acciones que iba a realizar la
computadora, y que la memoria, al estar compuesta por switches
correspondientes al concepto de bit, solamente nos permita
almacenar nmeros binarios.
La solucin que se tom fue la siguiente: a cada accin que sea
capaz de realizar nuestra computadora, asociarle un nmero, que
ser su cdigo de operacin (opcode). Por ejemplo, una
calculadora programable simple podra asignar los opcodes:
1 = SUMA
2 = RESTA
3 = MULTIPLICA
4 = DIVIDE
Podemos ver que con esta representacin, es simple expresar las
operaciones de las que es capaz el hardware (en este caso, nuestra
calculadora imaginaria), en la memoria.
La descripcin y uso de los opcodes es lo que llamamos lenguaje
de mquina. Es decir, la lista de cdigos que la mquina va a
interpretar como instrucciones, describe las capacidades de
programacin que tenemos de ella; es el lenguaje ms primitivo,
depende directamente del hardware, y requiere del programador
que conozca el funcionamiento de la mquina al ms bajo nivel.
Un Lenguaje de Programacin es aqul que es utilizado para
escribir programas de computadoras que puedan ser entendidos
por ellas.
Estos lenguajes se clasifican en tres grandes categoras:
Lenguaje Mquina

Pgina 4

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

Lenguaje de Bajo nivel (ensamblador)


Lenguaje de Alto nivel

Los lenguajes ms primitivos fueron los lenguajes de mquina.


Esto, ya que el hardware se desarroll antes del software, y
adems cualquier software finalmente tiene que expresarse en el
lenguaje que maneja el hardware.
La programacin en esos momentos era sumamente tediosa, pues
el programador tena que "bajarse" al nivel de la mquina (unos y
ceros) y decirle, paso a paso, cada punto de la tarea que tena que
realizar. Adems, deba expresarlo en forma numrica; y por
supuesto, este proceso era propenso a errores, con lo que la
productividad del programador era muy limitada.
El primer gran avance que se dio, como ya se coment, fue la
abstraccin dada por el Lenguaje Ensamblador, y con l, el
nacimiento de las primeras herramientas automticas para
generar el cdigo mquina. Esto redujo los errores triviales, como
poda ser el nmero que corresponda a una operacin, que son
sumamente engorrosos y difciles de detectar, pero fciles de
cometer. Sin embargo, an aqu es fcil para el programador
perderse y cometer errores de lgica, pues debe bajar al nivel de
la forma en que trabaja el CPU, y entender bien todo lo que
sucede dentro de l.
Con el desarrollo en los 50s y 60s de algoritmos de ms elevado
nivel, y el aumento de poder del hardware, empezaron a entrar al
uso de computadoras cientficos de otras ramas; ellos conocan
mucho de Fsica, Qumica y otras ramas similares, pero no de
Computacin, y por supuesto, les era sumamente complicado
trabajar con lenguaje Ensamblador en vez de frmulas.
As, naci el concepto de Lenguaje de Alto Nivel, con el primer
compilador de FORTRAN (FORmula TRANslation), que, como su
nombre indica, inici como un "simple" esfuerzo de traducir un
lenguaje de frmulas, al lenguaje ensamblador y por consiguiente
al lenguaje de mquina. A partir de FORTRAN, se han
desarrollado innumerables lenguajes, que siguen el mismo
concepto: buscar la mayor abstraccin posible, y facilitar la vida al
programador, aumentando la productividad, encargndose los
compiladores o intrpretes de traducir el lenguaje de alto nivel, al
lenguaje de computadora.
Hay que notar la existencia de lenguajes que combinan
caractersticas de los de alto nivel y los de bajo nivel (es decir,
Ensamblador).

Pgina 5

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

Un ejemplo es C: contiene estructuras de programacin de alto


nivel, y la facilidad de usar libreras que tambin son
caractersticas de alto nivel; sin embargo, fue diseado con muy
pocas instrucciones, las cuales son sumamente sencillas, fciles de
traducir al lenguaje de la mquina; y requiere de un
entendimiento apropiado de cmo funciona la mquina, el uso de
la memoria, etctera.
Por ello, muchas personas consideramos a lenguajes como C (que
fue diseado para hacer sistemas operativos), lenguajes de nivel
medio.

El lenguaje natural es complicado y ambiguo


La seora hizo un lenguaje.

Necesitamos un lenguaje
Simple.
Conciso.
Preciso.
Abstracto.
Capaz.

...que permita describir datos y algoritmos

Pgina 6

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

7. El valor del lenguaje


Como todos los lenguajes ideados por los humanos, un lenguaje
de programacin sirve para expresar conceptos.
Un lenguaje es tanto mejor cuanto ms fcil sea escribir
programas con el, lo que quiere decir que los programas sea
menos susceptibles de contener errores y ms econmico sean de
mantener en el futuro.
8. Errores de los programas
Sintcticos
Los detecta el compilador.
Mal uso de los elementos lexicogrficos.
Ejemplo: Falta un parntesis, sobre una coma, etc.
Semnticos

Lo que se dice no tiene sentido.


Estticos: los detecta el compilador.
Ejemplo: Sumar longitud con volumen.
Dinmicos: se detectan al ejecutar.
Ejemplo: Sumar en vez de multiplicar.

9. Pasos para crear un programa

Disear la solucin
Editar un programa
Compilar el programa
Ejecutar el programa
Probar el programa
Mantener el programa

10. Caractersticas de los programas

Correctos
Quin quiere un programa incorrecto?
Existe la perfeccin?
Ingeniera es el arte de lo posible.
Eficientes
Uso eficaz de recursos (memoria, disco ...)
Ingeniera es el arte de lo rentable.
Fcilmente modificables
Los clientes cambian.
Los problemas evolucionan.
La comprensin del problema y la solucin mejoran.
Ingeniera es el arte de lo adaptable.

Pgina 7

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

11. Importancia relativa

Teniendo en cuenta que


Nada es perfecto.
Los computadores son cada da ms rpidos.
Todo cambia.
legible > correcto > eficiente
Qu se hace con los programas incorrectos?
Se educa al cliente.
Se cambia la especificacin.
Se modifica el programa!
12. Representacin de la informacin

Aproximacin a la realidad
Nmeros enteros
Se representan en binario.
4, 8, 16, 23, 64 bits => rango limitado!
Reales -> conjunto finito
<mantisa, exponente> con nmero finito de cifras.
Hay un mnimo, un mximo y un granulado.
Caracteres
a-z, A-Z, 0-9, ?<=>,;... : nmero limitado.

13. Datos

Estructuras algebraicas
Conjunto de valores.
Propiedades y operaciones.
Las hay sencillas y compuestas.
Las estructuras de datos reflejan las estructuras de la realidad
Los datos concretos cuantifican la realidad

14. Clasificacin de los lenguajes de programacin


14.1.

Lenguajes imperativos
Estos lenguajes se basan en comandos u rdenes que se les
da al computador para que hagan algo, con el fin de
organizar o cambiar valores en ciertas partes de la
memoria.
La ejecucin de estos comandos se realiza, en la mayor
parte de ellos, secuencialmente; es decir, hasta que un
comando no ha sido ejecutado no se lee el siguiente.

Pgina 8

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

Segn el domino, o mejor dicho con el propsito que se


utiliza el programa podramos hablar de lenguajes de
dominio especfico y de dominio general.
14.1.1. Especficos
Las computadoras se fabrican hoy en da con un
gran propsito general, por lo que existen
problemas para desarrollar programas para las
mismas. Para cubrir este problema se crean los
lenguajes especficos, donde el programador se
encuentra en un nivel de abstraccin an mayor,
puesto que se focaliza mucho ms en el problema
y muy lejos de lo que sera el hardware del
computador. Este hecho tiene por el contrario la
necesidad de unos compiladores o intrpretes
mucho ms potentes para realizar el mapeo del
programa.
Estos lenguajes ofrecen la posibilidad de
desarrollar software, usando una notacin ms
cercana a la utilizada por expertos en el dominio
del problema que se quiere resolver. Este tipo de
lenguajes tambin facilita la reutilizacin de
software, as como facilitar la verificacin del
software que se produzca, adems pueden
permitir a personas que no son programadores la
produccin de software. Algunos lenguajes
especficos son:

Macromedia director: para la realizacin de


presentaciones.
Html: generacin de hipertextos para WWW.
Mathematica: procesamiento simblico

14.1.2. Generales
Podramos decir que estos lenguajes son los que
no son especficos, englobando a un gran nmero
de lenguajes que pueden ser utilizados con
diferentes fines. Se pueden dividir en alto y bajo
nivel, segn la complejidad de su cdigo y del
nivel de abstraccin.
Lenguajes de Bajo Nivel
Son los lenguajes ms bsicos donde no existe casi
nivel de abstraccin, en los que cada instruccin
de mquina corresponde con una instruccin que

Pgina 9

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

aporta el usuario, bien sea en cdigo binario


(lenguaje mquina) o bien en cdigos simblicos
(ensambladores).
Lenguaje mquina
stos son de alta dificultad para el usuario, ya que
los programas deben ser escritos en forma de
sucesiones de 1 y 0, tales que el computador
pueda reconocer y ejecutar cada instruccin. Por
tanto estos lenguajes son directamente inteligibles
por el computador. Los principales inconvenientes
del uso del lenguaje de mquina es la lentitud de
redaccin del programa, la dificultad de su
escritura y la facilidad con la que se cometen
errores.
Sin embargo existe una ventaja, en ocasiones
definitiva, con respecto a otros lenguajes, sta es la
posibilidad de cargar y ejecutar directamente el
programa escrito en lenguaje mquina, cosa
imposible con otros lenguajes.
Ensambladores
El contenido habitual en una instruccin de la
computadora consiste en la informacin sobre la
operacin a efectuar (cdigo de operacin) y sobre
la direccin del dato sobre el cual se trabaja
(operando).
Con el fin de simplificar la confeccin de
programas, se piensa en la sustitucin de los ceros
y unos de la instruccin por una serie de smbolos.
A los lenguajes de programacin que utilizan esta
filosofa se les llama lenguajes ensambladores.
Normalmente estos lenguajes construyen sus
instrucciones mediante dos cdigos simblicos,
uno correspondiente al cdigo de operacin, y
otro para expresar la direccin del operando, de
modo que la complejidad a la hora de introducir
grandes series de ceros y unos desaparece al ser
sustituidos los cdigos numricos por smbolos
que de alguna manera se relacionan con la clase
de operacin a realizar.

Pgina 10

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

La principal caracterstica del ensamblador es que


se requiere una instruccin simblica por cada
instruccin de mquina.
Se dice que este tipo de lenguaje est orientado a
la mquina, con lo cual el lenguaje ensamblador
de un computador no es utilizable en un modelo
distinto, ya que los juegos de instrucciones de
computadores distintos suelen ser diferentes.
A diferencia de lo que ocurre en el lenguaje de
mquina, un programa escrito en lenguaje
ensamblador no puede ser ejecutado directamente
por el computador, sino que es necesaria una fase
previa de traduccin al lenguaje de mquina en la
que los distintos cdigos simblicos del programa
original (programa fuente) son sustituidos por sus
respectivos cdigos binarios. Al resultado de esta
traduccin se le conoce como programa objeto,
que es directamente ejecutable por el computador.
El empleo de un ensamblador hace que el
computador se implique ms a la hora de resolver
un problema, en beneficio del programador,
adems se facilita un poco la inteligibilidad del
programa y su puesta a punto final.
En cualquier caso el uso del lenguaje ensamblador
tiene una serie de inconvenientes: Dependencia
total de la mquina, que hace que en caso de
cambio de computador nuestro programa sea
intil.
Necesidad de personal muy especializado en
programacin, que conozca ampliamente el
computador y su lenguaje.
Estos dos condicionantes eliminan casi siempre la
utilizacin del computador como instrumento de
resolucin de problemas, ya que se perdera
mucho tiempo en aprender a utilizar el lenguaje
ensamblador.
Lenguajes de Alto Nivel
Ante estas limitaciones surge la necesidad de crear
un nuevo tipo de lenguaje que sea ms fcil de
utilizar y que sirva para cualquier computador, es
as como nacen los lenguajes de nivel alto, con

Pgina 11

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

unas caractersticas principales para satisfacer la


necesidad:
Universalidad: Posibilidad de utilizacin en
cualquier computador.
Orientacin al problema: es decir, creados para
un determinado problema.
Su importancia radica en que un programador no
tiene porque tener un conocimiento sobre el
computador, simplemente se puede limitar a
preocuparse del lenguaje en si mismo. Esto
acarrea el consiguiente problema de que se
necesitar de un traductor posteriormente para
pasarse al lenguaje mquina: los llamados
compiladores.
Estos lenguajes se podran dividir en tres:
Procedurales, por bloques, orientados a objetos
Procedurales
Los lenguajes procedurales estn fundamentados
en la utilizacin de variables para almacenar
valores y en la realizacin de operaciones con los
datos almacenados. Algunos ejemplos son:
FORTRAN, PASCAL, C, ADA, ALGOL.
En este tipo de lenguajes, cuyo origen est ligado
a la propia arquitectura de von Neumann, la
arquitectura consta de una secuencia de celdas,
llamadas memoria, en la cual se pueden guardar
en forma codificada, lo mismo datos que
instrucciones; y de un procesador, el cual es capaz
de ejecutar de manera secuencial una serie de
operaciones,
principalmente
aritmticas
y
booleanas, llamadas comandos. En general, un
lenguaje procedural ofrece al programador
conceptos que se traducen de forma natural al
modelo de la mquina. El programador por lo
general tiene que traducir la solucin abstracta del
problema a trminos muy primitivos, cercanos a
la mquina. La distancia entre el nivel del
razonamiento humano y lo expresable por los
lenguajes imperativos causa que sus programas
sean ms "comprensibles" para la mquina que
para el hombre.

Pgina 12

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

Orientados a objetos
Un objeto se puede definir como un grupo de
procedimientos que comparten un estado. Se
define al conjunto de datos como estado, y
mtodos como el conjunto de procedimientos
que pueden alterar ese estado. Un programa
orientado a objeto es un mtodo de
implementacin en el que los programas estn
organizados como colecciones de objetos, donde
cada uno es una instancia de alguna clase, y
donde todas las clases son miembros de una
jerarqua de clases conectadas por relaciones de
herencia.
Son aquellos en los que el lenguaje obliga a seguir
una determinada metodologa.
Son lenguajes recientes y como ejemplos de ellos
tendramos:

SMALLTALK: Sera el primer lenguajes


relevante
orientado
a
objetos.
Es
principalmente un lenguaje interpretado, es
decir es un lenguaje compilado en forma
incremental: tanto el compilador como el
lenguaje son parte del ambiente de
programacin smalltalk, cuando se utiliza
smalltalk nunca se sale del ambiente de
programacin.

C++: Es una versin ampliada de C. Es un


lenguaje de propsito bastante general que
tiene su fundamento obviamente en el antiguo
C, pero que utiliza algunas sentencias de
smalltalk. Es un programa compilado.

JAVA: Se dise para ser pequeo, sencillo y


porttil a travs de plataformas y sistemas
operativos, tanto a nivel de cdigo fuente
como binario, lo que significa que los
programas en Java pueden ejecutarse en
cualquier computadora que tenga instalada
una mquina virtual de Java. Es un lenguaje
ideal para distribuir programas ejecutables va
WWW, adems de un lenguaje de
programacin de propsito general para
desarrollar programas que sean fciles de usar.

Pgina 13

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

Otra caracterstica es que es interpretado ya


que corre en mquina virtual.
14.1.2.1.1.

Proceso paralelo

La necesidad de ofrecer concurrencia en el acceso


a los recursos computacionales se remonta a los
primeros sistemas operativos. Mientras que un
programa realizaba una operacin de entrada o
salida otro podra gozar del tiempo del
procesador para realizar otra distinta. Aprovechar
al mximo los recursos computacionales fue una
necesidad apremiante, sobre todo en la poca en
que las computadoras eran caras y escasas; el
sistema operativo tena que ofrecer la ejecucin
concurrente y segura de programas de varios
usuarios, que desde distintas terminales utilizaban
un solo procesador, y as surgi la necesidad de
introducir algunos conceptos de programacin
concurrente para programar los sistemas
operativos.
Posteriormente,
cuando
los
procesadores
cambiaron de tamao y de precio, se abri la
posibilidad de contar con varios procesadores en
una mquina y ofrecer el procesamiento en
paralelo, es decir, procesar varios programas al
mismo tiempo. Esto dio el impulso a la creacin
de lenguajes que permitan expresar el
paralelismo.
Finalmente, llegaron las redes de computadoras,
que tambin ofrecen la posibilidad de ejecucin en
paralelo, pero con procesadores distantes, lo cual
conocemos como la programacin distribuida.
En resumen, el origen de los conceptos para el
manejo
de
concurrencia,
paralelismo
y
distribucin est en el deseo de aprovechar al
mximo la arquitectura von Neumann y sus
modalidades reflejadas en conexiones paralelas y
distribuidas.
Histricamente encontramos en la literatura
soluciones conceptuales y mecanismos tales como:
semforos, regiones crticas, monitores, envo de
mensajes (CSP), llamadas a procedimientos
remotos (RPC), que posteriormente se incluyeron
como partes de los lenguajes de programacin en

Pgina 14

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

Concurrent Pascal, Modula, Ada, OCCAM, y


ltimamente en Java.
14.2.

Lenguajes declarativos
A diferencia de los lenguajes imperativos, los lenguajes
declarativos facilitan la escritura de relaciones y funciones
y en ellos no se hacen nunca asignaciones a variables.
Estn considerados como de ms alto nivel, ya que
un programador declarativo trabaja con conceptos ms
que con localizaciones dentro de la propia mquina, es
decir, est basado en el pensamiento humano y las
matemticas; y ms alejado del modelo de computador.
Si bien hay que ser consciente de que existen aplicaciones
ms idneas para el uso de otros estilos de programacin,
el paradigma declarativo ha demostrado su eficiencia en
campos como la inteligencia artificial, las bases de datos
relacionales, los sistemas expertos, los algoritmos
numricos, el desarrollo de compiladores y programas de
bsqueda y ordenamiento, as como sistemas para la
encriptacin de informacin.
Los lenguajes declarativos estn orientados a buscar la
solucin del problema, sin preocuparse por la forma de
llegar a ello; es decir, el programador debe concentrarse en
la lgica del algoritmo, ms que en el control de la
secuencia. Los programas estn formados por un conjunto
de definiciones o ecuaciones, las cuales describen lo que
debe ser calculado, no en s la forma de hacerlo. Las
variables slo pueden tener asignado un solo valor a lo
largo de la ejecucin del programa, lo cual implica que no
puede existir asignacin destructiva. Debido a esto, cobra
especial importancia el uso del anidamiento y la
recursividad.
14.2.1. Programacin funcional
Los lenguajes funcionales son modelos basados en
la nocin de las funciones matemticas, las cuales
pueden considerarse como un mecanismo para
aplicar ciertas operaciones sobre algunos valores
(argumentos), y con esto obtener un resultado
(valor de la funcin para dichos argumentos). En
los lenguajes funcionales puros no se permiten
asignaciones a variables globales ni efectos
laterales: slo operan sobre funciones.

Pgina 15

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

Aunque normalmente estamos acostumbrados a


que los argumentos y el resultado de una funcin
sean constantes numricas, existe tambin la
posibilidad de que, tanto los argumentos como el
resultado de la funcin, pudiesen ser otra funcin
o incluso la misma, lo que puede interpretarse
como una forma de recursividad, que constituye
una de las herramientas ms poderosas de las que
se sirve la programacin funcional.
El primero, y todava ms comn lenguaje
funcional, es el LISP, basado en el clculo lambda
de Alonzo Church; y en el cual se basa toda la
teora de la programacin funcional.
14.2.2. Programacin lgica
El fundamento de este estilo de programacin es
la lgica de predicados, una extensin del sistema
lgico de Aristteles, el cual es usado para
encontrar nueva informacin de una base de datos
conocida, siguiendo unas reglas deductivas.
Por tanto, estas aserciones lgicas representan el
conocimiento que se tiene de un ambiente
determinado, el cual es analizado y explotado
para
encontrar
soluciones
a
problemas
dependientes de dicho conocimiento. Una de las
reglas deductivas bsicas es la reduccin al
absurdo, por la cual se toma como verdadera una
afirmacin falsa para, tras varias demostraciones,
derivar en una contradiccin. Una versin de el
mtodo de reduccin es la base para el lenguaje de
programacin lgica, PROLOG [1972], el cual est
basado en la descripcin de hechos conocidos y
las relaciones existentes entre ellos para luego, a
partir de los datos introducidos, deducir nuevos
hechos y resolver problemas automticamente.
14.2.3. Paradigma de Base de Datos
Una base de datos es ms o menos un archivo
permanente con estructura. En su forma ms
simple, es un archivo de grabaciones, como una
especie de catlogo de entidades, las cuales no
desaparecen al terminar el programa, sino que,
una vez organizadas, son permanentes.

Pgina 16

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

El paradigma de la base de datos est


estrechamente relacionado con los lenguajes
basados en la lgica. Se diferencia de ellos en que
los lenguajes de base de datos soportan la
persistencia. Del mismo modo, podemos decir que
las relaciones entre sus entidades estn
preservadas de cambios externos, por lo que otra
caracterstica a tener en cuenta es la del control de
cambios.
Un sistema de gestin de bases de datos, DBMS
(Database
Management
System)
incluye
normalmente un lenguaje de definicin de datos,
DDL (Data Definition Language), para la
descripcin de nuevos hechos o datos; y un
lenguaje de manipulacin de datos, DML (Data
Manipulation Language), para la interaccin con
las bases de datos existentes. El DML es a menudo
embebido por otro lenguaje de programacin de
alto nivel para mayor flexibilidad.
SQL (Structured Query Language) es el lenguaje
de base de datos ms utilizado y, a pesar de no ser
completamente funcional en el sentido de ser tan
potente como un lenguaje procedural, dota de
operaciones suficientes a las aplicaciones de base
de datos. Tiene muchas deficiencias; la ms seria
de ellas es que nunca fue realmente diseado de
acuerdo con ambas partes (lgebra y clculo), y
por lo tanto, est lleno de numerosas restricciones
y reglas especiales.

15. Lenguajes de programacin


Algunos de los lenguajes ms difundidos son:

BASIC, que durante mucho tiempo se ha considerado un


buen lenguaje para comenzar a aprender, por su sencillez,
aunque se poda tender a crear programas poco legibles. A
pesar de esta "sencillez" hay versiones muy potentes, incluso
para programar en entornos grficos como Windows (es el
caso de Visual Basic).

COBOL, que fue muy utilizado para aplicaciones de negocios.

Ensamblador (en ingls, Assembler, que se suele abreviar


como Asm) es un lenguaje de programacin de computadores
de bajo nivel (muy cercano al cdigo mquina), por lo que es

Pgina 17

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

especfico de cada tipo de computador (bsicamente, de cada


procesador). Es ms difcil de aprender que los lenguajes de
alto nivel, resulta mucho menos legible, y prcticamente no es
portable, pero si se domina, es el que dar la mayor velocidad
a nuestro programa.
Sustituye las secuencias de ceros y unos (bits) por palabras
ms fciles de recordar, como MOV, ADD, CALL o JMP.

FORTRAN, concebido para ingeniera, operaciones


matemticas, etc. Tambin va quedando desplazado.

Delphi, es una herramienta visual para Windows


desarrollada por Borland, basada en el lenguaje Pascal.

C, el mejor considerado actualmente, porque no es difcil y


permite un grado de control del computador muy alto,
combinando caractersticas de lenguajes de alto y bajo nivel.
Adems, es muy transportable: existe un estndar, el ANSI C,
lo que asegura que se pueden convertir programas en C de un
computador a otro o de un sistema operativo a otro con
bastante menos esfuerzo que en otros lenguajes.

C++, es una evolucin del lenguaje C, que soporta la


Programacin Orientada a Objetos.

PASCAL, el lenguaje estructurado por excelencia, y que en


algunas versiones tiene una potencia comparable a la del
lenguaje C, como es el caso de Turbo Pascal en programacin
para DOS y Windows. Frente al C tiene el inconveniente de
que es menos portable, y la ventaja de que en el caso concreto
de la programacin para DOS, Turbo Pascal no tiene nada que
envidiar la mayora de versiones del lenguaje C, pero resulta
ms fcil de aprender, es muy rpido, crea archivos EXE ms
pequeos, etc.

Lisp, es un lenguaje muy utilizado en Inteligencia Artificial.

Prolog, es un lenguaje de programacin diseado para la


Programacin Lgica" (de ah su nombre), y para inteligencia
artificial. Su planteamiento y forma de trabajo es totalmente
distinta a la de los lenguajes "convencionales".

Java, es un lenguaje de programacin de computadores,


desarrollado por Sun, orientado principalmente a la
programacin en Internet o intranets. Tiene una sintaxis muy
parecida a la de C++ y existen versiones para distintos
sistemas operativos.

Pgina 18

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

Modula-2, es un lenguaje de programacin de computadores,


de propsito general. Fue diseado por Wirth, el creador de
Pascal, intentando superar a este lenguaje, especialmente en lo
relativo a modularidad.

SQL, es un lenguaje estndar para acceder a los datos


almacenados en una base de datos (Structured Query
Language - Lenguaje de Consulta Estructurado). Su utilidad
radica en que casi todas las bases de datos se manejan de
forma ms o menos distinta, pero la mayora de las ms
potentes permiten hacerle consultas en este lenguaje.

16. Interpretes y compiladores


Se puede distinguir dos tipos de lenguajes, segn se realice esta
conversin:

En los intrpretes, cada instruccin que contiene el programa


se va convirtiendo a cdigo mquina antes de ejecutarla, lo
que hace que sean ms lentos.

En los compiladores, se convierte todo el programa en bloque


a cdigo mquina y despus se ejecuta. As, hay que esperar
ms que en un intrprete para comenzar a ver trabajar el
programa, pero despus ste funciona mucho ms rpido.

Pgina 19

Tecsup

Algoritmos y Herramientas de Programacin


Agosto 2007

17. Compiladores
La mayora de los lenguajes actuales son compiladores, y suelen
incluir:
Un editor para escribir o revisar los programas.
El compilador propiamente dicho, que los convierte a cdigo
mquina.
Otros mdulos auxiliares, como enlazadores (linkers) para
unir distintos subprogramas, y depuradores (debuggers) para
ayudar a descubrir errores.
18. Estructurado VS Objetos

Dos conceptos que se mencionan mucho al hablar de


programacin
son
"programacin
estructurada"
y
"programacin orientada a objetos".
La programacin estructurada consiste en dotar al
programa de un cierto orden, dividindolo en bloques
independientes unos de otros, que se encargan de cada
una de las tareas necesarias. Esto hace un programa ms
fcil de leer y modificar.
La programacin orientada a objetos se tratar ms
adelante, cuando ya se tenga una buena base de
programacin.

Pgina 20

Algoritmos y Herramientas de Programacin


Agosto 2007

Tecsup

19. Glosario
Informtica

La Informtica es el tratamiento automtico de


informacin.
Computador Es una mquina programable.
Ejecuta programas previamente almacenados.
Programa
Un programa esta compuesto por: Datos +
algoritmo.

20. Referencias Bibliogrficas

BOWMAN, Charles: Algoritmos y estructuras de datos:


Aproximacin en C. PUCP Lima, 1999.

Direcciones Web consultadas:

http://www.algoritmia.net

http://docs.rinet.ru/KofeynyyPrimer/

Pgina 21

También podría gustarte