UT1 Intro Programación
UT1 Intro Programación
UT1 Intro Programación
El objetivo del curso será aprender, dado un problema, a diseñar una solución aplicando el
paradigma de la programación orientada a objetos y expresando dicha solución en el
lenguaje de programación Java.
CPU
Unidad
Unidad de Dispositivos de E/S
Aritmético-
Control
Lógica
(Memoria
Secundaria)
Usuario
- el procesador – es el que entiende los pasos del algoritmo y los lleva a cabo (por ej.
un cocinero / un ordenador)
- el entorno – los materiales necesarios para la ejecución del algoritmo (por ej.
huevos, patatas, cebolla / datos en un programa)
- las acciones – los actos del procesador sobre el entorno (cascar, batir, freír / sumar,
restar, comparar, asignar)
Inicialmente se programaba así pero resultaba tedioso y además era muy difícil
verificar y poner a punto el programa.
- Pág. 2 de 15 -
b) Lenguaje de bajo nivel o lenguaje ensamblador – es una versión simbólica
del lenguaje máquina. Cada instrucción lleva asociado un símbolo (una palabra
nemotécnica – ADD, SUB, …) para que resulta más fácil la programación. Requiere
una fase de traducción al lenguaje máquina (con un traductor – el assembler) .
Traductor -
Compilador Si errores
compilación
Programa objeto
(.OBJ)
Montador
(Enlazador) Si errores
montaje
Programa
ejecutable (.EXE)
Si errores
ejecución
Además de los paradigmas funcional y lógico (no utilizados ampliamente), los dos paradigmas
fundamentales de programación son:
paradigma procedural
paradigma orientado a objetos
- Pág. 4 de 15 -
1.6.1.- Paradigma procedural (programación estructurada) –
ampliamente utilizado en la década de los 70. Los lenguajes Pascal y C son los máximos
exponentes de este tipo de programación. Se basa en la descomposición funcional (o
algorítmica).
Aquí, una aplicación está formada por una jerarquía de módulos que se organizan en torno a un
programa principal. Los datos tienen un papel secundario. La programación estructurada se
resume en la expresión: “Algoritmos + Estructuras de datos = Programas”
Entrada
Procedimiento A
Procedimiento B
Procedimiento C
Salida
Este paradigma tiene sus ventajas cuando se trata de resolver tareas sencillas.
Tuvo su gran impacto en la década de los 90. Hoy día es ampliamente utilizado en el desarrollo
de software, tanto en análisis como en diseño y programación. Vino a resolver los problemas de
complejidad y tamaño en el desarrollo de software.
Entrada
objeto
objeto
atributos
atributos
métodos
métodos
objeto
atributos
métodos
Salida
- Pág. 6 de 15 -
- dividir un proyecto en mini proyectos más fáciles de manejar
- cada mini proyecto se denomina iteración
- en cada iteración se cubre el ciclo entero de desarrollo de una aplicación informática
(análisis OO, diseño OO, programación OO, pruebas e integración y
mantenimiento)
- cada iteración genera una versión parcialmente completa del sistema
- las sucesivas iteraciones se construyen unas sobre otras hasta que el sistema se ha
completado
- la diferencia entre una y otra iteración se denomina incremento
Veamos las diferentes etapas en el desarrollo OO de una aplicación informática (ciclo de vida
del software):
* * *
* * * *
Aula
1
Mamifero
Gato
- Pág. 8 de 15 -
Intérprete
0110100111
__________
__________ ______ ______
Compilador Java ______
__________ ______
(javac) ______ ______
MiPrograma.java MiPrograma.class MiPrograma
Bytecode .class
Código fuente –
fichero *.java
Distribución
Los programas fuente escritos en java (*.java) se compilan (con el compilador javac)
para obtener ficheros con extensión .class. Estos ficheros ya pueden ser distribuidos, no
hay proceso de enlace (no se necesita un montador).
Los ficheros *.class no contienen código máquina comprensible por ningún procesador
sino que contiene bytecodes, una especie de código de bajo nivel (un lenguaje
intermedio) que será interpretado por la máquina virtual de Java. Esta máquina
abstracta es la que ha de estar instalada en una máquina real para poder ejecutar la
aplicación java. El código de bytecodes es el mismo para todos los sistemas.
El hecho de que Java sea interpretado hace que su rendimiento sea menor en relación a
otros lenguajes aunque va mejorando en cada nueva versión de la JVM (no hay
ejecutable).
Código de bytecode
*.class
Máquina virtual de
Java (JVM)
*.class en un único
fichero .jar
Lenguaje ______
convencional Compilador
______
RS - 6000
______ RS - 6000
dependi
platafor
ente de
binario
Código
ma
la
__________
__________ ______ J
__________ Compilador
______ V
Java IBM Compatible
Lenguaje Java ______ M
(.java)
Bytecode .class
RS - 6000
Intérprete
Java no es sólo un lenguaje de programación sino toda una plataforma de desarrollo que,
además del lenguaje que da nombre a la plataforma, consta de:
- Pág. 10 de 15 -
Entorno en
Entorno en
tiempo de
tiempo de
ejecución –
compilación
plataforma Java
.java Cargador de
Librería de
clases (class
clases Java
Los bytecodes se loader)
pueden distribuir
localmente o a través de
Compilador java la red
Runtime System
JVM
Sistema Operativo
Hardware
Justo antes de ejecutar un programa, Java utiliza un cargador de clases (class loader)
para ubicar los bytecodes de todas las clases a utilizar por el programa en la memoria
del ordenador.
http://www.oracle.com/technetwork/java/index.html
La versión inicial fue Java 1.0. Java 1.1 introdujo cambios significativos. A partir de aquí la
numeración de las nuevas versiones es algo confusa. La siguiente versión fue Java 2 v.1.2.
Actualmente la última versión es Java v.5.0 conocida también como Java 1.5.
Han sido desarrolladas diferentes ediciones de Java para diferentes tipos de aplicaciones:
El fichero fuente se escribe con el editor y se salva como un fichero con extensión .java.
El compilador java, javac, se invoca desde la línea de comandos para producir un fichero con
extensión .class.
El fichero .class se invoca también desde línea de comandos llamando a java, la máquina
virtual.
- Pág. 12 de 15 -
Editar código
fuente
.java
Compilar (javac)
Salida .java
Si errores
compilación
.class
(bytecode)
Ejecutar
bytecode
Si errores
ejecución o
resultado
incorrecto
- Pág. 14 de 15 -
Cuestiones UT1 – Introducción a la Programación
C1. ¿Dónde se ubican los programas para poder ser ejecutados en el ordenador?
C2. El código ______________ es el código que utilizan internamente los ordenadores.
C3. Define lenguaje máquina.
C4. Define algoritmo. Expresa el algoritmo que te permite “calentar el desayuno en el
microondas” cada mañana.
C5. ¿Qué es un programa? Un programa está escrito en un ___________ de
____________.
C6. Ventajas de un lenguaje de alto nivel.
C7. Un programa escrito en un lenguaje de alto nivel, ¿es comprensible directamente por la
máquina? ¿Qué se necesita?
C8. Diferencia entre intérprete y compilador. Ventajas e inconvenientes de uno y otro.
C9. La salida de un compilador es un ______________. La entrada a un programa montador
es un ____________ y la salida es un ________________.
C10. ¿En qué momento se detectan los errores sintácticos en un programa?
C11. ¿Qué significa que un programa sea legible? ¿Y reutilizable?
C12. Un estilo, un determinado enfoque a la hora de construir y organizar un programa es un
__________________ de programación.
C13. Indica la frase que define la programación procedural. Ídem para la POO.
C14. El ______________ es el bloque principal de construcción en la POO y tiene
___________, _____________ y ______________.
C15. Ventajas de la POO.
C16. Tengo en mi casa un microondas cuya marca es Fagor y tiene una potencia máxima de
1200 w. Es capaz de calentar, descongelar y tiene función de grill. Identifica, para mi objeto
Microondas qué serán sus atributos (estado) y sus métodos (comportamiento).
C17. Explica los conceptos de abstracción y encapsulación.
C18. ¿Qué se hace en las fases de implementación y pruebas?
C19. ¿UML es una metodología de desarrollo de software? Razona la respuesta.
C20. ¿Por qué se dice que Java es compilado e interpretado a la vez?
C21. ¿Qué identifican las extensiones .java y .class?
C22. ¿Cuál es la función de la máquina virtual de Java (JVM)?
C23. Un fichero .class, ¿qué tipo de contenido tiene? ¿es directamente ejecutable?
C24. Java es de arquitectura neutral y portable, ¿qué significa esto?
C25. ¿Qué es un applet?
C26. ¿Qué es la API de Java?
C27. ¿Qué necesitamos instalar en nuestro equipo para poder desarrollar y ejecutar programas
Java?
C28. ¿Qué es javac, javadoc y java?
C29. Tienes escrito en papel un programa fuente java y has de instalarlo y ejecutarlo en el
ordenador. No dispones de ningún entorno de desarrollo que te facilite la tarea de editar,
compilar, …. Indica que pasos sigues hasta poder ejecutar el programa.