Want to create interactive content? It’s easy in Genially!

Get started free

BT1 Programación

UNED

Created on October 30, 2024

Contenidos de los 4 primeros bloques de la asignatura.

Start designing with a free template

Discover more than 1500 professional designs like these:

Corporate Christmas Presentation

Snow Presentation

Nature Presentation

Halloween Presentation

Tarot Presentation

Winter Presentation

Vaporwave presentation

Transcript

PROGRAMACIÓN Y BASES DE DATOS

PRIMERA ACTIVIDAD

BT1 PROGRAMACIÓN

BT1 PROGRAMACIÓN

Técnico Superior en Desarrollo de Aplicaciones Multiplataforma

MIKEL GARCIA PIÑEIRO

232323

HI-SCORE

bienvenid@

Hola, soy Pac-Man y, aunque soy políglota, el lenguaje que utilice hoy será {Java}. En este documental te voy a enseñar cómo funciona mi mundo y qué reglas lo rigen. ¡Acompáñame!

índice

elementos de un programa informático

estructuras de control

desarrollo de clases

utilización de objetos

elementos de un programa

entendamos qué es un programa informático...

IDE

IDE son las siglas de Integrated Development Environment o, en español, entorno de desarrollo integrado. Es una herramienta que nos ayudará a escribir programas y hay para todos los gustos: NetBeans, IntelliJ IDEA, BlueJ o Eclipse son solo algunos ejemplo.

+ INFO

bloques de un programa de java

ya sabemos que con un 'ide' podemos escribir programas en java. Ahora, ¿qué es lo mínimo que debemos escribir para que un programa en java se ejecute?

el método main

Lo mínimo para crear un programa en Java es crear una clase y, dentro, incluir el método main: este es el punto de partida de un programa de Java, sin él no se iniciará.

System.out.println escribe en consola el texto entrecomillado.

ahora que he escrito un programa, ¿cómo lo ejecuto?

Un alumno de Java (2024)

ejecutando...

IntelliJ detecta el método main y nos lo pone fácil: el botón de "play".

variables

Ahora imagina que quieres guardar la puntuación de tu partida. Necesitamos guardar el valor en algún lugar: ¡eso es una variable! Un espacio en memoria en que almacenamos y manipulamos datos. Java es un lenguaje estáticamente tipado, es decir, tenemos que especificar qué tipo de variable vamos a construir y no se puede cambiar. Las variables se definen así:[visibilidad] tipo nombreVariable;

232323

HI-SCORE

VARIABLE

tipos de datos

primitivos

Son los componentes básicos de la manipulación de datos y no se pueden dividir en tipos de datos más simples.

¡Entrenamiento!

tipos de datos

no primitivos

string

wrappers

classes

arrays

+ INFO

+ INFO

+ INFO

+ INFO

ya sabemos qué es una variable. Ahora, ¿cómo le asigno un valor?

Un alumno de Java (2024)

Literales

Se llaman literales a los valores que asignamos a las variables. Tenemos los siguientes tipos:

cadenas

caracteres

booleanos

numéricos

int a = 10;double b = 1.0;float c = 1.0F; long d = 10L;

char f = 'f';char g = '%';

String h = "Game Over";

bool e = true;

constantes

Una constante será aquella variable que tenga un valor inmutable, es decir, que no se pueda cambiar. Se definen usando la palabra reservada final. Imaginemos que tenemos que definir el tamaño de los Fantasmas en pantalla. Será un valor que no cambia en el tiempo: final int alto = 20; final int ancho = 20;

¡Entrenamiento!

expresiones

Operadores

Una expresión es una estructura de programación que se evalúa para producir un único valor y que se forma a partir de la combinación de variables, operadores y llamadas a métodos.

valorA + valorB

Métodos

myObjeto.toString()

Relacionales

valorA > valorB

operadores

aritméticos

Permiten realizar operaciones aritméticas.

operadores

de asignación

Permiten asignar valores.

operadores

relacionales

Permiten evaluar la relación entre variables.

¡qué mareo con tanto operador!

Veamos unos cuantos ejemplos escribiendo algunas expresiones mientras usamos algunos operadores.

expresión de asignación

expresión relacional

expresión aritmética

int a = 5;int b = 6; int c = a + b;

int a = 5;int b = 6; bool esMayor = a > b;

int a = 5;a += 6;

¡Entrenamiento!

conversiones de tipo

¿cómo las hago?

Es posible convertir un valor de un tipo a otro tipo distinto. Pero, ¡cuidado! No todas las conversiones son posibles, podrías encontrarte con una excepción.

Especificando el tipo entre paréntesis:

