Você está na página 1de 40

25

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

26

Tcnicas de algoritmos para el diseo de procesos computacionales.


Conceptos bsicos.
Algoritmo.
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir para dar solucin a un problema especfico.

Otra definicin ms especfica es: Conjunto de pasos finitos no ambiguos que permitan dar solucin a un problema especfico. A simple vista la definicin formal de algoritmo puede no ser tan clara por si sola, pero vers que un algoritmo es algo que ya conoces y lo mejor es que durante toda tu vida has ejecutado varios algoritmos sin darte cuenta, comencemos con un ejemplo bsico, has jugado alguna vez a encontrar el tesoro pirata siguiendo un mapa? Aquel papelito de color caf que dando un par de pasos en varias direcciones te lleva a un lugar que marca una X, pues aquel papel lo que tiene escrito dentro en realidad es un algoritmo. veamos por qu: primero el
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

27

papel nos seala el lugar de inicio, luego de ello las instrucciones que sigues dicen algo as como dos pasos a la derecha, un paso a la izquierda, este tipo de instrucciones son un conjunto de pasos finitos, dado que no son interminables, tiene un punto de comienzo (donde obliga a ubicarte) y un final (donde marca la X), tampoco son ambiguos por que no hay doble interpretacin para cada una de ellas, finalmente si sigues todas las instrucciones en orden encontrars el lugar donde esta la X, entonces tambin podemos aseverar que estos pasos sirven para resolver un problema especifico, el cual nos indica el camino desde un punto hasta otro, donde debajo de la gran X probablemente nos esperen algunas monedas de oro. Sin embargo y siguiendo este criterio muchas actividades van a comenzar a parecer un algoritmo y de hecho es muy probable que lo sean, sin embargo no todo es un algoritmo y es bueno que tambin sepamos reconocer lo que no lo es, supongamos que estas viendo un programa de televisin donde estn dictando una receta para cocinar un rico pastel baado en chocolate, esta receta ser entonces un algoritmo si los pasos de la preparacin especifican los factores de tiempo y material que se deben utilizar en cada uno de ellos, si en determinado momento entre el listado de actividades que hay que realizar existe alguno que diga algo as como agregue azcar a gusto el conjunto de instrucciones dejar de ser un algoritmo, debido a que existe un paso ambiguo.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

28

En informtica computador

el

algoritmo es a

una de

las

piezas

fundamentales en el desarrollo de software ya que el responder algoritmos que nosotros diseemos y pediremos a l que ejecute, para ello lo haremos a travs de los lenguajes que el computador entiende, los cuales irs aprendiendo durante el desarrollo de tu carrera. Todo lo que ejecuta el computador son algoritmos, un buen diseo de un algoritmo hace mejor y ms rpido a un programa, cmo la te has detenido alguna vez a pensar calculadora resuelve las operaciones

encomendadas?, es probable que no, pero de lo que s podemos estar seguros es que la calculadora es una gran ejecutora de algoritmos, ya que cada calculo matemtico es resuelto mediante algoritmos, es decir pasos que ya estn definidos para resolver una operacin, de ellos podemos destacar el clculo del potencial, el cual es un algoritmo muy popular, que da solucin a clculos como por ejemplo 24 =16. Otro algoritmo famoso es el de Dijkstra, este algoritmo es el encargado de encontrar la ruta ms corta entre dos puntos, es muy posible que lo hayas visto sin saberlo en los video juegos, ya que este algoritmo es el encargado de hacer que tus tropas avancen desde un punto hacia otro buscando el mejor camino en muchos juegos de estrategia Hacer buenos algoritmos no es una tarea sencilla, requiere de prctica y mucha lgica, durante este manual vas aprender a desarrollar tu lgica y comprender qu partes componen el problema que deseas solucionar,
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

29

cules son los datos de entrada y cul es el conjunto de pasos que debes aplicar sobre los datos para generar el resultado deseado, el cul no es otra cosa que informacin para la persona que lo solicita, tambin aprenders a cmo optimizar los algoritmos, para que tengas una idea, la optimizacin corresponde a la capacidad de lograr reducir la cantidad de pasos para solucionar el mismo problema, una de las cosas interesantes que tienen los algoritmos es que existe muchas formas de solucionar un mismo problema, con el tiempo te dars cuenta que incluso habrn ocasiones en las que para un ejercicio dado todos tu compaeros tendrn eventualmente una solucin distinta. Tipos de Algoritmos Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso. Lenguajes Algortmicos. Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. Hay dos tipos: Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo. Ejemplo: Diagrama De Flujo, DFD. No Grficos: Representa en forma descriptiva las

