SlideShare una empresa de Scribd logo
1 de 28
Instituto de Educación Superior Pedagógico
Público
“Gamaniel Blanco Murillo”
Computación e Informática
Lenguaje de Programación I
Fundamentos de la programación
1
HéctorLópezSánchez
¿Es la Informática una ciencia? ¿Una disciplina de ingeniería?
¿O simplemente una tecnología, una invención, un proveedor
de dispositivos informáticos? ¿Cuál es el fundamento intelectual
de la disciplina? ¿Es algo pasajero o se diluirá en una generación?
Informe de 1989 del Task Force on the Core of Computer Science
Informática
Conjunto de conocimientos científicos y técnicas
que hacen posible el tratamiento automático de
la información por medio de ordenadores.
(Diccionario de la R.A.E.)
Ciencia de la computación.
Página 1Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
¿Ordenador? ¿Computador? ¿Computadora?
Computadora (RAE)
Máquina electrónica, analógica o 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 ejecución de programas informáticos.
De propósito general o de propósito específico.
Las computadoras han transformado nuestra sociedad.
Página 2Lenguaje de Programación I - Fundamentos de la Programación
¡Miles de millones de cálculos por segundo!
HéctorLópezSánchez
Las computadoras hoy están en todas partes
Página 3Lenguaje de Programación I - Fundamentos de la Programación
¡Con múltiples formas distintas de un PC!
HéctorLópezSánchez
Programación de computadoras
 Indicar a la computadora qué es lo que tiene que hacer.
Programa
 Secuencia de instrucciones.
 Instrucciones que entiende la computadora.
 Y que persiguen un objetivo: ¡resolver un problema!
Hardware: Conjunto de los componentes que integran
la parte material de una computadora.
Software: Conjunto de programas, instrucciones y reglas
informáticas para ejecutar tareas en una computadora.
Página 4Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
El hardware sin software no sirve para nada.
Los programadores escriben código para que el hardware haga algo útil.
Imagen distorsionada.
Trabajo en equipo: diversos roles...
 Gestores
 Analistas
 Diseñadores
 Programadores
 Probadores
 Administradores de sistemas
 Etcétera
Página 5Lenguaje de Programación I - Fundamentos de la Programación
Parque Jurásico
HéctorLópezSánchez
Esquema general
Página 6Lenguaje de Programación I - Fundamentos de la Programación
Memoria
temporal
Almacenamiento
permanente
Dispositivos
de entrada
Teclado
Ratón
Escáner
Táctil
…
Dispositivos
de salida
Monitor
Impresora
Altavoz
…
Unidad Central de Proceso
Central Processor Unit
C.P.U.
HéctorLópezSánchez
La arquitectura de Von Neumann
Página 7Lenguaje de Programación I - Fundamentos de la Programación
C.P.U. (Procesador)
Dispositivos de E/S
Memoria
A.L.U.
Unidad Aritmético-Lógica
Unidad de Control
Una ALU de 2 bits (Wikipedia)
HéctorLópezSánchez
Unidad Central de Proceso (CPU)
Página 8Lenguaje de Programación I - Fundamentos de la Programación
CPU (Procesador)
ALU (Unidad Aritmético-Lógica) Unidad de Control
Contador de programa
Instrucción
Registro A
Registro B
Registro C
Registro D
Registro E
Bus de datos
Registro R
Registros de 8 / 16 / 32 / 64 bits
Registro 1 Registro 2
HéctorLópezSánchez
La memoria
Página 9Lenguaje de Programación I - Fundamentos de la Programación
Memoria
Bus
de
datos
01
02
03
04
05
06
07
08
. . .
Dirección
Cada celda tiene
una dirección asociada.
Celdas de 8 / 16 / 32 / 64 bits
Información volátil.
1 Bit = 0 / 1
1 Byte = 8 bits = 1 carácter / nº (0-255)
1 Kilobyte (KB) = 1024 Bytes
1 Megabyte (MB) = 1024 KB
1 Gigabyte (GB) = 1024 MB
1 Terabyte (TB) = 1024 GB
1 Petabyte (PB) = 1024 TB
210 = 1024
HéctorLópezSánchez
Los procesadores trabajan con ceros y unos
 La unidad de memoria básica: Byte (8 bits).
