Sie sind auf Seite 1von 11

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

Palabras reservadas y tipos de datos

Cuando hablamos de lenguajes de programacin debemos tomar en cuenta ciertas convenciones y consideraciones relativas a la manera en que trabaja el lenguaje de programacin, as como observar los elementos de lenguaje mas bsicos que nos permiten entender el mecanismo de programacin y los elementos del lenguaje.

2.1

Palabras reservadas

Las palabras claves tienen un significado especial para el compilador de Java, ya que identifican el nombre de un tipo de dato o una construccin de programa. Es decir son el conjunto de primitivas que forman al lenguaje de programacin, adems de la estructura gramatical que forma el lenguaje de programacin. A continuacin se muestra el conjunto de primitivas del lenguaje Java: abstract assert boolean break byte case match char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while

Las siguientes son notas importantes acerca de las palabras claves: Las literales true, false y null se escriben en minsculas, estrictamente hablando no son palabras claves. No existe el operador sizeof que nos permita acceder a la memoria, pero se cuanta con otro operador mas potente que nos permite manipular objetos propiamente. Las palabras claves goto y const no son usadas en el lenguaje Java.

2.2

Sintaxis del lenguaje

La sintaxis del lenguaje nos describe la manera en como deben ser estructurados los programas escritos en el lenguaje de programacin para que sean considerados como entidades validas, a continuacin describiremos algunos elementos bsicos de la sintaxis para programas Java.

2.2.1 Comentarios Los comentarios de documentacin se colocan inmediatamente antes de una declaracin (de variables, mtodos o clases) indicando que los comentarios deben ser incluidos en alguna documentacin que es generada de manera automtica (por ejemplo, los archivos HTML generados por el comando javadoc) para servir como descripcin de los elementos declarados. Existe el comentario en una sola lnea tipo C: // comentario Y existe la documentacin en bloque, que abarca un mayor numero de lneas, que comprende desde el inicio de bloque (/*) hasta el final del mismo (*/).

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

/* inicio de comentario y el final */

2.2.2 Bloques de cdigo En el lenguaje de programacin java un estatuto es una o ms lneas de cdigo que terminan con punto y coma (;), por ejemplo: total = a + b +c + d; total = a + b + c + d; Un bloque, algunas veces llamado estatuto compuesto, es un grupo de estatutos encerrados entre llaves de apertura y cierre ({}). Un bloque es til cuando se requiere agrupar estatutos. // un bloque de estatutos { x = y +1; y = x +1; } // un bloque de estatutos puede estar // contenido en otro bloque. while ( i < long ) { a = a + i; // otro bloque If ( a == max ) { b = b + a; a = 0; } i = i + 1; } tambin

2.2.3 Unidad mnima de programacin En el lenguaje de programacin java solo es posible construir clases, por lo que la unidad mnima de programacin es la clase. Dentro de la definicin de una clase nicamente puede existir una sola funcin main, que sera la responsable del inicio y fin de la ejecucin del programa, y a su alrededor se encontraran todas las dems clases que formen parte del programa: class Nombre_Clase { public static void main( String [] args ) { System.out.println(" Hola mundo !!! "); } }

2.3

Tipos de datos

El lenguaje de programacin Java cuenta con varios tipos de datos. Estos caen en dos grandes categoras: los tipos clase y los tipos primitivos. Los tipos primitivos son valores simples, no son objetos. Los tipos clase son usados para tipos de datos mas complejos, incluyendo todos los tipos que el programador desarrollara.

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

2.3.1 Datos primitivos El lenguaje Java define ocho tipos primitivos, los cuales pueden ser considerados en cuatro categoras: o o o o Lgicos Texto Enteros Punto flotante boolean char byte, short, int y long float y double

Lgicos Los valores lgicos son representados usando los tipos bolanos, los cuales toman uno de dos posibles valores literales: true (verdadero) false (falso). A continuacin se muestra un cdigo de ejemplo que declara e inicializa una variable de tipo boolean. boolean verdad = true; No existe ajuste (cast) entre valores de tipo entero y bolanos, como ocurre en otros lenguajes de programacin como C/C++. Solo pueden usarse cualquiera de las dos literales definidas. Texto Los caracteres simples son representados usando el tipo char. Un char representa un carcter de 16-bits en UNICODE. Los caracteres deben ser indicados como literales encerrados en comilla simple ( ), por ejemplo: a \t \u???? La letra a una tabulacin Un carcter especifico UNICODE, las interrogaciones (????) son reemplazadas con exactamente cuatro dgitos hexadecimales. Por ejemplo \u03A6 es (phi)