operaciones que debe realizar un algoritmo. Ejemplo: Pseudocdigo.


UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

30

Caractersticas de un buen algoritmo.


Debe tener un punto nico de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del problema. Debe ser finito en tamao y tiempo de ejecucin. Es decir, debe tener un fin.

Diagrama de flujo
Para el diseo de algoritmos se utilizan tcnicas de representacin. Una de estas tcnicas son los Diagramas de Flujo (DDF), que se definen como la representacin grfica que mediante el uso de smbolos estndar unidos mediante lneas de flujo, muestran la secuencia lgica de las operaciones o acciones que debe realizar un computador, as como la corriente o flujo de datos en la resolucin de problema.

Pseudocdigo.
El escribir aplicaciones computacionales se necesita entregar al computador una serie de instrucciones las cuales sern ejecutadas por este. Para realizar este proceso se inventaron los lenguajes de programacin mediante los cuales el el programador escribe las estas instrucciones para que el computador realice las acciones correspondientes, programador escribe

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

31

instrucciones

las

cuales

son

interpretadas

luego

compiladas (transformadas en un lenguaje que entiende el computador llamado lenguaje de mquina), para que con el resultado de este proceso pueda ejecutar las instrucciones. Ahora como los lenguajes de programacin a veces son muy complejos de aprender, existe un subconjunto de lenguajes ms bsicos que se llaman pseudolenguajes, los cuales permiten generar pseudocdigo. El pseudolenguaje generalmente es un subconjunto de un lenguaje de programacin que es muy extenso, o a veces tambin se trata de un lenguaje que ocupa expresiones que son ms cercanas al lenguaje de las personas, pues en todos los lenguajes de programacin las instrucciones estn en ingls. Si bien existe una cercana mayor con el lenguaje con el que hablas (en este caso espaol), existe la complejidad posterior de tener que aprender de nuevo otro lenguaje de programacin. Para efectos de este manual, ocuparemos un lenguaje de programacin llamado java el cual tiene una sintaxis relativamente simple. Adicionalmente la sintaxis de java esta basada en un lenguaje de programacin denominado C que es el padre de los lenguajes ms utilizados: C++, javascript, java, c#, actionscript, php, entre otros, que utilizars durante el desarrollo de tu carrera.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

32

Programa.
Conjunto ser de rdenes en tres o instrucciones bloques capaces de manipular un conjunto de datos. Estas rdenes pueden divididas grandes claramente diferenciables, estos son: Entrada de datos: En este bloque se engloban todas aquellas instrucciones que toman datos de un dispositivo o perifrico externo, depositndolos en la memoria principal del computador para ser procesados. Proceso: Engloban todas aquellas instrucciones

encargadas de modificar los datos que previamente haban sido depositados en la memoria principal. Todos los resultados obtenidos en el tratamiento de dichos datos son depositados nuevamente en la memoria principal quedando de esta manera disponible. Salida de resultados: Es el conjunto de instrucciones que toman los resultados finales desde la memoria principal y lo envan a dispositivos externos.

Etapas en la creacin de programas.


Durante el desarrollo hay un conjunto de etapas que sin importar el tipo de software que desee crearse siempre se repiten, ya sea desde un programa muy simple como una calculadora con las operaciones bsicas, hasta completos sistemas de clculos en tiempo real. Estas
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

33

etapas sern definidas y explicadas en forma lineal, sin embargo en el desarrollo real no significa que este sea un orden estricto y que no haya vuelta atrs, muy por el contrario, en muchas ocasiones cuando ya se piensa que se ha superado por completo una etapa es necesario volver atrs, agregar o corregir algo que se nos pas para luego volver a la etapa siguiente. Otra cosa importante, es que en algunas ocasiones tambin se da que las etapas se solapan, vale decir, que antes de finalizar una es posible avanzar en algunos puntos de la que viene, esto suele ser til para comenzar a dimensionar si lo que estamos haciendo esta correcto.

