Enero 19, 2018, 11:54:25 am

Autor Tema: JAVA desde CERO  (Leído 80045 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
JAVA desde CERO
« en: Agosto 11, 2008, 02:12:12 pm »
JAVA desde cero


Objetivos

Construye clases siguiendo especificaciones.
Describe los conceptos fundamentales de la programación orientada a objetos.
Reconoce la sintaxis utilizada en un lenguaje de programación orientada a objetos.
Busca en la documentación del lenguaje acerca del uso de las clases predefinidas.
Utiliza las clases predefinidas en el lenguaje para resolver un problema dado.
Reconoce la sintaxis utilizada en un lenguaje de programación orientada a objetos.


Siguiendo este curso van a aprender a utilizar el lenguaje de programacion Java, a pensar los problemas bajo el paradigma orientado a objetos, a documentar un proyecto orientado a objetos en java y van a aprender caracteristicas propias de como se maneja el lenguaje Java.

Introducción

Primero que todo, deseo compartir mis clases con el Foro... de esta forma todos aprendemos de la misma forma, no creen ?... los objetivos planteados son más que todo una referencia pequeña, de lo que se desea llavar a cabo en este pequeño proyecto... Espero cada dos días, ir agregando información y cursos dentro de este...

Claro esta que antes de ver todo eso, debemos ver algo de Programación Estructurada para aquellos que nunca han visto como hacer un programa, ya sea en JAVA, u en otros lenguajes de programación.

Si queres saber los aspectos generales de Java podes ver la You are not allowed to view links. Register or Login o mas adelante en You are not allowed to view links. Register or Login.

« Última modificación: Abril 20, 2012, 06:58:08 pm por WaesWaes »
SOLO LOS QUE DEJAN DE INTENTAR, FRACASARÁN...

Si no fuera por C, existiría Obol, Pasal, ++, #...

WinJaNet, abre sus puertas, para todos los programadores e interesados en programación!!


Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #1 en: Agosto 11, 2008, 02:12:35 pm »
Armando el entorno

Para trabajar con JAVA, usaremos JDK, se puede descargar de la You are not allowed to view links. Register or Login.

En sistemas como Gnu/Linux pueden instalar el paquete desde los repositorios, hay una version free llamada open-jdk pueden buscar en su gestor de paquetes.

Pero no trabajaremos en sí con el compilador JAVAC, que es el compilador de JAVA, sino utilizaremos un programa para poder trabajar de forma más cómoda con un modo GUI, para ello utilizaremos JCreator Pro que es un IDE de JAVA, descargable de su You are not allowed to view links. Register or Login, disponible para Windows Vista, Win2000 y WinXP.

Guardamos y ejecutamos el EXE:

Apretamos Next (siguiente), y aceptamos la Licencia

Crearemos el PATH (directorio), donde queremos instalar JCreator Pro


Comienza la instalación


Lanzamos el JCreator


He aquí donde nos encontramos con la configuración de programa, decidiremos si queremos que el compilador sea solamente utilizable para el usuario disponible, para todos los usuarios, o solamente para ejecutarlo desde el PATH.


Aquí nos encontraremos con todos los archivos asociados al programa, *.java, *.jcw, *.jcp, *.jsp, *.xml, podemos agregar o eliminar según sea nuestra conveniencia, en este caso, lo dejaremos por defecto.


Aquí nos pide el PATH de jdk, lo buscamos y lo seleccionamos, por defecto lo encuentra. Y luego FINISH.


He aquí nuestro JCreator Pro.



Hay otros IDES que les podrian interesar, este es muy minimalista y no esta para GNU/Linux, pero los hay de todos tipos de hecho tienen Netbeans que es desarrollado por Oracle que es muy completo y multiplataforma, y Eclipse que tambien es completo y multiplataforma, hay mas como Intelli IDEA y BlueJ.

De todas formas con el JDK ya es mas que suficiente, solo que tendran que programar en un editor de texto plano y compilar por consola.

Para saber si el JDK quedo bien instalado tiene que poder ejecutar por consola los comandos:
Código: You are not allowed to view links. Register or Login
java
Y tiene que devolver la ayuda.

Código: You are not allowed to view links. Register or Login
javac
Y tiene que devolver la ayuda.

Si no pasa esto tiene que agragar el PATH de Java en la variable de entorno, es muy simple lo pueden buscar.

Una ves hecho esto para probar que todo anda bien, agarren su IDE o lo que sea que tengan y escriban

Código: (java) You are not allowed to view links. Register or Login
class hola {
    public static void main(String[] args) {
        System.out.println("Hola mundo");
    }
}

Si pueden compilar y ejecutar eso ya esta el entorno listo para programar.


Por el momento hasta que no aprendan mas en este curso pueden programar dentro del main para probar sus codigos es es donde indica el comentario:

Código: (java) You are not allowed to view links. Register or Login
class hola {
    public static void main(String[] args) {
        //programa aca dentro
        int a =1;
        //y todo lo que quieran probar
    }
}

Estaria bueno que hasta que no puedan hacer andar el entorno no continuen, asi pueden ir haciendo algo de practica de lo que aprenden.

Saludos
« Última modificación: Abril 19, 2012, 09:09:48 am por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #2 en: Agosto 11, 2008, 02:13:04 pm »
Estructura

Es la estructura de un programa basado en JAVA, por ahora será nuestro "Ave María"... xD, siguiendo el curso, se irá viendo como corresponde cada secuencia...

  • Sentencia de paquetes (packages) (opcional)
  • 0,1,2,3,4..... N sentenciasde importación
  • Serie de comentarios (opcional)
  • Declaraciones de clases privadas (si se desea, claro)
  • Una declaración de clases públicas
  • Declaración de clases
  • Declaración de variables de la clase
  • Declaración de variables de instancia
  • Definición de constructores
  • Definición de métodos
« Última modificación: Abril 19, 2012, 09:03:14 am por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #3 en: Agosto 11, 2008, 02:13:31 pm »
Generalidades y Características del lenguaje

Aspectos Històricos

  • Sun Microsystem lider en Servidores para INTERNET, desarrolla JAVA con el fin de eliminar incompatibilidades.(1991)
  • Fue un proyecto que reboto mucho tiempo por distintos departamentos de SUN, java como un lenguaje de pequeños electrodomésticos.
  • El mercado inicial de JAVA (a cargo de la filial de Sun Microsystem, FirsPerson Inc.) eran los equipos como microondas, tostadores y fundamentalmente televisión interactiva.
  • James Gosling, miembro del equipo, con mas experiencia en lenguajes de programación había estado trabajando en su tiempo libre en un lenguaje de programación que el llamo OAK, cuyas bases fueron C++.(1990)


  • El primer proyecto que uso OAK, se llamo proyecto Green, el cual era un sistema de control completo de los aparatos electrónicos y el entorno de un hogar.
  • OAK era un nombre existente.
  • Duke es la mascota de Java, aunque también se usa la taza de café (Java nace entorno a una conversación, junto a un café).
  • Bill Joy, cofundador de SUN y uno de los principales desarrolladores de UNIX de Berkeley, presento JAVA en agosto de 1995.

Características

Es simple.

  • Ofrece toda la funcionalidad de un lenguaje potente, es perecido a C++.
  • Utiliza Garbage Collector (reciclador de memoria dinámica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello, cuando entra en acción permite liberar bloques de memoria muy grandes, lo que reduce la fragmentación de la memoria.
  • Reduce 50% los errores mas comunes de programación al eliminar características como:

Aritmética de punteros
no existen referencias
registros (struct)
definición de tipos (typedef)
macros (#define)
necesidad de liberar memoria (free).

Es orientado a Objetos

  • Java incorpora la resolución dinámica de métodos, características que deriva del lenguaje Objettive C.
  • Usa RTTI (Run time type idetification) que define la interacción entre objetos, excluyendo variables de instancias o implementación de métodos.
  • Modo de organizar sus programas.
  • Modelamiento de objetos del mundo real.


Es distribuido.

  • Capacidad de interconexión TCP/IP, existen librerias de rutinas para acceder e interactuar con protocolos como http y ftp.
  • Java en si no es distribuido, si no que proporciona las librerias y herramientas para que los programas puedan ser distribuidos, es decir, que funcione en varias máquinas, interactuando.

Es de arquitectura Neutral.

  • Java compila su código a un archivo objeto de formato independiente de la arquitectura de la maquina en que se ejecutara.


  • El código fuente java se compila a un código de bytes de alto nivel independiente de la máquina. Este código (byte - Code) esta diseñado para ejecutarse en una máquina hipotética que es implementada por un sistema run time que si es dependiente de la máquina.
  • Lo único dependiente del sistema es la máquina virtual (JVM) y las librerías fundamentales, además habrá APIs de Java que también entraran en contacto con el hardware y serán dependientes de la máquina.


Ejemplos de APIs

  • JAVA2D: gráficos 2D y manipulación de imágenes.
  • Java Media Framework: Elementos críticos en el tiempo, audio, video.
  • Java Animation: animación de objetos 2D.
  • Java Telephony: Integración con telefonía.
  • Java Share: Interacción entre aplicaciones multiusuario.
  • Java 3D: gráficos 3D y su manipulación.

Es seguro.

  • Si los byte codes pasan la verificación sin generar ningún mensaje de error, entonces sabemos que:
  • El código no produce desbordamiento de operando en la pila.
  • Todos los tipos, los parámetros de todos los códigos de operación son conocidos y correctos.
  • No ha ocurrido ninguna conversión ilegal de datos.

Es portable.

  • Independiente de la plataforma.
  • Un entero (int) en java, siempre será un entero de 32 bits.

Es multitarea.

  • Java permite muchas actividades simultáneas en un programa.
  • Java provee su propio navegador (Hotjava).
  • Es un sistema federado, el navegador es un coordinador de piezas y cada pieza es responsable de una función. Las piezas se pueden añadir dinámicamente a través de la red.

Es eficiente

  • Existen compiladores de Java para código Nativo
  • JIT (Just in Time)
  • Es Dinámico
  • Objetos usados siempre en forma dinámica automáticamente.


Versiones del Lenguaje

  • Java 1.02: Versión mas difundida y la última de la versión 1.0 que estaba embutida en browser mas antiguos.
  • Java 1.1.0: Esta versión incorpora grandes cantidades de funcionalidades entre las más importantes java RMI, JavaBeans, nuevo modelo de eventos, JDBC.
  • Java 1.2: Una de las principales características JFC (Java Foundations classes, una biblioteca que contiene los componentes de Swing)
  • Java 1.4: Una de las últimas versiones, incorpora nuevas mejoras, llamada java 2.0
« Última modificación: Abril 20, 2012, 07:02:10 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #4 en: Agosto 11, 2008, 02:14:04 pm »
Tipos de datos y variables

En mis primeros años que comencé a estudiar programación, buscando información, tutoriales y demases, nunca encontré, algo que detallara los tipos de variables en sí. Por ello quiero dar a conocer de la forma más clara posible tipos de datos que hay.

Los tipos de datos se utilizan, para que el computador trabaje bajo un cierto parámetro, ya sea números (decimales o no, reales) y carácteres. Son aquellos que nos permiten interpretar algun tipo de información

Los tipos de datos utilizados en JAVA son:
Citar
                      Tipos de datos                   Valores

byte          8 bits complemento a 2          -127 a 127
short        16 bits complemento a 2         -32767 a 32767
int            32 bits complemento a 2          -2147483648 a 2147483648
long         64 bits complemento a 2         -9 mil billones a -9 mil billones

                     Números Reales

float           32 bits IEEE 754                    3,4 * 10^-38 a 3,4 * 10^38
double       64 bits IEEE 754                   1,7 * 10^-308 a 1,7 * 10^308

                      Otros Tipos

boolean      tru or false                              0 o 1
char           16 bits de caracteres            alfabeto

byte, short, int y long, son tipos de datos enteros. Estos identificadores son representados bajo tres formatos, Hexadecimal, Decimal y Octal.

float y double, son tipos de datos flotantes, esto quiere decir que son variables de tipo fraccionaria (con decimales).

boolean, es un tipo de estado que representa bi-valores, esto significa que son dos valores, ya sea true o false, false = 0 y true >=1.

char, tipo carácter, se utiliza para almacenar tipos Unicode simple. este tipo de dato almacena 16 bits de caracteres en un entero.

Citar
Descripción                          Representación          Valor Unicode

Carácter Unicode                       \udddd
Número Octal                             \ddd
Barra Invertida                            \\                              \u005C
Continuación                               \                                  \
Retroceso                                    \b                            \u0008
Retorno de carro                          \r                             \u000D
Alimentación de formularios          \f                             \u000C
Tabulación horizontal                   \t                             \u0009
Línea nueva                                 \n                             \u000A
Comillas simples                           \’                             \u0027
Comillas dobles                             \"                            \u0022
Números ASCII                          0-9                         \u0030 a \u0039
Alfabeto ASCII mayúsculas        A – Z                       \u0041 a \u005A
Alfabeto ASCII minúsculas         a – z                        \u0061 a \u007A

Explico esto a grandes ragos, cuando declaramos un carácter, se puede realizar de dos formas:

Código: (java) You are not allowed to view links. Register or Login
char c = 'A';
ó sino

Código: (java) You are not allowed to view links. Register or Login
char c = '\u0041';
Comentario avanzado:

En reliadad para las operaciondes de punto flotante java no utiliza los estanderes IEEE al pie de la letra, porque como el programa debe correr en cualquier plataforma que soporte Java,muchas plataformas no podrian soportar por ejemplo un numero IEEE de 64 bits y habria un monton de underflows y numerics overflows, asi que Java deja que la virtual machine decida la mejor forma de almacenar un numero en esa plataforma.

Si se quiere guardar un numero con el formato IEEE al pie de la letra para tener mas rendimiento y compatibilidad Java proporciona la palabra reservada strictfp que se agrega antes de los datos que se quieren estandarizar.
« Última modificación: Abril 17, 2012, 01:30:28 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #5 en: Agosto 11, 2008, 02:14:25 pm »
Identificadores

Primero es lo primero:

Palabras reservadas en JAVA

Código: (java) You are not allowed to view links. Register or Login
abstract
double
int
strictfp
boolean
else
interface
super
false
break
extends
long
switch
null
byte
final
native
synchronized
true
case
finally
new
this
catch
float
package
throw
char
for
private
throws
class
goto
protected
transient
const
if
public
try
continue
implements
return
void
default
import
short
volatile

Para crear Identificadores debemos seguir las siguientes reglas:

  • No pueden llevar el nombre de alguna palabra reservada.
  • Es sencible a las mayusculas, entonces B != b.
  • Debe comenzar por una letra, _ o $. seguido de los carácteres que se desen

Un pequeño ejemplo sería un identificador de tipo flotante con el nombre de cph, _cph, $cph.

Código: (java) You are not allowed to view links. Register or Login
float cph;
float _cph;
float $cph;

Ps. Si falta alguna palabra reservada, por favor dar aviso... :P
« Última modificación: Abril 05, 2012, 01:08:08 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #6 en: Agosto 11, 2008, 02:14:45 pm »
Operadores

Cuando hablamos de Operadores nos referimos a ciertas categorías:

  • Aritméticos
  • Asignación
  • Instanceof
  • Incrementables
  • Unarios
  • Relacionales
  • Lógicos
  • Concatenables
  • A nivel de Bits

Aritméticos:

Son aquellos Operadores básicos dentro de la matemáticas:

  • Suma = ‘+’
  • Resta = ’-’
  • Multiplicación = ’*’
  • División = ’/’
  • Resto de una división = ’%’

Ejemplo de resto:
9 % 4 = 1

Asignación:

Estos más que todo se utilizan para simplificar el trabajo de teclado, además se basan en los Operadores Aritméticos.:

  • += ; valor1 += valor2 -> valor1 = valor1 + valor2
  • -= ; valor1 -= valor2 -> valor1 = valor1 - valor2
  • *= ; valor1 *= valor2 -> valor1 = valor1 * valor2
  • /= ; valor1 /= valor2 -> valor1 = valor1 / valor2
  • %= ; valor1 %= valor2 -> valor1 = valor1 % valor2

Instanceof:

Este Operador nos permite saber si el Objeto pertenece a la clase llamada o no:

La sintaxis:
      
Código: (java) You are not allowed to view links. Register or Login
Objeto Instaceof Clase
Incrementables:

Este tipo de Operadores, son los que permite incrementar o disminuir en uno, la variable:

  • ‘++’ = incrementa en uno
  • ‘--‘ = disminuye en un

Ejemplo:

Contador++ = contador incrementa en uno su valor
Contador-- = contador disminuye en uno su valor.

Unarios:

Más fácil comer papas fritas, sirven para cambiar el símbolo de una operación:

  • +
  • -

Ejemplo:

2 + 1 = 2 + (-1) -> 2 – 1

Relacionales:

Más de alguno, os acordará cuando el profesor de matemáticas/geometría/algebra, nos pedia que teniamos que saber que cifra era mayor, igual o menor que otra, o incluso si eran distintas. Los operadores relacionales se utilizan y son para eso, para realizar comparaciones:

  • ‘>’ -> mayor que
  • ‘<’ -> menor que
  • ‘==’-> igual que
  • ‘!=’-> distintos que
  • ‘<=’-> menor igual que
  • ‘>=’-> mayor igual que

Lógicos

Los operadores lógicos, entregarán un valor bolean, pero esto no significa que entregarán true o false, sino que compararán los dos valores que se estan comparando en el momento:

  • ‘&&’ -> Ambas entradas deben ser verdaderas
  • ‘||’ -> Ambas entradas deben ser falsas
  • ‘|’ -> Una entrada tiene que ser falsa
  • ‘&’-> Una entrada tiene que ser verdadera
  • ‘!’ -> Niega la entrada

Concatenables:

El Operador de concatenación se utiliza para agrupar cadenas de caracteres:

  • ‘+’

Ejemplo
"Hola" + variable + "como estás"

A nivel de Bits

Son aquellos operadores que se dedican al desplazamiento de bits:

  • ‘<<’ -> desplaza hacia la izquierda
  • ‘>>’ -> desplaza hacia la derecha
  • '>>>' -> Desplazamiento a la derecha sin signo
  • ‘&’ -> tabla de verdad (and)
  • ‘|’ -> tabla de verdad (or)
  • '^' -> tabla de verdad (xor)

Operador Ternario

expresion ? operacion1 : operacion2

Evalua la expresion y en caso de ser verdad ejecuta la operacion1 sino la operacio2

Ejemplo:

Código: (java) You are not allowed to view links. Register or Login
(a<b) ? a=b : b=a;
lo que hace es asignarle al mas chico el valor del mas grande.

Hay algunos operadores mas que no se ven aca como por ejemplo mas de asignacion que son estos:

<<=
>>=    
>>>=
&=    
|=    
^=

Y probablemente algunos otros =D

Saludos
« Última modificación: Abril 08, 2012, 03:25:57 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #7 en: Agosto 11, 2008, 02:15:26 pm »
Estructuras de Control

Como en todo lenguaje de programación existen las Estructuras de Control, JAVA no es la excepción.

En este apartado, nos basaremos en la Estructura de control, que se subdivide en dos, Iteración y Selección. Este tipo de sentencias nos permiten hacer una programación más entrenida y menos secuencial.

Sentencias de tipo Iteración:

Este tipo de sentencias nos permiten realizar una operación tantas veces como sea necesaria, un pequeño ejemplo es cuando nos piden que mostremos un carácter cinco o hasta más veces, para no repetir la misma instrucción se utilizan este tipo de sentencias iterativas.

  • Sentencia Iterativa While

Esta sentencia es la más sencilla de utilizar, se basa en que la condición empleada sea verdadera, y en el caso de lo contrario, se termina y sale de la sentencia.

Su sintaxis es la siguiente:

Código: (java) You are not allowed to view links. Register or Login
while (condicion)
{
Sentencia1;
Sentencia2;
Sentencia3;

}

Hasta que termine por un negativo o falso (false), tenemos que procurar que la sentencia termine en algún momento, de lo contrario terminaría nunca, lo cual se denota bucle infinito.

  • Sentencia Iterativa do While

En este tipo de sentencias, primero se realiza la acción para luego confirmar la condición dada.

La sintaxis es de la siguiente forma:

Código: (java) You are not allowed to view links. Register or Login
do
{
Sentencia1;
Sentencia2;
Sentencia3;

}
while (condicion);

  • Sentencia Iterativa for

En las sentencias previas, podríamos avernos dado cuenta que en aquellas sentencias no sabíamos el número exacto de ciclos que daría. En este tipo de sentencia (for), se utiliza específicamente cuando sabemos cuantos ciclos deben efectuarse antes del término del ciclo.

La sintaxis es la siguiente:

Código: (java) You are not allowed to view links. Register or Login
for (tipo_de_valor nombre_variable = valor_varible;
nombre_variable operador nombre_variable1;
nombre_variable operador)

Un pequeño ejemplo:

Código: (java) You are not allowed to view links. Register or Login
for (int cph = 0; cph < 69; cph++)
{
System.out.print ("Esto se mostrará 69 veces");
}

Sentencias de Selección

Este tipo de sentencias se diferencia, ya que en estas se dedican a la comparación de variables. Un ejemplo de esto, es el famoso semáforo, que haceis si la luz da rojo ?, nos detenemos o seguimos depende del criterio de cada uno, aunque lo lógico y prudente es detenerse, Si el semáforo da luz roja, detenerse, de lo contrario seguir.

  • Sentencia de Selección if-else

El significado de esta sentencia se denota en si pasa algo hacerlo, sino hacer otra cosa.

Sintaxis:

Código: (java) You are not allowed to view links. Register or Login
if (condicion)
{
Sentencia1;
Sentencia2;
Sentencia3;

}
else
{
Sentencia1;
Sentencia2;

}

Un pequeño ejemplo de ello es:

Código: (java) You are not allowed to view links. Register or Login
//…
if ( x % 4 == 0 )
{
if ( x % 100 == 0 )
{
if ( x % 400 == 0 )
{
System.out.println("Es bisiesto");
}
else
{
               System.out.println("No es bisiesto");
}
}
else 
{
System.out.println("Es bisiesto");
}

else
{
System.out.println("No es bisiesto");
}
//…

  • Sentencia de Selección Swith

Este tipo de sentencias se dedica a estructurar todas las sentencias de selección múltiple. Swith trabaja evaluando cada tipo de expresión, y el intérprete busca las variables con el valor correspondiente. En el caso de encontrar dicha variable la ejecuta, hasta el momento de encontrarse con una quebradura (break) del programa. Si no encuentra variable con la cual evalúa la expresión buscará por defecto una variable llamada default (opcional).

Sintaxis:

Código: (java) You are not allowed to view links. Register or Login
swith (expresion)
{
case ‘constante1’:
Sentencia1;

break;
case ‘constante2’:
Sentencia2;

break;
default:
Sentenciad;

}

Fijaros que en el momento de la condición se denota con comillas simples (‘ ‘), y terminando con dos puntos ( : ), al contrario de las sentencias que tienen la terminación del punto y coma ( ; ).


  • Continue y Break

Continue y Break son dos sentencias que se usan para irrumpir un bucle, estan medio mal vistas desde el ojo del buen programadro porque chocan contra la programacion estructurada y hacen mas ilegible el codigo, pero igual existen.

continue se usa para detener una iteracion de un bucle y break para detener todo el bucle.

por ejemplo:

Código: (java) You are not allowed to view links. Register or Login
int a = 0;
for (int i = 0; i < 10; i++) {
  a++;
  continue;
  a--; //nunca se va a ejecutar porque continue salta
}

al terminar el bucle a vale 10;

Código: (java) You are not allowed to view links. Register or Login
int a = 0;
for (int i = 0; i < 10; i++) {
  a++;
  break;
  a--; //nunca se va a ejecutar porque break salta
}

al terminar el bucle a vale 1, porque break rompe el bucle no la iteracion.

Tambien esta la palabra reservada "goto" que se usa para esas cosas en otros lenguajes, pero en java solo es palabra reservada, no se puede usar para nada.

Tambien se pueden usar etiquetas para saltar a donde se quiera (al estilo asm).


Código: (java) You are not allowed to view links. Register or Login
int a =0;
bucle1:
for (int i = 0; i < 10; i++) {
  a++;
  for (int k = 0; k < 10; k++) {
    a++;
    break bucle1;
  }
}

De esta forma tenemos dos for anidados, si quisieramos cortar los dos a la ves no se podria porque break rompe uno pero sigue el otro, asi que con porner una etiqueta fuera se cortan los dos, similar con continue.

Pero estas cosas mejor no hacerlas porque dejan el codigo muy desprolijo. cuanto menos break y continue usen, mejor.

Saludos
« Última modificación: Abril 15, 2012, 02:00:31 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #8 en: Agosto 11, 2008, 02:15:54 pm »
Alcance de las variables

Algo corto que voy a explicar es el alcance que tiene las variables...

Una variable se puede acceder dentro del bloque donde fue definida, por ejemplo:

Código: (java) You are not allowed to view links. Register or Login
for(int i=0;i<10;i++) {
    //algo
}
i = i +2; //error, i no existe, fue definida en el for, y al cerrar la llave } dejo de existir, hay que declararla con int i

Código: (java) You are not allowed to view links. Register or Login
if(true){
    int a = 0;
}
//algo
a++; //error, a existio dentro de las llaves del if, aca ya no existe.

Este problema se va a extender mas adelate con los metodos, ya lo veremos.


Ingreso y Despliegue de Datos

Tenemos que mencionar que todos los programas basados en JAVA serán manipulados por la clase System, que pertenece a la librería java.io.* (entrada de datos)...

para importa un paquete (package), usaremos import, y en este caso java.io.*, por la razón que por el momento no nos interesa saber de donde pertenece la libreria exacta que hace la entrada de datos

System.in, representa la entrada standart
System.out representa la salida de datos

BufferedReader (es la clase que usaremos para la lectura de los datos)

Ahora veremos, como hacer que el programa "ingrese los datos"...

Código: (java) You are not allowed to view links. Register or Login
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BuffereReader (isr);

Leamos un poco, para comprender lo que dice...

Haremos una clase InputStreamReader es quien a groso modo, el ingreso de datos, ya que transforma un bytes a línea de carácteres, los lee y los decodifica... sacando conclusiones:

Se crea una clase InputStreamReader isr (se le puede dar cualquier nombre, yo le pongo isr, para que no se olvide que lo que se crea), de una nueva clase InputStreamReader, que hace el ingreso de datos desde System.in...

BufferedReader, más que todo lee el texto que es ingresado, y al igual que la línea anterior, se lee...

Se crea una clase BufferedReader br (cualquier nombre), de una nueva clase BufferedReader desde isr (InputStreamReader)...

Ahora, esto se me ocurrio, analizando un poco todo esto, y gracias a Plaga, la duda fue concluída de buena forma...

Código: (java) You are not allowed to view links. Register or Login
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));

Esto se puede leer de la siguiente forma:

Se crea una clase BufferedReader llamada br, de una clase BufferedReader desde InputStreamReader llamado desde System.in (De esta forma leemos los datos y se ingresan)

Ahora cómo debería quedar el programa ???

El Método Main

Código: (java) You are not allowed to view links. Register or Login
public static void main(String[] args)
public y static son modificadores de main.

- El metodo main no devuelve nada indicado por void.
- El metodo main tiene identificador "main".
- El metodo main acepta cero o más objetos de tipo String, se puede enviar desde la linea de comando valores a ser ocupados en el main.

Código: (java) You are not allowed to view links. Register or Login
import java.io.*;

public class nombre
/* Cuidado he aquí donde tenemos un poco de cuidado
* si el nombre es distinto al archivo saldrá un error de clase
* en la compilación del programa
*/
{
    public static void main(String[] args)
    {
      BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
      // Aquí todo lo demás del cuerpo del programa..
    }
}

Ahora que entendimos esta pequeña parte del code, podemos seguir avanzando...

Para que ingrese los datos y quede en la memoria:

Código: (java) You are not allowed to view links. Register or Login
System.out.print // todo el code se pondrá al costado
System.out.println // todo el code hará un salto de carro

Ahora que sabemos como es el asunto, veremos para que los datos queden en memoria..

Código: (java) You are not allowed to view links. Register or Login
tipo_de_dato = Integer.parseInt(br.readLine());
Explicando un poco este code, es de la siguiente forma:

El tipo_de_dato será leído desde el Buffer, para ser guardado como un tipo entero (en este caso).

Actualizacion


En las versiones mas recientes de Java existe la clase Scanner para poder ingresar datos se usa de esta forma:

Hay que importar la clase

Código: (java) You are not allowed to view links. Register or Login
import java.util.Scanner;
Se instancia un objeto de la misma:

Código: (java) You are not allowed to view links. Register or Login
Scanner reader = new Scanner(System.in);
Y se lee un string desde el teclado

Código: (java) You are not allowed to view links. Register or Login
String texto = reader.next();
Tener en cuenta con el metodo next() leemos un string si queremos leer otro tipo de dato hay que usar otro metodo, por ejemplo:

Código: (java) You are not allowed to view links. Register or Login
boolean nextBoolean()
byte nextByte()
double nextDouble()
float nextFloat()
int     nextInt()

Y muchos mas You are not allowed to view links. Register or Login

Ahora debemos de pensar una pequeña cosa, el programa lo manejará el usuario, y como siempre si al usuario se le dice ingresa un número, el usuario ingresa una letra... entonces debemos de estar preparados para errores, y para esto ocuparemos las famosas sentencias try & catch...

try & catch

Código: (java) You are not allowed to view links. Register or Login
try
{
// code
}
catch (Exception e)
{
// code de la excepción
}

Las Excepciones se usan en el caso de error, ya sea de una transformación de un dato hacia otro o en el caso de un error 0 ( :P, Error de Usuario)

Todo nuestro code debe estar dentro de try... ya que intentamos realizar algo...

En el caso de catch, es todo lo que en el caso de error...

Tambien existe la sentencia finally que es un bloque que se hara en caso de que haya o no un error:

Código: (java) You are not allowed to view links. Register or Login
try{
    //algo
} catch (Exception err) {
   //fallo
} finally {
   //me ejecuto por mas que fallo o no
}

Ahora chequemos el code, como estaría quedando..

Código: (java) You are not allowed to view links. Register or Login
import java.io.*;

public class nombre
{
    public static void main(String[] args)
    {
      BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
     try
     {
        // nuestro programa
     }
     catch (Exception e)
     {
        System.out.println("Error");
     }
    }
}

El uso de try y catch expuesto aca es basico, se vera mas adelante con mayor detenimiento el uso de varias excepcionnes, catch consecutivos y throws.
« Última modificación: Abril 05, 2012, 06:45:04 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #9 en: Agosto 11, 2008, 02:16:22 pm »
Codigos y Ejemplos

Vamos a hacer un descanso aca y aprovechamos para practicar que es lo que se sabe hasta ahora con varios codigos y aclaraciones segun vallan apareciendo.

Aclaracion: Si se escribe un codigo de este estilo:

Código: (java) You are not allowed to view links. Register or Login
public class hola{
...
}

Se tiene que guardar si o si en el archivo "hola.java" debido a que se uso "public" delante de "class" (se explicara public mas adelante).

Esto es para eliminar ambiguadades y hacer un poryecto mas legible, no puede estar en el archivo "cuadrado.java" la clase "circulo" que define el comportamiento de un circulo, esta muy mal si se programa en grupo hacer eso.

Codigo Manejo de variables

Código: (java) You are not allowed to view links. Register or Login
public class variables {

public static void main(String[] args){
int entero; //se define un entero sin valor alguno todavia
int entero1 = 9; //se define un entero con un valor
boolean bool = true; //se declara una variable booleana que vale true
entero = 5; //se le asigna un valor al entero que se habia declarado
entero1 = 4; //se sobreescribe el valor de entero1 ahora vale 4
entero = entero1; //se sobreescribe el valor de entero, ashora val 4
long l = 10;
char caracter = 'a';
caracter = '$';
caracter = '\n'; //es UN caracter "\n" indica salto de linea
double = 1.1;
}
}

Codigo uso de operadores:

Código: (java) You are not allowed to view links. Register or Login
//Uso de Operadores
public class Operadores {

public static void main(String[] args){
//Aritmeticos
int a = 4, b = 5;
int result = a + b; //result = 9
result = a - b; // -1
result = a * b; // 20
result = a / b; //0 (porque el tipo es int)
double resultado = a / b; //0.8 ( ahora si :) )
result = a % b; // 4/5 es 0 sobran 4 <- result
//se pueden usar numeros en ves de variables tambien
result = (a + 4)/(b * 5);


//Asignacion

result = 0;
result += a; //result = result + a = 4
result += a; //result = result + a = 8
result -= a; //result = result + a = 4
//es lo mismo con los demas

//instanceOf todavia no lo vamos a ver

//Incrementales

result = 0;
result++; // ahora vale 1
result++; // ahora 2
result--; //ahora 1

//Algo importante. (result vale 1 entonces ...)

int num = result++; //num vale 1 y result 2
result--; //volcemos result para atras
num = ++result; //se sobreescribe num, ahora num vale 2 y result 2
//esto es porque si se coloca delante suma y despues se asigna
//y si se coloca detras se asigna y despues suma.

//Unarios

a = -1; // a vale -1 (muy facil)
b = -a; // b vale 1 (--1 = 1) =D

//Relacionales (devuelven un valor boolean)

boolean resul;
resul = (4<5); // true
resul = (4==5); //false
resul = (a!=b); //true

//Logicos (devuelven boolean)

resul = true || false; //1 o 0 es 1 (true)
resul = true && false; //1 y 0 es 0 (false)

//por las propiedades del algebra de bool si en un O el primero es 1
//el resultado es 1, no hace falta evaluar el segundo, lo mismo
//para el Y con los 0, si se quiere que se evaluen los 2 entonces es

resul = true | false; //devuelve lo mismo pero se evaluo el false

//tambien se pueden usar variables

boolean boo = true;
resul = boo & true; //que evalua los dos true y devuelve true

//y en todos los operadores se puede usar la misma variable

resul = resul & resul; //que como valia true, true y true es true
resul = !resul; //ahora vale false por el operador de negacion

//el operador de concatenacion de strings +
//hay que notar que no es el mismo que el + de arriba
//se dice que esta SOBRECARGADO cuando una misma cosa hace dos tareas diferentes

String sa = "Hola", sb = "Chau";
String sre = sa + " " + sb; // "Hola Chau" (notar que hay un espacio entre medio)
sre = sa + sb; // "HolaChau"

//Los operadores de bits no estan, casi no se usan, pueden ver ejemplos en internet ;)

}
}

Código: (java) You are not allowed to view links. Register or Login

public class Flujo {

public static void main(String[] args){
int a = 0;
int b = 10;
//While

//bucle infinito, a se va a incrementar hasta que se rompa algo

/*
while(true){
a++;
}
*/


a = 0;
while(a<=b){
a++; //hasta que a sea igual a b se aumenta de a uno
}

while(a<(b*b) && a!=15) {
a++; //mientras que sea menor que 100 y distinto de 15
//para este caso como a va a valer 10, se corta con la condifcion de 15
}


//do while

a = b = 0; //doble asignacion se puede ;) a=0 y b=0

do{
a++;
b+=2;
} while (a!=0 && !(b==0));

//primero ejecuta las dos cosas y despues lee la condicion, util para
//que el usuario inicialize variables que afectan la condicion
//en este caso es bucle infinito porque solo se corta si los 2 valen 0

a = 0;
for (int i = 0; i <= 69; i++) {
            a += i; //a = 0+1+2+3+4+5+6+...+69;
    }

for(; a>0; a--){
b = a*2; //b = 2 (al final de todo)
}
//notar que se usa "a" que ya estaba definida y no hace falta definir una variable "i"
//por eso el primer campo esta vacio.

//bucle infinito no hay ninguna condicion
/*
for(;;){
a=b;
}
*/

//for mal hecho ya que seria infinito, pero anda bien porque se
//modifica i dentro del for
for(int i=0; i<10;){
i++;
}

//hay millones de formas mas de hacer un for, el limite es la imaginacion =D

//If ElseIf Else

a=0;
b=6;

if(a<b) {
b++; //se va a ejecutar esto
}
else {
b--; //esto nunca se va a ejecutar
}

if( a+b < a*b ) {
a++; //no se va a ejecutar
}
else if (a+b == a*b) {
a--; //tampoco se ejecuta
}
else {
b++; //este si, es el caso de >
}

//se pueden poner tantos else if como uno desea, y tambien el if solo
//pero no un else sin if

if(a==0 && b==6){
a++;
b++;
}

//switch

b = 2;

switch(b){
case 1: b++; break;
case 2: b--; break; //este se ejecuta (b--)
case 3: b++; break;
}

//si no se pone break se ejecutan todos los de abajo:

b=2;

switch(b){
case 1: b++;
case 2: b--; //este se ejecuta
case 3: b++; //este tambien despues del otro
}

//se pueden poner gran cantidad de sentencias

switch(b){
case 1:
b++;
a++;
a=b;
break;
case 2: b--; //este se ejecuta
case 3: b++; //este tambien despues del otro
}


//hay una opcion que se ejecuta siempre
b = 3;
switch(b){
case 1: b++; break;
case 2: b--; break;
case 3: b++; break; //este se ejecuta
default: b--; //este siempre
}
//b = 3 :)

}
}

Código: (java) You are not allowed to view links. Register or Login
import java.util.Scanner;

public class Entrada {

public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int a=0;

System.out.print("Ingresa un numero: ");

try {
a = scn.nextInt();
}
catch(Exception err) {
System.out.println("Te dije un numero!!");
}

}
}

Código: (java) You are not allowed to view links. Register or Login
import java.util.Scanner;

public class asd {

public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int a=0,b=0;

System.out.println("Calculadora en Java");


boolean numeroValido = false;
do {
System.out.println("Ingresa un numero");
try {
a = scn.nextInt(); //se lee un numero
numeroValido = true;
}
catch(Exception err) {
System.out.println("Te dije un numero!!");
scn.next(); //se descarta lo que hay en el scanner, sino siempr lee eso
}
} while( numeroValido == false );

System.out.println("Ingresa un numero entre 0 y 20 o un 35");

numeroValido = false;

do {
try {
b = scn.nextInt(); //se lee un numero
if( (b<=20 && b>=0) || b==35 ) {
numeroValido = true;
} else {
System.out.println("No esta dentro del rango");
}
}
catch(Exception err) {
System.out.println("Te dije un numero!!");
scn.next(); //se descarta lo que hay en el scanner, sino siempr lee eso
}
} while( numeroValido == false );

System.out.println("Ya tenemos los dos numeros son: " + a + " y " + b);

System.out.println("Si los queres sumar apreta: 1, para retar: 2, producto: 3, diviision: 4");

int operacion = 0;
numeroValido = false;
do{
try {
operacion = scn.nextInt();
numeroValido = true;
} catch(Exception err) {
System.out.println("Eso no es un numero");
scn.next();
}
} while( numeroValido == false );


switch(operacion) {
case 1: System.out.println("Elegiste sumar: "+ a + "+" + b + "=" + (a+b)); break;
case 2: System.out.println("Elegiste restar: "+ a + "-" + b + "=" + (a-b)); break;
case 3: System.out.println("Elegiste multiplicar: "+ a + "*" + b + "=" + (a*b)); break;
case 4: System.out.println("Elegiste dividir(entero): "+ a + "/" + b + "=" + (a/b)); break;
default : System.out.println("No pusiste una opcion correcta");
}


}
}

