1
Clase de introducción
¿Qué es un ordenador?
Programas y algoritmos
Lenguajes de programación
Java
2
¿Qué es un ordenador?
Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de un grupo de instrucciones denominado programa
Componentes principales:
Procesador (CPU: Central Processing Unit)
Memoria (RAM: Random Access Memory)
Componentes auxiliares:
Disco duro
Lector CD-ROM
Teclado
Pantalla
etc.
3
Elementos de un ordenador
Memoria Principal
(RAM)
Unidad de
Control (CU)?
Unidad aritmetica
y logica (ALU)?
Programa
Dispositivos de entrada
Dispositivos de salida
Dispositivos de
almacenamiento de datos
teclado
ratón
pantalla
impresora
disco duro
lector/grabador de CD-ROM
lector/grabador de disquete
Procesador
(CPU)
(hardware)
4
Representación de los datos en el ordenador
El único código que entiende la CPU son los bits.
Los bits son representados en circuitos electrónicos que pueden estar en estado on (1) u off (0)
Las instrucciones se mandan a la CPU en forma de bytes, que son palabras de 8 bits
1 byte = 8 bits
1 kilobyte = 1 024 bytes
1 megabyte = 1 024 kilobytes = 1 048 576 bytes
5
Representación de los datos en el ordenador
Base 10:
Dígitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
1111 = 1*103 + 1*102 + 1*101 + 1*100
Base 2:
Dígitos = {0, 1}
1111 = 1*23 + 1*22 + 1*21 + 1*20 = 8 + 4 + 2 + 1 = 15
¿Cuántos valores puede representar un byte?
1 byte = 8 bits (Ej: 01100101)
Cada bit puede representar 2 valores (0 y 1)
Un byte puede representar 28 = 256 valores
6
Representación de textos
TEXTO: My name is Anders.
ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-46
18 bytes
7
Representación de imagen
División de la imagen en una matriz de pixels (unidad de la imagen)
Cada pixel asociado con un color
0 0 0 0 0 0 0 0
0 0 1 1 0 1 1 0
0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0
0 0 1 1 0 1 1 0
0 0 0 0 0 0 0 0
0 0 1 1 0 1 1 0
0 0 0 0 0 0 0 0
8
Representación de sonido
Discretización de la amplitud
Un byte para cada valor
(Gp:) 4 8 12 13 12 10 8
9
¿Qué es un programa?
Un programa es una secuencia de instrucciones a la CPU
Cada instrucción es un conjunto de bytes
Ejemplos de instrucciones:
Leer un dato del teclado
Guardar un dato en la memoria
Ejecutar una operación sobre dos datos
Mostrar un dato en la pantalla
etc.
10
Acceso a la memoria
(Gp:) 9
(Gp:) 8
(Gp:) 7
(Gp:) 6
(Gp:) 5
(Gp:) 4
(Gp:) 3
(Gp:) 2
(Gp:) 1
(Gp:) 15
(Gp:) 64
(Gp:) 32
(Gp:) 10
(Gp:) 0
(Gp:) 2
(Gp:) 45
(Gp:) 125
(Gp:) 12
RAM
CPU
11
Algoritmo
Un esquema para resolver cierto tipo de problema
Se puede traducir en un programa para ejecutarlo en un ordenador
Pasos para la resolución de un problema con ordenador:
Diseño de un algoritmo
Codificación de un programa
Ejecución y validación
12
Algoritmo
Componentes:
Entrada: datos del problema a resolver
Salida: el resultado de la resolución
Proceso: pasos a seguir para la resolución
Propiedades:
Preciso: orden estricto + expresiones precisas
Definido: con la misma entrada, siempre resulta la misma salida
Finito: número finito de pasos
13
Algoritmo 1
Problema: Sumar dos números
Solución:
Entrada: dos números
Salida: guardar la suma en la memoria y imprimirla por pantalla
Proceso:
Añadir los dos números
Guardar el resultado en la memoria
Imprimir el resultado por pantalla
14
Algoritmo 2
Problema: hacer una taza de té a la inglesa
Solución:
Entrada: agua, bolsa de té, leche, tetera, taza, cuchara
Salida: una taza de té a la inglesa
Proceso:
Poner la bolsa de té en la taza
Poner el agua a hervir en la tetera
Verter el agua hervida en la taza
Añadir leche
Remover
15
Algoritmo 3
Problema: averiguar la solvencia de un cliente que ejecuta un pedido a una fábrica.
Solución:
Entrada: el pedido
Salida: mensaje de aceptación o rechazo
Proceso:
Leer el pedido
Examinar la ficha del cliente
Si el cliente es solvente, aceptar pedido
En caso contrario, rechazar pedido
16
Lenguajes de programación
Lenguajes máquina
Lenguajes ensamblador
Lenguajes de alto nivel: C, C++, Visual Basic, Java, Pascal, Prolog, LISP,
17
Lenguajes máquina
Programas son secuencias de instrucciones compuestas de bytes:
16 29 156 9 82 75
Ventajas:
La CPU entiende estos programas
Desventajas:
Pensar en modo de 0s y 1s es muy difícil para nosotros
18
Lenguajes ensamblador
Instrucciones compuestas de palabras cortas y números:
LOD 15 6
LOD 16 8
ADD 15 16 17
JMP 10
Ventajas:
Más fácil a entender
Desventajas:
Todavía bastante abstracto
Necesita traducir el código a lenguajes máquina
19
Lenguajes de alto nivel
Diseñados para ser más parecidos a lenguaje natural
Ventajas:
Mucho más fácil de dar instrucciones
Desventajas:
Más complicado convertir en lenguajes máquina
20
Lenguajes de programación:¿Por qué hay tantos? ¿Cómo nacen, sobreviven y caducan?
Diferentes dominios de aplicación:
Programación de sistemas rapidez y acceso de bajo nivel: C
Inteligencia artificial computación simbólica: LISP, Prolog
Programación científica fórmulas matemáticas: Fortran
Negocios transacciones: COBOL
Uso específico: SQL (bases de datos), Perl (manipulación de textos), JavaScript (páginas web), Pascal (formación)
21
Lenguajes de programación:¿Por qué hay tantos? ¿Cómo nacen, sobreviven y caducan?
Diferentes necesidades:
Fiabilidad: Ada
Escabilidad, paradigma orientado a objeto: C ? C++
Portabilidad: Java
Evolución:
Mejora del hardware
Mejor comprensión de como reforzar criterios de legibilidad, facilidad de aprender y escribir, fiabilidad
Importancia de la estandardización
¡Número de usuarios!
22
Traductores de lenguaje: intérpretes
(Gp:) PROGRAMA FUENTE
(Gp:) INTERPRETE
(Gp:) EJECUCION DE LA(S)?
INSTRUCCION(ES)
INTERPRETADA(S)?
23
Traductores de lenguaje: compiladores
PROGRAMA FUENTE
COMPILADOR
ENLAZADOR
(binder, linker)
EJECUCION
Fase de compilación
Fase de ejecución
OPCION 1
programa
ejecutable
Fase de compilación
Fase de ejecución
OPCION 2
programa
objeto
24
Java
Se desarrolló en los comienzos de los años 1990
La intención era crear una herramienta para escribir programas cortos y efectivos
Ventajas:
Básico, fácil de entender
Portátil: el mismo código sirve para todos los sistemas operativos
Soporta interfaz gráfica de usuario (GUI)
Apropiado para programas en Internet
Desventajas:
La ejecución es más lenta que algunos otros lenguajes
25
Java
El código fuente se guarda en un archivo con extensión .java
Un compilador traduce el código fuente en código de byte, y lo guarda en un archivo con extensión .class
Las instrucciones son diferentes para diferentes sistemas operativos
Un intérprete específico al sistema operativo interpreta el código byte para ejecutar el programa
Un programa puede ser compuesto de varios archivos
26
La Máquina Virtual Java (JVM)?
PROGRAMA FUENTE
COMPILADOR JAVA
PROGRAMA OBJETO
.java
.class
Programa bytecode para JVM
INTERPRETE (JVM)
para Windows
INTERPRETE (JVM)
para Linux
INTERPRETE (JVM)
para Macintosh
WINDOWS
LINUX
MACINTOSH
27
Ejecución de un programa Java
HolaMundo.java
HolaMundo.class
javac HolaMundo.java
System.class
java HolaMundo
SISTEMA OPERATIVO
compilador Java
llamar a la JVM
crear el programa
en un editor
28
Componentes de un lenguaje
Sintaxis (gramática): reglas que determinan de manera estricta el vocabulario, orden y formato de las instrucciones permitidas
Errores sintácticos: el programa no compila y/o no se puede interpretar
Semántica (sentido): el programa, al ejecutarlo, produce el resultado correcto que uno quiere
29
Errores de programación
Modificar o crear un
archivo .java
Editar para
corregir errores
(Gp:) Compilar
Ejecutar programa
Depurar
(debugging)?
errores de compilación (sintaxis)?
no hay errores
errores de ejecución (semántica)?