Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Breve definicin del arte de programar Imagnate un conjunto de acciones, que se van ejecutando unas tras otras, en secuencia, para obtener un nico resultado. No estamos exagerando: esta es la definicin ms bsica de programacin. Es, en definitiva el acto de introducirle a una computadora una serie de comandos, para que luego este le devuelva algo al usuario, ya sea en un programa que calcula la cuota ISR, o en un juego. Sin los programas, sera imposible trabajar con computadoras. Veamos ahora los trminos ms bsicos relacionados con el mundo de la programacin. Lenguaje de programacin: Es un vocabulario y un conjunto de reglas gramaticales, para ensearle a una computadora a realizar ciertas tareas. Hay dos grandes grupos de lenguajes que una computadora puede usar: a) Los lenguajes de alto nivel (C/C++, Java, etc.), que tienen una sintaxis ms cercana a la de nuestros lenguajes humanos. Se crea as una capa de abstraccin, entre el hardware fsico y el programador. b) Los lenguajes de bajo nivel, llamados ensambladores, que utilizan un conjunto de caracteres del lenguaje que usa directamente el ordenador, es decir, que usan el llamado cdigo mquina (strings binarios que representan las instrucciones). Programa: Como dice Richard Stallman en la pelcula The Code, un programa se parece mucho a una receta. Ambos consisten en una lista de pasos que hay que seguir con mucho cuidado, con reglas que determinan cundo sea terminado y cundo hay que volver a empezar. En definitiva, un programa, sea cual sea el lenguaje en el que est escrito, es una lista ordenada de reglas, de instrucciones, mediante las cuales los humanos describimos, con todos los detalles y sin ambigedades, las tareas que queremos que la computadora haga. Como es ms fcil programar usando lenguajes con una sintaxis parecida a la de los lenguajes normales, es decir, usando lenguajes de alto nivel, una computadora nunca podr entender un programa que los humanos hayamos creado. Esto nos obligar a usar traductores, que pueden ser compiladores, interpretadores o entornos mixtos. Compiladores: Son aplicaciones de software que usan como entrada a un programa ya escrito, en un lenguaje de alto nivel, y que producen otro en cdigo mquina. Esta, que era la concepcin clsica, fue superada hace mucho. En un contexto ms moderno, un compilador es un programa que coge cdigo escrito en un lenguaje A, y genera con l otro que es semnticamente equivalente en un lenguaje B (el programa ya compilado). Por equivalencia semntica entendemos que si el programa en el lenguaje A imprime en la pantalla la frase la vida es dura, el programa en el lenguaje B que ha sido generado por el compilador, no puede escribir cosas como sabemos que 1+1=2.
En otras palabras, a lo que nos referimos con semnticamente equivalente es que despus de la conversin (la compilacin), el nuevo programa tiene que hacer lo mismo que haca el original. Como ejemplos de compiladores tenemos GCC (GNU C Compiler), P2C (Pascal to Cun compilador que convierte un cdigo fuente escrito en pascal al lenguaje C),ps2pdf (coge un script en postscript y genera otro en PDF), Silicon Compiler (recoge una especificacin de un circuito digital, y genera el dibujo, que sea impreso que ser impreso en la placa de silicio), Verilog (Usa una especificacin de un circuito digital y genera el diagrama del circuito),etc. Intrpretes: A diferencia de los compiladores, que generan cdigo para una mquina determinada, los intrpretes manejan las instrucciones del programa-fuente de manera distinta. Los interpretes, a la vista del cdigo fuente, hacen llamadas a rutinas de interpretacin y de ejecutan las ordenes directamente. En este caso no se genera ningn cdigo intermedio, si no que los propios interpretes ejecutan el programa. Como ejemplos tenemos algunos lengujes escript (como el bash de Linux Python) y JVM (Mquina virtual java). Entornos mixtos: Ademas de los traductores que ya hemos descrito, hay algunos casos en los que dispondremos de los dos tipos de traduccin. Por ejemplo, el lenguaje Perl Coge un cdigo fuente y genera un bytecode (Ensamblador en una maquina virtual), para ejecutarlo luego en la maquina fsica (Tu PC). Tenemos as una secuencia de compilacin e interpretacin interna, aunque desde la perspectiva del programador parece como si solo hubiera habido una interpretacin.
Lgica de programacin.
Si pudiramos meternos en un procesador, podramos ver que su trabajo se limita a tratar seales elctricas, que representan valores positivos y negativos, unos y ceros, al estar basados en un sistema binario, que sirve para establecer una comunicacin entre todos los dispositivos. El lenguaje, binario sin embargo, es casi imposible de interpretar, y eso a pesar de que est formado por muy pocos elementos. Las grandes ideas, es decir, el texto del programa, tienen que formularse en secuencias tambin muy grandes de cdigo binario. Esa fue una de las razones que animaron al desarrollo del primero de los cdigos de condensacin de informacin: el hexadecimal, que utiliza diversas secuencias abreviadas para representar conjuntos de cdigo binario. Los conjuntos de cdigo hexadecimal se bautizaron en su da con el nombre de instrucciones, y ese trmino se sigue utilizando hoy en los lenguajes de programacin. Al hexadecimal le siguieron muchos tipos de cdigos, y hoy hay cientos de ellos. Tras la introduccin de las instrucciones y con la condensacin de las ideas en un cdigo electrnico, se hizo necesario crear un soporte terico, que definiera las reglas de pensamiento y las fases de creacin de una instruccin. Ese proceso debido a su analoga con la lgica humana, y especial mente con la Lgica Formal (el conjunto de leyes que nos indica cmo se piensa correctamente, y que propone usar razonamientos coherentes para llegar as a conclusiones que puedan ser demostradas, etc.), se llama Lgica de Programacin.
Instrucciones.
En el lenguaje comn entendemos por instrucciones un conjunto de reglas o normas definidas para la realizacin o el uso de algo. En informtica podramos utilizar la misma definicin, pero cambiando el sujeto. Una instruccin lgica es el proceso de pensamiento que le dice a una computadora que ejecute una accin bsica. Una orden aislada no permite realizar un proceso completo, por supuesto, as que las instrucciones tienen que ir encadenadas en una secuencia, como en una receta, y no puede haber contradicciones lgicas entre ellas. Hay herramientas que adems de ordenar lgicamente las acciones o las instrucciones, nos permiten realizar determinados procesos repetitivos. Esas herramientas se llaman algoritmos.
Algoritmo.
Un algoritmo es una secuencia finita de pasos para ejecutar una tarea. Para que sean funcionales, estas tareas no pueden ser redundantes, y estar definidas de una manera ambigua, si no que deben ser claras y precisas. Como ejemplos podemos citar los algoritmos de las operaciones bsicas (suma, resta, multiplicacin y divisin) de nmeros reales decimales.
Desarrollo de Algoritmos.
Los algoritmos se describen en un lenguaje llamado pseudocdigo. Se dice que es pseudocdigo por que cuando estamos programando en un lenguaje concreto, por ejemplo, en java, generamos cdigo en java, y no en otro lenguaje. Los algoritmos son en cambio independientes de los lenguajes de programacin, y sirven en principio para cualquiera de ellos. El algoritmo tiene que ser fcil de interpretar y de codificar: un trmino medio entre el lenguaje natural y el de programacin.
Caractersticas de Java.
He aqu los principales puntos en los que se apoya la tecnologa Java: Lenguaje totalmente orientado a objetos: Java sigue las reglas del paradigma de programacin orientado a objetos (OOP), ya que trabaja con pequeas piezas de cdigo autnomo que interactan entre s para resolver un problema en comn. Disponibilidad de un amplio conjunto de libreras: Pose un amplio conjunto de clases, que Sun pone a nuestra disposicin, con las cuales es posible realizar, prcticamente, cualquier tipo de aplicacin. Multiplataforma: Gracias al empleo de una plataforma de software conocida como JVM (Mquina Virtual Java), el cdigo generado por los compiladores de Java puede ejecutarse en cualquier plataforma de hardware. Seguro: Emplea medidas de seguridad que son capaces de controlar el acceso a disco por parte de los programas y prohibir manipulaciones de memoria con apuntadores. Adems, permite la firma digital de aplicaciones. Amplio soporte de fabricantes de software: Hoy en da, encontramos una amplia variedad de productos software de diferentes fabricantes que dan soporte java como puede ser el caso de los entornos de desarrollo o los servidores de aplicaciones.
Qu es Java?
Java es un lenguaje de programacin de alto nivel con el que se pueden escribir tanto programas convencionales (aplicaciones) como para internet (applet).
Ediciones Java.
Una de las caractersticas de Java indicadas anteriormente es el hecho de disponer de un amplio conjunto de paquetes (libreras) de clases para la realizacin de las aplicaciones. Todo este compendio de clases se organiza en tres grandes grupos, conocidos como ediciones Java. J2SE (Java 2 Platform, Standard Edition): Forman parte de este grupo los paquetes de clases de uso general, es decir, aquellos que se utilizan en cualquier tipo de aplicacin. J2SE incluye tambin los paquetes de clases para la creacipon de entornos graficos y aplicaciones para navegadores Internet (applets). Esta edicin ser en la que nos centraremos durante esta parte del manual. J2EE (Java 2 Platform, Enterprise Edition): Usada en empresas grandes para desarrollar aplicaciones de cmputo distribuido. J2ME (Java 2 Platform, Micro Edition): Usada en la creacin de aplicaciones para dispositivos con recursos limitados; actualmente es empleada en Palm Computers y telfonos celulares.
Antes de poder utilizar las herramientas del JDK para compilar y ejecutar programas, es necesario configurar las variables de entorno PATH y CLASSPATH. La configuracin de variables de entorno se puede hacer a travs de la consola, el problema es que una vez que sta se cierre, los valores establecidos en las variables se perdern. Por ello, resulta ms cmodo y eficiente realizarlo a travs del panel de control de Windows, aunque la forma hacerlo depende ligeramente de la versin del sistema operativo utilizado.
Comentarios multilinea
Todos tus programas deben llevar los siguientes comentarios en el encabezado: /* Programo: Nombre del alumno Catedrtico: Nombre del facilitador Lenguaje: Java 2.0 Objetivo: Describir el objeto del programa Archivo: Nombre del archivo.java Fecha de creacin: fecha Fecha de actualizacin: Fecha */
Identificadores
Un identificador es un nombre dado a una variable, mtodo o clase. Reglas para construir un identificador: - Letras (de la a a la z y de la A a la Z) - Dgitos (del 0 al 9) - El carcter _ (subrayado) y $(pesos) - No se puede iniciar la por un numero o smbolos especiales
Programacin en Java.
Identificacin de los componentes de una clase.
Obedeciendo el OOP, un programa en Java deber estar compuesto por clases y preferentemente cada clase deber estar contenida en un archivo fuente independiente. Toda aplicacin de escritorio estar constituida por al menos una clase llamada clase controladora, clase principal o clase de prueba que sirve de punto de entrada al programa. En toda clase pueden distinguirse las siguientes partes, secciones o apartados: La declaracin de la clase (obligatoria) La declaracin e inicializacin de los atributos (opcional) Sus mtodos (opcional) Los comentarios (opcionales) NOTA: Aunque el compilador no objete al respecto, una clase deber contener al menos un mtodo o un atributo, ya que de lo contrario no tendr razn de existir.
[modificadores] class identificador{ } En donde: y [modificadores] determinan la accesibilidad de otras clases a la clase que se est declarando, as como el comportamiento de su herencia. Todos son opcionales y por el momento se emplear public. y La palabra reservada class es obligatoria y le dice al compilador que el bloque de cdigo siguiente es una declaracin de clase. y identificador ser el nombre de la clase segn las reglas vistas con anterioridad. Como se mencion ya, el nombre de la clase debe coincidir exactamente con el nombre del archivo .java que la contiene. y Las llaves de apertura y cierre ( { } ) delimitan el cuerpo de nuestra definicin de clase. Todas las variables y mtodos de la clase debern ir encerrados en este bloque.
En donde: [modificadores] representan diversas palabras reservadas que definen la forma en que los atributos de la clase son accedidos. Todos son opcionales y por ahora se emplear el modificador public. y tipo representa el tipo de dato primitivo que la variable contendr. As, algunas variables contendrn nmeros enteros, reales, caracteres o valores booleanos. y identificador ser el nombre que se le asignar a la variable segn las reglas vistas con anterioridad. y valor ser el valor que se desea asignar a la variable y es opcional. Ejemplos de declaracin de atributos: y public int shirtID = 0; public char colorCode = G; public float orderTotal;
y y
System.out.println(Hola a todos!);
}
El mtodo main ( ).
Toda aplicacin Java est compuesta por al menos una clase, incluso la sencilla aplicacin (primer programa) que genera un mensaje de saludo. El mtodo main () es el punto de arranque de un programa Java, cuando se invoca al comando java.exe desde la lnea de comandos, la JVM busca en la clase indicada un mtodo esttico llamado main (). Dentro del cdigo main () pueden crearse objetos de otras clases e invocar a sus mtodos, en general, se puede incluir cualquier tipo de lgica que respete las restricciones indicadas para los mtodos estaticos. El mtodo main () debe cumplir con las siguientes caractersticas: y Ha de ser un mtodo publico y Ha de ser un mtodo esttico y No puede devolver ningn resultado (tipo de devolucin void) y Ha de declarar un array de cadenas de caracteres en la lista de parmetros o un nmero variable de argumentos.
Sintaxis bsica.
Antes de introducirnos de lleno a la sintaxis del lenguaje, vamos a comentar algunos aspectos sintcticos generales: y Lenguaje sensible a maysculas y minsculas. y Las sentencias finalizan con ;. y Los bloques de instrucciones se delimitan con llaves ({}). y Comentarios de una lnea ( // ) y multilinea (/**/). y
Secuencias de escape.
Hay determinados caracteres en Java que o bien no tienen una representacin explicitica o bien no pueden ser utilizados directamente por el hecho de tener un significado especial para el lenguaje. Para poder utilizar estos caracteres dentro de un programa Java se utilizan las secuencias de escape. Una secuencia de escape est formada por el carcter \ seguido de una letra, en el caso de ciertos caracteres no imprimibles, o del carcter especial. La tabla de la fig. 30 contiene las principales secuencias de escape predefinidas de java.
Significado
Secuencias de escape \b \n \t \\ \ \
Significado Retroceso Salto de lnea Tabulacin horizontal Barra invertida \ Comilla Simple Comilla Doble
Palabras reservadas
Como todo lenguaje de programacin, Java posee un conjunto de palabras reservadas, que no pueden ser usadas para nombrar ningn identificador: Abstrac Boolen Break Byte Case Char Class const Continue Default Do Double Else Extends Final Finally Float For Goto If Implements Import Instanceof Int Interface Long Native New Package Prvate Protected Public Return Short Static Strictfp Super Switch Synchronized This Throw Throws Transient Try Void Volatile while
Adicionalmente, Java emplea los nombres true, false y null para definir los valores constantes falso, verdadero y nulo respectivamente, por lo que tampoco pueden emplearse para definir identificadores propios.
Variables.
Las variables almacenan datos cuyo valor puede verse modificado durante la ejecucin de un programa. Las variables se utilizan para representar tipos de datos muy diferentes. En Java hay que distinguir entre variables por valor y objetos o variables por referencia; las variables de tipo simple son variables por valor. Declaracin de variables. Para utilizar una variable se necesita declararla e indicar al compilador el nombre de la variable, as como el tipo de dato que representa. Esta operacin se denomina declaracin de variables. Toda variable debe ser declarada antes de poder ser utilizada. Para declarar variables de tipo simple se especifica su nombre y su tipo, que define tanto los datos que la variable va a poder almacenar como las operaciones que tendr permitidas. La sintaxis es, por tanto:
tipoDato nombrevariable; Ejemplo: double base; //declara base como variable double char b; //declara b como variable char
Sentencias de asignacin: Despus que una variable se declara, se puede asignar un valor a esa variable utilizando una sentencia de asignacin. La sintaxis de la asignacin tiene el siguiente formato:
variable = expresin;
Es preciso tener en cuenta que una expresin es un conjunto de operadores y operandos, pero una nica constante o variable tambin constituye una expresin.
z = 5; //asigna 5 a z
longitud = 1.0; //asigna 1.0 a longitud
Declaracin e inicializacin de variables en un solo uso. Se puede declarar e inicializar una variable en un solo paso en lugar de en dos pasos como se ha mostrado en las operaciones.
char respuesta = S int contador = 5;
mbito. Es importante el lugar donde se efecta la declaracin de las variables, pues ste determina su mbito. En Java es posible agrupar sentencias simples, encerrndolas entre una pareja de llaves para formar bloques o sentencias compuestas y efectuar declaraciones de variables dentro de dichos bloques, al principio de los mtodos o fuera de ellos. Una sentencia compuesta nula es aquella que no contiene ninguna sentencia entre las llaves { }.
Constantes.
Las constantes son datos cuyo valor no puede variar durante la ejecucin de un programa. En un programa pueden aparecer constantes de dos tipos: literales y simblicas. Las constantes simblicas o con nombre representan datos permanentes que nunca cambian y se declaran como las variables, pero inicializndose en el momento de la declaracin y comenzando dicha declaracin con la palabra reservada final, que sirve para que el valor asignado no pueda ser modificado.
static final double PI = 3.141592;
Las constantes literales son valores de un determinado tipo escritos directamente en un programa. Dichas constantes podrn ser enteras, reales, lgicas, carcter, cadena de caracteres, o el valor null.
7.98, t, 954, 0
Operadores.
Los operadores de un lenguaje se pueden utilizar para combinar o modificar los valores de un programa. Java posee un gran conjunto de operadores.
Operadores Aritmticos.
Los operadores aritmticos permiten realizar operaciones aritmticas bsicas, actan sobre operandos numricos y devuelven un resultado de tipo numrico.
OPERADOR + * / % ++ --
PROPOSITO Suma Resta Multiplicacin Divisin Resto de la divisin entera Incrementa una variable numrica en una unidad Decrementa una variable en una unidad
Asignacin.
Adems del clsico operador de asignacin (=), Java dispone de un conjunto de operadores que permiten simplificar el proceso de operar con una variable y asignar el resultado de la operacin a la misma variable.
OPERADOR = += -= *= /= %= DESCRIPCIN Asigna la expresin de la derecha al operador situado a la izquierda del operador Suma la expresin de la derecha, a la variable situada a la izquierda del operador Resta la expresin de la derecha, a la variable situada a la izquierda del operador Multiplica la expresin de la derecha, con la variable y deposita el resultado en la variable Divide la variable situada a la izquierda entre la expresin de la derecha, depositando el resultado en la variable Calcula el residuo de la divisin entre la variable situada a la izquierda y la expresin de la derecha, depositando el resultado en la variable.
Condicionales.
Se utilizan para establecer una condicin dentro de un programa, el resultado de esta ser un tipo boolean (true o false). Estos operadores se utilizan en instrucciones de control de flujo, tal y como veremos en el apartado siguiente.
Operador == < > <= >= = Descripcin Compara 2 valores, en caso de que sean iguales el resultado de la operacin ser true. Si el operando de la izquierda es menor que el de la derecha, el resultado es true. Si el operando de la izquierda es mayor que el de la derecha, el resultado es true. Si el operando de la izquierda es menor o igual que el de la derecha, el resultado es true. Si el operando de la izquierda es mayor o igual que el de la derecha, el resultado en true. Si el valor de los operndoos es diferente, el resultado es true.
Lgicos.
Operan con valores tipo boolean, siendo el resultado tambin de tipo boolean. Operador && || ! Descripcin Operador lgico AND. El resultado ser true si los dos operndos son true, en cualquier otro caso el resultado ser false. Operador lgico OR. El resultado ser true si alguno de los operadores es true. Operador lgico NOT. Acta sobre un nico operando boolean, dando como resultado el valor contrario al que tenga el operando.
Instrucciones de Control
Como cualquier otro lenguaje de programacin, java dispone de un juego de instrucciones para controlar el flujo de ejecucin de un programa. Tenemos instrucciones alternativas y repetitivas, a continuacin estudiaremos cada una de ellas.
Sentencia If.
La sentencia if permite en un programa tomar la decisin sobre la ejecucin/no ejecucin de una accin o de un grupo de acciones, mediante la evaluacin de una expresin lgica o booleana. La accin o grupo de acciones se ejecutan cuando la condicin es cierta y en caso contrario no se ejecutan y se saltan.
Sentencia switch.
Cuando se tienen muchas alternativas posibles a elegir, el uso de sentencias ifelse puede resultar bastante complicado, siendo en general ms adecuado en estos casos el empleo de la sentencia switch.
switch (expresion) { case valor 1: sentencias break; case valor 2: sentencias break; default: sentencias }
Sentencia For.
El bucle for est diseado para ejecutar una secuencia de sentencias un nmero fijo de veces.
for (inicializacin;condicin;incremento) { Sentencias }
Sentencia While.
Permite ejecutar un bloque de instrucciones mientras se cumpla una determinada condicin dentro del programa. Los dos posibles formatos que admite esta instruccin y un ejemplo de utilizacin se muestran a continuacin.
while (condicion) { Sentencias }