Está en la página 1de 43

Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Introducción a los Computadores:


Estructura del computador

CNM-130

Departamento de Matemáticas
Facultad de Ciencias Exactas y Naturales
Universidad de Antioquia

Copyleft« 2010. Reproducción permitida bajo los


términos de la licencia de documentación libre GNU.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Contenido

1 Introducción

2 Arquitectura y funcionamiento

3 Software y lenguajes de programación


Software de sistema
Software de programación
Software de aplicación
Terminologı́a básica
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Historia de los computadores

Ábaco chino (500 adC)


Realiza operaciones aritméticas
Primera calculadora mecánica

Suanpan, ábaco chino


Pascalina (1642)
Calculadora mecánica inventada por Blaise Pascal
Suma y resta números de hasta 7 cifras por medio de
un mecanismo de ruedas y engranajes
En 1673 Gottfried von Leibniz modifica la pascalina y
crea la primera calculadora de propósito general
Pascalina

La tarjeta perforada (1801)


Joseph Marie Jacquard utiliza tarjetas perforadas
para manejar agujas de tejer en telares mecánicos
Posteriormente Hernan Hollenith utilizó las tarjetas
Tarjeta perforada
perforadas para almacenar datos en un computador.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Historia de los computadores


Máquina diferencial (1822)
Calculadora mecánica introducida por Charles
Babbage para tabular funciones polinómicas
En 1833 Babbage propone el diseño de un computador
moderno de uso general (la máquina analı́tica)
Ada Augusta Lovelace propone utilizar tarjetas Réplica de la máquina diferencial
perforadas para la máquina de Babbage

Primeras computadoras modernas


Mark I (1944)
Construida por Howard H. Aiken en la Universidad
de Harvard
Mark I
Empleaba señales electromagnéticas para mover las
partes mecánicas

ENIAC (1946)
Construida por John Presper Eckert y John William
Mauchly en la Universidad de Pennsylvania
Utilizaba tubos de vacı́o
ENIAC
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Historia de los computadores


Primera generación (1951–1958)

Tubos de vacı́o

Ingreso de datos por medio de tarjetas perforadas

Alto consumo de energı́a y necesidades de


ventilación Consola de Univac I

Uso de tambores giratorios para el almacenamiento


primario

Univac I (universal automatic computer I):


Primera computadora producida en forma
Tarjeta perforada (FORTRAN)
comercial
Utilizada por el departamento de censos
norteamericano (1951)

Crece industria de procesamiento de datos

Surgen FORTRAN y ALGOL Tubo de vacı́o

IBM comienza a construir computadoras


Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Historia de los computadores

Segunda generación (1959–1964)

Transistores

Aumento de velocidad, reducción de espacio


Transistores

Menor consumo de energı́a, reducción de costos

Memoria de núcleos magnéticos

Almacenan información por medio de las


propiedades magnéticas de sus componentes
Memoria no volátil Memoria de núcleos magnéticos

Escribir un programa no requiere comprensión


plena del hardware

IBM vende su primer sistema de disco magnético

Surgen terminales remotas: unidades que IBM 1401

transmiten datos a la máquina a distancia


Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Historia de los computadores

Tercera generación (1964–1971)

Circuitos integrados

Aumento de velocidad, reducción de tamaño

Menor consumo de energı́a, reducción de costos


Circuito integrado Intel 8742

Flexibilidad de los programas y estandarización de


modelos

Surgimiento de sistemas operativos y lenguajes


estructurados: Ada y Pascal

Utilización de memorias RAM y ROM

IBM lanza al mercado la serie 360

Aparecen las primeras calculadoras de bolsillo


IBM S/360
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Historia de los computadores

Cuarta generación (1964–1971)

Microprocesadores (circuito integrado independiente)

Reemplazo de memorias con núcleos magnéticos por Intel 4004


memorias electrónicas (chips de silicio)

IBM introduce los discos duros Winchester (estándar


de la industria)

Surgen las microcomputadoras o Computadores


Personales (PC´s) Disco IBM 3340

En 1975 William Henry Gates y Paul Allen fundan


Microsoft Corporation

En 1976 Steven Wozniak y Steven Jobs crean Apple


Computer

Ken Thompson, Dennis Ritchie y Douglas Mcllroy Apple II

desarrollan el sistema operativo UNIX


Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Resumen

Tomado de http://www.youtube.com/watch?v=2r0e8D0DqpA
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Conceptos básicos

