Diferència entre revisions de la pàgina «DAM-M3-UF4. Sintaxi»

De Wiki IES Marianao. Departament Informàtica
Dreceres ràpides: navegació, cerca
(Vectors)
(Entrada i Sortida bàsica)
Línia 416: Línia 416:
 
| Sortida d’errors
 
| Sortida d’errors
 
|}
 
|}
 
  
 
==== Sortida ====
 
==== Sortida ====
 
  
 
Per mostrar informació a la línia de comandes es fan servir les operacions de la classe ''System.out ''que ja s’han fet servir.
 
Per mostrar informació a la línia de comandes es fan servir les operacions de la classe ''System.out ''que ja s’han fet servir.
 
  
 
''print(): ''Escriptura sense salt de línia
 
''print(): ''Escriptura sense salt de línia
 
''println(): ''Escriptura amb salt de línia al final
 
''println(): ''Escriptura amb salt de línia al final
 
 
  
 
==== Entrada per Consola ====
 
==== Entrada per Consola ====
 
  
 
Per entrar informació des de la línia de comandes es fan servir les operacions de la classe ''System.in ''.
 
Per entrar informació des de la línia de comandes es fan servir les operacions de la classe ''System.in ''.
Línia 449: Línia 443:
 
     }
 
     }
 
</pre>
 
</pre>
 
  
 
==== Entrada Per Paràmetres ====
 
==== Entrada Per Paràmetres ====
Línia 457: Línia 450:
 
Per a l’entrada des de consola es pot fer servir el pas de paràmetres de la funció ''main(String[] args)'' que es recuperen des del programa a través del vector ''args[index]''.
 
Per a l’entrada des de consola es pot fer servir el pas de paràmetres de la funció ''main(String[] args)'' que es recuperen des del programa a través del vector ''args[index]''.
  
 +
...
 +
 +
=== Paquets ===
 +
 +
 +
Un paquet és un conjunt de classes organitzades i relacionades que es veuen unes a les altres i que comparteixen recursos.
 +
 +
Un paquet són una agrupació de classes relacionades funcionalment. El SDK de Java proporciona gran quantitat de paquets de codi obert que cal conèixer per estalviar-nos temps i esforços.
 +
 +
* '''java.lang''', conté les funcions pròpies del llenguatge. '''Aquest no cal importar-lo''', ja que el compilador considera que l’importem cada cop que fem un programa.
 +
* '''java.util''', amb tot d’utilitats addicionals.
 +
* '''java.text''', amb utilitats de format i manipulació de textos.
 +
* '''java.math''', amb funcions matemàtiques.
 +
* '''java.io''', amb rutines d’entrada i sortida
 +
* '''java.net''', amb utilitats de xarxa.
 +
* '''java.applet''', per a construir applets.
 +
* '''java.awt''', per a gràfics i interfícies gràfiques d’usuari (GUI).
 +
* '''java.sql''', classes per a accedir a bases de dades.
 +
 +
Per importar un paquet i poder usar les classes que conté cal indicar el ''paquet.*''
 +
 +
Els punts en els noms dels paquets indiquen la estructura de directoris on es troben les classes.
 +
 +
Es recomanable crear les nostres classes '''sempre''' en algun paquet
  
...
+
<pre>
 +
package dam.m3.uf4;
 +
 
 +
public class Radi {
 +
    ....
 +
}
 +
</pre>
  
 
=== Convencions Programació Java ===
 
=== Convencions Programació Java ===

Revisió del 12:23, 31 maig 2012

torna M3 - Programació

Sintaxis

El primer programa

import java.io.*;

public class PrimerPrograma {

    public static void main(String[] args) {

        System.out.println("(''Text qualsevol'')"); // Display the string.

    }

}
  • A Java tot el codi va dins de les classes (Funcions + Dades)
  • Per determinar on comencen i acaben les estructures (classe, funcions, estructures de control) s’utilitzen els caràcters { }
  • La classe principal ha de tenir el mateix nom que el fitxer que la conté (Case sensitive)
  • La paraula import indica els recursos externs que usem dins el nostre programa (API de java o recursos propis)
  • Les aplicacions d'escriptori (No Applets per exemple), dins de la classe principal sempre tenen la funció main. Aquesta és la funció per on entra el programa a l’execució. La capçalera de la funció és obligatòriament la de l'exemple.
  • Per finalitzar qualsevol instrucció cal posar “;”
  • Java distingeix majúscules i minúscules

Comentaris

Els comentaris en Java poden ser

  • De una línia i comencen per "//", es poden col·locar a qualsevol lloc i marquen tot el que segueix fins al final de línia com un comentari
  • De bloc, delimitats per "/* ..... */".
  • De Javadoc, mostrar informació quan es genera la documentació, delimitats per "/** ....... */"

Declaració de variables i assignació