long x = 15L;int y = (int)x;

Mientras que si usamos clases, existe el método 'valueOf()':

Integer a = Integer.valueOf("900");

+ conversiones

comentarios

¡Ya acabamos con lo básico de un programa! Imagina que quieres dejar escrita una explicación del código o que una parte del programa no se ejecute: saludo a los comentarios.

// Comentario

/* Comentario de varias lineas */

Recuerda: un comentario no se ejecuta.

Veamos unos ejemplos mientras jugamos...

utilización de objetos

entendamos cómo se utilizan los objetos...

objetos

Un programa no es más que un conjunto de objetos trabajando en conjunto. Piensa en los objetos como representaciones únicas, tangibles, de un determinado tipo. En mi mundo, cada Fantasma (clase) es un objeto distinto.

blinky

inky

clyde

pinky

instanciar

Hemos dicho que Fantasma es una clase. ¿Cómo se crea cada fantasma, cada objeto? A eso se le llama instanciar un objeto.

blinky

Fantasma blinky = new Fantasma();

La palabra reservada new, seguido del constructor de la clase, instancia un objeto.

ahora me hablas del constructor, ¿qué es eso?

Un alumno de Java (2024)

constructor

El constructor construye objetos. Los constructores se invocan con la palabra new seguido del nombre de la clase. Los constructores nos permiten crear objetos con una configuración específica, es decir, con unos valores específicos. Veamos la clase 'String' qué constructores tiene:

String gameOver = new String("Game Over");

clases

¿Y qué es una clase? Es una plantilla para crear objetos. Todos los objetos de una misma clase comparten comportamiento y propiedades, entre otros.

blinky

inky

Imaginemos que ahora la clase Fantasma tiene un constructor con su velocidad. Tendremos dos objetos con propiedades distintas.

Fantasma blinky = new Fantasma(6);

Fantasma inky = new Fantasma(3);

clase

propiedades

comentario

constructor

parámetros

método

ya que hemos visto cómo es una clase, la usaremos para ilustrar cómo se usa.¡Vamos a crear fantasmas!

instanciación y uso de métodos

ahora que hemos hecho un repaso de la estructura de una clase, vamos a ver sus partes en detalle.

propiedades como métodos Get/set

Por convección, las propiedades de una clase son privadas y que se usan dos métodos para establecer el valor o para consultarlo: lo que llamamos métodos get y set.

+ INFO

inky.setVelocidadMovimiento(12);

constructores

Los constructores son muy flexibles: podemos crear un constructor sin parámetros o constructores con uno o varios parámetros.

Fantasma desconocido = new Fantasma();Fantasma inky = new Fantasma(5, "Inky");

métodos estáticos

Hemos visto que cada objeto de una misma clase tendrá unas propiedades específicas. Las variables y métodos estáticos nos permiten compartir información entre objetos de la misma clase. Se declaran con la palabra reservada static justo delante del tipo.

propiedades estáticas

inky

blinky

métodos estáticos

blinky

minimaVelocidad = 1;

minimaVelocidad = 0;

inky

Fantasma blinky = new Fantasma(6, "Blinky");Fantasma inky = new Fantasma(2, "Inky");

garbage collector

Cada vez que utilizamos la palabra new creamos un objeto que ocupa memoria. ¿Cómo se libera la memoria? Java lo hace por nosotros: el conocido proceso 'Garbage Collector', o recolector de basura, libera los recursos de los objetos que ya no se usan.

Garbage Collector

inky

blinky

estructuras de control

aprenderemos cómo cambiar el comportamiento secuencial de un programa

estructuras de control

Para entender las estructuras de control primero debemos saber que los programas se ejecutan de forma secuencial, es decir, una acción tras otra. Las estructuras de control permiten modificar ese comportamiento, influyendo en el flujo del programa bajo el análisis de condiciones.

estructuras de selección

Las estructuras de selección permiten decidir si se ejecuta un bloque de instrucciones o, por el contrario, se omite. Este control puede realizarse con la estructura if/else. Su estructura es:

Se ejecuta si se cumple la condición.

if (condición) { instrucción1; } else { instrucción2; }

Se ejecuta si no se cumple la condición.

estructuras de selección

Volviendo al ejemplo de los métodos get/set, ejecutamos lo siguiente:

pinky.setVelocidad(-1);

velocidadMovimiento = 0;

velocidadMovimiento = 5;

pinky

pinky.setVelocidad(5);

estructuras de selección

La estructura if/else permite encadenar condiciones if justo después del else

if (condición) { instrucción1; } else if (condición2) { instrucción2; } else if (condición3) { instrucción3; } else { instrucción4; }

