CURSO : Programacion Java DOCENTE : ING. JUAN ZEVALLOS VALLE 1
Estructura de Datos AGENDA : 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Sentencias de Control 1. Condicionales y Selectivas 1. if-else 2. switch 2. Repetitivas 1. while 2. Do while 3. for / for each 4. Uso de Arreglos 2
Logica de Programación La solución de un programa se puede implementar a traves de un algoritmo que no es otra cosa que el conjunto de pasos o secuencias logicas que debemos seguir para llegar a la solucion de un problema es decir el flujo del algoritmo. Desde la idea hasta el planteamiento del problema se escribe la secuencia de pasos quizas no en forma global sino en problemas especificos o individuales. La elección del lenguaje sera en este caso Java 3
Para poder escribir codigo usando Java se necesita un entorno o ambiente de desrrollo mas conocido como IDE. Todo IDE trabaja en base a proyectos. Un proyecto del IDE es un conjunto de código Java, información asociada a éste en el classpath que es la ruta fisica donde se ubican las librerias que la aplicacion necesita para la ejecucion dependiendo si esta es escritorio(desktop), web o moviles. 4
Una aplicación de escritorio es un programa que se guarda como archivo con extensión java. En Programación orientada a objetos es una clase con un nombre y sintaxis ya definidas por ejemplo Java es case-sensitive (distingue minusculas y mayusculas) public class Main { public static void main(string[] args) { // Colocar aqui todo el codigo que desea probar //y ejecutar para obtener un resultado public Main() { super(); 5
Uso de Algoritmos usando Lenguaje Java 1. Una clase representa a un objeto donde el programador pueda definir atributos o propiedades, metodos. 2. Las propiedades definen caracteristicas del objeto. 3. Presento el siguiente demo donde se definen 4 atributos de la clase persona. package examples; public class Persona { private String apellido; private String nombre; private int edad; private String email; public Persona(String vap,string vnom,int vedad,string vemail){ this.apellido = vap; this.apellido = vnom; this.edad = vedad; this.email = vemail; 6
Sentencias de control 1. La sentencia if evalua una condición y segun sea true o false ejecuta un bloque de codigo. /* Ejemplo Estructura */ if (condición) { instrucciones else { instrucciones Dado una fecha del presente año (día) determinar el día de la semana al cual pertenece. No usar funciones del sistema. Dato: 5 fue Jueves Ejemplo: Día: 5 Resultado: Domingo 7
package demos; public class calculos { String dia=""; public String diasemana(int d){ if (d==1) {dia="domingo"; else if (d==2) {dia="lunes"; else if (d==3) {dia="martes"; else if (d==4) {dia="miercoles"; else if (d==5) {dia="jueves"; else if (d==6) {dia="viernes"; else if (d==7) {dia="sabado"; else{ dia="dia no existe"; return dia; calculos calc = new calculos(); System.out.println(calc.diaSem ana(4)); 8
//if sencillo if ( admitido == true) { System.out.println ("Se ha admitido el valor"); //if else sencillo if ( admitido == true) { System.out.println ("Se ha admitido el valor"); else { System.out.println ("No se ha admitido el valor"); //if con else if y cláusula final else if (DesplazamientoX == 0 && DesplazamientoY == 1) { System.out.println ("Se procede a bajar el personaje 1 posición"); else if (DesplazamientoX == 1 && DesplazamientoY == 0) { System.out.println ("Se procede a mover el personaje 1 posición a la derecha"); else if (DesplazamientoX == -1 && DesplazamientoY == 0) { System.out.println ("Se procede a mover el personaje 1 posición a la izquierda"); else { System.out.println ("Los valores no son válidos"); 9
2. Uso de switch Evalua una expresion y ejecuta una tarea determinada, similar al uso de if - else switch (expresión) { case valor1: instrucciones; break; case valor2: instrucciones; break;... default: sentencias; break; 10
public String diasemana(int d){ switch(d){ case 1: dia="domingo";break; case 2: dia="lunes";break; case 3: {dia="martes";;break; case 4: {dia="miercoles";;break; case 5: {dia="jueves";;break; case 6: {dia="viernes";;break; case 7: {dia="sabado";;break; return dia; 11
2. Uso de while Ejecuta una tarea determinada en forma repetitiva mientras se cumpla una condicion. Ejemplo : public int suma(){ //declara variables int suma=0; int n=1; while (n<=3){ suma+=n; n+=1; return suma; Ejemplo : public int suma2(){ int suma=0; int n=1; do { suma+=n; n+=1; while (n<=3); return suma; 12
2. Uso de for Ejecuta una tarea determinada en forma repetitiva System.out.println("3 x 1 = 3"); System.out.println("3 x 2 = 6"); System.out.println("3 x 3 = 9"); System.out.println("3 x 4 = 12"); System.out.println("3 x 5 = 15"); System.out.println("3 x 6 = 18"); System.out.println("3 x 7 = 21"); System.out.println("3 x 8 = 24"); System.out.println("3 x 9 = 27"); int factor = 1; while ( factor <= 9 ) { System.out.println("3 x " + factor + " = " + 3*factor ); factor++; 13
Veremos como este código cambia ligeramente si en lugar de while presentamos una nueva sentencia denominada for for ( int factor = 1; factor <= 9; factor ++ ) { System.out.println("3 x " + factor + " = " + 3*factor ); Operador coma : for ( int k=1, j=10 ;k < j ;k++,j-- ) { System.out.println(k + " " + j); 1 10 2 9 3 8 4 7 5 6 14
Uso de for each Supongamos que tenemos un arreglo de enteros que deseamos presentar en pantalla, usando la orden for tradicional (en cuyo caso solo se realizará la primera linea de códigos que tengamos debajo de la sentencia), el código, podría quedar así: int[] laienteros = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10; for (int i = 0; i < 10; i ++) System.out.println (laienteros[i]); Java ofrece una funcionalidad extra para la orden for, mediante la que se puede simplificar notablemente el codigo anterior, quedando así: int[] laienteros = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10; for (int lielemento : laienteros) System.out.println (lielemento); int[] laienteros = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10; for (int lielemento : laienteros) System.out.println (lielemento); 15
public int suma3(){ int suma=0; for (int x=0;x<=4;x+=1){ suma = suma + x; return suma; public int suma4(int a,int b){ int suma=0; for (int x=a;x<=b;x+=1){ suma = suma + x; return suma;//1+2 //Aqui se declara una instancia de la clase calculos //usando la palabra reservada new calculos calc = new calculos(); System.out.println(calc.diaSemana(4)); System.out.println(calc.diasemana(3)); System.out.println(calc.suma1()); System.out.println(calc.suma2()); System.out.println("La suma es =>" + calc.suma3()); 16
public class varios { static Vector v=new Vector(3); public static void main(string[] args) { v.addelement("juan"); v.addelement("maria"); v.addelement("meche"); for (int i=0;i<v.size();i++){ System.out.println(v.get(i)); 17
Uso de arreglos Permite almacenar un conjunto de elementos para su posterior uso. try { int[] edades = new int[4]; edades[0]=15; edades[1]=12; edades[2]=22; edades[3]=30; int vsuma =0; for (int n : edades){ vsuma+=n; double p = vsuma/edades.length; System.out.println("La edad promedio es : " + p); catch(indexoutofboundsexception e){ System.out.println(e.getMessage()); catch(exception e){ String vbuscar="jose"; boolean existe=false; String[] nombres = new String[5]; nombres[0]="luis"; nombres[1]="pedro"; nombres[2]="ana"; nombres[3]="veronica"; nombres[4]="jose"; for (int j=0;j<nombres.length;j++){ if (nombres[j].equals(vbuscar)){ existe = true; if (existe){ System.out.println("El nombre " + vbuscar + " si existe"); else { System.out.println("El nombre " + vbuscar + " no existe"); 18
Arreglos bidimensionales (Matrices) int tab = 4; int[][] tb = new int[3][3]; tb[0][0]=15; tb[0][1]=9; tb[0][2]=11; tb[1][0]=10; tb[1][1]=7; tb[1][2]=50; tb[2][0]=14; tb[2][1]=26; tb[2][2]=9; System.out.println(tb.length); for (int i = 0; i < tb.length; i++) { for (int j = 0; j < tb.length; j++) { System.out.println(tb[i][j] + " " + " " + tb[i][j]); 19
Arreglos dinámicos (ArrayList) La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los Arrays, con la ventaja de que el numero de elementos que almacena, lo hace de forma dinámica, es decir, que no es necesario declarar su tamaño como pasa con los Arrays. ArrayList<tipo> nombrearray = new ArrayList<tipo>(); tipo debe ser una clase. Indica el tipo de objetos que contendrá el array. No se pueden usar tipos primitivos. Para un tipo primitivo se debe utilizar su clase envolvente. Por ejemplo: ArrayList<Integer> numeros = new ArrayList<Integer>(); Podemos recorrerlo de forma clásica con un bucle for: for(int i = 0;i<array.size();i++){ System.out.println(array.get(i)); 20
ArrayList<String> nombres = new ArrayList<String>(); nombres.add("ana"); nombres.add("luisa"); nombres.add("felipe"); System.out.println(nombres); // [Ana, Luisa, Felipe] nombres.add(1, "Pablo"); System.out.println(nombres); // [Ana, Pablo, Luisa, Felipe] nombres.remove(0); System.out.println(nombres); // [Pablo, Luisa, Felipe] nombres.set(0,"alfonso"); System.out.println(nombres); // [Alfonso, Luisa, Felipe] String s = nombres.get(1); String ultimo = nombres.get(nombres.size() - 1); System.out.println(s + " " + ultimo); // Luisa Felipe 21
import java.util.arraylist; //Test del for extendido ejemplo aprenderaprogramar.com public class TestForExtendido { public static void main (String [] Args) { ArrayList <String> jugadoresdebaloncesto = new ArrayList<String> (); jugadoresdebaloncesto.add ("Michael Jordan"); jugadoresdebaloncesto.add ("Kobe Briant"); jugadoresdebaloncesto.add ("Pau Gasol"); jugadoresdebaloncesto.add ("Drazen Petrovic"); int i = 0; System.out.println ("Los jugadores de baloncesto en la lista son: "); for (String nombre : jugadoresdebaloncesto) { System.out.println ((i+1) + ".- " +nombre); i++; //Cierre del main //Cierre de la clase 22
Leer Entradas desde el Teclado en Java INTRODUCCIÓN Cuando decimos Entrada nos referimos a ingresar datos, es posible leer los datos que se introducen por medio del teclado en un programa realizado en el lenguaje de programación Java, como Java es un programa orientado a objetos funcionará por medio de clases. Clase Scanner (java.util.scanner) Una de las maneras más sencillas es por medio de la clase Scanner (java.util.scanner), como dato extra cabe mencionar que disponemos de la clase Scanner desde Java 1.5 23
// para leer de teclado necesitamos la clase Scanner import java.util.scanner; public class Ejemplo { public static void main(string[] args) { // sc se usará para leer los datos Scanner sc = new Scanner(System.in); // preguntar la edad System.out.print(" Cuántos años tienes? "); // leer un entero int edad = sc.nextint(); System.out.println("...pues aparentas "+(edad-3)); // main La salida de datos de este programa quedaría así: Cuántos años tienes? 22 Pues aparentas 19 24
System.out.print(" Cómo te llamas? "); Scanner s = new Scanner(System.in); String nombre = s.nextline(); // leer una cadena de caracteres System.out.println("Es un placer conocerte "+nombre); Las clases BufferedReader y BufferedWriter las podemos encontrar en java.io. La mayor ventaja de los buffered es con el BufferedReader que nos permite leer una linea completa, en lugar de carácter a carácter como hacia FileReader,cuando el fichero termina, devuelve null, no un -1 como en FileReader. Con BufferedWriter también podemos añadir una linea, como si pulsáramos un Enter. 25
public static void main(string[] args) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\listas.txt")); BufferedReader br = new BufferedReader(new FileReader("D:\\listas.txt")); //Escribimos en el fichero bw.write("lista de empleados"); bw.newline(); bw.write("================="); bw.newline(); bw.write("juan Perez"); bw.newline(); bw.write("carlos Pariente"); bw.newline(); bw.write("ricardo Torres"); //Guardamos los cambios del fichero bw.flush(); //Leemos el fichero y lo mostramos por pantalla String linea = br.readline(); while (linea!= null) { System.out.println(linea); linea = br.readline(); catch (IOException e) { System.out.println("Error E/S: " + e); 26