Ahora mostramos un ejemplo de declaracin e inicializacin de una variable tipo carcter. char ch = A; Enteros Existen cuatro tipos enteros en Java. Cada tipo es declarado usando una de sus palabras claves, byte, short, int long. Se pueden crear literales de tipos enteros usando la forma decimal, octal hexadecimal. 2 077 0xBAAC Forma decimal del numero 2 0 indica un nmero octal 0x indica un nmero hexadecimal

Todas las literales enteras son de tipo int a no ser que se especifique lo contrario, es decir se puede agregar al final de la literal numrica la letra L, que indica que el valor ser entero largo. A continuacin se presenta una tabla con el tamao y rango que representan los nmeros: Longitud 8 bits 16 bits 32 bits 64 bits Tipo byte short int long Rango de -2 a 2 -1 15 15 de -2 a 2 -1 31 31 de -2 a 2 -1 63 63 de -2 a 2 -1
7 7

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

Punto flotante Los tipos flotantes pueden declararse como float o double. A continuacin veremos algunos ejemplos de numero flotantes. Las literales flotantes pueden incluir el punto decimal o el termino exponente (E), adems de las letras F para float y D para double. 3.14 6.02E23 2.718F 123.4E+306D valor simple flotante (double) valor de punto flotante largo valor de punto flotante simple valor doble flotante

Los nmeros flotantes en Java ocupan 32 bits, mientras que los valores dobles ocupan 64 bits.

Ajuste de datos primitivos El ajuste primitivo o cast, significa asignar el valor de un tipo de variable a una de otro tipo. Si dos tipos son compatibles, Java realiza el ajuste automticamente. Por ejemplo un valor tipo int puede ser asignado sin ningn problema a una variable tipo long. En los casos donde la informacin se pueda perder en la asignacin, el compilador requiere que se le confirme la asignacin a travs del operador cast. Por ejemplo: long big = 99l; int medium = big // asignacin invalida int medium = (int) big // cast aplicado Es necesario que el tipo de dato destino sea encerrado entre parntesis y usado de manera prefija indicando que la expresin debe ser modificada. Las variables pueden ser promocionadas automticamente a tipos ms grandes (como de int a long) double x = 12.414F; // 12.414F es flotante, correcto float y = 12.414; // 12.414 es doble, incorrecto Cuando se realizan operaciones como la suma y los dos operndoos son de tipo de dato primitivo, el tipo de dato resultante es determinado por el operando de tipo mas grande, por lo que en algunos casos podra ser un problema de sobre flujo, por ejemplo: short a, b, c; a = 1; b = 2; c = a + b; Causa un error debido a los tipos short, a no ser que la variable c sea declarada como int, para subsanar este problema se sugiere realizar un cast en la operacin que permita el ajuste. c = (short) (a + b); Variables, declaracin y asignacin Las variables son los identificadores construidos para asignar valores que sern manipulados a lo largo del programa. Las declaraciones de variables deben seguir la siguiente sintaxis: <tipo de dato> identificador [ = valor ] ;

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

Las asignaciones siempre deben de corresponder al tipo de datos que se esta manejando, existen errores comunes de asignacin, como son: int y = 3.1415926; double w = 175,000; boolean sw = 1; float z = 3.14156; Los identificadores comienzan con letra, guin bajo signo de dlar, y el resto de los caracteres pueden ser dgitos. Recuerde que los identificadores son casos sensitivos. Debido a que pueden emplearse caracteres no ASCII, tenga presente lo siguiente: UNICODE puede soportar diferentes caracteres que lucen igual. Los nombres de clase deben ser nicamente caracteres ASCII, debido a que la mayora de sistemas no soportan UNICODE. Un identificador no puede ser una palabra clave, pero puede estar compuesta como parte del nombre.

