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 .

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

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

jugar. depositar. morir. estudiar. Dormir. retirar. Vaca Nacer. comer. morir. 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 . Comportamiento de perro. trabajar. razonar. jugar Comportamiento de una Cuenta banco 001-223456-5656 .Por ejemplo que comportamiento tienen Juan. dar su nombre. Pedro. Dormir. Luc a. comer. 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. gato. Cuenta banco 001-223456-5678 Crear. obtener saldo. 223456-5645 . ¿qué acciones realizan o qué acciones se pueden realizar sobre ellos? Nacer.

Termómetro. Cuentabancaria. Círculo radio Circulo Real radio. R F R I H G GF G I D T EEC QP D C R S . especialmente una computadora. numero1. prendida. ¿Qué es un Lenguajes de Programación? Lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina. Haz el mismo ejercicio para los siguientes objetos Auto. modelo. 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. Persona. numero2.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. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten e presar instrucciones que luego serán interpretadas. propio del ser humano. tipo.

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

). Java is a language used to write computer programs that was created by Sun Microsystems. si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun. el desarrollo y evolución del lenguaje a través del Java Community Process. 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. Otros abogan por el siguiente acrónimo. de acuerdo con las especificaciones del Java Community Process. Pero no está claro si es un acrónimo o no. with development starting in 1991. y Andy Bechtolsheim. Arthur Van Hoff. or on any type of server. algunas incluso bajo licencias de software libre. The idea behind the language is that a program written with Java can run on any platform in other words. se refiere al equipamiento lógico o soporte lógico de una computadora digital. de ahí que el icono de java sea una taza de cafe caliente . En el tiempo de ejecución. Entre noviembre de 2006 y mayo de 2007. Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). on any computer with any type of operating system. La implementación original y de referencia del compilador. Sun ha controlado las especificaciones. etc. 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í. la máquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. el bytecode es normalmente interpretado o compilado a código nativo para la ejecución.conjunto general de programas. Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL. aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible. El término Java fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. aunque la compilación en código máquina nativo también es posible. 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. JAVA= Just Another Vague Acronym? Las aplicaciones Java están típicamente compiladas en un bytecode. on any computer device (cell phones. Desde entonces.

modelo. 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. 8 exponente. 11 exponente.java Archivo bytecode . } . numero1. Archivo Fuente . tipo. tipo. JVM) es un programa nativo. prendida. numero2. ejecutable en una plataforma específica. class Circulo{ private float radio. radio. es decir. 24 mantisa.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. numero1. capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode). prendida.int.4x10-45 1.4x1038 1 bit signo . 1.long float. numero2. 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. short. el cual es generado por el compilador del lenguaje Java. 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. modelo.Java Virtual Machine Una Máquina virtual Java (en inglés Java Virtual Machine.

6. 2. 100. 3) Con 3 bits podemos representar 000.1. La computadora de lo único que entiende es de 0s y 1s. A cada dígito 1 o 0 se le conoce como bit. bajo una estructura determinada. 111 que equivalen a (0. pueden ver en el sgte link las equivalencias que existen: http://es. 11 (0. 110. 3. 010. el cual depende de la arquitectura de cada computador. 1Tb = 1024 Gb. 1 Mb = 1024Kb. 7) Con N bits entonces podemos generar 2 N posibles valores Si queremos representar X valores diferentes. para el computador 5 en sistema decimal es igual 0101 en sistema binario. Podemos definir entonces 1Byte = 8 bits. 4.Haz el mismo ejercicio para los siguientes objetos Auto. 101. 01. 011. Termómetro.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. mayor o igual que log 2 X qhtugu ig t v ts g irqp ig gh g a . Cuentabancaria Persona. necesitaremos N bits. 1Kb = 1024Bytes.wikipedia. 1Gb = 1024Mb. los cuales representan ciertos rangos de voltaje. 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. donde N es el mayor entero. 001. 1. 5. 10. el 1 equivale a un voltaje m s alto que el 0. 2.

.111111)= 2^31-1 Mínimo= valor(100. Una variable entera (int) está formada por 4 bytes. 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... una variable entera x está formada por 32 bits que denotaremos x31. el valor es positivo y se calcula como: x31*2^31 + x30*2^30 + .. Valores máximos y mínimos Máximo= valor(011. + x2*2^2 +x1*2^1+ x0*2^0 Si x31 es 1. . x1 y x0. En general... x2..000101)+1) = . tal que: yi= 1 si xi==0 0 si xi==1 valor(x) = . Ejemplos: valor(000.(valor(y) + 1) Se dice que y es el complemento de x.. El valor numérico representado por la variable x está dado por el siguiente cálculo: Si x31 es 0..000000)= -2^31 Por lo tanto. no es capaz de almacenar números demasiado grandes (en valorabsoluto).. aún cuando el número sea pequeño.(5+1) = -6 Una variable entera (int) siempre utiliza 32 bits. Por otra parte. 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.111010) = . Ahora qué es lo que pasa con los números negativos y el cero.. x30..001001) = 1*2^3+1*2^0= 9 valor(111.. €yx  €yxw s . es decir 32 bits.. . con un int se pueden almacenar números de 9 dígitos aproximadamente. el valor es negativo y se calcula construyendo una nueva palabra y. Estos 32 bits representan el valor almacenado por esa variable en binario.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).(valor(000.

00101011? ¿y el 111. el número anterior sería representado en 64 bits como: ˆ „ †„ † … „ N>0 Desbordamiento (+/-)Ma t sa x 2 ƒ‚ N(max) + ‡ ‚ . 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.Ejercicios: ¿Qué número representa el siguiente número en binario 000.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).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.2^31-1] [-2^15. es decir el doble de un entero. En ella se almacenan números reales en formato binario.2^7-1] [-2^63.2^15-1] [-2^7.. 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..1010 Representa en decimal al número: 2^3 + 2^2 + 2^0 + 2^(-1) + 2^(-3) = 8+4+1+0. Por ejemplo. Por lo tanto..5+0. el número: 1101.

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

los valores que se obtienen poseen un error de precisión. Pero es un error que conviene tener presente. Precisión y error de representación La desventaja es que los números se almacenan con una precisión limitada. Lamentablemente.10^33] precisión en dígitos ~ 15 ~7 Conceptos esenciales de este capítulo que Ud. pero los números se almacenan con una precisión limitada (15 dígitos para una variable de tipo double). Esto hace que al realizar multiplicaciones y divisiones. Esto significa que un número que requiera 100 bits de mantisa ser aproximado a uno que solo ocupa 52. El error absoluto que se comete es: 6789012345678901234567890 que parece enorme. El error que se comente se puede visualizar mejor en base 10.10^300] ~ [-10^33.3 no es representable en forma exacta en una variable de tipo double. debe comprender: El rango de representación de los enteros es limitado. introduci ndose entonces un error de representación. El error que comete es como cuando el siguiente número: 1234567890123456789012345678901234567890 se aproxima al siguiente valor: 123456789012345*10^25 Es decir. 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.6875 proceda de la siguiente forma: ’ ’ “ ’ “ ’ “ “ . El rango de representación de los reales es casi ilimitado.1[ como 0. Tarea : Muestre que el número 0. solo se representan 15 dígitos de los 40 iniciales. Java no alerta cuando se comete este tipo de errores. Indicación: Para obtener la representación de un número en el rango [0.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. que no es relevante para la mayoría de las aplicaciones num ricas. 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. 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.

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

.

si hay alguno que sea V devuelve V. Si todos los operandos son F devuelve F. Cambia el valor de verdad de verdadero (V) a falso (F) y viceversa.56 -56.09 3 * 10. 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 > < >= <= != == .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.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). p V F NOT p F V O lógica (OR) o disyunción: Operador n-ario (aplicado a 2 o m s operandos). Si todos los operandos son 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 . si hay alguno que sea F devuelve F.

16*r^2 3. r es una variable real que identifica el radio del círculo y areacirculo es una variable real. 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 ~ } ~ . Calcular al rea del círculo AreaCirculo = 3. Devuelve V cuando ambos operandos son distintos y F cuando son iguales.14. 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.O-eXclusiva lógica (XOR): Operador binario (aplicado a dos operandos).14. 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. Los par ntesis permiten agrupar operaciones permitiendo darle mayor precedencia o prioridad de c lculo. Los operadores actúan sobre los operandos para obtener un resultado .16 y 2 son constantes literales.

evalu ndolos ambos. evalu ndolos ambos. Cuando numero tiene valor -3. Como estamos usando la conjunción basta que una de las condiciones falle para que el resultado sea falso. | : devuelve verdadero uno de los operandos es true. esto debido a que los objetos interactúan unos con otros. Esta interacción o comunicación entre objetos se realiza mediante mensajes € € €  ‚ ‚  . (numero > 0) Cuando numero tiene valor 10. Mét d s Los m todos son servicios que el objeto es capaz de brindar a otros objetos. falso en caso contrario. por lo tanto V y V resulta V. Definir una expresión lógica de tal forma que dado un número nos devuelva verdadero si est entre 1000 y 2000. entonces (numero > 0) es falso.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. (Numero >= 1000) y (Numero<=2000) si Numero=1200 (1200 >= 1000) es V y (1200<=2000) es V. entonces (numero > 0) es verdadero. 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.

„ } boolean dentro_rango() „ „ „ (Numero<=2000)). 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. 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.Cada mensaje pide la ejecución de un servicio de un objeto. float suma() return (numero1 + numero2). } Fin lógico es_positivo() Inicio retornar (numero>0). } Fin float areaCirculo() return (3.1416*r^2).1416*r*r). real suma() Inicio retornar (numero1 + numero2). Fin Lógico dentro_rango() Inicio Fin Retornar ((Numero >= 1000) y (Numero<=2000)). boolean es_positivo() return (numero>0). ƒ .

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()