Ya con eso tienen que haber entendido como hacer las cosas, pueden practicar de hacer algunos programas ahora con lo que saben para resordar bien la sintaxis y enfrentarse con el compilador.

Saludos
« Última modificación: Abril 06, 2012, 03:15:32 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #10 en: Agosto 11, 2008, 02:16:50 pm »
Clases y Objetos

Antes de empezar se deberán definir unos conceptos para poder entender las definiciones de clases y objetos

Variable: espacio de la memoria reservado para almacenar u valor que corresponde a un tipo de dato soportado por el lenguaje de programación, una variable, SIEMPRE es representada y utilizada a través de una etiqueta que se le asigna que esa etiqueta va a ser única de eso dato.

Es una variable encontraremos

Código: (java) You are not allowed to view links. Register or Login
tipo_de_dato etiqueta = tipo_de_dato
hay cuatro tipos de datos: numéricos, lógicos, alfanuméricos y alfabéticos

Numérico
Código: (java) You are not allowed to view links. Register or Login
int numero = 5;
long numeros = 5;

Lógico

*estas en especial vas a reflejar dos estado (verdadero o falso)
Código: (java) You are not allowed to view links. Register or Login
boolean resultado = false;
boolean gane = true;

Alfanuméricos

Código: (java) You are not allowed to view links. Register or Login
String nick=jose23;
Alfabéticos