2.3.2 Arreglos unidimensionales Los arreglos son estructuras de datos que agrupan elementos del mismo tipo (homogneo). Los arreglos nos permiten referirnos a grupos de objetos por un nombre comn. Los arreglos unidimensionales, son aquellos arreglos que cuentan nicamente con una fila y con una serie de columnas que determinan la dimensin del arreglo. En Java es posible crear arreglos de cualquier tipo, ya sea datos primitivos o clases (tipos compuestos). Declaracin de arreglos La sintaxis es la siguiente: <tipo> [ ] <nombre-arreglo>; Cuando queremos que una variable sea un arreglo nicamente anteponemos los corchetes, esto le indica al compilador que la variable de la derecha ser una referencia de arreglo. En el lenguaje Java un arreglo es un objeto an cuando el arreglo sea de tipos de datos primitivos, adems como el resto de los objetos, la declaracin no crea el objeto por si mismo. En su lugar la declaracin de un arreglo crea una referencia que puede ser empleada para un arreglo. El espacio en memoria usado para los elementos del arreglo, es dinmico, por lo que es necesario emplear el operador new para crear el espacio para los elementos del arreglo. Creacin de referencias para arreglos Se deben crear arreglos como objetos, empleando el operador new, por ejemplo, suponga la creacin de un arreglo de caracteres (primitivo). char[] s; s = new char[26]; for ( int i=0; i<26; i++ ) { s[i] = (char) ('A' + i); }

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

El operador new crea un arreglo con 26 caracteres que sern inicializados cada uno de sus elementos a carcter vaci (\u0000). De esta forma el arreglo esta listo para ser manipulado. Recuerde que el limite de los arreglos va de 0 a N-1. Debe tomar en cuenta que todo objeto referenciado en java es por defecto un objeto de la clase Object, la clase object es la clase mas alta en la jerarqua de objetos referenciados y mas adelante veremos que tiene varios mtodos y propiedades asociadas a el y que son transferidas al resto de los objetos referenciados por medio de un esquema de herencia. Observe como el objeto char [] s, es inicializado mediante el operador new, que es el responsable de asignar un bloque de memoria temporal a todos los objetos referenciados. Ahora debemos percatarnos que siendo un tipo de dato referenciado, como tal, tendr propiedades como por ejemplo el nmero de elementos inicializados en l (length). public class ArrayChar { public static void main( String args [] ) { char[] s; int dim = 26; s = new char[ dim ]; for ( int i=0; i < 26; i++ ) { s[i] = (char) ('A' + i); } System.out.print("El abecedario es "); for ( int i=0; i < s.length; i++ ) System.out.print(s[i]); System.exit(0); } }

Inicializacin de arreglos Cuando se crea un arreglo, cada elemento es inicializado. Para el caso del arreglo de caracteres vimos que cada carcter es inicializado por defecto a (\u0000) lo que indica que an no ha sido ingresado ningn dato dentro de la casilla. Adems es posible crear inicializaciones de manera corta como la siguiente: char [] vocales = { 'a', 'e', 'i', 'o', 'u'};

y tambin de manera equivalente: char [] vocales; vocales = new char [ 5 ]; vocales [0] = 'a'; vocales [1] = 'e'; ...

2.3.3 Arreglos multidimensionales Java provee un mecanismo muy eficiente y sencillo para la construccin de arreglos multidimensionales, solo es necesario indicar el numero de dimensiones con las que se desea trabajar, es decir, as como con los vectores, solo es necesario agregar una dimensin usando los corchetes.

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

Podemos crear arreglos multidimensionales de la siguiente manera: int [ ][ ] matriz = new int [2][ ]; matriz[0] = new int [5]; matriz[1] = new int [5]; El objeto que es creado en la primera llamada con new es un arreglo que contiene dos elementos. Cada elemento es una referencia nula (null) a un elemento de tipo array of int, y debe ser inicializada cada elemento de manera separada, de manera que cada elemento apunta a su arreglo. Debido a esto es posible crear matrices no-rectangulares. En algunos casos esta inicializacin podra parecer tediosa, pues es mas comn emplear matrices rectangulares, a continuacin vemos como sera la declaracin e inicializacin de una matriz de enteros: int [ ][ ] matriz = new int [4][5]; Veamos ahora un ejemplo de una matriz de valores dobles a la que se le asignan valores de manera aleatoria empleando una funcin esttica llamado random() perteneciente a la clase Math, veremos ms adelante que al igual que System.out, Math no requiere construir una instancia de la misma para usarla: public class MatrizRand { public static void main( String args [] ) { int f = 5, c = 2; double m[][] = new double [f][c]; System.out.print("numero de filas " + f); System.out.print("numero de columnas " + c); for ( int i = 0; i < m.length; i++ ) { for ( int j = 0; j < m[i].length; j++ ) m[i][j]= Math.random(); } for ( int i=0; i < m.length; i++ ) { for ( int j=0; j < m[i].length; j++ ) System.out.print(" ("+ i +"," + j + ") -> " + m[i][j]); System.out.println(); } System.exit(0); } } Como ya se menciono los arreglos en java son objetos, por lo que el numero de elementos que pueden ser almacenados forma parte de sus atributos. Un acceso a un limite fuera de su longitud produce un error en tiempo de ejecucin. Emplee el atributo length para iterar dentro de un arreglo. Las funciones matemticas siempre son necesarias para construir ciertas operaciones que de otra forma resultaran muy complicadas, Java cuenta con una clase llamada Math que tiene asociada un numero determinado de funciones, como hemos visto en el ejemplo anterior la funcin random es capaz de generar un valor aleatorio de tipo double que es asignado a una variable de ese tipo.

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