‡

‡

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

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 ) ‰  . claro Definido -> confiable Orden Lógico Tener Inicio y Fin. es decir. preciso. ordenadas de manera lógica que nos permiten dar solución a un determinado problema.SESION 4 ESTRUCTURAS ALGORITMICAS SECUENCIALES P Diferencia entre un estado final y un estado inicial. varían de un programador a otro. inicialmente de manera informal. ag t t za d a z a d as s g aj El pseudocódigo d s b ú . sin hacer uso del computador. es decir. Su objetivo es permitir que el programador se t s asp t s g s de la solución a un problema. para luego expresarlo siguiendo ciertas reglas est ndar. (Del latín. No siendo el pseudocódigo un lenguaje formal. Ej p C as Ag t Secuencia de pasos o acciones finitas. 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. un estado actual y un estado deseado. ordenada y finita de operaciones que permite hallar la solución a un problema Simple. dixit algorithmus y ste a su vez del matem tico persa al-Jwarizmi) es una lista bien definida. 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 . st s d p g a a y pa ab as av que definen las estructuras b sicas.

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

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

empezamos a codificar Ahora debemos hacer que este pequeño programa se puede probar en la computadora para ello debemos crear un PROGRAMA PRINCIPAL.suma()). oCalculadora.oCalculadora.java y otro con la clase para el manejo del programa principal Sumar.out.suma()).in). oCalculadora. oCalculadora.out. // asigno el número 3 al atributo numero1 oCalculadora. valores lógicos o cadenas y tambi n puedo asignar expresiones aritm ticas o lógicas.numero1=3. ° «­¯ «¯ ¯ ¯ ¯±°« ° « ± ¬ « ¬ ­ ¬ª ¬ ± ± °³® ¢£ 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(). puedo asignar constantes literales ya sean números. System. BufferedReader br = new BufferedReader (isr).println(oCalculadora.println(oCalculadora. creamos los objetos para leer desde el teclado: InputStreamReader isr = new InputStreamReader (System.numero1=3. oCalculadora.numero1=10.numero1=10. caracteres. utilizamos las siguientes instrucciones. System. 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 . } 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.java °« ³¯ ¯ ±° ª¯ ­ ° ¬ ¯ ¯« ¬± ° ° ² ¬± ª² °­¬± ³²ª ±° ¯ ° « ª² ± ª ¬ ° ¯² °ª ° ¬ °³ ¬³ «¯ ° ² ¬± ° ¯« ¬± ¯± ª¯ ± ¯ ¯ ¯ ¯² ª¯²­ ª¯ ±¯ª¯ ¯ ¯ ¯ ¯ª°¬ ¯± ¯ ° ¯±°« ¯ ª®¬­ ª ¬ «ª E ¿C ha ía pa a a za s va s d sd En java asignar valores desde el teclado.numero1=3. Retomando el algoritmo inicial. En java podemos crear el programa principal de la siguiente manera: class Sumar { public static void main (String [] args) { Calculadora oCalculadora = new Calculadora().numero1=10. // 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. é 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 ? ¡ ¡ . 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.

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

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.

