Tema 2 Creación de Mi Primer Programa
Tema 2 Creación de Mi Primer Programa
Tema 2 Creación de Mi Primer Programa
Los enlaces
externos a otras páginas no serán funcionales.
Caso práctico
Todos los lenguajes de programación están
constituidos por elementos concretos que permiten
realizar las operaciones básicas del lenguaje, como
tipos de datos, operadores e instrucciones. Estos
conceptos deben ser dominados por la persona que
desee incorporarse, con ciertas garantías, a un
equipo de programación. Debemos tener en cuenta
que los programas trabajan con datos, los cuales
almacenan en memoria y son posteriormente usados
para la toma de decisiones sen el programa.
1.- Introducción.
Cada vez que usamos un ordenador, estamos
ejecutando varias aplicaciones que nos permiten realizar
ciertas tareas. Por ejemplo, en nuestro día a día, usamos
el correo electrónico para enviar y recibir correos, o el
navegador para consultar páginas en Internet; ambas
actividades son ejemplos de programas que se ejecutan
en un ordenador.
Para ello, vamos a tratar sobre cómo se almacenan y recuperan los datos de variables
y cadenas en Java, y cómo se gestionan estos datos desde el punto de vista de la
utilización de operadores. Trabajar con datos es fundamental en cualquier programa.
Aunque ya hayas programado en este lenguaje, échale un vistazo al contenido de esta
unidad, porque podrás repasar muchos conceptos.
Recomendación
Acostúmbrate a leer y consultar la documentación sobre la versión de Java
que estés utilizando en tus programas. Eso te ayudará a saber todas las
posibilidades que tiene el lenguaje, y si en un momento dado estás
utilizando bien una determinada característica.
Caso práctico
María y Juan han comprobado que una
aplicación informática es un trabajo de equipo
que debe estar perfectamente coordinado. El
primer paso es la definición de los datos y las
variables que se van a utilizar.
Las decisiones que se tomen pueden afectar
a todo el proyecto, en lo referente al
rendimiento de la aplicación y ahorro de
espacio en los sistemas de almacenamiento.
Un programa maneja datos para hacer cálculos, presentarlos en informes por pantalla
o impresora, solicitarlos al usuario, guardarlos en disco, etc. Para poder manejar esos
datos, el programa los guarda en variables.
Una variable es una zona en la memoria del computador con un valor que puede ser
almacenado para ser usado más tarde en el programa. Las variables vienen
determinadas por:
Esto quiere decir que en Java se pueden utilizar varios alfabetos como el Griego,
Árabe o Japonés. De esta forma, los programas están más adaptados a los lenguajes
e idiomas locales, por lo que son más significativos y fáciles de entender tanto para los
programadores que escriben el código, como para los que posteriormente lo tienen
que interpretar, para introducir alguna nueva funcionalidad o modificación en la
aplicación.
Recomendación
Una buena práctica de programación es seleccionar nombres adecuados
para las variables, eso ayuda a que el programa se autodocumente, y
evita un número excesivo de comentarios para aclarar el código.
Para saber más
Enlace para acceder a la documentación sobre las distintas versiones de
Unicode en la página web oficial del estándar:
Nombre de una
Comienza por letra mayúscula. String, MiTipo
clase.
Nombre de modifica_Valor,
Comienza con letra minúscula.
función. obtiene_Valor
Autoevaluación
Un identificador es una secuencia de uno o más símbolos Unicode que
cumple las siguientes condiciones. Señala la afirmación correcta.
Todos los identificadores han de comenzar con una letra, el carácter
subrayado (_) o el carácter dólar ($).
No puede incluir el carácter espacio en blanco.
Puede tener cualquier longitud, no hay tamaño máximo.
Todas las anteriores son correctas.
Puede que te interese cambiar los colores que utiliza Netbeans para la sintaxis de tus
programas, por ejemplo si quieres que los comentarios aparezcan en verde en lugar
de en gris, o indicar que tienes la autoría de los mismos, en lugar de que te aparezca
el nombre de usuario del sistema operativo. En la siguiente presentación puedes ver
cómo se cambian los colores y las propiedades de usuario en un proyecto Netbeans:
Resumen textual alternativo
Variables miembro. Son las variables que se crean dentro de una clase,
fuera de cualquier método. Pueden ser de tipos primitivos o referencias,
variables o constantes. En un lenguaje puramente orientado a objetos
como es Java, todo se basa en la utilización de objetos, los cuales se
crean usando clases. En la siguiente unidad veremos los distintos tipos de
variables miembro que se pueden usar.
Variables locales. Son las variables que se crean y usan dentro de un
método o, en general, dentro de cualquier bloque de código. La variable
deja de existir cuando la ejecución del bloque de código o el método
finaliza. Al igual que las variables miembro, las variables locales también
pueden ser de tipos primitivos o referencias.
Autoevaluación
Relaciona los tipos de variables con la característica correspondiente,
escribiendo el número asociado a la característica en el hueco
correspondiente.
Ejercicio de relacionar
Las
Relación Tienen la característica de que …
variables...
Variable constante llamada PI: esta variable por haberla declarado como
constante no podrá cambiar su valor a lo largo de todo el programa.
Variable miembro llamada x: Esta variable pertenece a la clase ejemplovariables.
La variable x puede almacenar valores del tipo primitivo int. El valor de esta
variable podrá ser modificado en el programa, normalmente por medio de algún
otro método que se cree en la clase.
Variable local llamada valorantiguo: Esta variable es local porque está creada
dentro del método obtenerX(). Sólo se podrá acceder a ella dentro del método
donde está creada, ya que fuera de él no existe.
En apartados posteriores veremos como darle más funcionalidad a nuestros
programas, mostrar algún resultado por pantalla, hacer operaciones, etc. Por el
momento, si ejecutas el ejemplo anterior simplemente mostrará el mensaje
“GENERACIÓN CORRECTA”, indicando que todo ha ido bien y el programa ha
finalizado.
Caso práctico
María ya ha hecho sus pinitos como
programadora. Ahora mismo está ayudando a
Juan con las variables y le ha surgido un
problema.
—El lenguaje se está comportando de una forma
extraña, quiero llamar a una variable final y no me
deja —Le comenta a Juan.
—Claro, eso es porque final es una palabra
reservada y ya hemos visto que no la puedes
utilizar para nombrar variables —le responde
Juan.
—¡Vaya! —exclama María, —¡es verdad!, ¿y qué otros requisitos debo
tener en cuenta a la hora de declarar las variables?
—Pues lo importante es saber qué tipo de información hay que guardar,
para poder asignarles el tipo de dato adecuado. ¿Tienes un momento y te
lo cuento? — le dice Juan.
En el siguiente apartado vamos a ver con detalle los diferentes tipos de datos que se
engloban dentro de estas dos categorías.
Autoevaluación
El tipado fuerte de datos supone que:
A todo dato le corresponde un tipo que es conocido antes de que se
ejecute el programa.
El lenguaje hace un control muy exhaustivo de los tipos de datos.
El compilador puede optimizar mejor el tratamiento de los tipos de
datos.
Todas las anteriores son correctas.
Reflexiona
Java especifica el tamaño y formato de todos los tipos de datos primitivos
con independencia de la plataforma o sistema operativo donde se ejecute
el programa, de forma que el programador no tiene que preocuparse sobre
las dependencias del sistema, y no es necesario escribir versiones
distintas del programa para cada plataforma.
Debes conocer
En el siguiente enlace se muestran los tipos de datos primitivos en Java
con el rango de valores que pueden tomar, el tamaño que ocupan en
memoria y sus valores por defecto.
Por otra parte, a la hora de elegir el tipo de dato que vamos a utilizar ¿qué criterio
seguiremos para elegir un tipo de dato u otro? Pues deberemos tener en cuenta cómo
es la información que hay que guardar, si es de tipo texto, numérico, … y, además,
qué rango de valores puede alcanzar. En este sentido, hay veces que aunque
queramos representar un número sin decimales, tendremos que utilizar datos de tipo
real.
Por ejemplo, el tipo de dato int no podría representar la población mundial del planeta,
ya que el valor máximo que alcanza es de 2.147.483.647, siendo éste el número
máximo de combinaciones posibles con 32 bits, teniendo en cuenta que la
representación de los números enteros en Java utiliza complemento a 2. Si queremos
representar el valor correspondiente a la población mundial del planeta, cerca de 7 mil
millones de habitantes, tendríamos que utilizar al menos un tipo de dato long, o si
tenemos problemas de espacio un tipo float. Sin embargo, los tipos reales tienen otro
problema: la precisión. Vamos a ver más sobre ellos en el siguiente apartado.
Aritmética binaria
Entre cada dos números reales cualesquiera, siempre tendremos infinitos números
reales, por lo que la mayoría de ellos los representaremos de forma aproximada. Por
ejemplo, en la aritmética convencional, cuando dividimos 10 entre 3, el resultado es
3.3333333…, con la secuencia de 3 repitiéndose infinitamente. En el ordenador sólo
podemos almacenar un número finito de bits, por lo que el almacenamiento de un
número real será siempre una aproximación.
Los números reales se representan en coma flotante, que consiste en trasladar la
coma decimal a la primera cifra significativa del valor, con objeto de poder representar
el máximo de números posible.
En Java las variables de tipo float se emplean para representar los números en coma
flotante de simple precisión de 32 bits, de los cuales 24 son para la mantisa y 8 para el
exponente. La mantisa es un valor entre -1.0 y 1.0 y el exponente representa la
potencia de 2 necesaria para obtener el valor que se quiere representar. Por su parte,
las variables tipo double representan los números en coma flotante de doble precisión
de 64 bits, de los cuales 53 son para la mantisa y 11 para el exponente.
Autoevaluación
Relaciona los tipos primitivos con los bits y rango de valores
correspondientes, escribiendo el número asociado en el hueco
correspondiente.
Ejercicio de relacionar
De esta forma, estamos declarando numAlumnos como una variable de tipo int, y
otras dos variables radio e importe de tipo double. Aunque no es obligatorio, hemos
aprovechado la declaración de las variables para inicializarlas a los valores 15, 3.14 y
102.95 respectivamente.
En ocasiones puede que al declarar una variable no le demos valor, ¿qué crees que
ocurre en estos casos? Pues que el compilador le asigna un valor por defecto, aunque
depende del tipo de variable que se trate:
Y también en este otro, ya que se intenta usar una variable local que podría no
haberse inicializado:
Autoevaluación
De las siguientes, señala cuál es la afirmación correcta:
La declaración de una variable consiste básicamente en indicar el
tipo que va a tener seguido del nombre y su valor.
Java no tiene restricción de tipos.
Todos los tipos tienen las mismas operaciones a realizar con ellos:
suma, resta, multiplicación, etc.
Todas las anteriores son incorrectas.
int[] arrayDeEnteros;
Cuenta cuentaCliente;
En la primera instrucción declaramos una lista de números del mismo tipo, en este
caso, enteros. En la segunda instrucción estamos declarando la variable u objeto
cuentaCliente como una referencia de tipo Cuenta.
Además de los ocho tipos de datos primitivos que ya hemos descrito, Java
proporciona un tratamiento especial a los textos o cadenas de caracteres mediante el
tipo de dato String. Java crea automáticamente un nuevo objeto de tipo String cuando
se encuentra una cadena de caracteres encerrada entre comillas dobles. En realidad
se trata de objetos, y por tanto son tipos referenciados, pero se pueden utilizar de
forma sencilla como si fueran variables de tipos primitivos:
Hemos visto qué son las variables, cómo se declaran y los tipos de datos que pueden
adoptar. Anteriormente hemos visto un ejemplo de creación de variables, en esta
ocasión vamos a crear más variables, pero de distintos tipos primitivos y los vamos a
mostrar por pantalla. Los tipos referenciados los veremos en la siguiente unidad.
Para mostrar por pantalla un mensaje utilizamos System.out, conocido como la salida
estándar del programa. Este método lo que hace es escribir un conjunto de caracteres
a través de la línea de comandos. En Netbeans esta línea de comandos aparece en la
parte inferior de la pantalla. Podemos utilizar System.out.print o System.out.println. En
el segundo caso lo que hace el método es que justo después de escribir el mensaje,
sitúa el cursor al principio de la línea siguiente. El texto en color gris que aparece entre
caracteres // son comentarios que permiten documentar el código, pero no son tenidos
en cuenta por el compilador y, por tanto, no afectan a la ejecución del programa.
La lista de valores se coloca entre llaves, porque un tipo de datos enum no es otra
cosa que una especie de clase en Java, y todas las clases llevan su contenido entre
llaves.
Al considerar Java este tipo de datos como si de una clase se tratara, no sólo
podemos definir los valores de un tipo enumerado, sino que también podemos definir
operaciones a realizar con él y otro tipo de elementos, lo que hace que este tipo de
dato sea más versátil y potente que en otros lenguajes de programación.
En el siguiente ejemplo puedes comprobar el uso que se hace de los tipos de datos
enumerados. Tenemos una variable Dias que almacena los días de la semana. Para
acceder a cada elemento del tipo enumerado se utiliza el nombre de la variable
seguido de un punto y el valor en la lista. Más tarde veremos que podemos añadir
métodos y campos o variables en la declaración del tipo enumerado, ya que como
hemos comentado un tipo enumerado en Java tiene el mismo tratamiento que las
clases.
Sin embargo, también podemos escribir varias líneas usando una única sentencia. Así
lo hacemos en la instrucción número 20, la cual imprime como resultado tres líneas de
texto. Para ello hemos utilizado un carácter especial, llamado carácter escape (\). Este
carácter sirve para darle ciertas órdenes al compilador, en lugar de que salga impreso
en pantalla. Después del carácter de escape viene otro carácter que indica la orden a
realizar, juntos reciben el nombre de secuencia de escape. La secuencia de escape \n
recibe el nombre de carácter de nueva línea. Cada vez que el compilador se
encuentra en un texto ese carácter, el resultado es que mueve el cursor al principio de
la línea siguiente. En el próximo apartado vamos a ver algunas de las secuencias de
escape más utilizadas.
Caso práctico
Ada se encuentra con María y Juan.
Un literal, valor literal o constante literal es un valor concreto para los tipos de datos
primitivos del lenguaje, el tipo String o el tipo null.
Los literales booleanos tienen dos únicos valores que puede aceptar el tipo: true y
false. Por ejemplo, con la instrucción boolean encontrado = true; estamos declarando
una variable de tipo booleana a la cual le asignamos el valor literal true.
Las constantes literales de tipo long se le debe añadir detrás una l ó L, por ejemplo
873L, si no se considera por defecto de tipo int. Se suele utilizar L para evitar la
confusión de la ele minúscula con 1.
Los literales reales o en coma flotante se expresan con coma decimal o en notación
científica, o sea, seguidos de un exponente e ó E. El valor puede finalizarse con una f
o una F para indica el formato float o con una d o una D para indicar el formato double
(por defecto es double). Por ejemplo, podemos representar un mismo literal real de las
siguientes formas: 13.2, 13.2D, 1.32e1, 0.132E2. Otras constantes literales reales son
por ejemplo: .54, 31.21E-5, 2.f, 6.022137e+23f, 3.141e-9d.
Un literal carácter puede escribirse como un carácter entre comillas simples como 'a',
'ñ', 'Z', 'p', etc. o por su código de la tabla Unicode, anteponiendo la secuencia de
escape ‘\’ si el valor lo ponemos en octal o ‘\u’ si ponemos el valor en hexadecimal.
Por ejemplo, si sabemos que tanto en ASCII como en Unicode, la letra A (mayúscula)
es el símbolo número 65, y que 65 en octal es 101 y 41 en hexadecimal, podemos
representar esta letra como '\101' en octal y '\u0041' en hexadecimal. Existen unos
caracteres especiales que se representan utilizando secuencias de escape:
Secuencia de Secuencia de
Significado Significado
escape escape
Carácter comillas
\t Tabulador \''
dobles
Carácter comillas
\n Salto de línea \'
simples
\f Salto de \\ Barra diagonal
página
Normalmente, los objetos en Java deben ser creados con la orden new.
Sin embargo, los literales String no lo necesitan ya que son objetos que se
crean implícitamente por Java.
Caso práctico
María y Juan tienen definidas las variables y
tipos de datos a utilizar en la aplicación. Es el
momento de ponerse a realizar los cálculos
que permitan manipular esos datos, sumar,
restar, multiplicar, dividir y mucho más. En
definitiva se trata de llevar los conocimientos
matemáticos al terreno de la programación,
ver cómo se pueden hacer operaciones
aritméticas, lógicas o de comparación en el
lenguaje Java. También necesitarán algún operador que permita evaluar
una condición y decidir las acciones a realizar en cada caso. Es importante
conocer bien cómo el lenguaje evalúa esas expresiones, en definitiva, cuál
es la precedencia que tiene cada operador.
Los operadores se combinan con los literales y/o identificadores para formar
expresiones. Una expresión es una combinación de operadores y operandos que se
evalúa produciendo un único resultado de un tipo determinado.
El resultado de una expresión puede ser usado como parte de otra expresión o en una
sentencia o instrucción. Las expresiones, combinadas con algunas palabras
reservadas o por sí mismas, forman las llamadas sentencias o instrucciones.
Por ejemplo, pensemos en la siguiente expresión Java:
i+1
Con esta expresión estamos utilizando un operador aritmético para sumarle una
cantidad a la variable i, pero es necesario indicar al programa qué hacer con el
resultado de dicha expresión:
suma = i + 1;
Que lo almacene en una variable llamada suma, por ejemplo. En este caso ya
tendríamos una acción completa, es decir, una sentencia o instrucción.
Como curiosidad comentar que las expresiones de asignación, al poder ser usadas
como parte de otras asignaciones u operaciones, son consideradas tanto expresiones
en sí mismas como sentencias.
Prefija: Postfija:
x=3; x=3;
++ (incremental)
y=++x; y=x++;
// x vale 4 e y vale 4 // x vale 4 e y vale 3
Orden printf
Operador condicional en
Java
(x>y)?x:y;
Hasta ahora hemos visto ejemplos que creaban variables y se inicializaban con algún
valor. Pero ¿y si lo que queremos es que el usuario introduzca un valor al programa?
Entonces debemos agregarle interactividad a nuestro programa, por ejemplo utilizando
la clase Scanner. Aunque no hemos visto todavía qué son las clases y los objetos, de
momento vamos a pensar que la clase Scanner nos va a permitir leer los datos que se
escriben por teclado, y que para usarla es necesario importar el paquete de clases
que la contiene. El código del ejemplo lo tienes a continuación. El programa se
quedará esperando a que el usuario escriba algo en el teclado y pulse la tecla intro.
En ese momento se convierte lo leído a un valor del tipo int y lo guarda en la variable
indicada. Además de los operadores relacionales, en este ejemplo utilizamos también
el operador condicional, que compara si los números son iguales. Si lo son, devuelve
la cadena iguales y sino, la cadena distintos.
Autoevaluación
Señala cuáles son los operadores relacionales en Java.
= =, ! =, >, <, > =, < =.
=, !=, >, <, >=, <=.
==, =!, >, <, =>, =<.
==, !=, >, <, >=, <=.
5.5.- Operadores lógicos.
Los operadores lógicos realizan operaciones sobre valores
booleanos, o resultados de expresiones relacionales, dando
como resultado un valor booleano.
Ejemplo en
Operador Significado
Java
& op1 & op2 Devuelve true si op1 y op2 son true
Ejemplo
Operador Significado
en Java
Realiza el complemento
~ ~op binario de op (invierte el
valor de cada bit)
Realiza la operación OR
| op1 | op2
binaria sobre op1 y op2
Operadores de bits
Para aplicar una operación a una variable de tipo String, escribiremos su nombre
seguido de la operación, separados por un punto. Entre las principales operaciones
que podemos utilizar para trabajar con cadenas de caracteres están las siguientes:
10 / 2 * 5
x=y=z=1
Realmente la operación que se realiza es x = (y = (z = 1)). Primero asignamos el valor
de 1 a la variable z, luego a la variable y, para terminar asignando el resultado de esta
última asignación a x. Si el operador asignación fuera asociativo por la izquierda esta
operación no se podría realizar, ya que intentaríamos asignar a x el valor de y, pero y
aún no habría sido inicializada.
++ -- + -
Unario, notación prefija Derecha
(cast) ! ~
+- Aritméticos Izquierda
== != Relacionales Izquierda
|| Lógico Izquierda
= += -= *=
Asignación Derecha
/= %=
Reflexiona
¿Crees que es una buena práctica de programación utilizar paréntesis en
expresiones aritméticas complejas, aún cuando no sean necesarios?
Caso práctico
María ha avanzado mucho en sus
conocimientos sobre Java y ha contado con
mucha ayuda por parte de Juan. Ahora
mismo tiene un problema con el código, y le
comenta —Estoy atrancada en el código.
Tengo una variable de tipo byte y quiero
asignarle un valor de tipo int, pero el
compilador me da un error de posible pérdida
de precisión ¿tú sabes qué significa eso?. —Claro —le contesta Juan,
—es un problema de conversión de tipos, para asignarle el valor a la
variable de tipo byte debes hacer un casting. —¡Ah! —dice María, —¿y
cómo se hace eso?
Imagina que queremos dividir un número entre otro ¿tendrá decimales el resultado de
esa división? Podemos pensar que siempre que el denominador no sea divisible entre
el divisor, tendremos un resultado con decimales, pero no es así. Si el denominador y
el divisor son variables de tipo entero, el resultado será entero y no tendrá decimales.
Para que el resultado tenga decimales necesitaremos hacer una conversión de tipo.
Las conversiones de tipo se realizan para hacer que el resultado de una expresión sea
del tipo que nosotros deseamos, en el ejemplo anterior para hacer que el resultado de
la división sea de tipo real y, por ende, tenga decimales. Existen dos tipos de
conversiones:
Debemos tener en cuenta que un valor numérico nunca puede ser asignado a una
variable de un tipo menor en rango, si no es con una conversión explícita. Por
ejemplo:
int a; byte b; a = 12; // no se realiza conversión alguna b = 12; // se permite porque 12 está
del rango permitido de valores para b b = a; // error, no permitido (incluso aunque // 12 pod
almacenarse en un byte) byte b = (byte) a; // Correcto, forzamos conversión explícita
Debes conocer
En el siguiente enlace viene información importante sobre cómo se
producen las conversiones de tipos en Java, tanto automáticas como
explícitas:
7.- Comentarios.
Caso práctico
Juan ha podido comprobar los avances que
ha hecho María con la programación. Ya
domina todos los aspectos básicos sobre
sintaxis, estructura de un programa, variables
y tipos de datos. Ada le acaba de comunicar
que van a sumarse al proyecto dos personas
más, Ana y Carlos que están haciendo las
prácticas del ciclo de Desarrollo de Aplicaciones Multiplataforma en la
empresa. —Al principio de cada programa indicaremos una breve
descripción y el autor. En operaciones complicadas podríamos añadir un
comentario les ayudará a entender mejor qué es lo que hace —indica
Juan. —De acuerdo —comenta María, —y podemos ir metiendo los
comentarios de la herramienta esa que me comentaste, Javadoc, para que
se cree una documentación aún más completa. — ¡Ajá! —asiente Juan—
pues ¡manos a la obra!
Los comentarios son muy importantes a la hora de describir qué hace un determinado
programa. A lo largo de la unidad los hemos utilizado para documentar los ejemplos y
mejorar la comprensión del código. Para lograr ese objetivo, es normal que cada
programa comience con unas líneas de comentario que indiquen, al menos, una breve
descripción del programa, el autor del mismo y la última fecha en que se ha
modificado.
Comentarios Javadoc. Utilizaremos los delimitadores /** y */. Al igual que con los
comentarios tradicionales, el texto entre estos delimitadores será ignorado por el
compilador. Este tipo de comentarios se emplean para generar documentación
automática del programa. A través del programa javadoc, incluido en JavaSE ,
se recogen todos estos comentarios y se llevan a un documento en
formato .html.
Reflexiona
Una buena práctica de programación es añadir en la última llave que
delimita cada bloque de código, un comentario indicando a qué clase o
método pertenece esa llave.
Tipo destino
Tipo boolean - N N N N N N N
origen
char N - C C Cl Cl Cl Cl
byte N C - CI Cl Cl Cl Cl
short N C C - Cl Cl Cl Cl
int N C C C - Cl Cl* Cl
float N C C C C C - Cl
double N C C C C C C -
Cuando convertimos números en coma flotante a números enteros, Como un tipo char lo que g
la parte decimal se trunca (redondeo a cero). Si queremos hacer carácter, los caracteres pue
otro tipo de redondeo, podemos utilizar, entre otras, las siguientes sin signo.
funciones:
Ejemplo:
Math.round(num): Redondeo al siguiente número entero.
Math.ceil(num): Mínimo entero que sea mayor o igual a num.
Math.floor(num): Entero mayor, que sea inferior o igual a num.
double num=3.5; x=Math.round(num); // x = 4 int num; char c; nu
y=Math.ceil(num); // y = 4 z=Math.floor(num); // z = 3 ‘A’ c = (char) ((int)
Autoría: RambergMediaImages
Licencia: CC-by-sa
Procedencia: http://www.flickr.com/photos/rmgimages/4660273582/
Autoría: ytueresburroyyomemonto
Licencia: Uso educativo-nc
Procedencia: Montaje sobre
http://www.flickr.com/photos/ytueresburroyyomemonto/2694706203/
Autoría: dullhunk
Licencia: Uso educativo-nc
Procedencia: Montaje sobre
http://www.flickr.com/photos/dullhunk/4833512699/
Autoría: 姒儿喵喵
Licencia: Uso educativo-nc
Procedencia: Montaje sobre
http://www.flickr.com/photos/crystaljingsr/3915512726/sizes/z/in/photostream
Autoría: HB
Licencia: CC-by-sa
Procedencia:
http://commons.wikimedia.org/wiki/File:Order_of_operations.svg