1. Sintaxis Básica del Lenguaje
Prof. Renny Batista Programación IIIOctubre, 2015
2. Sintaxis Básica
Lenguaje sensible a mayúsculas y minúsculas.
Las sentencias finalizan con punto y coma “;”.
Los bloques de instrucciones se delimitan con llaves “{ }”.
Comentario de una línea y multilínea.
Para comentar una línea // Texto a comentar
Para comentar varias líneas /* Texto en
varias líneas a
comentar */
3. Secuencias de escape
Una secuencia de escape está conformada por el carácter “”
seguido de una letra, en el caso de ciertos caracteres no
imprimibles o del carácter especial.
4. Tipos de datos
Toda la información que se maneja en un programa Java puede
estar representada bien por un objeto o bien por un dato de tipo
primitivo
5. Tipos de datos primitivos
Los tipos de datos primitivos se pueden
organizar en cuatro grupos:
Numéricos enteros: Son los tipo byte,
short, int, long. Los cuatro
representan números enteros con signo.
Carácter: El tipo char representa un
carácter codificado en el sistema unicode.
Numérico decimal: Los tipos float y
double representan números decimales
con coma flotante.
Lógicos: El tipo boolean es el tipo de dato
lógico; los dos únicos posibles valores que
puede representar un dato lógico son true y
false.
7. Tipos de datos primitivos (clases envoltorio)
Java proporciona una clase envoltorio (wrappers) correspondiente a cada tipo de dato
primitivo. Las clases envoltorio tienen nombres similares a los tipos: Integer, Long,
Float, Double, Short, Byte, Character y Boolean.
La clase envoltorio Integer se utiliza para envolver valores int en objetos Integer
para que dichos valores se consideren objetos; de modo similar, Long se utiliza para
envolver valores long en objetos Long y así sucesivamente.
Double.parseDouble("123.456"); /*Convierte la cadena a un
número de punto flotante*/
Integer.parseInt ("63"); /*Convierte la cadena a un
número de entero*/
8. Variables
Una variable es un espacio físico de memoria dónde un
programa puede almacenar un dato para su posterior
utilización.
00..00
.
00AAFF
.
.
.
FF..FF
10
Memoria
x 00AAFF
Direcciones
int x = 10;
9. Declaración de variables
Una variable se declara de la siguiente forma:
tipo_de_dato nombre_variable;
Un nombre de variable debe cumplir las siguientes reglas:
– Debe comenzar por un carácter alfabético.
– No puede contener espacios, signos de puntuación o secuencia de escape.
– No puede utilizarse como nombre de variable una palabra reservada del
lenguaje Java.
– También es posible declarar en una misma instrucción varias variables de
igual tipo.
Ejemplos:
int x;
char a, opcion,letra;
double estatura;
10. Asignación
Una vez declara una variable se le puede asignar un valor siguiendo el
formato:
variable = expresión;
variable identificador válido en Java, declarado como variable.
expresión valor, constante, otra variable con un valor previamente
asignado o una fórmula evaluada de tipo variable.
Ejemplo:
int a,b,c;
a=30;
b=a+20;
c=b;
11. Literales
Un literal es un valor constante que se puede asignar directamente a una variable o
puede ser utilizado en una expresión. A la hora de utilizar literales en una expresión
debemos considerar:
– Los literales numéricos enteros se consideran como tipo int. Excepto el tipo
long:
long num = 1000000000000L;
Los literales numéricos decimales se consideran como tipo double. Si vamos a realizar
una asignación con decimales a una variable de tipo float la forma correcta es:
float x = 3.23f;
Los literales boolean son: true y false.
boolean encontrado = true;
Los literales de tipo carácter (char) se escriben entre comillas simples.
char letra = 'A';
12. Conversiones de tipos
En java es posible realizar conversiones entre todos los tipos
básicos, con excepción de boolean, que es incompatible con el
resto de tipos.
Las conversiones de tipos se clasifican en:
Conversiones Implícitas (automáticas)
Conversiones Explícitas (Casting)
13. Conversiones Implícitas
Estas se realizan de manera automática, es decir, el
valor o expresión que va a asignar la variable es
convertido de forma automática por el compilador.
Para que una conversión pueda realizarse de forma
automática, el tipo de la variable destino debe ser de
igual tamaño o superior al tipo de origen.
Ejemplos:
int a;
short b=10;
float c;
a = b; //conversión de short a int
c = a; //conversión de int a float
14. Conversiones Explicitas
Cuando no se cumplen la condiciones para una conversión implícita,
esta se puede realizar explícitamente usando la expresión:
variable_destino = (tipo)dato_origen;
A esta operación se le conoce como casting o estrechamiento ya que al
convertir un dato de un tipo en otro tipo de tamaño inferior, en
algunos casos, se puede provocar una pérdida de datos.
Ejemplo:
int p;
double num = 34.23;
p = (int) num; //Se elimina la parte decimal
16. Constante
Una constante es una variable cuyo valor no puede ser
modificado. Para definir una constante en Java se utiliza la
palabra final, delante de la declaración del tipo:
final tipo nombre_variable = valor;
Ejemplo:
final double pi=3.1416;
final int maximo = 100;
20. Operadores lógicos
Lógicos Explicación
&& Operador lógico AND. Devuelve verdadero si los dos
operandos son true, en cualquier otro caso
devuelve false.
|| Operador lógico OR. El resultado es verdadero si
alguno de los operando es true.
! Operador lógico NOT. Actúa sobre un único
operando boolean, dando como resultado el valor
contrario al que tenga el operando.
^ Or exclusivo deriva en verdadero si ambos
operandos son distintos: verdadero-falso o falso-
verdadero, y produce falso sólo si ambos operandos
son iguales: verdadero-verdadero o falso-falso.
21. El operador condicional (?:)
El operador condicional ?: es ternario y devuelve un resultado que depende de la
condición comprobada, tiene asociatividad a la derecha y, al ser ternario, requiere
tres operandos; reemplaza a la sentencia if-else en algunas circunstancias y su
formato es:
expresion_c ? expresion_v : expresion_f;
Se evalúa expresion_c y su valor, verdadero o falso, determina cuál es la expresión a
efectuar. Si la condición es verdadera se ejecuta expresion_v; si es falsa se ejecuta
expresion_f.
n > 0 ? 1 : -1 //1 si n es positivo, -1 si es negativo o cero
m >= n ? m : n //devuelve el mayor valor de m y n
22. Salida de datos
El envío de datos al exterior se gestiona a través de la clase PrintStream, utilizándose un
objeto de la misma para acceder al dispositivo de salida. Posteriormente con los
métodos proporcionados por esta clase, podemos enviar la información al exterior.
Ejemplo:
int ancho=30; double alto = 34.6776;
System.out.println(“El ancho es: “+ancho);
System.out.printf("El alto es: %.2f",alto);
23. Salida con formato: printf
La sentencia System.out.printf tiene un primer argumento cadena, conocido como
especificador de formato; el segundo argumento es el valor de salida en el formato
establecido
Ejemplo:
double precio = 25.4;
System.out.printf("$");
System.out.printf("%6.2f",precio);
System.out.printf(" unidad");
Al ejecutar este código se visualiza $ 25.40. El formato especifica el tipo (f de float), el
ancho total (6 posiciones) y los dígitos de precisión (2).
Cada uno de los especificadores de formato que comienza con un carácter % se
reemplaza con el argumento correspondiente; el carácter de conversión con el que
terminan indica el tipo de valor a dar formato: f es un número en coma flotante, s una
cadena y d un entero decimal.
24. Entrada (lectura de datos)
En la versión 5.0, Java incluyó una clase para simplificar la entrada de datos por el
teclado llamada Scanner, que se conecta a System.in; para leer la entrada a la
consola se debe construir primero un objeto de Scanner pasando el objeto
System.in al constructor Scanner.
Scanner entrada = new Scanner(System.in);
Una vez creado el objeto Scanner, se pueden utilizar diferentes métodos de su
clase para leer la entrada: nextInt() o nextDouble() leen enteros o de coma
flotante.
El método nextLine() lee una línea de entrada.
El método next() se emplea cuando se desea leer una palabra sin espacios.
25. package paquete;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
String nombre;
int edad;
Scanner teclado = new Scanner(System.in);
System.out.print("Escriba su nombre:");
nombre = teclado.nextLine();
System.out.print("Escriba su edad:");
edad = teclado.nextInt();
System.out.println("Hola "+nombre+" tienes "+edad+" años");
} //fin del void main
} //fin de la clase Principal
Entrada (lectura de datos)
La clase java.util.Scanner proporciona una serie de métodos para realizar la
lectura de datos desde un dispositivo de entrada o archivo, tanto en forma de
cadena de caracteres como en cualquier tipo básico.
Importamos la clase Scanner
del paquete java.util
1
Creamos una variable
llamada teclado de tipo
Scanner
2
3
Asignamos el valor de las lecturas
a las variables para que lo
almacenen
26. Ejercicios
Escriba un programa que pida un tiempo en segundos y lo muestre convertido a minutos
y segundos.
Un alumno desea saber cual será su calificación final en la materia de Programación.
Dicha calificación se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificación del examen final.
15% de la calificación de un trabajo final.
En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto
anual del hospital se reparte conforme a la siguiente tabla:
Área Porcentaje del presupuesto
Ginecología 40%
Traumatología 30%
Pediatría 30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto
presupuestal.
27. Estructuras de decisión
Los programas para un mejor funcionamiento y poder realizar un número
mayor de tareas deben permitir:
Ejecutar una serie de sentencias o instrucciones
Poder repetir una serie de sentencias hasta que se cumpla o deje de
cumplirse una serie de condiciones.
Emplear acciones alternativas para poder elegir una de ellas cuando la
situación lo requiera.
Las estructuras de decisión permite realizar acciones alternativas; por tanto, la
ejecución de una línea o grupo de líneas de programa depende de si se
cumplen o no una o varias condiciones.
28. Estructuras de decisión (if … else)
Instrucción if…else
Es una sentencia de tipo alternativa simple que
permite comprobar una condición dentro de un
programa. En caso de que la condición se
cumpla se ejecutará un determinado grupo de
sentencias, mientras que si no se cumple, se
podrá ejecutar otro conjunto diferentes de
instrucciones.
if (condición) {
sentencia_1;
sentencia_2;
...
sentencia_n;
}
else {
sentencia_alterna_1;
sentencia_alterna_2;
...
sentencia_alterna_n;
}
29. Estructuras de decisión (if … else)
A la hora de utilizar esta instrucción hay que tener en cuenta lo siguiente:
La condición de comprobación puede ser cualquier expresión cuyo
resultado sea de tipo boolean (true o false).
El bloque else es opcional. En este caso, si la condición no se cumple el
programa continuará su ejecución en la siguiente línea después de la
llave de cierre.
Cuando el bloque de sentencias, bien del if o bien del else, esta
formado únicamente por una sola sentencia, el uso de las llaves
delimitadoras es opcional. No obstante, para una mayor claridad del
código, se recomienda su uso en cualquier caso.
Las instrucciones if se pueden anidar.
30. Ejercicios (if … else)
Determinar la cantidad de dinero que recibirá un trabajador por concepto de
las horas extras trabajadas en una empresa, sabiendo que cuando las horas de
trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan
al doble de una hora normal cuando no exceden de 8; si las horas extras
exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas
normales y el resto al triple.
Elabore un programa en Java que lea como dato de entrada un número entero,
determine e imprima por pantalla si el numero leído es “positivo”, “negativo” o
“nulo”.
Escriba un programa que lea la longitud los lados A, B y C de un triángulo.
Utilizando las instrucciones if…else determine si el triangulo es “Equilátero”,
“Isósceles” o “Escaleno”.
31. Estructuras de decisión (switch)
Instrucción switch
Se trata de una instrucción de tipo
alternativa múltiple. Permite ejecutar
diferentes bloques de sentencias en
función del resultado de una expresión
switch (expresión) {
case valor_1:
sentencias;
break;
case valor_2:
sentencias;
break;
...
default:
otras sentencias;
}
32. Estructuras de decisión (switch)
Sobre el uso de esta instrucción hay que tener en cuenta lo siguiente:
Los únicos valores que puede evaluar switch son números enteros de
tipo int. Esto incluye a aquellos que puedan ser promocionados a dicho
tipo (byte, char y short) .
Un switch puede contener cualquier número de case, aunque no
pueden haber dos cases con el mismo valor.
La sentencia break es opcional y se emplea para provocar la finalización
del switch al terminar la ejecución de un case. En caso de que un case
no incluya esta sentencia, el programa continuará con la ejecución del
siguiente case, independiente de que el resultado de la expresión
coincida o no con el valor indicado del mismo.
El bloque default se ejecutara si el resultado de la expresión no coincide
con ningún case. Su uso es opcional.
33. Caso particular de case
Está permitido tener varias expresiones case en una alternativa dada en
switch; por ejemplo, se puede escribir:
switch(c) {
case '0':case '1': case '2': case '3': case '4':
case '5':case '6': case '7': case '8': case '9':
num_digitos++; // se incrementa en 1 el valor de num_digitos
break;
case '': case 't': case 'n':
num_blancos++; // se incrementa en 1 el valor de num_blancos
break;
default:
num_distintos++;
}
34. Ejercicios (switch)
Escribir un programa que reciba un número de una carta de una baraja española e
imprima por pantalla: “As” si es un 1, “Sota”, si es un 10, “Caballo” si es un 11 y “Rey” si
es un 12. Para números de cartas entre 2 y 9 (incluidos) debe imprimir: "No es as ni
figura". Para otros números debe imprimir: "este no es un número de una carta de la
baraja española".
Escriba un programa en java que lea un carácter y utilizando la instrucción switch
determine si es o no una vocal. Realice el mismo ejercicio utilizando la sentencia if
¿Qué opción es mejor?
Escriba un programa que pida al usuario un número entre el uno y el siete y muestre
un mensaje con el nombre del día correspondiente
35. Estructuras de Repetitivas (Ciclos)
Llamamos “bucle” o “ciclo” a todo proceso que se repite un número de veces
dentro de un programa. Un ciclo requiere de una condición para poder
ejecutarse.
Lo primero que hace el computador es examinar la condición y da como
resultado dos posibilidades:
Se cumple: va a realizar todas las instrucciones que están dentro del ciclo, las estará
repitiendo hasta que deje de cumplirse la condición. Entonces sale del ciclo y
continúa ejecutando las instrucciones que hay fuera de él.
No se cumple: no entrará en el ciclo. Ejecuta las instrucciones, que están fuera de él.
Mientras (condición) {
sentencia interna1;
sentencia interna2;
.
.
sentencia internan;
}
Sentencia externa;
La condición del bucle no tiene por que
ser única, puede haber más de una
siempre y cuando estén unidas por los
operadores lógicos.
36. Los contadores
Un contador es una variable destinada a contener diferentes valores, que se va
incrementando o decrementando cada vez que el computador ejecuta la instrucción
que lo contiene.
El incremento; o decremento si es negativo, llamado también paso de contador, es
siempre constante.
Ejemplo: En un partido de fútbol cada vea que un equipo marca un gol, su casillero
siempre aumenta en una unidad. En las carreras de autos, cada vez que un vehículo
pasa por la línea de meta, se incrementa en una unidad el número de vueltas dadas al
circuito o se decrementa en una unidad el número de vueltas que le quedan por
realizar.
2 1
Local Visitante
Marcador en un
instante determinado
3 1
Local Visitante
Marcador luego de conseguir
un gol el equipo local
37. Los contadores
Sintaxis
VARIABLE = VARIABLE ± VALOR_CONSTANTE;
El computador primero evalúa la expresión situada a la derecha del signo
igual, realiza la suma o la resta y su resultado lo asigna a lo que hay a la
izquierda del igual.
El valor de la constante no tiene por qué ser la unidad; puede ser cualquier
número, pero en todo el programa se debe conservar siempre dicho valor.
Ejemplos:
vueltas = vueltas + 1;
goles = goles + 1;
final = final – 1;
numero = numero + 5;
38. Los acumuladores
Es una variable que nos va a permitir guardar un valor que se incrementa o
decrementa de forma no constante durante el proceso. En un instante
determinado tendrá un valor y al siguiente tendrá otro valor igual o distinto.
Sintaxis:
ACUMULADOR = ACUMULADOR + VALOR_VARIABLE;
ACUMULADOR es la variable que almacena el resultado fr la suma
VALOR_VARIABLE almacena el número que estamos sumando
Ejecuta en primer lugar lo que hay a la derecha del signo igual. Realiza la
operación ACUMULADOR + VALOR_VARIABLE, para el último caso; el
resultado lo guarda en la variable ACUMULADOR.
Ejemplo:
saldo = saldo + deposito;
saldo = saldo – retiro;
suma = suma + numero;
39. Estructura de Repetitiva (while)
Un bucle while tiene una condición, una expresión lógica que controla la
secuencia de repetición; su posición es delante del cuerpo del bucle y significa
que while es un bucle “pretest”, de modo que cuando éste se ejecuta, se
evalúa la condición antes de ejecutarse el cuerpo del bucle.
40. Estructura de Repetitiva (do…while)
La sentencia do…while se utiliza para especificar un bucle condicional que se
ejecuta al menos una vez; cuando se desea realizar una acción determinada al
menos una o varias veces, se recomienda este bucle.
La construcción do comienza ejecutando sentencia; en seguida se evalúa
expresión; si ésta es verdadera, entonces se repite la ejecución de sentencia;
continuando hasta que expresión sea falsa.
41. Ciclos controlados por centinelas
Por lo general, puede que no se conozca con precisión cuántos elementos de
datos se procesarán antes de comenzar su ejecución debido a que hay muchos
más por contar, o bien, porque el número de datos a procesar depende de la
secuencia del proceso de cálculo.
Un medio para manejar esta situación es que el usuario introduzca, al final, un
dato único, definido y específico en el llamado valor centinela; al hacerlo, la
condición del bucle comprueba cada dato y termina al leer dicho valor. El
centinela sirve para terminar el proceso del bucle.
42. /* entrada de datos numéricos, centinela –1 */
final int centinela = -1;
System.out.print("Introduzca primera nota:");
double nota = entrada.nextInt();
while (nota != centinela){
cuenta++;
suma = suma + nota;
System.out.print("Introduzca siguiente nota: ");
nota = entrada.nextInt();
} // fin de while
System.out.println("Final");
Ciclos controlados por centinelas
43. Ciclos controlados por indicadores o banderas
Con frecuencia se utilizan variables de tipo boolean como indicadores o
banderas de estado para controlar la ejecución de un bucle; su valor se
inicializa normalmente como falso y, antes de la entrada al bucle, se redefine
cuando un suceso específico ocurre dentro de éste. Un bucle controlado por un
indicador o bandera se ejecuta hasta que se produce el suceso anticipado y se
cambia el valor del indicador.
digito_leido = false; // no se ha leído ningún dato
while (!digito_leido) {
System.out.print("Introduzca un carácter: ");
car = System.in.read(); // lee siguiente carácter
System.in.skip(1); // salta 1 carácter(fin de línea)
digito_leido = (('0'<= car) && (car <= '9'));
...
} // fin de while
44. Estructura de Repetitiva for
Instrucción for
Permite ejecutar un conjunto de instrucciones un
número determinado de veces. Este tipo de ciclo es
la mejor forma de programar la ejecución de un
bloque de sentencias un número fijo de veces; éste
sitúa las operaciones de control del bucle en la
cabecera de la sentencia. Su formato es el siguiente:
45. Estructuras de Repetitivas – Salidas forzadas
Instrucción break
El uso de esta instrucción provoca una salida forzada del bucle, continuando
la ejecución del programa en la primera sentencia situada después del
mismo.
Instrucción continue
Esta instrucción provoca que el bucle detenga la iteración actual y pase, en
el caso del for, a ejecutar la instrucción de incremento o, en el caso de
while, a comprobar la condición de entrada.
46. Estructura de Repetitiva for each
Instrucción for…each
A partir de Java 5.0 se incorpora una construcción de bucles que permite al programador
iterar a través de cada elemento de una colección o de un array sin tener que
preocuparse por los valores de los índices; dónde se establece una variable dada a cada
elemento de la colección y a continuación ejecuta las sentencias del bloque.
for (Tipo_Coleccion variable : Coleccion) {
//Sentencias
...
}
La expresión colección debe ser un arreglo o un objeto de una clase que implemente la
interfaz Iterable, tal como lista de arreglos ArrayList u otras; por ejemplo, se visualiza
cada elemento del arreglo m
PorPagar objetosPorPagar[] = new PorPagar[4];
...
for(PorPagar porpagar: objetosPorPagar ){
System.out.println(porpagar);
}
47. Ejercicios (while - for)
Supóngase que en una reciente elección hubo tres candidatos (con identificadores 1, 2,
3). Usted habrá de encontrar, mediante un programa java, el número de votos
correspondiente a cada candidato y el porcentaje que obtuvo con respecto al total de
votantes. El usuario tecleará los votos de manera desorganizada (1, 2 o 3), tal y como se
obtuvieron en la elección. La cantidad de electores es de 10. Observe como ejemplo la
siguiente lista: 1 3 1 2 2 1 1 2 1 3. Dónde 1 representa un voto para el Candidato
“1”; el 2 un voto para el candidato “2” y el 3 un voto para el candidato “3”.
El total de votos: 10
Votos para el Candidato 1: 5 - Porcentaje: 50%
Votos para el Candidato 2: 3 - Porcentaje: 30%
Votos para el Candidato 3: 2 - Porcentaje: 20%
En un supermercado un cajero captura los precios de los artículos que los clientes
compran e indica a cada cliente cual es el monto de lo que deben pagar. Al final del día
le indica a su supervisor cuanto fue lo que cobro en total a todos los clientes que
pasaron por su caja.
48. Arreglos (arrays)
Un array es un objeto en el que se puede almacenar un conjunto de datos de
un mismo tipo. Cada uno de los elementos del array tiene asignado un índice
numérico según su posición, siendo 0 el índice primero.
Declaración:
tipo [] variable_array;
tipo variable_array[];
Ejemplo:
int [] k;
char cadena[];
A
B
49. Arreglos (arrays)
Para asignar un tamaño a un array (Dimensionar) se utiliza la expresión:
variable_array = new tipo[tamaño];
Ejemplo:
k = new int[5];
cadena = new char[10];
También se puede asignar un tamaño al array en la misma línea de
declaración de la variable:
String [] nombres = new String[10];
Existe una forma de declarar, dimensionar e inicializar un array en una
misma sentencia:
Ejemplo:
int [] numeros = {10,23,5,12,6};
50. Ejercicio Arreglos
En un arreglo unidimensional se ha almacenado el número total de
toneladas de cereales cosechadas durante cada mes del año anterior.
Elabore un programa en java que proporcione la siguiente información:
– El promedio anual de toneladas cosechadas.
– ¿Cuántos meses tuvieron una cosecha superior al promedio?.
– ¿Cuántos meses tuvieron una cosecha inferior al promedio?.
– ¿Cuál fue el mes en que se produjeron mayor numero de toneladas.
Hacer un programa que llene una matriz de 5 x 5. Sumar las columnas e
imprimir que columna tuvo la máxima suma y la suma de esa columna.
51. Bibliografías
Martín, Antonio. Programador Certificado Java 2. Curso Práctico. Editorial
RA-MA. 2da Edición.
Joyanes L., Zahonero I. Programación en Java 6. Algoritmos, programación
orientada a objetos e interfaz gráfica de usuarios. McGRAW-HILL, 1ra Edición.