Código: (java) You are not allowed to view links. Register or Login
String nombre = jose;

Constante: tipo de dato que no puede cambiar su valor. ejemplo: pi

Ente: algo que tiene asociada una simbología para poder describirlo.

Para que quede mas claro voy a comentar un ejemplo que vi en una Web

Por ejemplo, a través de una palabra podemos tener una idea de aquel concepto, sin embargo habrá una diferencia entre su verdad (lo que creemos sobre el concepto) y su realidad (lo que nos rodea)

Para ser mas específicos, si yo digo "Marte" lo mas probable es que visualice el planeta rojo con sus características especificas, etc. (su verdad) sin embargo seguramente "Marte" es distinto a lo que ustedes visualizaron (su realidad).

Sin embargo por algo visualizaron el otro planeta similar, porque "tiene asociada una simbología para poder describirlo."

Abstracción: es la comprensión que se tiene de un ente.

Por ejemplo, yo al decir Marte, uno se puede imaginar un planeta, otro un pedazo de roca, otro el color rojo, etc. sin separar la diferencia entre nuestra verdad y su realidad, la abstracción son puras verdades.

Característica funcional: define todo lo que hace un objeto.

Esto es algo muy importante, tomemos como ente un auto sus características funcionales serian

encender, avanzar, acelerar, frenar, parar  (entre otras)