Requisitos.
Los requisitos de software son especificaciones claras y puntuales sobre lo que debe contener un software para cumplir con algn requerimiento. Es habitual que las personas confundan requisito con requerimiento, incluso una discusin de ello se encuentra en el manual de anlisis y diseo orientado a objetos dentro del capitulo de ingeniera de requerimientos, pues bien, en ese captulo se habla de la necesidad de extraer la informacin sobre los procesos que realizan los clientes los cuales luego queremos construir como software ms adelante, dichas necesidades son requerimientos y estn asociados a las necesidades que tiene la empresa y que luego resolveremos o apoyaremos con un software, un requisito en cambio est ms bien asociado a lo que debe
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

34

hacer un software para que en su funcionamiento cumpla con lo que deseamos construir, vemoslo con un ejemplo: si deseas construir un software para apoyar el proceso de venta de juguetes, estamos hablando de un requerimiento, sin embargo, cuando dices que tu software necesita validar que el mtodo de pago sea slo en pesos chilenos, entonces estamos hablando de un requisito del software, los cuales en su conjunto debiesen alinearse con los requerimientos. Una forma fcil de recordar la diferencia es mirar la contratapa de algn software que hayas comprado alguna vez, all veras los requisitos mnimos necesarios para se ejecucin y que por tanto estn absolutamente ligado a una pre condicin del software, no del proceso que desea resolver.

Anlisis.
En la etapa de anlisis es en la que recopilamos todos los requisitos necesarios para desarrollar el software, los analizamos y buscamos restricciones que deban ser aplicadas por el software. Este anlisis es recomendable hacerlo en equipo, para ello los encargados cuentan con un conjunto de diagramas que les permiten dibujar los procesos que desean construir antes de comenzar a desarrollar la aplicacin. Esta etapa es fundamental en el ciclo de desarrollo de un software, un mal anlisis de los requisitos podra tirar por la borda el esfuerzo de mucho tiempo.
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

35

Diseo de la solucin.
En el diseo de la solucin es el momento en el que se planifica la arquitectura de lo que se desea construir, el diseo de una aplicacin abarca varios temas, algunos mucho ms complejos que otros, donde todo depender del tipo de aplicacin que deseamos construir. Durante esta asignatura el diseo que abarcaremos estar principalmente enfocado a cmo organizaremos el cdigo dentro de una sola aplicacin, tal vez por ahora sea complicado de comprender, pero pequeas rutinas de cdigo con el tiempo las iremos organizando y agrupando en mtodos, donde cada uno de estos mtodos representa un proceso, es decir una entrada de datos, algn conjunto de operaciones aritmticos y lgicos que aplicaremos sobre ellos, para luego generar una salida. En la medida que vayamos aprendiendo resolveremos ejercicios ms complejos donde para llegar a una solucin necesitaremos crear varios procesos, los cuales agruparemos en una entidad mayor llamada clase, dichas clases y sus mtodos (o comportamientos) dibujaremos en un diagrama llamado diagrama de clases. El diseo no slo se refiere a cmo organizaremos los componentes internos de un programa, hay ocasiones en que una solucin consta de ms de un programa, por ejemplo, hay redes sociales que tienen un componente Web y otro en equipos mviles, en este caso el diseo

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

36

tambin debe incorporar la forma en que ambos software se comunicarn. Otro aspecto que tambin se refiere al diseo, es la forma en que los componentes se instalarn. Muchas veces los software estn diseados para recibir grandes cargas de datos o altos niveles de trfico de usuarios y estn ejecutndose sobre ms de un equipo, por lo que en estas ocasiones, el diseo tambin esta ligado al hardware en el que se ejecutar. Conocer esto a tiempo, nos dar una pauta de la forma lgica en la que debemos construirlo.

Codificacin.
Esta etapa se refiere a la construccin del software, es el equivalente a comenzar a levantar los cimientos de una casa luego de que ha sido diseada. La codificacin es un proceso que no debiese generar problemas si el anlisis de requisitos ha sido realizado correctamente y si los programadores estn guindose por un diseo (diagrama de clases) que ha sido discutido y aprobado por el equipo responsable. Durante esta etapa los programadores debern idear los algoritmos que permitan solucionar cada uno de los objetivos planteados en el diseo de la solucin y la comunicacin entre las partes. Durante la codificacin utilizaremos algn lenguaje de programacin que nos permita comunicarnos con la
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