estructuras de selección

Existe otra estructura de selección múltiple, similar al else/if con anidaciones, que permite seleccionar un bloque al cumplirse cierta condición: la estructura switch.

switch (expresion) { case valor-1: instrucciones-1; break; case valor-2: instrucciones-2; break; default: instruccion-def; break;

Se ejecuta si la expresion devuelve valor-1.

Se ejecuta si la expresion devuelve valor-2.

Se ejecuta si no se cumple el resto.

estructuras de repetición

Las estructuras de repetición permiten repetir un bloque de instrucciones tantas veces como se requiera. La primera estructura de repetición que veremos será la estructura switch.

Mientras se cumpla la condición...

while (condición) { instrucciones; }

... se ejecutarán las instrucciones.

estructuras de repetición

La segunda estructura es la do-while. La diferencia con while es que la condición se evalúa al final, con lo que las instrucciones siempre se ejecutan al menos una vez.

Se ejecuta una primera vez...

do { instrucciones; } while (condición);

... y si la condición es cierta se repite.

estructuras de repetición

La última estructura es la for. Es una forma particular de la estructura while. Esta estructura se utiliza cuando sabemos cuántas veces ha de repetirse, condición que verificamos con una variable de control.

for (inicialización; condición; actualización) { bloque-de-sentencias; }

estructuras de salto

break

continue

Permite saltar a la siguiente iteración del bucle, es decir, saltar el resto de la repetición que queda sin ejecutar.

Permite salir de una estructura de repetición.

do { if (condición1) { continue; } instrucciones; } while (condición2);

do { if (condición1) { break; } instrucciones; } while (condición2);

repasemos conceptos

control de excepciones

¡Los errores ocurren en todos los programas! Las excepciones son estructuras que ayudan a controlar errores. Las excepciones son objetos que heredan de la clase Exception y se controlan con la estructura try-catch. Veamos esto con unos ejemplos.

control de excepciones

Imaginemos que queremos crear un objeto pero olvidamos inicializarlo.

Fantasma blinky = null;

blinky

No hemos usado new, por lo que aún no hemos creado en memoria a blinky. Como se conoce en Java: es un objeto nulo (null). Si intentamos llamar a un método, como por ejemplo blinky.setVelocidad(5), se lanzará una excepción de tipo NullPointerException. ¿Cómo se controlanestas situaciones? Con try-catch...

ejemplo de try-catch

  • La estructura comienza con try donde se intentará realizar una instrucción.
  • Si se lanza una excepción se puede recoger con catch, donde se ejecutará la instrucción que queramos. Se pueden encadenar tantos catch como se quiera.
  • Y finally permite que se ejecute una instrucción siempre, ocurra una excepción o no.

+ INFO

aserciones

Las aserciones (assertions) nos permiten verificar asunciones o estados de nuestro programa. Si no se cumplen, se lanzará una excepción AssertionError.

Al caso anterior le añadimos la comprobación con assert de que inky no sea null. En esta sintaxis hemos pasado el String que aparecerá como mensaje del error.

depuración

La depuración permite parar el programa mientras este se ejecuta y ver los valores que en ese momento tienen los objetos. Esta técnica es muy útil para realizar correcciones y entender, paso a paso, cómo se ejecuta un programa. Las paradas que haga el programa se llaman puntos de interrupción y puedes añadir tantos como quieras.

depuración...

IntelliJ permite añadir puntos de interrupción haciendo click a la derecha del número de línea.

desarrollo de clases

entendamos mejor qué son las clases y cómo se usan

clases

Hagamos un repaso del concepto de clase...

propiedades y métodos

constructor

estructura

qué es

Para qué sirven los constructores y cuál es su estructura

Respondemos a la pregunta: ¿qué es una clase?

Hacemos un repaso de lo que es una propiedad y un método

A través de un ejemplo de código vemos su estructura

+ INFO

+ INFO

+ INFO

+ INFO

modificadores y visibilidad

se asigna cuando no se especifica un modificador. visible para el mismo paquete.

default

hace visible la clase, método o propiedad a todo el mundo.

public

será visible únicamente desde su propia clase.

private

Un término medio: hace visible dicho miembro en su clase o en subclases.

protected

visibilidad

Los modificadores y su visibilidad

La siguiente tabla resume qué visibilidad ofrece cada modificador

herencia

Acabamos de introducir el concepto de herencia con el ejemplo del modificador protected. ¿Qué significa esto? Que la clase que extiende de otra (extends) heredará propiedades y métodos, es decir, su comportamiento.

Una clase ENEMIGO puede definir el comportamiento básico de todos los enemigos. Como, por ejemplo, destruir el objeto una vez su vida llega a cero.

enemigo

Fantasma, que extiende de enemigo, ya incorpora dicho comportamiento y no debemos implementarlo.

fantasma

herencia

enemigo

fantasma

>|

Fantasma pinky = new Fantasma();pinky.destruir();

Identifica una clase

conclusiones

Hemos dado los primeros pasos en Java y hemos abordado los siguientes contenidos:

  • La identificación de los elementos de un programa informático.
  • La utilización de objetos.
  • El uso de estructuras de control.
  • El desarrollo de clases.
Te espero en los siguientes capítulos...

¡Ya empiezas a dominar esto de la programación!
Pacman
© 2024 Mikel garcia

game over

private

Esta clase tiene dos propiedades con el modificador private. Se podrá acceder a ellas desde la clase Fantasma pero nunca fuera de ella. No podremos hacer: inky.nombre;

wrappers

Los Wrappers, o envoltorios, son clases que nos permiten usar los tipos primitivos como objetos.Integer: envuelve un int Long: envuelve un long Float: envuelve un float Double: envuelve un double Character: envuelve un char Boolean: envuelve un boolean Byte: envuelve un byte Short: envuelve un short

LINK

protected

Aquí vemos dos clases de distintos paquetes. La primera de ellas tiene un método protected. La segunda clase extiende de la primera (es una subclase) y puede invocar el método 'saludar' pese a estar en un paquete distinto.

Instalación...

La instalación de IntelliJ es sencilla si seguimos la documentación oficial.

Y como usaremos Java como lenguaje de programación, debemos tenerlo instalado.

array

Sirven para almacenar listas de valores en una misma variable. Se declaran con '[]' después del tipo.

String[] ghosts = {"Blinky", "Pinky", "Inky", "Clyde"};

ARRAYS

Excepciones comunes...

String

El tipo 'String', o clase, representa una secuencia de caracteres.private String str = "Game Over";

DOCUMENTACIÓN

public

Esta clase tiene su constructor por defecto y el constructor parametrizado con el modificador public. Esto implica que son visibles desde cualquier lugar del programa.

CLASS

Una clase en Java es un conjunto de objetos que comparten características/comportamiento y propiedades/atributos comunes. En nuestro mundo, el fantasma Clyde sería un objeto de la clase Fantasma.

LINK

Por qué es útil...

Esto se basa en la idea de que nunca deberiamos acceder al estado de un objeto (sus campos) directamente, sino siempre llamando a métodos. Y resulta muy útil porque es posible cambiar la implementación de una propiedad (sus métodos get y set) sin afectar al codigo que la usa. En este ejemplo se usa una estructura de control (if) que veremos en la sección 3.

Métodos

Cómo se utilizan

El método, como decíamos, es un bloque de ejecución que podemos llamar desde un objeto en memoria. Siguiendo el ejemplo anterior:

Fantasma inky = new Fantasma(8, "Inky"); inky.pararFantasma();

El objeto "inky" pondrá a 0 su velocidad. En este caso el método no tiene parámetros. Si los tuviera, se pasarían separados por comas como en el constructor.

default

El método 'metodoDefault()', al no tener modificador, se asigna 'default' por defecto. El método será accesible en el mismo paquete (package).

¡puntos extra!

Pero cuidado...

Este tipo de estructuras con tantas anidaciones (una estructura contiene otra estructura) se considera una mala práctica porque dificultan mucho su lectura y mantenimiento. Existen métodos como el early return que son un buen sustituto:

Early return

¡puntos extra!

Java es un lenguaje compilado. Se escribe en lenguaje "natural" y se debe compilar para que la máquina virtual de Java (JVM) lo interprete. Es lo que hace IntelliJ por nosotros con el "play". ¿Cómo hago esto? >javac MyClass.java >java MyClass

Java es un lenguaje compilado e interpretado
Pac-Man

Instanciar

Creación de un objeto

En este caso, el constructor espera dos parámetros de entrada: un int y un String con el nombre del fantasma.

Fantasma inky = new Fantasma(8, "Inky");

La palabra reservada new indica que creamos un nuevo objeto en memoria. El objeto "inky" tiene sus propiedades específicas: el valor 8 como velocidad y el valor "Inky" como nombre.

tabla de conversiones

int
byte

double, float, long

double, float, long, int, char, short

long
short

double, float

double, float, long, int

float
char

double

double, float, long, int

Método estático

Cómo invocarlo

El método estático pertenece a la clase, no al objeto. Podemos invocarlo del siguiente modo:

Fantasma.subirMinimaVelocidad();

Esto hará que todas las instancias actualicen su valor.