Atributos: características propias

Métodos: características funcionales

Objeto: abstracción acotada de un ente en base a sus característica, en función de un propósito claro y un punto de vista definido.

Cabe destacar que hay diferencia entre abstraer un ente de distintos puntos de vista

Por ejemplo, las características del ámbito funcional de una computadora seria la cantidad de memoria ram, rom, cache, microprocesador, etc

En cambio del punto de vista comercial lo que importaría seria, el precio la cantidad de stock, la compra y venta, etc

Por eso es que el punto de vista es muy importante.

Según sea la abstracción y manteniendo sus características propias un objeto se puede descomponer en un conjunto de objetos.

Por ejemplo el objeto "computadora" se puede descomponer en (placa medre, hdd, fuente, lectora de CD) en este caso "computadora" seria el objeto pedre y los demás serian hijos, y también si necesitamos mas detalles podríamos descomponer un objeto hijo por ejemplo "placa madre" (zócalo cpu, sw1, sw2, bateria, usb, IDE1, IDE2)

A la hora de describir u objeto hay que terminar abriendo y cerrando paréntesis, no puede hacer espacios, no se puede empezar con mayúsculas, no se pueden poner acentos

Código: (java) You are not allowed to view links. Register or Login
ejemplo: placaMadre()
Clase: conjunto de atributos y métodos asociados a la abstracción de un ente.

