Java básico

Lenguajes de programación

Lenguajes de Programación

Los lenguajes de programación son todos los símbolos,caracteres y reglas de uso que permiten a las personas "comunicarse" con las computadoras

Programación

Se diseña

Se codifica

Se escribe

Se prueba

Se depura

Código

Código Fuente

Recorrido en el tiempo

  • 1957-1959 
  • 1970
  • 1972
  • 1983
  • 1987
  • 1991
  • 1993
  • 1995

Fortran,LISP,COBOL

PASCAL

C

C++, Objective-C

PERL

PYTHON
RUBY

JAVA - PHP - JavaScript

 

 

 

 

Tipos de lenguajes de programación

Nivel de Abstraccion del Procesador

El paradigma de Programación

Forma de Ejecución

Bajo nivel

Medio Nivel

Alto Nivel

Compilados

Interpretados

Imperativo

Declarativo

Estructurado

Orientado a objetos

Funcional

Lógico

JAVA

INICIOS

1991              Lenguaje de programación de electrodomésticos

 

 

1995              Lenguaje de programación de computadoras

 

Entendiendo JAVA

Características de Java

  • Orientado a objetos
  • Independiente de la plataforma
  • Compilado e Interpretado
  • Robusto
  • Gestiona la memoria automáticamente
  • No permite el uso  de técnicas de programación inadecuada
  • Multihilos
  • Cliente-servidor
  • Con mecanismos de seguridad incorporados
  • Con herramientas de documentación  incorporada

A  tener en cuenta...

  • Case Sensitive: hay diferencia  entre mayúscula y minúsculas

  • Cada instrucción termina con ;

  • Una instrucción puede abarcar mas de una línea

  • Se pueden dejar espacios  y tabuladores

  • Se marcan bloques de código agrupado con "{}"

Qué es un programa?

Es un algoritmo escrito en algún lenguaje de programación de computadoras.

Pasos para la construcción de un programa

DEFINICIÓN DEL PROBLEMA

ANÁLISIS DEL PROBLEMA

DISEÑO DEL ALGORITMO

CODIFICACIÓN

PRUEBA Y DEPURACIÓN

Tipos de datos

Variables

  • Los primeros lenguajes de programación no usaban objetos, solo variables. Una variable podríamos decir que es un espacio de la memoria RAM a la que asignamos un contenido.

  • Se puede almacenar distintos tipos de datos.

  • En base al tipo de datos seleccionado serán las operaciones que podamos realizar con esa variable, por ejemplo: si tenemos la variable edad deberíamos seleccionar un tipo de datos como integer (número entero) ya que las operaciones relacionadas serán de comparación, sumas o restas y no es necesario tener una profundidad de decimales.

Constantes

  • Se declaran utilizando la palabra "final".
  • Si no se las declara static, ocupan lugar en memoria por cada instancia de la clase.
  • No se puede modificar su valor.
  • Por convención se las suele declarar en mayúscula.
  • Se inicia en el mismo momento de declararla.
  • La palabra final también puede aplicarse a clases, lo que indica que esa clase no puede ser heredada.

Tipos de datos primitivos

  • Entidades elementales: un número, un carácter, un valor verdadero o falso.
  • Un tipo primitivo es un dato elemental.
Tipo de Datos Significado Ejemplo Uso
Byte  Número entero de 8 bits. Con signo
 
Temperatura de una habitación en grados Celsius
Short Número entero de 16 bits. Con signo  Edad de una Persona 
Int Número entero de 32 bits. Con signo Distancia entre localidades medida en metros
Long Número entero de 64 bits. Con signo  Producto entre dos distancias almacenadas en variables tipo int como la anterior
Float Número Real de 32 bits Altura de algún objeto 
Double  Número Real de 64 bits. Proporción entre dos magnitudes 
Boolean Valor lógico:  true (verdadero) o false (falso)  Almacenar si el usuario ha aprobado un examen o no

Tipos objetos

Los objetos son entidades complejas que pueden estar formadas por la agrupación de muchas variables y métodos.

Tipos de la biblioteca estándar de Java

String (cadenas de texto)

Muchos otros (p.ej. Scanner, TreeSet, ArrayList…)

Tipos definidos por el programador

Cualquiera que se nos ocurra, por ejemplo Taxi, Autobus, Tranvia

arrays

Serie de elementos o formación tipo vector o matriz. 

Tipos envoltorio o wrapper (Equivalentes a los tipos primitivos pero como objetos.)

Byte, Short, Integer, Long, Float, Double, Boolean

 