2 dígitos hexadecimales: 01011011  0101 1011  5B
 Lenguaje máquina:
Códigos hexadecimales que representan instrucciones,
registros de la CPU, direcciones de memoria o datos.
Programa: secuencia de códigos que instruyen a la CPU.
Instrucción Significado
A0 2F Acceder a la posición de memoria 2F
3E 01 Copiar el dato en el registro 1 de la ALU
A0 30 Acceder a la posición de memoria 30
3E 02 Copiar el dato en el registro 2 de la ALU
1D Sumar
B3 31 Guardar el resultado en memoria (31)
Página 10Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
Página 11Lenguaje de Programación I - Fundamentos de la Programación
CPU (Procesador)
ALU UC
01
Bus de datos
C.P.
Inst.
Memoria
01 A0
02 2F
03 3E
04 01
05 A0
06 30
07 3E
08 02
09 1D
0A B3
0B 31
. . .
01
2D
2E
2F 03
30 05
31
32
33
34
. . .
Programa
en memoria
Dir.
Contador de programa
HéctorLópezSánchez
 Lenguaje de programación de bajo nivel.
Nulo nivel de abstracción: los códigos contienen los ceros y unos
que gobiernan directamente los circuitos de la CPU.
 Totalmente dependiente de la máquina.
Cada familia de procesadores usa sus propios códigos,
distintos de los de otras familias.
 Programación: muy tediosa.
Página 12Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
 Nemotécnicos para los códigos hexadecimales que representan
instrucciones:
A0  READ 3E  REG 1D  ADD …
 Mayor legibilidad:
READ 2F
REG 01
READ 30
REG 02
ADD
WRITE 31
 Lenguaje de nivel medio.
Página 13Lenguaje de Programación I - Fundamentos de la Programación
Código objeto
(lenguaje máquina)
Programa ensamblador
Código fuente
(lenguaje ensamblador)
HéctorLópezSánchez
 Más cercanos a los lenguajes natural y matemático.
resultado = dato1 + dato2;
 Mayor legibilidad, mayor facilidad de codificación.
 Estructuración de datos / abstracción procedimental