Recordando siempre cual es el punto de vista por ejemplo si la clase es un revolver
Código: (java) You are not allowed to view links. Register or Login
clase: revolver

Disparar()     *cantidad de balas
Cargar()       *capacidad de cargador
PonerSeguro()  *estado del seguro

Ese es un ejemplo simple para que se den mas o menos cuenta

En la programacion funcional uno tiene por un lado las funciones y procedimientos y por el otro lados los datos, para hacer un programa hay que estregarlo todos los datos que nesesita a cada procedimiento o funcion y esta ultima devuelve un dato, bla bla, se maneja asi.

En la programacion orientada a objetos, los datos y las funciones/procedimientos (que aca se llaman metodos) estan todos juntos con un vinculo en comun.

Por ejmplo si se tiene una calculadora simple en lo que es el paradigma viejo seria algo asi:

Código: (java) You are not allowed to view links. Register or Login
public class suma {
public static void main(String[] args) {
int a = 5, b = 3;
System.out.println("Si sumo: " + a + " y " + b + " obtengo " + (a+b));
}
}

Ahora vamos a hacerlo con objetos, para eso se crea un "Java Beans" (no hay que confundirlo con EJB) que no es mas que un objeto que engloba muchas cosas.

Nota: "return" se utiliza para devolver un valor especifico, si un metodo se define con un tipo, este tiene que retornar ese tipo de dato en algun punto.

