P. 1
MANUAL DE FUNDAMENTOS DE PROGRAMACIÓN

MANUAL DE FUNDAMENTOS DE PROGRAMACIÓN

1.0

|Views: 4.484|Likes:
Publicado poralejocix

More info:

Published by: alejocix on Apr 10, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

04/13/2013

pdf

text

original

Sections

  • Cuentabancaria
  • ¿Qué es un Lenguajes de Programación?
  • ¿Qué es una sentencia?
  • A CADA instrucción o sentencia le corresponde UNA acción de procesador
  • ¿Qué es un programa?
  • ¿Qué es JAVA?
  • Java Virtual Machine
  • Codificar los Tipos de Datos en Java
  • Números Reales (En notación Científica)
  • Sesión 6 Estructuras Selectivas
  • Alternativa doble (si-entonces-sino/if-then-else)
  • Selectivas Anidadas
  • Sesión 8 Estructuras Algorítmicas Repetitivas
  • Contador
  • Acumuladores
  • Estructuras Repetitivas
  • Sesión 9 Ejercicios de Estructuras Repetitivas - Mientras
  • Sesión 10 Ejercicios de Estructuras Repetitivas - Para
  • Sesión 11 Arreglos Unidimensionales
  • Definición de Arreglo
  • Declaración de Arreglos en JAVA
  • Asignación de valores a un Arreglo
  • Recuperación de elementos de un arreglo
  • SESIÓN 12 ARREGLOS BIDIMENSIONALES
  • SESIÓN13 ARREGLOS DE OBJETOS

MANUAL DE FUNDAMENTOS DE PROGRAMACIÓN

Enfoque Orientado a Objetos Elaborado por Ing. Alejandro Valdivia Barboza Docente Investigador USAT 2010-I

roceso

Entradas

El pr c s implic tr s rmación, cambio a través d una s rie de acciones ordenadas de manera lógica, que persiguen un ob etivo, el cual se expresa mediante las salidas Imaginemos una calculadora, en la cual necesitamos realizar una multiplic ción de dos a números: 3 X 4 = 12 Para realizar esta operación se necesitó presionar los botones 3 ,4 y X, es decir necesitamos ingresar a la calculadora los dos números y la operación que necesitamos realizar, a estos valores le denominamos entradas y la salida será entonces el cálculo de esta operación, que nos da como resultado 12. El proceso es sumas 3 veces 4 o sumar 4 veces 3. ato e información

Dato: Valor sin significado para la persona Información: son los datos que significan algo para la persona

La información es la colección de datos que tienen un significado para la persona, podría suceder que para una persona algún suceso no sea informativo, pero para otra persona sí lo es, por lo tanto los conceptos son difíciles de diferenciar, pero es válido tener la idea de ambos. Información = Datos + Significado
roceso de desarrollo de un programa

Análisis del problema

Diseño del Programa (Algoritmo)

Codificación del programa (utilizamos un IDE, en este caso NETBEANS, código fuente)

Compilación / Interpretación (Eliminación de errores de Sintaxis)

Generación de Ejecutable (.class , .exe)

Pruebas del programa (Eliminación de Errores de Lógica, Ejecución)    

¥

¥¤

C

I

I

T

BJ T

¨£
Salidas

£

©  

£

§ ¥ ¢ ¦ ¥¤ ¢ ¡   £   ©©

¤

¡ ¡

T p s d dat s, va ab s,

sta t s

Los tipos de datos tienen la finalidad de reservar una determinada cantidad de memoria, cada tipo de dato reserva una cantidad que no necesariamente es la misma, con esto se busca el uso eficiente de memoria; es decir; usar la menor cantidad de memoria posible, dependiendo del contexto en el cual se est n representando los datos. Simples (Sin estructura) Enteros Reales Lógicos Car cter Compuestos (derivados de los simples) Cadenas Matrices Clases Archivos

A continuación se muestra un gr fico de barras, en el cual podemos ver de manera intuitiva el espacio ocupado por estos tipos de datos Logico Caracter Entero Real Va ab s Una variable es un símbolo que representa un elemento no especificado de un conjunto dado. Dicho conjunto es llamado conjunto universal de la variable, universo o dominio de la variable, y cada elemento del conjunto es un valor de la variable. Sea x una variable cuyo universo es el conjunto {1,3,5,7,9,11,13}; entonces x puede tener cualquiera de esos valores: 1,3,5,7,9,11,13. En otras palabras x puede reemplazarse por cualquier entero positivo impar menor que 14. Por esta razón, a menudo se dice que una variable es un reemplazo de cualquier elemento de su universo. C sta t s Es un valor de tipo permanente, que no puede modificarse, al menos no dentro del contexto o situación para el cual est previsto. Suele relacionarse y usarse en combinación con las variables, que sí admiten modificación en sus valores. D d s dat s

Es el conjunto de valores que puede tener una variable en un determinado contexto. Sexo puede tener solamente dos valores Masculino o Femenino, entonces podemos representar con la letra F para Femenino y M para masculino, ese es el dominio de la variable sexo, esta variable puede ser representada como un caracter. La variable sueldo en una empresa varía desde 800 soles a 45000 soles, adem s puede contener decimales, por lo tanto es un real o un double. Generalmente el dominio es considerado como rango que tiene un inicio y fin.

$

#

$ 

"

$

" !   

$ 

 "%  

"   

  "

La memoria se llena de datos 3 a True Juan Ejemplos La primera letra de USAT Nombre de una calle Número de Hermanos Capital de Canadá El año La Estatura de una persona El Sueldo Fecha Temperatura Número de Teléfono Monto Total de una factura Número de Clientes de una empresa Pi ab Nombre de mi mejor amigo Dirección 1.234 Definir qué tipo de dato es cada una de las variables .

 No puede incluir el carácter espacio en blanco Las variables deben ser suficientemente descriptivas.y. recuerda que no solo tú como propietario del programa leerás el código fuente.Identificadores El sentido del uso de los identificadores de variables o constantes es que el acceso directo a la . representar la realidad. los identificadores como n. o tú mismo lo leerás después de un tiempo y es bastante probable que no entiendas para que usase las variables. numero_de_productos.  Seguido de cero o más: letras ó d gitos ó $ ó under scores. por que las referencias a las posiciones de memoria son números en hexadecimal entonces para evitar ese tipo de referencia es que . saldo_cuenta. _ ó letra.z . en un programa de computadora. sino las has t identificado de manera descriptiva . pero hacen menos legible el programa. basta con leerlas para saber de qué se tratan. clase. Proceso de stracción El programador tiene la capacidad y la responsabilidad dediseñar y crear objetos en el computador. es decir.los cuales son válidos .v. a este proceso se le conoce como abstracción. mejor usamos identificadores que son definidos de manera d escriptiva por el programador. Abstracción ) ( & 10 ' . Las variables de un determinado tipo solo pueden tomar valores de ese tipo. no ser a amigable.x. lo harán después otros programadores. eglas para crear identificadores No debe ser palabra reservada del lenguaje de programación Que respete la siguiente gramática:  Inicie con $. memoria por parte del programador. Un identificador es una palabra usada por el programador para nombrar una variable. método. Variables como numero_de_empleados. donde mayúsculas son diferentes de minúsculas.

año. Lucía. Física o Conceptual. C proceso. Alegria . Boys Ace . Características de una Cuenta banco 001-223456-5656 . mes . con características y comportamiento. Recibo Luz 00001 .. Ejemplos Fís pt a s. 01-11-2009 . U . servicios que el objeto brinda a otros objetos. Gato . sexo. dirección. peso. moneda Características de un Domingo . Ariel . Pedro . a estos se Ca a t íst as d les conoce como atributos. son los datos que describen. Cuenta banco 001-223456-5645 . Lunes . laborable Características de una 01-11-2009 . Lucía Perro . talla. sexo. Mi rcoles . identifican a un objeto. inicio de semana. Nombre. Martes . Pedro . edad. comino Chery QQ . Ira fx-5800P .. festivo C 02-02-2008 Cuenta banco 001-223456- p ta t d bj t Son acciones que el objeto es capaz de realizar. Nombre. Martes . Cuenta banco 001-223456-5678 Domingo . fx-3650P . Mi rcoles . la cual tiene un periodo de vida definido e identidad propia. Recibo Luz 00001 . Por ejemplo que características tienen Juan. fx-3950P . 5645 . Lunes . tel fono fijo Características de perro . Cuenta banco 001-223456-5678 Numero de cuenta. etc Cuenta banco 001-223456-5656 . Recibo Luz 00001 Sporting Cristal . saldo. gato. etc Tristeza .No puede ser captado por nuestros sentidos puede ser una idea. Vaca sal . Toyota Yaris Recibo Luz 00001 . 9 9 9 3 2 3 67 2 3 624A @3 A3 3 2 3 67 2 28 7 2563 35 4 54 @2 5 @ 32 s. 02-02-2008 bj t .Obj t Representación de la realidad.Puede ser captado por nuestros sentidos Juan . Vaca Nombre. talla. pimienta . Nissan 4x4 . peso. Dia. edad.

jugar. razonar. Comportamiento de perro. morir. Cuenta banco 001-223456-5678 Crear. dar su nombre. ¿qué acciones realizan o qué acciones se pueden realizar sobre ellos? Nacer. Pedro. obtener saldo. estudiar. Cerrar El cliente del banco actúa sobre su cuenta Cuenta banco 001- Clases (class) Conjunto de objetos con caracter sticas y comportamiento común. 223456-5645 . comer. morir. trabajar. depositar. comer. gato. retirar.Por ejemplo que comportamiento tienen Juan. Juan Pedro Lucìa Perro Gato Vaca Persona Animal Condimento ¿Qué caracter sticas comunes encuentras en estas 3 calculadoras? B B sal pimienta comino B . Vaca Nacer. jugar Comportamiento de una Cuenta banco 001-223456-5656 . Dormir. Luc a. Dormir.

Termómetro. especialmente una computadora. Cuentabancaria. R F R I H G GF G I D T EEC QP D C R S . numero1. propio del ser humano.Vamos a hace e eje c c o de mode amie o de es as calc ladoras reducie do la complejidad de la calculadora que conocemos es as calculadoras solo permiten hacer operaciones con dos números a la ve Primero de inimos la clase Calculadora y las características que la de inen Calculadora marca modelo tipo prendida numero1 numero2 Se undo ahora vamos a asignarle los tipos de datos a cada una de las características de inidas Calculadora Cadena Cadena carácter lógico real real marca. Círculo radio Circulo Real radio. Haz el mismo ejercicio para los siguientes objetos Auto. numero2. Persona. ¿Qué es un Lenguajes de Programación? Lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina. tipo. modelo. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten e presar instrucciones que luego serán interpretadas. Los nombres que describen las características de este objeto se han creado tomando en cuenta las reglas para formar identificadores y usando el lenguaje natural. prendida.

Por lo tanto. ¿Qué es una sentencia? una sentencia es una línea de código en algún lenguaje de programación.1 2 Al V U . un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo El lenguaje utilizado por el procesador se denomina lenguaje máquina. Un programa está constituido por múltiples sentencias de programación. También una sentencia tiene una semántica. de esta manera. si existe algún error de semántica. el compilador suele detectarlo. Existen lenguajes que no necesitan un caracter que determine el final de una sentencia. razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. lo que es llamado código fuente. Por lo tanto. El lenguaje máquina. un lenguaje de programación tiene varias ventajas: Es mucho más fácil de comprender que un lenguaje máquina: Permite mayor portabilidad. Una sentencia de programación tiene una sintaxis y una semántica. Se trata de datos tal como llegan al procesador. pero el compilador no puede determinar qué quiere hacer el programador. es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos. A CADA instrucción o sentencia le corresponde UNA acción de procesador. Sin programas. por lo tanto. Esto es porque la semántica está asociada al "significado" o "función" de esa sentencia (o un grupo de sentencias). si existe algún error.) o un punto final (. Esto depende del lenguaje de programación que se esté empleando. si existe algún error de sintaxis (o alguna advertencia). el lenguaje de programación es mucho más rígido. ¿Qué es un programa? Es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. el compilador entrega un mensaje con el número de sentencia donde fue encontrado. La sintaxis está determinada por el lenguaje de programación y. En algunos lenguajes de programación las sentencias están numeradas. estas máquinas no pueden funcionar correctamente. no puede ser descubierto por el compilador. y algunas están separadas simplemente por enters (retorno de carro). interpretados y los intermedios. no es comprensible para los seres humanos. El lenguaje natural es utilizado por los seres humanos para su comunicación. que consisten en una serie de 0 y 1 ( datos binarios . Las sentencias de programación suelen tener algún caracter que determina su final.). en general. por lo general es un punto y coma (. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda procesarlo. Existen los lenguajes compilados.Es un lenguaje dise ado para describir el conjunto de acciones consecutiv que un equipo as debe ejecutar.

Java is a language used to write computer programs that was created by Sun Microsystems. on any computer device (cell phones. aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible. on any computer with any type of operating system. Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). La implementación original y de referencia del compilador. el bytecode es normalmente interpretado o compilado a código nativo para la ejecución. The idea behind the language is that a program written with Java can run on any platform in other words. JAVA= Just Another Vague Acronym? Las aplicaciones Java están típicamente compiladas en un bytecode. aunque la compilación en código máquina nativo también es posible. la máquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. de ahí que el icono de java sea una taza de cafe caliente . Desde entonces. Otros abogan por el siguiente acrónimo. de acuerdo con las especificaciones del Java Community Process. Transformación del archivo fuente al archivo al archivo ejecutable ¿Qué es JAVA? Lenguaje de Programación Orientado a Objetos. aunque algunas fuentes señal n que podría a tratarse de las iniciales de sus creadores: James Gosling. y Andy Bechtolsheim. with development starting in 1991. La hipótesis que más fuerza tiene es la qu Java debe su e nombre a un tipo de café disponible en la cafetería cercana. etc. algunas incluso bajo licencias de software libre. El término Java fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. En el tiempo de ejecución. de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java aún no lo es). se lo denomina software y así. Sun ha controlado las especificaciones. Arthur Van Hoff.conjunto general de programas. el desarrollo y evolución del lenguaje a través del Java Community Process. or on any type of server. Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL. Pero no está claro si es un acrónimo o no. se refiere al equipamiento lógico o soporte lógico de una computadora digital. Entre noviembre de 2006 y mayo de 2007. si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun.).