Página 14Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
Traducción
Compiladores:
Compilan y enlazan
programas completos.
Intérpretes:
Compilan, enlazan
y ejecutan instrucción
a instrucción.
Página 15Lenguaje de Programación I - Fundamentos de la Programación
Compilador
Enlazador
Código
objeto de
biblioteca
Código fuente
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl;
return 0;
}
Código objeto 0100010100111010011100…
Programa
ejecutable
Para una arquitectura concreta
y un Sistema Operativo concreto
HéctorLópezSánchez
Genealogía de lenguajes
Página 16Lenguaje de Programación I - Fundamentos de la Programación
BASIC
1964
Logo
1968
Ruby
1993
Python
1991
Eiffel
1986
Modula
1975
Fuente: http://www.levenez.com/lang/
Versiones / Estándares
Prolog
1970
Haskell
1987
C#
2000
Java
1995C++
1983
Smalltalk
1971
Scheme
1975
PL/I
1964
Simula
1964
Ada
1979
C
1971
Pascal
1970
CPL
1963
COBOL
1959
ALGOL
1958
FORTRAN
1954
Lisp
1958
HéctorLópezSánchez
Funcionalidad básica de la computadora
Software básico encargado de manejar el hardware y facilitar el
trabajo a los programas de aplicación, proporcionándoles un
conjunto de servicios genéricos.
— Asignación de tiempos de CPU.
— Control y asignación racional de los recursos de la computadora.
— Ejecución de programas.
— Control de la Entrada/Salida
(por ejemplo, almacenar/recuperar en/de memoria permanente).
— Control de errores y protección
(por ejemplo, monitorizar la ejecución de un programa).
— Interfaz con el usuario.
...
Página 17Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
La prehistoria
Del ábaco a las máquinas de calcular
Siglo XIX
Máquina analítica de Charles Babbage
Página 18Lenguaje de Programación I - Fundamentos de la Programación
La Pascalina (Wikipedia)
Lady Ada Lovelace
es considerada
la primera
programadora.
Álgebra de Boole
HéctorLópezSánchez
Siglo XX
1946 ENIAC: Primera computadora digital
de propósito general
1945 Modelo de Von Neumann
1947 Se inventa el transistor
1953 IBM 650: Primera computadora
a escala industrial
1954 Lenguaje FORTRAN
1960 Lenguajes COBOL y ALGOL
1964 IBM 360 (tercera generación)
1966 ARPANET: Origen de Internet
Página 19Lenguaje de Programación I - Fundamentos de la Programación
ENIAC (Wikipedia)
IBM 360 (Wikipedia)
heedmane.files.wordpress.com
HéctorLópezSánchez
Siglo XX
1967 El disquete
1968 Nace la empresa Intel
1970 Sistema operativo UNIX.
Lenguaje de programación Pascal.
1972 Primer virus informático (Creeper).
Lenguaje de programación C.
1974 Nace el protocolo TCP.
Primera red local.
1975 Se funda Microsoft.
1976 Se funda Apple.
Página 20Lenguaje de Programación I - Fundamentos de la Programación
Intel Corp. (Wikipedia)
Appel II (Wikipedia)
HéctorLópezSánchez
Siglo XX
1979 Se crea el juego Pacman.
1981 Nace el IBM PC.
Sistema operativo MS-DOS.
1983 Microsoft Word 1.0.
Lenguaje de programación C++.
1984 CD-ROM.
1985 Windows 1.0.
Lenguaje de programación Eiffel.
1990 Nace el lenguaje HTML y la World Wide Web.
1991 Sistema operativo Linux.
1992 Windows 3.1.
Página 21Lenguaje de Programación I - Fundamentos de la Programación
IBM PC (Wikipedia)
Linux
HéctorLópezSánchez
Siglo XX
1993 Windows NT.
1994 Netscape Navigator.
1995 Windows 95.
Lenguaje de programación Java.
DVD.
1998 Windows 98.
Se funda Google.
1999 MSN Messenger.
2000 Windows 2000/Me.
Página 22Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
Siglo XXI
2001 Lenguaje de programación C#.
Windows XP.
Mac OS X.
2002 Mozilla Firefox.
2005 Youtube.
2006 Windows Vista.
2007 iPhone.
2008 Android.
2009 Windows 7.
2010 iPad
. . .
Página 23Lenguaje de Programación I - Fundamentos de la Programación
HéctorLópezSánchez
¿Qué es programar?
Decirle a un tonto muy rápido exactamente lo que tiene que hacer.
Especificar la estructura y el comportamiento de un programa,
así como probar que el programa realiza su tarea adecuadamente
y con un rendimiento aceptable.
¡No hay que olvidarse de comprobar que funciona!
Programa: Transforma entrada en salida
Algoritmo: Secuencia de pasos y operaciones que debe realizar
el programa para resolver el problema.
El programa implementa el algoritmo en un lenguaje concreto.
Página 24Lenguaje de Programación I - Fundamentos de la Programación
ProgramaEntrada Salida
HéctorLópezSánchez
La programación es sólo una etapa del proceso de desarrollo.
El modelo de desarrollo “en cascada”:
Página 25Lenguaje de Programación I - Fundamentos de la Programación
Mantenimiento
Prueba y depuración
Programación
Diseño
Análisis
Planificación Recursos necesarios, presupuesto, plan, …
¿Qué?
¿Cómo?
Implementación
HéctorLópezSánchez
Análisis
Quiero 3 habitaciones,
2 baños, garaje, ...
¿Qué tiene que hacer
exactamente el software?
Página 26Lenguaje de Programación I - Fundamentos de la Programación
Casa Software
Diseño
Planos, diseño circuito
eléctrico y de agua, ...
¿Cómo vamos a
organizar el software?
¿Qué hará cada parte?
ProgramaciónSe construye la casa. Se construye el software.
Prueba
Se comprueba la solidez de la
estructura, el funcionamiento de
las instalaciones, el acabado, ...
Ponemos a prueba nuestro
software, incluso en
situaciones límite.
Mantenimiento
Algunas reformas: se cierra
la terraza, se instala aire
acondicionado, ...
Pequeñas modificaciones o
correcciones, actualizaciones,
etc...
HéctorLópezSánchez
Elementos de un lenguaje
 Instrucciones.
 Datos: literales, variables, tipos.
 Subprogramas (funciones).
 Comentarios.
 Directivas.
