Documente Academic
Documente Profesional
Documente Cultură
Fundamentos De Programacin
Unidad 1 Conceptos bsicos del modelo orientado a objetos
1.1 Paradigmas de Programacin 1.2 Beneficios del Modelo de Objetos y de la Poo sobre otros Paradigmas 1.3 Reconocimiento de Objetos y Clases en el mundo real y la interaccin entre ellos 1.4 La Abstraccin y el encapsulamiento como un proceso natural 1.5 La POO y la Complejidad del Software 1.6 Conceptos del Ciclo de Vida del Software 1.6.1 Especificaciones de Requerimientos 1.6.2 Anlisis Orientado a Objetos 1.6.3 Diseo Orientado a Objetos 1.6.4 Programacin Orientada Objetos, Conceptos y Caractersticas 1.7 Elementos Primordiales en el Modelo de Objetos 1.7.1 Encapsulamiento de Objetos 1.7.2 Modularidad de Objetos 1.7.3 Herencia y Polimorfismo
de
La inclusin de procedimientos hace a los programas estructurados y con menos posibilidad de errores. Por ejemplo, si un procedimiento es correcto, cada vez que sea ejecutado producir, en principio, resultados correctos. Por el contrario, en caso de que el procedimiento contenga errores, se puede agilizar la bsqueda de stos ltimos y repararlos rpidamente. Un programa puede verse como una secuencia de llamadas a procedimientos. El programa principal es el responsable de pasar los datos individuales en cada llamada, los datos son procesados y una vez que el programa finaliza, se presentan y/o se obtienen los resultados finales. De esta manera, el control
Figura 1.3: Control de flujo en la programacin estructurada. En resumen, la programacin estructurada, consiste en dividir un programa en pequeas piezas llamadas procedimientos y cada procedimiento es ejecutado o llamado por el programa principal desde diferentes lugares de ste para resolver un problema. La programacin estructurada resuelve algunos problemas que se tienen con la programacin lineal. 1.1.3 Programacin Orientada a Objetos En la POO, la estructura es organizada por los datos. Primero se seleccionan las representaciones de los datos que mejor cumplen con los requerimientos, y luego se decide que hacer con ellas, que es justo lo contrario a la programacin modular. La abstraccin de datos es fundamental para un buen diseo. La POO resuelve la mayora de los problemas mencionados en las secciones anteriores. En contraste con otras tcnicas, ahora se va a interactuar con objetos cada uno manteniendo su propio estado, ver figura 1.5.
Encapsulamiento de Objetos Encapsulacin: Es la manera de ocultar los detalles de la representacin interna de un objeto presentando solo la interface para el usuario (ver figura 1.7).
Figura 1.7: Encapsulacin. El encapsulamiento es una caracterstica de la programacin orientada a objetos. Cada objeto est aislado del exterior, es un mdulo natural, y la aplicacin entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificacin por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones. Resumiendo, la separacin de los datos de las operaciones, y la restriccin de que slo es posible tener acceso a los datos a travs de las operaciones definidas en la interfaz, permite seleccionar los TDA apropiados para resolver un problema determinado. Los TDA proveen una visin abstracta para describir propiedades de un conjunto de entidades y su uso es independiente del lenguaje de programacin. Por esta razn, se introduce una notacin que consiste de dos partes: Datos o Atributos: En esta parte se describen las estructuras de los datos usados dentro del TDA de manera informal. Operaciones o Mtodos: En esta parte se describen las operaciones que sern vlidas para el TDA. Un conjunto de estas operaciones sern la interfaz del TDA. Para cada operacin se deben describir los argumentos, as como sus posibles precondiciones y postcondiciones. Los TDA permiten la creacin de instancias con propiedades y comportamientos bien definidos. En la POO los TDA's se conocen como clases. Una clase define las propiedades de los objetos los cuales son entidades tangibles en el ambiente de orientacin a objetos. Los TDA's definen su funcionalidad poniendo nfasis en los datos, la estructura, las operaciones y en los axiomas y precondiciones. Consecuentemente, POO es ''programar con TDA's'' (y algo ms). Instancias (objetos) de TDA's (clases) se crean dinmicamente, se usan y se destruyen con el objetivo de resolver un problema real mediante la POO.
10
11
12
Documentacin Externa Tambin conocida como Manual Tcnico, est integrada por los siguientes elementos: Descripcin del Problema, Nombre del Autor, Diagrama del Flujo y/o Pseudocdigo, Lista de variables y constantes, y Codificacin del Programa, esto con la finalidad de permitir su posterior adecuacin a los cambios. Manual del Usuario Es la documentacin que se le proporciona al usuario final, es una gua que indica el usuario como navegar en el programa, presentando todas las pantallas y mens que se va a encontrar y una explicacin de los mismos, no contiene informacin de tipo tcnico. 1.6.7 Mantenimiento Se lleva a cabo despus de determinado el programa, cuando se ha estado trabajando un tiempo, y se detecta que es necesario hacer un cambio, ajuste y/o complementacin al programa para que siga trabajando de manera correcta. Para realizar esta funcin, el programa debe estar debida mente documentado, lo cual facilitar la tarea. 1.7 Elementos Primordiales en el Modelo de Objetos La programacin Orientada a Objetos trata de cumplir las necesidades de los usuarios finales, ests tareas se realizan mediante la modelizacin del mundo real, el soporte fundamental es el modelo objeto. Los elementos ms importantes de este modelo son: Abstraccin Encapsulamiento Modularidad Jerarqua y Herencia Polimorfismo Abstraccin: Significa extraer las propiedades esenciales de un objeto que lo distinguen de los dems tipos de Objetos y proporciona fronteras conceptuales definidas respecto al punto de vista del observador. Es la capacidad para encapsular y aislar la informacin de diseo y ejecucin. La abstraccin es uno de los medios ms importantes, mediante el cual nos enfrentamos con la complejidad inherente al software. La abstraccin es la propiedad que permite representar las caractersticas esenciales de un objeto, sin preocuparse de las restantes caractersticas (no esenciales). Abstraccin es la tcnica de quitarle a una idea o a un objeto todos los acompaamientos innecesarios hasta que los deja en una forma esencial y mnima. Una buena abstraccin elimina todos los detalles poco importantes y le permite enfocarse y concentrarse en los detalles importantes. Una abstraccin se centra en la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial de un objeto de su implementacin. Definir una abstraccin significa describir una entidad del mundo real, no importa lo compleja que pueda ser y, a continuacin, utilizar esta descripcin en un programa.
13
1.7.1 Modularidad de Objetos La Modularidad es la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. La modularizacin consiste en dividir un programa en mdulos que se puedan compilar por separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. La Modularidad es la propiedad de un sistema que permite su descomposicin en un conjunto de mdulos cohesivos y dbilmente acoplados. Por supuesto no todos los mdulos son iguales: tomar un programa monoltico y separarlo de forma aleatoria en archivos no es ptimo. Se debe tener en cuenta los conceptos asociados de dependencia, acoplamiento, cohesin, interfaz, encapsulacin y abstraccin. Una vez identificado lo que es un buen mdulo, se puede contemplar la reutilizacin de un buen mdulo como componente. El Mdulo A depende del Mdulo B si cualquier cambio en el Mdulo B implica que el Mdulo A tambin tenga que ser modificado. A veces se dice que el Mdulo A es un cliente del Mdulo B, o que el Mdulo B acta como servidor del Mdulo A. En general, es normal que un mismo mdulo sea tanto cliente como servidor. 1.7.2 Herencia y Polimorfismo 1.7.2.1 Herencia La herencia es otra de las propiedades relativas a la POO, consiste en la propagacin de los atributos y las operaciones a travs de distintas sub-clases definidas a partir de una clase comn. Introduce, por tanto, una posibilidad de refinamiento sucesivo del concepto de clase. Nos permite definir una clase principal y , a travs de sucesivas aproximaciones, cualquier caracterstica de los objetos. A partir de ahora definiremos como sub-clases todas aquellas clases obtenidas mediante refinamiento de una (o varias) clases principales.
14
La herencia nos permite crear estructuras jerrquicas de clases donde es posible la creacin de sub-clases que incluyan nuevas propiedades y atributos. Estas sub-clases admiten la definicin de nuevos atributos, as como crear, modificar o inhabilitar propiedades. Para pensarlo de manera ms fcil podemos abstraernos al siguiente ejemplo. Pensemos en los distintos sub-modelos asociados a un modelo bsico de automvil. A partir de este modelo bsico, los fabricantes introducen distintas caractersticas (aire acondicionado, ABS, distintas tapiceras , acabados, etc.) que crean subclases. Todas estas sub-clases tienen en comn la estructura bsica (chasis , direccin , etc.) o varan slo en algunos de sus componentes. Asociemos a este tipo bsico una clase cuyos atributos representen las piezas que componen el coche. Las sub-clases aportarn sus propios atributos (en el caso de vehculos con aire acondicionado, todos aquellas piezas que lo componen), permitiendo la definicin de todos los posibles modelos.
Adems, es posible que una sub-clase herede atributos y propiedades de ms de una clase. Este proceso se denomina herencia mltiple y lo veremos con ms detalle en captulos posteriores. La herencia es, sin duda alguna, una de las propiedades ms importantes de la OOP, ya que permite, a travs de la definicin de una clase bsica, ir aadiendo propiedades a medida que sean necesarias y, adems, en el sub-conjunto de objetos que sea preciso. La herencia permite que los objetos pueden compartir datos y comportamientos a travs de las diferentes sub-clases, sin incurrir en redundancia. Ms importante que el ahorro de cdigo, es la claridad que aporta al identificar que las distintas operaciones sobre los objetos son en realidad una misma cosa. 1.7.2.2 Polimorfismo El polimorfismo es una nueva caracterstica aportada por la OOP. Esta propiedad indica la posibilidad de definir varias operaciones con el mismo nombre, diferencindolas nicamente en los parmetros de entrada. Dependiendo del objeto que se introduzca como parmetro de entrada, se elegir automticamente cual de las operaciones se va a realizar. Ya est habituado al operador <<suma>> que est presente en todos los lenguajes de programacin. Sin embargo, los operadores <<suma de fracciones>> y <<suma de nmeros complejos>> no existen en casi ningn lenguaje de programacin.
15
El operador suma de base de datos. Aunque a primera vista la expresin C= A+B, siendo A y B bases de datos, nos pudiera parecer una extraordinaria simplificacin, nos conduce a la pregunta: Qu es la suma de una base de datos? Consideremos varias posibilidades: Introduccin de registros: Lo que exige que A y B tengan la misma estructura. Unin de campos: Aquellos campos que aparezcan en B pero no en A sern aadidos a C Alguna de estas dos opciones es verdaderamente una suma? Es decir Cumple las propiedades conmutativa, asociativa, de elemento neutro, etc.? Qu ocurre si sumo dos bases de datos con estructuras distintas? Como puede observar, la definicin de un operador sobre un tipo complejo de datos, intentando utilizar identificadores de operadores de datos simples, puede tener resultados impredecibles. Una de las ventajas ms importantes, sin entrar en la redefinicin de operadores es permitir la realizacin de las clases que definen un programa de forma totalmente independiente al programa donde se utilizan. Gracias a la encapsulacin y el polimorfismo, aunque se utilicen los mismos nombre con las operaciones en dos clases distintas, el programa reconoce a que clase se aplica durante la ejecucin. Como se podr observar el polimorfismo y la encapsulacin de datos estn ntimamente ligados y nos permiten un mayor grado de mantenibilidad y reusabilidad que los lenguajes tradicionales. sta es precisamente una de las causas de la revolucin que ha supuesto la introduccin de los lenguajes orientados a objetos dentro de la programacin.
16
Conclusin. Identidad, clasificacin, polimorfismo y herencia caracterizan a los lenguajes orientados a objetos. Cada uno de estos conceptos puede utilizarse aisladamente, incluso aparecen en otras metodologas de programacin, pero juntos se complementan en una relacin sinrgica. Los beneficios de la programacin orientada a objetos son ms que los que pueden verse a simple vista. El nfasis en las propiedades esenciales de un objeto, fuerza al desarrollador a pensar cuidadosamente que es un objeto y que es lo que hace con el resultado de que el sistema es normalmente ms preciso, general y robusto que si pusiramos el nfasis en los procedimientos y los datos por separado.
17
Nombre de objeto 1: Coche Fernando Funciones permitidas objeto 1: Andar, Parar, Girar Datos objeto 1: gris, 140 Km/h, sper Nombre de objeto 2: Coche Nuria Funciones permitidas objeto 2: Andar, Parar, Girar Datos objeto 2: rojo, 170 Km/h, sin plomo 2.1.1 Mensajes Un programa OO en ejecucin, es un conjunto de objetos que son creados en tiempos de ejecucin, interactan entre s y finalmente se destruyen cuando ya no son necesarios. Esta interaccin se basa en el envo de mensajes entre objetos. Un mensaje es enviado a un objeto para pedirle que realice una cierta accin sobre sus datos. El envo de mensajes en la POO es similar a la llamada a procedimientos o subrutinas de las tcnicas estructuradas. Sin embargo, en la POO existen objetos autnomos que se comunican unos con otros por medio del envo de mensajes. Los objetos reaccionan cuando reciben algn mensaje de otro objeto y realizan una accin sobre sus datos. Existe tambin la posibilidad de que el objeto receptor niegue la ejecucin de un mtodo por medio de diferentes niveles de acceso. Un mensaje es una peticin a un objeto para la invocacin de uno de sus mtodos. Un mensaje contiene el nombre del mtodo, los argumentos del mtodo. Entonces, la invocacin de un mtodo de un objeto es la reaccin causada por la recepcin de un mensaje. Un mtodo se puede definir como: Mtodo: Un mtodo est asociado con una clase y es aqu donde se definen las operaciones que se llevarn a cabo sobre los datos. En otras palabras, un mtodo define el comportamiento de los objetos. Un objeto invoca mtodos como una reaccin a la recepcin de un mensaje.
18
Figura 2.1 Modelo El modelo define una visin abstracta del problema. Esto implica que el modelo se enfoca en la definicin de las propiedades del problema. Estas propiedades incluyen: Las estructuras de datos que sern afectadas y modificadas Las operaciones identificadas por el problema.
Una abstraccin es entonces, la estructuracin de un problema de la vida real en entidades bien definidas por sus datos y sus operaciones. Por lo tanto, estas entidades combinan datos y operaciones y no estn desacopladas. Una entidad con las propiedades descritas antes se conoce como un tipo de datos abstracto o TDA. La figura 2.2 muestra un TDA. Slo algunas operaciones son visibles desde el exterior y definen la interfaz de el TDA.
19
A diferencia de los atributos, las operaciones pueden tener diferente visibilidad hacia otras clases. Responsabilidades: Las responsabilidades son las obligaciones de una clase y son definidas por el usuario. Si bien existe un compartimiento dentro de la clase para la especificacin de las responsabilidades, stas son de carcter opcional.
20
Ejemplo:
Punto
x: entero; y: entero Punto(x,y:entero) mover(dist_x, dist_y:entero) distancia(P:Punto):real Representa un punto en el plano Dependiendo del nivel de detalle que queramos alcanzar en el modelo, se pueden obviar algunas de las divisiones del grfico de clases. Esto permite simplificar el diagrama completo, de acuerdo al nivel de abstraccin necesario. Puede utilizarse, por ejemplo:
Notas: A los grficos de clases se les puede agregar notas o comentarios sobre algn aspecto interesante de la clase. Estas notas pueden incluir observaciones sobre la clase, alguna restriccin de uso, e incluso el pseudo-cdigo de algunas operaciones. Se grafican por medio de un rectngulo con la esquina superior derecha plegada, como si fuera una hoja, y se une con una lnea al elemento de la clase al cual corresponde la nota.
En este ejemplo se agrega un comentario sobre la operacin distancia. Ms adelante veremos cmo especificar a travs de notas el cdigo correspondiente a una operacin de la clase. 2.3.2 DIAGRAMAS DE OBJETOS Hasta ahora, slo hemos mostrado clases en el modelo del sistema. Los objetos pueden modelarse tambin en un diagrama de objetos. Este diagrama utiliza la misma notacin y relaciones que el diagrama de clases, puesto que los objetos son simplemente instancias de esas mismas clases. Mientras el diagrama de clases muestra las diferentes clases y sus relaciones, el diagrama de objetos muestra instancias especficas de estas clases, y los vnculos entre estas instancias en un momento dado. Los objetos son mostrados como las clases, pero con el nombre del objeto subrayado y precedido del nombre de la clase que representa. La sintaxis correspondiente es:
21
2.3.3 ESPECIFICACIN DE LAS OPERACIONES. En las notas que se agregan al diagrama de clases podemos explicitar la implementacin de una o ms operaciones de la clase. Para ello utilizaremos la siguiente convencin:
En las notas tambin explicitamos los invariantes de clase. En este caso, la nota va unida por un vnculo al rectngulo que representa la clase. El lenguaje que utilizaremos para la especificacin de las operaciones es el Lenguaje de Diseo de Algoritmos, (sentencias de asignacin con, condicionales " si..entonces..si no...", ciclos "repetir..hasta" y "repetir mientras..", sentencia case, etc) con algunas operaciones especiales que se detallan a continuacin. 2.4.1 Analizar el enunciado del Problema
El anlisis comienza con la definicin de un problema generada por clientes y, posiblemente, por los desarrolladores. El anlisis hace que sea ms precisa y expone las ambigedades e incongruencias y no debera tomarse como inmutable, sino que tiene que servir como base para refinar los requisitos reales. El analista debe ser para los requisitos verdaderos de las decisiones del diseo y de implementacin disfrazada de requisitos y atacar a estos pseudorequisitos, porque restringen la flexibilidad. El propsito del anlisis subsiguiente es comprender en su totalidad el problema y sus implicaciones. 2.4.2 Identificar funciones del Sistema
22
Consiste en describir por escrito a nivel tcnico los procedimientos relacionados con el programa y su modo de uso. Tambin se debe documentar el programa para que sea ms entendible. Para quines son la documentacin? - Usuarios (Digitadores) - Operadores - -Programadores Analistas de sistemas Documentos que se elaboran: Manual de Usuario y Manual del Analista. A los usuarios se les elabora un manual de referencia para que aprendan a utilizar el programa. Esto se hace a travs de capacitaciones y revisin de la documentacin del manual de usuario. El manual del usuario no est escrito a nivel tcnico sino al de los distintos usuarios previstos y explica en detalle cmo usar el programa: descripcin de las tareas que realiza el programa, instrucciones necesarias para su instalacin puesta en marcha y funcionamiento, recomendaciones de uso, mens de opciones, mtodo de entrada y salida de datos, mensajes de error, recuperacin de errores, etc. A los operadores por si se presentan mensajes de error, sepan cmo responder a ellos. Adems que se encargan de darle soporte tcnico al programa. A los programadores a travs del manual del analista para que recuerden aspectos de la elaboracin del programa o en caso que otras personas puedan actualizarlo o modificarlo (darle mantenimiento) y no son necesariamente las personas que lo disearon. Es por ello, que la documentacin debe contener algoritmos y flujogramas de los diferentes mdulos que lo constituyen y las relaciones que se establecen entre ellos; listados del programa, corridas, descripcin de variables que se emplean en cada mdulo, cules son comunes a diferentes mdulos y cules locales; descripcin de los ficheros de cada mdulo y todo lo que sea de importancia para un programador.
2.5 Anlisis
2.5.1 Descubrir Objetos en el Dominio del Problema
Si se observa alrededor en una habitacin, existen un conjunto de objetos fsicos que pueden ser fcilmente identificados, clasificados y definidos (en trminos de atributos y operaciones). Pero cuando se observa el espacio de un problema en una aplicacin de software, los objetos pueden ser ms difciles de identificar. Se puede empezar a identificar objetos examinando el planteamiento del problema o realizando un anlisis sintctico gramatical en la narrativa del sistema que se va a construir. Los objetos se determinan subrayando cada nombre o clusula nominal e introducindola en una tabla simple. Los sinnimos deben destacarse. Si se requiere del objeto que implemente una solucin, entonces ste formar parte del espacio de
23
Los atributos describen un objeto que ha sido seleccionado para ser incluido en el modelo de anlisis. En esencia, son los atributos los que definen al objeto, los que clarifican lo que representa el objeto en el contexto del espacio del problema. Por ejemplo, si se tratara de construir un sistema de estadsticas para jugadores profesionales de bisbol, los atributos del objeto Jugador seran muy diferentes de los atributos del mismo objeto cuando se use dentro del contexto de un sistema de pensiones para jugadores profesionales. En el primero, atributos tales como nombre, posicin, promedio de bateo, porcentaje de estancia en el campo de juego, aos jugados y partidos jugados pueden ser relevantes. En el segundo caso, algunos de estos atributos seran relevantes pero otros seran reemplazados (o potenciados) por atributos como salario medio, crdito total, opciones elegidas para el plan de pensin, direccin postal, etc. Para desarrollar un conjunto significativo de atributos para un objeto, el analista puede estudiar de nuevo la narrativa del proceso (o descripcin del mbito del alcance) para el problema y seleccionar aquellos elementos que razonablemente pertenecen al objeto. Adems, para cada objeto debe responderse el siguiente interrogante: Qu elementos (compuestos y/o simples) definen completamente al objeto en el contexto del problema actual? .
Las operaciones indican el comportamiento del objeto dentro del sistema, cambia uno o ms atributos contenidos en el sistema. Pueden ser clasificados entre tres grandes categoras Operaciones que manipulan datos Operaciones que realizan algn Calculo
24
El ciclo de vida de un objeto puede resumirse de la siguiente manera: Crear el objeto Modificarlo Manipulacin Borrar.
Antes de iniciar, es necesario conocer los conceptos principales que son de uso necesario para la solucin de problemas por medio de computadoras. Algoritmo: es un conjunto finito de instrucciones que, cuando se ejecutan, efectan una tarea particular. Un algoritmo es un sistema definido de instrucciones, finito en nmero, para lograr una cierta tarea que, dado un sistema de entradas, d lugar a un cierto estado reconocible. El concepto de un algoritmo es ilustrado a menudo por el ejemplo de una receta, aunque muchos algoritmos son mucho ms complejos; los algoritmos tienen a menudo pasos que repitan (iteren) o requieran decisiones (tales como lgica o comparacin) hasta que se termina la tarea Diversos algoritmos pueden terminar la misma tarea con un diverso sistema de instrucciones en ms o menos el mismo tiempo, espacio, o esfuerzo que otros. Por ejemplo, tenemos dos diversas recetas para hacer una ensalada de papa, una puede tener cscara antes de cocer la papa, mientras que la otra presenta los pasos al revs, ambas hacen que los pasos se repitan con todas las papas y termina cuando la ensalada esta lista.
25
3.1.1 Elementos y Reglas para la Representacin de Algoritmos ELEMENTOS Y REGLAS PARA LA REPRESENTACIN DE ALGORITMOS Las tres tcnicas de formulacin de algoritmos ms ocupadas son: Pseudocdigo: Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. era un medio para representar bsicamente las estructuras de control de programacin estructurada. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. Y no puede ser ejecutado por una computadora. Diagramas de Flujo: Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin. Diagramas Estructurados (nassi-schneiderman: o Chapn, es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son continuas. Las acciones sucesivas se escriben en cajas sucesivas, y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. son una tcnica que permite formular algoritmos mediante una representacin geomtrica y de asignacin de espacios de un bloque especfico.
Las tres tcnicas de formulacin de algoritmos ms ocupadas son: Diagrama de flujo, Pseudocdigo y Diagramas estructurados
26
Proceso
Decisin
Indica el flujo
27
Diagramas Estructurados (nassi-schneiderman): El diagrama N-S de Nassi-Schneiderman, tambin conocido como diagrama de Chapn, es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas, y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Los Diagramas Estructurados, son una tcnica que permite formular algoritmos mediante una representacin geomtrica y de asignacin de espacios de un bloque especfico.
28
PROGRAMACIN: es automatizar y definir una serie de procesos para resolver un problema y obtener un resultado final. Un programa es el conjunto de instrucciones que se le dan al ordenador para resolver un problema o tarea determinada. se componen de ordenes (en adelante llamadas instrucciones) que es lo que en si mismo le dice al ordenador lo que tiene que hacer. Un conjunto de esas instrucciones forman el programa. Programa:Un programa es un conjunto de instrucciones u ordenes basadas en un lenguaje de programacin que una computadora interpreta para resolver un problema o una funcin especifica. LENGUAJE DE PROGRAMACIN es aquel elemento dentro de la informtica que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis. un lenguaje de programacin es un sistema notacional para describir conputaciones de una forma legible tanto para la maquina como para el ser humano DATOS:Un dato puede definirse como la unidad mnima de informacin o bit, puede ser un caracter una palabra, etc. TIPOS DE DATOS SIMPLES O PRIMITIVOS: son aquellos que no tienen descomposicin, estn predefinidos en el lenguaje, ejemplo de estos son: NUMERICOS enteros (int, byte, long), reales (flota, double), carcter ( Xchar) y booleanos( VERDAD,FALSO).. Estructurales o compuestos: Son aquellos que agrupan un conjunto de datos primitivos, como pueden ser: Arreglos, pilas o estructuras e incluso las cadenas de caracteres (datos String).
29
Estructurales o compuestos: Son aquellos que agrupan un conjunto de datos primitivos, como pueden ser: Arreglos, pilas o estructuras e incluso las cadenas de caracteres (datos String).
4.3.2 Identificadores Es el nombre utilizado para referenciar variables, constantes, tipos, funciones y otros objetos definidos por el usuario.
30
Operadores aritmticos Existen dos tipos de operadores aritmticos: Los binarios: + * / % Suma Resta Multiplicacin Divisin Mdulo (resto)
31
y los unarios: ++ -Su sintaxis es: binarios: <variable1><operador><variable2> unarios: <variable><operador> y al revs, <operador><variable>. Incremento (suma 1) Decremento (resta 1) Cambio de signo
Operadores de asignacin
La mayora de los operadores aritmticos binarios explicados en el captulo anterior tienen su correspondiente operador de asignacin:
= += -= *= /= %= Asignacin simple Suma Resta Multiplicacin Divisin Mdulo (resto)
Con estos operadores se pueden escribir, de forma ms breve, expresiones del tipo: n=n+3 se puede escribir n+=3 k=k*(x-2) lo podemos sustituir por k*=x-2
Expresiones
Una expresin en un lenguaje de programacin es una combinacin de los valores, funciones, smbolo, tomos, y procedimientos, interpretados segn las reglas de la precedencia particulares y de la asociacin para un lenguaje de programacin particular, que computa y despus devuelve otro valor. Las expresiones pueden o pueden no tener efectos secundarios.
Las operaciones con mayor precedencia se realizan antes que las de menor precedencia. Si en una operacin encontramos signos del mismo nivel de precedencia, dicha operacin se realiza de izquierda a derecha. A continuacin se muestra un ejemplo sobre ello:
32
ESTRUCTURA DE UN PROGRAMA EN JAVA: Todo programa en Java consta de una o ms clases, donde dentro de alguna de ellas debe existir un mtodo llamado main. El programa comienza a ejecutarse en el mtodo main, desde el cual es posible trabajar con otros mtodos, e incluso con otras clases. CLASES EN JAVA Las clases son el centro de la Programacin Orientada a Objetos.Algunos de los conceptos ms importantes de la POO son los siguientes: 1. ENCAPSULACIN. Las clases pueden ser declaradas como pblicas ( public) y como package (accesibles slo para otras clases del package). Las variables miembro y los mtodos pueden ser public, private, protected y package. De esta forma se puede controlar el acceso y evitar un uso inadecuado. 2. HERENCIA. Una clase puede derivar de otra (extends), y en ese caso hereda todas sus variables y mtodos. Una clase derivada puede aadir nuevas variables y mtodos y/o redefinir las variables y mtodos heredados. 3. POLIMORFISMO. Los objetos de distintas clases pertenecientes a una misma jerarqua o que en Java consta de una o ms clases, donde dentro de alguna de ellas debe existir al mismo implementan Todo una programa misma interface pueden tratarse de una forma general e individualizada, un mtodo llamado main. El programa comienza a ejecutarse en el mtodo main, desde el cual es tiempo. Esto posible facilita la programacin y elemantenimiento del cdigo. trabajar con otros mtodos, incluso con otras clases.
CLASES EN JAVA Las clases son el centro de la Programacin Orientada a Objetos (OOP - Object Oriented Programming). Algunos de los conceptos ms importantes de la POO son los siguientes: 1. Encapsulacin. Las clases pueden ser declaradas como pblicas ( public) y como package (accesibles slo para otras clases del package). Las variables miembro y los mtodos pueden ser public, private, protected y package. De esta forma se puede controlar el acceso y evitar un uso inadecuado. 2. Herencia. Una clase puede derivar de otra ( extends), y en ese caso hereda todas sus variables y mtodos. Una clase derivada puede aadir nuevas variables y mtodos y/o redefinir las variables y mtodos heredados. 3. Polimorfismo. Los objetos de distintas clases pertenecientes a una misma jerarqua o que implementan una misma interface pueden tratarse de una forma general e individualizada, al mismo tiempo. Esto facilita la programacin y el mantenimiento del cdigo. Recordando el Concepto de Clase
33
g) Los mtodos de una clase pueden referirse de modo global al objeto de esa clase al que se aplican por medio de la referencia this. h) Las clases se pueden agrupar en packages, introduciendo una lnea al comienzo del fichero (package packageName;). Esta agrupacin en packages est relacionada con la jerarqua de directorios y ficheros en la que se guardan las clases.
34
CONTROL DE ACCESO : Cuando se crea una nueva clase en Java, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los mtodos definidos en la clase:
public: Cualquier clase desde cualquier lugar puede acceder a las variables y mtodos de instacia pblicos. protected: Slo las subclases de la clase y nadie ms puede acceder a las variables y mtodos de instancia protegidos. private: Las variables y mtodos de instancia privados slo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases. friendly (sin declaracin especfica): Por defecto, si no se especifica el control de acceso, las variables y mtodos de instancia se declaran friendly (amigas), lo que significa que son accesibles por todos los objetos dentro del mismo paquete, pero no por los externos al paquete. Es lo mismo que protected. Import Los paquetes de clases se cargan con la palabra clave import, especificando el nombre del paquete como ruta y nombre de clase
Cuando se crea una nueva clase en Java, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los mtodos definidos en la clase:
public: Cualquier clase desde cualquier lugar puede acceder a las variables y mtodos de instacia pblicos. protected: Slo las subclases de la clase y nadie ms puede acceder a las variables y mtodos de instancia protegidos. private: Las variables y mtodos de instancia privados slo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases. friendly (sin declaracin especfica): Por defecto, si no se especifica el control de acceso, las variables y mtodos de instancia se declaran friendly (amigas), lo que significa que son accesibles por todos los objetos dentro del mismo paquete, pero no por los externos al paquete. Es lo mismo que protected. Los mtodos protegidos (protected) pueden ser vistos por las clases derivadas, como en C++, y tambin, en Java, por los paquetes (packages). Todas las clases de un paquete pueden ver los mtodos protegidos de ese paquete. Para evitarlo, se deben declarar como private protected, lo que hace que ya funcione como en C++ en donde slo se puede acceder a las variables y mtodos protegidos de las clases derivadas. Una de las grandes fortalezas de Java es su rica coleccin de clases predefinidas, las cuales pueden reutilizar los programadores en lugar de programar las propias. Import Las diversas clases predefinidas se agrupan en categoras de clases relacionadas llamadas paquetes. A los paquetes se les conoce de manera colectiva como biblioteca de clases de Java o como la Interfaz de Programacin de Aplicaciones (API). Los paquetes de clases se cargan con la palabra clave import, especificando el nombre del paquete como ruta y nombre de clase (es lo mismo que #include de C/C++). Se pueden cargar varias clases utilizando un asterisco. import java.Date; import java.awt.*;
35
Variables y Mtodos Estticos En un momento determinado se puede querer crear una clase en la que el valor de una variable de instancia sea el mismo (y de hecho sea la misma variable) para todos los objetos instanciados a partir de esa clase. Es decir, que exista una nica copia de la variable de instancia. Se usar para ello la palabra clave static. class Documento extends Pagina
36
37
// fichero Bicicleta.java public class Bicicleta { public int cambios=6; int numeroVelocidad; // private int velocidad; public void acelerar(int velocidad_actual) { velocidad+=velocidad_actual; } public void frenar(int velocidad_frenado) { velocidad-=velocidad_frenado; } public void cambiarVelocidad(int nuevaVelocidad) { numeroVelocidad=nuevaVelocidad; } public void imprimirEstado() { System.out.println("velocidad Actual---->"+velocidad); System.out.println("Cambio Actual----> "+numeroVelocidad); System.out.println("Numero de velocidades----> "+cambios); } Bicicleta(int numVelocidad,int velocidadInicial) // Constructor de la clase { numeroVelocidad=numVelocidad; velocidad=velocidadInicial; } Bicicleta( ) // Sobrecarga del constr { numeroVelocidad=1; velocidad=0; } } En este ejemplo se ve cmo se definen las variables miembro y los mtodos dentro de la clase. Dichas variables y mtodos pueden ser de objeto o de clase (static). Se puede ver tambin cmo el nombre del fichero coincide con el de la clase public con la extensin *.java. VARIABLES MIEMBRO A diferencia de la programacin algortmica clsica, que estaba centrada en las funciones, la programacin orientada a objetos est centrada en los datos. Una clase est constituida por unos datos y unos mtodos que operan sobre esos datos.
38
VARIABLES MIEMBRO:A diferencia de la programacin algortmica clsica, que estaba centrada en las funciones, la programacin orientada a objetos est centrada en los datos. Una clase est constituida por unos datos y unos Apuntes Fundamentos de Programacin de Sistemas mtodos que operan de sobre esos datos. VARIABLES MIEMBRO DE OBJETO :Cada objeto, es decir cada ejemplar concreto de la clase, tiene su propia copia de las variables miembro. Las variables miembro de una clase (tambin llamadas campos) pueden ser de tipos primitivos (boolean, int, long, double, ) o referencias a objetos de otra clase (composicin). VARIABLES MIEMBRO DE CLASE (STATIC). Una clase puede tener variables propias de la clase y no de cada objeto. A estas variables se les llama variables de clase o variables static. Las variables static se suelen utilizar para definir constantes comunes para todos los objetos de la clase. VARIABLES FINALES:Una variable de un tipo primitivo declarada como final no puede cambiar su valor a lo largo de la ejecucin del programa. Puede ser considerada como una constante, y equivale a la palabra const Variables miembro de objeto Cada objeto, es decir cada ejemplar concreto de la clase, tiene su propia copia de las variables miembro. Las variables miembro de una clase (tambin llamadas campos) pueden ser de tipos primitivos (boolean, int, long, double, ) o referencias a objetos de otra clase (composicin). Un aspecto muy importante del correcto funcionamiento de los programas es que no haya datos sin inicializar. Por eso las variables miembro de tipos primitivos se inicializan siempre de modo automtico, incluso antes de llamar al constructor (false para boolean, el carcter nulo para char y cero para los tipos numricos). De todas formas, lo ms adecuado es inicializarlas tambin en el constructor. Las variables miembro pueden tambin inicializarse explcitamente en la declaracin, como las variables locales, por medio de constantes o llamadas a mtodos (esta inicializacin no est permitida en C++). Por ejemplo, long nDatos = 100; Las variables miembro se inicializan en el mismo orden en que aparecen en el cdigo de la clase. Esto es importante porque unas variables pueden apoyarse en otras previamente definidas. Cada objeto que se crea de una clase tiene su propia copia de las variables miembro. Por ejemplo, cada objeto de la clase Circulo tiene sus propias coordenadas del centro x e y, y su propio valor del radio r. Los mtodos de objeto se aplican a un objeto concreto poniendo el nombre del objeto y luego el nombre del mtodo, separados por un punto. A este objeto se le llama argumento implcito. Por ejemplo, para calcular el rea de un objeto de la clase Circulo llamado c1 se escribir: c1.area();. Las variables miembro del argumento implcito se acceden directamente o precedidas por la palabra this y el operador punto. Las variables miembro pueden ir precedidas en su declaracin por uno de los modificadores de acceso: public, private, protected y package (que es el valor por defecto y puede omitirse). Junto con los modificadores de acceso de la clase ( public y package), determinan qu clases y mtodos van a tener permiso para utilizar la clase y sus mtodos y variables miembro. Variables miembro de clase (static) Una clase puede tener variables propias de la clase y no de cada objeto. A estas variables se les llama variables de clase o variables static. Las variables static se suelen utilizar para definir constantes comunes para todos los objetos de la clase (por ejemplo PI en la clase Circulo) o variables que slo tienen sentido para toda la clase (por ejemplo, un contador de objetos creados como numCirculos en la clase Circulo). Las variables de clase son lo ms parecido que Java tiene a las variables globales de C/C++. Las variables de clase se crean anteponiendo la palabra static a su declaracin. Para llamarlas se suele utilizar el nombre de la clase (no es imprescindible, pues se puede utilizar tambin el nombre de cualquier objeto), porque de esta forma su sentido queda ms claro. Por ejemplo, Circulo.numCirculos es una variable de clase que cuenta el nmero de crculos creados.
39
Si no se les da valor en la declaracin, las variables miembro static se inicializan con los valores por defecto para los tipos primitivos ( false para boolean, el carcter nulo para char y cero para los tipos numricos), y con null si es una referencia. Las variables miembro static se crean en el momento en que pueden ser necesarias: cuando se va a crear el primer objeto de la clase, en cuanto se llama a un mtodo static o en cuanto se utiliza una variable static de dicha clase. Lo importante es que las variables miembro static se inicializan siempre antes que cualquier objeto de la clase. VARIABLES FINALES Una variable de un tipo primitivo declarada como final no puede cambiar su valor a lo largo de la ejecucin del programa. Puede ser considerada como una constante, y equivale a la palabra const de C/C++. Java permite separar la definicin de la inicializacin de una variable final. La inicializacin puede hacerse ms tarde, en tiempo de ejecucin, llamando a mtodos o en funcin de otros datos. La variable final as definida es constante (no puede cambiar), pero no tiene por qu tener el mismo valor en todas las ejecuciones del programa, pues depende de cmo haya sido inicializada. Adems de las variables miembro, tambin las variables locales y los propios argumentos de un mtodo pueden ser declarados final. Declarar como final un objeto miembro de una clase hace constante la referencia, pero no el propio objeto, que puede ser modificado a travs de otra referencia. En Java no es posible hacer que un objeto sea constante. Visibilidad y vida de las variables Se entiende por visibilidad, mbito o scope de una variable, la parte de la aplicacin donde dicha variable es accesible y por lo tanto puede ser utilizada en una expresin. En Java todas las variables deben estar incluidas en una clase. En general las variables declaradas dentro de unas llaves {}, es decir dentro de un bloque, son visibles y existen dentro de estas llaves. Por ejemplo las variables declaradas al principio de una funcin existen mientras se ejecute la funcin; las variables declaradas dentro de un bloque if no sern vlidas al finalizar las sentencias correspondientes a dicho if y las variables miembro de una clase (es decir declaradas entre las llaves {} de la clase pero fuera de cualquier mtodo) son vlidas mientras existe el objeto de la clase. Las variables miembro de una clase declaradas como public son accesibles a travs de una referencia a un objeto de dicha clase utilizando el operador punto (.). Las variables miembro declaradas como private no son accesibles directamente desde otras clases. Las funciones miembro de una clase tienen acceso directo a todas las variables miembro de la clase sin necesidad de anteponer el nombre de un objeto de la clase. Sin embargo las funciones miembro de una clase B derivada de otra A, tienen acceso a todas las variables miembro de A declaradas como public o protected, pero no a las declaradas como private. Una clase derivada slo puede acceder directamente a las variables y funciones miembro de su clase base declaradas como public o protected. Otra caracterstica del lenguaje es que es posible declarar una variable dentro de un bloque con el mismo nombre que una variable miembro, pero no con el nombre de otra variable local que ya existiera. La variable declarada dentro del bloque oculta a la variable miembro en ese bloque. Para acceder a la variable miembro oculta ser preciso utilizar el operador this, en la forma this.varname. Uno de los aspectos ms importantes en la programacin orientada a objetos (OOP) es la forma en la cual son creados y eliminados los objetos. En Java la forma de crear nuevos objetos es
40
Intrprete: Es un programa que traduce un lenguaje de alto nivel al lenguaje de mquina de una computadora. El programa siempre permanece en su forma original (programa fuente) y traduce cuando est en la fase de ejecucin instruccin por instruccin. Ejemplo: BASIC
41
Pueden utilizarse estos modificadores para cualquier tipo de miembros de la clase, incluidos los constructores (con lo que se puede limitar quien puede crear instancias de la clase).
[Modificador de acceso] Class Nombre_Clase { Declaracion de variables de clase y de instancia // ejemplo: static public int i; // Otro ejemplo char var=@; Declaracion de metodos de clase y de instancia } DONDE: Modificadores de acceso pueden ser: private o public Declaracin de Mtodos: [modificador de acceso] tipo_retorno nmbFuncion(tipo1 arg1,tipo2 arg2,) { Sentencias [return(tipo)]; }
EJEMPLO en Java: class numero { public int entero,s,r; public void sumar () {
42
43
class B { public void Met B?() { A a= new A(); a.pubc= 1; // Ok a.priva= 2; // error, privado a.protb= 3; // error, B no es // subclase de A a.Met Pub(); // Ok a.Met Priv(); // error, privado } } Visibilidad de Clases: Al declarar una clase se puede especificar que es pblica usando el atributo public. De este modo la clase podr ser usada por cualquier otra clase. Si la clase no es pblica entonces la clase slo puede ser usada dentro del paquete que la contiene. public class Box extends Graph Obj { }
44
Concepto de parmetro: Un parametro es una variable que puede pasar su valor a un procedimiento desde el principal o
desde otro procedimiento. El Constructor Un constructor es una funcin especial que sirve para construir o inicializar objetos. El Destructor Un destructor es una funcin miembro con igual nombre que la clase, pero precedido por el carcter. Entrada y Salida de Datos Aqu slo trataremos la entrada/salida que se comunica con el usuario a travs de la pantalla o de la ventana del terminal. Los programas necesitan comunicarse con su entorno, tanto para recoger datos e informacin que deben procesar, tanto para devolver los resultados obtenidos. System.out.print() y System.out.println().Son los primeros mtodos que aprende cualquier programador. Sus caractersticas fundamentales son:Pueden imprimir valores escritos directamente en el Cdigo o cualquier tipo de variable Primitiva de Java. public class PrimerPrograma { public static void main(String[] args) Un parametro es una variable que puede pasar su valor a un procedimiento desde el principal o { desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos System.out.println (Hola, mundo); valores para(57); que los use en algn proceso. Estos valores que se pasan del cuerpo principal del System.out.println programa al procedimiento se llaman parmetros. double numeroPI=3.141592654; System.out.println (numeroPI); REGLAS PARA EL USO DE PARAMETROS String hola = new string(Hola); System.out.println (hola); 1. Cuando se usan variables como parmetros, la variable que se manda debe ser declarada } dentro del principal o del procedimiento de donde se esta enviando. } 2. La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre. 3. La cantidad de variables que se envan deben ser igual en cantidad, orden y tipo a las variables que reciben. 4. La variable que recibe tiene un mbito local dentro del procedimiento, es decir solo la puede usar ese procedimiento. Y se pueden mandar datos, valores (excepto decimales), expresiones algebraicas, pero siempre se recibe en variables. 5.3.2 El Constructor Un constructor es una funcin especial que sirve para construir o inicializar objetos. En C++ la inicializacin de objetos no se puede realizar en el momento en que son declarados; sin embargo,
45
46
47
Por ltimo cabe mencionar el mtodo String nextLine(), que devuelve lo que queda por leer de la lnea actual; es decir, desde donde estemos hasta el primer fin de lnea. Llamadas consecutivas a nextLine() van proporcionando lneas sucesivas de texto. Un ejemplo de su uso sera: import java.util.Scanner; public class Lectura { public static void main(String[] args) { Scanner leer = new Scanner(System.in); System.out.print("Escriba dos nmeros: "); double x = leer.nextDouble(); double y = leer.nextDouble(); System.out.println("La suma es: " + (x + y)); } } Una probable salida al ejecutar el programa anterior sera: Escriba dos nmeros: 3,1416 2 La suma es: 5.1416 6.1.3 Entrada/Salida con cajas de Texto Con las instrucciones anteriores, todas las salidas se despliegan bajo el ambiente en el que se est trabajando (DOS o en su defecto NetBins), tambin se pueden generar las salidas utilizando ventanas o cuadros de dilogos, que viene implementados en modo grfico. Para poder trabajar con estas herramientas, se debe importar la clase JOptionPane del paquete javax.swing. Este paquete contiene varias clases que ayudan a los programadores a definir interfaces grficas de usuario (GUI). Los componentes GUI facilitan la entrada de datos por parte del usuario y dar formato o presentar la salida de datos por parte el usuario. Al utilizar cualquiera de estas herramientas es necesario concluir el programa con el mtodo Sytem.exit(0); Las opciones con las que contamos son: Generar una caja de dialogo que slo incluya un mensaje. JOptionPane.showMessageDialog(null,"Cadena_de_salida"); Donde Cadena_de_salida, es lo que se desplegar en la caja de dilogo.
48
Aqu podemos ver el cdigo que lo crea y lo muestra: JOptionPane.showMessageDialog(frame, "Eggs aren't supposed to be green.");
Caractersticas de JOptionPane
Utilizando JOptionPane, se pueden crear muchos dilogos. Aqu podemos ver unos ejemplos, todos producidos por DialogDemo.
49
...//create the yes/no dialog: int n = JOptionPane.showConfirmDialog( frame, "Would you like green eggs and ham?", "An Inane Question", JOptionPane.YES_NO_OPTION); if (n == JOptionPane.YES_OPTION) { setLabel("Ewww!"); } else if (n == JOptionPane.NO_OPTION) { setLabel("Me neither!"); } else { setLabel("Come on -- tell me!"); }
...//create the yes/no (but in other words) dialog: String string1 = "Yes, please"; String string2 = "No way!"; Object[] options = {string1, string2}; int n = JOptionPane.showOptionDialog(frame, "Would you like green eggs and ham?", "A Silly Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, //don't use a custom Icon options, //the titles of buttons string1); //the title of the default button if (n == JOptionPane.YES_OPTION)
50
Como podramos observar en los ejemplos anteriores, JOptionPane proporciona soporte para mostrar dilogos estndards, proporcionando iconos, especficando el ttulo y el texto del dilogo, y personalizando el texto del botn. Otras caractersticas permiten personalizar los componentes del dilogo a mostrar y especificar si el dilogo debera aparecer en la pantalla. Incluso se puede especificar qu panel de opciones se pone a s mismo dentro de un frame interno (JInternalFrame) en lugar de un JDialog. Cuando se crea un JOptionPane, el cdigo especfico del aspecto y comportamiento aade componentes al JOptionPane y determina la distribucin de dichos componentes. La siguiente figura muestra cmo los aspectos y comportamientos ms comunes distribuyen un JOptionPane:
Mensaje Botones
Para la mayora de los dilogos modales sencillos, se crea y se muestra el dilogo utilizando uno de los mtodos showXxxDialog de JOptionsPane. Para ejemplos de utilizacin de los siguientes mtodos. showMessageDialog
51
52
Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocdigo y en diagramas de flujos: Tengo un telfono y necesito llamar a alguien pero no s como hacerlo.
53
Los operadores relacionales se utilizan para comparar el contenido de dos variables, donde el resultado ser verdadero (un valor diferente de cero) o falso (valor igual a cero). E seis operadores relacionales bsicos: > < >= <= == != Mayor que Menor que Mayor o igual que Menor o igual que Igual que Distinto que
El resultado que devuelven estos operadores es valor diferente de cero para Verdadero y 0 para Falso. Si hay ms de un operador se evalan de izquierda a derecha. Adems los operadores == y != estn por debajo del resto en cuanto al orden de precedencia. Operadores Lgicos Los operadores lgicos bsicos son: && || ! AND OR NOT (El valor contrario)
Estos operadores actan sobre expresiones lgicas. Permiten unir expresiones lgicas simples formando otras ms complejas. 6.3.1 Estructura if
Sintaxis: if (condicin) sentencia; La sentencia solo se ejecuta si se cumple la condicin. En caso contrario el programa sigue su curso sin ejecutar la sentencia.
Otro formato: if (condicin) sentencia1; else sentencia2;
Nos sirve para evaluar si una condicin simple o compuesta es verdadera (distinta de cero) o falsa (igual a cero). Para ello utilizaremos dos tipos de formatos. El primero es: if (expresin) sentencia 1; else sentencia 2; Y el segundo es: if (expresin) { sentencias; } else { sentencias; }
54
Existe la posibilidad de utilizar llaves para ejecutar ms de una sentencia dentro de la misma condicin. 6.3.2 Estructura switch Esta estructura se suele utilizar en los mens, de manera que segn la opcin seleccionada se ejecuten una serie de sentencias. Su sintaxis es: switch (variable){ case contenido_variable1: sentencias; break; case contenido_variable2: sentencias; break; default: sentencias; } Cada case puede incluir una o ms sentencias sin necesidad de ir entre llaves, ya que se ejecutan todas hasta que se encuentra la sentencia break. La variable evaluada slo puede ser de tipo entero o caracter. default ejecutar las sentencias que incluya, en caso de que la opcin escogida no exista. Suponiendo que x es un dato entero: switch (x) { case 1: case 2: case 3: System.out.println ( Invierno); break; case 4: case 5: case 6: System.out.println ( Primavera); break; case 7: case 8: case 9: System.out.println (Verano); break; case 10: case 11: case 12: System.out.println (Otoo); break; default: System.out.println (Error al introducir el nmero de mes);
55
56
7.3 Sentencia for Su sintaxis es: for (inicializacin;condicin;incremento) { sentencia1; sentencia2; } La inicializacin indica una variable (variable de control) que condiciona la repeticin del bucle. Si hay ms, van separadas por comas: for (a=1,b=100;a!=b;a++,b- -) { sentencias; } Lo primero que hace es inicializar la/s variable/s; a continuacin se evala la condicin planteada, si es verdadera se ejecuta la/s sentencia/s que forman el bucle y finalmente se realiza el incremento. Este proceso se repetir hasta que deje de cumplirse. Si la condicin es falsa la primera vez el bucle no se ejecutar. Existe la posibilidad de inicializar ms de una variable, de utilizar condiciones compuestas, de realizar ms de una operacin en el incremento e incluso existe la posibilidad de omitir algunos de los parmetros. Si se realiza ms de una operacin en alguno de estos parmetros se separan por comas y si se omite un parmetro se deja vaco.
57
58