Importante

  • Un objeto es una cosa distinta a un tipo primitivo, aunque “porten” la misma información. Tener siempre presente que los objetos en Java tienen un tipo de tratamiento y los tipos primitivos, otro. Que en un momento dado contengan la misma información no significa en ningún caso que sean lo mismo. El tipo primitivo es algo elemental y el objeto algo complejo.
  • Un tipo primitivo es un dato elemental y carece de métodos, mientras que un objeto es una entidad compleja y dispone de métodos.
  •  Los nombres de tipos primitivos y envoltorio se parecen mucho. 
  • Una cadena de caracteres es un objeto. El tipo String en Java nos permite crear objetos que contienen texto (palabras, frases, etc.). El texto debe ir siempre entre comillas.

Arrays

  • Serie de elementos, cada uno de los cuales lleva asociado un índice numérico 0, 1, 2, 3, … , n-1
  • En java los arrays son objetos, instancias de la clase Array, la cual dispone de algunos métodos útiles.

  • Un array puede estar compuesto por datos primitivos o objetos.

int arrayDeEnteros[] = null;
Integer arrayDeEnteros2[] = null;

Trabajando con arrays

  • Creación

 

  • Recorrido

 

  • Inicialización

 

  • Longitud

 

arrayDeEnteros = new int[100];
arrayDeEnteros2 = new Integer[100];
for(int i = 0; i < 100; i++)
    arrayDeEnteros[i] = i;
int arrayDeEnteros[] = {1,2,3,4,5};
Integer arrayDeEnteros2 = {new Integer(10)};
int arrayDeEnteros[] = {1,2,3,4,5};
int tamanio = arrayDeEnteros.length; //5

Operadores

Operadores

Los programas de computadoras se apoyan esencialmente en la realización de numerosas operaciones aritméticas y matemáticas de diferente complejidad.

Los operadores son símbolos especiales que sirven para ejecutar una determinada operación, devolviendo el resultado de la misma.  
Para comprender lo que es un operador, debemos primero introducir el concepto de Expresión. Una expresión es, normalmente, una ecuación matemática, tal como 3 + 5. En esta expresión, el símbolo más (+) es el operador de suma, y los números 3 y 5 se llaman operandos. En síntesis, una expresión es una secuencia de operaciones y operandos que especifica un cálculo.

Operador de asignación

Es el operador más simple que existe, se utiliza para asignar un valor a una variable o a una constante. El signo que representa la asignación es el = y este operador indica que el valor a la derecha del = será asignado a lo que está a la izquierda del mismo.
Ejemplo en pseudocódigo:
Entero edad = 20
Decimal precio = 25.45

Operadores aritméticos

Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas habituales: 

Operador Significado
+ Suma
- Resta
* Producto
/ División
% Resto de la División entera

Operadores Unitarios

Los operadores unitarios requieren sólo un operando; que llevan a cabo diversas operaciones, tales como incrementar/decrementar un valor de a uno, negar una expresión, o invertir el valor de un booleano.
++ operador de incremento; incrementa un valor de a 1
int suma=20;
suma++;
suma=21
-- operador de decremento; Reduce un valor de a 1
int resta=20;
resta--;
resta=19
! operador de complemento lógico; invierte el valor de un valor booleano
boolean a=true;
boolean b= !a;
b=false

Operadores Condicionales

Son aquellos operadores que sirven para comparar valores. Siempre devuelven valores booleanos: TRUE O FALSE. Pueden ser Relacionales o Lógicos.

Relacionales

Lógicos

Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y relación de menor o mayor. 

Operador Significado
== Igual a
!=  No igual a
> Mayor que
>= Mayor o igual que
< Menor que

Los operadores lógicos (AND, OR y NOT), sirven para evaluar condiciones complejas

Expresión Operador Resultado
a && b AND true: si a y b son verdaderos.
false: si a es falso, o si b es falso, o si a y b son falsos
a || b OR  true: si a es verdadero, o si b es verdadero, o si a y b son verdaderos.
false: si a y b son falsos.  

Operador ternario

Conocido como el if de una línea.

Permite devolver un valor u otro según el valor de la expresión analizada.

 

Expresión lógica ? valor si es verdadero : valor si es falso

 

Ej: valorPrecioLista = aplicaDescuento == true ? 123 : 234

Mi primer programa

Ejercicio 1 : Hola mundo!

Mostrar el texto "Hola Mundo" por la consola. Para ello utilizaremos la clase estática System.out. Esta clase nos permite acceder a la salida de la consola. En concreto usaremos el método println(texto).

