Escolar Documentos
Profissional Documentos
Cultura Documentos
Programación/Programación I
Administración
• Evaluación:
Prácticas: 40%
Controles: 20%
Examen final: 40%
• Las prácticas se hacen en grupos de dos
• Después de cada dos prácticas hay un control en
clase sobre el conocimiento de estas prácticas
(últimos 15 minutos de teoría)
2
Clase de introducción
1. ¿Qué es un ordenador?
2. Programas y algoritmos
3. Lenguajes de programación
4. Java
3
¿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.
4
Elementos de un ordenador
(hardware)
6
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
7
Representación de textos
9
Representación de sonido
4 8 12 13 12 10 8…
• Discretización de la amplitud
• Un byte para cada valor
10
¿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.
11
Acceso a la memoria
RAM
1 12
2 125
3 45
4 2
5 0
CPU
6 10
7 32
8 64
9 15
12
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:
1. Diseño de un algoritmo
2. Codificación de un programa
3. Ejecución y validación
13
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
14
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:
1) Añadir los dos números
2) Guardar el resultado en la memoria
3) Imprimir el resultado por pantalla
15
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:
1. Poner la bolsa de té en la taza
2. Poner el agua a hervir en la tetera
3. Verter el agua hervida en la taza
4. Añadir leche
5. Remover
16
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:
1. Leer el pedido
2. Examinar la ficha del cliente
3. Si el cliente es solvente, aceptar pedido
4. En caso contrario, rechazar pedido
17
Lenguajes de programación
• Lenguajes máquina
• Lenguajes ensamblador
• Lenguajes de alto nivel: C, C++, Visual Basic, Java,
Pascal, Prolog, LISP,…
18
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 0’s y 1’s es muy difícil para nosotros
19
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
20
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
21
Lenguajes de programación:
¿Por qué hay tantos?
¿Cómo nacen, sobreviven y caducan?
1. 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)
22
Lenguajes de programación:
¿Por qué hay tantos?
¿Cómo nacen, sobreviven y caducan?
2. Diferentes necesidades:
• Fiabilidad: Ada
• Escabilidad, paradigma orientado a objeto: C C++
• Portabilidad: Java
3. Evolución:
• Mejora del hardware
• Mejor comprensión de como reforzar criterios de
legibilidad, facilidad de aprender y escribir,
fiabilidad…
4. Importancia de la estandardización
5. ¡Número de usuarios! 23
Traductores de lenguaje:
intérpretes
PROGRAMA FUENTE
INTERPRETE
EJECUCION DE LA(S)
INSTRUCCION(ES)
INTERPRETADA(S)
24
Traductores de lenguaje:
compiladores
OPCION 1 OPCION 2
PROGRAMA FUENTE
Fase de compilación
Fase de ejecución
EJECUCION
25
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
26
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
27
La Máquina Virtual Java (JVM)
PROGRAMA FUENTE
.java
COMPILADOR JAVA
HolaMundo.class System.class
30
Errores de programación
Modificar o crear un
archivo .java
Compilar
errores de compilación (sintaxis) Editar para
corregir errores
no hay errores
Ejecutar programa
errores de ejecución (semántica) Depurar
(debugging)
31