Si queremos inicializarla en la misma sentencia de declaración Tipo de dato Identificador de variable = valor. // 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. // asignamos la suma de dos números a la variable return resultado. Pa á t s s ét d s Un par metro (o argumento) es una variable que es recibida por una función.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. este m todo solo hace uso del procesador. se ve modificada el original. la variable local desaparece de memoria. float suma(){ a . m todo. despu s de ejecutado el m todo. } Para declarar una variable local se usa la siguiente sintaxis: Tipo de dato Identificador de variable. En cambio cuando un par metro es pasado por referencia. En forma general. esta variable adicional nos permite un mayor control del c lculo realizado. si se modifica su valor dentro del procedimiento. float suma(){ return (numero1 + numero2). esta variable solo ser visible en el m todo la cual se la ha definido. Quien recibe el o los par metros los utiliza para alterar su comportamiento o sus resultados al ejecutarse. Í Í Î Í Î É ËÊ É Ä É Å È Î Í Î Î Î Í Î Ê Ì ÅÈ Ê Ê Ï ÊÉ ÇÄ ÊÈ ÄÏ È Í Ä É ËÊ Í Í ÄÉ ÅÈ Î Î ÇÆ Å Ä 5 ESTRUCTURAS ALGORITMICAS SECUENCIALES . // declaramos o definimos una va ab // tipo que devuelve el m todo para evitar la incompatibilidad resultado=(numero1 + numero2). procedimiento o subrutina. 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. el tipo tiene debe ser el mismo float resultado.

