Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JAVA
Curso bsico de iniciacin al lenguaje JAVA
Eugenio Romero
www.informatica97.tk
0
PROGRAMACIN IMPERATIVA
CONSEJO DE ESTILO: ste consejo de estilo es aplicable a todo el curso y posteriores. La entrada de
informacin desde el teclado est siempre fijada. De manera que sta la podemos extraer fuera del mtodo
main y fijarla como una constante. Quedara el programa:
import java.util.Scanner;
public class ejemplo {
final static Scanner s = new Scanner(System.in);
public static void main(String[] args){
}
}
El comando System.out.print() supone que lo que tenga contenido en el interior de los parntesis ser mostrado
en pantalla. Aadiendo a print la terminacin ln (println) se realizara un salto de lnea al terminar lo que
contenga el comando en ejecucin.
1.3. Atributos de JAVA.
Los utilizamos para dar capacidad a datos en la memoria RAM. Podemos aadir comentarios en el programa de
la manera //texto; que no sern ledos por el programa.
1
import java.util.Scanner;
public class ejercicio1 {
public static void main(String[] args){
int num1,num2,aux;
Scanner a = new Scanner(System.in);
System.out.print("introduce un valor
num1 = a.nextInt();
System.out.print("Introduce un valor
num2 = a.nextInt();
aux = num1;
num1 = num2;
num2 = aux;
System.out.println("El valor de num1
System.out.println("El valor de num2
}
}
en num1: ");
en num2: ");
es: "+num1);
es: "+num2);
Significado
Si x es igual a a entonces
Si x es menor que a entones
Si x es mayor que a entonces
Si x es menor o igual a a entonces
Si x es mayor o igual a a entonces
3
Si x es distinto de a entonces
else{
Si no
El programa solo leer lo que hay dentro de if si se cumple el operador, existen operadores distintos ya que
todos piden una exigencia: por ejemplo if(x%2=0){ significa que si el resto de dividir x entre 2 es cero entonces se
ejecutar lo que hay dentro de if.
EJERCICIO: comprobar si un numero dado por teclado es par.
import java.util.Scanner;
public class ejercicio1 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int a;
System.out.print("Introduce un nmero: ");
a = s.nextInt();
if(a % 2 == 0){
System.out.println(a+" es un nmero par.");
}
else{
System.out.println(a+" no es un nmero par.");
}
}
}
case a:
case $:
El programa comparar todos los casos hasta encontrar el correcto y lo ejecutar. En este caso ejecutar lo que
hay dentro de case a: ,sin embargo, al no estar la lnea cerrada se ejecutaran todos los casos que haya a
continuacin. Para cerrar la lnea escribiremos:
case :
break;
int i = 0;
while(i < 5){
System.out.print(i+ );
i += 1;
}
System.out.print(Estoy fuera del bucle);
Esto es un contador del bucle (mide las veces que se ha ejecutado) cada vez que el bucle se ejecuta la variable i
suma 1 a su valor anterior y este nuevo valor es mostrado por pantalla. La condicin que hace que el bucle se
ejecute es que i sea menor que 5 de manera que al sumar 1 cada vez que se ejecuta, llegar un momento en
que deje de ejecutarse (solo se ejecutara 4 veces, ya que 5 no es menor que 5). Por pantalla veremos el
siguiente resultado con este programa: 0 1 2 3 4 Estoy fuera del bucle.
Bucle for( ; ; ){
consta de 3 partes diferentes: (1 Inicializa el contador; 2 condicin del contador; 3
incremento del contador){
Esta diferencia con respecto al bucle while (el cual solo tiene 1 parte: condicin del contador) lo hace muy til
pues dar error si no hemos introducido el contador. Para elaborar el mismo contador que en el caso anterior
pero con este bucle deberamos escribir:
int j;
for(j = 0; j < 5; j += 1){
System.out.print(j+ );
}
System.out.print(Estoy fuera del contador);
El bucle for acta de manera distinta al bucle while a la hora de repetirse, antes de leer la condicin realiza el
incremento del contador, posteriormente comprueba que este siga cumpliendo la condicin. Por pantalla
volveramos a ver: 0 1 2 3 4 Estoy fuera del bucle.
Es apreciable que el cdigo que inicializa este contador es mucho ms corto lo que lo hace til para dar mayor
rendimiento al programa, lo cual no hace que sustituya totalmente a while que ser necesario en muchos casos.
Con el bucle for no es necesario declarar el contador fuera del bucle (int j), sino que podemos declararlo e
inicializarlo dentro del mismo bucle: for(int j = 0;j < 5; j++){
Escribir j++; es lo mismo que escribir j += 1; sirve para incrementar el valor del contador en una unidad de una
manera ms compacta (eficiencia del programa).
3.2. Ejercicio de bucles: mostrar todos los nmeros que hay entre dos nmeros introducidos por teclado.
import java.util.Scanner;
public class ejercicio2 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
boolean comp = true;
int a,b;
System.out.print("Introduce un nmero: ");
a = s.nextInt();
System.out.print("Introduce el segundo nmero: ");
b = s.nextInt();
if(a > b){
comp = false;
}
for(int i = a+1;i < b && comp; i++){
System.out.print(i+" ");
}
}
}
}while();
Dentro de las llaves introducimos las sentencias o cdigo y entre los parntesis impondremos la condicin del
bucle. El caso del contador sera:
int k;
do{
System.out.print(k+ );
k++;
}while(k < 5);
El resultado que veremos en pantalla ser: 0 1 2 3 4. Al igual que en los casos anteriores. La diferencia respecto
a los bucles while y for es que do while se ejecutar siempre al menos una vez, ya que la condicin se lee al final
del bucle y si esta se sigue cumpliendo el bucle comenzar de nuevo. En caso de que inicialmente no se cumpla
la condicin el bucle se ejecutar una sola vez ya que lee la condicin al final.
import java.util.Scanner;
public class ejercicio2 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
boolean comp = true;
int a,b;
System.out.print("Introduce un nmero: ");
a = s.nextInt();
System.out.print("Introduce el segundo nmero: ");
b = s.nextInt();
if(a >= b){
comp = false;
System.out.print("Introduce un primer nmero mayor: "+a+" no es menor
que "+b);
}
else{
System.out.print(a+" es menor que "+b);
}
}
}
3.4. EJERCICIO: Realizar un men con varias opciones, usa una estructura switch.
import java.util.Scanner;
public class ejercicio4 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int op;
do{
System.out.println("1.- Primera Opcin");
System.out.println("2.- Segunda Opcin");
System.out.println();
System.out.print("Elige una opcin: ");
op = s.nextInt();
}while(op < 1 || op > 2);
switch(op){
case 1:
System.out.println("Has escogido la primera opcin");
break;
case 2:
System.out.println("Has escogido la segunda opcin");
break;
}
}
}
}
}
Con sus respectivas sentencias o lneas.
La explicacin de su funcionamiento es: cuando entramos en el primer bucle se comprueba como tal, de manera
que siendo cierta la condicin se ejecuta, a su vez entramos en el segundo bucle y hasta que la condicin del
segundo bucle no se falsa no saldremos de l, y volveremos al primero comprobando de nuevo la condicin y
repitindose el proceso hasta que sea falsa la condicin del primer bucle, es decir, el segundo bucle se ejecutar
tantas veces como dicte el primero.
No tiene por qu ser una estructura de un bucle for, puede ser cualquier otro, utilizando siempre el que nos
convenga.
3.6. Depurador de eclipse.
Depurador: es una herramienta que trae nuestro entorno de trabajo (en nuestro caso eclipse) la cual nos
ayudar a entender por qu lnea del cdigo va el programa y el valor de las variables en cada momento. Una
aplicacin es la comprobacin continuada del cdigo para encontrar errores (bugs).
Se abre en la siguiente ruta: Window > Open perspective > Debug
Se cierra en la ruta: Window > Open perspective > Java
En la vista del depurador clicaremos dos veces en una lnea (al margen) y al ejecutar el programa lo haremos en
el botn Debug (cuyo smbolo es un insecto). El programa se parar antes de ejecutar dicha lnea y no se
ejecutara hasta que demos la orden step over (siguiente paso) el cual tiene por defecto la tecla F6.
10
EJERCICIO: Realiza un programa que compruebe si un nmero introducido por teclado es primo o no.
import java.util.Scanner;
public class numerosprimos {
public static void main(String[] args){
int a;
boolean resultado = true;
Scanner s = new Scanner(System.in);
System.out.print("Introduce un nmero para comprobar si es primo: ");
a = s.nextInt();
for(int i = 2;i < a; i++){
if(a % i == 0){
resultado = false;
}
}
if(resultado){
System.out.println(a+" es primo.");
}
else{
System.out.println(a+" no es primo");
}
}
}
3.7. Eficiencia.
Programa que busque todos los nmeros primos entre 1 y 200.
1 solucin funcional.
public class numerosprimosentreayb {
public static void main(String[] args){
boolean resultado = true;
for(int i = 1;i < 200; i++){
resultado = true;
for(int j = 2; j < i; j++){
if(i % j == 0){
resultado = false;
}
}
if(resultado){
System.out.print(i+", ");
}
}
}
}
11
En la primera solucin el programa no es eficiente. El bucle da vueltas hasta que se cumple la condicin, por
ejemplo: cuando i = 100 el programa comprobar que no es primo en la primera vuelta, sin embargo, el bule
debe hacer que se cumpla la condicin j < i; es decir, se acabar cuando j = 100, esto supone unas 99 vueltas de
ms. En total dar miles de vueltas para comprobar todos los nmeros entre 1 y 200.
La solucin en sencilla, el bucle ha detectado que 100 no es primo, de manera que resultado ha perdido su
valor verdadero; ah tenemos la solucin: aadimos una condicin extra y obligamos a que resultado sea
verdadero, como ha fallado esa condicin, sale del segundo bucle. Nos hemos ahorrado ms de mil vueltas.
4.1. Qu es un vector?
Vector o array: sirve para almacenar varios datos del mismo tipo. Se declara de la manera: int[] vec = new int
[]; siendo int[] el tipo de vector, vec el nombre y [] la longitud ([5] o [2], etc.).
Para escribir dentro de un vector necesitaremos un bucle:
EJERCICIO: Escribir dentro de un vector y mostrar los nmeros introducidos.
import java.util.Scanner;
public class Bloque41 {
public static void main(String[] args){
int[] vec = new int[5];
Scanner s = new Scanner(System.in);
for(int i = 0; i < 5; i++){
System.out.print("Introduce un valor para la posicin "+i+" : ");
vec[i] = s.nextInt();
}
for(int i = 0; i < 5; i++){
System.out.println("posicion: "+i+" valor: "+vec[i]);
}
}
}
12
import java.util.Scanner;
public class bloque42 {
public static void main(String[] args){
int num;
Scanner s = new Scanner(System.in);
System.out.print("Introduce la cantidad de valores: ");
num = s.nextInt();
double[] vec = new double[num];
double total = 0;
for(int i = 0; i < num; i++){
System.out.print("Introduce el valor "+i+": ");
vec[i] = s.nextDouble();
}
for(int i = 0; i < num; i++){
total += vec[i];
}
total /= num; //esto es lo mismo que: total = total / num
System.out.print("La media aritmtica es: "+total);
}
}
13
Una direccin de memoria es un identificador para una localizacin de memoria con la cual un programa
informtico o un dispositivo de hardware pueden almacenar un dato para su posterior reutilizacin.
Se considera que dos vectores son iguales, si y solo si, los elementos de uno coinciden con los del otro tanto en
valor como en posicin.
14
Donde a.length() nos dar la cantidad de caracteres en un nmero entero e if es la condicin de comparacin.
4.6. Scanner y cifrado de Csar.
import java.util.Scanner;
public class bloque461 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String a;
System.out.println("Introduce una frase: ");
a = s.nextLine();
System.out.println(a);
}
}
El mtodo nextLine() permite recoger una frase por teclado e introducirla en un String.
15
import java.util.Scanner;
public class bloque46 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String frase1,frase2;
int desp = 4;
frase2 = "";
String min = "abcdefghijklmnopqrstuvwxyz !.;";
String may = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ?,:";
System.out.print("Introduce la fase a encriptar: ");
frase1 = s.nextLine();
for(int i = 0; i < frase1.length(); i++){
for(int j = 0; j < min.length(); j++){
if(frase1.charAt(i) == min.charAt(j)){
if(j + desp >= min.length()){
frase2 += min.charAt((j + desp) % min.length());
}
else{
frase2 += min.charAt(j + desp);
}
}
else if(frase1.charAt(i) == may.charAt(j)){
if(j + desp >= may.length()){
frase2 += may.charAt((j + desp) % may.length());
}
else{
frase2 += may.charAt(j + desp);
}
}
}
}
System.out.println(frase2);
int op;
do{
System.out.println("1.- Confimar salir");
op = s.nextInt();
}while(op != 1);
}
}
16
a = b++
a = ++b
a = b-a = --b
17