Programación y Computación
Tema 1:
Introducción
Ingeniería de Sistemas e Informática
Departamento de Ciencias de la Computación
Curso 2019-II
Introducción
Programación y Computación
1.1
Introducción
Programación y Computación
1.2
Introducción
Programación y Computación
1.3
Evolución del Computador
• Desarrollado en China.
Ábaco
• Permitía Sumar, Restar,
Multiplicar y Dividir.
• Es aún utilizado en la
Regla de Cálculo educación Oriental.
• Proviene de la palabra
ABAX, que significa tabla
Pascalina cubierta de Polvo.
Computador
Mecánico
Programación y Computación
Evolución del Computador
Ábaco
• Desarrollado por
William Oughtred.
• Operaciones Aritméticas
Regla de Cálculo Complicadas.
• Instrumento Analógico.
• Popular durante un
Pascalina siglo.
Computador
Mecánico
Programación y Computación
Evolución del Computador
Ábaco
Regla de Cálculo
• Creado por Blaise Pascal
Pascalina • Suma y Resta.
• Gottfried Leibniz crea
versión que multiplica.
Computador
Mecánico
Programación y Computación
Evolución del Computador
Ábaco
Regla de Cálculo
• Creado por Charles Babbage
Pascalina en 1833.
• Uso de los cartones
perforados como entradas.
Computador • Tenía impresora.
Mecánico • No pudo terminarla.
Programación y Computación
Evolución del Computador
• Desarrollado por George
Álgebra de Boole Boole.
• Resolución de problemas
lógicos.
• 0 y 1 y operadores and, or,
Nace IBM
not.
• El lenguaje Binario.
Aritmómetro
Término Bit
Programación y Computación
Evolución del Computador
Álgebra de Boole
• Herman Hollerith en 1889.
• Automatización de Censo
Nace IBM USA.
• Uso de Tarjetas Perforadas
• Nace Tabuling Machine
Company (Próxima IBM)
Aritmómetro
Término Bit
Programación y Computación
Evolución del Computador
Álgebra de Boole
Nace IBM
• Creada en 1920
Aritmómetro • Presentada en Paris.
• Calculadora conectada a
maquina de escribir.
Término Bit
Programación y Computación
Evolución del Computador
Álgebra de Boole
Nace IBM
Aritmómetro • Claude Shannon en 1937
• Programación en álgebra de
Boole.
• Sistema de Conmutación
Término Bit
• Bit como unidad de datos.
Programación y Computación
Evolución del Computador
• Computadora Programable
Ordenador Z3 electromagnética.
• Nace en 1941.
• Recibe instrucciones por
Colossus cinta perforada.
• Rapidez de 0,7 a 3
segundos.
Mark I
ENIAC
Programación y Computación
Evolución del Computador
Ordenador Z3
• Nace en Gran Bretaña.
• Descifraba mensajes
Colossus
secretos de los Nazis.
• Desarrollada por la milicia.
Mark I
ENIAC
Programación y Computación
Evolución del Computador
Ordenador Z3
Colossus
• Por Howard Aiken en 1944.
Mark I • Procesadora de
Información.
• Funciona Eléctricamente.
ENIAC • Entrada Tarjetas Perforadas.
Programación y Computación
Evolución del Computador
Ordenador Z3
Colossus
Mark I • Desarrollada en Pennsylvania.
• Introducida en 1946
• Electronic Numeral Integrator
and Calculador. Gran Consumo
ENIAC de Energía.
Programación y Computación
Evolución del Computador
Primera Generación (51 – 58)
Sistema construido a base de Tubos Vacíos.
Almacenamiento por tarjetas perforadas.
La UNIVAC como primera computadora
comercial.
Alto consumo de energía y cantidad de calor.
Programación Lenguaje Máquina.
Programación y Computación
Evolución del Computador
Segunda Generación (58 – 63)
Creados con Transistores (Brattain, Bardeen,
Shockley)
Aplicaciones Comerciales (Contables, Nóminas, etc)
Disminución de Tamaño y consumo de Energía.
Mayor velocidad de procedimientos.
Lenguaje Ensamblador y Alto Nivel.
Programación y Computación
Evolución del Computador
Tercera Generación (64 – 71)
Llega los Circuitos Integrados
Disco Magnético como medio de almacenamiento.
Compatibilidad de Información.
Multiprogramación y Aplicaciones
Instrumentación de Sistemas.
Programación y Computación
Evolución del Computador
Cuarta Generación (71 – hoy)
En base de Microprocesadores
Diseñados para Trabajar en Redes
Sistemas de Tratamiento de Datos.
Aparecen las Memorias Electrónicas.
Microcomputador y Generalización de Aplicaciones.
Programación y Computación
Evolución del Computador
Quinta Generación (Futuro)
Comunicación de Lenguaje Natural.
Maquinas Activadas por Voz.
Traducción entre lenguajes y autoaprendizaje.
Aumento en la capacidad de Almacenamiento.
Se inicia las ramas de Sistemas Expertos y Robótica
Programación y Computación
Introducción
Programación y Computación
1.21
Introducción
Programación y Computación
1.22
Introducción
Programación y Computación
1.23
Qué es la Informática
Informática (Del fr. informatique). 1. f. Conjunto de
conocimientos científicos y técnicas que hacen posible el
tratamiento automático de la información por medio de
ordenadores.
(Extraído del Diccionario de la RAE, 2016)
Computadora electrónica 1. f. Máquina electrónica digital,
dotada de una memoria de gran capacidad y de métodos de
tratamiento de la información, capaz de resolver problemas
matemáticos y lógicos mediante la utilización automática de
programas informáticos.
Programación y Computación
1.24
Qué es una computadora
Hardware (Voz ingl.).1. m. Software (Voz ingl.).1. m.
Inform. Conjunto de los Conjunto de programas,
componentes que integran la instrucciones y reglas
parte material de una informáticas para ejecutar
computadora. ciertas tareas en una
computadora.
Fundamentos de computadores Introducción a la programación
Programación y Computación
1.25
Qué es un Sistema Informático
SOFTWARE
ALGORITMOS
SISTEMA ORDENADOR
INFORMATICO
SOFTWARE
DATOS
INFORMACIÓN
HARDWARE
PROGRAMAS
Programación y Computación
1.26
Qué es un Sistema Informático
Es el conjunto que resulta de la integración de cuatro
elementos: Hardware, Software, Datos y Personas.
Estos componentes se relacionan haciendo posible el
procesamiento automático de los datos, a través de
ordenadores, para producir información útil.
Programación y Computación
Qué es un Sistema Informático
Programación y Computación
Qué es un Sistema Informático
Dato e información son dos términos que suelen confundirse
Datos.- Representación de algún hecho, concepto o entidad
real (los datos pueden tomar diferentes formas; por ejemplo,
palabras escritas o habladas, números y dibujos).
Información.- Implica datos procesados y organizados.
Sistema de procesamiento de información.- Es un sistema
que transforma datos brutos en información organizada,
significativa y útil.
Programación y Computación
Qué es un Sistema Informático
Sistema de Banca Electrónica
Reservas de pasajes
Sistemas Hospitalarios
Sistemas Bibliográficos
Lectura remota de datos
Procesos industriales en tiempo real
Control de inventarios en tiempo real
Programación y Computación
¿Qué entiende la computadora?
La computadora manipula únicamente información digital:
Datos e instrucciones se codifican como
dígitos binarios (0’s y 1’s)
¿Por qué no se usa una representación de otro tipo?
Problema tecnológico (es más fácil representar ceros y unos)
¿A qué nos conduce la solución adoptada para evitar el
problema tecnológico?
La máquina sólo puede trabajar con cadenas de ceros y unos
Programación y Computación
1.31
Lenguajes
Lenguaje es el empleo de notaciones, señales y vocales
(voz, palabras) para expresar ideas, comunicarse, y
establecer relaciones entre los seres humanos.
Un lenguaje no sólo consta de “palabras”, sino también de su
pronunciación y los métodos para combinar las palabras en
frases y oraciones; los lenguajes se forman mediante
combinaciones de palabras definidas en un diccionario
terminológico previamente establecido. Las combinaciones
posibles deben respetar un conjunto de reglas sintácticas
establecidas, a ello se le conoce con el nombre de Sintaxis.
Además, las palabras deben tener determinado sentido, deben
ser comprendidas por un grupo humano en un contexto dado,
a ello se le denomina Semántica.
Aunque existen muchas clasificaciones, en general se puede
distinguir entre dos clases de lenguajes: los lenguajes
naturales (ingles, alemán, español, etc.) y los lenguajes
artificiales o formales (matemático, lógico, computacional,
etc.).
Programación y Computación
Lenguaje máquina
a = (b + c)/(d + e)
x y
Pasos
sumar b y c, y guardar el resultado en una dirección de memoria
temporal X
sumar d y e, y guardar el resultado en una dirección de memoria
temporal Y
dividir el contenido de X por el de Y y guardar el resultado en la
dirección de memoria de a
Ejemplo de código máquina
codigoOp direccOp1 direccOp2 direccRes
Código de la suma Direcc. Temporal X
0000 00001000 00001100 00001110
0000 00011000 00011100 00011110
0101 00011110 00001110 00000100
Direcc. Temporal Y
Código de la división
Programación y Computación
1.33
Lenguaje máquina (cont.)
Inconvenientes
Grandes posibilidades de error
Portabilidad: máquina-dependiente
No se puede llevar el programa a otra máquina porque,
entre otras cosas, el repertorio de instrucciones es distinto
Tedioso
Nula capacidad de abstracción
Es muy complicado formular una solución a problemas del
mundo real con ese lenguaje tan específico
Programación y Computación
1.34
Lenguaje ensamblador
Lenguaje simbólico con una mínima capacidad de abstracción
Nombres nemotécnicos para los códigos de operación
Nombres simbólicos para las direcciones de memoria
Ejemplo de instrucción de código ensamblador
codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes
Códigos simbólicos de las operaciones
SUM = La suma
DIV = La división
a = (b + c)/(d + e)
SUM B, C, X
SUM D, E, Y
DIV X, Y, A
Programación y Computación
1.35
Lenguaje ensamblador (cont.)
Cuestiones
¿Cómo entiende la máquina el lenguaje ensamblador?
Si las direcciones de memoria son simbólicas ¿en qué
direcciones de memoria se colocan los datos?
Código fuente Programa ensamblador Código objeto
(lenguaje ensamblador) (lenguaje máquina)
Programa ensamblador
Traducción a código binario de códigos simbólicos de operación
Traducción de las direcciones simbólicas a direcciones reales de
memoria
Inconveniente: sigue siendo dependiente de la máquina
Programación y Computación
1.36
Lenguajes de alto nivel
Lenguaje que permite representar el mecanismo de
resolución de los problemas usando instrucciones
independientemente de la computadora
Cercanía conceptual al programador
Pascal, C, Java, etc. son lenguajes de alto nivel
Capacidad de abstracción
Abstracción procedimental (poder representar operaciones más
complejas como calcular las raíces de un polinomio)
Abstracción de datos (poder representar información más
compleja como el estado de una cuenta bancaria)
¿Cómo conseguir que la computadora “entienda” los
programas escritos en lenguajes de alto nivel?
Intérprete
Analiza el programa fuente y lo ejecuta directamente en la máquina
Compilador
Analiza el programa fuente y lo traduce a lenguaje máquina
Ej. Turbo C++ es un compilador de C++
Programación y Computación
1.37
Abstracción
Abstracción de datos
Tipos de datos
Elementales (HW)
• Enteros
• Reales
• Booleanos
• Caracteres
Nivel: de la máquina
Primitivos
Tipo básico
Proporcionados por el Hw
Programación y Computación
1.38
Abstracción
Abstracción de datos
Tipos de datos
Estructurados (LP)
• Arreglos
• Registros
Nivel: Del Lenguaje de Programación
Proporcionado por los LP
Con base en tipos elementales
Se utilizan constructores de tipo que pertenece al LP
Abstractos (U)
• Stacks
• Colas, etc
Nivel: Del usuario
Definidos por el usuario para enriquecer el LP
Programación y Computación
1.39
Abstracción
Abstracción de control
Lógica del código
Sentencias: Constructores de código que facilitan la programación
estructurada
• Asignación
• Decisión
• Iteración
Unidades de Programas
Permiten programación modular
Generalizan la noción de operador
Permiten encapsular parte de un algoritmo
Tienen una única definición
Tienen múltiples activaciones
Programación y Computación
1.40
Clasificación de los Lenguajes de Programación
Programación y Computación
1.41
Evolución de los Lenguajes de Programación
Programación y Computación
1.42
Lenguajes interpretados vs Lenguajes Compilados
Lenguaje Compilado
Un lenguaje compilado es término un tanto impreciso para
referirse a un lenguaje de programación que típicamente se
implementa mediante un compilador. Esto implica que una vez
escrito el programa, éste se traduce a partir de su código fuente
por medio de un compilador en un archivo ejecutable para una
determinada plataforma (por ejemplo Solaris para Sparc,
Windows NT para Intel, etc.). (Lenguaje Compilado - Wikipedia)
Programación y Computación
1.43
Lenguajes interpretados vs Lenguajes Compilados
Lenguaje Interpretado
Un lenguaje interpretado es aquel en el que las instrucciones se
traducen o interpretan una a una en tiempo de ejecución a un
lenguaje intermedio o lenguaje máquina o a través de una
máquina virtual, siendo típicamente unas 10 veces más lentos
que los programas compilados.(Adaptación de la definición en
Wikipedia)
Programación y Computación
1.44
Lenguajes de Programación
Programación y Computación
1.45
Ranking de los lenguajes de programación más utilizados en 2011
Según los datos del Índice Comunitario de Programación TIOBE,
ofrecemos el ranking con los lenguajes de programación más usados por los
desarrolladores.
Programación y Computación
1.46
Bibliografía
Norton, P. Introducción a la Computación. España: McGraw-Hill
Interamericana. 2014.
JOYANES AGUILAR, Luis. 2003. FUNDAMENTOS DE
PROGRAMACIÓN Algoritmos, Estructura de Datos y Objetos.
McGraw-Hill, Madrid.
DEITEL H., Deitel P. 2008. C++ Como programar. 6a Ed. Pearson.
Prentice-Hall. México. 1112 p.
1.47
Discusión, preguntas...
Programación y Computación
1.48