You are on page 1of 28

Tecsup

Virtu@l

Algoritmos
pseudocdigos
y diagramas de
flujo

Copyright 2008 por TECSUP


Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

NDICE

1. Introduccin ................................................................................ 3
2. Objetivos ..................................................................................... 3
3. Historia de la programacin ........................................................ 3
4. Qu es programacin? ............................................................... 3
5. Qu es un Algoritmo?................................................................ 4
6. Caractersticas de un algoritmo:.................................................. 4
7. Resolucin de Problemas ............................................................ 5
8. Criterios para desarrollar algoritmos........................................... 6
9. Ejemplos de desarrollo de algoritmos: ........................................ 7
10. Flujogramas................................................................................. 9
11. Diagramas de Flujo ..................................................................... 9
12. Ejemplo de Diagrama de Flujo ................................................. 10
13. Pseudocdigos........................................................................... 10
14. Fundamentos de la programacin ............................................. 11
15. El valor del lenguaje.................................................................. 14
16. Errores de los programas........................................................... 14
17. Pasos para crear un programa ................................................... 14
18. Caractersticas de los programas ............................................... 14
19. Importancia relativa .................................................................. 15
20. Representacin de la informacin ............................................. 15
21. Datos ......................................................................................... 15
22. Clasificacin de los lenguajes de programacin ....................... 16
22.1. Lenguajes imperativos .................................................. 16
22.2. Lenguajes declarativos .................................................. 22
23. Lenguajes de programacin ...................................................... 25
24. Interpretes y compiladores ........................................................ 26
25. Compiladores ............................................................................ 27
26. Estructurado VS Objetos........................................................... 27
27. Glosario ..................................................................................... 28
28. Referencias Bibliogrficas ........................................................ 28

Pgina 2
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

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 los conceptos de programa y algoritmo.


Definir y crear algoritmos para resolver problemas.
Resolver problemas usando pseudo cdigos.
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
4. Qu es programacin?
de:
- Seleccionar la parte que
Programacin es: hacer, construir, programas.
nos interesa de la realidad.
Un programa es el arte y la tcnica de :
- Sintetizarla en unos
Seleccionar la parte que nos interesa de la realidad.
pocos datos.
Sintetizarla en unos pocos datos. - Reproducir su
Reproducir su comportamiento. comportamiento.
Y analizar las consecuencias. Y analizar las
O sea, que es un soporte fundamental a la ingeniera. consecuencias.

Pgina 3
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

5. Qu es un Algoritmo?

Es una frmula para resolver un problema. Es un conjunto de


acciones o secuencia de operaciones que ejecutadas en un
determinado orden resuelven el problema. Existen n
algoritmos, hay que elegir el ms efectivo".

Un algoritmo se define como un mtodo que se realiza paso a


paso para solucionar un problema que termina en un nmero
finito de pasos.

Pienso
Deseo calcular
Ya tengo la
el mximo de
solucin
dos nmeros

Es una forma de escribir la solucin de un problema.


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.

6. Caractersticas de un algoritmo:

Las caractersticas de un algoritmo son:

Debe ser preciso e indicar el orden de realizacin 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
algn momento; o sea debe tener un nmero finito de pasos.
La definicin de un algoritmo debe describir tres partes:
Entrada, Proceso y Salida.

Pgina 4
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

Actividad:
Cules son las caractersticas de un algoritmo?
Qu partes debe describir un algoritmo?

T = minutos

Problema Problema
A Piensa y plantea
B
una solucin

Cerebro

Lgica Algoritmo

Lenguaje de programacin

Programa
Almacena en memoria

Solucin Solucin
A B

T = segundos

7. Resolucin de Problemas

Resolucin de un problema desde el punto de vista algortmico:

Anlisis preliminar o evaluacin del problema: Estudiar el


problema en general y ver que parte nos interesa. El objetivo
de sta fase es comprender el problema.
Definicin o anlisis del problema: Ver que es lo que entra y
que es lo que sale, las posibles condiciones o restricciones.
Diseo del algoritmo: Disear la solucin. Una vez
comprendido el problema se trata de determinar que pasos o
acciones tenemos que realizar para resolverlo.