Lenguaje de Programación I - Fundamentos de la Programación Página 27
#include <iostream>
using namespace std;
int main()
{
cout << "¡Hola Mundo!" << endl; // Muestra Hola Mundo!
return 0;
}
Directiva
Subprograma
Comentario
Instrucción
Instrucción
Dato
Dato

Más contenido relacionado

La actualidad más candente

La actualidad más candente (13)

Vanecompuuuuuuuuuuuuuuuu2
Vanecompuuuuuuuuuuuuuuuu2Vanecompuuuuuuuuuuuuuuuu2
Vanecompuuuuuuuuuuuuuuuu2
 
PIPPIN
PIPPINPIPPIN
PIPPIN
 
H Ardware Y Software
H Ardware Y SoftwareH Ardware Y Software
H Ardware Y Software
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
estudiante
estudianteestudiante
estudiante
 
Expo teclado
Expo tecladoExpo teclado
Expo teclado
 
5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas
 
Clase 1
Clase 1Clase 1
Clase 1
 
Slideshard deisy
Slideshard deisySlideshard deisy
Slideshard deisy
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Michael guti
Michael gutiMichael guti
Michael guti
 
Curso plataforma arduino......
Curso plataforma arduino......Curso plataforma arduino......
Curso plataforma arduino......
 
Taller postgrado
Taller postgradoTaller postgrado
Taller postgrado
 

Destacado

Destacado (20)

Vaibhav (2)
Vaibhav (2)Vaibhav (2)
Vaibhav (2)
 
Trabajo final (1)
Trabajo final (1)Trabajo final (1)
Trabajo final (1)
 
Composición visual
Composición visualComposición visual
Composición visual
 
Asignatura
AsignaturaAsignatura
Asignatura
 
Presentación 1
Presentación 1Presentación 1
Presentación 1
 
Trabajo final (1)
Trabajo final (1)Trabajo final (1)
Trabajo final (1)
 
What is information: And what do we do about it?
What is information:  And what do we do about it?What is information:  And what do we do about it?
What is information: And what do we do about it?
 
Karya ilmiah
Karya ilmiahKarya ilmiah
Karya ilmiah
 
Ontstaan stad
Ontstaan stadOntstaan stad
Ontstaan stad
 
Ppt final (1)
Ppt final (1)Ppt final (1)
Ppt final (1)
 
Pruebas de evaluación del lenguaje
Pruebas de evaluación del lenguajePruebas de evaluación del lenguaje
Pruebas de evaluación del lenguaje
 
Sociologia para principiantes
Sociologia para principiantesSociologia para principiantes
Sociologia para principiantes
 
Correo sit
Correo  sitCorreo  sit
Correo sit
 
はっぴょうかい 2
はっぴょうかい 2はっぴょうかい 2
はっぴょうかい 2
 
Karcher k 4 compact
Karcher k 4 compactKarcher k 4 compact
Karcher k 4 compact
 
Bailes tipicos de Lima
Bailes tipicos de LimaBailes tipicos de Lima
Bailes tipicos de Lima
 
Davidson centrifugal finishing
Davidson centrifugal finishingDavidson centrifugal finishing
Davidson centrifugal finishing
 
Dia del trabajo
Dia del trabajoDia del trabajo
Dia del trabajo
 
Extreme Problems - Need a solution ?
Extreme Problems - Need a solution ?Extreme Problems - Need a solution ?
Extreme Problems - Need a solution ?
 
Reforma ortográfica acentuação gráfica tabela traz regras já de acordo com ...
Reforma ortográfica  acentuação gráfica  tabela traz regras já de acordo com ...Reforma ortográfica  acentuação gráfica  tabela traz regras já de acordo com ...
Reforma ortográfica acentuação gráfica tabela traz regras já de acordo com ...
 