A continuacin se mencionan algunas de las funciones estaticas de Math mas comunes, aunque es importante recordar que se cuentan con muchas mas: o o o o o Math.abs(x), que calcula el valor absoluto de un valor x. Algunas funciones trigonometritas como Math.sin(x), Math.cos(x), Math.tan(x). Math.pow(x,y), que calcula el valor de x elevado a la y La funcion Math.floor(x) que redondea a un valor proximo inferior y Math.round(x) que regresa un valor entero cercano a x. Math.random(), que genera valores aleatorios en el rango de 0.0 <= x < 1.0.

Redimensin de arreglos Despus de que ha sido creado un arreglo, no puede ser redimensionado su tamao. Sin embargo puede ser empleada la misma referencia a la variable para declarar una nueva referencia del arreglos por completo. int [] arreglo = new int [6]; arreglo = new int [10]; En este caso, el primer arreglo pierde la referencia a todos sus componentes, a no ser que sean almacenados en algn lugar.

2.3.4 Datos referenciados Existen, adems de los datos primitivos ya vistos, datos referenciados (datos tipo clase) que son objetos mas complejos o compuestos que permiten realizar mas operaciones, debido a fueron diseados a partir de clases, entre ellos existe una clase u objetos referenciado de uso muy comn llamado String, que es el tipo de dato en el que nos concentraremos en este momento. La clase string es una de tantas clases incluidas en la librera de clases de Java. La clase string provee la habilidad de almacenar secuencias de caracteres y manipularlas de forma sencilla para almacenar literales. Los objetos strings pueden ser declarados de dos maneras: String nombre = new String(Juan Prez); String nombre = Juan Prez; La clase String es la nica que permite construir objetos de ese tipo sin emplear el operador new, que es el empleado para crear cualquier objeto en Java. Como hemos visto las referencias u objetos adquieren propiedades directas de una clase superior llamada Object, para el caso de los datos referenciados como el String se tiene la propiedad length que nos indica el numero de caracteres contenidos en un String. Pero es importante recordar que dicha clase define muchas mas funciones que pueden resultar muy til para el manejo de cadenas. A continuacin se comentan algunas de ellas, pero es importante recordar que se cuentan con muchas mas. A continuacin asuma que s1 y s2 son objetos de tipo String: o o o s1.equals(s2), regresa verdadero (true) en caso de que los caracteres de s2 correspondan exactamente con los de s1. s1.toUppercase(), regresa un objeto de tipo String con exactamente cada carcter de s1 en mayscula. s1.charAt(n), regresa como valor el n-simo carcter en un String

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

Recuerde tambin que los objetos de tipo String pueden ser fcilmente concatenados empleando el operador de +, por ejemplo: String s1 = "Hola"; String s2 = "mundo"; String s3 = s1 + " " + s2; Inclusive el objeto esttico System.out.print() puede concatenar una serie de valores sin importar el tipo, por ejemplo: int edad = 23; System.out.println("Hola mi edad es " + edad); En realidad el objeto String es el nico objeto en java que cuenta con las caractersticas de concatenacin empleando el operador de + (suma) y asignacin directa empleando el operador =. Desafortunadamente son los nicos operadores en java que tienen ese comportamiento, adems es importante recordar que la sobrecarga de operadores no se encuentra disponible en el lenguaje como tal, por lo que no es posible implementarla, como es el caso de C++ o C#. Para el programador dedicado a la construccin de aplicaciones finales que tiene una gran necesidad de manejar nombres e incluso cambios de valores entre tipos reconocera en este lenguaje muchos beneficios que no son tan palpables en otros lenguajes de programacin. Tambin es posible construir arreglos de tipo String, solo debe de recordar que para este caso existen 2 mecanismos para obtener la longitud, una la del arreglo length (propiedad) y otro la longitud total de caracteres por cada elemento length(): public class ArrayString { public static void main( String args [] ) { String [] nombres = {"Moira", "Almudena", "Santiago"}; System.out.println("tamao del arreglo " + nombres.length + '\n'); for (int i = 0; i < nombres.length; i++) System.out.println("nombre " + nombres[i] + " tiene " + nombres[i].length() + " caracteres"); System.exit(0); } }