Código: (java) You are not allowed to view links. Register or Login
public class asd {

public static void main(String[] args) {
Suma s = new Suma(3,5); //Tipo Identificador = new Constructor
System.out.println("Si sumo: " + s.getA() + " y " + s.getB() + " obtengo " + s.getSuma());
}
}

class Suma {
private int a, b; //no prestar atencion a "private"

//construcctor de la clase se llama cuando se crea (hay que darle dos numeros)
public Suma(int x, int y) {
//las dos variables que llegan por argumentos las guardo en el beans
a = x;
b = y;
}

//solo devuelven el valor de las variables
public int getA() {
return a;
}
public int getB() {
return b;
}

//esto es para la suma
public int getSuma() {
return (a+b);
}

}

fijense que desde el main es lo que decia de lo de "su verdad" y en la otra clase esta "la realidad", uno pide la suma con "getSuma()" no me importa como es que se resuelve el problema de sumar 2 numeros desde el main, si otra persona programa la clase de abajo y yo la de arriba, no voy a tener que ponerme a pensar como sumar dos numeros nunca (ya se que es facil, pero es de ejemplo)

Se ve que hay una clase nueva (que actua como beans) que guarda los dos numeros y se encarga de calcular todo, desde el main solo la inicializamos y tenemos que pedirle cosas. (puede que con este ejemplo paresca que es peor con objetos pero con coasas mas grande es al revez), por ejemplo, si en ves de variables sencillas manejaramos estructuras (que ya se van a ver), podemos hacer independiente la estructura de como pedir los datos ...


Otra que tambien sirve y que estamos en condiciones de mostrar es a la hora de manejar muchos datos, con la programacion funcional hay que hacer muchas variables, con la de objetos hay que hacer muchos objetos ...
El objeto en si se crea aca: Suma s = new Suma(3,5); se crea a partir de la clase Suma, es ese beans que lo manejamos con "s" que es su identificador, podemos crear todos los que se nos den la gana.

Programacion funcional:

Código: (java) You are not allowed to view links. Register or Login

public class asd {

public static void main(String[] args) {
int a = 5, b = 3;
System.out.println("Si sumo: " + a + " y " + b + " obtengo " + (a+b));
a=4;
b=8;
System.out.println("Si sumo: " + a + " y " + b + " obtengo " + (a+b));
a=1;
b=2;
System.out.println("Si sumo: " + a + " y " + b + " obtengo " + (a+b));
}
}

Objetos:

Código: (java) You are not allowed to view links. Register or Login
public class asd {

public static void main(String[] args) {
Suma s = new Suma(3,5);
Suma s0 = new Suma(4,8);
Suma s1 = new Suma(1,2);
System.out.println("Si sumo: " + s.getA() + " y " + s.getB() + " obtengo " + s.getSuma());
System.out.println("Si sumo: " + s0.getA() + " y " + s0.getB() + " obtengo " + s0.getSuma());
System.out.println("Si sumo: " + s1.getA() + " y " + s1.getB() + " obtengo " + s1.getSuma());
}
}

class Suma {
private int a, b; //no prestar atencion a "private"

//construcctor de la clase se llama cuando se crea (hay que darle dos numeros)
public Suma(int x, int y) {
//las dos variables que llegan por argumentos las guardo en el beans
a = x;
b = y;
}

//solo devuelven el valor de las variables
public int getA() {
return a;
}
public int getB() {
return b;
}

//esto es para la suma
public int getSuma() {
return (a+b);
}

}

Noten que en el ejemplo hay tres objetos a la ves, si bien los tres son "iguales" porque fueron creados de la misma clase, ellos son independientes, es decir cada uno tiene sus propios datos, en ningun momento una variable es sobreescrita, es como si se sacan moldes de la clase, cada objeto usa metodos y variables distintas del otro (por mas que sean iguales).

Y el ejemplo otra ves no quedo muy lindo pero para proyectos mas grandes ya van a ver =D

Si alguien ya programa en algun lenguaje funcional y uso listas con los punteros y los struct o record ya se imaginara de lo mucho que sirve un Beans lista que le decis "search(a)" y devuelve la pocision de donde esta la variable a en la lista.

Eso es todo por ahora.

Saludos
« Última modificación: Abril 18, 2012, 10:08:51 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #11 en: Agosto 11, 2008, 02:18:18 pm »
Arrays
Vectores

Los Arrays son un método para guardar un conjunto de objetos de una misma clase, existen distintos tipos de Arrays, ya sean Unidireccional o Multidireccionales.

Un Arrays o Arreglo, comienza en un índice 0 y el últimoi se debe denotar n-1... n == dimensión de Arrays.

Primero debemos saber cómo se declara y crea un Arrays en JAVA, y se realiza de la siguiente forma:

Código: (java) You are not allowed to view links. Register or Login
tipo_de_dato[] nombre;

el tipo_de_dato, ya sea int, float, double, entre otros... los corchetes ( [] ), quieren decir que es la sección de memoria a utilizar, y el nombre del Arrays...

La forma de declaración del Arreglo, cómo podría ser, sabiendo esto, y que se debe realizar un nuevo tipo de dato ???...

Para los que pensaron antes de continuar, bien... :D... sería de la siguiente forma:

Código: (java) You are not allowed to view links. Register or Login
tipo_de_dato[] nombre = new tipo_de_dato [x];

Donde x, es la sección de memoria a utilizar el Arrays...

Se entiende o voy muy rápido ???

Si voy muy rápido aquí os dejo una pequeña explicación de un Arreglo de 10 posiciones...

0 1 2 3 4 5 6 7 8 9 --> Sección de Memoria del Vector
9 8 7 6 5 4 3 2 1 0 --> Datos de cada sección de Memoria del Vector

Cómo he dicho un vector comienza en un índice 0 (cero), y no en 1, entonces un vector de 10 posiciones llegará hasta el número 9, estamos de acuerdo con ello ???

Operaciones Básicas de un Arreglo

  • Definir el Arreglo
  • Realizar un recorrido
  • Ingresar datos al Vector
  • Sacar los datos del Vector