Similar a Fp01

Presentacion_Programacion.pptx
Presentacion_Programacion.pptxPresentacion_Programacion.pptx
Presentacion_Programacion.pptxMaudilioMorales
 
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIAARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIAIsaias Castro
 
introduccion computadoras
introduccion computadorasintroduccion computadoras
introduccion computadorasPiCeGo
 
Introducción a las Computadoras
Introducción a las ComputadorasIntroducción a las Computadoras
Introducción a las ComputadorasPiCeGo
 
fundamentos de la programación, Introducción a la ciencia de la computación y...
fundamentos de la programación, Introducción a la ciencia de la computación y...fundamentos de la programación, Introducción a la ciencia de la computación y...
fundamentos de la programación, Introducción a la ciencia de la computación y...19025409
 
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfAprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfPablo Narvaez
 
02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdfNancyHerrera88
 
Fase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion newFase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion newINGJOINER
 
El Computador Y Sus Partes
El Computador Y Sus PartesEl Computador Y Sus Partes
El Computador Y Sus Partesandreacamargo
 
Microsoft Windows - Universidad Continental
Microsoft Windows - Universidad ContinentalMicrosoft Windows - Universidad Continental
Microsoft Windows - Universidad ContinentalCarlos Daviran
 

Similar a Fp01 (20)

Presentacion_Programacion.pptx
Presentacion_Programacion.pptxPresentacion_Programacion.pptx
Presentacion_Programacion.pptx
 
Tema1
Tema1Tema1
Tema1
 
Tema1.ppt
Tema1.pptTema1.ppt
Tema1.ppt
 
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIAARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
 
FP01 (1).pptx
FP01 (1).pptxFP01 (1).pptx
FP01 (1).pptx
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
introduccion computadoras
introduccion computadorasintroduccion computadoras
introduccion computadoras
 
Introducción a las Computadoras
Introducción a las ComputadorasIntroducción a las Computadoras
Introducción a las Computadoras
 
fundamentos de la programación, Introducción a la ciencia de la computación y...
fundamentos de la programación, Introducción a la ciencia de la computación y...fundamentos de la programación, Introducción a la ciencia de la computación y...
fundamentos de la programación, Introducción a la ciencia de la computación y...
 
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfAprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
 
02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdf
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programación
 
Fase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion newFase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion new
 
Informatica diapo
Informatica diapoInformatica diapo
Informatica diapo
 
Lenguaje de Programación
Lenguaje de ProgramaciónLenguaje de Programación
Lenguaje de Programación
 
El Computador Y Sus Partes
El Computador Y Sus PartesEl Computador Y Sus Partes
El Computador Y Sus Partes
 
Introduccion_a_la_programacion.pdf
Introduccion_a_la_programacion.pdfIntroduccion_a_la_programacion.pdf
Introduccion_a_la_programacion.pdf
 
Microsoft Windows - Universidad Continental
Microsoft Windows - Universidad ContinentalMicrosoft Windows - Universidad Continental
Microsoft Windows - Universidad Continental
 
Teoria
TeoriaTeoria
Teoria
 
Teoria
TeoriaTeoria
Teoria
 

