Programación de Algoritmos Autor: Luis Eduardo Villavicencio Prof.: Ing. Danilo Jaramillo
Programación de Algoritmos
Autor: Luis Eduardo Villavicencio
Prof.: Ing. Danilo Jaramillo
Java utiliza los siguientes tipos de datos que van en rangos en el caso de los enteros que son: byte, short, int y long:
EnterosNombre Tamaño Rango
Long 64 bits -9.233.372.036.854.775.
808L a 9.233.372.036.854.775.
807L
Int 32 bits -2.147.483.648 a 2.147.483.647
Short 16 bits -32.768 a 32.767
Byte 8 bits -128 a 127
Los datos de coma flotante de Java son float y double y sus rangos se explican en el siguiente cuadro:
Nombre Tamaño Rango
float 32 bits ± 3.40282347E+38F
double 64bits ± 1.79769313486231570
E+308
En Java se utiliza Unicode para almacenar los caracteres y por ello se emplean 16 bits para almacenar cada caracter.
Secuencia Descripción
\b Retroceso
\t Tabulador
\r Retorno de carro
\n Nueva línea
\’ Comilla simple
\” Comilla doble
\\ Barra invertida
Java también utiliza datos lógicos como es el caso del Boolean el mismo que solo puede tomar 2 valores de Verdadero y Falso.
En Java usamos envoltorios que recubren el tipo de dato básico con una clase, de ahí en adelante el tipo básico se convierte en un objeto.En la siguiente tabla se muestra los 9 tipos de envoltorios para los tipos básicos:
Tipo Envoltorio
int Integer
long Long
float Float
double Double
short Short
byte Byte
char Character
boolean Boolean
void Void
Declaración de Variablestipo identificador [=valor][,identificador[=valor]…];
Ejemplo:int i=5;
float j;
double d = Math.sqrt(i*2);
Conversión AutomáticaExisten dos reglas para determinar si se
puede realizar la conversión automática.Los dos tipos son compatibles.El tipo destino es más grande que el tipo origen.Reglas de Compatibilidad:Todos los tipos numéricos son compatibles entre sí, sin importar que sean enteros o reales.El tipo char es compatible con int.El tipo boolean no es compatible con ningún otro tipo.
Ejemplos de conversión automática
int a;
a=‘c’;
short g;
g=678;
Conversión explicita (Casting)Para realizar ésta conversión debemos anteponer al
dato quequeremos cambiar el tipo destino encerrando en
paréntesis.La conversión se realiza siguiendo las siguientes
reglas:Entre números enteros, si el destino es mayor que
el origen, el valor resultante será el resto (módulo) de la división entera del valor con el rango del tipo de destino.
Si el origen es un número real y el destino un entero, la parte decimal se trunca, además si la parte entera restante no cabe en el destino, se aplica en criterio del módulo.
Entre número reales, se guarda el máximo valor posible.
A continuación se muestran algunos ejemplos de conversión explicita:
dou=3.40282347E+50;
float fl=(float) dou;
double d=123.67;
int dest=(int) d;
int j= 257;
byte b;
b=(byte) j;
Declaración de arrays de una dimensión.La declaración se realiza especificando el tipo del array seguido de [], después viene el nombre de la variable.
int[] a;
Ahora reservamos un espacio de memoria para almacenar el array con el operador new.
a=new int[20];
Ejemplos de cómo declarar arrays
float[] b=new float[10];
int tamaño=15;
float a[]=new float[tamaño];
Declaración de un array multidimensional
La forma de definirlo se ve a continuación:int[][] tabla=new int[6][7];
Al definir un array multidimensional, sólo es obligatorio indicar el número de filas, después se puede reservar memoria para el resto de forma independiente.
int[][] tabla=new int[3][];tabla[0]=new int[3];tabla[1]=new int[3];
Cuando tenemos más dimensiones todo continúa funcionando de la misma forma, sólo es necesario añadir otro grupo de corchetes para poder declarar cada nueva dimensión.
Operadores Aritméticos
Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
++ Incremento
-- Decremento
Operadores Relacionales
Operador Descripción
== Igual
!= Diferente
> Mayor que
< Menor que
>= Mayor o igual
<= Menor o igual
Operadores Lógicos
Operador Descripción
& AND
| OR
^ XOR
&& AND en cortocircuito
|| OR en cortocircuito
! NOT
SENTENCIAS CONDICIONALESSentencia if-else
if(expresión){ if(opción==3){ sentencia suma=suma+2; sentencia opción=0; ... }else{}else{ suma=0 sentencia opción=0; sentencia } ...}
int opción=0;
switch(opción){
case 1: Suma;
break;
case 2: Resta;
break;
case 3: Multiplicación;
break;
case 4: División;
break;
case 5: Potencia;
break;
default: System.out.println(“Opción Incorrecta”);
}
Sentencia switchswitch(expresión){
case valor1: sentencia;sentencia;...[break;]
case valor2: sentencia;sentencia;...[break;]
[default: sentencia; sentencia;
}
Bucle whileSu principal característica es que posee una condición de entrada, es decir si se cumple la condición, se ejecutan las sentencias que estén dentro del bucle.
int valor=1, suma=0;
while(expresión){ while(valor>=10){
sentencia; suma=suma+valor;
sentencia; valor++;
... }
}
Bucle forAl igual que el bucle while posee una condición de entrada, es decir si se cumple la condición, se ejecutan las sentencias que estén dentro del bucle.
int i, producto=1;
for(exp;exp;exp){ for(i=1;i>=50;i++)
sentencia; producto= producto*i;
sentencia; }
...
}
Bucle do-whileÉste bucle al contrario de los anteriores posee una condición de salida, lo que permite al bucle ejecutarse por lo menos una vez.
do{
sentencia;
sentencia;
...
}while(expresión);