37

mquina, la eleccin del lenguaje es una conversacin que da para mucho, pero por lo general depende de las prestaciones que nos da la tecnologa que la rodea, de las restricciones y aunque no debiese ser una limitante, muchas veces influye su valor.

Prueba.
Las pruebas corresponden a la etapa de la post construccin, aqu es donde probamos lo que hemos construido. Para iniciar las pruebas no es necesario terminar el software completo, los programadores suelen hacer muchas pruebas de cada mtodo que han construido con el fin de determinar si sus algoritmos hacen lo que se espera de ellos. A estas pruebas se les llama prueba unitaria y consiste bsicamente en ingresar datos de entrada y verificar que la salida sea la esperada, adems suelen hacerse durante todo el periodo de codificacin. Adicionalmente, existen otros tipos de pruebas que tienen relacin con la cantidad de recursos que un software utiliza, esta tarea por lo general realizada por el departamento de aseguramiento de la calidad realiza tareas como la revisin de la carga del procesador y los tiempos de respuesta de la aplicacin.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

38

Mantencin.
La mantencin del software es un proceso que se realiza post entrega y corresponde a modificaciones posteriores. Las mantenciones siempre nacen a causa del cambio de un proceso en la organizacin del cliente que lo ha solicitado. Las mantenciones pueden ser una buena fuente de ingreso posterior a la venta, ya que casi siempre las mantenciones son realizadas por la misma empresa desarrolladora, sin embargo en otras pueden convertirse en un gran dolor de cabeza cuando el software ha sido construido de forma poco modular (divididos en sub programas), la mantencin se vuelve muy dificultosa y los cambios en una parte comienzan a provocar errores en otros. Algunos paradigmas de programacin como la programacin orientada a objetos (POO) aporta mucho a la facilidad de mantener sistemas, ya que divide los procesos en procesos ms pequeos y luego los agrupa con un nombre que los represente, de esta forma es ms sencillo ubicar donde hay que realizar el cambio y cuales son los datos de entrada y salida esperados.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

39

Caractersticas de la programacin.
Estructura descendente.
En la etapa de anlisis se determina que hace el programa, en la etapa de diseo se determina cmo hace el programa la tarea solicitada. Con el objetivo de hacer el proceso de la resolucin de problemas ms eficaz es que se utiliza el proceso de diseo conocido como divide y vencers. Esto quiere decir que la resolucin de problemas complejos se realizan dividiendo dicho problema en subproblemas y a continuacin dividir dichos subproblemas en otros de nivel ms bajo hasta que pueda ser implementada la solucin. La solucin de estos subproblemas se realiza con subalgoritmos. Los subalgoritmos son unidades de programa o mdulos que estn diseados para ejecutar alguna tarea especfica. Estas unidades (las que distinguiremos como Funciones y Procedimientos y que estudiaremos en profundidad ms adelante) se escriben slo una vez, pero pueden ser invocadas o referenciadas en diferentes puntos del programa o mdulo principal con el objeto de no duplicar el cdigo innecesariamente. Este mtodo de disear algoritmos diseo con el proceso de romper el o problema subdividindolo en varios subproblemas se denomina descendente, TOP-DOWN Modular y en cada etapa, expresar cada paso en forma ms detallada se denomina refinamiento sucesivo . Cada subprograma es resuelto en un mdulo que tiene

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

40

un nico punto de entrada y un solo punto de salida. Los mdulos pueden ser planeados, codificados, comprobados y depurados de forma individual (hasta por programadores distintos) y combinarlos mas tarde lo que implica la combinacin de los siguientes pasos: Programar un mdulo. Comprobar el mdulo. Depurar el mdulo Combinar el mdulo con los dems. Esta tcnica es utilizada hoy en casi todas las disciplinas, en programacin existe ms de un paradigma (una forma o modelo de cmo hacer las cosas).

Modularidad.
El concepto de modularidad al en programacin y vencers. esta Este directamente asociado divide

concepto hoy est fuertemente asociado al paradigma de programacin orientado a objetos, el cual tiene como principio dividir la funcionalidad de un programa en programas ms pequeos de manera en que ellos sean lo ms independientes posible.