Pgina 5
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

8. Criterios para desarrollar algoritmos

Si el problema es bastante complicado lo mejor es dividirlo en


partes ms pequeas e intentar resolverlas por separado.

Dividir el
Problema problema
complejo en mdulos

Algoritmo Algoritmo
Problema a b
Problema
a b
Algoritmo
Problema e
e
Solucin

Problema Problema Algoritmo Algoritmo


c d c d

Esta metodologa de divide y vencers tambin se conoce con el


nombre de diseo descendente. Las ventajas de aplicar esto son:

Al dividir el problema en mdulos o partes se comprende ms


fcilmente.
Al hacer modificaciones es ms fcil sobre un mdulo en
particular que en todo el algoritmo.
En cuanto a los resultados, se probarn mucho mejor
comprobando si cada mdulo da el resultado correcto que si
intentamos probar de un golpe todo el programa porque si se
produce un error sabemos en que mdulo ha sido.

Pgina 6
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

9. Ejemplos de desarrollo de algoritmos:

Mximo de dos nmeros:

Primera Solucin:

Segunda Solucin:

Pgina 7
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

Mayor de tres nmeros:


Pensamos en la posible solucin del problema:

Ya s !
Es como si quisiera
saber cul de
tres objetos
pesa ms !
Para ello utilizo
una balanza
Deseo calcular
Cmo resuelvo
el mximo de
este problema ?
tres nmeros

1Kg 2Kg 3Kg

Encontramos la solucin:

1Kg Luego la pesamos con la


Comparamos dos al
tercera y determinamos
azar y determinamos
la que tiene ms peso.
cul pesa ms.
2Kg
1Kg 2Kg

3Kg

2Kg 3Kg

Pgina 8
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

Determinamos el algoritmo a utilizar :


Comparar el primero y el segundo entero,
deduciendo cul es el mayor.
Comparar el mayor anterior con el tercero y
deducir cul es el mayor. Este ser el resultado.

Suma de los 10 primeros nmeros:

Suma = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

Se inicializa la variable suma:


Suma = 0
Se inicializa la variable contador:
Contador = 1
Suma = Suma + Contador
Incrementa Contador
Es Contador es diferente de 11 entonces Vuelve
a sumar
Fin

10. Flujogramas

Es una notacin grfica para implementar algoritmos. Se basa


en la utilizacin de unos smbolos grficos que denominamos
cajas, en las que escribimos las acciones que tiene que realizar
el algoritmo.
Las cajas estn conectadas entre s por lneas y eso nos indica
el orden en el que tenemos que ejecutar las acciones. En todo
algoritmo siempre habr una caja de inicio y otra de fin, para
el principio y final del algoritmo.

11. Diagramas de Flujo

Un Diagrama de Flujo es una representacin semigrfica del


algoritmo en cuestin y en el que cada paso de; algoritmo se
visualiza dentro del smbolo adecuado. Esto nos facilita la
visin descriptiva de la ejecucin del programa, pudindose
obtener para cada paso un resultado.
En forma genrica un Diagrama de Flujo es un mtodo para
representar con smbolos las operaciones y el flujo de datos en
el procesamiento de la informacin acerca de los datos de un
sistema de procesamiento o de un programa.
Se acostumbra dibujar los Diagramas de Flujo de manera que
puedan ser ledos de izquierda a derecha, y de arriba hacia

Pgina 9
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

abajo. Si el flujo va en sentido inverso se utilizan pequeas


flechas para indicarlo. Estas flechas pueden ser usadas
tambin, en el flujo normal para aumentar la claridad y
legibilidad del mismo, llamadas lneas de flujo.

12. Ejemplo de Diagrama de Flujo

La suma de dos nmeros:

13. Pseudocdigos

Es una herramienta utilizada en el diseo de un programa