Computador: máquina que manipula datos de acuerdo a un conjunto


de instrucciones

Los computadores pueden ser programados

El conjunto de instrucciones (programa) puede ser almacenado

El programa puede ser ejecutado posteriormente


Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Hardware y Software

Hardware: componentes fı́sicos de una computadora

Unidad central de proceso


Memoria
Buses
Periférico o dispositivos de entrada/salida (E/S)

Software: conjunto de programas que controlan el funcionamiento de


una computadora

Software de sistema: sistema operativo, compiladores, programas de


comunicaciones, bibliotecas estándares
Software de aplicaciones: bases de datos, navegadores, hojas de cálculo,
procesadores de texto, etc.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Vista computador personal

1 Monitor
2 Placa base
3 Procesador
4 Puertos ATA
5 Memoria principal (RAM)
6 Placas de expansión
7 Fuente eléctrica
8 Unidad de almacenamiento óptico
9 Disco duro
10 Teclado
11 Ratón
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Arquitectura Eckert-Mauchly

Unidad Lógica Aritmética (ULA): realiza operaciones aritméticas y


lógicas

Unidad de control: interpreta instrucciones y emite órdenes para los


demás componentes

Memoria central: dispositivos y medios de grabación que retienen


datos informáticos durante algún intervalo de tiempo

Dispositivos de entrada y salida (E/S): dispositivos de


comunicación con el exterior
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Memorias

Memoria primaria (memorias de acceso aleatorio)


Registros del procesador: memoria de alta velocidad y poca
capacidad, integrada en el microprocesador, que permite guardar
transitoriamente y acceder a valores muy usados, generalmente en
operaciones matemáticas.
Memoria principal: contiene los programas en ejecución y los datos
con que operan. La unidad aritmético-lógica (ALU) puede transferir
información muy rápidamente entre un registro del procesador y
localizaciones del almacenamiento principal (direcciones de memoria).
Memoria caché: tipo especial de memoria de acceso rápido. Parte de
la información de la memoria principal se duplica en la memoria caché.
Cuando se accede por primera vez a un dato, se hace una copia en el
caché; los accesos siguientes se realizan a dicha copia, haciendo que el
tiempo de acceso medio al dato sea menor.

Memoria secundaria (dispositivos de almacenamiento masivo)


Conjunto de dispositivos periféricos para el almacenamiento masivo de
datos (disquetes, disco duro, unidades pticas, unidades de memoria flash
y discos Zip).
Con mayor capacidad que la memoria principal, pero más lenta que ésta.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Memorias

Memoria RAM (Random Access Memory)


Memoria en la que se puede tanto leer como escribir
información
Los datos almacenados pueden ser accesados en
cualquier orden (random)
Los datos son retornados independiente de su ubicación
fı́sica y de los datos previamente almacenados
Memoria donde el procesador recibe las instrucciones y
guarda los resultados.
Memoria volátil: su información se pierde al Módulos formato SIMM
interrumpirse el flujo de corriente eléctrica

Memoria ROM (Read Only Memory)


Destinada sólo a ser leı́da (no escribible)
Almacena programas necesarios para iniciar el
Memoria ROM (BIOS)
computador y de diagnóstico
Memoria no volátil: su información se conserva al
interrumpirse el flujo de corriente eléctrica
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Dispositivos auxiliares y periféricos

Disco duro: sistema de grabación magnética digital


que almacena los datos del usuario y en la mayorı́a de
los casos el sistema operativo de la computadora.

Monitor: dispositivo de salida que muestra, mediante


una interfaz, los resultados del procesamiento de una
computadora.

Teclado: periférico, fı́sico o virtual utilizado para la


introducción de órdenes y datos.

Ratón: periférico utilizado para la entrada y el control


de datos.

Impresora: produce copias permanente en papel de


textos o gráficos de documentos almacenados en
formato electrónico.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación del software

Software de sistema: permite que el hardware funcione.


Sistemas operativos: conjunto de programas destinados a permitir
una administración eficaz de los recursos del computador. Se estima que

Controladores de dispositivo: programas informáticos que permiten


al sistema operativo interactuar con los periféricos.
Herramientas de diagnóstico: monitorea y controla la funcionalidad
del hardware.
Servidores: programas que realiza algunas tareas en beneficio de otras
aplicaciones llamadas “clientes”.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación del software


Software de programación: Es el conjunto de herramientas que
permiten al programador desarrollar programas informáticos.