Cohesin.
Este trmino tiene relacin con la capacidad de unir las partes, la palabra cohesin es sinnimo de adhesin, por lo tanto estamos hablando de la unin de partes. En la
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

41

programacin siempre se busca hacer todo modular, es decir tomar un gran software y construirlo de pequeas partes que ojal fuesen funcionales de forma independiente, sin embargo si vamos a programar de esa manera hay que pensar despus en como unir todo, a este concepto se le llama cohesin y se dice que un software tiene una alta cohesin cuando la llamada a una de esas partes la realiza una que contiene toda la informacin para ello.

Acoplamiento.
El acoplamiento esta muy ligado a la cohesin, cuando un software se encuentra dividido en partes y estas partes son unidas de forma correcta estamos hablando de una alta cohesin entre las partes, cuando esto esta presente en un software de forma automtica decimos entonces que nuestro programa tiene un bajo nivel de acoplamiento, lo que es muy bueno, ya que esto quiere decir que las partes no son dependientes entre s, por tanto, una modificacin en un proceso slo afectar a alguna de las piezas del software y no al 100%, evitando volver a modificar partes que si funcionan y cuya funcin no se ve alterada.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

42

Descomposicin.
La descomposicin es una caracterstica que permite desarmar un problema complejo en una serie de subproblemas que por el hecho de ser partes reducidas de un todo, pierden complejidad. Esta prdida de complejidad nos permite concentrarnos en una parte especfica del problema utilizando el concepto de divide y vencers.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

43

Estructura de un algoritmo.
Los algoritmos se definen como una serie de pasos bien definidos y finitos que permiten solucionar un problema para cualquier tipo de valores. Bsicamente un algoritmo permite definir las acciones que se deben realizar para solucionar un problema. Existe una serie de acciones que acciones que se realizan para dar solucin a un problema, por ejemplo declarar variables, leer datos desde teclado, mostrar datos en una pantalla, etc. Esta serie de acciones se ordenan lgicamente para solucionar un problema. Un ejemplo de la definicin de la estructura de un algoritmo es el siguiente: 1. 2. 3. 4. 5. Leer el pedido. Examinar el historial de crdito del cliente. Si el cliente es solvente, entregar el pedido. En caso contrario, rechazarlo. Fin.

Si te fijas en el ejemplo anterior, existe una serie de pasos formales para dar solucin a un problema que en el caso anterior es tomar una decisin respecto a si se entrega o no un pedido a un cliente utilizando el historial de crdito que posee.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

44

Conceptos de variables y constantes.


Definicin de variables y constantes.
Cuando creamos software, los datos que van a ser procesados, se deben guardar de forma temporal para ser procesados por la aplicacin. El programa por lo tanto debe solicitar al sistema operativo que defina un espacio en la memoria donde guardar estos datos. Para esto los lenguajes de programacin definen una forma de reservar este espacio y es mediante la declaracin de variables y constantes. Cuando se declara una variable o una constante, se realiza el proceso de solicitar un espacio en la memoria del computador para almacenar valores que representan datos que queremos procesar. El problema surge cuando nos damos cuenta que el espacio en la memoria del computador es limitado, por lo tanto el sistema operativo para proteger la ejecucin de mltiples programas nos solicita que pidamos un espacio especfico, en funcin de lo que vamos a guardar, por ejemplo si tengo que construir un lugar para guardar mi auto, no construyo un galpn para guardar un avin, porque lo ms probable es que no ocupe todo el espacio y quede con mucho espacio sin utilizar, de la misma forma que no construyo un galpn para guardar una moto, pues lo que necesito guardar es un auto. Por lo tanto para indicar al sistema operativo cual es el espacio

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

45

que se debe dejar disponible para guardar datos, los lenguajes de programacin definen los tipos de datos. Un tipo de dato por lo tanto permite definir el espacio en la memoria que el sistema operativo reservar para guardar datos que sern procesados por un software. En java los tipos de datos se pueden catalogar bsicamente en dos grupos, los primitivos (o simples) y las referencias a objetos.