2.3.5 Mtodos estticos La forma ms sencilla de realizar programas de manera estructurada en java es empleando funciones o mtodos estticos, que son procedimientos medianamente independientes pero muy poco alejados del manejo de datos como en las clases. En realidad un procedimiento esttico esta involucrado de manera local a la clase que se construye. Hasta el momento solo realizaremos mtodos estticos, pues necesitamos adquirir cierta habilidad antes de retomar nuevamente la construccin de clases. A continuacin emplearemos el diseo de una funcin esttica muy simple con el objetivo de ver la independencia de la funcin y mostrar de manera clara lo referente al paso de parmetros que sigue siendo parte fundamental en la construccin de herramientas modulares.

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

public class MatrizRand { public static void main( String args[] ) { int f = 5, c = 2; double m[][] = new double [f][c]; System.out.print("numero de filas " + f); System.out.print("numero de columnas " + c); for ( int i = 0; i < m.length; i++ ) { for ( int j = 0; j < m[i].length; j++ ) m[i][j]= Math.random(); } for ( int i=0; i < m.length; i++ ) { for ( int j=0; j < m[i].length; j++ ) System.out.print(" ("+ i +"," + j + ") -> " + m[i][j]); System.out.println(); } System.out.println(" sumatoria " + sumatoria(m)); System.exit(0); } public static double sumatoria(double [][] lista) { double total = 0; for( int i = 0; i < lista.length; i++ ) for ( int j = 0; j < lista[i].length; j++ ) total += lista[i][j]; return total; } }

2.4

Constantes

Java emplea la palabra clave final para indicarle al compilador de que las variables declaradas bajo esta etiqueta debern comportarse como si fueran constantes. Esto indica que su valor no puede ser modificado una vez que se haya declarado e inicializado. Las constantes se declaran de la siguiente manera: final double PI = 3.14159; final char VALOR = S; final String MENSAJE = Error; Si se intenta cambiar el valor de las variables tipo final desde una aplicacin, se genera un error de compilacin. Es importante recordar, como medida de diseo, que los nombres de las constantes deben escribirse con letras maysculas para facilitar su ubicacin dentro del cdigo. Tambin los las funciones miembro (mtodos) pueden ser de tipo final, en cuyo caso no podrn ser sobrecargados.

2.5

Convenciones de escritura en Java

A continuacin se muestran solo algunas convenciones de escritura (codificacin) del lenguajes java:

10

UAA Sistemas Electrnicos

Programacin en Java

Eduardo Serna-Prez

Package los paquetes son colecciones de clases distribuidas (organizadas) en directorios y por lo general se encuentran relacionadas entre si. El nombre de los paquetes se escriben en minsculas. package proyecto.objetos Clases los nombres de las clases deben ser sustantivos (desde un punto de vista meramente didctico se le define como el tipo de palabra que significa persona, animal o cosa concreta o abstracta), en algunos casos mezclados, con la primera letra de cada palabra en mayscula. class EjemploUno Mtodo los nombres de los mtodos deben ser verbos, con palabras mezcladas, con la primera letra en minscula. En caso de emplear mas palabras se le recomienda hacer la primera letra mayscula. calculaPromedio() Variables todas las variables pueden ser mezclas de palabras procurando emplear la letra minscula para la primera y empleando las letras maysculas para separar al resto de las palabras. apellidoPaterno Procure limitar el empleo de variables simples (a, b, , x) para el manejo de bucles de control. Constantes se recomienda el uso de las constantes con letras maysculas, separando las palabras con guin inferior. TOPE_MAXIMO

Bibliografa Nell Dale, Chip Weems, Mark Headington, Programming and Problem Solving whith Java, Jones & Bartlett, 2005, ISBN: 0-7637-3069-6. Luis Joyanes Aguilar y Matilde, Java 2 Manual de programacin, Osborne-Mc Graw Hill.

11

Das könnte Ihnen auch gefallen