Editores de texto: programas que permiten crear y modificar archivos


digitales compuestos únicamente por texto y sin formato.
Compiladores: programas que traducen un programa escrito en un
lenguaje de programación a otro lenguaje que la máquina será capaz de
interpretar.
Intérpretes: programas escritos en lenguajes de alto nivel capaces
analizar y ejecutar otros programas. A diferencia de los compiladores,
los intérpretes traducen el programa a medida que lo ejecutan.
Enlazadores: programas que toman los archivos de código objeto
generados durante el proceso de compilación y los enlaza con bibliotécas
para generar un archivo ejecutable.
Depuradores: programas que limpian los errores de otros programas
informáticos.
Entornos de Desarrollo Integrados (IDE): agrupan a las anteriores
herramientas, usualmente en un entorno visual, de forma que el
programador no necesite introducir múltiples comandos para compilar,
interpretar, depurar, etc.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación del software


Software de aplicación: permite a los usuarios llevar a cabo una o
varias tareas especı́ficas, en cualquier campo de actividad susceptible
de ser automatizado o asistido.

Aplicaciones ofimáticas: conjunto de programas para el uso en oficinas y


entornos profesionales. Incluyen procesadores de texto, hojas de cálculo,
programas de presentación, sistemas de gestiòn de bases de datos, etc.
Software educativo: software destinado a la enseñanza y el auto
aprendizaje.
Software médico: software utilizado para fines médicos.
Software de cálculo numérico: programas que simulan procesos
matemáticos complejos que describen fenómenos reales.
Software de diseño asistido (CAD): herramientas computacionales
que asisten a ingenieros, arquitectos y a otros profesionales del diseño en
sus respectivas actividades.
Software de Control Numérico (CAM): programas destinados a controlar
las fases de manufactura de un producto, incluyendo la planeación del
proceso y la producción, maquinado, calendarización, administración y
control de calidad.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica

Programa: conjunto de instrucciones escritas en forma codificada que


el computador puede traducir a su propio lenguaje. Estas instrucciones
le dicen al computador qué operaciones ejecutar y en qué orden.

Código fuente: tipo de programa escrito por un programador en


algún lenguaje de programación, pero que no es directamente
ejecutable por el computador, sino que debe ser traducido a otro
lenguaje (el lenguaje de máquina o código objeto) que pueda ser
ejecutado por el hardware del computador.

Programa Objeto: programa que resulta de la traducción del


lenguaje fuente (código fuente) a un lenguaje de máquina, es decir a
aquel que es inteligible por el computador.

Intérpretes: programas que traducen las instrucciones de un


programa escrito en algún lenguaje de programación, en una secuencia
de instrucciones de máquina (lenguaje de máquina). El intérprete
traduce las instrucciones del programa fuente una por una y las ejecuta
inmediatamente.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica
Compilador: al igual que los intérpretes, los compiladores traducen un
programa escrito en algún lenguaje de programación en una secuencia
de instrucciones de máquina (lenguaje de máquina) que se pueden
ejecutar. A diferencia de los intérpretes, el compilador sólo traduce:

Un programa que ha sido compilado puede correr por si solo, pues en el


proceso de compilación se lo transforma en otro lenguaje (lenguaje
máquina).

Un intérprete traduce el programa cuando lo lee, convirtiendo el código


del programa directamente en acciones.

La ventaja del intérprete es que dado cualquier programa es posible


interpretarlo en cualquier plataforma (sistema operativo), en cambio el
archivo generado por el compilador sólo funciona en la plataforma que
fue creado.

Un archivo compilado puede ser distribuido fácilmente conociendo la


plataforma, mientras que un archivo interpretado no funciona si no se
tiene el intérprete.

La velocidad de ejecución de un archivo compilado es de 10 a 20 veces


superior a la de un archivo interpretado.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción

Según la forma de ejecución

Según el paradigma
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción


Lenguajes Máquina
Lenguajes de bajo nivel
Lenguajes de medio nivel
Lenguajes de alto nivel

Según la forma de ejecución

Según el paradigma
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción


Lenguajes Máquina
Lenguajes Máquina Conjunto de instrucciones que
Lenguajes de bajo nivel puede ejecutar el computador
Lenguajes de medio nivel
(CPU).
Está compuesto por un
Lenguajes de alto nivel
conjunto de instrucciones
Según la forma de ejecución binarias (0 y 1) ejecutadas en
secuencia.
Según el paradigma Representan acciones (“on”,
“off”) que la máquina podrı́a
realizar.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción


Lenguajes de bajo nivel
Lenguajes Máquina Proporciona poca o ninguna
Lenguajes de bajo nivel abstracción del
microprocesador del
Lenguajes de medio nivel
computador.
Lenguajes de alto nivel
Es “bajo” por ofrecer una
Según la forma de ejecución reducida abstracción entre el
lenguaje y el hardware
Según el paradigma Máxima velocidad con mı́nimo
uso de memoria.
Requiere conocer en detalle la
arquitectura de la máquina.
Ejemplo: el lenguaje
ensamblador.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción


Lenguajes de medio nivel
Lenguajes Máquina Presenta caracterı́sticas que
Lenguajes de bajo nivel los acercan a los lenguajes de
Lenguajes de medio nivel
bajo nivel.
Posee cualidades que lo hacen
Lenguajes de alto nivel
un lenguaje más cercano al
Según la forma de ejecución humano y, por tanto, de alto
nivel.
Según el paradigma Expertos consideran al
lenguaje C, un lenguaje de
medio nivel.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción


Lenguajes de alto nivel
Lenguajes Máquina De fácil comprensión por estar
Lenguajes de bajo nivel formado por elementos de
Lenguajes de medio nivel
lenguajes naturales como el
inglés.
Lenguajes de alto nivel
Diseñado más para la
Según la forma de ejecución capacidad cognitiva humana,
en lugar de la capacidad
Según el paradigma ejecutora de las máquinas.
Ejemplos: Basic, Fortran,
COBOL.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción


Según la forma de ejecución
Lenguajes compilados
Lenguajes interpretados

Según el paradigma
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción Lenguajes compilados


Según la forma de ejecución Son traducidos partir de su
código fuente por medio de un
Lenguajes compilados
compilador.
Lenguajes interpretados
El archivo generado es
Según el paradigma ejecutable para una
determinada plataforma.
Ejemplos: Fortran, Pascal, la
familia de lenguajes de C,
incluyendo C++ y Objective
C pero no Java.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción Lenguajes interpretados


Según la forma de ejecución Son ejecutado por medio de
un intérprete.
Lenguajes compilados
Las instrucciones se traducen
Lenguajes interpretados
o interpretan una a una
Según el paradigma siendo tpicamente unas 10
veces más lentos que los
programas compilados.
Ejemplos: Lisp, Bash, Basic.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción

Según la forma de ejecución


Según el paradigma
Paradigma imperativo o por
procedimientos
Paradigma funcional
Paradigma lógico
Paradigma orientado a objetos
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción Paradigma imperativo


Según la forma de ejecución Conjunto de instrucciones que
el computador debe ejecutar.
Según el paradigma
Enfoque que describe la
Paradigma imperativo o por programación en términos del
procedimientos estado del programa y
Paradigma funcional sentencias que cambian dicho
estado.
Paradigma lógico
Los programas imperativos le
Paradigma orientado a objetos
indican al computador cómo
realizar una tarea.
La implementación de
hardware de la mayorı́a de
computadores es imperativa.
Ejemplos: BASIC, C, C++,
Fortran, Pascal, Java, Perl,
PHP.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción Paradigma funcional


Según la forma de ejecución Enfoque de programación
declarativo basado en la
Según el paradigma utilización de funciones
Paradigma imperativo o por matemáticas.
procedimientos Hace énfasis en la aplicación
Paradigma funcional de funciones, en contraste con
el concepto de estado del
Paradigma lógico
cómputo (paradigma
Paradigma orientado a objetos imperativo)
No es necesario bajar al nivel
de la máquina para describir
el proceso llevado a cabo por
el programa.
Ejemplos: La familia de
lenguajes LISP (en particular
Scheme), ML o Haskell, R.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción Paradigma lógico


Según la forma de ejecución Forma parte de los
paradigmas declarativos en los
Según el paradigma que se especfica qué deberı́a
Paradigma imperativo o por hacer el computador y no
procedimientos cómo.
Paradigma funcional Tiene como caracterstica
principal la aplicación de las
Paradigma lógico
reglas de la lógica para inferir
Paradigma orientado a objetos conclusiones a partir de datos.
El PROLOG es el lenguaje
emblemático del paradigma.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Clasificación de los lenguajes . . .

Según su nivel de abstracción Paradigma orientado a objetos