Primitivos
Los tipos de datos primitivos son aquellos que pueden utilizarse directamente en un programa sin necesidad de utilizar POO, dado que no son objetos, los tipos de datos primitivos grupos, los aportan un y uso ms eficiente los en el se almacenamiento de datos y pueden ser divididos en dos booleanos numricos, cuales subdividen en dos grupos, los enteros (byte, short, int, long y char) y los reales (float y double). (Importante) la declaracin de una variable utiliza la siguiente sintaxis: Tipo de dato identificador = [valor][, identificador] [=valor] ; En java los identificadores tambin tienen una norma. La forma correcta de declarar una variable es escribindola con minsculas y las maysculas slo se utilizan en la primera letra a partir de la segunda palabra si es que la hay, por ejemplo el identificador miVariable lleva la letra V con mayscula debido a que es una palabra
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

46

escrita

despus

de

mi

lo

mismo

sucede

con

miPrimeraVariable, donde tanto P como V van con maysculas

byte:
El byte es una variable que tiene una capacidad de 8 bits y permite almacenar un valor de tipo entero (sin decimales) entre el -128 y + 127. El siguiente ejemplo declara la variable y luego le asigna el valor de cero, cuando un valor es dado de forma inicial recibe el nombre de inicializacin de la variable. byte dia=0; (Importante) las variables pueden ser inicializadas con un valor (cero en este caso) o una expresin. Se entiende por expresin un conjunto de operadores que dan un resultado, pudiendo as declarar byte (o cualquier otro tipo de dato) de la siguiente forma: byte a = 1+1*2; tambin debes tener en cuenta que las variables numricas no inicializadas comienzan en cero.

Short:
El short tiene una capacidad de 16 bits y permite almacenar un valor entero entre -32768 y +32767 (al igual que el entero en C). La siguiente lnea de cdigo declara e inicializa dos variables.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

47

Int:
El tipo de dato entero tiene una capacidad de 32 bits y permite almacenar un valor entero entre -2147483648 y +2147483647.

Long:
El tipo de dato long tiene una capacidad de 64 bits y permite almacenar un valor entero entre y 9.223.372.036.854.775.808 +9.223.372.036.854.775.809

Float:
El tipo de dato float tiene una capacidad de 32 bits y permite almacenar un valor real en coma flotante (decimales) entre -3,4*10-38 hasta 3,4*1038 . Los valores expresados en float deben ir acompaados de una letra f minscula al final.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

48

Double:
El tipo double tiene una capacidad de 64 bits y permite almacenar un valor real entre -1,7*10-308 y +1,7*10308. El double es el tipo de dato que asume Java al escribir un real, por ello no va acompaado de ningn carcter como en el caso del float.

Boolean:
El tipo de dato booleano es utilizado para conocer el resultado de una evaluacin booleana, los dos posibles valores son true y false (verdadero y falso).

Si su valor de inicio no es especificado, el valor por defecto es false.

Char:
El tipo char, es un tipo de datos que permite almacenar un caracter, sin embargo el valor que en realidad almacena es un entero equivalente entre los valores del 0 al 127 de la tabla de caracteres ASCII, la forma de declarar un char es la siguiente:

(Importante) Para el caso de la variable letra1 el valor es el caracter a, el cual sebe ir entre comillas, sin embargo en letra2, las comillas no existen, porque no se le est asignando un carcter, el nmero 97 representa la letra a
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

49

en la tabla ASCII, esto significa que la variable letra1 y letra2 tienen en realidad la misma letra almacenada.

Tipo de objetos.
Los tipos de objetos incluyen todos los objetos que pueden ser instanciados a partir de las clases provenientes con java y todas las que sean desarrolladas por el programador. Si bien ambos tpicos sern vistos ms adelante, en este captulo se mostrar el String, la cual es una clase de mucha utilidad y que a veces tratada como un tipo primitivo, aunque no lo sea.

String
Un String (con su letra s mayscula) no es un tipo de dato primitivo, sin embargo se trata en este apartado debido a que su uso es muy habitual en los programas y adicionalmente se puede utilizar de la misma forma en la que se declaran los tipos primitivos. Un String es un tipo de dato que permite almacenar una cantidad de caracteres variables. Su declaracin y asignacin es de la siguiente forma:

(Importante) String, es en realidad una clase, que almacena como atributo un arreglo de caracteres. Tanto las clases como los arreglos sern estudiados con mayor detalle ms adelante. El siguiente ejemplo muestra la

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

50

declaracin