Fp01

  • 1. Instituto de Educación Superior Pedagógico Público “Gamaniel Blanco Murillo” Computación e Informática Lenguaje de Programación I Fundamentos de la programación 1
  • 2. HéctorLópezSánchez ¿Es la Informática una ciencia? ¿Una disciplina de ingeniería? ¿O simplemente una tecnología, una invención, un proveedor de dispositivos informáticos? ¿Cuál es el fundamento intelectual de la disciplina? ¿Es algo pasajero o se diluirá en una generación? Informe de 1989 del Task Force on the Core of Computer Science Informática Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores. (Diccionario de la R.A.E.) Ciencia de la computación. Página 1Lenguaje de Programación I - Fundamentos de la Programación
  • 3. HéctorLópezSánchez ¿Ordenador? ¿Computador? ¿Computadora? Computadora (RAE) Máquina electrónica, analógica o 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 ejecución de programas informáticos. De propósito general o de propósito específico. Las computadoras han transformado nuestra sociedad. Página 2Lenguaje de Programación I - Fundamentos de la Programación ¡Miles de millones de cálculos por segundo!
  • 4. HéctorLópezSánchez Las computadoras hoy están en todas partes Página 3Lenguaje de Programación I - Fundamentos de la Programación ¡Con múltiples formas distintas de un PC!
  • 5. HéctorLópezSánchez Programación de computadoras  Indicar a la computadora qué es lo que tiene que hacer. Programa  Secuencia de instrucciones.  Instrucciones que entiende la computadora.  Y que persiguen un objetivo: ¡resolver un problema! Hardware: Conjunto de los componentes que integran la parte material de una computadora. Software: Conjunto de programas, instrucciones y reglas informáticas para ejecutar tareas en una computadora. Página 4Lenguaje de Programación I - Fundamentos de la Programación
  • 6. HéctorLópezSánchez El hardware sin software no sirve para nada. Los programadores escriben código para que el hardware haga algo útil. Imagen distorsionada. Trabajo en equipo: diversos roles...  Gestores  Analistas  Diseñadores  Programadores  Probadores  Administradores de sistemas  Etcétera Página 5Lenguaje de Programación I - Fundamentos de la Programación Parque Jurásico
  • 7. HéctorLópezSánchez Esquema general Página 6Lenguaje de Programación I - Fundamentos de la Programación Memoria temporal Almacenamiento permanente Dispositivos de entrada Teclado Ratón Escáner Táctil … Dispositivos de salida Monitor Impresora Altavoz … Unidad Central de Proceso Central Processor Unit C.P.U.
  • 8. HéctorLópezSánchez La arquitectura de Von Neumann Página 7Lenguaje de Programación I - Fundamentos de la Programación C.P.U. (Procesador) Dispositivos de E/S Memoria A.L.U. Unidad Aritmético-Lógica Unidad de Control Una ALU de 2 bits (Wikipedia)
  • 9. HéctorLópezSánchez Unidad Central de Proceso (CPU) Página 8Lenguaje de Programación I - Fundamentos de la Programación CPU (Procesador) ALU (Unidad Aritmético-Lógica) Unidad de Control Contador de programa Instrucción Registro A Registro B Registro C Registro D Registro E Bus de datos Registro R Registros de 8 / 16 / 32 / 64 bits Registro 1 Registro 2
  • 10. HéctorLópezSánchez La memoria Página 9Lenguaje de Programación I - Fundamentos de la Programación Memoria Bus de datos 01 02 03 04 05 06 07 08 . . . Dirección Cada celda tiene una dirección asociada. Celdas de 8 / 16 / 32 / 64 bits Información volátil. 1 Bit = 0 / 1 1 Byte = 8 bits = 1 carácter / nº (0-255) 1 Kilobyte (KB) = 1024 Bytes 1 Megabyte (MB) = 1024 KB 1 Gigabyte (GB) = 1024 MB 1 Terabyte (TB) = 1024 GB 1 Petabyte (PB) = 1024 TB 210 = 1024
  • 11. HéctorLópezSánchez Los procesadores trabajan con ceros y unos  La unidad de memoria básica: Byte (8 bits). 2 dígitos hexadecimales: 01011011  0101 1011  5B  Lenguaje máquina: Códigos hexadecimales que representan instrucciones, registros de la CPU, direcciones de memoria o datos. Programa: secuencia de códigos que instruyen a la CPU. Instrucción Significado A0 2F Acceder a la posición de memoria 2F 3E 01 Copiar el dato en el registro 1 de la ALU A0 30 Acceder a la posición de memoria 30 3E 02 Copiar el dato en el registro 2 de la ALU 1D Sumar B3 31 Guardar el resultado en memoria (31) Página 10Lenguaje de Programación I - Fundamentos de la Programación
  • 12. HéctorLópezSánchez Página 11Lenguaje de Programación I - Fundamentos de la Programación CPU (Procesador) ALU UC 01 Bus de datos C.P. Inst. Memoria 01 A0 02 2F 03 3E 04 01 05 A0 06 30 07 3E 08 02 09 1D 0A B3 0B 31 . . . 01 2D 2E 2F 03 30 05 31 32 33 34 . . . Programa en memoria Dir. Contador de programa
  • 13. HéctorLópezSánchez  Lenguaje de programación de bajo nivel. Nulo nivel de abstracción: los códigos contienen los ceros y unos que gobiernan directamente los circuitos de la CPU.  Totalmente dependiente de la máquina. Cada familia de procesadores usa sus propios códigos, distintos de los de otras familias.  Programación: muy tediosa. Página 12Lenguaje de Programación I - Fundamentos de la Programación
  • 14. HéctorLópezSánchez  Nemotécnicos para los códigos hexadecimales que representan instrucciones: A0  READ 3E  REG 1D  ADD …  Mayor legibilidad: READ 2F REG 01 READ 30 REG 02 ADD WRITE 31  Lenguaje de nivel medio. Página 13Lenguaje de Programación I - Fundamentos de la Programación Código objeto (lenguaje máquina) Programa ensamblador Código fuente (lenguaje ensamblador)
  • 15. HéctorLópezSánchez  Más cercanos a los lenguajes natural y matemático. resultado = dato1 + dato2;  Mayor legibilidad, mayor facilidad de codificación.  Estructuración de datos / abstracción procedimental Página 14Lenguaje de Programación I - Fundamentos de la Programación
  • 16. HéctorLópezSánchez Traducción Compiladores: Compilan y enlazan programas completos. Intérpretes: Compilan, enlazan y ejecutan instrucción a instrucción. Página 15Lenguaje de Programación I - Fundamentos de la Programación Compilador Enlazador Código objeto de biblioteca Código fuente #include <iostream> using namespace std; int main() { cout << "Hola Mundo!" << endl; return 0; } Código objeto 0100010100111010011100… Programa ejecutable Para una arquitectura concreta y un Sistema Operativo concreto
  • 17. HéctorLópezSánchez Genealogía de lenguajes Página 16Lenguaje de Programación I - Fundamentos de la Programación BASIC 1964 Logo 1968 Ruby 1993 Python 1991 Eiffel 1986 Modula 1975 Fuente: http://www.levenez.com/lang/ Versiones / Estándares Prolog 1970 Haskell 1987 C# 2000 Java 1995C++ 1983 Smalltalk 1971 Scheme 1975 PL/I 1964 Simula 1964 Ada 1979 C 1971 Pascal 1970 CPL 1963 COBOL 1959 ALGOL 1958 FORTRAN 1954 Lisp 1958
  • 18. HéctorLópezSánchez Funcionalidad básica de la computadora Software básico encargado de manejar el hardware y facilitar el trabajo a los programas de aplicación, proporcionándoles un conjunto de servicios genéricos. — Asignación de tiempos de CPU. — Control y asignación racional de los recursos de la computadora. — Ejecución de programas. — Control de la Entrada/Salida (por ejemplo, almacenar/recuperar en/de memoria permanente). — Control de errores y protección (por ejemplo, monitorizar la ejecución de un programa). — Interfaz con el usuario. ... Página 17Lenguaje de Programación I - Fundamentos de la Programación
  • 19. HéctorLópezSánchez La prehistoria Del ábaco a las máquinas de calcular Siglo XIX Máquina analítica de Charles Babbage Página 18Lenguaje de Programación I - Fundamentos de la Programación La Pascalina (Wikipedia) Lady Ada Lovelace es considerada la primera programadora. Álgebra de Boole
  • 20. HéctorLópezSánchez Siglo XX 1946 ENIAC: Primera computadora digital de propósito general 1945 Modelo de Von Neumann 1947 Se inventa el transistor 1953 IBM 650: Primera computadora a escala industrial 1954 Lenguaje FORTRAN 1960 Lenguajes COBOL y ALGOL 1964 IBM 360 (tercera generación) 1966 ARPANET: Origen de Internet Página 19Lenguaje de Programación I - Fundamentos de la Programación ENIAC (Wikipedia) IBM 360 (Wikipedia) heedmane.files.wordpress.com
  • 21. HéctorLópezSánchez Siglo XX 1967 El disquete 1968 Nace la empresa Intel 1970 Sistema operativo UNIX. Lenguaje de programación Pascal. 1972 Primer virus informático (Creeper). Lenguaje de programación C. 1974 Nace el protocolo TCP. Primera red local. 1975 Se funda Microsoft. 1976 Se funda Apple. Página 20Lenguaje de Programación I - Fundamentos de la Programación Intel Corp. (Wikipedia) Appel II (Wikipedia)
  • 22. HéctorLópezSánchez Siglo XX 1979 Se crea el juego Pacman. 1981 Nace el IBM PC. Sistema operativo MS-DOS. 1983 Microsoft Word 1.0. Lenguaje de programación C++. 1984 CD-ROM. 1985 Windows 1.0. Lenguaje de programación Eiffel. 1990 Nace el lenguaje HTML y la World Wide Web. 1991 Sistema operativo Linux. 1992 Windows 3.1. Página 21Lenguaje de Programación I - Fundamentos de la Programación IBM PC (Wikipedia) Linux
  • 23. HéctorLópezSánchez Siglo XX 1993 Windows NT. 1994 Netscape Navigator. 1995 Windows 95. Lenguaje de programación Java. DVD. 1998 Windows 98. Se funda Google. 1999 MSN Messenger. 2000 Windows 2000/Me. Página 22Lenguaje de Programación I - Fundamentos de la Programación
  • 24. HéctorLópezSánchez Siglo XXI 2001 Lenguaje de programación C#. Windows XP. Mac OS X. 2002 Mozilla Firefox. 2005 Youtube. 2006 Windows Vista. 2007 iPhone. 2008 Android. 2009 Windows 7. 2010 iPad . . . Página 23Lenguaje de Programación I - Fundamentos de la Programación
  • 25. HéctorLópezSánchez ¿Qué es programar? Decirle a un tonto muy rápido exactamente lo que tiene que hacer. Especificar la estructura y el comportamiento de un programa, así como probar que el programa realiza su tarea adecuadamente y con un rendimiento aceptable. ¡No hay que olvidarse de comprobar que funciona! Programa: Transforma entrada en salida Algoritmo: Secuencia de pasos y operaciones que debe realizar el programa para resolver el problema. El programa implementa el algoritmo en un lenguaje concreto. Página 24Lenguaje de Programación I - Fundamentos de la Programación ProgramaEntrada Salida
  • 26. HéctorLópezSánchez La programación es sólo una etapa del proceso de desarrollo. El modelo de desarrollo “en cascada”: Página 25Lenguaje de Programación I - Fundamentos de la Programación Mantenimiento Prueba y depuración Programación Diseño Análisis Planificación Recursos necesarios, presupuesto, plan, … ¿Qué? ¿Cómo? Implementación
  • 27. HéctorLópezSánchez Análisis Quiero 3 habitaciones, 2 baños, garaje, ... ¿Qué tiene que hacer exactamente el software? Página 26Lenguaje de Programación I - Fundamentos de la Programación Casa Software Diseño Planos, diseño circuito eléctrico y de agua, ... ¿Cómo vamos a organizar el software? ¿Qué hará cada parte? ProgramaciónSe construye la casa. Se construye el software. Prueba Se comprueba la solidez de la estructura, el funcionamiento de las instalaciones, el acabado, ... Ponemos a prueba nuestro software, incluso en situaciones límite. Mantenimiento Algunas reformas: se cierra la terraza, se instala aire acondicionado, ... Pequeñas modificaciones o correcciones, actualizaciones, etc...
  • 28. HéctorLópezSánchez Elementos de un lenguaje  Instrucciones.  Datos: literales, variables, tipos.  Subprogramas (funciones).  Comentarios.  Directivas. Lenguaje de Programación I - Fundamentos de la Programación Página 27 #include <iostream> using namespace std; int main() { cout << "¡Hola Mundo!" << endl; // Muestra Hola Mundo! return 0; } Directiva Subprograma Comentario Instrucción Instrucción Dato Dato