Els tipus de dades primitius són:

  • byte . Nombres enters "molt curts" de 8 bits.
  • short . Nombres enters "curts" de 16 bits.
  • int . Nombres enters de 32 bits.
  • long . Nombres enters "llargs" de 64 bits.
  • float . Nombres reals de 32 bits. Precisió simple.
  • double . Nombres reals de 64 bits. Precisió doble.
  • char . Caràcters de 16 bits (UNICODE).
  • boolean . Valors de veritat o falsedat: només pot ser true o false (Paraules reservades).

La declaració de variables

tipus_de_dada nom_variable [= valor_inicial];

Per exemple

        int i;
        double radi, sup;
        boolean repetidor;
        int k = 3;

La operació d’assignació es realitza amb el símbol "=" (No confondre amb la operació de comparació "= =")

Per exemple

        int i, j;
        i = 3;
        j = i;
        j = j * 4 + 3;
        j += 5; // Equivalent a j = j + 5.

Constants

La declaració de constants en Java, s'associa a conceptes de OO.

De moment només cal saber que cal definir les constants fora de les funcions (però dins de la classe)

static final tipus_de_dada NOM_CONSTANT [= valor_inicial];

Per exemple

public class Radi {

    static final double PI = 3.1416; //Fora del main

    public static void main(String[] args) {

        double radi, perimeter;

        radi = 3.3;
        perimeter = radi * PI * 2.0;

        System.out.println("El perimetre es : " + perimeter);
    }
}

Cadenes de caràcters. String

Java proporciona la classe String pel tractament de text. (No és un tipus simple, és una classe).

  • Operació "+" per concatenar.

I els següents mètodes d'utilitat per exemple

  • Text.length(): Longitud d’una cadena de text
  • Text.substring(index inici, index final): Obté un tros d’una cadena
  • Text.equals("Altre Text"): Compara dos textos

Per exemple

        String textemeu;
        textemeu = "Bon";
        textemeu += " dia";
       
        System.out.println(textemeu.length()); // Escriu la longitud del text, 7
        System.out.println(textemeu.substring(1,3)) ;// Escriu “on”
        System.out.println(textemeu.equals("Bon deia")); // Escriu false

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

Per al tractament de text es poden fer servir alguns caràcters especials:

Caràcter Significat
\b Retrocés
\t Tabulació
\n Salt de línia
\' Cometes simple
\" Cometes normals

Operadors

Matemàtics Lògics
+ Suma && AND
- Resta | | OR



* Producte  ! NOT
/ Divisió Relacionals
 % Mòdul = = Igual
++ Increment  != Diferent
-- Decrement >, < Més gran que, Menor que
Text
>=, <= Més gran o igual que, Menor o igual que
+ Concatenació instanceof obj instanceof cls és true si, i només si l'objecte obj deriva de la classe cls.

.

Vectors

Un vector o matriu és un conjunt d’elements del mateix tipus que s’identifiquen per la seva posició.

Per declarar vectors a Java la sintaxi és la següent

Tipus[] nom;

A més, no hi prou amb declarar les variables, el compilador necessita conèixer la mida o longitud dels vectors per poder reservar l’espai necessari, així cal un segon pas per inicialitzar els vectors.

        int [] vec;

        vec = new int[4]; // Vector de 4 enters

        String[] paraules = {"Hola", "Adeu"};


Finalment si volem fer referència als elements del vector cal que indiquem quin és l’element, tenint en compte que el primer element sempre és el 0.

        int [] vec;

        vec = new int[4]; // Vector de 4 enters

        vec[0] = 1; // Primer element del vector
        vec[3] = 7; // Últim element del vector

.

Modularitat. Mètodes

Les funcions són mètodes que retornen un valor

La Declaració de funcions

   public [static] Tipus nomFuncio(paràmetres)
   {
      instruccions;

      return expressió;
   }

On la declaració de paràmetres és una llista

Tipus variable, Tipus variable, ..., Tipus variable

\* static ho farem servir per mètodes de classe.

Les accions són mètodes que no retornen cap valor

La Declaració de funcions

   public [static] void nomAccio(paràmetres)
   {
      instruccions;
   }


Els mètodes es defineixen dins la classe

public class Radi {

    static final double PI = 3.1416; //Fora del main

    public static void main(String[] args) {
        System.out.println("El perimetre es : " + funcioPerimetre(3.3));
       
        accioPerimetre(3.3);
    }
   
    public static double funcioPerimetre(double radi) {
        double perimeter = radi * PI * 2.0;
        return perimeter;      
    }
   
    public static void accioPerimetre(double radi) {
        double perimeter = radi * PI * 2.0;
        System.out.println("El perimetre es : " + perimeter);
    }
}


Pas de paràmetres

  • Els paràmetres de tipus simples (int, double, char, boolean) es passen sempre per valor.
  • Els tipus compostos (vectors, matrius i objectes en general) es passen sempre per referència. Una excepció és String que funciona com un tipus simple (per valor).