https://docs.oracle.com/javase/8/docs/api/index.html

public class HolaMundo {
 
	public static void main(String[] args) {		
		System.out.println("Hola Mundo");
	}
 
}

Ejercicio 2: leer datos

  • Vamos a crear un programa elemental para pedir datos por consola (entrada de teclado del usuario) y para ello vamos a basarnos en una clase del API de Java: la clase Scanner.
  • https://docs.oracle.com/javase/8/docs/api/index.html

 

import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

//Código de nuestra clase principal ejemplo aprenderaprogramar.com

public class TestPrograma1 {

 

    public static void main (String [ ] args) {

        System.out.println ("Empezamos el programa");

        System.out.println ("Por favor introduzca una cadena por teclado:");

        String entradaTeclado = "";

        Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner

        entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner

        System.out.println ("Entrada recibida por teclado es: \"" + entradaTeclado +"\"");

    } //Cierre del main

} //Cierre de la clase

Explicación

  • El constructor que hemos utilizado dentro de los varios disponibles en la clase Scanner es el que tiene la signatura Scanner (InputStreamsource). Le pasamos como parámetro System.in.

  • Cuando sobre el objeto Scanner se invoca el método nextLine(), se obtiene un String que se corresponde con el texto que haya introducido el usuario mediante el teclado.

  • Este resultado del método lo almacenamos en la variable entradaTeclado. Finalmente, mostramos por pantalla cuál ha sido el contenido del texto recibido por teclado.

Explicación

  • En la sentencia en que imprimimos el mensaje por pantalla hemos usado el carácter \. Este carácter, una barra invertida o backslash, no se muestra en pantalla y es interpretado por Java como indicación de que el siguiente carácter forma parte del texto. Esta es la forma que tenemos para incluir unas comillas en un texto que queramos mostrar por pantalla. Sin este escape, cualquier comilla se interpretaría como delimitadora de una cadena.
  • Otra aplicación del backslash es la de forzar un salto de línea. Hasta ahora hemos trabajado invocando el método println del objeto System.out para imprimir una línea en la ventana de consola. Cabe citar que otro método disponible para System.out es print, con el resultado de que tras un print no se inserta un cambio de línea y retorno de carro como ocurre con los println, por lo que los textos aparecen “uno a continuación de otro”.

Estructuras de control

Estructuras de control

Un programa puede ser escrito utilizando tres tipos de estructuras de control:  

 

a) secuenciales

 

b) condicionales

 

c) repetitivas  


Las Estructuras de Control determinan el orden en que deben ejecutarse las instrucciones de un algoritmo: si serán recorridas una luego de la otra, si habrá que tomar decisiones sobre si ejecutar o no alguna acción o si habrá repeticiones.

Estructuras Secuenciales

Es la estructura en donde una acción (instrucción) sigue a otra de manera secuencial. Las tareas se dan de tal forma que la salida de una es la entrada de la que sigue y así en lo sucesivo hasta cumplir con todo el proceso

Operación 1

Operación 2

Estructuras condicionales

Este es el caso cuando existe un número de posibles alternativas que resultan de la evaluación de una determinada condición.
En estas estructuras, se realiza una evaluación de una condición y de acuerdo al resultado, el algoritmo realiza una determinada acción. Las condiciones son especificadas utilizando expresiones lógicas.  

Las estructuras selectivas/alternativas pueden ser:

● Bifurcación

● Selección múltiple

Bifurcación: if-else

La estructura alternativa simple si-entonces (en inglés if-then) lleva a cabo una acción al cumplirse una determinada condición.

La selección si-entonces evalúa la condición y:

 

● Si la condición es verdadera, ejecuta la acción

● Si la condición es falsa, no ejecuta nada

if (condicion)
        {
           instruccion1();
           instruccion2();
           // etc
} else {
           instruccion1();
           instruccion2();
           // etc
}
if (condificion) {
bloqueDeInstrucciones(); }

Bifurcación: if-else-if 

if (condificion) {
    bloqueDeInstrucciones(); 
}
else {
    if(condicion2){
        bloqueDeInstrucciones(); 
    } else {
        bloqueDeInstrucciones(); 
    }
}

Cada cláusula else corresponde al último if inmediato anterior que se haya ejecutado, es por eso que debemos tener especial consideración de encerrar correctamente entre llaves los bloques para determinar exactamente a qué cláusula corresponde. En este caso, es de especial utilidad indentar nuestro código utilizando espacios o tabulaciones como se muestra en el ejemplo anterior. 