de

variables

bajo

el

paradigma

de

la

programacin estructurada dentro del mtodo main.

La

siguiente

imagen,

presenta

un

ejemplo

de

la

utilizacin de los tipos vistos en declaracin de atributos de nuestra clase Persona.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

51

(Importante) private representa el nivel de accesibilidad y ser estudiado ms adelante.

Vida y mbito de una variable


Las variables cuando son declaradas, tienen lo que se conoce como un mbito, el cual define las fronteras dentro de las cuales las variables pueden ser utilizadas. Tradicionalmente la programacin estructurada tiene dos niveles de visibilidad distintos: las variables locales y globales, sin embargo en la programacin orientada el mbito de una variable dentro de una clase es algo ms
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

52

complejo y ser tratado a lo largo de este manual. Las variables siempre deben ir dentro de una estructura que los contenga, para cada estructura existe un inicio y cierre de bloque que la delimita. Como ejemplo la siguiente imagen muestra una clase con su respectivo inicio y cierre de bloque.

Fjate que ahora la clase Persona posee adems un comportamiento llamado correr y descansar, los cuales tambin tienen limitado su bloque. Podemos decir entonces que la clase Persona contiene dentro un comportamiento llamado correr y descansar.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

53

En este caso, la variable cansancio es una variable de instancia debido a que est definida dentro de la clase, pero fuera de sus comportamientos, por ende los mtodos descansar y correr (que tambin son parte de la clase) tienen visibilidad sobre cansancio, aumentando en este caso su valor al correr y disminuyndola al descansar.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

54

El mbito de una variable siempre depender de del lugar donde se produzca su declaracin, por ejemplo, ya vimos que si declaramos la variable dentro de los bloques que limitan la clase persona, pero fuera de correr o descansar, la variable se denomina una variable de instancia y est disponible para todos los mtodos que la clase contenga. En el siguiente ejemplo la variable cansancio es ahora una variable declarada dentro de del comportamiento correr, esto se denomina variable local del mtodo. Para este caso la visibilidad de dicha variable son los lmites donde fue declarada, vale decir el inicio y bloque de correr, el siguiente ejemplo causa un

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

55

error debido a que descansar no tiene una visibilidad sobre la variable cansancio.

(Importante) las variables de instancia son capaces de mantener el valor durante toda la vida de un objeto, sin embargo las declaradas dentro de un comportamiento son creadas, utilizadas y eliminadas al finalizar la ejecucin del comportamiento que la contiene. Tambin es posible crear lmites dentro de los comportamientos correr, si bien la tcnica que se presenta en el siguiente no es muy comn, es reconocida por el lenguaje Java.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

56

En el segmento de cdigo anterior se muestran dos casos a considerar. En el interior del mtodo correr existe una delimitacin dentro que contiene la declaracin de una variable entera cuyo identificador es a, sin embargo al

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

57

terminar el lmite donde fue declarada la variable ha vuelto a ser declarada, a primera vista da la idea de que correr tiene dos variables llamadas a, pero sabemos que eso es imposible. Recordemos que el identificador de una variable debe ser nico en un mismo mbito, lo que en realidad sucede es que la variable que se declara primero tiene una vida til desde que se declara hasta el cierre de bloque en el que fue declarada, por ende al ser declarada la segunda variable llamada a, la primera ya ha sido eliminada. En descansar en cambio se produce un error debido a que se declara primero una variable entera dentro de los lmites del comportamiento descansar, lo que provoca que tambin est disponible para el mbito que existe en el interior del mtodo, por lo tanto, en el mbito interior, no es posible declarar la variable entera con el identificador a, debido a que ya existe en l.

Conversin entre tipos.


En Java existen dos tipos de conversiones, la implcita y explicita. La implcita es aquella que no necesita de alguna intervencin por parte del programador para que se lleve a cabo, siendo Java el encargado de realizarla. El ejemplo ms comn es la operacin aritmtica de dos tipos de datos distintos, en una variable de qu tipo debo almacenar el resultado entre la suma entre un float y un double?

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

58