out. entonces vamos a necesitar par metros para que el m todo pueda obtener datos que provienen del teclado o de otro m todo. 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.println(oCalculadora. String modelo. num1=3. float numero2){ return (numero1 + numero2). // inicializamos las variables locales num2=10. } boolean es_positivo(float numero){ return (numero>0). System. Por ejemplo vamos a redefinir nuestra clase calculadora como sigue: class Calculadora { //inicio String marca. float num2. 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.¿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. } } Hemos quitado los atributos numero1 y numero2. 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.suma(num1. Ø Ù Ù Ø Ø ÓÖ Ô× Ö t Ù Ö Ñ Õ Ô Ò ÔÐ Ô Ó Ò Ñ Ð Ù Ù s? estamos . boolean prendida.num2)). char tipo. Calculadora oCalculadora = new Calculadora().

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

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

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

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

numPuertas. parar poder recuperar ese dato del objeto. Modelo. kilometraje. } String get_Marca() { Return Marca.get_Marca()).out.println(oAuto. } short Frenar(){ return (velocidad 1). } // agregamos los 2 m todos definidos void set_marca(String pMarca){ Marca=pMarca. short Acelerar(){ return (velocidad + 1). } short Prender(){ return 1. descapotable. placa. velocidad. 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. } short Apagar(){ return 0.Entonces si yo quisiera mostrar en pantalla la marca del objeto oAuto tendría que poner la siguiente sentencia System. } } ÷ ÷ .

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. debe imprimirse el valor de B. Esta estructura se representa mediante el diagrama siguiente Las estructuras selectivas se utilizan para tomar decisiones lógicas. debe imprimir el valor de A. la porción lógica da a la computadora la capacidad de tomar decisiones. la que permitirá la selección de acciones alternativas. sino). Suponga que tiene dos variables numéricas. de ahí que se suelan denominar también estructuras de decisión o alternativas. si B es mayor que A. else o bien en español si. pero.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. La elección de que alternativa tomar depende de la decisión de si la variable A es o no mayor que B. si <condición> entonces <acción S1> fin_si . denominadas A y B. y suponga que desea imprimir el valor de la mayor. con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular. Esto forma la base de la construcción si-entonces-de lo contrario (if-else). La representación de una estructura selectiva se hace con palabras en pseudocódigo (if. 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. Las condiciones se especifican usando expresiones lógicas. El propósito de la unidad aritmética es el manejo de las operaciones aritméticas. Si A es mayor que B. por otro lado. que tienen valores diferentes.

readline()). numero2= Integer. float numero1. Si la condición C es verdadera.println( Es positiva ). Si (la resta es menor que cero) Mostrar Es positiva .parseInt(br. resta= ocalc. BufferedReader br = new BufferedReader (isr).numero2).out.in).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. leer numero1.parseInt(br. Fin Calculadora ocalc = new Calculadora(). se ejecuta la acción S2. class Restar_numeros { public static void main(String [] args){ Calculadora ocalc = new Calculadora().readline()). if (resta<0) System. 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. InputStreamReader isr = new InputStreamReader (System. restar los números. y si es falsa. se ejecuta la acción S1.println( Es negativa ). float numero2.restar(numero1.out. Sino Mostrar Es negativa . leer numero2. . else System. numero1=Integer.

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

BufferedReader br = new BufferedReader (isr). Horas + ocv. void convierte(){ // este método no devuelve ningún valor . Segundos=Numero-Minutos*60. + ocv. mientras que los demás (regulares). Minutos=(Numero-Horas*3600)/60.println( El número : + ocv. ocv.convierte().minutos + Minutos .numero + Equivale a + ocv. número de cursos y los costos totales por los cursos a llevar.horas + . 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). } } class Principal { public static void main(String [] args){ Convertir_segundos ocv = new Convertir_segundos(). System. ocv.numero= Long.out. solo actualiza los valores de los // atributos Horas=Numero/3600.parseLong(br.segundos + Segundos ). long segundos. pagan 50 soles por curso. } } De los estudiantes que se matriculan en la UNAT-A.in). InputStreamReader isr = new InputStreamReader (System. prívate long horas.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. long minutos. los ex soldados pagan 30 soles por curso en el que se matriculen.readline()). .

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. byte numero_cursos. else pago=50. Caso contrario Pago=50. Caso contrario Pago=50. Costo_total=pago*numero_cursos. entero pago. 3) Diseñar la clase UNAT Inicio carácter tipo_de_estudiante. } } Retornar(pago*numero_cursos). InputStreamReader isr = new InputStreamReader (System. byte pago. return (pago*numero_cursos). Fin Fin class UNAT_principal { public static void main(String [] args){ UNAT ounat = new UNAT(). entero numero_cursos. entero calcula_costo() Inicio Si tipo_de_estudiante es ex soldado entonces Pago=30. int calcula_costo(){ if (tipo_de_estudiante== E ) pago=30.in). ø . Class UNAT { char tipo_de_estudiante.

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

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

cadena mensaje. System. } } class Numero_principal { public static void main(String [] args){ Numero onum = new Numero(). String mensaje.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. if (numero<0) mensaje= ( + numero + NEGATIVO . InputStreamReader isr = new InputStreamReader (System. onum.out.in).mensaje). System. BufferedReader br = new BufferedReader (isr). onum.readLine()). 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.parseShort(br. if (numero==0) mensaje= ( + numero + CERO) . void obtener_mensaje(){ if (numero>0) mensaje = ( + numero + POSITIVO) .out.println(onum.num= Short. } } .println( Ingresa el número ).obtener_mensaje().

7) para (lunes. InputStreamReader isr = new InputStreamReader (System. System.println( El nombre del día es : + odia.. martes.out. miércoles. odia. String nombre_dia.readLine()).num_dia=Byte. Lunes . BufferedReader br = new BufferedReader (isr). 2.Hacer un algoritmo y un programa que devuelva el nombre del día de la semana siguiendo un orden de correspondencia (1. Martes . 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().. 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. domingo) respectivamente. . cadena nombre_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..nombre_dia). 3. Martes . Lunes .in).dame_nombre_dia().. odia.parseByte(br.

El valor de la altura de un triángulo dada la base y el área. case 6: nombre_dia= Martes . dada la base y la altura.if (num_dia==6) nombre_dia= Martes . 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 . case 4: nombre_dia= Martes .El valor de la base de un triángulo dada la altura y el área. case 2: nombre_dia= Martes .break.break. } } } } } Hacer el algoritmo y programa que calcule: . case 3: nombre_dia= Lunes .break. String nombre_dia.break. if (num_dia==7) nombre_dia= Martes .break. default: nombre_dia= No existe .El valor del área de un triángulo. .break. .break. void dame_nombre_dia(){ switch (num_dia) { case 1: nombre_dia= Lunes . } } class Dia_semana{ byte num_dia. case 5: nombre_dia= Lunes .

float base.base = area*2/altura valor=base. 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. 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. class Triangulo_principal{ public static void main(String [] args){ } . float altura.

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

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

se sale del ciclo. el bucle continúa hasta que la condición se hace verdadera (la condición se comprueba después de ejecutar la acción. para diferenciarla de las dos anteriores.cual se comprueba antes de ejecutar la acción) y en el segundo. no realizar ninguna iteración en el bucle. se ejecutará al menos una vez). Las estructuras Mientras y Para/Desde suelen en ciertos casos. Esta variable a la vez. 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. es decir. Representación pseudocodificada: Mientras <condición> Acciones Fin_mientras En Java While (condición){ } . 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. nos sirve para compararla con el valor dado en la condición. Observa en el flujograma. cuando se cumple la condición. para llevar la cuenta de las veces que entramos al cuerpo del ciclo. por lo general en uno. mientras que Repetir ejecutará el bucle al menos una vez.

EJEMPLO: Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado. resolvimos este ejercicio en la lección anterior pero utilizando la estructura Desde. Como recordarás. Hoy lo haremos con la estructura Mientras. Solución. 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: .

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

.

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

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

private byte numero_de_notas. if (ocaj1. } } } 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.in). private short suma_nota.setMonto_transaccion(Float.out. Nota(){ .print("Ingrese Clave : ").readLine())){ System. System.public static void main (String [] args){ try{ Cajero1 ocaj1 = new Cajero1().out.println("Ingrese la clave").esClave(br. if (ocaj1. ocaj1.out. InputStreamReader isr = new InputStreamReader(System. private byte peso.readLine())) { System.println("Error de entrada y salida" + ex. if (ocaj1.println("Clave Incorrecta").readLine())). private float promedio. BufferedReader br = new BufferedReader(isr).retirar()!=1) System. } else System. public class Nota { private byte nota.println("DNI incorrecto").out.getMessage()).out.out.println("Ingrese el monto a retirar"). } else System. } catch(IOException ex){ System.println("Error en el retiro").out.esDni(br.parseFloat(br.

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

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

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

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

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.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.4 1 0. pero las posiciones van de 0 a 11. comienzan desde cero de izquierda a derecha. homogénea y ordenada de elementos. es decir. .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. el cual es entero. diseñe y codifique un programa para calcular el resultado de la siguiente función: 3*Y + 36 Y4 10 Y15 + Y10 . El arreglo que se muestra arriba es de longitud 12. Así se distinguen 2 partes en los arrelgos: Los componentes Los índices Las posiciones determinadas por un índice.3 Elemento 11 -234. el programa deberá mostrar la temperatura promedio y la temperatura más alta y más baja del día. Dados N valores de Y. Índice 0 13. los componentes son las celdas que apuntan a los elementos. a los valores que se almacenan en cada una de las casillas del mismo. Los componentes hacen referencia a los elementos que forman el arreglo.

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

for(short indice=0. indice++) lista_enteros[indice]= 3.34 .3 . 15. for(byte índice=0. 8. 12. indice++) lista_enteros[indice]= 3. índice++) { tcenti =lista_temperaturas[indice]. tfah=0.length . for(short indice=0. . lista_temperaturas[indice]=tfah.Int [] lista_enteros = new int [400].0f. 12.4. índice<lista_temperaturas. indice<400. 12. 12. // recuperamos el elemento ubicado en indice tfah = tcenti *9 /5 +32. indice<lista_enteros.length.legth.6 .6} float tcenti.0f. tcenti=0.println(lista_temperatura[indice]).out. 11 . lista_enteros[345] =13.19.índice<lista_temperaturas. 20.tfah.índice++) System. // 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. // asignamos el nuevo valor convertido a grados } for (índice=0.

SESIÓN 12 ARREGLOS BIDIMENSIONALES .

.

.

3.int[][] A = {{2.7}.{9. k < m.k.{7. // 4 x 3 int[][] B = {{1.8}}.5. i++) { for(j = 0. l = 2. int[][] C = new int[n][l]. } C[i][j]= suma.3}.4}. i < n.j.{4. j++) { . k++) { suma = suma + A[i][k] * B[k][j]. int i.4.8}}. j< l. j < l. // 3 x 2 int n = 4. m = 3.suma.5.{2.8}. i < n. j++) { for(k = 0. } } for(i = 0.8. for(i = 0. i++) { for(j = 0. suma = 0.6.

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

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

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

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. para que se ejecute por defecto el laboratorio que estamos trabajando actualmente .Creamos un nuevo proyecto.

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

Sign up to vote on this title
UsefulNot useful