JVM) es un programa nativo. numero2. modelo. capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode).java Archivo bytecode .int.4x10-45 1. numero1. modelo. 24 mantisa. es decir.Java Virtual Machine Una Máquina virtual Java (en inglés Java Virtual Machine. 8 exponente. ejecutable en una plataforma específica. double String boolean char Cada tipo de dato en java reserva una cantidad de memoria y permite un rango o dominio de valores byte short int Long float double boolean char Ds ñ y 1 2 4 8 4 8 1 2 byte o 8 bits bytes o 16 bits bytes o 32 bits bytes o 64 bits bytes o 32 bits bytes o 64 bits bit bytes o 16 bits a d -128 a 127 -32768 a 32767 -2147483648 a -2147483647 -9223372036854775808 a -9223372036854775807 1 bit signo. radio. } . el cual es generado por el compilador del lenguaje Java. prendida. Archivo Fuente . 11 exponente. numero2. 1.class Java Virtual Machine Codificar los Tipos de Datos en Java Tipo de Dato en lenguaje natural Entero Real Cadena Lógico Carácter Tipo Dato Java byte.4x1038 1 bit signo . numero1. Y X Y cf X bj t Y f We Yd X cbW` `WaW Y` Y X W class Calculadora { private String private String private char private boolean private float private float } marca.long float. class Circulo{ private float radio. 52 mantisa true o false Caracteres Unicode s at b t s d d Calculadora Cadena Cadena carácter lógico real real Circulo Real marca. tipo. tipo. prendida. short.

7) Con N bits entonces podemos generar 2 N posibles valores Si queremos representar X valores diferentes. 100. 1Gb = 1024Mb. pueden ver en el sgte link las equivalencias que existen: http://es.Haz el mismo ejercicio para los siguientes objetos Auto. 111 que equivalen a (0. 11 (0. 101. para el computador 5 en sistema decimal es igual 0101 en sistema binario. A cada dígito 1 o 0 se le conoce como bit. el 1 equivale a un voltaje m s alto que el 0.wikipedia. 1 Mb = 1024Kb. 3. 10. 110. el cual depende de la arquitectura de cada computador. 5. mayor o igual que log 2 X qhtugu ig t v ts g irqp ig gh g a . 01. 1. 011. 4. R p s ta d s dat s Organización de la computadora Cada tipo de tipo de dato ocupa o reserva un determinado espacio en la memoria RAM. La computadora de lo único que entiende es de 0s y 1s. 001. 010. necesitaremos N bits. 6. los cuales representan ciertos rangos de voltaje.org/wiki/Exabyte Podemos representar los bits como celdas por ejemplo: 1Byte en la memoria RAM del computador 0 0 0 1 0 1 0 1 Este byte representa al número 21 en decimal Con 1 bit podemos representar 0 y 1 Con 2 bits podemos representar 00. 3) Con 3 bits podemos representar 000. bajo una estructura determinada. 1Tb = 1024 Gb. 2. Podemos definir entonces 1Byte = 8 bits. Termómetro.1. 2. Cuentabancaria Persona. 1Kb = 1024Bytes. donde N es el mayor entero.

...(valor(000.(valor(y) + 1) Se dice que y es el complemento de x. Una variable entera (int) está formada por 4 bytes.001001) = 1*2^3+1*2^0= 9 valor(111. x30. Ejemplos: valor(000.111111)= 2^31-1 Mínimo= valor(100. Ahora qué es lo que pasa con los números negativos y el cero. + x2*2^2 +x1*2^1+ x0*2^0 Si x31 es 1.Nú sE t Si tenemos 32 bits podemos representar 2 32 posibles combinaciones de de 0s y 1s lo cual nos permite generar hasta 4294967296 valores (0 4294967295).000000)= -2^31 Por lo tanto.000101)+1) = .. x2. En general. €yx  €yxw s . .111010) = . .. Valores máximos y mínimos Máximo= valor(011... el valor es negativo y se calcula construyendo una nueva palabra y. Por ejemplo: El valor representado por esta variable es: 1*2^2 + 0*2^1 + 1*2^0 En donde x^y se usa acá como una abreviación de x elevado a y. aún cuando el número sea pequeño. El valor numérico representado por la variable x está dado por el siguiente cálculo: Si x31 es 0. el computador será capaz de representar 2147483648 hasta 2147483647 No podemos representar más números si yo realizo la siguiente operación 2147483647 + 1 obtendré como resultado 2147483648.. Estos 32 bits representan el valor almacenado por esa variable en binario... x1 y x0.(5+1) = -6 Una variable entera (int) siempre utiliza 32 bits... no es capaz de almacenar números demasiado grandes (en valorabsoluto).. tal que: yi= 1 si xi==0 0 si xi==1 valor(x) = .. Por otra parte. es decir 32 bits. una variable entera x está formada por 32 bits que denotaremos x31. con un int se pueden almacenar números de 9 dígitos aproximadamente. el valor es positivo y se calcula como: x31*2^31 + x30*2^30 + .

Por lo tanto. Por ejemplo. en donde se destinaba una cantidad fija de bits para la parte entera (por ejemplo 32 bits) y el resto a la parte fraccionaria.125 Los primeros computadores almacenaban los números reales en una formato llamado punto fijo.2^7-1] [-2^63.2^15-1] [-2^7.1010 Representa en decimal al número: 2^3 + 2^2 + 2^0 + 2^(-1) + 2^(-3) = 8+4+1+0...Ejercicios: ¿Qué número representa el siguiente número en binario 000.2^31-1] [-2^15. es decir el doble de un entero.00101011? ¿y el 111. el número: 1101.101001? ¿Cómo se representa en el computador el número 23? ¿y el -35? tipo int short byte long número 32 16 8 64 xp t rango de bits representado [-2^31. Las operaciones aritméticas en coma flotante están sujetas a errores de redondeo: N<0 Desbordamiento Agotamiento - -N(max) Está da IEEE 754 Precisión Sencilla (bit de signo + 8 bits exponente + 32 bits mantisa) Precisión Doble (bit de signo + 11bits exponente + 32bits mantisa) Una variable real (double) est formada por 8 bytes.2^63-1] Números Reales (En notación Científica) El ordenador solo puede representar un subconjuntode los números reales (números en coma flotante)..5+0. En ella se almacenan números reales en formato binario. el número anterior sería representado en 64 bits como: ˆ „ †„ † … „ N>0 Desbordamiento (+/-)Ma t sa x 2 ƒ‚ N(max) + ‡ ‚ ..

. el punto que separa la parte entera de la parte fraccionaria. exponente: 7 Solución: -1100100.00000000 00000000 00000000 00001101 . . exponente 100 0 -3 en binario 1 seguido 0.. Un valor 4 indica que se coloca despu s del cuarto bit.625) 2^(-4) (0. El exponente indica en donde colocar el punto que separa la parte entera de la fraccionaria. 11 bits para el exponente y 52 bits para la mantisa. Por ejemplo. Representación en punto flotante Un número real se almacena en una variable especificando 3 componentes: el signo (+ o -). 1000...125 (0. ¿Qu número es el siguiente el signo: mantisa: 110010000.. el número 11 se representa como: El signo: + Mantisa: 10110000.. Exponente: 4 La mantisa es una secuencia de bits que siempre comienza en 1.0001 en decimal 2^99 de 99 ceros 0. que es -(4+32+64)= -100 Otros ejemplos: signo + + + mantisa 1000. 10100000 00000000 00000000 00000000 En esta representación.000 y luego viene la mantisa. 1010. Un valor -3 indica que hay que imaginar que el número va precedido por 0.00.0625) En una variable de tipo double se destina 1 bit para el signo... Se necesitaba un mecanismo que aumentara el rango de números representables. Y este formato paso a llamarse punto flotante.. la mantisa y el exponente. Valores m ximos y mínimos M ximo en valor absoluto: 2^1023 Valor m s pequeño: 2^(-1024) ‰  ‘ ‘ ‰ ‘ .5+0.1010 0. Un valor 0 indica que el punto se coloca justo antes del primer bit... siempre se ubica en una posición fija y de ahí el nombre de esta representación. El problema de esta representación es que el rango de valores representables es el mismo de los números enteros. La forma de hacerlo fue destinar una parte de los bits a indicar la posición del punto..

pero los números se almacenan con una precisión limitada (15 dígitos para una variable de tipo double). El rango de representación de los reales es casi ilimitado.10^300] ~ [-10^33.La ventaja de esta representación es que se alcanza un rango de representación mucho m s grande de lo que sería posible con 64 bits. solo se representan 15 dígitos de los 40 iniciales. Indicación: Para obtener la representación de un número en el rango [0.6875 proceda de la siguiente forma: ’ ’ “ ’ “ ’ “ “ . Pero es un error que conviene tener presente. los valores que se obtienen poseen un error de precisión.10^33] precisión en dígitos ~ 15 ~7 Conceptos esenciales de este capítulo que Ud.1[ como 0. introduci ndose entonces un error de representación. Si el resultado de una operación aritm tica (como la multiplicación) excede el rango de representación se producir un error en la magnitud del valor almacenado. El error absoluto que se comete es: 6789012345678901234567890 que parece enorme. Observación: adem s del tipo double existe el tipo float tipo tamaño en bits double float 64 32 mantisa exponente en bits en bits 52 24 11 7 rango representado ~ [-10^300. debe comprender: El rango de representación de los enteros es limitado. que no es relevante para la mayoría de las aplicaciones num ricas. Esto significa que un número que requiera 100 bits de mantisa ser aproximado a uno que solo ocupa 52. El error que comete es como cuando el siguiente número: 1234567890123456789012345678901234567890 se aproxima al siguiente valor: 123456789012345*10^25 Es decir. Esto hace que al realizar multiplicaciones y divisiones. Tarea : Muestre que el número 0.3 no es representable en forma exacta en una variable de tipo double. El error que se comente se puede visualizar mejor en base 10. Lamentablemente. Java no alerta cuando se comete este tipo de errores. pero lo que importa es el error relativo que es ~10^(-15) que es bajísimo y para la mayoría de las aplicaciones num ricas es insignificante. Precisión y error de representación La desventaja es que los números se almacenan con una precisión limitada.

0.3 y deduzca la forma final del número en base 2.6875 multiplicado por 2 da: 1.5 multiplicado por 2 da: 1..375..101.10. La parte entera es el primer bit del número en base 2. Qu dese sólo con la parte fraccional de 1. R p s ta d t xt s Se escoge un conjunto de símbolos alfab ticos.6875 en base 2 es 0. por lo que queda como 0. retorno de carro). por lo que 0.. La parte entera es el cuarto bit. 0. num ricos y especiales (separadores y signos de puntuación). Aplique este mismo m todo para 0. La parte entera es el segundo bit. por lo que queda como 0. gr ficos y de control (por ejemplo.375.. Ejemplos de códigos normalizados ASCII (American Standard Code For Information Interchange) ANSI X 3. El número ser entonces 0.1. Estos símbolos se codifican usando n bits con lo cual puedo representar 2 n símbolos.. El número que queda es 0. Qu dese sólo con la parte fraccional de 1.375 multiplicado por 2 da: 0.. Qu dese sólo con la parte fraccional de 1.4-1968.375 multiplicado por 2 da: 1.5. por lo que queda como 0..1011.0.75..5. La parte entera es el tercer bit.1011. 7 bits (128 símbolos) ISO 8859-1 = Latin 1. 8 bits (256 símbolos) • ” • • • • f – – ˜ed™ ˜– –— – ” • . 0. 0.

.

SESIÓN 2 EXPRESIONES ARITMÉTICO LÓGICAS Y MÉTODOS Op ad sA Suma Resta Multiplicación División Potencia Resto t ét s + * / ^ %(mod) 3+4 12. Si todos los operandos son V devuelve V. Si todos los operandos son F devuelve F. si hay alguno que sea F devuelve F.56 -56. p V F NOT p F V O lógica (OR) o disyunción: Operador n-ario (aplicado a 2 o m s operandos).45 10 /2 3^4 35%3 Op ad sR a Mayor que Menor que Mayor o igual que Menor o igual que Diferente igual Op ad sL g s NO lógico (NOT) o negación: Operador unario (aplicado a un único operando).09 3 * 10. si hay alguno que sea V devuelve V. p V V F F q V F V F p OR q V V V F Y lógica (AND) o conjunción: Operador n-ario . Cambia el valor de verdad de verdadero (V) a falso (F) y viceversa. p V V F F q V F V F p AND q V F F F mp sorq pm mno nm u i l j k jh oq r t ghi hg mno nm a s > < >= <= != == .

Los operadores actúan sobre los operandos para obtener un resultado . Expresar los siguientes ejercicios como una expresión aritm tica Calcular la suma de dos números reales Suma=numero1+numero2 suma es una variable de tipo real a la cual se le asigna el resultado de la suma de ambos números. una constante o un conjunto operadores y operandos.14. Devuelve V cuando ambos operandos son distintos y F cuando son iguales. p V V F F q V F V F p XOR q F V V F Exp s s A t ét as Una expresión aritm tica puede ser una variable.16 y 2 son constantes literales.14.16*r^2 3. Se pueden expresar las expresiones anteriores en lenguaje natural de la sgte manera: Exp s s L g as Dado M=2 y N = 10 Entonces (M<N) y (N<2*M) V y F F El resultado de la expresión lógica es Falso Entonces ((M-N) != 10) O (2*N>4*M) V O V V } |x { xv } |x  wzyx wv wzyx wv ~ } ~ .O-eXclusiva lógica (XOR): Operador binario (aplicado a dos operandos). r es una variable real que identifica el radio del círculo y areacirculo es una variable real. Los par ntesis permiten agrupar operaciones permitiendo darle mayor precedencia o prioridad de c lculo. Calcular al rea del círculo AreaCirculo = 3.

falso en caso contrario. Cuando numero tiene valor -3. Esta interacción o comunicación entre objetos se realiza mediante mensajes € € €  ‚ ‚  . Definir una expresión lógica de tal forma que dado un número nos devuelva verdadero si est entre 1000 y 2000. (Numero >= 1000) y (Numero<=2000) si Numero=1200 (1200 >= 1000) es V y (1200<=2000) es V. | : devuelve verdadero uno de los operandos es true. entonces (numero > 0) es falso. evalu ndolos ambos. entonces (numero > 0) es verdadero. Como estamos usando la conjunción basta que una de las condiciones falle para que el resultado sea falso. por lo tanto V y V resulta V. Mét d s Los m todos son servicios que el objeto es capaz de brindar a otros objetos. (numero > 0) Cuando numero tiene valor 10.Para poder codificar las expresiones lógicas anteriores en Java usamos los siguientes equivalentes: Codificando en Java Y O NO && || ! &: devuelve verdadero si ambos operandos son true. esto debido a que los objetos interactúan unos con otros. evalu ndolos ambos. Entonces la primera expresión lógica era: (M<N) y (N<2*M) en java esto sería (M<N) && (N<2*M) ((M-N) != 10) O (2*N>4*M) en java esto sería ((M-N) != 10) || (2*N>4*M) Es casi id ntico salvo por los operadores lógicos Definir una expresión lógica de tal forma que dado un número nos devuelva Verdadero si es positivo o falso si es negativo.

ƒ . float suma() return (numero1 + numero2). „ } boolean dentro_rango() „ „ „ (Numero<=2000)). real suma() Inicio retornar (numero1 + numero2).1416*r^2). return ((Numero >= 1000) && } En el caso del c rculo esta clase nos permite calcular el área dado un radio determinado real areaCirculo() Inicio retornar (3.1416*r*r). } Fin lógico es_positivo() Inicio retornar (numero>0). Fin Lógico dentro_rango() Inicio Fin Retornar ((Numero >= 1000) y (Numero<=2000)). boolean es_positivo() return (numero>0). } Fin float areaCirculo() return (3.Cada mensaje pide la ejecución de un servicio de un objeto. En el caso de la calculadora vamos a definir al inicio solo dos servicios o métodos que esta nos puede proporcionar uno es el de la suma de dos números reales y el otro que nos diga si el número que digitamos es positivo o no.

Vamos a diseñar y codificar a toda la calculadora Modelo en lenguaje Natural Calculadora Inicio En lenguaje de programación Java class Calculadora { //inicio private private private private private private String marca; String modelo; char tipo; boolean prendida; float numero1; float numero2;

Cadena Cadena carácter lógico real real
real suma() Inicio

marca; modelo; tipo; prendida; numero1; numero2;

float suma(){ return (numero1 + numero2); } boolean es_positivo(){ return (numero1>0); } } // fin de clase

retornar (numero1 + numero2); Fin lógico es_positivo() Inicio retornar (numero1>0); Fin Fin Calculadora Circulo Inicio

Real

radio;

class Circulo{ private float radio;
float areaCirculo(){ return (3.1416*r*r); }

real areaCirculo() Inicio retornar (3.1416*r^2);

}
Fin Fin Cuando se define una clase lo que se est haciendo es un molde a partir del cual se van a crear objetos, de acuerdo al contexto en el que nos encontremos.

Realizar este mismo ejercicio pero para Auto, Termómetro digital CuentaBancaria, Matrimonio, Persona

…

SESIÓN 3 EXPRESIONES ARITMÉTICO LÓGICAS Y MÉTODOS
En el campeonato descentralizado se quiere modelar una clase que permita manejar a todos los equipos de futbol y el puntaje total obtenido, cada equipo tiene un nombre, partidos empatados, partidos perdidos, partidos ganados, cada partido ganado es 3 puntos, cada partido empatado es 2 puntos y por cada partido perdido se le disminuye un punto. 1) Características del Equipo Nombre partidos_jugados partidos_perdidos partidos_empatados 2) Diseñamos los atributos de la clase Equipo Inicio Cadena Nombre; entero partidos_ganados; entero partidos_empatados; entero partidos_perdidos; Fin 3) Diseñamos los servicios que proporciona la clase Puntaje_total = Partidos_ganados*3 + partidos_empatados*2 partidos_perdidos 4) Diseñamos los servicios como m todos Entero puntaje_total () Inicio retornar (Partidos_ganados*3 + partidos_empatados*2 Fin 5) Diseñamos la clase completa Equipo Inicio Cadena Nombre; entero partidos_ganados; entero partidos_empatados; entero partidos_perdidos; Entero puntaje_total () Inicio retornar (Partidos_ganados*3 + partidos_empatados*2 Fin Fin 6) Codificar la clase en Java class Equipo { private String nombre; private byte partidos_ganados; private byte partidos_empatados; private byte partidos_perdidos;

†

partidos_perdidos);

partidos_perdidos);

byte puntaje_total () { return (Partidos_ganados*3 } }

+

partidos_empatados*2

partidos_perdidos);

Se tiene en una bodega una serie de productos, los cuales tienen como características el nombre, precio de compra, precio de venta, las unidades vendidas, se necesita una clase que permita calcular el monto total de venta y la utilidad obtenida por la venta. 1) Características del producto Nombre Precio_compra Precio_venta Unidades_vendidas 2) Diseñar los atributos de la clase Producto Inicio Cadena Nombre; Real precio_compra; Real precio_venta; Entero unidades_vendidas; Fin 3) Diseñamos los servicios que proporciona la clase Monto de venta Unidades_vendidas*precio_Venta La utilidad Unidades_vendidas*(precio_venta-precio_compra) 4) Diseñamos los servicios como m todos Real monto_venta() Inicio retornar (Unidades_vendidas*precio_Venta); Fin Real utilidad() Inicio Retornar (Unidades_vendidas*(precio_venta-precio_compra); Fin NOTA: se debe tomar en cuenta que ambos m todos pudieron ser atributos de la clase; sin embargo; se deben evitar atributos calculados o derivados 5) Diseñamos la clase completa Producto Inicio Cadena Nombre; Real precio_compra; Real precio_venta; Entero unidades_vendidas; Real monto_venta() Inicio retornar (Unidades_vendidas*precio_Venta); Fin Real utilidad()

‡

‡

float monto_venta(){ return (Unidades_vendidas*precio_Venta). private int unidades_vendidas. } float utilidad(){ return Unidades_vendidas*(precio_venta-precio_compra). } } . private float precio_venta. Fin Fin 6) Codificamos la clase class Producto{ private String Nombre.Inicio Retornar (Unidades_vendidas*(precio_venta-precio_compra). private float precio_compra.

inicialmente de manera informal. (Del latín. I F s a ú s prender la calculadora ingresar primer numero ingresar segundo número Realizar calculo Mostrar resultado Apagar la calculadora ‰‘ ‹ ’ ‘‹Š ‘‹ ‹ ˆŽ ‹ ‰ Š ‰ ‹ ” ˆ‰ ‰ Š ‘‹ ‹ˆ ‘‹ ” ‹ Š ˆ Š ‘ Œ ˆ ‰ˆ ‹ ‹‘‰’ˆ ‘ ‘ Œ‰ Š ‹Œ ‘’ ‰ ‘ Š ’ ‰Œ ˆ‰ Š ‘’ ‹ ˆ ‹ ‹‰ˆ ‹ ‰ Œ‹ ˆ ‘ ” Š‰ ’Ž ‹ Š  ‘’Œ Š ‘ Ž Š a a da d tb ” ‹ ˆ’ ‹ ’ ˆ ‘  ‘ Œ‹ ‹ ‘‹Œ ‹ˆˆ‰ ˆ ‘‰‘’Ž ‹ ‹ ‰ˆ‹Œ ‘ Œ’ ‰‘ ˆ‰Œ‹Œ ‹ ‰ ’ ‰ “ ‘ ‰Œ ˆ‰ Š ‹ ˆ’ ’ ˆ ‹ ‘’ ‹ ‘‹Ž ‰ Š Œ‹ ‰  ‰ ’‹  Ž ‰Œ ˆ‰ Š Œ‹Š ‰ˆ b a ) ‰  . ag t t za d a z a d as s g aj El pseudocódigo d s b ú . ordenadas de manera lógica que nos permiten dar solución a un determinado problema. preciso. un estado actual y un estado deseado. st s d p g a a y pa ab as av que definen las estructuras b sicas. varían de un programador a otro. No siendo el pseudocódigo un lenguaje formal. para luego expresarlo siguiendo ciertas reglas est ndar. Es una herramienta gil para el estudio y diseño de aplicaciones Se necesita hacer un pseudocódigo para poder realizar la suma de dos números en una calculadora. hay a st t as á t a a q t t a stá da . sin hacer uso del computador. ordenada y finita de operaciones que permite hallar la solución a un problema Simple. es decir. ser finitos E E t (Us j st d ayt p d p sad az (D b t a ta t ) Tp sd Ag s Ps d d g : Este tipo de algoritmo se expresa en lenguaje natural. Ej p C as Ag t Secuencia de pasos o acciones finitas. dixit algorithmus y ste a su vez del matem tico persa al-Jwarizmi) es una lista bien definida. Su objetivo es permitir que el programador se t s asp t s g s de la solución a un problema. es decir.SESION 4 ESTRUCTURAS ALGORITMICAS SECUENCIALES P Diferencia entre un estado final y un estado inicial. claro Definido -> confiable Orden Lógico Tener Inicio y Fin.

como dijimos antes la clase es una especie de molde. para dar vida a 3 calculadoras que mantienen la misma estructura. que determina la estructura de los objetos que agrupa La instanciación coloca en . DVD. DiscoDuro Entonces lo que tenemos que hacer es diseñar y codificar un programa que permita realizar la suma de dos números. scanner. DiscoDuro Los dispositivos de salida de datos son: Pantalla. Entonces para crear una instancia de una clase en Java usamos la palabra reservada new y escribimos la siguiente sentencia: La instanciación se puede hacer de 2 maneras 1era Forma Clase Objeto. Mouse. impresora. memoria al objeto creado. Ejemplo Calculadora New New New La clase calculadora se ha instanciado 3 veces. CD. // instanciamos el objeto 2da Forma . CD. Memory. entrada de datos y además dispositivos que permiten la salida de datos .Entonces la calculadora funciona igual al computador tiene dispositivos que permiten la . Memory. Para esto debemos aprender tenemos lo siguiente: Instanciación de una clase Instanciar una clase es crear objetos a partir de ella. // declaramos el objeto Objeto = new Clase(). En la computadora el ingreso de datos se puede dar a través de los siguientes dispositivos: El teclado. DVD.

Lógicamente para poder prender una calculadora. esta premisa es coherente. float numero2. float numero1. si no los identificamos de manera diferente. Calculadora oCalculadora2 = new Calculadora(). Es decir creamos 3 calculadoras a partir de un mismo molde. en el mundo real. // declaración e instanciación en la misma sentencia Siguiente la 2da forma podemos declarar e instanciar un objeto calculadora Calculadora oCalculadora = new Calculadora(). Tomar en cuenta que los 3 objetos han sido identificados de manera diferente. si pretendemos representar una calculadora en el computador. sin embargo para la computadora no lo es. esta calculadora NO existe hasta que la instanciamos. Primero tenemos la clase Calculadora que ya la habíamos modelado class Calculadora { //inicio String marca. boolean prendida. para propósitos del curso usaremos el teclado como dispositivo para el ingreso de datos. } boolean es_positivo(){ return (numero1>0). coloc ndoles un número al final. String modelo. char tipo. Entonces si quiero asignarle el primer número a la calculadora que he creado. estaríamos trabajando sobre el mismo objeto a pesar de haber instanciado 3 veces. esta debe existir.Clase Objeto = new Clase(). desde el mismo programa hago lo siguiente: Método constructor de la clase Calculadora ˜ œ Ÿž – žœ —™ ™ ™ ˜—™œ— ˜ ™ ˜ žš ™ ™ › Ÿ žš ™ ˜ š œ— ˜ ˜  ˜› ˜ š œ— ™—˜› ˜› — š —™ ˜ ˜ ž œ • ˜  — ad . Pa a p d sa s at b t s y ét d s d bj t p d b s sta ¿C as g a s va sa s at b t s d a as ? Los valores pueden ser asignados a los atributos de un objeto desde el mismo programa a lo cual se le conoce como inicialización o desde un dispositivo externo. en este caso la clase calculadora. float suma(){ return (numero1 + numero2). } } // fin de clase Luego instanciamos un primer objeto calculadora Calculadora oCalculadora = new Calculadora(). Si quisi ramos crear otras calculadoras entonces haríamos lo sgte: Calculadora oCalculadora1 = new Calculadora().

En java podemos crear el programa principal de la siguiente manera: class Sumar { public static void main (String [] args) { Calculadora oCalculadora = new Calculadora(). valores lógicos o cadenas y tambi n puedo asignar expresiones aritm ticas o lógicas.java °« ³¯ ¯ ±° ª¯ ­ ° ¬ ¯ ¯« ¬± ° ° ² ¬± ª² °­¬± ³²ª ±° ¯ ° « ª² ± ª ¬ ° ¯² °ª ° ¬ °³ ¬³ «¯ ° ² ¬± ° ¯« ¬± ¯± ª¯ ± ¯ ¯ ¯ ¯² ª¯²­ ª¯ ±¯ª¯ ¯ ¯ ¯ ¯ª°¬ ¯± ¯ ° ¯±°« ¯ ª®¬­ ª ¬ «ª E ¿C ha ía pa a a za s va s d sd En java asignar valores desde el teclado. é a at b t va ab d t p ad a p j p d ta q d b s as g a va p t ad ? ¡ ¡ . // asigno el número 3 al atributo numero2 A este primer paso se le conoce como INICIALIZACIÓN La asignación es de derecha a izquierda. System. System. oCalculadora. este mensaje hace una llamada al método t a as g a s va s xp s s s d b t va ab s at b t s d s t p d dat .numero1=3. utilizamos las siguientes instrucciones. empezamos a codificar Ahora debemos hacer que este pequeño programa se puede probar en la computadora para ello debemos crear un PROGRAMA PRINCIPAL.out.numero1=10.println(oCalculadora. BufferedReader br = new BufferedReader (isr).in). caracteres. Nombre del programa principal Método main que permite definir el inicio y final del programa principal } Se envía un mensaje al objeto calculadora para que realice la suma.java y otro con la clase para el manejo del programa principal Sumar. oCalculadora.out.numero1=10.numero1=3.suma()). ° «­¯ «¯ ¯ ¯ ¯±°« ° « ± ¬ « ¬ ­ ¬ª ¬ ± ± °³® ¢£ F ¥©¨ § ¢ §¦ ¥£¤£¢ I s a ú s prender la calculadora ingresar primer número ingresar segundo número Realizar calculo Mostrar resultado Apagar la calculadora Calculadora oCalculadora = new Calculadora(). } Con esto hemos realizado un algoritmo secuencial y lo hemos codificado en Java Con lo cual tenemos al finalizar este ejercicio tendremos 2 archivos uno para guardar la clase Calculadora.suma()). Retomando el algoritmo inicial.println(oCalculadora. puedo asignar constantes literales ya sean números. // asigno el número 3 al atributo numero1 oCalculadora.numero1=10.oCalculadora. creamos los objetos para leer desde el teclado: InputStreamReader isr = new InputStreamReader (System. oCalculadora.numero1=3. oCalculadora.

parseInt(br. Con lo cual nuestro programa principal para sumar dos números ingresados desde el teclado. asignación. permite convertir una cadena en un entero.readLine().readLine()).parseInt(br.c lculos.parseInt(br. oCalculadora. quedaría como sigue: class Sumar { public static void main (String [] args) { Calculadora oCalculadora = new Calculadora(). decidimos si ejecutamos un bloque de acciones o no Mostrar datos en pantalla Conector para continuar en la misma p gina Conector para continuar en la siguiente p gina.in).parseInt(br. java proporciona una clase para realizar dicha tarea.numero1= Integer. InputStreamReader isr = new InputStreamReader (System.numero1=Integer.readLine()).suma()). oCalculadora. BufferedReader br = new BufferedReader (isr). } } D ag a a d F j : Algoritmo hecho a manera de una representación gr fica de las acciones que conforman un proceso.numero1= Integer.readLine()). System.numero2=Integer. el Integer.Luego leemos la línea ingresada br.etc Decisión . Estos diagramas utilizan una serie de símbolos con significados especiales. oCalculadora.parseInt(). esta instrucción siempre lee en forma de cadena. oCalculadora. entonces para eso deberemos convertir la cadena en tipo de dato entero. » » » » º ¹¸ · ¶ µ ´ .out.pr intln(oCalculadora. Pero tenemos un inconveniente los atributos a los cuales deseamos asignarle el valor ingresado desde el teclado es de tipo entero numero1 y numero2.readLine()). Inicio y Fin del Diagrama de Flujo Lectura de datos desde el teclado Proceso .

lo podemos expresar a manera de pseudocódigo ¼½ F ¿ÃÂ Á ¼ ÁÀ ¿½¾½¼ I s a ú s prender la calculadora ingresar primer número ingresar segundo número Realizar calculo Mostrar resultado Apagar la calculadora Inicio Numero1 Número2 Suma= Numero1 + Numero2 Suma Fin .Nuestro algoritmo inicial hecho a manera de pseudocódigo.

procedimiento o subrutina. el tipo tiene debe ser el mismo float resultado. despu s de ejecutado el m todo. este m todo solo hace uso del procesador. } Para declarar una variable local se usa la siguiente sintaxis: Tipo de dato Identificador de variable. si se modifica su valor dentro del procedimiento.S s Va ab s L a s vs At b t s Tenemos el siguiente m todo que habíamos definido para la clase calculadora. existen dos formas de pasar un par metro a un procedimiento o función: por valor por referencia do Un par metro se pasa por valor cuando se copia su contenido y si es altera su valor dentro del procedimiento no se modifica el par metro original. Quien recibe el o los par metros los utiliza para alterar su comportamiento o sus resultados al ejecutarse. Si queremos inicializarla en la misma sentencia de declaración Tipo de dato Identificador de variable = valor. float suma(){ return (numero1 + numero2). m todo. Pa á t s s ét d s Un par metro (o argumento) es una variable que es recibida por una función. // retornamos el valor de la variable } Si bien es cierto el agregar una variable m s hace que el programa sea menos eficiente por qu hago uso de la memoria. esta variable adicional nos permite un mayor control del c lculo realizado. // asignamos la suma de dos números a la variable return resultado. // declaramos o definimos una va ab // tipo que devuelve el m todo para evitar la incompatibilidad resultado=(numero1 + numero2). Í Í Î Í Î É ËÊ É Ä É Å È Î Í Î Î Î Í Î Ê Ì ÅÈ Ê Ê Ï ÊÉ ÇÄ ÊÈ ÄÏ È Í Ä É ËÊ Í Í ÄÉ ÅÈ Î Î ÇÆ Å Ä 5 ESTRUCTURAS ALGORITMICAS SECUENCIALES . En cambio cuando un par metro es pasado por referencia. En forma general. esta variable solo ser visible en el m todo la cual se la ha definido. float suma(){ a . la variable local desaparece de memoria. se ve modificada el original.

String modelo. } } Hemos quitado los atributos numero1 y numero2. float num2.num2)). char tipo. mayor flexibilidad al m todo que artir de los atributos Cuando necesitamos datos en un m todo y estos no est n disponibles a p directamente o una expresión basada en los atributos. } boolean es_positivo(float numero){ return (numero>0).suma(num1. Ø Ù Ù Ø Ø ÓÖ Ô× Ö t Ù Ö Ñ Õ Ô Ò ÔÐ Ô Ó Ò Ñ Ð Ù Ù s? estamos .¿E q é as s s s ta sa pa á Si NO tenemos las variables disponibles como atributos del objeto Si NO se pueden obtener como un c lculo de los atributos Si los valores se pueden obtener ingresando datos del teclado o de otros m todo. System. entonces ahora si queremos sumar dos números tendremos que pasarlos como parámetros al método suma porque no los tenemos disponibles como atributos.out. entonces vamos a necesitar par metros para que el m todo pueda obtener datos que provienen del teclado o de otro m todo. boolean prendida. Calculadora oCalculadora = new Calculadora().println(oCalculadora. float suma(float numero1. Si es necesario darle programando. } } // fin de clase Para el caso de inicializar valores dentro del programa class Sumar { public static void main (String [] args) { float num1. float numero2){ return (numero1 + numero2). // inicializamos las variables locales num2=10. num1=3. Por ejemplo vamos a redefinir nuestra clase calculadora como sigue: class Calculadora { //inicio String marca.

num1= Integer.out. char sexo. en el mismo momento en que estamos instanci ndolo. String direccion. Estos m todos Tienen la particularidad que se llaman igual que la clase y no retorna ningún tipo de dato. BufferedReader br = new BufferedReader (isr). Veamos algunos ejemplos class Persona { String nombre. String apellido_materno.num2). String web. } } E s d pa á t sg a ás Es importante recordar que en java.suma(num1. String apellido_paterno. System.in). String ruc. String dni. los parametros de los tipos primitivos (int. etc.readLine()).Para el caso de ingresar los valores desde el teclado class Sumar { public static void main (String [] args) { float num1. á êâê ê åâé ç æåèå äæ åç æ å ä ãâ x b dad ßÝÚ ÛÞÝ ÜÚÛ Ú Ú à à . Calculadora oCalculadora = new Calculadora(). num2= Integer. String email. float respuesta. String telefono.parseInt(br.parseInt(br. InputStreamReader isr = new InputStreamReader (System. Los objetos y arrays se pasan por referencia Mét d s st t s Los m todos constructores son tipos especiales de una clase que nos permiten inicializar los atributos de un objeto. float num2.) SIEMPRE se pasan por valor. respuesta= oCalculadora.println(respuesta).readLine()). long.

sexo=psexo. // este constructor inicializa los valores en blanco Persona oPersona = new persona ( Juan . email= . web= . fecha_nacimiento= . ì ë ë ë . dni= . apellido_paterno= . Perez . } String cual_es_tu_apellidoMat(){ return apellido_materno.String fecha_nacimiento. } String cual_es_tu_nombre(){ return nombre. sexo= H . Persona(){// m todo constructor nombre= . tel fono= . dirección= . // instanciamos y le damos // valores a los atributos considerados. } String cual_es_tu_edad(){ Retornar edad. char psexo){ //sobrecarga de //m todo constructor nombre=pnombre. l Persona oPersona = new Persona(). apellido_materno= . } Persona (String pnombre. } String cual_es_tu_apellidoPat(){ return apellido_paterno. String pmaterno. String ppaterno. apellido_paterno=ppaterno. boolean casada. } } Entonces ahora cuando instanciamos un objeto persona se ejecutar e primer constructor. apellido_materno=pmaterno. ruc= . H ). casada=false. Gonzales .

Modelo. Ahora usaremos la clase Auto class Auto{ private private private private private private private String String byte int String boolean short Marca. Por lo general los atributos siempre serán privados y los métodos públicos. se creaba la estructura de la clase en la memoria.Persona oPersona = new persona ( Caroll .atributo y para acceder a un método de la clase usábamos objeto. existe otra forma de acceso conocido como pri ado el cual incorpora mayor seguridad a los datos de un objeto. Hernández . kilometraje. short Acelerar(){ return (velocidad + 1). descapotable. a este tipo de acceso se le conoce como acceso p lico. ï ïî ï ðò ð ð ïî ñ í .metodo(). pero existen ciertos contextosen donde esto deja de ser válido. Como logramos configurar un acceso privado a los atributos de un objeto. } short Frenar(){ return (velocidad } 1). sin embargo. Obando . numPuertas. usábamos la forma general objeto. placa. cceso p lico y pri ado a los atri utos Ya hab amos visto que cuando instanciábamos una clase para crear un objeto. También vimos que para poder acceder a un atributo de una clase.M ). pues es muy sencillo usaremos la palabra reservada pr ate delante de cada atri uto. velocidad.

String get_Marca() { Return Marca.marca= Toyota . Si yo quisiera asignarle un valor al atributo marca y hago lo siguiente: oAuto. entonces ahora cuando queramos asignarle una marca a algún objeto instanciado. } short Apagar(){ return } } 0. antes solo bastaba con poner la instrucción oAuto.set_marca( Toyota ). pero ahora que est como privado ya NO es posible. } õ ó õ ö ö õ ô ô ô ô ô õ . haremos lo siguiente: oAuto. ¿Entonces. Bueno para poder usar un objeto Auto tenemos que instanciarlo Entonces Auto oAuto = new Auto(). } Este m todo debe añadirse a la clase que hemos definido previamente. Cómo hacemos para asignarle un valor a ese atributo privado Pues tendremos que definir un m todo público que permita asignarle un valor a dicho atributo Por ejemplo: Este método no devuelve ningún valor por lo tanto devuelve vacío o para lo cual java usa la palabra reservada void void set_marca(String pMarca){ Marca=pMarca.short Prender(){ return 1. a estos m todos se le conocen como mét d s SET. Ahora lo mismo sucedería si quiero recuperar el valor que est contenido en alguno de los atributos. An logamente se deben crear m todos para cada atributo que permitan la asignación de valores. entonces es necesario crear un m todo que me permita recuperar el valor de ese atributo.Marca y podíamos recuperar cu l es la marca del objeto oAuto. esto es incorrecto por que el acceso a ese atributo ha sido definido como privado.

get_Marca()). descapotable.Entonces si yo quisiera mostrar en pantalla la marca del objeto oAuto tendría que poner la siguiente sentencia System. } short Frenar(){ return (velocidad 1). short Acelerar(){ return (velocidad + 1). parar poder recuperar ese dato del objeto. placa.out. velocidad.println(oAuto. Entonces agregando los dos m todos el Set y Get en la clase class Auto{ private String private String private byte private int private String private boolean private short Marca. kilometraje. } // agregamos los 2 m todos definidos void set_marca(String pMarca){ Marca=pMarca. } short Prender(){ return 1. numPuertas. } short Apagar(){ return 0. } String get_Marca() { Return Marca. } } ÷ ÷ . Modelo.

sino). La representación de una estructura selectiva se hace con palabras en pseudocódigo (if. la porción lógica da a la computadora la capacidad de tomar decisiones. Si A es mayor que B. si <condición> entonces <acción S1> fin_si .Sesión 6 Estructuras Selectivas La unidad aritmética y lógica es uno de los componentes más importantes de una computadora típica. Las condiciones se especifican usando expresiones lógicas. por otro lado. si B es mayor que A. else o bien en español si. Suponga que tiene dos variables numéricas. debe imprimir el valor de A. que tienen valores diferentes. En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. El propósito de la unidad aritmética es el manejo de las operaciones aritméticas. Esta estructura se representa mediante el diagrama siguiente Las estructuras selectivas se utilizan para tomar decisiones lógicas. la que permitirá la selección de acciones alternativas. La elección de que alternativa tomar depende de la decisión de si la variable A es o no mayor que B. y suponga que desea imprimir el valor de la mayor. Esto forma la base de la construcción si-entonces-de lo contrario (if-else). pero. denominadas A y B. con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular. debe imprimirse el valor de B. de ahí que se suelan denominar también estructuras de decisión o alternativas. Una decisión se especifica en una expresión lógica de la misma forma en que una operación de cálculo se especifica en una expresión numérica.

leer numero1. InputStreamReader isr = new InputStreamReader (System. Fin Calculadora ocalc = new Calculadora(). if (resta<0) System. class Restar_numeros { public static void main(String [] args){ Calculadora ocalc = new Calculadora(). si <condición>entonces <acción S1> sino <acción S2> fin_si Hacer el algoritmo para escribir un programa que permita que la calculadora reste dos números y nos muestre por pantalla si la resta fue positiva o negativa Inicio prender la calculadora.out. float numero1. numero1=Integer. resta= ocalc.in).println( Es positiva ).parseInt(br. Si (la resta es menor que cero) Mostrar Es positiva . numero2= Integer. y si es falsa.restar(numero1. float numero2. Sino Mostrar Es negativa . restar los números. else System.readline()).readline()).parseInt(br. se ejecuta la acción S1. leer numero2.out.println( Es negativa ). Si la condición C es verdadera. .numero2). BufferedReader br = new BufferedReader (isr).Alternativa doble (si-entonces-sino/if-then-else) La estructura anterior es muy limitada y normalmente se necesitará una estructura que permita elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. se ejecuta la acción S2.

BufferedReader br = new BufferedReader (isr).out. Ejemplo 12015 segundos es equivalente a 3 horas. class Pelicula { byte numero_personas.float numero1. float resta. else return 0. float numero2.out.parseInt(br.5. else System. } } Hacer un algoritmo para un programa que convierta un número mayor de 10000.numero2).parseInt(br. float costo_pelicula(){ if (numero_personas<8) return 1. dado en segundos a horas minutos y segundos.restar(numero1. resta= ocalc. if (resta<0) System. 20 minutos.in). numero2= Integer. InputStreamReader isr = new InputStreamReader (System. numero1=Integer.println( Es negativa ).5.readline()).5 soles por persona. } } Hacer un algoritmo para un programa que calcule el pago que hacen un grupo de personas para ver una película teniendo en cuenta que si el grupo es menor de 8 personas el pago es de 1.5 soles por persona y para grupos de 8 personas o más el pago es 0.readline()). 15 segundos 1) Definir la clase: Convertir_segundos 2) Análisis del problema .println( Es positiva ).

prívate long horas. ocv. void convierte(){ // este método no devuelve ningún valor . System. los ex soldados pagan 30 soles por curso en el que se matriculen.numero + Equivale a + ocv. Minutos=(Numero-Horas*3600)/60. Horas + ocv.out. + ocv. solo actualiza los valores de los // atributos Horas=Numero/3600. mientras que los demás (regulares).numero= Long. } } De los estudiantes que se matriculan en la UNAT-A. long minutos. Diseñe el algoritmo para escribir un programa en el que el usuario introduce los datos del estudiante (ex soldado o regular) y el número de cursos y las salidas sean la categoría del estudiante (ex soldado o regular). InputStreamReader isr = new InputStreamReader (System. pagan 50 soles por curso.readline()).parseLong(br.horas + . .segundos + Segundos ). número de cursos y los costos totales por los cursos a llevar.Entradas Numero la entrada dede ser inicializada ya sea por teclado o dentro del programa Salida Horas Minutos Segundos Proceso Horas=Numero/3600 Minutos=(Numero-Horas*3600)/60 Segundos=Numero-Minutos*60 class Convertir_segundos { private long numero. } } class Principal { public static void main(String [] args){ Convertir_segundos ocv = new Convertir_segundos(). long segundos.convierte().in). ocv. Segundos=Numero-Minutos*60. BufferedReader br = new BufferedReader (isr).minutos + Minutos .println( El número : + ocv.

int calcula_costo(){ if (tipo_de_estudiante== E ) pago=30. ø . Costo_total=pago*numero_cursos. 3) Diseñar la clase UNAT Inicio carácter tipo_de_estudiante. return (pago*numero_cursos). } } Retornar(pago*numero_cursos). byte pago. Fin Fin class UNAT_principal { public static void main(String [] args){ UNAT ounat = new UNAT(). entero calcula_costo() Inicio Si tipo_de_estudiante es ex soldado entonces Pago=30.1) Definimos la clase UNAT 2) Análisis del problema Entradas Carácter Tipo_de_estudiante entero numero_cursos Salidas Entero pago entero costo_total Proceso Si tipo_de_estudiante es ex soldado entonces Pago=30.in). byte numero_cursos. Class UNAT { char tipo_de_estudiante. Caso contrario Pago=50. Caso contrario Pago=50. else pago=50. entero numero_cursos. entero pago. InputStreamReader isr = new InputStreamReader (System.

charAt(0). Los varones menores de 25 años pagan los precios más altos.readLine(). 3) Diseñar y codificar clase Agencia_seguros Inicio Carácter sexo. } } Selectivas Anidadas En la ciudad de Chachapoyas. .// leemos un caracter ounat.tipo_de_estudiante=br. mientras que las mujeres de 21 años o más pagan 500 soles. Sino Pago=700. Los hombres de 25 años o más años pagan 700 soles. una agencia de seguros para automóviles asigna costos basados en el sexo y la edad del conductor. class Agencia_seguros{ char sexo. short edad. Las mu jeres de menos de 21 años pagan 800 soles.calcula_pago().BufferedReader br = new BufferedReader (isr). ounat. 1000 soles. Escribir el algoritmo y el programa que imprima la edad del conductor.out. Sino // si es mujer Si (edad<21) Pago=800. calcula_costo()). System. Sino Pago=500. sexo. y el pago correspondiente para los clientes de la aseguradora 1) Definimos la clase: Agencia_seguros 2) Análisis del problema Entradas Carácter Sexo entero edad Salidas Entero pago Proceso Si (sexo es hombre) Si (edad < 25) Pago =1000.println(ounat.

parseShort(br.println(oagencia. Sino Pago=700.readLine(). else if (edad<21) pago=800.out. InputStreamReader isr = new InputStreamReader (System.sexo=br.entero edad. entero pago. System.calcula_pago(). Si el número es cero (0 CERO). BufferedReader br = new BufferedReader (isr).in). Sino Pago=500.pago). 1) Definimos la clase: Numero 2) Análisis del problema Entradas Entero num Salidas Cadena Mensaje Proceso .charAt(0). vacío calcula_pago () Inicio Si (sexo es hombre) Si (edad < 25) Pago =1000.readLine()). void calcula_pago (){ if (sexo== H ) if (edad<25) pago=1000. Sino // si es mujer Si (edad<21) Pago=800.edad= Short. fin Fin short pago. Si es negativo debe escribirse el número y junto a el negativo (-5 NEGATIVO). else pago=700. Si el número es positivo debe escribirse el número y junto a el positivo (15 POSITIVO). } } Sesión 7 Selectivas Múltiples Escribir el algoritmo y programa que solicita se le ingrese un número. oagencia. else pago=500. oagencia. oagencia. } } class Agencia_seguros_principal { public static void main(String [] args){ Agencia_seguros oagencia = new Agencia_seguros().

System.println( Ingresa el número ).Si numero es mayor que cero entonces mostrar ( + numero + POSITIVO) Si numero es cero entonces mostrar ( + numero + CERO) Si numero es menor que cero entonces mostrar ( + numero + NEGATIVO 3) Diseñar la clase Numero Inicio entero numero.in). if (numero==0) mensaje= ( + numero + CERO) .mensaje). } } . void obtener_mensaje(){ if (numero>0) mensaje = ( + numero + POSITIVO) .parseShort(br. onum. BufferedReader br = new BufferedReader (isr).out.num= Short. } } class Numero_principal { public static void main(String [] args){ Numero onum = new Numero(). String mensaje.println(onum. if (numero<0) mensaje= ( + numero + NEGATIVO . vacio obtener_mensaje() Inicio Si numero es mayor que cero entonces mensaje = ( + numero + POSITIVO) Si numero es cero entonces mensaje= ( + numero + CERO) Si numero es menor que cero entonces mensaje= ( + numero + NEGATIVO Fin Fin class Numero{ short num.out. System.obtener_mensaje(). InputStreamReader isr = new InputStreamReader (System.readLine()). onum. cadena mensaje.

out..println( El nombre del día es : + odia. Martes .readLine()). 2. Lunes . Lunes . void dame_nombre_dia(){ if (num_dia== 1) nombre_dia= if (num_dia==2) nombre_dia= if (num_dia== 3) nombre_dia= if (num_dia==4) nombre_dia= if (num_dia== 5) nombre_dia= class Dia_semana _principal { public static void main(String [] args){ Dia_semana odia = new Dia_semana(). String nombre_dia.num_dia=Byte.. vacio dame_nombre_dia() Inicio si num_dia es 1 entonces nombre_dia= si num_dia es 2 entonces nombre_dia= si num_dia es 3 entonces nombre_dia= si num_dia es 4 entonces nombre_dia= si num_dia es 5 entonces nombre_dia= si num_dia es 6 entonces nombre_dia= si num_dia es 7 entonces nombre_dia= Fin fin 4) Codificación de la clase lunes martes miércoles jueves viernes sábado Domingo lunes martes miércoles jueves viernes sábado Domingo class Dia_semana{ byte num_dia. 1) Definición de clase: Dia_semana 2) Análisis del problema Entrada entero num_dia Salida cadena nombre_dia Proceso si num_dia es 1 entonces nombre_dia= si num_dia es 2 entonces nombre_dia= si num_dia es 3 entonces nombre_dia= si num_dia es 4 entonces nombre_dia= si num_dia es 5 entonces nombre_dia= si num_dia es 6 entonces nombre_dia= si num_dia es 7 entonces nombre_dia= 3) Diseño de la clase Dia_semana Inicio entero num_dia. martes.7) para (lunes..dame_nombre_dia(). .Hacer un algoritmo y un programa que devuelva el nombre del día de la semana siguiendo un orden de correspondencia (1. System. Lunes . Martes . InputStreamReader isr = new InputStreamReader (System. domingo) respectivamente. odia. 3..in).parseByte(br. cadena nombre_dia. odia. miércoles. BufferedReader br = new BufferedReader (isr).nombre_dia).

break.if (num_dia==6) nombre_dia= Martes .El valor de la altura de un triángulo dada la base y el área. if (num_dia==7) nombre_dia= Martes . } } } } } Hacer el algoritmo y programa que calcule: .El valor de la base de un triángulo dada la altura y el área.break.El valor del área de un triángulo.break. case 6: nombre_dia= Martes .break. case 2: nombre_dia= Martes . case 4: nombre_dia= Martes . default: nombre_dia= No existe .break. case 3: nombre_dia= Lunes . void dame_nombre_dia(){ switch (num_dia) { case 1: nombre_dia= Lunes . dada la base y la altura. } } class Dia_semana{ byte num_dia.break. 1) Definimos la clase: Triangulo 2) Análisis del problema: Entradas carácter tipo_calculo real base real altura real area Salidas Real valor Proceso Si (tipo_calculo es a ) entonces Inicio area= base*altura/2 valor=area Fin si (tipo_calculo es b ) entonces Inicio . case 7: nombre_dia= Martes . . . String nombre_dia. case 5: nombre_dia= Lunes .break.

Fin si (tipo_calculo es h ) entonces Inicio altura =area*2/base valor=altura fin 4) Diseño de la clase Triangulo Inicio carácter tipo_calculo real base real altura real valor vacio calcular_valor() Inicio Si (tipo_calculo es a ) entonces Inicio area= base*altura/2 valor=area Fin si (tipo_calculo es b ) entonces Inicio base = area*2/altura valor=base. float altura.base = area*2/altura valor=base. Fin si (tipo_calculo es h ) entonces Inicio altura =area*2/base valor=altura fin fin calcular_valor fin Triangulo 5) Codificar clase y programa principal class Triangulo{ char tipo_calculo. float base. class Triangulo_principal{ public static void main(String [] args){ } .

break. void calcular_valor(){ switch (tipo_calculo){ case a : {area=base*altura/2.} case b : { base = area*2/altura .break. float valor.float area.valor=altura.} } } } } .valor=base.break.valor=area.} case h : { altura =area*2/base .

llamada el cuerpo del bucle. el bucle continúa mientras la condición es verdadera (la . sueldo = sueldo + aumento. se conocen como Iterativas. Cuando se hace falsa. finaliza la repetición. si es cierta. contador = contador +1. // contador ahora es 4 contador=15. y si todavía es cierta se ejecuta de nuevo el cuerpo.Sesión 8 Estructuras Algorítmicas Repetitivas Contador Un contador es una variable cuyo valor se puede incrementar o decrementar. se ejecuta la instrucción especificada. en el primero. La estructura While (condición) { } y la estructura do { } while (condición). La diferencia entre ambas es que la condición se sitúa al principio o al final de la secuencia de instrucciones. Por ejemplo byte contador. Aumento=200. // contador ahora es 14 También puede expresarse de la sgte manera: contador++. // sueldo ahora es 1200 sueldo=sueldo+aumento. int aumento. En la lección anterior iniciamos con las estructuras repetitivas. contador--. Entonces. Sueldo=1000. Entonces se vuelve a evaluar la expresión booleana. Este proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta. contador=3. contador=contador-1. contador-=1. contador+=1.//sueldo ahora es 1400 Estructuras Repetitivas Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera. Se evalúa la expresión booleana y. Se usan cuando NO se conoce con anticipación el número de veces que se ejecutará la acción. Acumuladores Las variables acumuladoras tienen la misión de almacenar resultados int sueldo.

es decir. no realizar ninguna iteración en el bucle. para llevar la cuenta de las veces que entramos al cuerpo del ciclo. para diferenciarla de las dos anteriores. Las estructuras Mientras y Para/Desde suelen en ciertos casos. También es importante notar que esta variable se inicializa antes de entrar al cuerpo del ciclo y dentro del cuerpo se incrementa en una cantidad constante. mientras que Repetir ejecutará el bucle al menos una vez. cuando se cumple la condición. se ejecutará al menos una vez). que se necesita una variable contadora (un índice). La estructura Desde/Para suele utilizarse cuando se conoce con anterioridad el número de veces que se ejecutará la acción y se le conoce como Estructura Repetitiva en lugar de iterativa. por lo general en uno. Esta variable a la vez. nos sirve para compararla con el valor dado en la condición. Representación pseudocodificada: Mientras <condición> Acciones Fin_mientras En Java While (condición){ } . el bucle continúa hasta que la condición se hace verdadera (la condición se comprueba después de ejecutar la acción.cual se comprueba antes de ejecutar la acción) y en el segundo. Observa en el flujograma. se sale del ciclo.

Hoy lo haremos con la estructura Mientras.EJEMPLO: Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado. Que tendremos de diferente? Se llama REPETIR / PARA a la estructura algorítmica que se ejecuta un número definido de veces hasta que la condición se torna verdadera: . Solución. Como recordarás. resolvimos este ejercicio en la lección anterior pero utilizando la estructura Desde.

Esto quiere decir. A diferencia de la estructura Mientras. .Representación pseudocodificada : Para i=1 hasta N Acciones Fin para for (i=1. ahora utilizando la estructura Repetir. Solución.¿Podrás decir cuál será ahora la diferencia? Las reglas para construcción de esta estructura usando Repetir. que en e sta estructura el bucle se realizará por lo menos una vez. nos dicen que debemos declarar una variable contador que debe inicializarse antes del ciclo e incrementarse dentro del ciclo. la condición ahora estará colocada al final del bucle para que primero ejecutamos la instrucción y luego preguntamos si la condición se cumple. porque el bucle se repite hasta que la condición se cumpla.i++){ } EJEMPLO: Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado. En el bucle Mientras. la condición se evaluaba mientras era cierta.i<=N. También podrás observar que la condición está al revés. Nuevamente resolveremos el ejercicio de las dos lecciones anteriores.

.

else if ((this. import java.Sesión 9 Ejercicios de Estructuras Repetitivas .readLine().//actualizamos el saldo else System. boolean conSaldo=true. final short monto_maximo=1500. El saldo con el que cuenta el cliente en su cuenta.println("Máximo de retiro 1500"). } } } catch (IOException ex) { System. // constante que limita el monto de retiro // 2) Definimos las salidas del programa float saldo=3000. se inicializará dentro del programa.out.charAt(0). dni y el monto a retirar.*.println("Desea realizar una transacción"). import java. BufferedReader br = new BufferedReader(isr).monto_transaccion.println("Error en el ingreso de Datos"). if (this.monto_transaccion>1500) System. Si ya no tiene saldo en su cuenta también terminará la transacción. null. char rpta = br. } } } .out.in).util. System.logging.println("Ingrese el monto a retirar"). quiere sacar dinero del cajero automático.util. if (saldo<=0) conSaldo=false. para poder realizar el retiro de dinero. Si la respuesta es N.Level. Logger. 1500. se sabe que no se puede retirar más de S/.println("El monto de transacción debe ser menor al saldo").getName()).monto_transaccion)>=0) this. Se pide hacer un programa en java. El cajero siempre pregunta Si desea realizar otra transacción o No. while(rpta!='N'&& rpta!='n'&& conSaldo){ System.parseFloat(br. Todo retiro disminuye el saldo de su cuenta.getLogger(Cajero. El cajero pedirá su clave.out.out. terminará la transacción.Logger.charAt(0).out. float monto_transaccion. String dni="19674473".SEVERE.readLine()).saldo-=this.Mientras Un cliente del banco de crédito. rpta = br.readLine().println("Desea realizar una transacción"). que simule el trabajo de un cajero automático.out. public class Cajero { // 1) definimos las entradas al programa String clave="1234". import java.class. this. si la respuesta es si continuará haciendo retiros. if (conSaldo){ System. ex).saldo-this.log(Level.monto_transaccion=Float.logging.io. // 3) Proceso void transacción(){ try { InputStreamReader isr = new InputStreamReader(System.

} public String getDni() { return dni. // retornamos código que indica operación exitosa } else return -1.monto_maximo) return 0.//actualizamos saldo return 1. } public void setDni(String dni) { this.clave)) return true. } public void setMonto_maximo(short monto_maximo) { this. byte retirar(){ if (monto_transaccion>this.monto_maximo = monto_maximo.saldo = saldo. else return false. } public void setSaldo(float saldo) { this. } public void setMonto_transaccion(float monto_transaccion) { this. private String dni = "19674473". } boolean esDni(String pDni){ if (pDni. } public void setClave(String clave) { this. if (monto_transaccion<saldo) { saldo-=monto_transaccion. //retornamos código de error } boolean esClave(String pClave){ if (pClave. } public String getClave() { return clave.Segunda Versión public class Cajero1 { private String clave="1234".io.*. public class Cajero1_principal { . private float monto_transaccion.dni)) return true.equalsIgnoreCase(this. } public short getMonto_maximo() { return monto_maximo. else return false.clave = clave. private short monto_maximo = 1500. } } import java.// constante que limita el monto de retiro // 2) Definimos e inicializamos las salidas del programa private float saldo = 3000.dni = dni. } public float getSaldo() { return saldo.equalsIgnoreCase(this. } public float getMonto_transaccion() { return monto_transaccion.monto_transaccion = monto_transaccion.

public class Nota { private byte nota. if (ocaj1. BufferedReader br = new BufferedReader(isr).out.out. InputStreamReader isr = new InputStreamReader(System.println("Ingrese la clave"). private float promedio.println("Error de entrada y salida" + ex. if (ocaj1.out. System.println("Ingrese el monto a retirar").out.parseFloat(br.in).out.public static void main (String [] args){ try{ Cajero1 ocaj1 = new Cajero1(). } } } Desarrollar un programa en java que al ingresar n notas de un curso y el peso de cada una pueda calcular el promedio ponderado del alumno. private short suma_nota. private byte peso. private byte numero_de_notas. } catch(IOException ex){ System.retirar()!=1) System.print("Ingrese Clave : "). Nota(){ .readLine())) { System.println("Clave Incorrecta"). } else System.esDni(br. ocaj1. } else System.println("DNI incorrecto").setMonto_transaccion(Float.out.println("Error en el retiro").getMessage()).readLine())).out.readLine())){ System.esClave(br. if (ocaj1.

} public byte getPeso() { return peso. peso=0. } void calcula_suma_nota(){ suma_nota+=nota*peso.nota=0. } .suma_nota = suma_nota. } public void setSuma_nota(short suma_nota) { this. numero_de_notas=0. suma_nota=0. promedio=0. } public void setPeso(byte peso) { this. } void incrementa_numero_notas(){ numero_de_notas++.peso = peso. } public short getSuma_nota() { return suma_nota. } public byte getNota() { return nota. } void calcula_promedio(){ promedio=suma_nota/numero_de_notas. } public void setNota(byte nota) { this.nota = nota.

public float getPromedio() { return promedio.numero_de_notas = numero_de_notas. Si se ingresa Cero el programa deberá terminar y mostrar el reporte de negativos impares y positivos.promedio = promedio. } public void setNumero_de_notas(byte numero_de_notas) { this. } } Desarrollar un programa para leer una cantidad indeterminada de números y cuente cuántos son positivos y cuántos negativos impares. } static boolean es_par(int pnum){ return ((pnum%2==0?true:false)). public class Numero { static boolean es_positivo(int pnum){ return (pnum>0). } public byte getNumero_de_notas() { return numero_de_notas. } public void setPromedio(float promedio) { this. } } .

. } } Hacer un programa que ingrese los sueldos de 234 trabajadores y calcules el promedio de sueldo.Sesión 10 Ejercicios de Estructuras Repetitivas . Para i=1 hasta max_trabajador hacer Leer sueldo Total_sueldo+=sueldo.sumar_impares(). System. // incrementar el sueldo Fin para Promedio=total_sueldo/max_trabajador.out. Fin para Mostrar suma.i++) if (i%2!=0) suma+=I. Class Mostrar_impares{ static long suma.println(Mostrar_impares. Promedio=0.Para Hacer un programa que sume los primeros 1000 números impares Suma=0.suma). static void sumar_impares(){ for (short i=1 . Constante max_trabajador. i<=1000. Para i=1 hasta 1000 hacer Si i es impar entonces suma+=i. } } class mostrar_impares_principal{ Public static void main(String [] args){ Mostrar_impares.

io.public class Trabajador { private String nombre="".0f. }catch(IOException ex){ System. } static float sueldo_promedio(short num){ return total_sueldo/num. static float total_sueldo=0. try { InputStreamReader isr = new InputStreamRead er(System. } }} .sueldo_promedio(numTrabajadores)). otrab. i<= numTrabajadores .out. } void setnombre(String pnombre){ nombre=pnombre.println("El sueldo promedio es : " + Trabajador. i++){ Trabajador otrab = new Trabajador(). for (short i =1 .*. } void setsueldo(float psueldo){ sueldo=psueldo. otrab. private float sueldo=0. void incrementar_total_sueldo(){ total_sueldo+=sueldo. } static float getsueldo(){ return total_sueldo.setsueldo(Float. } System.out.readLine())).0f.in).readLine()).println("Error en programa principal " + ex. public class Trabajador_Principal { public static void main(String [] args){ final short numTrabajadores=234.parseFloat(br.setnombre(br. BufferedReader br = new BufferedReader (isr). } } import java.getMessage()).incrementar_total_sueldo(). otrab.

el programa deberá mostrar la temperatura promedio y la temperatura más alta y más baja del día. diseñe y codifique un programa para calcular el resultado de la siguiente función: 3*Y + 36 Y4 10 Y15 + Y10 . Los componentes hacen referencia a los elementos que forman el arreglo. a los valores que se almacenan en cada una de las casillas del mismo. Así se distinguen 2 partes en los arrelgos: Los componentes Los índices Las posiciones determinadas por un índice. El arreglo que se muestra arriba es de longitud 12.Ejercicios Diseñar y codificar un programa que reciba como entrada 24 números reales que representen las temperaturas del exterior en un periodo de 24 horas. es decir. .4 1 0. comienzan desde cero de izquierda a derecha. pero las posiciones van de 0 a 11. homogénea y ordenada de elementos. Dados N valores de Y.09 Componente Los arreglos tienen la característica que pueden almacenar a N elementos del mismo tipo y además permite el acceso a cada uno de estos elementos. Índice 0 13.1 0 Si Si Si Si 0 < Y <=11 11 < Y <=33 33 < Y <=64 para cualquier otro valor de Y Sesión 11 Arreglos Unidimensionales Definición de Arreglo Un arreglo se define como una colección finita.3 Elemento 11 -234. los componentes son las celdas que apuntan a los elementos. el cual es entero.

Una de las características que hacen de Java un entorno de programación seguro. el tipo de datos del arreglo (int[] en este caso) es una clase y cada una de sus instancias debe ser creada explícitamente. y los objetos deben ser creados mediante el operador new. i++) lista_booleanos[i] =true. Por ejemplo vamos a inicializar diferentes tipos de arreglos: boolean [] lista_booleanos = new boolean[20]. i<lista_booleanos. O sea. i++) lista_booleanos[i] =true. Este comportamiento debe comprenderse de esta forma: en Java todo es un objeto. El caso de los arreglos no es diferente. Para asignar un valor determinado a una posición determinada del arreglo anterior. tipo nombre_array[]={valores}.Declaración de Arreglos en JAVA Los arreglos en Java son dinámicos. // boolean lista_booleanos [] = new boolean[20]. Es importante notar que el arreglo aún no ha sido creado. una asignación de este tipo generará una excepción: ArrInt[25] = 1.length. y que se relaciona con el manejo de los arreglos es que el lenguaje no permite la indexación de arreglos fuera de rango. Para crear el arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador new: Arreglo_enteros = new int[10]. pero no extensibles. Asignación de valores a un Arreglo La asignación de valores a un arreglo es de acuerdo al índice y considerando la longitud del mismo. sino meramente declarado. un arreglo de números enteros utilizaremos la siguiente sentencia: int[] arreglo_enteros. // por que el índice 25 no existe . por ejemplo asignar false al componente 17 del arreglo Lista_booleanos[16]=false. Un arreglo se declara de la siguiente forma: <tipo>[] <nombre>. no se definió de esa manera Otra forma de declararlos es la siguiente: UNIDIMENSIONALES: tipo nombre_array[]=new tipo[nº]. o sea. para declarar. por ejemplo. . for(byte i =0. i<=19. for(byte i =0. lo cual significa que deben ser creados con el tamaño que tendrán hasta el final de su vida. el tamaño puede pensarse como un parámetro al constructor de la clase.

tfah.3 . .34 . 12.Int [] lista_enteros = new int [400]. indice<400. for(byte índice=0. for(short indice=0.6 .índice++) System. índice++) { tcenti =lista_temperaturas[indice].length. tcenti=0. 20. lista_enteros[345] =13.println(lista_temperatura[indice]).legth.19.out. 15.4.0f. 12.0f. 11 . // asignamos el nuevo valor convertido a grados } for (índice=0. índice<lista_temperaturas. 8. indice<lista_enteros.6} float tcenti. for(short indice=0. indice++) lista_enteros[indice]= 3. indice++) lista_enteros[indice]= 3. 12. tfah=0.length . lista_temperaturas[indice]=tfah. // asignamos al componente 346 el valor 13 Recuperación de elementos de un arreglo tenemos el siguiente arreglo de temperaturas en ºC debemos convertirlo a ºF: float [] lista_temperaturas = {10. 12. // recuperamos el elemento ubicado en indice tfah = tcenti *9 /5 +32.índice<lista_temperaturas.

SESIÓN 12 ARREGLOS BIDIMENSIONALES .

.

.

l = 2.k. i < n. int i. // 4 x 3 int[][] B = {{1.6.int[][] A = {{2.3. } } for(i = 0. i++) { for(j = 0.5.{4.{2. j++) { for(k = 0. j < l.8}.suma.j.8}}.4.3}. i++) { for(j = 0. m = 3. j< l. k < m. j++) { . int[][] C = new int[n][l].7}. k++) { suma = suma + A[i][k] * B[k][j].8}}. } C[i][j]= suma.8. for(i = 0.{9.5.4}. // 3 x 2 int n = 4. i < n.{7. suma = 0.

} } Hasta ahora hemos visto arreglos unidimensionales y bidimensionales. Aquí hemos creado 2 × 3 × 6 elementos de tipo char.System. Aquí hemos creado 2 × 2 × 2 × 2 elementos de tipo int. .print(C[i][j]+ " ").out. 4 o 5 dimensiones. Por ejemplo: char[][][] A = new char[2][3][6]. int[][][][] B = new int[2][2][2][2]. podemos tener arreglos con las dimensiones que uno desee. Sin embargo. Por ejemplo. podemos tener arreglos de 3.

. cursos[2] = c1. para obtener los cré ditos del curso con índice 1. Después de que creamos un arreglo de objetos y asignamos ciertos objetos a cada componente. Tal como definíamos arreglos para tipos simples en JAVA podemos hacer arreglos de objetos. La clase Alumno debería contener un arreglo de objetos Cursos. 10).Creditos(). Dado que por ejemplo cursos[1] es un objeto de la clase Curso podemos hacer cursos[1]. } public String Sigla(){ return sigla. class Curso { private String sigla. podemos usar los métodos/atributos de cada objeto tal como un objeto cualquiera. 15). cursos[0] = c1. Ahora podríamos a cada curso[i] asignarle un objeto de tipo curso. private int creditos. } public int Creditos(){ return creditos. o uno nuevo Curso c1 = new Curso("ing1310".} } Supongamos queremos tener una clase Alumno a la que podamos asignarle varios objetos de tipo Curso. para crear un arreglo llamado cursos de 5 (referencias a) cursos debemos hacer: Curso[] cursos = new Curso[5]. public Curso(String sig. int cred) { sigla = sig.SESIÓN13 ARREGLOS DE OBJETOS Suponga que tenemos la siguiente simple clase para representar cursos. creditos = cred. ya sea uno previamente creado. Por ejemplo. cursos[1] = new Curso("ing1320".

y cantidadCursos representa la cantidad de cursos que actualmente tiene as ignado el alumno.Creditos()). private int cantidadCursos. y false en otro caso.Creditos()). qué imprime este trozo de código? System..println(cursos[0]. System.println(cursos[1]. maximaCantidadCursos = 6. . Ahora podriamos tener una clase Alumno como la siguiente: class Alumno { String nombre. previamente asignado al alumno (este método es difícil porque se debe mantener la consistencia interior del objeto). public Alumno(String nom) { nombre = nom. public void EliminaCurso(Curso c) para eliminar un curso particular. } .Siguiendo el ejemplo anterior.Creditos()). Ejercicio: complete la clase Alumno con los siguientes métodos: public boolean TieneCurso(Curso c) que entrega true si el alumno ya tiene asignado un curso en particular.out. public void ImprimeListaCursos() para imprimir una lista de toda la info de los cursos asignados al alumno. } Donde maximaCantidadCursos indica la máxima cantidad permitida de cursos que puede tener asignado un alumno. private int maximaCantidadCursos. private Curso[] cursos. public int CantidadTotalCreditos() que entrega la cantidad total de créditos del alumno.. System. cantidadCursos = 0.out.out. cursos = new Curso[maximaCantidadCursos]. public void AsignaCurso(Curso c) para asignar un nuevo curso al alumno..println(cursos[2].

para que se ejecute por defecto el laboratorio que estamos trabajando actualmente .Creamos un nuevo proyecto. opción Archivo / Proyecto Nuevo Seleccionamos categorías Java y luego Aplicación Java en Proyectos C eamos nuest o p imero proyecto como Laboratorio1 ÿ ü üû ü AN X A Edit el p o ûþûü ý ü en NetBeans ú ù ü Crear la clase principal y también configurar como proyecto principal.

donde estará el programa principal.Puedes ver en el explorador de proyectos debe aparecer toda la estructura creada. . para el proyecto Laboratorio1 y además el primer archivo .java. Luego a la derecha del explorador está el editor del código fuente en donde escribiremos nuestros programas.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->