La clave a la respuesta de esta pregunta no est en el resultado de la operacin, de hecho, en este caso el resultado es 6, el cual podramos asumir de forma errnea que es un resultado entero, sin embargo la clave del xito est en el tamao del resultado. Si tuvieses que construir un estacionamiento, donde se estaciona un camin gigante o un pequeo auto, pero nunca los dos al mismo tiempo, cul es el estacionamiento ms pequeo que debes construir? El del tamao del camin, pues Java hace lo mismo, el double es un valor ms grande (en bits) que el float, por ende Java siempre dar como resultado el tipo ms grande, con ello se asegura de que no exista perdida de precisin en el resultado. La conversin implcita es aplicada en la direccin de izquierda a derecha entre los datos presentados en el siguiente diagrama, lo que significa que un byte, puede almacenarse en una variable de tipo short o char o cualquiera de las 3 puede almacenarse en un int.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

59

La conversin explcita o tambin conocida como cast consiste en forzar la conversin entre un tipo de dato a cualquier otro (excepto desde booleanos a enteros o reales), la sintaxis para realizar una conversin explicita es la siguiente: (Tipo destino) expresin o variable A=(int)promedio; En el siguiente ejemplo, se convierte una expresin que da como resultado un float (debido a que es ms grande que un short y un long) en un entero, dando como resultado el valor de 3.

(importante) muchas veces se piensa que el resultado es 4, debido a que la suma de las tres variables da en realidad 3.8f sin embargo convertir este resultado a un entero no implica una aproximacin, sino que slo tomar la parte entera del valor resultante (tambin conocido como truncar datos) El siguiente ejemplo muestra una clase en la que el comportamiento miPeso el cual retorna los kilos de su peso sin contar los gramos.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

60

Representacin de sentencias en Instrucciones.


Operadores Aritmticos.
Los operadores aritmticos son aquellos que permiten realizar operaciones matemticas y son:

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

61

El siguiente ejemplo muestra una operatoria aritmtica que incluye una conversin explicita cuyo resultado es 4:

Operadores unarios y de auto asignacin

Este tipo de operadores son una forma reducida de utilizar los operadores aritmticos muestra las equivalencias: tradicionales, por ejemplo: Dada la declaracin int a=6; la siguiente tabla

Debes

prestar

especial

atencin

cuando

uses

los

operadores -- y ++ dentro de una expresin aritmtica,

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

62

debido a que el orden en el que se utilizan cambia el resultado de la operacin. -- y ++ pueden ser utilizados como sufijos o como prefijos, lo que implica la jerarqua con la que se ejecuta, por ejemplo, en este caso ++ est antes de la variable a lo que implica que previo a cualquier operacin que vaya ejecutarse sobre l la prioridad es incrementarlo en 1, siendo el resultado para este caso igual a 6 dado que a es 1 antes de ejecutar la suma.

Operadores Lgicos
Relacionales
Se usan para formar expresiones booleanas, es decir expresiones que al ser evaluadas producen un valor booleano: verdadero o falso. Se utilizan para establecer una relacin entre dos

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

63

Cuando la comparacin se hace con datos alfanumricos, opera de acuerdo a las siguientes reglas: Se compara uno a uno de izquierda a derecha. Si son de diferente longitud pero exactamente iguales hasta el ltimo carcter del ms corto, entonces el ms corto es el menor. Slo son iguales dos datos alfanumricos si son Las letras minsculas tienen mayor valor que las iguales su contenido y su longitud. maysculas. (tabla ascii)

Booleanos:
Combinan sus operandos de acuerdo al lgebra de Boole para producir un nuevo valor que se convierte en el valor de la expresin.

OR u O: es un operador binario, afecta a dos operadores. La expresin que forma es verdadera cuando al menos uno de sus operandos es verdadero. Es un operador de disyuncin. Ejemplo: estudiamos o vamos al estadio AND o Y: tambin es un operador binario. La expresin formada es cierta cuando ambos operadores son ciertos al mismo tiempo. Es el operador lgico de conjuncin Ejemplo: si es verano y hace calor vamos a la playa NOT o NO: es un operador unario, afecta a un solo operando. Cambia el estado lgico de la expresin; si es
UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

64

verdadera la transforma en falsa y al revs. Ejemplo: no es verano. El orden de prioridad de estos operadores es: NOT, AND y OR.

UNIVERSIDAD TECNOLGICA DE CHILE INACAP - REA INFORMTICA Y TELECOMUNICACIONES

Você também pode gostar