Ejemplo bifurcación

final int totalMaterias = 4; 
int materiasAprobadas = 2;
if (materiasAprobadas == totalMaterias) {
    otorgarCertificado(); 
}
else {
    continuarCapacitacion(); 
}
  • La condición debe ser una variable o expresión booleana. 

  • Si sólo existe una instrucción en el bloque, las llaves no son necesarias.

  • No es necesario que exista un bloque else.

Selección múltiple: switch 

Se utiliza cuando existen más de dos alternativas para elegir. Esto podría solucionarse por medio de estructuras alternativas simples o dobles, anidadas o en cascada. Sin embargo, se pueden plantear serios problemas de escritura del algoritmo, de comprensión y de legibilidad, si el número de alternativas es grande.
En esta estructura, se evalúa una condición o expresión que puede tomar n valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones correspondientes al valor.

switch (expresion){
            case valor1:
                instrucciones();
                break;
            case valor2:
                instrucciones();
                break;
            default:
                instrucciones();
}
  • La expresión ha de ser una variable de tipo int o una expresión que devuelva un valor entero.

  • Cuando se encuentra coincidencia con un case se ejecutan las instrucciones a él asociadas hasta encontrar el primer break.

  • Si no se encuentra ninguna coincidencia se ejecutan las instrucciones del bloque default, la cual es opcional.

  • El break no es exigido en la sintaxis y entonces si no se pone, el código se ejecuta atravesando todos los cases hasta que encuentra uno. 

Selección múltiple: switch 

Estructura repetitiva

Es muy común, encontrarse con que una operación o conjunto de operaciones deben repetirse muchas veces.
Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan BUCLES. Y cada repetición del bucle se llama iteración.
Todo bucle tiene que llevar asociada una condición, que es la que va a determinar cuándo se repite el bucle y cuando deja de repetirse.

 Bucles infinitos: cuando la condición de finalización del bucle no se llega a cumplir nunca. Se trata de un fallo muy típico, habitual.  
Hay distintos tipos de bucles:

● Mientras, en inglés: While

● Hacer Mientras, en inglés: Do While.

● Para, en inglés: For  

WHILE

Esta estructura repetitiva “mientras”, es en la que el cuerpo del bucle se repite siempre que se cumpla una determinada condición

while(condicion){
    accion(); 
}

DO WHILE

Esta estructura es muy similar a la anterior, sólo que a diferencia del while el contenido del bucle se ejecuta siempre al menos una vez, ya que la evaluación de la condición se encuentra al final. De esta forma garantizamos que las acciones dentro de este bucle sean llevadas a cabo, aunque sea una vez independientemente del valor de la condición

do {
    acciones();
} while (condicion);

FOR

La estructura for es un poco más compleja que las anteriores y nos permite ejecutar un conjunto de acciones para cada elemento de una lista, o para cada paso de un conjunto de elementos. Su implementación depende del lenguaje de programación, pero en términos generales podemos identificar tres componentes: la inicialización, la condición de corte y el incremento.

for (inicio; condicion; incremento) {
    accion(); 
}

Break y continue

  • Break: es válida tanto para las bifurcaciones como para los bucles. Hace que se salga inmediatamente del bucle o bloque que se está ejecutando sin finalizar el resto de las sentencias.

  • Continue: se utiliza en los bucles (no en bifurcaciones). Finaliza la iteración que en ese momento se está́ ejecutando (no ejecuta el resto de sentencias que hubiera hasta el final del cuerpo del bucle). Vuelve al comienzo del bucle y comienza la siguiente iteración si existiera. 

Rutinas

Las rutinas son uno de los recursos más valiosos cuando se trabaja en programación ya que permiten que los programas sean más simples, debido a que el programa principal se compone de diferentes rutinas donde cada una de ellas realiza una tarea determinada.   
Se la puede llamar desde cualquier parte del programa principal. Además, una rutina puede opcionalmente tener un valor de retorno y parámetros. El valor de retorno puede entenderse como el resultado de las instrucciones llevadas a cabo por la rutina

rutina: sumar(a, b)

valor de retorno: suma de los números a y b.

 datos de entrada de la rutina : a y b

 A estos datos de entrada los denominamos parámetros y a las rutinas que reciben parámetros las denominamos funciones, procedimientos o métodos, dependiendo del lenguaje de programación.

 

Java Básico

By Marina Garcia

Java Básico

Java conceptos básicos

  • 612