Ok!...

Ya sabemos como definir el vector:

Código: (java) You are not allowed to view links. Register or Login
tipo_de_dato [] nombre_vector = new tipo_de_dato [10]

Ahora cómo recorremos el vector ???...
Podría ser con una acción repetitiva (Ciclo), armando índices...

Lo recorreremos con un ciclo, en este caso un While:

Código: (java) You are not allowed to view links. Register or Login
While (i<=9)
{
  System.out.print (nombre_vector[i]);
  i++;
}

En el caso de un for

Código: (java) You are not allowed to view links. Register or Login
for (i=0;i<=9;i++)
{
   System.out.print (nombre_vector[i]);
}

Ok!... ya sabemos como declara y crear un arreglo, sabemos como recorrer un arreglo, falta ingresar datos al arreglo y mostrarlos...

Aunque creo que solo pensar un poco, podemos sacar nuestras deducciones no creen ???...

Tarea 2...

Crear un programa en JAVA, que permita llenar un vector de 100 posiciones  con numeros aleatorios entre 0 y 100, luego indique cual es el que más se repite y cuantas veces se repite.

Tarea 3...

Crear un programa en JAVA, que permita ingresar usuarios, y mostrarlos en el orden inverso....

Saludos

Ejemplo de Vectores
Plaga
Código: (java) You are not allowed to view links. Register or Login
public class Arreglo
{   
    public static void main(String[] args)
    {
    int i=0;
    int vector[] = new int[5];
   
    while (i<=4)
    {
    System.out.print (vector[i]);
    i++;
    }
    System.out.print ("\n");
i--;   
    while (i >= 0)
    {
    System.out.print (vector[i]);
    i--;
    }
   
    }
}

Arrays
Matrices

Ya vimos una parte de Arrays (vectores), como bien dijo WaesWaes son Unidireccionales, esto quiere decir que solo van en una dirección... ahora pensemos.... que pasa si quiero que se dirijan en dos direcciones (bidireccional)... Aqui entra el tema de Matrices...

En forma gráfica una Matriz es de la siguiente forma:

Código: (java) You are not allowed to view links. Register or Login
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

En aquel ejemplo podemos visualizar una Matriz de 5 x 5... fácil o no ???

La forma de inicializar una Matriz es la misma que inicializar un Vector, con la única diferencia que utilizaremos dos variables

Código: (java) You are not allowed to view links. Register or Login
Tipo_de_dato [] [] nombre_matriz = Tipo_de_dato [variable_1][variable_2];

La forma de recorrer dicha Matriz, es recorriendo cada uno de las filas y columnas que utilizaremos...

Código: (java) You are not allowed to view links. Register or Login
for (int fila = valor; fila (Operador) valor; Operador)
{
   for (int columna = valor; columna (Operador) valor; Operador)
   {
           /* Trozo de código
            * a recorrer en la Matriz
            */
   }
}

Ahora realizaremos la misma matriz como programa en sí en JAVA

Código: (java) You are not allowed to view links. Register or Login
public class Matriz
{
   public static void main (String[] args)
   {
    int i=5, j=5;
    int [][] matriz = new int [i][j];
    try
    {
   
    for (i = 0; i < 6; i++)
    {
    for (j = 0; j < 5; j++)
    {
    System.out.print (matriz[i][j]);
    System.out.print (" ");
    }
    System.out.println (" ");
    }
    System.out.print (" ");
    }
    catch (Exception e)
    {
   
    }
   }
}

Y esto son las famosas Matrices... ;)

Saludos...



1.- Realice una Matriz de "x" e "y" posiciones, donde "x" es el número de filas que el usuario debe ingresar, y donde "y" es el número de columnas que el usuario debe ingresar.

2.- Realice una Matriz 5x5 con número aleatorios, y que muestre la diagonal principal.
« Última modificación: Abril 17, 2012, 06:28:43 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #12 en: Agosto 11, 2008, 02:19:01 pm »
Organizacion de clases con package e import

Ya habran visto en este post alguna linea en java del estilo:

Código: (java) You are not allowed to view links. Register or Login
import java.io.*;
Y se preguntaron que es...bueno es una forma que tiene Java para ordenar las clases.

Ademas del lenguaje base, Java cuanta con una API que no es mas que codigo adicional para facilitar las cosas a el programador, por ejemplo, si tubieramos que hacer la entrada de datos a mano seria muy dificil, por eso Java tiene una clase que se encarga de eso, ya vieron que llamamos a algunos de sus metodos y listo.

Hay un monton de clases en la API de Java, y tenemos que indicarle al programa cual vamos a usar porque no puede magicamente encontrar las clases. Para indicar que clases vamos a usar, poder "traer" el codigo a nuestro programa existe import que le indicamos una clase o conjunto de ellas y nos las ddeja disponible para usar en nuestro programa.

Ahora si vemos con atencion la linea de codigo anterior despues de import se colocan dos palabras seguidas de un asterisco, en realidad eso es un directorio en el sistema operativo, va a buscar en el sistema base de java dentro de la carpeta java y luego dentro de la carpeto io, y de ahi importa todas las clases que existan en ese directorio, porque el * es comodin, tambien podriamos especificar cual clase queremos usar.

Por ejemplo:
Código: (java) You are not allowed to view links. Register or Login
import java.io.Scanner;
importaria solo la clase Scanner.

En realidad import esta solo para ahorar escribir de mas, porque desde nuestro programa podemos indicar, cada ves que usamos dicha clase, el lugar donde se encuentra, seria algo de este estilo:

En ves de:

Código: (java) You are not allowed to view links. Register or Login
import java.io.Scanner;
....
Scanner scn = new Scanner(System.in);

Seria:


Código: (java) You are not allowed to view links. Register or Login
java.io.Scanner scn = new java.io.Scanner(System.in);

Se nota clara la diferencia, pero como esto (si usamos mil veces esa clase) implica escribir mucho, se usa import.

Como es eso de la ruta java.io

Como es que se organizan en directorios las clases, esto es gracias a la palabra package, esas clases estan todas bajo un paquete que las agrupa y es posible acceder a ellas facilmente.

Los paquetes de la API de java son los siguientes:

Código: (Java) You are not allowed to view links. Register or Login
java.lang — funcionalidad y tipos basicos (no requiere de import para usarla)
java.util — estructuras de datos
java.io — manejo de entrada/salida de datos (pantalla, archivos)
java.math — Matematicas avanzadas
java.nio — un nuevo paquete de entrada/salida con mejoras
java.net — toda la parte de redes
java.security — generacion de keys, encriptacion y desencriptacion
java.sql — Manejo de bases de datos SQL
java.awt — Interfaz Grafica
javax.swing — Nueva interfaz grafica
java.applet — manejo de Applets

Y algunas mas.

Bueno lo que importa es que todas las clases que estan dentro de esos package tienen en su interior la linea:

Código: (java) You are not allowed to view links. Register or Login
package java.lang;
Por ejemplo, de esta forma es posible importarla usando java.lang en la sentencia de import o antes de nombrar la clase.

Nosotros tambiem podemos usar esto en nuestro programas.

Para indicar que nuestra clase pertenece a un paquete (usualmente)se coloca en la primer linea el codigo

Código: (java) You are not allowed to view links. Register or Login
package MiPaquete;
Y podemos hacer subdirectorios para organizar mas, por ejemplo si tenemos el paquete cosas y dentro de cosas hay cosas interesantes podemos hacer

Código: (java) You are not allowed to view links. Register or Login
package Cosas.CosasInteresantes;

public class Interesante{}

Que genera la clase: Cosas.CosasInteresantes.Interesante

Si no se especifica un package (commo veniamos haciendo) se asigna un paquete anonimo por defecto, para las cosas que venimos haciendo ahora esta bien, pero si es algo grande a que van a estar trabajando mas programadores los package se vuelven muy importantes para la organizacion.

Si tenemos una clase en el mismo directorio que una que esta usando no es nesesario importar nada porque estan en el mismo package, ahora, si las clases no estan en el mismo package si es nesesario indicar en donde esta con import, asi como se hacia con las clases de la API que no estaban en nuestro directorio.

No es muy complicado de entender no?

Solo tienen que saber que cuando se crea un package cada "." equivale a un subdirectorio en el sistema de archivos del sistema operativo y ya asi pueden organizar clases e importarlas cuando quieran.

No voy a poner ejemplos porque en codigo es facil y lo que imorta es que esten en distintos package y de aca no se puede ejemplificar eso.

Prueben en sus PC.

Nota:

Ademas de poner organizar el codigo, es posible convertir un package a un .jar, que por ahi les es familiar esa extencion de archivo, un .jar no es mas que todo un package de clases organizado en un archivo (algo asi como un archivo comprimido) que tiene un indicador de como ejecutar eso, entonces es posible ejecutar programas Java con un doble click.

Ademas de clases un .jar puede contener recursos (videos, imagenes, etc) que se usan en nuestro programa, por lo que es una muy bonita forma de entregar un solo archivo que tiene todo dentro y se ajecuta de forma facil.

El JDK les proporciona las herramientas para poder crear  un .JAR, y si usan IDEs como netbeans el mismo IDE los crea, si les interesa pueden buscar por la red, no entra dentro de este curso generar JARs.
« Última modificación: Abril 17, 2012, 07:07:20 pm por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #13 en: Agosto 12, 2008, 11:05:40 pm »
Mi primera Clase,
Objetos y Métodos

Sintaxis:

Código: (java) You are not allowed to view links. Register or Login
Tipo_de_clase tipo_de_dato nombre_clase (parámentros)

Por ahora en Tipo_de_clase nos centraremos en public o private... claro o no ???...

public... se puede utilizar desde cualquier Clase...
private... solamente se puede utilizar desde la Clase...

tipo_de_dato, son todos aquellos que hemos visto... boolean, String, double, etc...

nombre_clase, obviamente es el nombre del método

parámentros, son todos aquellos parámetros que se pueden entregar al método...

Ok!... veamos un pequeño ejemplo... :P, algunos dirán: "Otra vez esta clase"... xD, pero creo que es la mejor para poder explicar este asunto de métodos

Código: (java) You are not allowed to view links. Register or Login

public class punto
{
    public double x;
    public double y;

    public punto()
    {
        x = 0;
        y = 5;
    }

    public punto (int a, int b)
    {
        x = a;
        y = b;
    }

    public double obtenerx()
    {
        return x;
    }

    public double obtenery()
    {
        return y;
    }

}

Algo nuevo de lo que no hayamos visto ???... quizás en algunas líneas...

Ahora si este código lo hacemos funcionar en JCreator, hará lo que es NADA...

Sin embargo si lo hacemos correr en un programa llamado BlueJ, verán algunas diferencias al intentar ejecutar los métodos... eso es una tarea para todos... :P

Pero si quiero hacerlo funcionar en JCreator ???... simplemente tenemos que crear un método llamado main (función principal), y desde ahí llamar a todos los métodos que deseamos calcular...

Un pequeño ejemplo:

Código: (java) You are not allowed to view links. Register or Login
...
public static void main (String[] args)
    {
    punto p = new punto();
   
    System.out.println ("Obtenemos X: " + p.obtenerx());
    System.out.println ("Obtenemos Y: " + p.obtenery());
    }
...

Si se fijan en este trozo de código hay algo nuevo...

Código: (java) You are not allowed to view links. Register or Login
punto p = new punto();

Aqui hacemos referencia a que la clase punto llamará un objeto de esta clase que se denominará p, y de esta forma lo crea... por ello el new (debe utilizarse al momento de crear objetos)...

Ahora crearemos un nuevo método para la clase punto... qué hará este método ???... simplemente calculará la distancia entre ambos puntos.

Código: (java) You are not allowed to view links. Register or Login
public double diferencia (double x2, double y2)
    {
        return (x2 - y2);
    }

Para hacer el ingreso de este método al método main, sería de la siguiente forma:

Código: (java) You are not allowed to view links. Register or Login
public static void main (String[] args)
    {
    double x = 23; y = 34;

    punto p = new punto();
   
    System.out.println ("Obtenemos X: " + p.obtenerx());
    System.out.println ("Obtenemos Y: " + p.obtenery());
    System.out.println ("La distancia entre los puntos x e y son: " + p.distancia (x, y));
    }


Espero todo se esté entendiendo de la mejor forma posible... :P,
aunque tengan en cuenta que si no ponen de su parte no se puede avanzar cada vez más... ;)


Ya estariamos comenzando a entender esto de Clases, Objetos y Métodos... tengan en cuenta que no es llegar y entender este capitulo, conlleva un poco más de estudio que los otros capitulos... sin embargo cuando se toma el ritmo será lo más fácil que exista... ;)

Veremos como queda el programa completo:

Código: (java) You are not allowed to view links. Register or Login

public class punto
{
    public double x;
    public double y;

    public punto()
    {
        x = 0;
        y = 5;
    }

    public punto (int a, int b)
    {
        x = a;
        y = b;
    }

    public double obtenerx()
    {
        return x;
    }

    public double obtenery()
    {
        return y;
    }
    public double distancia (double x2, double y2)
    {
        return (x2 - y2);
    }

    public static void main (String[] args)
    {
    double x = 23; y = 34;

    punto p = new punto();
   
    System.out.println ("Obtenemos X: " + p.obtenerx());
    System.out.println ("Obtenemos Y: " + p.obtenery());
    System.out.println ("La distancia entre los puntos x e y son: " + p.distancia (x, y));
    }
}

Y ahí tenemos nuestra primera clase lista!... :D

Que pasa si deseo crear una nueva clase y llamar a los métodos de la clase punto ???... es completamente igual...

realizar el constructor
crear el ojeto
y llamar a los métodos que se requieran (siempre y cuando se pueda)...

Saludos
« Última modificación: Abril 19, 2012, 09:33:29 am por WaesWaes »

Desconectado vVegeta

  • JavaManiaco!
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 1791
  • Sexo: Masculino
  • I´m Unique!!... vVegeta...
    • Ver Perfil
Re: JAVA desde CERO
« Respuesta #14 en: Agosto 20, 2008, 12:34:22 pm »
Enum

Enum es un tipo de dato que permite que una variable tome valores dentro de un conjunto definido.

Vamos a verlo con un ejemplo para que quede mas claro:

Se define la variable y el conjunto de valores que puede tomar de esta manera:

Código: (java) You are not allowed to view links. Register or Login
enum Nombre {
        JUAN , PEDRO , LUCIA, ANA
};

Y despues es posible hacer una asignacion de este estilo:

Código: (java) You are not allowed to view links. Register or Login
Nombre id = Nombre.JUAN;
De esa forma tenemos una variable que esta limitada solo por los valores que a nosotros nos convenga, los valores de adentro son constantes, asi que solo van a ser los especificados.

Es posible definir enums dentro o fuera de una clase, pero no se puedendefinir dentro de un metodo.

Hay que tener en cuanta que los tipos que estan adentro del enum no son int o String, sino que son un tipo enum, es necesario ver eso bien claro.

Pueden ver mas del tipo enum en el You are not allowed to view links. Register or Login o en You are not allowed to view links. Register or Login.

Saludos

« Última modificación: Abril 21, 2012, 10:14:00 am por WaesWaes »


xx
JAVA desde cero

Iniciado por vVegeta

73 Respuestas
21844 Vistas
Último mensaje ſeptiembre 08, 2008, 04:28:32 pm
por WaesWaes
xx
PHP desde cero***

Iniciado por buenasbikes

1 Respuestas
1879 Vistas
Último mensaje Noviembre 25, 2006, 07:13:42 pm
por ||Ray||
xx
Desde Cero

Iniciado por alzala

16 Respuestas
5676 Vistas
Último mensaje ſeptiembre 24, 2007, 06:51:02 am
por TXS
exclamation
Empezar PHP desde CERO

Iniciado por tabi1

7 Respuestas
2282 Vistas
Último mensaje Agosto 21, 2012, 03:54:00 pm
por comcom.com
xx
Crackeo desde cero

Iniciado por maximunspider

14 Respuestas
19045 Vistas
Último mensaje Mayo 17, 2011, 06:08:11 am
por jep
exclamation
Aprendiendo H++ desde cero...

Iniciado por Sthefano02

2 Respuestas
1426 Vistas
Último mensaje Octubre 07, 2010, 02:48:00 pm
por Sthefano02
xx
Desde CEro En linux

Iniciado por teufelkrieg

1 Respuestas
1259 Vistas
Último mensaje Enero 03, 2007, 06:29:44 pm
por rafaelsk
xx
XHTML - desde Cero

Iniciado por an7rax

0 Respuestas
1525 Vistas
Último mensaje Mayo 22, 2009, 05:10:21 pm
por an7rax
xx
Esteganografía Desde Cero.

Iniciado por Xionex

6 Respuestas
3596 Vistas
Último mensaje Agosto 12, 2009, 10:00:06 am
por Xionex
xx
Creacion de crypter desde cero

Iniciado por decoder79

9 Respuestas
1872 Vistas
Último mensaje Febrero 11, 2011, 03:49:33 pm
por joaco_sur_15