continuacion tema 1

download continuacion tema 1

of 25

Transcript of continuacion tema 1

  • 7/25/2019 continuacion tema 1

    1/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 1

    Tema 2: Programacin Bsica

    2.1 Comentarios

    Un comentario es un texto que se escribe dentro de un programa con el fin de facilitar

    la comprensin del mismo.

    Los comentarios se utilizan para explicar y documentar el cdigo fuente.

    En Java se pueden utilizar tres tipos de comentarios:

    Comentario tradicionalestilo C/C++.

    - Empieza con los caracteres /* y acaba con */.

    - Pueden ocupar ms de una lnea y pueden aparecer en cualquier lugar donde pueda

    aparear un espacio en blanco.

    - No pueden anidarse.

    Ejemplos de comentarios estilo C/C++:

    /* Programa Ecuacin segundo grado

    Calcula las soluciones de una ecuacin de segundo grado */

    /* Lectura de datos por teclado */

    Comentarios de una sola lnea.

    - Comienzan con una doble barra ( // ) y se pueden extender hasta el final de la lnea.

    - No tienen carcter de terminacin.

    Ejemplos de comentarios de una sola lnea:

    // Programa Ecuacin segundo grado

    // Calcula las soluciones de una ecuacin de segundo grado

    int p; // precio del producto

    Comentarios de documentacin Javadoc.

    - Son comentarios especiales para generar documentacin del programa.

    - Comienza con /** y termina con */Ejemplo de comentario de documentacin Javadoc:

    /**

    *

    * @author Zulma Argello

    * @version 1.0

    *

    */

  • 7/25/2019 continuacion tema 1

    2/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 2

    2.2 Tipos de Datos.

    Los primeros lenguajes de programacin no usaban objetos, solo variables. Unavariable podramos decir que es un espacio de la memoria del ordenador a la queasignamos un contenido que puede ser un valor numrico (slo nmeros, con su valor de

    clculo) o de tipo carcter o cadena de caracteres (valor alfanumrico que constar slo detexto o de texto mezclado con nmeros).

    Como ejemplo podemos definir una variable a que contenga 32 y esto lo escribimoscomo a = 32. Posteriormente podemos cambiar el valor de a y hacer a = 78. O hacer aequivalente al valor de otra variable b as: a = b.Dado que antes hemos dicho que un objeto tambin ocupa un espacio de memoria: en quse parecen y en qu se diferencia un objeto de una variable?Consideraremos que lasvariables son entidades elementales: un nmero, un carcter, un valor verdadero o falsomientras que los objetos son entidades complejas que pueden estar formadas por laagrupacin de muchas variables y mtodos. Pero ambas cosas ocupan lo mismo: un espaciode memoria (que puede ser ms o menos grande).

    En los programas en Java puede ser necesario tanto el uso de datos elementales comode datos complejos. Por eso en Java se usa el trmino Tipos de datos para englobar acualquier cosa que ocupa un espacio de memoria y que puede ir tomando distintos valores ocaractersticas durante la ejecucin del programa. Es decir, en vez de hablar de tipos devariables o de tipos de objetos, hablaremos simplemente de tipos de datos. Sin embargo, aveces coloquialmente no se utiliza la terminologa de forma estricta: puedes encontrartetextos o pginas web donde se habla de una variable en alusin a un objeto.

    En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos, que secorresponden con los tipos de variables en lenguajes como C y que son los datos elementalesque hemos citado. Por otro lado, los tipos objeto (que normalmente incluyen mtodos).Veamos los tipos de datos en Java sobre un esquema de sntesis:

    Esquema de sntesis de tipos de datos en Java

    Este esquema no es necesario aprendrselo de memoria en todos sus detalles, aunques lo iremos memorizando poco a poco a medida que lo utilicemos, por lo menos hasta tener ennuestra cabeza los nombres de todos los tipos primitivos y envoltorio y sus caractersticas (sison objetos o no y su rango aproximado):

    TIPOSDEDATOSENJAVA

    NOMBRE TIPO OCUPARANGOAPROXIMADO

    TIPOSPRIMITIVOS(sin mtodos; noson objetos; nonecesitan unainvocacin paraser creados)

    Byte Entero 1 byte -128 a 127

    Short Entero 2 bytes -32768 a 32767

    Int Entero 4 bytes 2*109

    Long Entero 8 bytes Muy grande

    FloatDecimalsimple

    4 bytes Muy grande

    DoublDecimaldoble

    8 bytes Muy grande

    CharCarctersimple

    2 bytes ---

    BooleanValor true

    o false1 byte ---

  • 7/25/2019 continuacion tema 1

    3/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 3

    TIPOS OBJETO(con mtodos,necesitan unainvocacin paraser creados)

    Tipos de labiblioteca estndarde Java

    String (cadenas de texto)Muchos otros (p.ej. Scanner, TreeSet,ArrayList)

    Tipos definidos por

    el programador /usuario

    Cualquiera que se nos ocurra, por ejemploTaxi, Autobus, Tranvia

    ArraysSerie de elementos o formacin tipovector o matriz. Lo consideraremos unobjeto especial que carece de mtodos.

    Tipos envoltorio owrapper

    (Equivalentes a lostipos primitivospero comoobjetos.)

    Byte

    Short

    Integer

    Long

    Float

    Double

    Character

    Boolean

    Vamos a comentar distintas cuestiones:

    1. Un objeto es una cosa distinta a un tipo primitivo, aunque porten la misma

    informacin.Tener siempre presente que los objetos en Java tienen un tipo de tratamiento ylos tipos primitivos, otro. Que en un momento dado contengan la misma informacin nosignifica en ningn caso que sea lo mismo. Iremos viendo las diferencias entre ambos poco apoco. De momento, recuerda que el tipo primitivo es algo elemental y el objeto algo complejo.Supn una cesta de manzanas en la calle: algo elemental. Supn una cesta de manzanasdentro de una nave espacial (considerando el conjunto nave + cesta): algo complejo. Lainformacin que portan puede ser la misma, pero no son lo mismo.

    2. Para qu tener esa aparente duplicidad entre tipos primitivos y tipos envoltorio?Estoes una cuestin que atae a la concepcin del lenguaje de programacin. Tener en cuenta unacosa: un tipo primitivo es un dato elemental y carece de mtodos, mientras que un objeto esuna entidad compleja y dispone de mtodos. Por otro lado, de acuerdo con la especificacin deJava, es posible que necesitemos utilizar dentro de un programa un objeto que porte como

    contenido un nmero entero. Desde el momento en que sea necesario un objeto habremos depensar en un envoltorio, por ejemplo Integer. Inicialmente nos puede costar un poco distinguircundo usar un tipo primitivo y cundo un envoltorio en situaciones en las que ambos seanvlidos. Seguiremos esta regla: usaremos por norma general tipos primitivos. Cuando para laestructura de datos o el proceso a realizar sea necesario un objeto, usaremos un envoltorio.

    3. Los nombres de tipos primitivos y envoltorio se parecen mucho.En realidad, exceptoentre int e Integer y char y Character, la diferencia se limita a que en un caso la inicial esminscula (por ejemplo double) y en el otro es mayscula (Double). Esa similitud puedeconfundirnos inicialmente, pero hemos de tener muy claro qu es cada tipo y cundo utilizarcada tipo.

    4. Una cadena de caracteres es un objeto.El tipo String en Java nos permite crear objetos

    que contienen texto (palabras, frases, etc.). El texto debe ir siempre entre comillas. Muchas

  • 7/25/2019 continuacion tema 1

    4/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 4

    veces se cree errneamente que el tipo String es un tipo primitivo por analoga con otroslenguajes donde String funciona como una variable elemental. En Java no es as.

    5. Hay distintos tipos primitivos enteros. Cul usar?Por norma general usaremos el tipoint. Para casos en los que el entero pueda ser muy grande usaremos el tipo long. Los tipos byte

    y short los usaremos cuando tengamos un mayor dominio del lenguaje.

    6. Cuntos tipos de la biblioteca estndar de Java hay?Cientos o miles. Es imposibleconocerlos todos.

    7. Un array es un objeto? Los arrays los consideraremos objetos especiales, los nicosobjetos en Java que carecen de mtodos.Concepto de array: serie de elementos, cada uno de los cuales lleva asociado un ndicenumrico 0, 1, 2, 3, , n-1

    2.3 Las variables.

    Una variable en Java es un identificador que representa una palabra de memoria quecontiene informacin. El tipo de informacin almacenado en una variable slo puede ser deltipo con que se declar esa variable.

    Una variable se declara usando la misma sintaxis de C. Por ejemplo la siguiente tablaindica una declaracin, el nombre de la variable introducida y el tipo de informacin quealmacena la variable:

    Declaracin identificador Tipo

    int i; i Entero

    String s; s referencia a string

    int a[]; a referencia a arreglo de enteros

    int[] b; b referencia a arreglo de enteros

    Java posee dos grandes categoras de tipos para las variables:

    Tipos Primitivos referencias a Objetos

    int, short, byte, long Strings

    char, boolean Arreglos

    float, double otros objetos

    Las variables de tipos primitivos almacenan directamente un valor que siemprepertenece al rango de ese tipo. Por ejemplo una variable int almacena un valor entero como 1,2, 0, -1, etc.

    Esto significa que al asignar una variable entera a otra variable entera, se copia el valorde la primera en el espacio que ocupa la segunda variable.

  • 7/25/2019 continuacion tema 1

    5/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 5

    Las variables de tipo referencia a objetos en cambio almacenan direcciones y novalores directamente. Una referencia a un objeto es la direccin de un rea en memoriadestinada a representar ese objeto. El rea de memoria se solicita con el operador new.

    Al asignar una variable de tipo referencia a objeto a otra variable se asigna la direccin

    y no el objeto referenciado por esa direccin. Esto significa que ambas variables quedanrefenciando el mismo objeto.

    La diferencia entre ambas asignaciones se observa en la siguiente figura:

    Esto tiene implicancias mayores ya que si se modifica el objeto referenciado por r,entonces tambin se modifica el objeto referenciado por s, puesto que son el mismo objeto.

    En Java una variable no puede almacenar directamente un objeto, como ocurre en C y C++.

    Por lo tanto cuando se dice en Java que una variable es un string, lo que se quieredecir en realidad es que la variable es una referencia a un string.

    Tipos primitivos

    En la siguiente tabla se indica para cada tipo primitivo el nmero de bits que se emplea en surepresentacin y el rango de valores que se puede almacenar en las variables de estos tipos.

    Tipo Bits Rango Ejemplos

    int 32 -2**31 .. 2**31-1 0, 1, 5, -120, ...

    short 16 -2**15 .. 2**15-1 0, 1, 5, -120, ...

    byte 8 -2**7 .. 2**7-1 0, 1, 5, -120, ...

    long 64 -2**63 .. 2**63-1 0, 1, 5, -120, ...

    boolean 1 n/a false, true

  • 7/25/2019 continuacion tema 1

    6/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 6

    char 16 n/a 'a', 'A', '0', '*', ...

    float 32 IEEE 1.2

    double 64 IEEE 1.2

    Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto de B.Esto quiere decir que las variales de tipo B siempre se pueden asignar a variables de tipo A(eventualmente con prdida de significancia).

    Por ejemplo int es de mayor rango que short, que a su vez es de mayor rango que byte.Float y double son de mayor rango que int. Double es de mayor rango que float.

    Esto se puede resumir en:

    double > float > long > int > short > byte

    Expresiones

    En Java cada expresin tiene un tipo que se determina durante la compilacin, es decir esindependiente del valor durante la ejecucin. Una expresin puede ser:

    Una constante:1, 1.0, true, etc.El tipo de esta expresin es el tipo de la constante. En el ejemplo los tipos son int,double y boolean respectivamente.

    Una variable:i, s, aEl tipo de esta expresin es el tipo con que se declar aquella variable. En el ejemplo

    los tipos son entero, referencia a string y referencia a arreglo. El resultado de una operacin: i+1, a[1], etc.

    El tipo se determina en funcin de los tipos de las expresiones que se indican comoargumentos de la operacin.

    Java tiene prcticamente los mismos operadores de C y C++. Cada operador acepta

    una, dos o tres expresiones de diversos tipos. A veces un operador no est definido para

    argumentos de ciertos tipos. Por ejemplo la resta entre strings no est definida. Pero la suma

    de strings est definida como la concatenacin. A continuacin veremos los operadores ms

    frecuentes en Java.

    Operadores binarios entre expresiones numricas

    Smbolo Operacin

    + Suma

    - Resta

    * Multiplicacin

    / Divisin

    % Resto

    Los operandos y el resultado de estos operadores pueden ser:

  • 7/25/2019 continuacion tema 1

    7/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 7

    Dominio Rango

    int*int int

    long*long long

    float*float float

    double*double double

    Al operar con byte y short, estos se convierten implcitamente a int.

    Cuando los tipos de los operandos no coinciden, el operando de menor rango seconvierte implcitamente al tipo de mayor rango. El resultado de la operacin es del tipode mayor rango.

    Ejemplos:

    int a=1, b=2;int c= a + b;

    short s= 1;int d= s + c; // s se convierte a int

    float f= 1.0 + a; // a se convierte a float

    Operadores unarios sobre expresiones numricas

    Smbolo Operacin Argumento

    + exp nada int | long | float | double

    - exp cambio de signo int | long | float | double

    El resultado de estas operaciones es siempre del mismo tipo del operando.

    Si el operando es byte o short entonces se convierte a int, se realiza la operacin y elresultado es un int.

    Operadores sobre variables enteras

    Smbolo Operacin Argumento

    ++ var preincremento int | short | byte | long

    -- var predecremento int | short | byte | long

    var ++ postincremento int | short | byte | long

    var -- postdecremento int | short | byte | long

    El resultado de estas operaciones es siempre del mismo tipo del operando.

    Ejemplos:

  • 7/25/2019 continuacion tema 1

    8/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 8

    int a=1, b=2;int c= +a;int d= -(c+1);

    b= a++; // b= 1, a=2

    a= --b; // a=b= 0

    (a+1)++; // error a+1 no es una variablefloat f= a;f++; // error f no es entero

    Operadores binarios relacionales

    Smbolo Operacin

    > mayor

    < menor

    >= mayor igual

  • 7/25/2019 continuacion tema 1

    9/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina

    int a=1, b=2;

    boolean v= ! a

  • 7/25/2019 continuacion tema 1

    10/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 1!

    Resto de la Divisin %.

    Operadores de Asignacin:El principal es '=' pero hay ms operadores de asignacin condistintas funciones que explicamos brevemente ahora.

    '+=' : op1 += op2 op1 = op1 + op2

    '-=' : op1 -= op2 op1 = op1 - op2

    '*=' : op1 *= op2 op1 = op1 * op2

    '/=' : op1 /= op2 op1 = op1 / op2

    '%=' : op1 %= op2 op1 = op1 % op2

    Operadores Unarios:El mas (+) y el menos (-). Para cambiar el signo del operando.

    Operador Instanceof:Nos permite saber si un objeto pertenece a una clase o no.

    NombreObjeto instanceof NombreClase

    Operadores Incrementales:Son los operadores que nos permiten incrementar las variablesen una unidad. Se pueden usar delante y detrs de la variable dependiendo de lo quequeramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.

    '++'

    '--'

    Operadores Relacionales:Permiten comparar variables segn relacin deigualdad/desigualdad o relaccin mayor/menor. Devuelven siempre un valor boolean.

    '>': Mayor que '=': Mayor o igual que

    '>': desplazamiento a la derecha de los bits del operando

  • 7/25/2019 continuacion tema 1

    11/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 11

    '

  • 7/25/2019 continuacion tema 1

    12/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 12

    Problema 2:

    Solicitar el ingreso del apellido, nombre y edad de dos personas. Mostrar el nombre dela persona con mayor edad. Realizar la carga del apellido y nombre en una variable de tipoString.

    Programa:

    import java.util.Scanner;

    public class CadenaDeCaracteres2 {public static void main(String[] ar) {

    Scanner teclado=new Scanner(System.in);String apenom1,apenom2;int edad1,edad2;System.out.print("Ingrese el apellido y el nombre:");apenom1=teclado.nextLine();System.out.print("Ingrese edad:");edad1=teclado.nextInt();

    System.out.print("Ingrese el apellido y el nombre:");teclado.nextLine();apenom2=teclado.nextLine();System.out.print("Ingrese edad:");edad2=teclado.nextInt();System.out.print("La persona de mayor edad es:");if (edad1>edad2) {

    System.out.print(apenom1);} else {

    System.out.print(apenom2);}

    }}

    Cuando se ingresa una cadena con caracteres en blanco debemos tener en cuenta en llamaral mtodo nextLine().

    Una dificultad se presenta si llamamos al mtodo nextLine() y previamente hemos llamado almtodo nextInt(), esto debido a que luego de ejecutar el mtodo nextInt() queda almacenadoen el objeto de la clase Scanner el caracter "Enter" y si llamamos inmediatamente al mtodonextLine() este almacena dicho valor de tecla y contina con el flujo del programa. Parasolucionar este problema debemos generar un cdigo similar a:

    System.out.print("Ingrese edad:");edad1=teclado.nextInt();System.out.print("Ingrese el apellido y el nombre:");

    teclado.nextLine();apenom2=teclado.nextLine();Como vemos llamamos al mtodo nextLine() dos veces, la primera retorna la tecla "Enter" y la

    segunda se queda esperando que ingresemos el apellido y nombre (tener en cuenta que estoes necesario solo si previamente se llam al mtodo nextInt() o nextFloat().

    Problema 3:

    Solicitar el ingreso de dos apellidos. Mostrar un mensaje si son iguales o distintos.

    Programa:

    import java.util.Scanner;

    public class CadenaDeCaracteres3 {public static void main(String[] ar) {Scanner teclado=new Scanner(System.in);

  • 7/25/2019 continuacion tema 1

    13/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 13

    String apellido1,apellido2;System.out.print("Ingrese primer apellido:");apellido1=teclado.next();System.out.print("Ingrese segundo apellido:");apellido2=teclado.next();if (apellido1.equals(apellido2)) {

    System.out.print("Los apellidos son iguales");} else {

    System.out.print("Los apellidos son distintos");}

    }}

    Para comparar si el contenido de dos String son iguales no podemos utilizar el operador ==.Debemos utilizar un mtodo de la clase String llamado equals y pasar como parmetro el Stringcon el que queremos compararlo:

    if (apellido1.equals(apellido2)) {

    El mtodo equals retorna verdadero si los contenidos de los dos String son exactamenteiguales, esto hace que se ejecute el bloque del verdadero.Recordemos que hemos utilizado el mtodo next() para la carga de los String, luego esto haceque no podamos ingresar un apellido con espacios en blanco (podemos probar que siingresamos por ejemplo "Rodriguez Rodriguez" en el primer apellido, luego se carga la cadena"Rodriguez" en la variable apellido1 y "Rodriguez" en la variable apellido2 (con esto hacemosnotar que cada vez que ingresamos un espacio en blanco cuando utilizamos el mtodo next()los caracteres que siguen al espacio en blanco son recuperados en la siguiente llamada almtodo next())

    El mtodo equals retorna verdadero si los contenidos de los dos String sonexactamente iguales, es decir si cargamos "Martinez" en apellido1 y "martinez" en apellido2luego el mtodo equals retorna falso ya que no es lo mismo la "M" mayscula y la "m"

    minscula.

    En el caso que necesitemos considerar igual caracteres maysculas y minsculaspodemos utilizar el mtodo equalsIgnoreCase:

    if (apellido1.equalsIgnoreCase(apellido2)) {System.out.print("Los apellidos son iguales sin tener en cuenta maysculas y

    minsculas");} else {

    System.out.print("Los apellidos son distintos sin tener en cuenta maysculas yminsculas");

    }

    2.6 Matrices y Arrays.

    Matrices, arrays o vectores en java.

    En java, a diferencia del lenguaje C, existe un tipo de variable especial, el Array o

    matriz. Este tipo de variables no es ms que un conjunto secuencial de memoria a las que se

    accede a travs de un ndice de posicin.

    Las matrices en Java son objetos, por lo que cuentan con propiedades y mtodos para

    manipularlos. Se pueden declarar matrices de tipos de datos primitivos y de objetos.

    Ms abajo tienen la sintaxis bsica de declaracin de arrays.

  • 7/25/2019 continuacion tema 1

    14/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 14

    Sintaxis:

    tipodedato nombre [] [= new tipodedatocapacidad o

    tipodedato[] nombre [= new tipodedatocapacidad

    Como pueden observar puedes inicializar un array al momento de declararlo o postergar

    esta operacin para cuando sea necesario.

    Para inicializar un array existen 2 maneras:

    int[] matriz=newint[4]o

    int[] matriz={100,200,302,400}

    Como podrn concluir, en la primera declaras el array nada ms, dicindole la cantidad de

    memoria secuencial que se debe reservar, en el segundo ejemplo se inicializa el array dndole

    los valores que va a contener (obviamente la cantidad de memoria secuencial reservada ser

    igual a la cantidad de elementos insertados).

    Al momento de inicializar una matriz de la manera :

    int[] matriz=newint[4]

    cada posicin de la matriz ser inicializada con el valor predeterminado del tipo de variable. Por

    ejemplo si la matriz es de tipo boolean, todas las posiciones de la matriz sern inicializadas con

    el valor false (ya que este es valor predeterminado de este tipo de dato), por el contrario si la

    matriz fuese de un tipo no primitivo, el valor que contendr cada casilla ser null.

    A continuacin tienes una lista de los valores predeterminados de cada tipo de dato:

    Tipo de Dato-->Valor

    byte-->0

    short-->0int-->0

    long-->0

    float-->0.0

    double-->0.0

    char-->/u0000

    boolean-->false

    Object (Cualquier tipo de Objeto)-->null

    Para obtener el tamao de un array de manera dinmica se utiliza la propiedad .length.

    Esta propiedad es comn para todos los arrays. Tambin es importante saber que las matrices

  • 7/25/2019 continuacion tema 1

    15/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 15

    se empiezan a enumerar desde el nmero cero (0), por tanto para acceder al valor almacenado

    en la ltima posicin debers colocar el tamao de la matriz menos 1 unidad.

    Al momento de tratar de acceder a una posicin fuera del rango de la matriz se lanzar

    un excepcin de tipo java.lang.ArrayIndexOutOfBoundsException (esta excepcin es una

    excepcin no chequeada, por lo que no es necesario colocar un bloque try/catch en el cdigo)

    Pasaremos con un ejemplo:

    publicclassArrays01 {

    publicstaticvoidmain(String args[]) {

    intita_nro[] = newint[4];

    for(intit_cont = 0; it_cont < 4; it_cont++){

    ita_nro[it_cont] = it_cont * 2;

    System.out.println(ita_nro[it_cont]);

    }

    }

    }

    2.7 mbito de las variables.

    PARMETROS ACTUALES Y FORMALES

    Parmetros actuales: Son los argumentos que aparecen en la llamada a un mtodo.Contienen los valores que se le pasan al mtodo. Un parmetro actual puede ser una variable,

    un objeto, un valor literal vlido, etc.Parmetros formales: Son los argumentos que aparecen en la cabecera del mtodo. Recibenlos valores que se envan en la llamada al mtodo. Se utilizan como variables normales dentro

    del mtodo.

    Los parmetros actuales y los formales debencoincidir en nmero, orden y tipo. Siel tipo de un parmetro actual no coincide con su correspondiente parmetro formal, el sistema

    lo convertir al tipo de este ltimo, siempre que se trate de tipos compatibles. Si no es posible

    la conversin, el compilador dar los mensajes de error correspondientes.

    Si el mtodo devuelve un valor, la llamada al mtodo puede estar incluida en una expresin

    que recoja el valor devuelto.

    MBITO DE UNA VARIABLE

    El mbito o alcance de una variable es la zona del programa donde la variable es

    accesible.

    El mbito lo determina el lugar donde se declara la variable.

    En Java las variables se pueden clasificar segn su mbito en:

    - Variables miembro de una clase o atributos de una clase

    - Variables locales

    - Variables de bloque

    Variable miembro o atributos de una claseSon las declaradas dentro de una clase y fuera de cualquier mtodo.

  • 7/25/2019 continuacion tema 1

    16/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 16

    Aunque suelen declararse al principio de la clase, se pueden declarar en cualquier lugar

    siempre que sea fuera de un mtodo.

    Son accesibles en cualquier mtodo de la clase.

    Pueden ser inicializadas.

    Si no se les asigna un valor inicial, el compilador les asigna uno por defecto:

    - 0 para las numricas

    - '\0' para las de tipo char

    - null para String y resto de referencias a objetos.

    Variables locales

    Son las declaradas dentro de un mtodo.

    Su mbito comienza en el punto donde se declara la variable.

    Estn disponibles desde su declaracin hasta el final del mtodo donde se declaran.

    No son visibles desde otros mtodos.

    Distintos mtodos de la clase pueden contener variables con el mismo nombre. Se trata de

    variables distintas.

    El nombre de una variable local debe ser nico dentro de su mbito.

    Si se declara una variable local con el mismo nombre que una variable miembro de la clase, la

    variable local oculta a la miembro. La variable miembro queda inaccesible en el mbito de la

    variable local con el mismo nombre.

    Se crean en memoria cuando se declaran y se destruyen cuando acaba la ejecucin del

    mtodo.

    No tienen un valor inicial por defecto. El programador es el encargado de asignarles valores

    iniciales vlidos.

    Los parmetros formales son variables locales al mtodo.

    Variables de bloque

    Son las declaradas dentro de un bloque de instrucciones delimitado por llaves { }.

    Su mbito comienza en el punto donde se declara la variable.

    Estn disponibles desde su declaracin hasta el final del bloque donde se declaran.

    No son visibles desde otros bloques.

    Distintos bloques pueden contener variables con el mismo nombre. Se trata de variables

    distintas.

    Si un bloque de instrucciones contiene dentro otro bloque de instrucciones, en el bloque interior

    no se puede declarar una variable con el mismo nombre que otra del bloque exterior.

    Se crean en memoria cuando se declaran y se destruyen cuando acaba la ejecucin del

    bloque.

    No tienen un valor inicial por defecto. El programador es el encargado de asignarles valores

    iniciales vlidos.

    Ejemplo de variables de bloque en java:

  • 7/25/2019 continuacion tema 1

    17/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 17

    2.8 Control de flujo.

    El control del flujo es la manera que tiene un lenguaje de programacin de provocarque el flujo de la ejecucin avance y se ramifique en funcin de los cambios de estado de losdatos. Java, en este aspecto, no utiliza los principios de diseo orientado a objetos, sino quelas sentencias de control del flujo del programa se han tomado del C/C++. A continuacin setratan todos los mecanismos que proporciona Java para conseguir este control y decidir qupartes del cdigo ejecutar.

    2.9 Estructuras de iteracin.

    Supongamos que nos piden que realicemos un dibujo sencillo que se despliegue por

    pantalla. El objetivo es mostrar un cuadrado de 5 filas por 5 columnas trazado con cualquier

    carcter. Con los elementos de programacin que ya conocemos, realizamos un programa que

    cumpla con este requisito.

    public class Cuadrado{

    public static void main(String args[]){

    System.out.println("*****");

    System.out.println("*****");

    System.out.println("*****");System.out.println("*****");

  • 7/25/2019 continuacion tema 1

    18/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 18

    System.out.println("*****");

    }

    }

    Bsicamente este programa cumple con el objetivo. Pero... No notan que algo anda

    mal? Se repiti cinco veces una instruccin. Qu ocurrira sin nos solicitaran una figura ms

    grande? Tendramos que agregar ms lneas de cdigo. Y si en vez de una figura, se les

    ocurra pedirnos que listramos una lista de nmeros del uno al milln, el cdigo sera inmenso.

    Tambin imagnense lo que tardaramos en escribirlo.

    Sin embargo tenemos un recurso para acudir en cuanto surjan estos problemas. Son

    las estructuras de iteracin. Una iteracin consiste en una repeticin de un bloque de

    sentencias un nmero determinado de veces o hasta que se cumpla una condicin.

    De esta forma el cdigo puede simplificarse notablemente. Antes de entrar en los

    detalles de la implementacin con Java, veremos cmo podemos realizar algunas rutinas en

    pseudocdigo:

    Repetir 5 veces:

    Imprimir ("*****");

    Le pasamos al intrprete la tarea de reiterar una accin. Nosotros solamente escribimos unavez lo que hay que hacer.

    Siguiendo con una segunda aproximacin, podramos agregarle un registro que cuente el

    nmero de iteraciones. Adems adicionamos una condicin para que indicar que el registro no

    debe pasar de cierto nmero. De esta manera, el pseudocdigo quedar as:

    N = 1;

    Mientras que N

  • 7/25/2019 continuacion tema 1

    19/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 1

    Realicemos un programa que transforme un nmero decimal en binario. En la vida real, para

    hacer esto, realizamos sucesivas divisiones por 2 al nmero decimal. A cada divisin tomamos

    el resto y continuamos hasta que el resultado sea cero.

    Por ejemplo: Tenemos que pasar el nmero 25 a binario

    25 mod 2 = 1; 25 div 2 = 12;

    12 mod 2 = 0; 12 div 2 = 6;

    6 mod 2 = 0; 6 div 2 = 3;

    3 mod 2 = 1; 3 div 2 = 1;

    1 mod 2 = 1; 1 div 2 = 0;

    (NOTA: en java actualmente se usa el signo "%" para hacer el mod)

    El resultado es 11001

    En general, no sabemos cuantas divisiones tendremos que realizar. Pero si sabemos que

    debemos llegar a cero con la divisin. Las tareas que repetimos son las de tomar el resto y el

    resultado de la divisin. Con estos datos en mente, podremos realizar un algoritmo.

    DECIMAL = 25;

    Mientras que DECIMAL > 0 :

    BINARIO = DECIMAL % 2 + BINARIO;

    DECIMAL = DECIMAL / 2;

    2.10 Sentencias de control de flujo.

    Las sentencias de control de flujo determinan el orden en que se ejecutarn las otrassentencias dentro del programa. El lenguaje Java soporta varias sentencias de control de flujo,incluyendo.

    toma de decisiones if-else, switch-case bucles for, while, do-while excepciones try-catch-finally, throw miscelaneas break, continue, label:, return

    Aqu slo vamos a tratar las sentencias de tomas de decisiones y los bucles, dejando lasexcepciones para otra ocasin.

    Sentencias de toma de decisiones

    La sentencia if-else

  • 7/25/2019 continuacion tema 1

    20/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 2!

    La sentencia if-else de java proporciona a los programas la posibilidad de ejecutarselectivamente otras sentencias basndose en algn criterio. Esta es la versin ms sencilla dela sentencia if: la sentencia gobernada por if se ejecuta si alguna codicin es verdadera.Generalmente, la forma sencilla de if se puede escribir as.

    if (expresin)sentencia;

    Pero, y si quieres ejecutar un juego diferente de sentencias si la expresin es falsa? Bien,puedes utilizar la sentencia else, que ejecuta la condicin opuesta

    if (expresin)sentencia;elseotrasentencia;

    Este uso particular de la sentencia else es la forma de capturarlo todo.

    Existe otra forma de la sentecia else, else ifque ejecuta una sentencia basada en otraexpresin. Como ejemplo, un programa que asigna notas basadas en la puntuacin de unexamen, un Sobresaliente para una puntuacin del 90% o superior, un Notable para el 80% osuperior y dems:

    int puntuacion;Stringnota;

    if (puntuacion >= 90) {nota = "Sobresaliente";} else if (puntuacion >= 80) {

    nota = "Notable";} else if (puntuacion >= 70) {nota = "Bien";} else if (puntuacion >= 60) {nota = "Suficiente";} else {nota = "Insuficiente";

    }

    Una sentencia if puede tener cualquier nmero de sentencias de acompaamiento else if.

    La sentencia switch-case

    La sentencia switch se utiliza para realizar sentencias condicionalmente basadas en algunaexpresin. Por ejemplo, un programa contiene un entero llamado mes cuyo valor indica el mesen alguna fecha, y se quiere mostrar el nombre del mes basndose en su nmero enteroequivalente. Se podra utilizar la sentencia switch de Java para realizar esta tarea.

    int mes;. . .switch (mes) {case 1: System.out.println("Enero"); break;case 2: System.out.println("Febrero"); break;case 3: System.out.println("Marzo"); break;case 4: System.out.println("Abril"); break;

    case 5: System.out.println("May0"); break;case 6: System.out.println("Junio"); break;case 7: System.out.println("Julio"); break;

  • 7/25/2019 continuacion tema 1

    21/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 21

    case 8: System.out.println("Agosto"); break;case 9: System.out.println("Septiembre"); break;case 10: System.out.println("Octubre"); break;case 11: System.out.println("Noviembre"); break;case 12: System.out.println("Diciembre"); break;

    default: System.out.println("No es un mes vlido");break;

    }

    La sentencia switch evala su expresin, en este caso el valor de mes, y ejecuta la sentenciacase apropiada.

    Decidir cundo utilizar las sentencias if o switch depende del juicio personal. Se puede decidircul utilizar basndose en la buena lectura del cdigo o en otros factores. Cada sentencia casedebe ser nica y el valor proporcionado a cada sentencia case debe ser del mismo tipo que eltipo de dato devuelto por la expresin proporcionada a la sentencia switch.

    Otro punto de interes en la sentencia switch son las sentencias breakdespus de cada case.La sentencia break hace que el control salga de la sentencia switch y contine con la siguientelnea. La sentencia break es necesaria porque las sentencias case se siguen ejecutando haciaabajo. Esto es, sin un break explcito, el flujo de control seguira secuencialmente a travs delas sentencias case siguientes.

    Finalmente, puede utilizar la sentencia default al final de la sentencia switch para manejar losvalores que no se han manejado explcitamente por una de las sentencias case.

    Sentencias de Bucle

    El bucle while

    Una sentencia while realiza una accin mientras se cumpla una cierta condicin. La sintaxisgeneral de la sentencia while es.

    while (expresin)sentencia;

    Esto es, mientras la expresin sea verdadera, ejecutar la sentencia.

    sentencia puede ser una sla sentencia o puede ser un bloque de sentencias. Un bloque desentencias es un juego de sentencias legales de java contenidas dentro de corchetes({y }).

    Adems de while Java tiene otros dos constructores de bucles que puedes utilizar en tusprogramas.

    El bucle for

    Puedes utilizar este bucle cuando conozcas los lmites del bucle (su instruccin deinicializacin, su criterio de terminacin y su instruccin de incremento). Por ejemplo, el buclefor se utiliza frecuentemente para iterar sobre los elementos de un array, o los caracteres deuna cadena.

    // a es un array de cualquier tipo. . .

    int i;int length = a.length;for (i = 0; i < a.length; i++) {

  • 7/25/2019 continuacion tema 1

    22/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 22

    System.out.println(a[i]);}

    Si sabes cuando estas escribiendo el programa que quieres empezar en el inicio del array,parar al final y utilizar cada uno de los elementos. Entonces la sentencia for es una buenaeleccin. La forma general del bucle for puede expresarse asi.

    for (inicializacin; terminacin; incremento)sentencias

    inicializacines la sentencia que inicializa el bucle. Se ejecuta una vez al iniciar el bucle.

    terminacines una sentencia que determina cuando se termina el bucle. Esta expresin seevala al principio de cada iteraccin en el bucle. Cuando la exprein se evala a false el buclese termina.

    Finalmente, incrementoes una expresin que se invoca en cada interaccin del bucle.Cualquiera (o todos) de estos componentes puden ser una sentencia vaca (un punto y coma).

    el bucle do-while

    Java proporciona otro bucle, el bucle do-while,que es similar al bucle while que se vi alprincipio, excepto en que la expresin se aval al final del bucle.

    do {sentencias

    } while (Expresin Booleana);

    La sentencia do-while se usa muy poco en la construccin de bucles pero tiene sus usos. Porejemplo, es conveniente utilizar la sentencia do-while cuando el bucle debe ejecutarse almenos una vez.

    Ejercicios de Ejemplo

    El lenguaje Java tiene varias estructuras de control para bucles y bifurcaciones condicionales.

    El famoso Hola Mundo e ingreso de datos a travs del programa en ejecucin:

    //Famoso programa en JAVA

    //Importamos lo necesario

    import java.util.Scanner;

    public class tst1 {

    //Mtodo principal

    public static void main(String[] args) {

    //El famoso Hola MUNDO!

    System.out.println("Hola MUNDO");

    //Declaramos variables

    int suma,b;

    int a=5;

  • 7/25/2019 continuacion tema 1

    23/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 23

    //Para utilizar Scanner debemos de importar java.util.Scanner

    Scanner reader = new Scanner(System.in);

    //Le decimos al usuario que digite un numero para b

    System.out.print("Digite b: ");

    b=reader.nextInt();

    //Realizamos la suma y lo mostramos por pantalla

    suma=a+b;

    System.out.println("El resultado es: \t"+suma);

    }

    }

    Ahora entramos en la parte de las estructuras de control, antes de continuar:

    Ejemplo completo:

    //Importamos lo necesario

    import java.util.Scanner;

    public class tst2 {

    //Mtodo principal

    public static void main(String[] args) {

    int tabla;

    System.out.println("Que Tabla de Multiplicar Deseas Revisar?");

    Scanner reader = new Scanner(System.in);

    tabla=reader.nextInt();

    System.out.println("******TABLA DE MULTIPLICAR GENERADA******");

    //Uso del FOR

    for(int var1=1;var1

  • 7/25/2019 continuacion tema 1

    24/25

    PROGRAMACION JAVA Sistema E-learning

    Profesora: Zulma Anglica Argello Matas Pgina 24

    //Uso del while

    int x=0;

    while(x!=10)

    {

    x++;

    System.out.println("Vuelta:"+x);

    }

    //Uso del switch

    switch (x){

    case 10:

    {

    System.out.println("10! xD");

    }

    break;

    default: System.out.println("Distinto de 10! xD");

    break;

    }

    x=0;

    //Uso del Do-While

    do{

    System.out.println("Nmero: "+x);

    x++;

    }

    while(x!=10);

    //Definicin de array

    int[] array={1,2};

    //Uso del FOR

    for(int y=0;y

  • 7/25/2019 continuacion tema 1

    25/25

    PROGRAMACION JAVA Sistema E-learning

    try-catch-throw

    try { sentencias; } catch( Exception ) { sentencias; }

    Java implementa excepciones para facilitar la construccin de cdigo robusto. Cuando ocurre

    un error en un programa, el cdigo que encuentra el error lanza una excepcin, que se puede

    capturar y recuperarse de ella. Java proporciona muchas excepciones predefinidas.

    Control General del Flujo

    break [etiqueta] continue [etiqueta] return expr; etiqueta: sentencia;

    En caso de que nos encontremos con bucles anidados, se permite el uso de etiquetas para

    poder salirse de ellos, por ejemplo:

    uno: for( ) { dos: for( ) { continue; // seguira en el bucle interno continue uno; // seguira en el bucle principal break uno; // se saldra del bucle principal } }

    En el cdigo de una funcin siempre hay que ser consecuentes con la declaracin que se haya

    hecho de ella. Por ejemplo, si se declara una funcin para que devuelva un entero, es

    imprescindible que se coloque un returnfinal para salir de esa funcin, independientemente de

    que haya otros en medio del cdigo que tambin provoquen la salida de la funcin. En caso de

    no hacerlo se generar un Warning, y el cdigo Java no se puede compilar con Warnings.

    int func() { if( a == 0 ) return 1; return 0; // es imprescindible porque se retorna un entero }