public class PasParametres {
    public static void main(String[] args) {
        int sim = 3;
        pasValor(sim);
        System.out.println("El valor de sim és: " + sim);  // Mostra 3
       
        String text = "Sense canviar";
        pasString(text);
        System.out.println("El valor de text és: " + text); // Mostra "Sense canviar"
       
        int[] vec = new int[1];
        vec[0] = 3;
        pasReferencia(vec);
        System.out.println("El valor de vec [0]: " + vec[0]); // Mostra 7
    }
    public static void pasValor(int a) {
        a = 7;
    }
    public static void pasString(String s) {
        s = "Canviat";
    }
    public static void pasReferencia(int[] b) {
        b[0] = 7;
    }
}

Estructures de Control

Condicionals

Condicionals
if (Condició ) {
<Instruccions>
} [ else {
<Instruccions>
} ]
switch( < expressió > ) {
case valor1:
<Instruccions>
break;
case valor2:
<Instruccions>
break;
[default:
<Instruccions>]
}

Bucles

Iteració
do {
<Instruccions>;

} while ( <Condició> );

while ( <Condició> ) {

<Instruccions>;
}

for ( <inicialització>; <acabament>; <iteració> ) {
<Instruccions>;
}
public class ExFor {
    public static void main(String[] args) {
        System.out.println("Inici Bucle for");
        for ( int i=0; i<10; i++) {
            System.out.println("Valor de i: "+i);
        }
       
        System.out.println("Inici Bucle while");
        int i = 0;
        while ( i < 10 ) {
            System.out.println("Valor de i: "+i);
            i++;
        }
       
        System.out.println("Inici Bucle do while");
        i = 10;
        do {
            i--;
            System.out.println("Valor de i: " + i);
        } while (i > 0);
    }
}

Break and Continue

Aquestes dues instruccions permeten controlar l’execució de bucles.

break atura el bucle i surt, mentre que continue passa a la següent iteració

En general aquestes estructures compliquen la lectura del codi i no es fan servir.

..

Entrada i Sortida bàsica

De moment ens limitarem a l’entrada/sortida de dades des de la línia de comandes en cru (sense les classes d'utilitat habituals per aquestes operacions).

De manera automàtica a qualsevol programa estan oberts tres canals

System.in Entrada de dades pel dispositiu estàndard d’entrada
System.out Sortida de dades pel dispositiu estàndard de sortida
System.err Sortida d’errors

Sortida

Per mostrar informació a la línia de comandes es fan servir les operacions de la classe System.out que ja s’han fet servir.

print(): Escriptura sense salt de línia println(): Escriptura amb salt de línia al final

Entrada per Consola

Per entrar informació des de la línia de comandes es fan servir les operacions de la classe System.in .

read(): Lectura d'un caràcter

El següent exemple mostra com llegir una cadena de caràcters des de consola

    public static void main(String[] args) throws IOException {
        System.out.println("Llegir fins a ENTER...");
        char caracter;
        String strEntrada = "";
        while ((caracter = (char) System.in.read()) != '\n') {
            strEntrada = strEntrada + caracter;            
        }
        System.out.println("strEntrada = " + strEntrada);
    }

Entrada Per Paràmetres

L'entrada per paràmetres consisteix en introduir dades al programa quan s'executa com a paràmetres de l'execució

Per a l’entrada des de consola es pot fer servir el pas de paràmetres de la funció main(String[] args) que es recuperen des del programa a través del vector args[index].

...

Paquets

Un paquet és un conjunt de classes organitzades i relacionades que es veuen unes a les altres i que comparteixen recursos.

Un paquet són una agrupació de classes relacionades funcionalment. El SDK de Java proporciona gran quantitat de paquets de codi obert que cal conèixer per estalviar-nos temps i esforços.

  • java.lang, conté les funcions pròpies del llenguatge. Aquest no cal importar-lo, ja que el compilador considera que l’importem cada cop que fem un programa.
  • java.util, amb tot d’utilitats addicionals.
  • java.text, amb utilitats de format i manipulació de textos.
  • java.math, amb funcions matemàtiques.
  • java.io, amb rutines d’entrada i sortida
  • java.net, amb utilitats de xarxa.
  • java.applet, per a construir applets.
  • java.awt, per a gràfics i interfícies gràfiques d’usuari (GUI).
  • java.sql, classes per a accedir a bases de dades.

Per importar un paquet i poder usar les classes que conté cal indicar el paquet.*

Els punts en els noms dels paquets indiquen la estructura de directoris on es troben les classes.

Es recomanable crear les nostres classes sempre en algun paquet

package dam.m3.uf4;

public class Radi {
    ....
}

Convencions Programació Java

http://www.oracle.com/technetwork/java/codeconv-138413.html

http://checkstyle.sourceforge.net/ Aplicació per validar els estàndards