Gramatica Java
Gramatica Java
ANTECEDENTE
Para describir la gramtica del lenguaje Java se utilizara la Forma Backus Neur
(BNF). El autor utiliza las siguientes formas:
< > Elemento No Terminal Compuesto de define
:-
Sucesin
()
Agrupa
max
min
NATURALEZA
AZ
<maysculas>
az
<minsculas>
09
<dgitos>
+ - * /%
<aritmticos >
<lgicos>
><=
<relacin>
{}
<bloques>
() []
<agrupacin>
,;.
<puntuacin>
<literal>
<blanco>
+ - * / % (residuo)
<cadena>:-
Ejemplo: casa
<smbolo>
letra
Ejemplo: a
Ejemplo: Cliente
digito Ejemplo: 9
1
2. SINTAXIS
2.1 Declaracin de Variables y constantes
En java se puede definir dos tipos de datos a declarar:
<tipo dato>: - <tipo variable> | < nombre clase>
Declaracin de Constantes
static final <tipo variable> <nombre variable> = <valor>;
<tipo variable>: - int |float|boolean| long |byte|double|char
<valor>:- <numero> <literal>
Ejemplo: static final int salario=50000;
Declaracin de Variables: <declaracin de variable>
Formato 1: <tipo variable> <nombre variable>;
Formato 2: <tipo variable> <nombre variable> = <valor>;
Formato 3: <tipo variable> <formato 1 2>
, <Formato 1 2>;
Ejemplos:
int A; int B=5; int C, i=0;
2.2 Declaracin de Objetos
<nombre clase> <nombre objeto> = new <nombre clase> ();
Ejemplo:
Hashtable H=new Hashtable();
2.3 Declaracin, creacin, subindicacin e Inicializacin de Arreglos
Declaracin de un Arreglo:
<tipo dato> <nombre Variable>[];
Ejemplo:
int[] A;
// A es un arreglo de enteros
Creacin de un arreglo
<tipo dato> >nombre Variable>[]= new <tipo dato> [ <entero> ] ;
Ejemplo:
int A[]= new int[10]; // A un vector de 10 enteros
Subindicacin de un arreglo
A[0], A[1], ..., A[9] // correcto
Tamao de un arreglo:
<nombre variable> . length
Ejemplo:
A.length
Inicializacin de un arreglo:
int A[]= new int[10];
for (int i=0; i<A.length; i++)
A[i]= i;
BNF:
<tipo ambiente>: - public | static | prvate | protected
<tipo dato>: - <tipo variable> | < nombre clase>
<tipo mtodo>: - void | <tipo dato>
<tipo variable>: - int |float|boolean| long |byte|double|char
<argumento>: - <tipo dato> <nombre objeto> | <nombre variable>
<argumentos>:- <blanco> | <argumento>
, <argumento>
Compilar
Ejecutar el Programa
Antecedente
1. En el import se coloca el paquete de clases
Por defecto es import java.lang.*;
2. El Nombre del public class es igual al nombre del archivo
Por ejemplo si el nombre del archivo es Primero.java
Se debe escribir public class Primero
3. Seleccione desde el import hasta el segundo}
Men Edicin>copiar
import java.lang.*;
public class
{
public static void main(String[] args)
{
}
}
a. Men Edicin>Pegar
b. Coloque la palabra Primero en la lnea public class as:
public class Primero
c. Vamos a hacer la multiplicacin de dos numero ( c = a x b ) por medio de
sumas sucesivas , lo primero que se debe hacer es forma algortmica
Entero a, b, c, i
c=0
a=3
b=5
Para i = 1 hasta b
c=c+a
Fpara
Escriba c
d. Una vez modelado y probado el algoritmo se procede a codificar en Java,
para eso, se debe colocar el cdigo java debajo de
public static void main(String[] args)
{
Codigo java
int a=3, b=5,c=0, i ;
for(i=1; i<= b; i++)
c+=a;
System.out.println( La Suma igual a + c);
Prctica De Potencia
1. Men File > Close WorkSpace
2. Seleccione desde el import hasta el segundo}
Men Edicin>copiar
import java.lang.*;
public class
{
public static void main(String[] args)
{
}
}
3. Es Necesario crear el archivo java:
Men File>New>File
a. En la casilla de texto Name: coloque el nombre del programa con
extensin java), en este caso Potencia
b. En la Casilla de Texto Location: C:\ o utilice el botn y seleccione C:
(Carpeta Raz)
c. Pulse el Botn Finish
d. Men Edicin>Pegar en la ventana de cdigo
e. Coloque la palabra Potencia en la lnea public class as:
public class Potencia
4. Lo primero que se debe hacer es en forma algortmica
Entero pot, b, n, i
pot=1
b= 3
n=5
Para i = 1 hasta n
pot = pot * b
Fpara
Escriba pot
Prctica De Fibonacci
1. Men File > Close WorkSpace
}
}
Entero a,b,c,i
a=0
b=1
Para I=1 hasta 10
c=a+b
Escriba(c)
b=a
a=c
Fpara
Como podemos observar en el cdigo anterior este mtodo nos devuelve una
cadena que contiene los datos que hemos introducido en el dilogo.
Nota: Debe utilizarse import javax.swing.*;
double x = scanner.nextDouble();
double y = scanner.nextDouble();
System.out.println("producto: " + (x + y));
La clase Scanner ofrece una serie de mtodos que permiten ingresar tipos
primitivos de datos utilizando:
int nextInt()
byte nextByte()
short nextShort()
long nextLong()
double nextDouble()
float nextFloat()
boolean nextBoolean()
Salida de Datos:
Forma 1:
System.out.println( <Cadena> ); // Salta lnea e publica cadena
System.out.print( <Cadena> ); // Publica cadena
Ejemplo:
System.out.println(H o l a);
de
error,
Ttulo
del
Presencia
Condicin
Ausencia
Presencia
Ausencia
ESCRIBA Menor de Edad
Presencia
Ausencia
ESCRIBA Repetir Prueba
SINTAXIS JAVA
Forma 1:
If( <condicin> )
<sentencia> | <Bloque de Sentencias>
Forma 2:
If( <condicin> )
<sentencia> | <Bloque de Sentencias>
else
<sentencia> | <Bloque de Sentencias>
Donde:
La palabra reservada else indica Ausencia
import java.util.*;
public class Prueba2
{
public static void main(String args[])
{
int puntos;
Scanner scanner = new Scanner(System.in);
System.out.print("Lea puntos: ");
puntos = scanner.nextInt();
if(puntos>=6)
System.out.print(" Paso la Prueba ");
else
System.out.print(" Perdio la Prueba ");
}
}
Inicializar el ndice
Comparar el ndice contra una cota o limite superior e inferior
Actividad(es) a Realizar
Incremento o decremento de ndice
b
d
Incremental
Decremental
MOMENTOS
INCREMENTAL
DECREMENTAL
INDICE=LIMITE INFERIOR
INDICE=LIMITE SUPERIOR
SENTENCIA(S)
SENTENCIA(S)
INDICE=INDICE+1
INDICE=INDICE-1
IR AL MOMENTO b
IR AL MOMENTO b
SINTAXIS JAVA:
for( a; b; d)
c
Donde
c::- ; | <Sentencia> | <Bloque de Sentencias>
EJEMPLOS:
1. La Multiplicacin de A X B por medio de Suma. Esta suma se representa como la
sumatoria de B en A Veces.
A
B=0+B+B+B
i=1
A - Veces
El ndice i va desde 1 hasta A sea
i = 1 A
Limite Inferior =1
Limite Superior = A
E0.
S=0
La Sumatoria se debe iniciar en 0
Lea A
Lea B
Autmata
a. i=1
b. i <= A
c. S=S+B
d. i=i+1
ir al Momento b
2. El Factorial de un numero n.
Lea n
i = 1*1*2*3*.n
(Multiplicatoria de i n veces)
i=1
n - Veces
El ndice i va desde 1 hasta n sea
i = 1 n
Limite Inferior =1
Limite Superior = n
E0.
F=1
Lea n
Autmata
a. i=1
b. i <= n
c. F = F * i
d. i=i+1
ir al Momento b
PROGRAMA EN JAVA (Compilado JCREATOR)
import java.util.*;
public class Prueba4
{
public static void main(String args[])
{
int f=1,n,i;
Scanner scanner = new Scanner(System.in);
System.out.println("Lea n: ");
n = scanner.nextInt();
for(i=1;i<=n;i++)
f*=i;
System.out.println(" Factorial es: "+ f);
}
}
4 . . . n -1
CICLO ANIDADOS
b
d
d
c
4 . . . n -1
0
1
FILAS
n-1
COLUMNAS
Para recorrer una Matriz se requiere de un ndice para las filas y otro ndice para las
columnas:
Entonces, se necesita de dos Autmatas uno Externo para recorrer filas y un Interno
para recorrer columna por columna de la fila activa ( ndice autmata externo).
indice Externo= 0 n 1. Se toma como el ndice i
Indice Interno= 0 n 1. Se toma como el ndice j
Limite Inferior = 0
Limite Superior = n 1
E0:
Constante Entera n = 10
Entera A [n] [n]
Se declara una Matriz A de n posiciones por n - posiciones
Autmata de Lectura
Autmata Externo
a. i = 0
b. i < n
c.
Autmata Interno
a. j=0
b. j < n
c. Lea A[ i ] [ j ]
d. j = j +1
ir al momento b del Autmata Interno
Fin Autmata Interno
d. i =i + 1
ir al Momento b del Autmata Externo
Autmata de Escritura
Autmata Externo
a. i = 0
b. i < n
c.
Salto de Lnea
Autmata Interno
a. j=0
b. j < n
c. Escriba A[ i ] [ j ]
d. j = j +1
ir al momento b del Autmata Interno
Fin Autmata Interno
d. i =i + 1
ir al Momento b del Autmata Externo
}
//Escritura
System.out.println(" ------ Matriz Leida -------");
for(i=0;i<filas;i++)
{
System.out.println();
for(j=0;j<columnas;j++)
{
if(A[i][j]>=10)
System.out.print(A[i][j]+" ");
else
System.out.print(A[i][j]+" ");
}
}
System.out.println();
System.exit(0);
}
}
7. Ordenamiento de un Vector
Solo se analiza el Autmata de Ordenamiento de un vector n posiciones porque los
autmatas de lectura y escritura en un vector fueron ya analizados.
Se toma como caso un ordenamiento sencillo que este autor lo denomina lineal que
consiste en dos ndices (indica posicin dentro del vector) comparado y comparante:
Comparado
Comparante
Posicin 0
Posicin 1 hasta n -1
Posicin 1
Posicin 2 hasta n -1
Posicin 2
Posicin 3 hasta n -1
Se concluye entonces
Autmata Externo
Autmata Interno
Posicin i= 0n - 2
Posicin j= i + 1 . n - 1
E0:
Constante Entera n = 10
Entera A [n]
E0
b
d
QUE PASA
E0
b.
c.
Sentencia(s)
d.
Ir al Momento b
e.
SINTAXIS JAVA:
while( b)
c
Donde
c::- ; | <Sentencia> | <Bloque de Sentencias>
El BNF es el siguiente:
<condicin de Permanencia>: : - < condicionante > <operador lgico> <condicionante>
<operador lgico>: : - && | |
<condicionante> : : - < variable > <operador de relacin> <operacin>
<operador de relacin>:: - > < >= <= == !=
<operacin> :: - <operando> <operador aritmtico> <operando>
<operando>:: - <variable> | <numero>
<operador aritmtico> :: - + / * -
8. Digitalizacin de un Numero
Presencia
Ausencia
ESCRIBA No exista el valor x
Presencia
Ausencia
ESCRIBA n es primo
Fin Autmata del Primo
SINTAXIS JAVA:
for( a; b; d)
c
E0.
Lea n
CP:: i<=n/2 AND residuo(n,i) no sea 0 , sea, n no sea mltiplo de i
Autmata del Primo
a. i = 2
b. si i<=n/2 AND residuo(n,i) no sea 0
c.
d. i = i + 1
ir a b
Fin Autmata del Primo
ESCRIBA n no es primo
i<= n /2
Presencia
Ausencia
ESCRIBA n es primo
E0
QUE PASA
E0
c.
Sentencia(s)
b.
e.
SINTAXIS Java:
do
{
c
}
while( b);
Donde
c::- ; | <Sentencia> | <Bloque de Sentencias>
El BNF es el siguiente:
<condicin de Permanencia>: : - < condicionante > <operador lgico> <condicionante>
<operador lgico>: : - && | |
<condicionante> : : - < variable > <operador de relacin> <operacin>
<operador de relacin>:: - > < >= <= == !=
<operacin> :: - <operando> <operador aritmtico> <operando>
<operando>:: - <variable> | <numero>
<operador aritmtico> :: - + / * -
Presencia
Ausencia
ESCRIBA Repetir Prueba
Presencia
Ausencia
maximo= mitad -1
A[mitad]> x
Presencia
Ausencia
b.
Si minimo <= maximo || A[mitad] no es igual a x vaya a c.
Fin Autmata Haga Mientras Que
Presencia
Ausencia
No existe
mitad=(menor+mayor)/2;
if(A[mitad]>x)
mayor=mitad-1;
if(A[mitad]<x)
menor=mitad+1;
}
while(A[mitad]!=x && mayor>=menor);
if(A[mitad]==x)
System.out.println("Existe: "+x+" en la Posicion: "+mitad);
else
System.out.println("No Existe ");
}
}
AUTOMATA DE SELECCION
Cota:
>= Valor
<= Valor
< Valor
> Valor
Cota
SINTAXIS JAVA:
switch(variable)
{
case valor1 :
<sentencia> | <conjunto de sentencias>
[ break; ]
case valor2 :
<sentencia> | <conjunto de sentencias>
[ break; ]
[ default:
<sentencia> | <conjunto de sentencias>
]
}
Ejemplo:
Se desea clasificar por edades del 1 al 9.
La edad del 2 al 4 es Prvulos
La edad del 5 al 6 es Kinder
La edad del 7 al 9 es Infantil
switch (edad)
{
case 2:
case 3:
case 4:
cout<<Parvulos ;
break;
case 5:
case 6:
cout<<Kinder ;
break;
case 7:
case 8:
case 9:
cout<<Infantil;
default:
cout<< Mal Leda la Edad;
}
Si la edad leda es de valor 3 se toma el caso 3 y 4 caso escribiendo Prvulos y se
sale del switch por la clusula break
Si la edad leda no est en el rango de 2 al 9 se activa el segmento default
imprimiendo
Mal Leda la Edad
E0:
Lea Edad
Autmata de Seleccin
Parvulos
2,3,4
5,6
kinder
edad
7,8,9
infantil
sino
Error
}
}
}
0
1
decena
i
2
centena
3
mil
1
2
c= a -b
opcion
3
c= a * b
c = a /b
Mostar resultado de Operacin
b. si opcion no es igual a 5 ir a c
c=a-b;
System.out.println(c+" = "+a+" - "+b);
break;
case 3:
c=a*b;
System.out.println(c+" = "+a+" * "+b);
break;
case 4:
c=a/b;
System.out.println(c+" = "+a+" / "+b);
break;
}
System.out.println();
}
while(opcion!=5);
}
}