para describir la solucin del problema, en forma de
algoritmo, dirigido a la mquina, haciendo uso del lenguaje
natural lgico, pero sometido a ciertas reglas.
El lenguaje de pseudocdigo nos permite escribir los
programas de manera que lo entienda la computadora, es
decir, imitar el cdigo de las computadoras. El pseudocdigo
se concibi para superar las dos principales desventajas de un
Diagrama de Flujo: su lentitud para crearlo y la dificultad de
modificacin.
Con el pseudocdigo la rutina alcanzada, sera la misma, sin
importar el lenguaje en que se vaya a desarrollar. Posee una
sintaxis intuitiva y menos formal que la de un Lenguaje de
Programacin.
Los comandos del pseudocdigo son de la misma naturaleza
que los empleados en los algoritmos. Aqu una lista de los
mismos:
Se utilizan los smbolos como en los algoritmos, los
operadores aritmticos, que son: suma ( + ), resta ( - ),
multiplicacin ( * ), divisin ( / ), divisin entera (div),
resto divisin entera ( mod) y potenciacin ( ^ ).
Se utilizan los identificadores (nombres simblicos) que
representan las cantidades que son procesadas por el

Pgina 10
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

algoritmo. (variables constantes, nombres de programa o


algoritmos, etc.).
Utilizan los comentarios, textos adicionales que no sern
ejecutados por el programa, sirven de ayuda o referencia.
Los smbolos para poder incluir comentarios son: { }, [ ],
(* *), , !. Si existe texto entre estos smbolos el programa lo
leer como un comentario.
Se usan ciertas palabras claves.

14. 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,

Pgina 11
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

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
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

Pgina 12
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

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).

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.

Pgina 13
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

Preciso.
Abstracto.
Capaz.

...que permita describir datos y algoritmos

15. 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.

16. 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.

17. Pasos para crear un programa

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

18. Caractersticas de los programas

Correctos
Quin quiere un programa incorrecto?

Pgina 14
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

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.

19. 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!

20. 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.

21. 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.

Pgina 15
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

22. Clasificacin de los lenguajes de programacin

22.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.

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.

22.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

Pgina 16
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

22.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.

22.1.2.1. 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
aporta el usuario, bien sea en cdigo binario
(lenguaje mquina) o bien en cdigos simblicos
(ensambladores).

Lenguaje mquina

Estos 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.

Pgina 17
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

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.

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.

Pgina 18
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

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.

22.1.2.2. 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
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 s 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

Pgina 19
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

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.

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.

Pgina 20
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

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.
Otra caracterstica es que es interpretado ya
que corre en mquina virtual.

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

Pgina 21
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

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
Concurrent Pascal, Modula, Ada, OCCAM, y
ltimamente en Java.

22.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.

Pgina 22
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

22.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.

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.

22.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

Pgina 23
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

partir de los datos introducidos, deducir nuevos


hechos y resolver problemas automticamente.

22.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.

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.

Pgina 24
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

23. 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
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

Pgina 25
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

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.

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.

24. 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 26
Algoritmos pseudocdigos y diagramas de flujo Tecsup
Agosto 2008

25. 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.

26. 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 27
Tecsup Algoritmos pseudocdigos y diagramas de flujo
Agosto 2008

27. Glosario

InformticaLa Informtica es el tratamiento automtico de


informacin.
Computador Es una mquina programable.
Ejecuta programas previamente almacenados.
Programa Un programa esta compuesto por: Datos +
algoritmo.
Algoritmo Se define como un mtodo que se realiza paso a
paso para solucionar un problema que termina en
un nmero finito de pasos.
Diagrama Un Diagrama de Flujo es una representacin
de flujo semigrfica del algoritmo en cuestin y en el que
cada paso de; algoritmo se visualiza dentro del
smbolo adecuado.
Pseudo Es una herramienta utilizada en el diseo de un
cdigos programa para describir la solucin del
problema, en forma de algoritmo, dirigido a la
mquina, haciendo uso del lenguaje natural
lgico, pero sometido a ciertas reglas.

28. 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/

FIN DE LA UNIDAD

Pgina 28

You might also like