Según la forma de ejecución Estilo de programación que
utiliza objetos como bloque
Según el paradigma fundamental de construcción.
Paradigma imperativo o por Los bloques son un conjunto
procedimientos complejo de datos (atributos)
Paradigma funcional y funciones (métodos) que
poseen una determinada
Paradigma lógico
estructura y forman parte de
Paradigma orientado a una organización.
objetos
Los atributos definen el estado
del objeto; los métodos, su
comportamiento.
Ejemplos: Visual Basic, C++,
PHP.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Bits y Bytes
Bit: dı́gito binario que toma como posible valor 0 ó 1.

El bit es la unidad mı́nima de almacenamiento empleada en


informática.

Un bit representa dos posibles estados: “encendido” (1) o “apagado”


(0), “verdadero” o “falso”, “abierto” o “cerrado”, “presencia” o
“ausencia” de energı́a, etc.

Con un bit sólo es posible representar dos valores. Para representar o


codificar más información en un dispositivo digital, es neceario usar
una mayor cantidad de bits. Con 2 bits por ejemplo:

22 = 4 posibilidades:
0 0 : “apagado”–“apagado”.
0 1 : “apagado”–“encendido”.
1 0 : “encendido”–“apagado”.
1 1 : “encendido”–“encendido”.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Bits y Bytes

Con tres bits tendremos 23 = 8 combinaciones posibles:

000, 001, 010, 011, 100, 101, 110, 111

A través de secuencias de bits, se puede codificar cualquier valor


discreto como números, palabras, e imágenes.

Cuatro bits forman un nibble, y pueden representar hasta 24 = 16


valores diferentes.

Ocho bits forman un octeto, y se pueden representar hasta 28 = 256


valores diferentes.

En general, con n bits se pueden representar hasta 2n valores


diferentes.

En la mayorı́a de los computadores ocho bits forman un byte (siendo


equivalente al octeto) pero hay excepciones.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica

Dirección de memoria

Número que identifica la posición en la memoria asignada a un


dispositivo.
La dirección es utilizada para la comunicación entre el software y el
dispositivo.
La dirección de memoria le permite a un programa o a un dispostivo de
hardware recuperar la información que ha almacenado con antelación.

Palabra

Cadena finita de bits que es tratada por los circuitos como una sola
entidad, por la unidad de control como una instrucción y por la unidad
aritmética-lógica como una cantidad.
Se les asigna una dirección de memoria.
El tamaño de una palabra hace referencia al número de bits contenidos
en ella.
Los computadores modernos normalmente tienen un tamaño de palabra
de 16, 32 64 bits.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica

Caracteres: están formados por

Dı́gitos decimales: 0, 1, 2, . . . , 9

Letras: A, B, . . . , Z y a, b, . . . , z.

Sı́mbolos especiales: $, @, %, &, *, (, ), -, +, ?, /, etc.

Campos:

Grupo de caracteres o bytes que transmiten algún significado.

Las instrucciones de los lenguajes están constituidas por varios campos.

Un campo puede estar constituido por una o más palabras.

Un campo que consiste de letras puede utilizarse para representar el


nombre de una persona.
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica

Registro

Grupo de campos relacionados.

En un sistema de nómina, el registro de un empleado en particular


podrı́a estar compuesto por los siguientes campos:

Número de seguro social (campo alfanumérico).

Nombre (campo alfabtico).

Dirección (campo alfanumérico).

Sueldo por hora (campo numérico).

Deducciones (campo numérico).

Percepciones de un año a la fecha (campo numérico).

Monto por concepto de impuestos (campo numérico).


Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica

Archivos

Grupo de registros relacionados.

Se utilizan para almacenar información en forma masiva, relacionada


con una entidad, persona o cosas.

El archivo de nómina de una empresa contiene un registro para cada


empleado.

Bases de datos

Grupo de archivos relacionados.

Al conjunto de programas diseñados para crear y administrar bases de


datos se les denomina sistema de administración de bases de datos
(DBMS).
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Terminologı́a básica

Jerarqua de datos
Introducción Arquitectura y funcionamiento Software y lenguajes de programación

Referencias

M.A. Criado
Programación en lenguajes estructurados
Alfaomega Grupo Editor, S.A. de C.V. Primera Edición, 2006

Colaboradores de Wikipedia
Wikipedia, La enciclopedia libre
http://es.wikipedia.org/wiki/Wikipedia:Portada