Informatica97 - Curso de Programación Imperativa Con Java

Embed Size (px)

Citation preview

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    1/18

    0

    CURSO DE PROGRAMACIN ENJAVA

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    www.informatica97.tk

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    2/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    1

    PROGRAMACIN IMPERATIVA

    1.1.Programas de desarrollo.

    Java Development Kit; ser el complemento de JAVA obligatorio para poder desarrollar a travs de un entorno

    de trabajo como eclipse. Este nos permitir acceder a JDK y poder programar en JAVA.

    1.2.

    Primer programa: Hola mundo.

    Crearemos un nuevo proyecto de JAVA a travs de eclipse (file new Project java project). Dentro de

    este crearemos una nueva clase a la que llamaremos clase1 (por ejemplo). El cdigo del programa deber

    quedar dentro de la clase (delimitada con llaves { }). Nos quedar el siguiente cdigo:

    1

    2 public class clase1 {

    3 public static void main(String[] args){

    4 System.out.println(Hola mundo);

    5 System.out.print(mensaje);

    6 }

    7 }

    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.

    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:

    importjava.util.Scanner;publicclassejemplo {finalstaticScanner s= newScanner(System.in);

    publicstaticvoidmain(String[] args){

    }

    }

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    3/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    2

    Antes de utilizar un atributo hay que declararlo, es decir, darle un nombre dentro de la memoria RAM y decir

    que tipo de atributo es.

    int x; es un nmero entero con nombre x (o cualquier otro que le demos). Al que daremos un valor

    escribiendo x = a; siendo a un nmero entero cualquiera. No solo puede ser un valor nico, tambin puede ser

    el resultado de una operacin o el valor aadido tras introducirlo por teclado (puntos posteriores). Se podr

    mostrar en pantalla el valor del atributo si escribimos: System.out.print(+x); adems podemos aadir texto

    dentro de unas comillas (+x);.

    double x; se trata de un numero con infinitos decimales, el valor que demos a x se indica de la

    misma forma que en el caso anterior. NO pueden repetirse variables en el mismo cdigo! Si no, el programa

    tendra un error (podemos usar a, b, c, x, y, z conjuntos de letras: aux, sys cualquiera que se nos ocurra).

    char x; Es un carcter, una palabra, un smbolo o un nmero. Se inicializan (introducen) entre comillas

    simples ().x = a y para mostrarlos en pantalla se hace de la misma forma que los casos anteriores.

    Para declarar diversas variables pertenecientes al mismo tipo de atributo podremos escribir: int x,y,z; de manera

    que x, y, z, sern nmeros enteros.

    1.4.Operaciones con Atributos.

    Declarando: int a,b,c; y sabiendo que a y b son nmeros enteros y c el resultado de la operacin de los

    anteriores tenemos:

    SUMA c = a + b;

    RESTA c = ab;

    PRODUCTO c = a * b;

    COCIENTE c = a / b;

    RESTO DE LA DIVISION DE ENTEROS c = a % b;

    Podemos eliminar la variable c y decir que a = a + b; que ser ms rpido y nos dar el mismo valor.

    1.5.

    Introduccin de datos por teclado.

    API de JAVA: conjunto de clases por defecto de JAVA; una clase es un conjunto de rdenes.

    http://docs.oracle.com/javase/7/docs/api/.

    Clase Scanner: recoge lo que se introduce por teclado y mete dicho valor a un atributo. La buscaremos dentro

    de la API de JAVA y utilizaremos el comando import en las lneas superiores fuera de llaves y clases.

    Entendemos el significado de mtodo como orden. El mtodo de tipo next sirve para introducir datos: asi

    nextInt servir para introducir nmeros enteros o nextDouble para introducir nmeros con decimales.

    Necesitaremos crear un objeto de la clase Scanner: Scanner s = new Scanner(System.in); donde s es unavariable.

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    4/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    3

    1.6.Segundo programa: intercambiar valores de variables.

    Queremos que las variables a = Ay b = B intercambien su valor de manera que a = B y b = A.

    Debemos introducir 3 variables: a,b,aux; donde aux ser una variable auxiliar. Diremos:

    aux = a;

    a = b;

    b = aux;

    De esta manera hemos intercambiado los valores de a y b sin perder ninguno. En el caso de decir:

    a = b;

    b = a;

    Obtendramos los resultados: a = B y b = B puesto que las lneas se leen en orden descendente y si algo cambia

    el valor de a, b leer el nuevo valor de a.

    2.1. If/else y ejemplo nmero par.

    if es un comando condicional, se introduce como if(){ con un operador dentro del parntesis.

    Operador Significado

    if(x==a){ Si x es igual a a entonces

    if(xa){ Si x es mayor que a entoncesif(x=a){ Si x es mayor o igual a a entonces

    importjava.util.Scanner;publicclassejercicio1 {

    publicstaticvoidmain(String[] args){intnum1,num2,aux;Scanner a= newScanner(System.in);System.out.print("introduce un valor en num1: ");num1= a.nextInt();System.out.print("Introduce un valor en num2: ");num2= a.nextInt();aux= num1;num1= num2;num2= aux;System.out.println("El valor de num1 es: "+num1);System.out.println("El valor de num2 es: "+num2);

    }

    }

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    5/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    4

    if(x!=a){ 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.

    2.2. Tipo boolean y condicionales anidados.

    Un condicional anidado es un conjunto de condiciones que damos al programa para que las compare hasta

    encontrar una verdadera. Es de la forma:

    if(){

    }

    else if(){

    }

    Si colocsemos distintas condiciones solo en la forma if, se compararan todas ellas pudiendo ser verdadera ms

    de una y en caso de que eso ocurra se ejecutaran varios resultados: esto supondra un error en el programa.

    En el caso que hemos planteado como ejemplo el programa leera la condicin de if, en caso de que sea

    verdadera else if no se leer, en cambio, si la condicin de if no se cumple, el programa leer la condicin de

    else if que se ejecutar en caso de ser verdadera.

    Esto da la opcin de repetirse muchas veces sin que el programa vea afectado en gran medida su rendimiento

    (ser un programa eficiente), adems es una estructura simple que permite hacer infinitas comparaciones. Una

    de las condiciones para hacer un buen programa es que este sea eficiente.

    Atributo booleano

    El atributo booleano solo puede tener dos valores: verdadero (true) o falso (false). Es de la forma:

    importjava.util.Scanner;publicclassejercicio1 {

    publicstaticvoidmain(String[] args){Scanner s= newScanner(System.in);inta;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.");}

    }}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    6/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    5

    boolean resultado;

    resultado = true(false);

    if(resultado){

    }

    else{

    }

    Escribiendo if(!resultado) el condicional lee lo contrario sin cambiar el valor de resultado.

    2.3. Tipo char y estructura condicional switch.

    El atributo de tipo char almacena un solo carcter sea letra (a, b, c), nmero (1, 2, 3) o smbolo ($, %, &). Lo

    inicializamos como char variable; y se le asigna un valor de la manera variable = smbolo; ENTRE COMILLAS

    SIMPLES y se puede comparar su valor con una estructura condicional if con cualquier operador. Tambin

    podemos usar una estructura condicional switch. La estructura switch es similar a la estructura if, se inicializa

    como:

    switch(variable){

    case smbolo:

    Finalizando la lnea con dos puntos. Se pueden aadir todos los casos deseados siendo cada uno un smbolo los

    cuales compara al introducir el atributo char. Por ejemplo:

    char letra;

    letra = a;

    switch(letra){

    case b:

    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;

    Al final de la secuencia switch escribiremos default: cuya funcin es similar a la de else{.

    switch funcionar con valores de una variable si utilizamos otro atributo como int o double. En cuyo caso

    sabemos cmo introducirlos por teclado.

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    7/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    6

    2.4. Condiciones mltiples.

    Permiten aumentar el nmero de condiciones en un condicional de tipo if, de manera que esta pueda ser ms

    restrictiva. Dos ejemplos de tipos de condicionales son && (y) y || (o). La primera (&&) es una conjuncin y es

    aditiva a la hora de aadir condiciones, es decir, para que se ejecute el condicional if, el valor (si es un nmero)

    debe cumplir TODAS las condiciones que se han impuesto mediante &&. En el caso de la segunda (||) se tratara

    de una conjuncin o, en ella es SUFICIENTE que se cumpla una de las condiciones para ejecutar el condicional

    if.

    EJERCICIO:Programa que al introducir la hora sume un segundo y que la hora contine siendo de formato

    correcto.

    3.1. Bucles while y for.

    Los bucles son estructuras que se repiten tantas veces como queramos. Existen tres tipos de bucles, los que ms

    se suelen utilizar son while y for, el tercer tipo lo veremos ms adelante. Funcionamiento del bucle: siempre y

    cuando la condicin introducida en el bucle sea verdadera se ejecutar el cdigo que este contenga (entre las

    llaves { }) y se repetir indefinidamente mientras esa condicin siga siendo verdadera, de manera que debemos

    importjava.util.Scanner;publicclassejercicio3 {

    publicstaticvoidmain(String[] args){

    inth,m,s;Scanner t= newScanner(System.in);System.out.print("Introduce las horas: ");h= t.nextInt();System.out.print("Introduce los minutos: ");m= t.nextInt();System.out.print("Introduce los segundos: ");s= t.nextInt();if(h< 0 || h> 24 || m< 0 || m> 59 || s< 0 || s> 59){

    System.out.println("La hora introducida no es vlida");}else{

    System.out.println("La hora introducida es: "+h+":"+m+"."+s);

    }s= s+= 1;if(s== 60){

    s= 0;m+= 1;if(m== 60){

    m= 0;h= h+= 1;if(h== 25){

    h= 0;}

    }}System.out.println("Un segundo mas tarde sern: "+h+":"+m+"."+s);

    }}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    8/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    7

    introducir un contador para que no ocurra lo que llamamos un bucle infinito (el bucle jams dejara de

    ejecutarse, el ordenador gastara todos sus recursos en ejecutar el bucle de manera infinita).

    Bucle while(){ en el parntesis introducimos una condicin.

    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++){

    Escribirj++; 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).

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    9/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    8

    3.2. Ejercicio de bucles: mostrar todos los nmeros que hay entre dos nmeros introducidos por teclado.

    3.3. Bucle do while.

    Este es el tercer tipo de bucle, del cual hablamos anteriormente. Se escribe:

    do{

    }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.

    importjava.util.Scanner;publicclassejercicio2 {

    publicstaticvoidmain(String[] args){Scanner s= newScanner(System.in);booleancomp= true;inta,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(inti= a+1;i< b&& comp; i++){

    System.out.print(i+" ");}

    }}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    10/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    9

    EJERCICIO: programa quepida dos nmeros y que el segundo sea forzosamente mayor que el primero.

    3.4. EJERCICIO: Realizar un men con varias opciones, usa una estructura switch.

    importjava.util.Scanner;publicclassejercicio2 {

    publicstaticvoidmain(String[] args){Scanner s= newScanner(System.in);booleancomp= true;inta,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);}

    }}

    importjava.util.Scanner;publicclassejercicio4 {

    publicstaticvoidmain(String[] args){Scanner s= newScanner(System.in);intop;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){case1:

    System.out.println("Has escogido la primera opcin");break;

    case2:System.out.println("Has escogido la segunda opcin");break;

    }}

    }

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    11/18

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    12/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    11

    EJERCICIO: Realiza un programa que compruebe si un nmero introducido por teclado es primo o no.

    3.7. Eficiencia.

    Programa que busque todos los nmeros primos entre 1 y 200.

    1 solucin funcional.

    importjava.util.Scanner;publicclassnumerosprimos {

    publicstaticvoidmain(String[] args){inta;booleanresultado= true;Scanner s= newScanner(System.in);System.out.print("Introduce un nmero para comprobar si es primo: ");a= s.nextInt();for(inti= 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");}

    }}

    publicclassnumerosprimosentreayb {publicstaticvoidmain(String[] args){

    booleanresultado= true;for(inti= 1;i< 200; i++){

    resultado= true;for(intj= 2; j< i; j++){

    if(i% j== 0){resultado= false;

    }}if(resultado){

    System.out.print(i+", ");}

    }}

    }

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    13/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    12

    2 solucin eficiente.

    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 condicinj < i; es decir, se acabar cuandoj = 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.

    publicclassnumerosprimosentreayb {publicstaticvoidmain(String[] args){

    booleanresultado= true;for(inti= 1;i< 200; i++){

    resultado= true;for(intj= 2; j< i&& resultado; j++){

    if(i% j== 0){resultado= false;

    }}if(resultado){

    System.out.print(i+", ");}

    }}

    }

    importjava.util.Scanner;publicclassBloque41 {

    publicstaticvoidmain(String[] args){int[] vec= newint[5];Scanner s= newScanner(System.in);for(inti= 0; i< 5; i++){

    System.out.print("Introduce un valor para la posicin "+i+" : ");vec[i] = s.nextInt();

    }for(inti= 0; i< 5; i++){

    System.out.println("posicion: "+i+" valor: "+vec[i]);

    }}}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    14/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    13

    4.2. Nueva declaracin de vectores y ejemplo

    Los vectores no son nicamente declarables con una longitud fija, sino que tambin pueden tener una longitud

    diferente segn requiera el usuario de nuestro programa esta longitud se declara como una variable.

    EJERCICIO: Calcular la media aritmtica de los elementos de un vector.

    4.3. Length y ordenamiento de un vector.

    nombre.length nos es el mtodo que nos dar automticamente la longitud de un vector. A continuacin vamos

    a ordenar un vector por el mtodo de la burbuja.

    publicclassbloque43 {publicstaticvoidmain(String[] args){

    int[] vec= {7,5,7,1,6,9};intaux;for(inti= 0; i> vec.length; i++){

    System.out

    .print(vec[i]+" ");}System.out.print("");for(inti= 0; i< vec.length; i++){

    for(intj= i+ 1; j< vec.length; j++){if(vec[j] < vec[i]){

    aux= vec[j];vec[j] = vec[i];vec[i] = aux;

    }}

    }for(inti= 0; i< vec.length; i++){

    System.out.print(vec[i]+" ");}

    }}

    importjava.util.Scanner;publicclassbloque42 {

    publicstaticvoidmain(String[] args){intnum;Scanner s= newScanner(System.in);System.out.print("Introduce la cantidad de valores: ");num= s.nextInt();double[] vec= newdouble[num];doubletotal= 0;

    for(inti= 0; i< num; i++){System.out.print("Introduce el valor "+i+": ");vec[i] = s.nextDouble();

    }for(inti= 0; i< num; i++){

    total+= vec[i];}total/= num; //esto es lo mismo que: total = total / numSystem.out.print("La media aritmtica es: "+total);

    }}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    15/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    14

    Hemos realizado la ordenacin del vector por el mtodo de la burbuja. De manera que cambiando la condicin

    de if se ordenar de mayor a menor ().

    4.5. Comparacin de vectores y direccin de memoria.

    Una direccin de memoria es un identificador para una localizacin de memoria con la cual un programainformtico 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.

    4.5. Qu son los String y cmo se comparan?

    String o cadena de caracteres es un vector de tipo char que almacena frases. A diferencia de los vectores (que

    los comparamos con un bucle) los String se pueden comparar directamente con un condicional if.

    publicclassbloque45 {publicstaticvoidmain(String[] args){

    String a= "Hola mundo";String b= "Hola mundo";System.out.println(a.length());if(a!= b){

    System.out.println("Son diferentes");}else{

    System.out.println("Son iguales");}

    }}

    publicclassbloque44 {publicstaticvoidmain(String[] args){

    int[] v1= {4, 8, 2, 8, 9};int[] v2= {4, 8, 2, 8, 9};booleanres= true;if(v1.length!= v2.length){

    res= false;}for(inti= 0; i< v1.length&& res; i++){

    if(v1[i] != v2[i]){res= false;

    }}if(res){

    System.out.println("Los vectores son iguales");}else{

    System.out.println("Los vectores NO son iguales");}

    }}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    16/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    15

    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.

    El mtodo nextLine() permite recoger una frase por teclado e introducirla en un String.

    importjava.util.Scanner;publicclassbloque461 {

    publicstaticvoidmain(String[] args){Scanner s= newScanner(System.in);String a;System.out.println("Introduce una frase: ");a= s.nextLine();System.out.println(a);

    }}

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    17/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    16

    EJERCICIO: ENCRIPTAR UN MENSAJE CON CIFRADO DE CSAR.

    El Cifrado de Csar se conoce as por ser utilizado por los antiguos romanos. Consiste en colocar los caracteres

    del abecedario de manera ordenada y aumentar cada uno con un contador (o desplazamiento) as si la letra a

    cifrar es la a y el desplazamiento vale 1, el resultado ser b.

    Para el contador que estamos utilizando como predeterminado el valor es 4, de manera que para volver a

    transcribir el mensaje original solo tendremos que utilizar un contador de -4.

    importjava.util.Scanner;publicclassbloque46 {

    publicstaticvoidmain(String[] args){Scanner s= newScanner(System.in);String frase1,frase2;intdesp= 4;

    frase2= "";String min= "abcdefghijklmnopqrstuvwxyz !.;";String may= "ABCDEFGHIJKLMNOPQRSTUVWXYZ ?,:";System.out.print("Introduce la fase a encriptar: ");frase1= s.nextLine();for(inti= 0; i< frase1.length(); i++){

    for(intj= 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);

    }}elseif(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);

    intop;do{

    System.out.println("1.- Confimar salir");op= s.nextInt();

    }while(op!= 1);}

    }

  • 7/25/2019 Informatica97 - Curso de Programacin Imperativa Con Java

    18/18

    Curso bsico de iniciacin al lenguaje JAVA

    Eugenio Romero

    17

    4.7. Matrices en java.

    Las matrices son un vector de vectores, sirven para almacenar datos. En Java las declaramos como:

    tipo[][] nombre=new tipo[filas][columnas];

    Para introducir valores a los elementos podemos acceder desde el cdigo:

    nombre[fila][columna] = a;

    Siendo a un valor del tipo de la matriz. La primera posicin no es la (1,1), sino la (0,0). Podrn ser de las

    dimensiones que se quiera: monodimensional [], bidimensional [][], tridimensional [][][], tetradimensional

    [][][][]

    Podemos leer o introducir valores con un doble bucle, el primero recorre filas y el segundo columnas.

    4.8. Comparacin de matrices y tipos de incrementos.

    Cmo sabemos los String son vectores (matrices monodimensionales) de caracteres que se pueden comparar

    directamente con un condicional. Sin embargo, las matrices numricas deben ser comparadas elemento a

    elemento, para ello lo primero debemos comprobar que el nmero de columnas y filas de ambas es el mismo,

    es decir, que ambas tengan las mismas dimensiones. Una vez cumplida esta condicin continuaremos con la

    lectura elemento a elemento y la comparacin (si las matrices deben ser iguales, distintas, menores, mayores)

    y guardando un valor falso en una variable boolean cuando la condicin (cualquiera de las tres que hemos

    propuesto (misma dimensin de filas, dimensin de columnas y condicin de los elementos)) se incumpla.

    Los incrementos ++ y -- existen de dos tipos:

    a = b++ guardara en a el valor original de by luego en bel valor b+1.

    a = ++b guardara en a el valor b+1 y en b el valor b+1.

    a = b-- guardara en a el valor original de b y luego en b el valor b-1.

    a = --b guardara en a el valor b-1 y en b el mismo valor (b-1).