Índice
Presentación ………………………………………………………. 3 3
Modulo A
Semana 1 ……………………………………………………….. 4 4
Semana 2 ……………………………………………………….. 24 24
Semana 3 ……………………………………………………….. 47 47
Semana 4 ……………………………………………………….. 72 72
Semana 5 ……………………………………………………….. 85 85
Semana 6 ……………………………………………………….. 98 98
Semana 7 ………………………………………………………..111
111
Semana 8 ………………………………………………………..127
127
Semana 9 ………………………………………………………..140
140
Modulo B
Semana 1 ………………………………………………………..150
150
Semana 2 ………………………………………………………..166
166
Semana 3 ………………………………………………………..180
180
Semana 4 ………………………………………………………..188
188
Semana 5 ………………………………………………………..205
205
Semana 6 ………………………………………………………..216
216
Semana 7 ………………………………………………………..229
229
Semana 8 ………………………………………………………..243
243
Semana 9 ………………………………………………………..258
258
Bibliografía: ………………………………………………………...267267
Fundamentos de Programación 2
e
PRESENTACIÓN
Esta guía didáctica es un material de ayuda institucional, perteneciente a las
especialidades de computación, Ingeniería de Software e Ingeniería de Redes y
Comunicaciones tiene por finalidad proporcionar los conocimientos de fundamentos
de programación orientada a los estudiantes del primer ciclo de estudios.
Esta guía se divide en 2 módulos y cada una de ellas en 9 semanas. Permite conocer
las herramientas indispensables para la elaboración de un algoritmo. Se inicia con el
reconocimiento de las herramientas básicas que se necesitaran para dar solución a
una determinada proposición o problema.
Fundamentos de Programación 3
e
INTRODUCCION
Contenidos
- Sistema de Información
- Concepto de Dato, Información, Proceso
- Etapas del Procesamiento de Datos (Entrada, Clasificación, Procesamiento,
Almacenamiento, Control, Salida).Razones para automatizar los procesos.
- Lenguajes de Programación: Concepto, Clasificación (Leng. Maquina, de Bajo Nivel y de
Alto Nivel).Tipos de Leng. Alto Nivel (Estructurados y Orientado a Objetos).
- Ciclo de Vida de un Programa (Análisis, Diseño, Implementación).
- Tipos de Datos: Numéricos (Enteros y Reales), Lógicos, Carácter.
- Identificadores, Variables y Constantes.
____________________________________________________________________________
Introducción a la Programación
Un lenguaje de programación es aquel elemento dentro de la
informática que nos permite crear programas mediante un conjunto de
instrucciones, operadores y reglas de sintaxis; que pone a disposición
del programador para que este pueda comunicarse con los
dispositivos hardware y software existentes.
Es por ello que como objetivo de este curso es que el alumno conozca los principios de la
programación y que aprenda aplicar las etapas de procesamiento de datos dentro de un
proyecto real.
Fundamentos de Programación 4
e
1. Sistema de Información
Introducción:
Un sistema de información es un conjunto de elementos que interactúan entre sí con el fin de
apoyar las actividades de una empresa o negocio.
El recurso humano que interactúa con el Sistema de Información, el cual está formado por las
personas que utilizan el sistema.
Las manuales son aquellas que se proporcionan en forma directa por el usuario,
mientras que las automáticas son datos o información que provienen o son tomados
de otros sistemas o módulos.
Las unidades típicas de entrada de datos a las computadoras son las terminales, las
cintas magnéticas, las unidades de diskette, los códigos de barras, los escáner, la voz,
los monitores sensibles al tacto, el teclado y el mouse, entre otras.
Fundamentos de Programación 5
e
Proceso:
Almacenamiento:
Salidas:
Reporte de pagos.
Estados de cuenta.
Pólizas contables (interface automática)
Consultas de saldos en pantalla de una terminal.
Fundamentos de Programación 6
e
Seguridad de la información.
Fácil y rápido acceso a la información.
Reducción de espacio físico.
Estandarización.
Facilidad en la creación de copias de respaldo.
Reducción de gastos.
Data Ordenada y clasificada.
Conservación de la información.
3. Conceptos De Programación
Definición.- Es un conjunto de instrucciones escritas en algún lenguaje de
programación. El programa debe ser compilado o interpretado para poder ser
ejecutado y así cumplir su objetivo
Lenguajes de Programación:
Definiciones:
Fundamentos de Programación 7
e
A los finales de los años 1960 surgió una nueva forma de programar que no
solamente daba lugar a programas fiables y eficientes, sino que además
estaban escritos de manera que facilitaba su comprensión posterior.
El teorema del programa estructurado, demostrado por Böhm-Jacopini,
demuestra que todo programa puede escribirse utilizando únicamente las tres
instrucciones de control siguientes:
Secuencia
Instrucción condicional.
Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor
repertorio de estructuras de control, éstas pueden ser construidas mediante las
tres básicas.
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las
necesidades de programación existentes en los años 1960, principalmente
debido a las aplicaciones gráficas, por lo que las técnicas de programación
estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas
técnicas, tales como la programación orientada a objetos y el desarrollo de
entornos de programación que facilitan la programación de grandes
aplicaciones.
Fundamentos de Programación 8
e
estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear
es usualmente la herencia.
Programa Fuente.
Intérpretes y Compiladores
C
o
m
p
i
l
a
d
o
Fundamentos de Programación 9
e
Diseño
Es diseñar cualquier sistema nuevo o las aplicaciones que se requieren para satisfacer las
necesidades. Esta actividad se debe dividir en:
Operaciones de entrada/salida
Cálculos
Lógica/comparación
Almacenamiento/ consulta
En este paso se genera una solución con técnicas de programación como diseño
descendente de programas, pseudocódigos, flujo gramas y estructuras lógicas.
Implementación
Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes
pasos:
a) Codificación
b) Compilación y ejecución
c) Verificación
d) Depuración
e) Documentación
Fundamentos de Programación 10
e
Chequeo de Escritorio:
El programador se sienta frente a un escritorio y corrige una impresión
del programa. Revisa el listado línea por línea en busca de errores de
sintaxis y lógica.
Prueba manual de datos de muestra:
Se corre el programa en forma manual aplicando datos tanto correctos
como incorrectos para comprobar que funciona correctamente.
Intento de Traducción:
El programa corre en una computadora usando un programa traductor
para convertirlo a lenguaje de máquina. Para ello debe estar ya libre de
errores de sintaxis, de lo contrario serán identificados por el programa
de traducción.
Prueba de datos de muestra en la computadora:
Después del intento de traducción y corregidos los errores de sintaxis,
se procede a buscar errores de lógica utilizando diferentes datos de
muestra.
Prueba por un grupo selecto de usuarios potenciales:
Esto se conoce como prueba beta. Se trata por lo general del paso
final en la prueba de un programa. Usuarios potenciales ponen a
prueba el programa y ofrecen retroalimentación.
Fundamentos de Programación 11
e
Errores de Especificación
Es el peor tipo de error y el más difícil de corregir. Se deben a mal diseño del
programa posiblemente por mala comunicación usuario programador y se detectan
cuando ya se ha concluido el diseño e instalación del programa, lo cual puede
implicar repetir gran parte del trabajo realizado.
A los usuarios se les elabora un manual de referencia para que aprendan a utilizar
el programa. Esto se hace a través de capacitaciones y revisión de la
documentación del manual de usuario. El manual del usuario no está escrito a nivel
técnico sino al de los distintos usuarios previstos y explica en detalle cómo usar el
programa: descripción de las tareas que realiza el programa, instrucciones
necesarias para su instalación puesta en marcha y funcionamiento,
recomendaciones de uso, menús de opciones, método de entrada y salida de
datos, mensajes de error, recuperación de errores, etc.
A los programadores a través del manual del analista para que recuerden
aspectos de la elaboración del programa o en caso que otras personas puedan
actualizarlo o modificarlo (darle mantenimiento) y no son necesariamente las
personas que lo diseñaron. Es por ello, que la documentación debe contener
algoritmos y flujo gramas de los diferentes módulos que lo constituyen y las
relaciones que se establecen entre ellos; listados del programa, corridas,
descripción de variables que se emplean en cada módulo, cuáles son comunes a
diferentes módulos y cuáles locales; descripción de los ficheros de cada módulo y
todo lo que sea de importancia para un programador.
A los analistas de sistemas que son las personas que deberán proporcionar toda
la información al programador. Estos se encargan de hacer una investigación
previa de cómo realizar el programa y documentar con las herramientas necesarias
para que el programador pueda desarrollar el sistema en algún lenguaje de
programación adecuado.
Es el paso final del desarrollo del software. Alrededor del 75% del costo total del ciclo de vida
de un programa se destina al mantenimiento. El propósito del mantenimiento es garantizar que
los programas en uso estén libres de errores de operación y sean eficientes y efectivos.
Fundamentos de Programación 12
e
Identificadores
Los Identificadores son palabras que de alguna manera ayudan a identificar a un conjunto de
datos.
Ejemplos:
Ejercicios Propuestos
Fundamentos de Programación 13
e
Dato. Es la expresión general que describe los objetos con los cuales opera el
programa. Por ejemplo, la edad y el domicilio de una persona, forman parte de sus datos.
Los datos se sitúan en objetos llamados variables.
Tipos de Datos
Los tipos de datos son:
Ejemplos:
- Nombres _____________________
- Apellidos ______________________
- Notas ______________________
- Promedio ____________________
- Peso de una persona ____________________
- Edad ____________________
Fundamentos de Programación 14
e
Contenidos
____________________________________________________________________________
Tipos de Operadores:
Fundamentos de Programación 15
e
Ejemplos:
6^(1/2)
6^2
28+29*(14^2)
Jerarquía de Operaciones:
o ()
o Potencia
o Producto y división
o Div y Mod
o Suma y resta
o Concatenación
o Relacionales
o Negación
o And
o Or
Datos de tipo entero tienen los operadores +, -, *, /, div, mod, abs, sqr, sqrt, ln, exp, sin,
cos, tan, pow, etc. Los datos de tipo real tienen los mismos operadores enteros y
además trunc, round, int, y otros. La suma y multiplicación de datos de tipo real
cumplen la propiedad conmutativa, pero no siempre la asociativa y la distributiva.
Para resolver una expresión aritmética se deben seguir las siguientes reglas:
Primero se resuelven las expresiones que se encuentran entre paréntesis.
Se procede aplicando la jerarquía de operadores.
Al evaluar una expresión, si hay dos operadores con la misma jerarquía, se procede a
evaluar de izquierda a derecha.
Si hay expresiones relacionales, se resuelven primero paréntesis, luego se encuentran
los valores de verdad de las expresiones relacionales y por último se aplica jerarquía
de operadores lógicos. En caso de haber iguales, proceder de izquierda a derecha.
EJERCICIOS.
Fundamentos de Programación 16
e
4+1*5^2-1
9 / 3 + 4 ^ 2 - 5 * 1 + 9 / -2 + 3
5/2+3-4*5/2
(4 + 1) * 5 ^ 2 – 1
17 / 2 + 3 ^ 2 ^ 2 - 2 * 2 / 2
Z=___
T=____
Fundamentos de Programación 17
e
Asignación de Datos
Identificador=Expresión
Sección de Variable
Las variables son zonas de memoria cuyo contenido cambia durante la fase de procesamiento
de información. Son objetos cuyo valor puede ser modificado a lo largo de la ejecución de un
programa. Ejemplos:
Nombres
Fecha_Nac
Apellidos
Direccion
Edades
Dni
Telefonos
Fundamentos de Programación 18
e
Ejemplos:
o Caracter: Nombres
o Caracter: Apellidos
o Entero: Edad
o Decimal: Promedio
o Lógico: Bandera
Son objetos cuyo valor permanece invariable a lo largo de la ejecución de un programa. Una
constante es la denominación de un valor concreto, de tal forma que se utiliza su nombre cada
vez que se necesita referenciarlo.
Identificador=Valor
Ejemplos:
o Instituto=”SISE”
o Mes_Aniv=”Noviembre”
o Edad=25
o Igv=0.19
o Existe_Codigo=verdadero
_____________ Promedios
_____________ Edades
o Codigo ____________________
o Direccion ____________________
o Telefono ____________________
o Peso ____________________
o Talla ____________________
o Estado_Civil ____________________
d) Otros propuestos
Fundamentos de Programación 19
e
Algoritmo:
Definiciones:
a) Es un Método para resolver un problema mediante una serie de pasos precisos,
definidos y finitos. Un algoritmo es una serie de operaciones detalladas, en otras
palabras un algoritmo es un conjunto de reglas para resolver una cierta clase de
problemas y se puede formular de muchas formas con el cuidado de que no exista
ambigüedad.
b) Los algoritmos son modos de resolución de problemas, cabe aclarar que no sólo
son aplicables a la actividad intelectual, sino también a todo tipo de problemas
relacionados con actividades cotidianas.
c) El algoritmo podría confundirse con lo comúnmente conocido como "receta de
cocina", sin embargo la diferencia estriba en que el alumno o los alumnos, al
elaborar un algoritmo tienen que pensar en las instrucciones a seguir lo que en una
receta serían pasos ya establecidos.
Características
Ejemplos:
ALGORITMO:
Inicio
Dormir
haga 1 hasta que suene el despertador (o lo llame la
mamá).
Mirar la hora.
¿Hay tiempo suficiente?
Si hay, entonces
Bañarse.
Vestirse.
Desayunar.
Sino,
Vestirse.
Fundamentos de Programación 20
e
ALGORITMO:
Inicio
PASO 1. Aflojar los tornillos de la rueda pinchada con la llave inglesa.
PASO 2. Ubicar el gato mecánico en su sitio.
PASO 3. Levantar el gato hasta que la rueda pinchada pueda girar
libremente.
PASO 4. Quitar los tornillos y la rueda pinchada.
PASO 5. Poner rueda de repuesto y los tornillos.
PASO 6. Bajar el gato hasta que se pueda liberar.
PASO 7. Sacar el gato de su sitio.
PASO 8. Apretar los tornillos con la llave inglesa.
Fin
ALGORITMO:
Inicio
PASO 1. Colocar los números el primero encima del segundo, de tal manera
que las unidades, decenas, centenas, etc., de los números queden
alineadas. Trazar una línea debajo del segundo número.
PASO 2. Empezar por la columna más a la derecha.
PASO 3. Sumar los dígitos de dicha columna.
PASO 4. Si la suma es mayor a 9 anotar un 1 encima de la siguiente
columna a la izquierda y anotar debajo de la línea las unidades de la suma.
Si no es mayor anotar la suma debajo de la línea.
PASO 5. Si hay más columnas a la izquierda, pasar a la siguiente columna a
la izquierda y volver a 3.
PASO 6. El número debajo de la línea es la solución.
Fin
Fundamentos de Programación 21
e
Representación de Algoritmos
A. Diagramas de Flujos
B. Diagramas N-S
C. Pseudocódigos, Otros
A. Diagramas de Flujos
Símbolo Descripción
Fundamentos de Programación 22
e
Símbolo Descripción
Conector. Este símbolo se utiliza para indicar un salto dentro del diagrama.
Se utiliza con el propósito de facilitar la disposición plana de un diagrama y
evitar el cruce excesivo de líneas a través del mismo.
Ejemplo:
Fundamentos de Programación 23
e
También conocido como diagrama de Chapin es una técnica de especificación de algoritmos que
combina la descripción textual, propia del pseudocódigo, con la representación gráfica del
diagrama de flujo.
El diagrama N-S cuenta con un conjunto limitado de símbolos para representar los pasos del
algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el
lenguaje natural es muy extenso y se presta para la ambigüedad, solo se utiliza un conjunto de
palabras, a las que se denomina palabras reservadas
Inicio
…………..
…………..
…………..
…………..
………………
Fin
C. Pseudocódigo
Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea,
dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el
Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un
problema determinado. El Pseudocódigo utiliza palabras que indican el proceso a realizar.
Estructura de un Pseudocódigo
Fundamentos de Programación 24
e
algoritmo <nombre_del_algoritmo>
//Secciones de declaraciones
[constantes
//declaraciones de constantes]
[variables
//declaraciones de variables]
Inicio
<Acciones>
fin
Tipos de Instrucciones:
1. Instrucciones de inicio/fin.
2. Instrucciones de asignación.
3. Instrucciones de lectura (entrada).
4. Instrucciones de escritura (salir).
1. Instrucciones de inicio/fin
Se refiere a que se debe de establecer un Inicio y un final
Inicio
………………
………………..
……………….
……………….
Fin
<variable> = <expresión>
Fundamentos de Programación 25
e
leer(<Variable>)
Formas:
leer (ident_1) o leer (ident1,ident2, ident3,….)
leer (ident_2)
<nombre_de_constante>
leer (ident_3) = <expresión>
La lectura en un Pseudocódigo puede ser uno por uno o separados por comas
escribir(<variable>,<expresión_literal>)
Formas:
escribir (expresión1) o escribir (expresión1, expresión1, expresión3)
escribir (expresión2)
escribir (expresión3)
Ejemplo de Pseudocódigo:
Ejemplo 1:
Mostrar los datos asignados de la siguiente manera-
algoritmo Entrada_Salida
Constante
nombre = "Timoteo"
edad = 27, hijos = 2
Inicio
escribir (nombre, " tiene ", edad, " años")
Fundamentos de Programación 26
e
Ejemplo 2:
Realizar el pseudocódigo de un programa que permita calcular el área de un
rectángulo. Se debe introducir la base y la altura para poder realizar el cálculo.
algoritmo área
Variables
Entero: BASE, ALTURA, AREA
Inicio
Fin_Programa
Ejemplo 3:
Realizar el pseudocódigo que permita al usuario introducir por teclado dos notas,
calculando la suma y el producto de las notas.
algoritmo Suma_Producto
Variables
Inicio
Fin_programa
Fundamentos de Programación 27
e
Contenidos
____________________________________________________________________________________
Estructuras Secuenciales
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en
secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el fin del proceso.
Fundamentos de Programación 28
e
Ejemplos:
Ejemplo:
Variables
entero: Num1, Num2, Suma
INICIO
leer (Num1,Num2,Num3)
Suma=Num1+Num2+Num3
escribir (Suma)
FIN
Ejemplo:
Variables
entero: n_1, n_2, n_3, n_4, n_5
real: promedio
INICIO
leer (n_1, n_2, n_3, n_4, n_5)
promedio=( n_1+ n_2+ n_3+ n_4+ n_5)/5
escribir (promedio)
FIN
Variables
entero: numA, numB, numC,suma
real: quinta
INICIO
leer (numA, numB, numC)
suma=( numA+ numB+ numC)
quinta=suma/5
escribir (suma,quinta)
FIN
Fundamentos de Programación 29
e
Constante
a_Actual=2009
Variables
entero: a_Nac,edad
INICIO
leer (a_Nac)
edad=(a_Actual – a_Nac)
escribir (edad)
FIN
Fundamentos de Programación 30
e
Variables
decimal: PrecioA, igv,Nprecio
INICIO
leer (PrecioA)
igv=PrecioA * 0.19
Nprecip=PrecioA+igv
escribir (Nprecip)
FIN
Variables
decimal: Art_1, Art_2, Art_3,Prom_a
INICIO
leer (Art_1, Art_2, Art_3)
Prom_a= (Art_1 + Art_2 + Art_3)/3
escribir (Prom_a)
FIN
A=(b*c)/2
Variables
entero: b,c
decimal: A
INICIO
leer (b,c)
A= (b*c)/2
escribir (A)
FIN
Fundamentos de Programación 31
e
Variables
entero: c
decimal: f
INICIO
leer (C)
F= 1.8 * C + 32
escribir (F)
FIN
Variables
decimal: Mont_Soles, Mont_Dolares
decimal: f
Constante
Tc=2.87
INICIO
leer (Mont_Soles)
Mont_Dolares= Mont_Soles * Tc
escribir (Mont_Dolares)
FIN
Variables
decimal: Cant_Metros,Cant_Centimetros
Constante
centi=100
INICIO
leer (Cant_Metros)
Cant_Centimetros= Canti_Metros * centi
escribir (Mont_Dolares)
FIN
Fundamentos de Programación 32
e
EJERCICIOS DE APLICACIÓN
Fundamentos de Programación 33
e
Fundamentos de Programación 34
e
22. Haga tabla de seguimiento para encontrar los resultados de las variables
dadas en el siguiente algoritmo:
Algoritmo Verifica
Entero: x, y, z
Inicio
X <- 40
Y <- 25
Z <- x – y
Y <- X
Escribir ( y, x)
Escribir (z)
Fin.
Fundamentos de Programación 35
e
Temass
____________________________________________________________________________________
Con la ayuda de otros ingenieros, empezaron a trabajar en una pequeña oficina en Sand Hill
Road en Menlo Park, California. Y así interrumpió todas las comunicaciones regulares con Sun
y trabajó sin descanso durante 18 meses.
Intentaban desarrollar una nueva tecnología para programar la siguiente generación de
dispositivos inteligentes, en los que Sun veía un campo nuevo a explorar. Crear un lenguaje de
programación fácil de aprender y de usar.
En un principio se consideraba C++ como lenguaje a utilizar, pero tanto Gosling como Bill Joy
lo encontraron inadecuado. Gosling intentó primero extender y modificar C++ resultando el
lenguaje C++ ++ - (++ - porque se añadían y eliminaban características a C++), pero lo
Fundamentos de Programación 36
e
abandonó para crear un nuevo lenguaje desde cero al que llamo Oak (roble en inglés, según la
versión más aceptada, por el roble que veía a través de la ventana de su despacho).
El resultado fue un lenguaje que tenía similitudes con C, C++ y Objetive C y que no estaba
ligado a un tipo de CPU concreta.
Mas tarde, se cambiaría el nombre de Oak a Java, por cuestiones de propiedad intelectual, al
existir ya un lenguaje con el nombre de Oak. Se supone que le pusieron ese nombre mientras
tomaban café (Java es nombre de un tipo de café, originario de Asia), aunque otros afirman
que el nombre deriva de las siglas de James Gosling, Arthur Van Hoff, y Andy Bechtolsheim.
En Agosto de 1991 Oak ya corría sus primeros programas.
Para 1992, el equipo ya había desarrollado un sistema en un prototipo llamado Star7 (*7),
dispositivo parecido a una PDA, cuyo nombre venía de la combinación de teclas del teléfono de
la oficina del Proyecto Green que permitía a los usuarios responder al teléfono desde cualquier
lugar.
Por su parte, el presidente de la compañía Sun, Scott McNealy, se dio cuenta de forma
oportuna y estableció el Proyecto Verde como una subsidiaria de Sun.
Después de mostrar a Scott McNealy y Bill Joy los prototipos de bajo nivel del sistema,
continúan con el desarrollo, incluyendo sistema operativo, Green OS; el lenguaje Oak, las
librerías, alguna aplicación básica y el hardware, hasta que el 3 de septiembre de 1992 se
termina el desarrollo y con ello el Proyecto Verde.
De 1993 a 1994, el equipo de Naughton se lanzó en busca de nuevas oportunidades en el
mercado, mismas que se fueron dando mediante el sistema operativo base.
La incipiente subsidiaria fracasó en sus intentos de ganar una oferta con Time-Warner, sin
embargo el equipo concluyó que el mercado para consumidores electrónicos smart y las cajas
Set-Up en particular, no eran del todo eficaces. La subsidiaria Proyecto verde fue amortizada
por la compañía Sun a mediados de 1994.
Afortunadamente, el cese del Proyecto Verde coincidió con el nacimiento del fenómeno
mundial WEB. Al examinar las dinámicas de Internet, lo realizado por el ex equipo verde se
adecuaba a este nuevo ambiente.
Patrick Naughton procedió a la construcción del lenguaje de programación Java que se
accionaba con un browser prototipo. El 29 de septiembre de 1994 se termina el desarrollo del
prototipo de HotJava. Cuando se hace la demostración a los ejecutivos de Sun, esta vez, se
reconoce el potencial de Java y se acepta el proyecto.
Con el paso del tiempo HotJava se convirtió en un concepto práctico dentro del lenguaje Java y
demostró que podría proporcionar multiplataforma para que el código pueda ser bajado y
corrido del Host del World Wide Web y que de otra forma no son seguros.
Una de las características de HotJava fue su soporte para los "applets", que son las partes de
Java que pueden ser cargadas mediante una red de trabajo para después ejecutarlo
localmente y así lograr soluciones dinámicas en computación acordes al rápido crecimiento del
ambiente WEB.
El 23 de mayo de 1995, en la conferencia SunWorld `95, John Gage, de Sun Microsystems, y
Marc Andreessen, cofundador y vicepresidente de Netscape, anunciaban la versión alpha de
Java, que en ese momento solo corría en Solaris, y el hecho de que Java iba a ser incorporado
en Netscape Navigator, el navegador más utilizado de Internet.
Con la segunda alpha de Java en Julio, se añade el soporte para Windows NT y en la tercera,
en Agosto, para Windows 95.
En enero de 1995 Sun forma la empresa Java Soft para dedicarse al desarrollo de productos
basados en la tecnologías Java, y así trabajar con terceras partes para crear aplicaciones,
herramientas, sistemas de plataforma y servicios para aumentar las capacidades del lenguaje.
Ese mismo mes aparece la versión 1.0 del JDK.
Netscape Communications decide apoyar a Java applets en Netscape Navigator 2.0. Ese fue el
factor clave que lanzó a Java a ser conocido y famoso.
Fundamentos de Programación 37
e
Características de Java
Las características principales que nos ofrece Java respecto a cualquier otro lenguaje de programación,
son:
Simple
Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las características menos
usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de seguridad, pero
C y C++ son lenguajes más difundidos, por ello Java se diseñó para ser parecido a C++ y así
facilitar un rápido y fácil aprendizaje.
Orientado a objetos
Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas
para mantener el objetivo de la simplicidad del lenguaje. Soporta las tres características propias
del paradigma de la orientación a objetos: encapsulación, herencia y polimorfismo. Las
plantillas de objetos son llamadas, clases y sus copias, instancias.
Distribuido
Java se ha construido con extensas capacidades de interconexión TCP/IP. Existen librerías de
rutinas para acceder e interactuar con protocolos como http y ftp. Esto permite a los
programadores acceder a la información a través de la red con tanta facilidad como a los
ficheros locales.
Robusto
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en
tiempo de ejecución. La comprobación de tipos en Java ayuda a detectar errores, lo antes
posible, en el ciclo de desarrollo. Java obliga a la declaración explícita de métodos, reduciendo
así las posibilidades de error.
Fundamentos de Programación 38
e
Seguro
La seguridad en Java tiene dos facetas. En el lenguaje, características como los punteros o el
casting implícito que hacen los compiladores de C y C++ se eliminan para prevenir el acceso
ilegal a la memoria. Cuando se usa Java para crear un navegador, se combinan las
características del lenguaje con protecciones de sentido común aplicadas al propio navegador.
Portable
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros
estándares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y
además, enteros de 32 bits en complemento a 2. Además, Java construye sus interfaces de
usuario a través de un sistema abstracto de ventanas de forma que las ventanas puedan ser
implantadas en entornos Unix, Pc o Mac.
Interpretado
El intérprete Java (sistema run-time) puede ejecutar directamente el código objeto. Enlazar
(linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los
desarrolladores con Java pasarán más tiempo desarrollando y menos esperando por el
ordenador.
Multithreaded
Al ser multithreaded (multihilvanado, en mala traducción), Java permite muchas actividades
simultáneas en un programa.
Dinámico
Java se beneficia todo lo posible de la tecnología orientada a objetos. Java no intenta conectar
todos los módulos que comprenden una aplicación hasta el tiempo de ejecución.
Fundamentos de Programación 39
e
Comentarios
Formato Uso
/*comentario*/ Se ignoran todos los caracteres entre /* */.
//comentario Se ignoran todos los caracteres detrás de // hasta el fin de línea.
/**comentario*/ Lo mismo que /* */ pero se podrán utilizar para documentación automática.
Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del
mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una
declaración (de variable o función), indican que ese comentario ha de ser colocado en la
documentación que se genera automáticamente cuando se utiliza la herramienta de Java,
javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo
generar una documentación de nuestras clases escrita al mismo tiempo que se genera el
código.
Separadores
Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java;
son los separadores simples, que van a definir la forma y función del código. Los separadores
admitidos en Java son:
[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de
matriz.
. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para
separar una variable o método de una variable de referencia.
Fundamentos de Programación 40
e
Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el
programador necesite identificar o usar.
En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($).
Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las
minúsculas y no hay longitud máxima.
identificador
nombre_usuario
Nombre_Usuario
_variable_del_sistema
$transaccion
int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;
Operadores
Conocidos también como operandos, indican una evaluación o computación para ser realizada
en objetos o datos, y en definitiva sobre identificadores o constantes. Los operadores admitidos
por Java son:
+ ^ <= ++ %=
>>>= - ~ >= -
== <<= [ / ||
>> += ^= ] %
! >>> = != (
& < *= ) |
Tipos de Datos
Enteros: Estos tipos son byte, short, int y long, que guardan el signo valor, estos
representan un número y no pueden representar elementos fraccionarios.
Esto puede ser un buen ejemplo de declaración de tipos de datos enteros:
byte midato1 = 1;
short midato2 = 100;
int midato3 = 10000;
long midato4 = 100000000;
Fundamentos de Programación 41
e
Decimales: Estos son float y double y pueden almacenar números en coma flotante y
con signo, esto quiere decir que nos permiten representar números decimales.
Todos los literales de coma flotante son del tipo double salvo que se especifique lo
contrario, por eso si se intenta asignar un literal en coma flotante a una variable de tipo
float el compilador nos dará un error (tipos incompatibles):
double peso;
doublé talla;
float tamaño;
El tipo Caracter: Estos son de tipo char, String, que almacena la representación de los
caracteres (letras o números), un carácter está almacenado en 16 bits, y siguen un
estándar que es el Unicoide.
Char letra=’A’;
El tipo Lógico: Etos son los boolean, este solo guarda dos valores: verdadero (true) o
falso(false), y no como ocurre en otros lenguajes que toman los valores 0 y 1.
Fundamentos de Programación 42
e
Constantes
En Java, se utiliza la palabra clave final para indicar que una variable debe comportarse como
si fuese constante, significando con esto que no se permite su modificación una vez que haya
sido declarada e inicializada.
Variables
int edad,a_Actual;
double peso,tallar;
Tambien se le pude inicializar con un valor por ejemplo
int c=0, edad=23;
String nom=””,Ape=””;
Operadores Aritméticos
Java soporta varios operadores aritméticos que actúan sobre números enteros y números en
coma flotante. Los operadores binarios soportados por Java son:
Como se ha indicado anteriormente, el operador más (+), se puede utilizar para concatenar
cadenas, como se observa en el ejemplo siguiente:
Aunque Java y C++ soportan los mismos operadores relacionales, devuelven valores
diferentes. Los operadores relacionales en Java devuelven un tipo booleano, true o false;
mientras que en C++ devuelven un valor entero, en donde se puede considerar al valor cero
como false y a un valor no-cero como true.
Fundamentos de Programación 43
e
Los operadores relacionales combinados con los operadores condicionales (o lógicos en C++),
se utilizan para obtener expresiones más complejas. Los operadores condicionales que soporta
Java son:
&& Conector Y
|| Conector O
! Niega la expresión (No)
Fundamentos de Programación 44
e
Ventana de
Componente
Ventana de
s
Aplicaciones
Ventana
Structure
Ventana de Ventana de
Mensajes Propiedades
Fundamentos de Programación 45
e
Entorno de trabajo
Tiene las siguientes venta:
Structure(ventana de Structura)
Aquí se mostraran todos los objetos que se insertaron dentro
del Frame(se visualizaran con el nombre establecido).Ademas
se visualizaran los menus que se crean, y otros modales quese
puedan insertar dentro de la aplicación.
Fundamentos de Programación 46
e
Aquí mostraran
los errores que
ubiecen dentro
del código
Run Manager(Vetana)
Aquí se Mostraran todas las aplicaciones
que están ejecutadas
Fundamentos de Programación 47
e
1) Crear la Aplicación:
a) Dar click en New Application (ventana de aplicaciones) .
b) Al decir new saldrá esta ventana donde se establecerá el nombre de la aplicación (empezara con
App_Nombre) y la ruta a guardarse.
c) Deberá estar en la opción Java Aplication (JAVA. Swing).
d) Luego aceptar
Fundamentos de Programación 48
e
Nombre de la
Aplicación
Opcional
La ruta donde se
guardará la Aplicación
Fundamentos de Programación 49
e
2) Crear el proyecto: por defecto Java nos da el Client pero nosotros aprenderemos a
crear nuestro proyecto de la siguiente manera:
2
b) Deberá estar en
1 General seleccionado
la opción Projects y
en Items seleccionado
la opción Java
Application Project
3
c) Al dar aceptar pedirá
los pasos para la localización del proyecto; entonces dar siguiente en la primera
ventana.
d) La segunda ventana nos pedirá el nombre del Proyecto (asegúrate que el proyecto
este en la misma carpeta que tu aplicación).
e) Luego finalizar.
Fundamentos de Programación 50
e
3) Crear la Clase aquí se pondrá el nombre de la clase (empezara con Class_Nombre), luego
aceptar.
4) Crear el Frame.- presentara una ventana donde pondrá el nombre del Frame (empezando
con Frm_Nombre).
Fundamentos de Programación 51
e
Fundamentos de Programación 52
e
Ir al menú File y elegir Open o dar click en el icono luego seleccionar la unidad donde se
encuentre el archivo y deberá de seleccionar aquel archivo que tenga la extensión JWS (donde esta
todo el contenido de la aplicación).
Fundamentos de Programación 53
e
Name.- nos da el nombre de identificacion del Frame en este caso será por defecto this
Resizable.- devuelve True (en el caso que se quiera modificar la dimension de la ventana en
plena ejecucion) o False(no permite la modificacion de la dimension en plena ejecucion)
Las etiquetas, junto con los botones y las cajas de selección, son uno de los componentes más
básicos de todo interfaz de usuario, independientemente de que se hayan visto otros hasta
ahora, o el lector difiera de esta clasificación.
Su nomenclatura es lbl_Nombre
Fundamentos de Programación 54
e
Su nomenclatura es txt_Nombre
Propiedades
Fundamentos de Programación 55
e
Es un texto
Es una Etiqueta
h. Tooltiptext.- muestra un mensaje emergente cuando el puntero esta
encima del objeto
Su nomenclatura es btn_Nombre
Propiedades
Son similares a los del Jlabel y a los del JtextField. Lo que si debemos de especificar es que
cada una tiene su propio Name(que es la nomenclatura del objeto que lo identificara ).
a. Name.-nombre del objeto btn_Calcular
b. Text.- titulo que se reflejara en pantalla
c. Tooltiptext.- muestra un mensaje emergente cuando el puntero esta encima del
objeto.
Ejemplo
Todos los objetos JtextField por defecto devuelve un dato de tipo carácter es por ello que
cuando se lee a un texfield se debera de emplear la conversion del dato tales como:
Fundamentos de Programación 56
e
Es por ello que cada objeto de entrada y salida necesita de tener su Name(con sus respectivas
nomenclatura).
Ejemplos
1. Crear un pseudocodigo para ingresar nombres, apellidos, edad y estatura entonces seria
asi:
Paso 2:Ahora pensemos en el diseño. Sabemos que cada lectura sera un JtextField
entonces ingresa a JAVA y crea tu aplicación con su respectivo proyecto(Class y Frame).
Y con los controles swing comienza a diseñar quedando de la siguiente manera tu pantalla
Paso 3.- ejecuta el programa tan solo ubicate en la ventana de aplicaciones y dale click a
la class y presiona F5 o click en el icono
Fundamentos de Programación 57
e
Programa Suma_Producto
Variables
Entero: NOTA1, NOTA2, SUMA, PRODUCTO
Inicio
Leer (NOTA1, NOTA2)
SUMA = NOTA1 + NOTA2
PRODUCTO = NOTA1 * NOTA2
Escribir “La suma de las dos notas es:” SUMA
Escribir “El producto de las dos notas es:”, PRODUCTO
Fin_programa
btnCalcular
LUEGO tendrá que programar en el boton calcular.(ud. Dara doble click y aparecera la ventana
de codigo donde podra escribir).
Fundamentos de Programación 58
e
Contenidos
____________________________________________________________________________________
Estructuras Condicionales
Las estructuras condicionales comparan una variable contra otro(s) valor (es), para que en
base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe
mencionar que la comparación se puede hacer contra otra variable o contra una constante,
según se necesite. Existen tres tipos básicos, las simples, las dobles y las múltiples.
Simples:
Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas
tomas de decisión tienen la siguiente forma:
PseudoCodigo
Fundamentos de Programación 59
e
si (<expresión_lógica>) entonces
<acciones>
fin_si
JAVA:
if(Condición)
<Accion>; Cuando en java la condicional tenga una sola
acción es opcional las llaves, pero cuando la
if(Condición) { condición va a realizar más de 1 se tendrá que
<Accion 1>; poner llave abierta { y llave cerrada }.
<Accion 2>;
……
}
Dobles:
Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas
posibles en función del cumplimiento o no de una determinada condición. Se
representa de la siguiente forma:
PseudoCodigo
si (<expresión_lógica>) entonces
<acciones>
sino
<acciones>
fin_si
Fundamentos de Programación 60
e
JAVA:
Formato 1:
If (Condición)
<Accion>;
else
<Accion>;
Formato 2:
if(Condición) {
<Accion 1>;
<Accion 2>;
……
}
else{
<Accion 1>;
<Accion 2>;
……
Donde:
Fundamentos de Programación 61
e
1. Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe
aparecer un mensaje indicándolo. Expresarlo en Pseudocódigo.
variables
entero: edad
inicio
¡Es importante ser ordenado
leer(edad)
en el código que se escribe!
si(edad>=18)
escribir(“es mayor de edad”)
sino
escribir(“no es mayor de edad”)
fin_si
fin_programa
2. Se pide leer tres notas del alumno, calcular su promedio aritmético y enviar un mensaje
donde diga si el alumno aprobó o reprobó el curso. Exprese el algoritmo usando
Pseudocódigo:
variables
decimal: not1, not2, not 3,prom
inicio
leer(nota1, nota2, nota3)
prom= (not1 + not2 + not3) /3
si (prom<=10.4) entonces
escriba “reprobó el curso”
sino
escriba “aprobó el curso”
fin-si
fin_progama
3. Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o
igual a 150 cm envíe el mensaje: “Persona de altura baja”; si la altura está entre 151 y 170
escriba el mensaje: “Persona de altura media” y si la altura es mayor al 171 escriba el
mensaje: “Persona alta”. Exprese el algoritmo usando Pseudocódigo.
Fundamentos de Programación 62
e
variables
entero: altura
inicio
leer(altura)
si (altura <=150) entonces
escribir( “persona de altura baja”)
sino
si altura <=170 entonces
escribir(“persona de altura media”)
sino ¡Es importante ser ordenado
en el código que se escribe!
si altura>170 entonces
escribir( “persona alta”)
fin_si
fin_si
fin_si
fin_prorama
variables
entero: num1,num2,num3,suma,resta,multip
inicio
leer(num1,num2,num3)
si (num1>0 y num2>0 y num3>0 ) entonces
suma=num1+num2+num3
resta=num1-num2-num3 ¡Es importante ser ordenado
multip=num1*num2*num3 en el código que se escribe!
escribir(suma,resta,multip)
sino
escribir(“Los números no son positivos)
fin-si
fin_programa
Fundamentos de Programación 63
e
Fundamentos de Programación 64
e
variables
caracter: nombre
entero: edad
real: increm
inicio
leer(nombre,edad)
si (nombre=”Ana” o nombre=”Nancy” o nombre=”Juana” ) entonces
increm=edad*0.30
sino
increm=edad*0.90
fin-si
escribir(“El incremento en la edad es:”,increm)
fin_programa
Fundamentos de Programación 65
e
Área Presupuesto
Urgencias 37%
Pediatría 42%
Traumatología 21%
Obtener la cantidad de dinero que recibirá cada área para cualquier monto
presupuestal.
variables
caracter: area
real: Monto_Gen, p,increm
inicio
leer(area,Monto_Gen)
si(area=”Urgencia”)entonces
p=Monto_Gen*0.37
sino
si(area=”Pediatria”)entonces
p=Monto_Gen*0.42
sino
si(area=“Traumatologia”) entonces
p=Monto_Gen*0.21
fin_si
fin_si
fin_si
Fundamentos de Programación 66
e
area=txtar.getText();
Monto_Gen=Double.parseDouble(txtMg.getText());
if(area.equalsIgnoreCase("Urgencias"))
p=Monto_Gen*0.37;
else
if(area.equalsIgnoreCase("Pediatria"))
p=Monto_Gen*0.42;
else
if(area.equalsIgnoreCase("Traumatologia"))
p=Monto_Gen*0.21;
variables
entero: num,c1,c2
inicio
leer(num)
si(num>=10 y num<=99) entonces
c1=num div 10
Fundamentos de Programación 67
e
c2=num mod 10
si(c1=c2)entonces
escribir(“El numero es Capicua”)
sino
escribir(“El numero No es Capicua”)
fin_si
fin_si
fin_programa
Fundamentos de Programación 68
e
variables
entero: ts,ai,sb
real: inc,mc
constante
ac=2009
inicio
leer(ai,sb)
ts=ac-ai
si(ts>10) entonces
inc=0.25*sb
sino
si(ts>=5 y ts<=10)entonces
inc =0.15*sb
sino
inc =0.08*sb
fin_si
mc=sb-inc
escribir(“El incremento es:”,inc)
escribir(“El monto a cobrar es:”,mc)
fin_programa
Fundamentos de Programación 69
e
int ts,ai,sb;
double inc,mc;
//constante
ai=Integer.parseInt(txtai.getText());
sb=Integer.parseInt(txtsuel.getText());
ts=ac-ai;
if(ts>10)
inc=0.25*sb;
else
inc=0.15*sb;
else
inc=0.08*sb;
mc=sb+inc;
lblinc.setText("Incremento es:"+inc);
Fundamentos de Programación 70
e
EJERCICIOS DE APLICACIÓN
1. Se evalúa dos números. Visualiza como resultado el mayor de los números.
2. Se evalúa cuatro números. Muestre por pantalla el menor de los números.
3. Elabore un programa que lea 2 números enteros positivos y que muestre la suma y la
multiplicación de estos.
4. Elabore un programa que lea 3 números enteros positivos y que muestre la suma, la
resta y la multiplicación de todos. El resultado debe ser siempre positivo.
5. Un alumno desea saber cuál será su calificación final en la materia de Algoritmos.
Dicha calificación se compone de tres exámenes.
6. Elabore un programa que calcule la edad exacta de una persona, considere día, mes y
año.
7. Calcular el promedio de 3 notas, si el promedio mayor que 10.5 mostrar aprobado,
caso contrario desaprobado. Pero si la nota es mayor que 18 Saldrá también la
palabra “Excelente”.
8. Se tiene que evaluar cuatro notas de un alumno, como resultado se visualiza el
promedio del alumno junto con su condición de APROBADO o DESAPROBADO, si
esta aprobado y con 13 o más, saldrá el siguiente mensaje “Certificado en MS-
OFFICE”.
9. Igual que el ejercicio anterior, con la diferencia que el promedio que se obtiene es
considerando las tres mejores notas y además muestre la nota que no se tomo en
cuenta para el resultado.
10. Se debe de ingresa tres números. Muestre los tres números ordenados en forma
ascendente.
11. Se evalúa el precio de un producto, si el precio es superior a S/.30.00, se realizará un
incremento de 40% al precio y luego mostrar por pantalla el nuevo precio.
12. Se tiene un número que está en el rango de 4 a 10. Si el número ingresado es par,
muestre como resultado el cubo del número, de lo contrario muestre el 16% del
número.
13. Se tiene un número. Evalúa si es que está en el rango de -18 a 29 ó de 90 a 105 ó en
el rango de 140 a 250. Si el número es positivo, mostrara el doble del número; De no
ser positivo el número, mostrara la mitad del número.
14. Se tiene un número. Evalúa si el número está en el rango de -54 a -20 y si el segundo
digito es par. Muestre como resultado el doble del número y si no la tercera parte.
15. Se ingresa 4 números. Evalúa si el primero es mayor al segundo número y si la suma
del tercero con el cuarto es mayor a 167, de ser así muestre como resultado los
números ingresados ordenados en forma descendente.
16. Se ingresa 3 números. De ser todos impares, muestre como primer resultado la suma
de los tres números y como último resultado muestre el último dígito del valor impreso
anteriormente.
Fundamentos de Programación 71
e
17. Escriba un algoritmo que dado el número de horas trabajadas por un empleado y el
sueldo por hora, calcule el sueldo total de ese empleado.
18. Un maestro desea saber qué porcentaje de hombres y que porcentaje de mujeres hay
en un grupo de 30 estudiantes, para ello deberá de ingresar la cantidad de sexo
femenino y la cantidad de sexo masculino, ambas cantidades no debe de superar a la
cantidad de estudiantes.
19. Se ingresa el nombre y edad de la persona. Si el nombre ingresado fuese ANA, JUANA
ó NANCY, incrementar en 30% a la edad; de lo contrario la edad incrementara en
90%.
20. Se tiene 428 soles (Considere como valor entero).
Mostrar cuantos Billetes y monedas se necesitan como mínimo para pagar dicho valor,
tomando en cuenta que tenemos las siguientes denominaciones de billete y monedas:
Billetes de 200, de 100, de 50, de 20 y de 10 nuevos soles.
Monedas de 5, de 2 y un nuevo sol.
21. Se ingresa tres números. Si el tercer número es mayor a los demás, se debe de
mostrar el promedio de los números ingresados; de lo contrario evaluar si los tres
números son impares, si es así, muestre cada uno de los números con un incremento
del 89%.
22. Se ingresa un número entero. Si el número es de tres dígitos positivo muestre dicho
número en romanos.
23. Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas
extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden
de 40, el resto se consideran horas extras y que éstas se pagan al doble de una hora
normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las
primeras 8 al doble de lo que se paga por una hora normal y el resto al triple.
24. Se desea agregar una letra para representar la calificación de los alumnos, las
calificaciones son notas entre 1 y 20; use los siguientes parámetros: A para
calificaciones mayores o iguales a 17-20, B para calificaciones mayores o iguales a 14-
16, C para calificaciones mayores o iguales a 11-13, D para calificaciones menores o
iguales a 10-7, F para todas las calificaciones menores a 7.
25. En un hospital existen 3 áreas: Urgencias, Pediatría y Traumatología. El presupuesto
anual del hospital se reparte de la siguiente manera:
Área Presupuesto
Urgencias 37%
Pediatría 42%
Traumatología 21%
Obtener la cantidad de dinero que recibirá cada área para cualquier monto
presupuestal. Deberá de ingresar los montos por cada Área.
Fundamentos de Programación 72
e
37. Nuestra empresa calcula las comisiones a sus vendedores en función de la categoría a
la que pertenece.
Los porcentajes según la categoría a la que pertenece son:
Categoría A 2%
B 8%
C 12%
Fundamentos de Programación 73
e
38. La misma empresa anterior nos propone una ampliación para, en función de la
categoría y las unidades vendidas, calcule las comisiones a sus vendedores. Estos
cálculos los realiza utilizando la siguiente tabla
Ventas Comisión
Menos de 100 n_ventas * 100$ * Porcentaje categoría * 2
Entre 100 y 199 n_ventas * 100$ * Porcentaje categoría * 3
Más de 199 n_ventas * 100$ * Porcentaje categoría * 4
39. Supongamos que tras un año de uso del anterior programa la empresa decide que el
programa necesita modificar su funcionamiento en base a si el trabajador a superado la
media de ventas de los demás trabajadores. Supongamos que el número de
trabajadores es 4 y que su comisión se verá reducida a la mitad si no ha llegado a la
media aritmética de ventas de todos los trabajadores y se multiplicará por 2 si ha
llegado o ha superado la media.
40. El director general de la empresa que nos ha contratado el desarrollo, nos pide que
modifiquemos el funcionamiento del programa para que si el usuario pertenece a la
categoría C y no supera un mínimo de ventas de 100 se muestre un mensaje avisando
que este vendedor ya no pertenecerá la categoría C pasando a pertenecer a la
categoría B.
Realizar esta modificación para que, sin perder las opciones de los puntos anteriores,
al final del cálculo de la comisión, avise si el trabajador cambia o no de categoría.
Fundamentos de Programación 74
e
Contenidos
- Estructuras Selectivas Anidadas.
- Control de Decisión: JcheckBox
- Método isSelected().
- Control de Decision JRadioButton(Custon ButtonGroup). Método add. Método isSelected
____________________________________________________________________________________
Metodos:
Fundamentos de Programación 75
e
Realicemos este ejemplo: usando Check : En el caso del seguro es el 7% del sueldo y
en los casos de faltas y tardanzas se da un valor fijo de 50 y 30 soles al activar el
check.
Insertar 4 Jlabel
El primero: Text =
Borde = Title Descuentos
El segundo: Text =
Name = lblS
El tercero: Text =
Name = lblF
El cuarto: Text =
Name = lblT
Fundamentos de Programación 76
e
double seguro;
int su=Integer.parseInt(txtS.getText());
if(chkS.isSelected()==true)
seguro=0.07*su;
else
seguro=0;
lblS.setText(""+seguro);
lblF.setText(""+falta);
}
3er Paso
Guarda tu archivo
Y elige la clase y ejecuta(puedes presionar F11).
Fundamentos de Programación 77
e
JRadioButton
Los Botones de Radio son grupos de botones en los que, por convención, sólo uno de
ellos puede estar seleccionado.
Por lo tanto se tendrá que usar la clase ButtonGroup para poder crear grupos y tener
radios independientes y poder activar solo uno de ellos como por ejemplo.
GrpSexo GrpEstCiv
Entonces hagamoslo:
1er Paso (Realiza el Diseño y establece lo nombres y formatos)
Para crear Grupos con la Clase ButtonGroup tendremos que realizar lo siguiente:
Ir al source del Frame.
Ubicarse en el
Fundamentos de Programación 78
e
2do Paso (debemos de realizar esto para que solo se pueda seleccionar uno de cada
grupo).
//Grupo de Sexo
GrpSexo.add(rbtM); Y antes que termine la
GrpSexo.add(rbtV); llave del jbInit escribe
//Grupo de Estado Civil
GrpEstCiv.add(rbtC);
GrpEstCiv.add(rbtS);
GrpEstCiv.add(rbtVi);
}
3er Paso
Guarda tu archivo
Y elige la clase y ejecuta(puedes presionar F11).
Fundamentos de Programación 79
e
6. Ahora ejecuta y tendra que salir como el ejemplo anterio y por cada radio que elijas
saldra un monto diferente
Observación:
Al diseño que tienes puedes agregarle un Botón y dar el resultado cada vez que
presionemos en el.
Fundamentos de Programación 80
e
if(rbtGes.isSelected())
mon=250;
if(rbtGas.isSelected())
mon=320;
lblMon.setText(""+mon);
Fundamentos de Programación 81
e
Contenidos
_________________________________________________________________________________
<lista_de_valores> : <acciones>
[sino
<acciones>]
fin_cuando
Fundamentos de Programación 82
e
Descripción:
EJEMPLOS:
variables
entero: dia
inicio
leer(dia)
cuando(dia) sea
caso 1: escribir(“lunes”)
caso 2: escribir(“martes”)
caso 3: escribir(“miércoles”)
caso 4: escribir(“jueves”)
caso 5: escribir(“viernes”)
caso 6: escribir(“sábado”)
caso 7: escribir(“domingo”)
sino: escribir(“escribió un numero fuera del rango 1-7”)
fin_cuando
fin_programa
2. Que calcule el monto de una multa por exceso de velocidad. El conductor será multado si
la velocidad del auto es mayor a 60 Km/h. Las multas se aplicaran de acuerdo a los
siguientes rangos:
VELOCIDAD MULTA
Fundamentos de Programación 83
e
Practiquemos:
Realiza el diseño para cada uno de estos caso.
Fundamentos de Programación 84
e
Nomenclatura
cboNombre
Metodos
addItem.- permite agregar datos hacia el combo
getSelectedIndex().- que devuelve el orden del elemento seleccionado en un tipo de
dato entero.
getSelectedItem().- que devuelve el contenido seleccinado del combo; y algo
importante como debemos de sacar el contenido debemos de realizar un casting
utilizando el .toString(), como por ejemplo así :
String ver=cboTipo.getSelectedItem().toString();
Como Usarlo:
cbotipo.addItem("Darle el Valor");
Int orden=nombreCombo.getSelectedIndex();
String Dato= nombreCombo.getSelectedItem().toString;
nombreCombo.removeAllItems;
3 Pasos Importantes:
Fundamentos de Programación 85
e
Caso 1:
Establecer una Lista de Nombres de los Tipo de Letras. Debe de quedar como se muestra en
el Ejemplo.
cbotipo.addItem("Arial");
cbotipo.addItem("Comis Sans");
cbotipo.addItem("Book Antigua");
cbotipo.addItem("Calibri");
Caso 2:
Establecer una Lista de Estado Civil y de Areas. Debe de quedar como se muestra en el
Ejemplo.
Fundamentos de Programación 86
e
Caso 3:
Tomando en cuenta el ejemplo anterior de acuerdo al area debemos de establecer el sueldo.
Procedimiento:
4. Entonces despues de los primeros 3 pasos lo que haremos es ahora dar doble click en el
combo y codificamos.
int sueldo=0,orden;
orden =cboArea.getSelectedIndex();
switch(orden){
case 0: sueldo=980;
break;
case 1: sueldo=1000;
break;
case 2: sueldo=1080;
break;
case 3: sueldo=1100;
break;
lblSueldo.setText(""+sueldo);
Fundamentos de Programación 87
e
Contenidos
____________________________________________________________________________________
La Clase Math
La clase Math representa la librería matemática de Java. Las funciones que contiene son las
de todos los lenguajes, parece que se han metido en una clase solamente a propósito de
agrupación, por eso se encapsulan en Math, y lo mismo sucede con las demás clases que
corresponden a objetos que tienen un tipo equivalente (Character, Float, etc.). El constructor de
la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math
es public para que se pueda llamar desde cualquier sitio y static para que no haya que
inicializarla.
float max;
z = Math.pow( 2,4 ); // eleva el número 2 a la cuarta.
max = Math.max(45,80 ); // devuelve el numero mayor entre los 2 números
System.out.println("El 2 al exponente de 4 es :"+ z );
System.out.println("El numero mayor entre 45 y 80 es: "+ max );
Fundamentos de Programación 88
e
1. Determinar el importe a pagar por un alumno de un Instituto cuya cuota tiene un porcentaje
de descuento que se establece en la siguiente tabla y está en función al instituto de
procedencia del alumno y su categoría.
CATEGORIA
Instituto A B C
Nacional 50% 40% 30%
Particular 25% 20% 15%
variables
Carácter: cat,ins
real: porcI, Importe
inicio
leer(cat,inst,cuota)
cuando(cat) sea
caso “A”:
cuando(ins) sea
caso “Nacional”: porcI=0.50 * cuota
caso “Particular”: porcI=0.25 * cuota
fin_cuando
caso “B”:
cuando(ins) sea
caso “Nacional”: porcI=0.40 * cuota
caso “Particular”: porcI=0.20 * cuota
fin_cuando
caso “C”:
cuando(ins) sea
caso “Nacional”: porcI=0.30 * cuota
caso “Particular”: porcI=0.15 * cuota
fin_cuando
fin_cuando
importe=cuota+porcI
escribir(porcI,importe)
fin_programa
Fundamentos de Programación 89
e
2. La empresa “Clarito” esta realizando ofertas aquellas personas donde sus montos sean:
Montos menos de 50 : descuento 0
Montos entre 50 y 120 : descuento 15%
Montos más de 120 y menos de 450 : descuento 23%
Mas o igual a 450 : descuento 45%
variables
real: monto,des,total
inicio
leer(monto)
si(monto<50)entonces
des=0
sino
si(monto>=50 y monto <=120)entonces
des=0.15*monto
sino
si(monto>120 y monto <=450)entonces
des=0.23*monto
sino
des=0.45*monto
fin_si
fin_si
fin_si
total=monto-des
escribir(“Total a pagar es: ”+total)
fin_programa
3. Ingrese un numero donde deberá de ser positivo y tener 2 o hasta 4 dígitos, por lo tanto
muestre la quinta parte de dicho numero solo si el numero es par, en caso contrario
muestre la raíz cuadrada, si el numero no tuviera el rango de dígitos solo deberá mostrar el
mismo número.
variables
entero: numero
inicio
leer(numero)
si(numero>0))entonces
si(numero >=10 y numero <=9999)entonces
si(numero mod 2=0)
r=numero/5
Fundamentos de Programación 90
e
sino
r=numero^(1/2)
fin_si
escribir(r)
sino
escribir(numero)
fin_si
fin_si
fin_programa
variables
entero: Monto
inicio
leer(Monto)
si(b200>0)entonces
sino
fin_si
si(b100>0)entonces
sino
Fundamentos de Programación 91
e
fin_si
si(b50>0)entonces
sino
Fundamentos de Programación 92
e
Contenidos
- Resolución de Aplicaciones.
- Uso de la Clase Math (abs,sqrt,log,etc)
- Casos resueltos en Java
- Describir los siguientes métodos: equalsIgnoreCase(), equals(), Ejemplos
____________________________________________________________________________________
Desarrollo de Casos
1. Determinar el importe a pagar por un alumno de un Instituto cuya cuota tiene un porcentaje
de descuento que se establece en la siguiente tabla y está en función al instituto de
procedencia del alumno y su categoría.
CATEGORIA
Instituto A B C
Nacional 50% 40% 30%
Particular 25% 20% 15%
int cat,ins;
double porcI=0, importe,cuota;
cat=cboCat.getSelectedIndex();
ins=cboCole.getSelectedIndex();
cuota=Double.parseDouble(txtP.getText());
Fundamentos de Programación 93
e
switch(cat) {
case 0:
switch(ins){
case 0: porcI=0.50 * cuota;
break;
case 1: porcI=0.25 * cuota;
break;
}
break;
case 1 :
switch(ins){
case 0: porcI=0.40 * cuota;
break;
case 1: porcI=0.20 * cuota; Recordemos que en el lenguaje Java al utilizar
break; ComboBox y al trabajar con el switch
} debemos de trabajar con el orden de los
seleccionad. En el caso de la categoría solo hay
break;
3 entonces será el orden 0,1 y 2. En el caso
case 2:
instituto por ser 2 trabajemos como el orden 0
switch(ins){
y 1 (particular y nacional).
case 0: porcI=0.30 * cuota;
break; Una estructura dentro de otra será Anidada,
no olvidemos del break (salto de línea) y esto
case 1: porcI=0.15 * cuota;
se establecer por cada uno de los casos.
break;
}
break;
}
importe=cuota-porcI;
lblDsct.setText(""+porcI);
lblNeto.setText(""+importe);
}
Fundamentos de Programación 94
e
La Clase Math
La clase Math representa la librería matemática de Java.
Si se importa la clase, se tiene acceso al conjunto de funciones matemáticas estándar:
Ejemplo 01: Inserte un botón y escriba este código, donde estamos empleado métodos de la
clase Math.
//Variables
int x;
double rand,y;
// Inicio
Fundamentos de Programación 95
e
Funciones trigonométrica
Fundamentos de Programación 96
e
Fundamentos de Programación 97
e
double x = 72.3543;
double y = 0.3498;
System.out.println(x + " es aprox. " + (double)Math.round(x*100)/100);
System.out.println(y + " es aprox. " + (double)Math.round(y*100)/100);
/*Se obtiene 72.35 y 0.35 como cabría esperar.
Fijarse que round devuelve un número entero int que es necesario promocionar
a double para efectuar la división entre 100.
Si empleamos la función floor en vez de round obtendríamos*/
Ejemplo: de 72.35 y 0.34 se obtiene. La aproximación del primero es correcta ya que la tercera
cifra decimal es 4 inferior a 5. La aproximación del segundo es incorrecta ya que la tercera
cifra decimal es 9 mayor que 5. En la mayor parte de los cálculos se cometen errores, por lo
que la diferencia entre floor y round no es significativa.
Fundamentos de Programación 98
e
Para hallar el mayor y el menor de dos números se emplean las funciones min y max
que comparan números del mismo tipo.
int i = 7;
int j = -9;
double x = 72.3543;
double y = 0.3498;
// para hallar el menor de dos número
System.out.println("min(" + i + "," + j + ") es " +
Math.min(i,j));
System.out.println("min(" + x + "," + y + ") es " +
Math.min(x,y));
// Para hallar el mayor de dos números
System.out.println("max(" + i + "," + j + ") es " +
Math.max(i,j));
System.out.println("max(" + x + "," + y + ") es " +
Math.max(x,y));
Fundamentos de Programación 99
e
int i = 7;
int j = -9;
double x = 72.3543;
double y = 0.3498;
System.out.println("el 1er valor es : " + i);
System.out.println("el 2do valor es : " + j);
System.out.println("el 3er valor es :" + x);
System.out.println("el 4to valor es :" + y);
// Valor absoluto de un número
System.out.println("Valor absoluto de |" + i + "| es " + Math.abs(i));
System.out.println("Valor absoluto de |" + j + "| es " + Math.abs(j));
System.out.println("Valor absoluto de |" + x + "| es " + Math.abs(x));
System.out.println("Valor absoluto de |" + y + "| es " + Math.abs(y));
CASOS RESUELTOS
Caso 01: De acuerdo a la velocidad excesiva del conductor se le multara de acuerdo a:
Velocidad entre 60 a 100 multa es 120.
Velocidad mas de 100 a 130 multa es 150.
Velocidad mas de 130 multa es 220.
Ademas otro incremento si no utiliza cinturon de seguridad.
Pseudocodigo
Variables
entero: veloc,multa
decimal: inc,mp
lógico: rbtC, rbtNC
INICIO
leer (veloc,estado)
si(veloc>60 y veloc<=100)entonces
multa=120
fin_si
si(veloc>100 y veloc<=130)entonces
multa=150
fin_si
si(veloc>130)entonces
multa=220
fin_si
si(rbtC=verdadero)entonces
inc=0
fin_si
si(rbtNC=verdadero)entonces
inc=0.5*multa
fin_si
mp=multa+inc;
escribir (veloc,multa,inc)
FIN
Java
private void jbInit() throws Exception {
……………………………..
……………………………..
GrupoVelocidades.add(rbtC);
GrupoVelocidades.add(rbtNC);
mp=multa+inc;
lblmulta.setText(""+multa);
lblinc.setText(""+inc);
lblmp.setText(""+mp);
}
Caso 02:De acuerdo al consumo del cliente se le realizara el siguiente descuento pero
ademas el consumo tendrá un pago adicional que sera el igv.
Consumos hasta S/. 60 se le descuenta el 7.5%
Consumos mas de S/. 60 se le descuenta 12%.
Mostrar los datos calculados y el pago neto.
Pseudocodigo
Variables
entero: con
decimal: des,igv,mc
INICIO
leer (con)
si(con>0&con<=60)entonces
des=0.075*con
fin_si
si(con>60)entonces
des=0.12*con
fin_si
igv=0.19*con
mc=con-des+igv
escribir (veloc,multa,inc)
FIN
JAVA
mc=con-des+igv;
lbldes.setText(""+des);
lbligv.setText(""+igv);
lblmc.setText(""+mc);
}
Pseudocodigo
Variables
caracter: m
entero: nac,eea
INICIO
leer (nac)
eea=2010-nac
si(eea>=18)entonces
m=", Usted es mayor de edad"
sino
si(eea>0 y eea<18)entonces
m=", Usted aún es menor de edad"
fin_si
fin_si
FIN
JAVA
String m="";
int nac,eea;
nac=Integer.parseInt(txtnac.getText());
eea=2010-nac;
if(eea>=18)
m=", Usted es mayor de edad";
else
if(eea>0&eea<18)
m=", Usted aún es menor de edad";
Caso 4 Que admita el ingreso de dos números y muestre cual es menor, mayor o si estos
fueren iguales.
Ejemplo:
Ingresa 100 92
Muestra: El primero es mayor que el segundo
Pseudocodigo
Variables
caracter: r
entero: n1,n2
INICIO
leer (n1,n2)
eea=2010-nac
si(n1>n2)
r="en primero es mayor que el segundo"
sino
si(n1=n2)
r="Ambos numeros son iguales";
sino
si(n1<n2)
r="el segundo es mayor que el primero";
fin_si
fin_si
fin_si
escribit(r)
FIN
Caso 05: La tienda FERSA presenta la siguiente escala de descuentos de acuerdo a los
montos de compra:
Total (S/.) Dcto (%)
Mayor a 120 12
Mayor a 180 15
Mayor a 250 21
Que considere el neto a pagar por un usuario sabiendo que adicionalmente se cobrara el
IGV.
Pseudocodigo
Variables
entero: mca
decimal: descuento=0,igv=0,neto
INICIO
leer (mca)
si(mca>0 y mca<=120)entonces
descuento=0
sino
si(mca>120 y mca<=180)entonces
descuento=0.12*mca
sino
si(mca>180&mca<=250)entonces
descuento=0.15*mca
sino
si(mca>250)entonces
descuento=0.21*mca
fin_si
fin_si
fin_si
igv=0.19*mca;
neto=mca-descuento+igv;
escribit(descuento,igv,neto)
FIN
JAVA
if(mca>120&mca<=180)
descuento=0.12*mca;
if(mca>180&mca<=250)
descuento=0.15*mca;
if(mca>250)
descuento=0.21*mca;
igv=0.19*mca;
neto=mca-descuento+igv;
lbldescuento.setText(""+descuento);
lbligv.setText(""+igv);
lblneto.setText(""+neto);
}
if(hijos>0&hijos<=3)
mh=60*hijos;
if(hijos>=4&hijos<=6)
mh=85*hijos;
if(hijos>6)
mh=185*hijos;
if(rbtV.isSelected()==true)
mm=(mh+55);
if(rbtC.isSelected()==true)
mm=(mh+25);
if(rbtS.isSelected()==true)
mm=(mh+10);
lblmh.setText(""+mh);
lblmm.setText(""+mm);
Caso 07: La Empresa CLARITO cobra por el servicio de minutos de llamadas locales de
acuerdo a la siguiente escala: Si el número de minutos no excede a los 80, la tarifa por minuto
es de S/. 0.45 y si fuera mayor la tarifa por minuto adicional será de S/. 0.52. PC: Que muestre
el total a pagar por el servicio local considerando IGV.
Caso 08: Un usuario desea adquirir un televisor de 21” por lo tanto le ofrecen los
descuentos de acuerdo a la marca. Que muestre el neto a pagar por el usuario en
soles sabiendo que se tiene las siguientes ofertas:
MARCA PRECIO $ CON DCTO
SAMSUNG 370*
PHILIPS 365
AIWA 320
LG 299*
PANASONIC 280
Los artículos indicados con *, adicionalmente tendrán un descuento de 12.5%. Considerar
IGV del 19%.
private void lblrestablecer_actionPerformed(ActionEvent e) {
lblprecio.setText("");
lbldescuento.setText("");
lbligv.setText("");
lblmp.setText("");
cbomarcas.setSelectedIndex(0);
}
case 2:
if(rbtN.isSelected()==true)
descuento=0.4*cuota;
if(rbtP.isSelected()==true)
descuento=0.2*cuota;
break;
case 3:
if(rbtN.isSelected()==true)
descuento=0.3*cuota;
if(rbtP.isSelected()==true)
descuento=0.15*cuota;
break;
}
tp=cuota-descuento;
lbldescuento.setText(""+descuento);
lbltp.setText(""+tp);
Caso 10: Calcule el sueldo de un empleado a partir de su sueldo bruto. Sobre este sueldo
se harán los siguientes descuentos:
Descuentos fijos:
Descuentos variables:
0–5 15.0
6 – 10 18.0
11 - 15 20.0
Más de 15 25.0
Estos porcentajes se aplicaran sobre el sueldo bruto y en ningún caso sobrepasaran los S/.
500.00. Los empleados pueden ser de 3 categorías (A, B, C). Los de categoría A recibirán
la bonificación calculada, los de la categoría B recibirán la mitad y los de la categoría C
recibirán la cuarta parte.
GrpDescVaria.add(rbtCoo);
GrpDescVaria.add(rbtSin);
GrpCategoria.add(rbtA);
GrpCategoria.add(rbtB);
GrpCategoria.add(rbtC);
cboAs.addItem("Seleccionar Tiempo");
cboAs.addItem("0 - 5");
cboAs.addItem("6 - 10");
cboAs.addItem("11 - 15");
cboAs.addItem("16 a mas");
if(chkS.isSelected()==true)
s=0.11*sb;
else
s=0;
//Descuentos Variables
if(rbtCoo.isSelected()==true){
dv=0.03*sb;
if(dv>15)
dv=15;
}
if(rbtSin.isSelected()==true)
dv=0.06*sb;
//Calculos finales
td=j+s+dv;
tb=b1+b2;
sn=sb+tb-td;
//Salida de Datos
lblJ.setText(""+j);
lblS.setText(""+s);
lblV.setText(""+dv);
lblB.setText(""+b1);
lblB2.setText(""+b2);
lblDes.setText(""+td);
lblBoni.setText(""+tb);
lblSn.setText(""+sn);
}
// variables locales
double A,B,C,D,E,mayor,menor,promedio;
//Leer 5 numeros
A = Double.parseDouble(txtN1.getText());
B = Double.parseDouble(txtN2.getText());
C = Double.parseDouble(txtN3.getText());
D = Double.parseDouble(txtN4.getText());
E = Double.parseDouble(txtN5.getText());
//encontrar el mayor
mayor = A; // asume que es el primero
// compara con los restantes, quedandose con el mayor
if(B > mayor) mayor = B;
if(C > mayor) mayor = C;
if(D > mayor) mayor = D;
if(E > mayor) mayor = E;
// imprimir el mayor
lblSalida1.setText("El número mayor es: " + mayor + "\n");
//encontrar el menor
menor = A; // asume que es el primero
// compara con los restantes, quedandose con el mayor
if(B < menor) menor = B;
if(C < menor) menor = C;
if(D < menor) menor = D;
if(E < menor) menor = E;
// imprimir el menor
lblSalida2. setText ("El número menor es: " + menor + "\n");
// encontrar el promedio
promedio = (A + B + C + D + E) / 5;
// imprimir el promedio
lblSalida3. setText ("El promedio es\t: " + promedio + "\n");
caso 12: Establezca el subsidio familiar de acuerdo a la cantidad de hijos, hijos en escolaridad
y al estado civil.
Si tine hasta 2 hijos recibe 100
Si tiene hasta 5 hijos recibe 190
Mas hijos 210.
Por cada hijo en edad escolar recibe el S/.10 por cada hijo
Si es viuda recibe S/.20
Muestre el neto a cobrar.
Realice el diseño
// variables locales
int nhijos,hijosEsc;
double sub1, sub2, sub3, subsidio;
//imprimir subsidios
lblSalida1.setText("Subsidio por:\n\n");
lblSalida2.setText ("Total de hijos\t:"+ sub1 + "\n");
lblSalida3.setText ("Hijos escolares\t:"+ sub2 + "\n");
lblSalida4.setText ("Viudez\t:"+ sub3 + "\n\n");
lblSalida5.setText ("Subsidio total\t: "+ subsidio + "\n");
EJERCICIOS DE APLICACIÓN
1. Que admita el ingreso de 3 números, e imprima cuál de ellos son los 2 primeros mayores.
2. Que admita el ingreso de 3 números, e imprima cuál de ellos es mayor así como el
promedio de los dos mayores.
3. Que admita el ingreso de 3 números, e imprima el promedio del primer mayor y el menor,
en el caso que el promedio sea mayor a 90 entonces mostrara el promedio de los 3
números.
4. PC: Que admita el ingreso de un registro de fecha, en el formato día, mes, año, e imprima
si este es o no correcto. Considere años bisiestos.
Ejemplo
32 04 2008 Errado
28 12 1975 Correcto
5. PC: Que admita el ingreso de un numero entero comprendido entre 0 y 6, estos números
corresponden a días de la semana según: 0 Domingo, 1 Lunes, 2 Martes… Su programa
deberá mostrar literalmente el nombre del día de la semana al que corresponde el número
ingresado.
6. PC: Que acepte una fecha bajo el formato que se indica, imprimiendo esta en forma
numérica totalmente.
Ejemplo
7. PC: Que determine el neto a cobrar por un trabajador sabiendo que tiene derecho a una
bonificación dependiendo de su estado civil y del número de hijos, según:
ESTADO CIVIL PORCENTAJE
Casado 15
Viudo 17
Soltero 8
Adicionalmente se le abonara el 1.5% por cada hijo con un máximo de 6%.
8. PC: Que admita el ingreso de un numero entero positivo menor a 1000 e imprima si este es
par o impar.
9. PC: Que permita ingresar las 3 notas de un alumno del I.S.T. en el curso Fundamentos de
Programación. Imprimir el promedio si se anula la nota más baja.
10. PC: Que permita ingresar los nombres y precios de 3 productos diferentes de una farmacia.
Imprimir el nombre del producto más barato y el promedio de los tres.
11. PC: Que muestre le neto a pagar por un DVD sabiendo que la tienda se encuentra en
realización ofreciendo los siguientes descuentos:
SAMSUNG 12 13
PANASONIC 14 12
LG 12 14
SONY 13 15
12. PC: Que permita a un alumno de SISE, actualmente de tercer ciclo, calcular el promedio
correspondiente al curso de Taller de Software 3, sabiendo que este se obtiene según:
Adicionalmente se deberá mostrar junto al promedio la observación aprobada en el caso
que el promedio final sea mayor a 10 o desaprobado en caso contrario:
7.5
13. Modificar el ejemplo anterior considerando que, si el alumno no aprobara el curso tendrá
derecho a un examen de recuperación, si vuelve a desaprobar el curso debe de dar un
examen a cargo, en el caso que el primer promedio sea desaprobado, dicho promedio
debe ser mayor a 07 donde dicha nota será su promedio final automático.
14. PC: Que muestre el neto a imprimirse en la boleta de pagos de un alumno sabiendo que el
monto depende de la carrera en la cual se encuentra matriculado según:
CARRERA MONTO
CACI 275
GESTION 260
EDUCACION 260
EOS 240
15. Desarrollar un programa que nos permita ingresar los votos de N ciudadanos para los
siguientes candidatos a ocupar un cargo muy importante en la OMS:
CANDIDATO PARTIDO
16. PC: Que permita ingresar el precio de un artefacto, considere descuentos del 20%. En el
caso que el precio a pagar supera los S/. 500 aparecerá un mensaje que diga “Se lleva una
Lavadora LG” caso contrario dirá “Se lleva una lavadora Samsung”.
17. PC: Que imprima la bonificación de un empleado del Banco Las Ameritas de acuerdo a las
tablas siguientes, si se sabe que:
Tiempo Porcentaje
Servicio de(años) bonificación
1-3 17%
4-6 21%
7-15 29%
15 a más 52%
CATEGORIA Porcentaje
De bonificación
A-B 11%
C-D 22%
OTROS 33%
18. PC: Que calcule el costo de mudanza de acuerdo a la distancia entre el punto de partida y
el de llegada, el tipo de carga y el número de viajes de ida y vuelta. Para el costo final se
tomara en cuenta:
Si la distancia por cada viaje es mayor o igual a 5Km. Se cobrara S/. 5.00 por kilómetro, de
lo contrario se cobrara el monto básico que es igual a S/. 25.00
La carga puede ser frágil o no frágil. Solo si la carga es frágil al monto calculado
anteriormente se le incrementara el 25%
19. PC: Que calcule el promedio de un alumno, el alumno podrá tener 2, 3 o 4 notas, dicha
cantidad de notas se tendrá que ingresar no se puede ingresar una sola nota, deber ser de
2 a 4 notas. Si tiene 2 notas se deberán promediar ambas, si tuviera 3 se promediaran las
dos mejores y si tuviera 4 se promediara de la siguiente manera:
Si la suma de notas es mayor a 70 se eliminara la más baja.
20. PC: Que determine el mayor y el menor de cuatro números cualquiera. Considere que los
cuatro valores son diferentes.
21. Desarrollar un programa que nos permita ingresar la edad del Fast presidente del CAEMS
y muestre a que etapa de la vida pertenece (Niñez, Infancia, Adolescencia,…)
22. PC: Que calcule el monto que debe pagar el socio de un club por derecho de pertenencia.
Si es socio EXCLUSIVO, pagara S/. 500.00, si es socio EJECUTIVO pagara S/. 300.00 y si
es socio REGULAR pagara S/. 150.00. Si el socio tiene deuda tendrá un recargo del 15%
sobre el total de su deuda. En ningún caso el recargo será mayor de S/. 120.00 ni menor
de S/. 30.00.
23. Determine el monto a pagar en el recibo de Agua. Esto depende del consumo de agua por
litros donde dicho valor depende de:
24. PC: Que calcule el sueldo mensual de un obrero que gana a destajo de acuerdo a las
prendas que confecciona. La tarifa para el pago depende de la prenda que termina de
acuerdo al siguiente cuadro:
Los obreros durante el mes pueden confeccionar solo un tipo de prenda. Si el obrero
confecciona más de 700 unidades recibirá una bonificación de acuerdo a su categoría,
como se indica en el cuadro siguiente:
CATEGORIA BONIFICACION
A 250.00
B 150.00
C 100.00
D 50.00
Al final presentar el sueldo neto, cada uno de los descuentos y la bonificación. Los
resultados se mostraran con dos decimales.
25. PC: Que calcule el monto mensual a pagar por un servicio de atención medica. El
policlínico brinda atención de salud solo a sus asegurados, los cuales se dividen en cuatro
categorías, cada una con una tarifa básica que se paga mensualmente:
CATEGORÍA TARIFA (S/.) POLICLÍNICO DOMICILIO
A 100 10 3
B 80 7 2
C 60 5 1
D 40 3 -
Si el asegurado asiste a más consultas que las indicadas en el cuadro anterior deberá
pagar por consulta adicional: S/. 15.00 por consulta en el policlínico y S/. 20.00 por consulta
a domicilio. Si el asegurado es mayor a 75 años, recibirá el siguiente descuento respecto al
total según su categoría:
CATEGORÍA DESCUENTO
A, B 30 %
C, D 25 %
Se deberá mostrar el monto total a pagar.
26. PC: Que calcule el monto a pagar por una licencia municipal. El monto de la licencia
dependerá de la zona donde se encuentra el negocio, el área que ocupa y el giro de este.
De acuerdo a la ubicación el monto de la licencia por metro cuadrado será el que se indica
en el siguiente cuadro:
ZONA
UBICACIÓN COMERCIAL PRINCIPAL LATERAL
($/M2) ($/M2) ($/M2)
Miraflores (M) 15 13 10
San Isidro (S) 12 10 8
Lince (L) 10 9 6
Jesús Maria (J) 14 12 10
27. PC: Que calcule el monto por impuesto predial. El impuesto dependerá del área que ocupa
la casa (Ingresado por teclado), de los años de construcción y del material de construcción.
Para calcular el impuesto debe considerarse el siguiente cuadro:
0-5 2.00
6 – 10 1.20
11 – 15 0.85
16 a más 0.25
Concreto 25
Ladrillo 12
Adobe 3
28. PC: Que calcule el pago que se debe realizar por transporte de carga interprovincial. La
empresa que brinda este servicio solo tiene 4 destinos y de acuerdo a ellos tiene tarifas
básicas, las cuales se indican en el siguiente cuadro:
DESTINO TARIFA ($)
Ica 100.00
Arequipa 450.00
Chimbote 300.00
Trujillo 350.00
Las tarifas pueden variar de acuerdo a la modalidad del servicio incrementándose la tarifa
básica de acuerdo al siguiente cuadro:
Servicio DESTINO
Natural Ica 0
Arequipa 9
Chimbote 10
Trujillo 13
Empresa Ica 3
Chimbote 7
Si el cliente es una persona natural las tarifas básicas tendrán otro incremento adicional de
5% por seguro. Los montos por el servicio se mostraran en soles y dólares.
Contenidos
- Estructuras de Repetición
- Concepto de Bucle: bucle finito
- Elementos de un Bucle: Contadores, Acumuladores, Banderas
- Tipos de estructura de repetición
- Estructura de Repetición – Mientras
____________________________________________________________________________________
Estructura de Repetición
Concepto de Bucle
En programación, un bucle es un tipo de estructura de control que permite repetir una o más
sentencias múltiples veces.
Todos los bucles se ejecutan mientras se cumpla una determinada condición, mientras esa
condición sea verdadera, el bucle seguirá ejecutándose.
Si hay algún error en el código, el bucle podría ejecutarse una y otra vez, entrando en un bucle
infinito.
Bucle infinito se considera un error de programación, a menos que ese sea el resultado
esperado por el programador (generalmente usado en programas malignos/molestos, para que
se repita una acción una y otra vez).
Elementos de un Bucle
C= C / Valor C= C ^ Valor
Para contabilizar el número de veces que es necesario repetir una acción (variable
de control de un bucle).
Para contar un suceso particular solicitado por el enunciado del problema
(asociado a un bucle o independientemente).
También en las situaciones en que hay que obtener un total como producto de
distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor 1.
c) Banderas (Interruptor flag).- Es una variable que sirve como indicador de una
determinada información y que solo puede tomar uno de dos valores (0 -1 / verdadero
- falso).
· Sw=0 / Sw=1
Sw=true / Sw=false
mientras (Condicion)
<Acciones>
fin_mientras
Nota: Para que por primera vez cumpla la condicion se debera de usar a un
contador con un valor inicial y hacer que la condicion sea verdadera
tomando encuenta al contador(esto debera esta inicializado antes de la
estructura Mientras).
Casos: Los ejemplos mas usuales en donde podemos aplicar estructuras de repeticion
tal como la estructura Mientras es talvez en el uso de series, veamos:
variables
entero: c
inicio
c=3
mientras(c<=30) Es la variación del contador
escribir(c) para poder cumplir con la
condición del bucle.
c=c+3
fin_mientras
fin_programa
variables
entero: c
inicio
c=50
mientras(c>=3) Es la variación del contador
para poder cumplir con la
escribir(c)
condición del bucle.
c=c-3
fin_mientras
fin_programa
variables
entero: c
inicio
c=4
mientras(c<=450) Es la variación del contador
para poder cumplir con la
escribir(c)
condición del bucle.
c=c*2
fin_mientras
fin_programa
variables
entero: c
inicio
c=2
mientras(c<=22222) Es la variación del contador
para poder cumplir con la
escribir(c)
condición del bucle.
c=c*10+2
fin_mientras
fin_programa
variables
entero: c
inicio
c=1
mientras(c<=50)
escribir(c,”.- Programación”)
c=c+1 Es la variación del contador
fin_mientras para poder cumplir con la
condición del bucle.
fin_programa
variables
entero: c
inicio
c=80
Es la variación del contador
mientras(c>=0)
para poder cumplir con la
escribir(c) condición del bucle.
c=c-10
fin_mientras
fin_programa
variables
entero: c,x
inicio
c=9 : x=1
Es la variación del contador
mientras(c<=650)
para poder cumplir con la
escribir(c) condición del bucle. Puede
c=c+x haber N Contadores.
x=x+1
fin_mientras
fin_programa
while (Condicion) {
<Acciones>
Cuando se utiliza una estructura while se debe tomar en cuenta que llevara { } cuando
quieres que repitas más de una Acción.
int c=9,x=1;
while(c<=650){
modlista.addElement(c);
c=c+x;
x=x+1;
JList .- Este control permite agregar datos en forma lineal, es un poco más difícil
de manejar pero nos permite hacer cosas más interesantes que el JComboBox.
También veremos cómo utilizar algunas otras clases que nos van a permitir
manejar un JList de una manera más eficiente por ejemplo para permitir que
crezca de manera dinámica.
Nomenclatura : ModLstNombre
Luego para poderlo enlazar con el Jlist deberemos de seleccionar a la lista y dar
click en propiedades y seleccionar Model y en esa lista buscar el modal que hemos
creado.
3er paso: regrese componentes Swing y elija un JList y dar click dentro
del JScrollPane quedando de la siguiente manera.
No te olvides de
haber seleccionado
Modal o Custom
al jList.
Creado.
Contenidos
____________________________________________________________________________________
JList JTextArea
Diseña lo siguiente:
Caso 2: 50,47,44,41,….,3
while(c>=3){
c=c-3;
int c=1;
while(c<=50){
ModLstN.addElement(c+".- SISE...ver");
c=c+1;
Caso 7: 9,10,12,15,19,24,…,650
while(c<=650){
ModLstN.addElement(c);
c=c+x;
x=x+1;
Casos:
Caso 01: Ingresar 10 notas y mostrar el promedio
variables
entero: nota,c,acu
decimal: p
inicio
c=1
mientras(c<=10)
leer(nota)
escribir(nota)
acu=acu+nota
c=c+1
fin_mientras
p=acu/10
escribir(p)
fin_programa
variables
entero: sueldo,c,sw
inicio
c=0
sw=0
mientras(sw=0)
leer(sueldo)
escribir(sueldo)
si(sueldo=0)
sw=1
sino
c=c+1
fin_si
fin_mientras
fin_programa
variables
caracter: distrito
Recuerda: Cuando necesites
entero: cl,cb,cs,cd
saber cantidades de datos deberás
inicio de usar un contador y a una
cd=1 condición. El contador será
mientras(cd<=15)
leer(distrito)
C=C+1
escribir(distrito)
si(distrito=”Lince”)entonces
cl=cl+1
fin_si
si(distrito=”Breña”)entonces
cb=cb+1
fin_si
si(distrito=”San Miguel”)entonces
cs=cs+1
fin_si
cd=cd+1
fin_mientras
escribir(“Cantidad de Distritos de Lince son : ”,cl)
escribir(“Cantidad de Distritos de Breña son : ”,cb)
escribir(“Cantidad de Distritos de San Miguel son : ”,cs)
fin_programa
variables
caracter: nom,ape,sexo
entero: edad
decimal: psm,psv
inicio
cd=1
mientras(cd<=10)
leer(nom,ape,sexo,edad)
escribir(nom,ape,sexo,edad)
si(sexo=”Mujer”)entonces
acuEm=acuEm+edad
csm=csm+1
fin_si
si(sexo=”Varon”)entonces
acuEv=acuEv+edad
csv=csv+1
fin_si
cd=cd+1
fin_mientras
psm=acuEm/csm
psv= acuEv/csv
escribir(“La cantidad de Mujeres en la lista son: ”,csm)
escribir(“La cantidad de Varones en la lista son: ”,csv)
escribir(“El promedio de Edades de Mujeres en la lista son: ”,psm)
escribir(“El promedio de Edades de Varones en la lista son: ”,psv)
fin_programa
Area Sueldo
Contabilidad 1520
Administracion 1630
Logistica 1450
Almacen 1230
Otros 1020
Nombre=JOptionPane.showInputDialog(“Ingresar el Nombre”);
apellido=JOptionPane.showInputDialog(“Ingresar el Apellido”);
Sueldo=Double.parseDouble(JOptionPane.showInputDialog(“Ingresar el Sueldo”));
while(cd<=6){
nom=JOptionPane.showInputDialog("Ingresar Nombre");
ape=JOptionPane.showInputDialog("Ingresar Apellidos");
sexo=JOptionPane.showInputDialog("Ingresar Sexo");
edad=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Edad"));
ModLstNom.addElement(nom);
ModLstApe.addElement(ape);
ModLstSexo.addElement(sexo);
ModLstEdades.addElement(edad);
if(sexo.equalsIgnoreCase("Mujer")){
acuEm=acuEm+edad;
csm=csm+1;
}
if(sexo.equalsIgnoreCase("Varon")){
acuEv=acuEv+edad;
csv=csv+1;
}
cd=cd+1;
}
psm=acuEm/csm;
psv= acuEv/csv;
lblCm.setText(""+csm);
lblCv.setText(""+csv);
lblPm.setText(""+psm);
lblPv.setText(""+psv);
}
Caso 02 : Ingresar una lista de 10 Numeros en forma Aleatoria y mostrar el promedio de los
numeros Los numeros deberan no ser mas de 100. Para ello Diseñemos esta ventana y
ademas utilizaremos la Clase MAth para generar los numeros aleatorios.
Contenidos
__________________________________________________________________________________________________
Estructura Repetir
repetir
<acciones>
hasta_que (<expresión_lógica>)
do{
<acciones>
}while (<expresión_lógica>)
Caso 01: Escriba un algoritmo que lea del teclado un número entero y que compruebe si es
menor que 5. Si no lo es, debe volver a leer un número, repitiendo la operación hasta que el
usuario escriba un valor correcto. Finalmente debe escribir por pantalla el valor leído.
variables
entero: num
inicio
repetir
leer num
hasta_que(num >= 5)
fin
int num;
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
}while(num>5) ;
lblp.setText(""+num);
Caso 02: Modifique el algoritmo del caso 1 para que, en vez de comprobar que el número es
menor que 5, compruebe que se encuentre en el rango (5,15).
variables
entero: num
inicio
escribir(“Teclee un número entre 5 y 15 (no incluidos))”
repetir
leer num
hasta_que(num <= 5 O num >= 15)
escribir(“El número leído es: “, num)
fin
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
lblp.setText(""+num);
Caso 03: Modifique el algoritmo del caso 2 para que cuente las veces que ha leído un número
que no está incluido en el rango y escriba el resultado por pantalla.
variables
inicio
veces ← 1
repetir
leer num
veces = veces + 1
fin
int num;
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
lblp.setText(""+num);
Caso 04: Escriba un algoritmo en pseudocódigo que calcule e imprima la suma de los n
primeros números enteros positivos. El valor de n debe leerse del teclado.
variables
entero: i
real: s
inicio
leer(n)
s= 0
i=1
repetir
s= s+i
i = i+1
hasta_que(i<n)
fin
Usaremos un JTextArea
para mostrar Varios
resultados en el mismo
objeto.
double acu;
txtSalida.setText("");
n=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
s= 0;
do{
acu= acu+i;
i = i+1;
} while(i<n);
Contenidos
Estructura Desde
La estructura Desde sirve para repetir un código dependiendo de un contador, establecer el
valor inicial y el valor final.
<acciones>
fin_desde
Definición:
Porqué usarlo?
La principal diferencia de un bucle DESDE con respecto a los bucles MIENTRAS Y REPETIR,
es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo cual
muchas veces puede redundar en una optimización del código por parte de los compiladores.
Las condicionales constituyen junto con los bucles los pilares de la programación estructurada,
y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la
siguiente línea o no en función del valor de una condición.
En JAVA
<Acciones>
Caso 01:
Calcular la suma de los cuadrados de los primeros 50 enteros y escribir el resultado. Se desea
resolver el problema usando estructura Desde, Mientras y luego Repetir.
variables
entero: suma,I
inicio
suma=suma+I*I
fin_desde
fin_programa
int suma=0,I,cua;
for(I=1;I<=50;++I){
cua=I*I;
suma=suma+cua;
ModLstNum.addElement(I+"^"+I+"= "+cua);
Caso 02:
Imprimir la suma de los primeros 1250 números enteros
for(int x=1;x<=1250;++x){
suma=suma+x;
ModLstNum.addElement(x);
Caso 03:
Mostrar la tabla de multiplicar de acuerdo a un numero ingresado.
variables
entero: x,num,r
inicio
desde(x=1 hasta 12){
r= num*x
escribir( num,"*",x , "=", r)
fin_programa
int num=Integer.parseInt(txtn.getText());
for(int x=1;x<=12;++x){
r=num*x;
ModLstNum.addElement(num+"*"+x+"="+r);
}
}
Caso 04:
Leer 20 números enteros y producir:
La suma de los números leídos
El promedio de los números
El mayor y el menor número
variables
entero: x,num,suma
inicio
leer(num)
Aux_menor=num
escribir(num)
suma= suma+num
si(num>Aux_mayor)entonces
Aux_Mayor=num
fin_si
si(num<Aux_menor)entonces
Aux_Menor=num
fin_si
leer(num)
escribir(num)
fin_desde
prom_num=suma/20
fin_programa
Sintaxis:
JOptionPane.showMessageDialog(un_componente_padre,mensaje,titulo,iconos)
Usos:
//título e icono por defecto
JOptionPane.showMessageDialog(null,"Texto del mensaje.");
//título personalizado, icono de pregunta
JOptionPane.showMessageDialog(null,"Texto del mensaje.","Título del marco o ventana",
JOptionPane.QUESTION_MESSAGE);
Ejemplos de Mensajes:
String salida;
int ca=Integer.parseInt(txtca.getText());
int cd=Integer.parseInt(txtcd.getText());
salida = "Aprobados: " + ca + "\nReprobados: " +cd;
JOptionPane.showMessageDialog( null, salida,"Análisis de resultados del
examen",JOptionPane.INFORMATION_MESSAGE );
Caso 01: Modifique el algoritmo del caso 3 para que se realicen 10 lecturas del teclado como
máximo.
variables
entero: num, veces
inicio
escribir(“Teclee un número entre 5 y 15 )”
veces ← 1
repetir
leer num
veces = veces + 1
si (veces=10) entonces
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
veces=veces+1;
}while(!(num>=5 & num<=15) & !(veces==10)) ; //si no es estan en el rango y no llego a ser 10
lblp.setText(""+num);
if (veces==10){
lblp.setText(""+"");
Contenidos
- Estructuras Anidadas.
- Ejemplos con Iterativas.
- Ejercicios de Aplicación.
____________________________________________________________________________________
Estructura Anidadas
Puede anidar una estructura dentro de otra estructura, y por tanto guardar juntos elementos asociados.
Las estructuras de control básicas pueden anidarse, es decir pueden ponerse una dentro de
otra.
En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra
otra. La más interna se termina de realizar y se continúa con la externa hasta que la condición
se cumple.
En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un
bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras break
(saltos) para pasar al bucle externo y se quedan entrelazados.
Bucle A
Fin A
Bucle A
Bucle B
Fin B
Fin A
Bucle A
Bucle B
Bucle C
Fin C
Fin B
Fin A
EJEMPLOS
txtSalida.setText("");
int n=Integer.parseInt(txtn.getText());
for(int i=0;i<=n;++i){
for(int j=0;j<=n;++j){
txtSalida.append(""+i+j+"-");
txtSalida.append("\n");
}
Utilice un JTextArea
para visualizar la serie.
txtSalida.setText("");
int n=Integer.parseInt(txtn.getText());
for(int i=1;i<=n;++i){
txtSalida.append(i+".-");
for(int k=n;k>=1;k-=2){
txtSalida.append(k+" ");
txtSalida.append("\n");
txtSalida.setText("");
int n=Integer.parseInt(txtn.getText());
for(int i=1;i<=n;++i){
for(int k=1;k<=i;++k){
txtSalida.append("V");
txtSalida.append("\n");
EJERCICIOS DE APLICACIÓN
*
**
***
****
*****
******
*******
********
*********
6. Ingresar un número par y mostrar sus divisores; el número par debe ser positivo.
12. Donde N es un valor entero cualquiera dado por el usuario. Considere que su programa
debe funcionar aunque N ≤ 0
13. Se tiene un conjunto de N tarjetas, cada una contiene la información del censo para
una persona:
a) Número de censo
b) Sexo
c) Edad
d) Estado civil (a. Soltero, b. Casado c. Viudo d. Divorciado)
14. Elabore un programa que lea secuencias de datos de personas censadas e indique el
número de personas que son mujeres solteras entre 16 y 21 años.
15. Escriba un programa para calcular el factorial de cada valor entero positivo entre 1 … n,
donde N será suministrado por el usuario.
16. Construya un programa que reciba como entrada una secuencia de valores de
temperaturas y genere como salida el total de veces que se registro una temperatura
menor que 0°, el total de veces que fue 0° y el total de veces que fue mayor que 0°.
Considere que una temperatura con valor -9999° o (- 9999°) es una temperatura no
valida e indica el fin de la secuencia de datos a procesar. La temperatura no válida
puede suministrarse incluso como primer valor leído.
b) 65,64,63,62,61,……..,5,4,3
c) 12,15,18,21,24….78
d) 97,92,87,82,77,72,67….2
e) 3,9,15,21,27….(45 términos)
f) 56,53,50,47…(25 términos)
j) 5,6,8,11,15,20,26,33….(22 términos)
k) 1,1,2,3,5,8,13,21,34….(31 términos)
l) S=5+9+13+17+….45
m) OP=167-(3+6+9+….+27)
n) P=4*6*8*….*18
18. Consistencia el ingreso de 4 números. Que el primer número sea mayor al segundo,
que el segundo mayor al tercero y el tercero sea mayor al doble del cuarto número.
19. Consistencia el ingreso de 3 números. Que el primer número sea mayor al doble del
segundo número; que el segundo número sea menor al tercer número y que el tercer
número sea positivo mayor a 300.
20. Consistencia el ingreso del nombre de un distrito, tomando en cuenta que los distritos
válidos son: LINCE, MIRAFLORES Y SANTIAGO DE SURCO. Si el distrito es LINCE ó
MIRAFLORES, se debe de ingresar la cantidad de habitantes que hay en los dos
distrito juntos y muestre como resultado el promedio de habitantes de los dos distritos;
De son ser ninguno de los dos distritos, se debe de ingresar como dato, el promedio de
salario de los habitantes del otro distrito y muestre como resultado el promedio de
salario incrementado en 28.9%.
21. Consistencia el ingreso del nombre de una persona, tomando en cuenta que los
nombres válidos son: ANA, CARLOS, JUANA, MANUEL, NANCY. Si el nombre
ingresado fuese ANA, JUANA ó NANCY, se debe de pedir una edad y muestre como
resultado la edad incrementada en un 25%; de lo contrario se debe de pedir un sueldo
y muestre como resultado el sueldo disminuido en 15%.
22. PC: Que muestre cada elemento, además de la suma de estos en la siguiente serie:
3 5 7 9
S= + + + + ……
4 7 10 13
PP + 2 EP + 3 EF
PF=
Donde:
PP : Promedio de las 7 practicas obtenidas eliminando la menor nota.
EP : Examen Parcial.
EF : Examen Final.
25. PC: Que muestre la estadística de las notas de los alumnos de un aula
sabiendo que el promedio mínimo aprobatorio es 13 y que enlista se
encuentran registrados 37 alumnos, los cuales no necesariamente completaros
el curso.
26. PC: Que imprima los 50 primeros números capicúas mayores que 100.
27. PC: Que ingrese un número y muestre un mensaje indicando si es primo o no.
28. PC: Que muestre por lo menos 5 números perfectos. Los primeros números
perfectos son: 6, 28, 496, 8128, 33550336, 8589869056.
29. PC: Que ingrese 2 números e imprima un mensaje indicando si son amigos.
Un ejemplo es el par (220, 284), ya que los divisores propios de 220 son
1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que suman 284 los divisores
propios de 284 son 1, 2, 4, 71 y 142, que suman 220
2 3 4 5 n
33. PC: Que muestre los elementos del siguiente triangulo para N Líneas:
1
2
2 3
2 3 4
….
1 2 3 4 5 …… N
34. PC: Que muestre los elementos del siguiente triangulo para n Líneas:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
35. PC: Que desarrolle la nómina para una compañía que tiene 16 empleados,
algunos de los cuales son hombres y otras mujeres. Para cada empleado se
debe leer el nombre, el sexo, las horas de trabajo y el sueldo por hora.
La primera parte de la impresión debe dar el nombre y el pago de cada
empleado. La segunda parte, el total de pagos para cada sexo, así como el
promedio de los pagos a los hombres y el promedio de los pagos a las mujeres.
36. PC: Que permita ingresar varios sueldos como valor numérico, verificando si
cada uno de ellos supera los US$ 750.00. El programa termina cuando
ingresemos un valor negativo.
39. PC: Que permita ingresar el monto comprado en una ferretería e imprima el
número mínimo de billetes y monedas en actual circulación necesarios para la
cancelación.
40. PC: Que muestre el reporte de pagos que realizara un usuario a una
prestamista sabiendo que los préstamos se realizan bajo las siguientes
condiciones:
El monto mínimo que se otorga en préstamo es US$2500.
Los pagos se realizaran en forma mensual, amortizando por cada vez
un 20% del saldo.
Se cancelara además un 5% mensual por concepto de interés, respecto
al saldo.
Cuántos son de PERÚ con edades mayores a 22 años, con un peso mayor
a 70 y menor a 91.
Cuántos son de COLOMBIA con más de 30 goles anotados y con pesos
menores a 68 kilos.
Cuántos son casados, que hallan anotado menos de 15 goles y que sean
de PERÚ, COLOMBIA ó BRASIL.
Cuántos son de PERÚ ó COLOMBIA, con pesos en el rango de 65Kg. a
75Kg. ó en el rango de 79.5Kg. a 85Kg. y con edad menor a 32.
42. Se ingresa 100 números. Cada vez que se ingrese un nuevo número muestre
la suma de sus dígitos y al término de los ingresos muestre los siguientes
resultados:
Cuántos números tuvieron 6 ó 9 dígitos.
Cuántos números fueron pares de 4 ó 5 dígitos y su último dígito fue mayor
a 5.
Cuántos números fueron mayores a 100 pero menores a 200 y a su vez
impar.
Cuántos números fueron mayor a 5 y a su vez fueron números primos.
Cuántos números fueron pares negativos en el rango de -200 a -8.
43. Imprimir por pantalla los números desde el 40 hasta el 687, solo aquellos que
sean divisibles de 6 y de 9 a la vez.
Contenidos
- ¿Qué es un Método?
- Ventajas en usar Métodos
- Definir los tipos de Métodos (Procedimientos – Funciones)
- Procedimiento: Definición, Sintaxis, Parámetros - void
- Ámbito de Variables Globales y Locales.
- Invocación de Procedimientos.
- Ejercicios de Aplicación
____________________________________________________________________________________
Programación modular
La programación modular es un modelo de programación que consiste en dividir un programa
en módulos o subprogramas con el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la programación estructurada para
solucionar problemas de programación más grandes y complejos de lo que ésta puede
resolver.
Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas
en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea
bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo
necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que
también debe estar bien definida.
Si bien un modulo puede entenderse como una parte de un programa en cualquiera de sus
formas y variados contextos, en la práctica es común representarlos con procedimientos y
funciones. Adicionalmente, también pueden considerarse módulos las librerías que pueden
incluirse en un programa o, en programación orientada a objetos, la implementación de un tipo
de dato abstracto.
- Funciones en C, C++
- Subrutinas en Basic
- Procedimientos y funciones en Pascal
- Subrutinas en Fortran
- Secciones en Cobol y
- Métodos en Java
Cuestiones generales
Dos variables locales pueden tener el mismo nombre siempre que estén declaradas en
funciones o procedimientos diferentes.
Entero: prom,suma,nreg
Modulo 1
Variables Locales
Entero: n1,n2
Modulo 2
Variables Locales
Entero: n1,n2
Modulo 3
Variables Locales
Entero: n3,n3
Procedimientos
Son subprogramas, es decir, módulos que forman parte de un programa y realizan una tarea
específica. Un procedimiento puede tener sus propias variables que se declaran en la sección
variable del propio procedimiento. Estas se llaman variables locales. La casilla de memoria
para estas variables se crea cada vez que el procedimiento es llamado y se borran al salir del
mismo. Así, las variables locales para un procedimiento sólo se pueden usar en el cuerpo del
procedimiento y no en el cuerpo principal del programa.
Declaración
[Variables locales]
inicio
fin_procedimiento
Definición
Llamada a procedimientos
<nombre_procedimiento>([<lista_parámetros>])
La lista de parámetros actuales es una o varias variables o expresiones separadas por comas
que deben coincidir en número, orden y tipo con la lista de parámetros formales de la
declaración.
Procedimiento sueldo
variables
entero: ch,cost
inicio
leer(ch,cost)
suel=ch*cost;
escribir(suel);
fin_procedimiento
se podrá llamar a este modulo mediante un objeto (botones, textos, combos, radios,
check) tan solo poner el nombre del procedimiento.
Sueldo
Procedimiento Calculo
variables
entero: n1,n2,n3,n4,n5
carácter: condición
inicio
leer(n1,n2,n3,n4,n5)
prom=(n1+n2+n3+n4+n5)/5;
si(prom>=10.5)
condición=”Aprobado”
else
condición=”Desaprobado”
fin_si
escribir(condición,prom);
fin_procedimiento
3,33,333,3333,….(15 términos)
Procedimiento Serie
variables
entero: c
inicio
c=3
desde(x=1 hasta 15)
escribir(c);
c=c*10+3
fin_desde
fin_procedimiento
Procedimientos en Java
[Variables locales];
…<Accione>;
Ejemplos:
void promedio(){
double nota,acu=0,Prom;
for(int g=0;g<5;++g){
ModLstn.addElement(nota);
acu=acu+nota;
Prom=(acu/5);
Lblprom.setText(“”+Prom)
Compila tu programa
ingrésale las notas y
aparecerá el promedio de
dichas notas-
void sueldo(){
int ch,cost,suel;
ch=Integer.parseInt(txtch.getText());
cost=Integer.parseInt(txtcst.getText());
suel=ch*cost;
lbls.setText(""+suel);
Contenidos
____________________________________________________________________________________
Funciones
La función es una estructura autónoma similar a los módulos. La diferencia radica en que la
función se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia.
La función se relaciona especificando su nombre en una expresión, como si fuera una variable
ordinaria de tipo simple. Las funciones se dividen en estándares y definidas por el usuario.
Declaración
funcion
<nombre_función>([<lista_parámetros_formales>]):tipo_Dato
[declaraciones locales]
inicio
fin_funcion
Definición
Llamada a funciones
Ejemplo
X= <nombre_función>([<lista_parámetros_actuales>])
Escribir (x)
La lista de parámetros actuales es una o varias variables o expresiones separadas por comas
que deben coincidir en número, orden y tipo con la lista de parámetros formales de la
declaración.
- Puesto que se debe asociar un valor al número de una función, también se le debe
asociar un tipo. Por tanto, la cabecera de una función debe incluir un identificador de
tipo que especifique el tipo del resultado. Sin embargo, no se asocia ningún valor con
el nombre de un procedimiento y, por tanto, tampoco ningún tipo.
Ejemplos:
Caso 02: Crear una función que me devuelva la sumatoria de los 20 primeros números pares.
Tipo_Dato <nombre_función>([<lista_parámetros_formales>]){
[declaraciones locales]
<Acciones>;
Caso 01:Factorial.
int factorial(){
int i,fact=1,n;
n=Integer.parseInt(txtn1.getText());
if(n <=1)
fact=1;
for(i = 1;i<=n;++i )
fact=fact * i;
return(fact);
Caso 01:Sumatoria.
int i,acu=0,n=2;
for(i=1;i<=10;++i){
serie=serie+n+"-";
acu=acu+n;
n=n+2;
return(acu);
void leer(){
Procedimiento Leer
a=Integer.parseInt(txtn1.getText());
b=Integer.parseInt(txtn2.getText());
c=Integer.parseInt(txtn3.getText());
d=Integer.parseInt(txtn4.getText());
e1=Integer.parseInt(txtn5.getText());
leer();
lbls.setText(""+promedio());
Se puede invocar varias veces
leer();
lbls.setText(""+promedio());
EJERCICIOS DE APLICACIÓN
1. Diseñar una función que calcule el promedio de N números introducidos por el teclado.
2. Escribir una función que intercambie el valor de dos variables, es decir si X=5 e Y=7
tras aplicar la función, por ejemplo haciendo "intercambiar(X,Y)" se tiene que X=7 e
Y=5.
3. Diseñar una función que calcule la potencia enésima de un número, es decir que
calcule X n para X, real y n entero
4. Diseñar una función "Invertir()" que invierta un numero introducido.
5. Diseñar dos funciones "EurosAPesetas()" y "PesetasAEuros()" que realicen las
conversiones de monedas de forma que se puedan utilizar directamente dentro de una
expresión del tipo: "Imprimir valEuros son EurosAPts(valEuros)"
6. Diseñar una función "EsBisiesto()" que decida si un año es bisiesto o no
7. Escribir una función "EsMultiplo" que sirva para determinar si un número es múltiplo de
otra. Utilizarla en un programa que pida la antigüedad de un trabajador y calcule
cuantos trienios de antigüedad tiene.
8. Modularizar el programa nomina1.c utilizando tres funciones. Una para la entrada, una
para los cálculos y una para la salida de resultados
9. Hacer un programa salarios que utilice las funciones anteriores dentro de un bucle para
calcular las nominas de un número indeterminado de trabajadores
10. Escribir dos funciones Entrada () y Salida () que incluyan todas las operaciones de
entrada de datos y salida de resultados para el programa registro y notas de alumnos.
Usando Métodos
La empresa “ICL”, necesita crear una planilla de sueldos donde cada empleado
pertenece a una AREA, y recibirá un descuento de acuerdo al área que corresponda
según como se muestra en el cuadro.
Área Descuento
Logistica 6%
Administracion 9%
Seguridad 3%
Otros 1.5
Aumento de acuerdo al mes Mayo o Noviembre tendrá CTS (50%), Julio o Diciembre
tendrá Gratificación(25%).
}
lblAum.setText(""+aum);
}
void netos(){
neto=suel+aum-des;
lblSn.setText(""+neto);
}
void agregar(){
ModLstR.addElement(c);
ModLstA.addElement(area);
ModLstAum.addElement(aum);
ModLstCh.addElement(ch);
modLstCosto.addElement(costo);
ModLstDes.addElement(des);
ModLstNeto.addElement(neto);
ModLstS.addElement(suel);
++c;
}
void renovar () {
ModLstR.clear();
int c3=100;
while(c3<c){
ModLstR.addElement(c3);
c3=c3+1;
}
}
void leer(){
ch=Integer.parseInt(txtCh.getText());
costo=Integer.parseInt(txtCst.getText());
area=cboArea.getSelectedItem().toString();
}
agregar();
}
void Eliminar(){
int orden=Lstr.getSelectedIndex(); //índice del Jlist
ModLstR.remove(orden);
ModLstA.remove(orden);
ModLstAum.remove(orden);
ModLstCh.remove(orden);
modLstCosto.remove(orden);
ModLstDes.remove(orden);
ModLstNeto.remove(orden);
ModLstS.remove(orden);
c=c-1;
renovar ();
}
btnAgregar.setEnabled(false);
btnEliminar.setEnabled(false);
}
sueldo(ch,costo);
descuento(area);
aumento(nom);
netos();
ModLstCh.setElementAt(txtCh.getText(),ordenM);
modLstCosto.setElementAt(txtCst.getText(),ordenM);
ModLstAum.setElementAt(lblAum.getText(),ordenM);
btnAgregar.setEnabled(true);
btnEliminar.setEnabled(true);
btnModifica.setEnabled(true);
btnActualizar.setEnabled(false);
}
Contenidos
- Definición de Recursividad
- Recursividad frente a las Estructuras Repetitivas
- Elementos de Recursividad
- Recursividad Directa / Indirecta.
____________________________________________________________________________________
Recursividad
La recursividad es una técnica de programación importante. Se utiliza para realizar una llamada
a una función desde la misma función.
La recursividad y la iteración (ejecución en bucle) están muy relacionadas, cualquier acción que
pueda realizarse con la recursividad puede realizarse con iteración y viceversa. Normalmente,
un cálculo determinado se prestará a una técnica u otra, sólo necesita elegir el enfoque más
natural o con el que se sienta más cómodo.
Claramente, esta técnica puede constituir un modo de meterse en problemas. Es fácil crear una
función recursiva que no llegue a devolver nunca un resultado definitivo y no pueda llegar a un
punto de finalización. Este tipo de recursividad hace que el sistema ejecute lo que se conoce
como bucle "infinito".
Recursividad indirecta
Cuando en una subrutina hay llamadas a ella misma se habla de recursividad directa, en
contraposición, cuando se tienen varias subrutinas y éstas se llaman unas a otras formando
ciclos se dice que la recursión es indirecta.
Ejemplos de Recursividad
else
if ( n == 1)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
Contenidos
Aplicaciones JAVA
El lenguaje JAVA es un lenguaje que contiene muchos API’s las cuales nos permite mejorar la
presentación del FRAME de Java. Además todas las aplicaciones que hemos creado son a a
nivel de escritorio lo que nos permite manejar mejor el entorno JDEVELOPER.
Por ello vamos a mejorar la presentación de nuestro Frame, pudiendo ponerle imágenes y
pudiendo controlarlos mediante objetos.
JLabel
Ponle el
nombre
lblImagen
Empecemos:
String nombre(){
If(rbtProfesor.isSelected())
Usuario=”Profesor”;
If(rbtAlumno.isSelected())
Usuario=”Alumno”;
Return(Usuario);
Void contraseña(){
llama.setLocationRelativeTo(null);
llama.setVisible(true);
llama.setTitle("Usuario: "+nombre());
4) Quizás el FrmDatos saldrá con línea roja es porque no existe, así que haz lo
siguiente, ubícate en el proyecto que tienes y presiona clic derecho y elige
Client Tier y selecciona Frame (lo que te permitirá es insertar un nuevo Frame)
y a este Frame ponle el nombre de FrmDatos.
5) Compila el programa veras que te permitirá mostrar la nueva ventana y así que
de aquí en adelante podrás seguir con todo lo que has aprendido.
CASO 01: Cambiar el color de fondo de texto según las combinaciones de los
combos.
void btnCombinar_actionPerformed(ActionEvent e) {
int r = choRojo.getSelectedIndex();
int g = choVerde.getSelectedIndex();
int b = choAzul.getSelectedIndex();
// Establece color de fondo personalizado a la caja de texto
this.txts.setBackground(new Color(r,g,b));
}
CASO 02: Cambiar la apariencia del texto, poniendo estilos de letras, tamaño y
tipo.
choFuente.addItem("Monospaced");
choFuente.addItem("Arial");
choFuente.addItem("Arial Black");
choFuente.addItem("Garamond");
choFuente.addItem("Comic sans MS");
choFuente.addItem("Times New Roman");
choEstilo.addItem("Normal");
choEstilo.addItem("Negrita");
choEstilo.addItem("Italic");
choEstilo.addItem("Negrita Italic");
//--------------
String leeFuente() {
return choFuente.getSelectedItem().toString();
}
//--------------
int leeEstilo() {
int estilo = choEstilo.getSelectedIndex();
switch(estilo) {
case 1: return Font.PLAIN;
case 2: return Font.BOLD;
case 3: return Font.ITALIC;
case 4: return Font.BOLD + Font.ITALIC;
default: return 0;
}
}
//-------------
int leeTamaño() {
return Integer.parseInt(choTamaño.getSelectedItem().toString());
}
void fondo(){
int color = cboColorFondo.getSelectedIndex();
//Activar controles
txtNumero.setEnabled(true);
bnSiguiente.setEnabled(True);
//Desactivar controles
txtNumero.setEnabled(false);
btnAnterior.setEnabled(false);
Txtnombre.requestFocus();
if(cantNotas==0){
n1= Double.parseDouble(txtN1.getText());
n2= Double.parseDouble(txtN2.getText());
prom = (n1+n2)/2;
lblme.setVisible(false);
m="Promedio de 2 Notas: ";
}
if(cantNotas==1){
n1= Double.parseDouble(txtN1.getText());
n2= Double.parseDouble(txtN2.getText());
n3= Double.parseDouble(txtN3.getText());
if(cantNotas==2){
n1= Double.parseDouble(txtN1.getText());
n2= Double.parseDouble(txtN2.getText());
n3= Double.parseDouble(txtN3.getText());
n4= Double.parseDouble(txtN4.getText());
suma=n1+n2+n3+n4;
if(suma>70){
if(n1<n2 && n1<n3 && n1<n4){
menor=n1;
}
if(n2<n1 && n2<n3 && n2<n4){
menor=n2;
}
if(n3<n1 && n3<n2 && n3<n4){
menor=n3;
}
if(n4<n1 && n4<n2 && n4<n3){
menor=n4;
}
prom=(n1+n2+n3+n4-menor)/3;
m="promedio de 4 notas suman más de 70 es : ";
}
if(n2<=10)
desap=n2;
if(n3<=10)
desap=n3;
if(n4<=10)
desap=n4;
}
if(desap>0)
prom= (n1+n2+n3+n4-desap)/3;
else
prom= (n1+n2+n3+n4)/4;
m="la suma está entre 70 y 44 se quita la 1era desaprobatoria: ";
if(suma<=44){
prom=(n1+n2+n3+n4)/4;
m="suma menos que 44 y promedio las 4 : ";
}
lblme.setVisible(false);
}
lblR.setText(m+prom);
}
}
void mejora(){
lblme.setVisible(false);
lblR.setText("");
txtN1.setText("");
txtN2.setText("");
txtN3.setText("");
txtN4.setText("");
}
private void cboNroNotas_actionPerformed(ActionEvent e) {
mejora();
int indice=cboNroNotas.getSelectedIndex();
switch (indice){
case 0: txtN3.setText("");
txtN4.setText("");
txtN3.setEnabled(false);
txtN4.setEnabled(false);
break;
case 1:
txtN4.setText("");
txtN3.setEnabled(true);
txtN4.setEnabled(false);
break;
case 2:
txtN3.setEnabled(true);
txtN4.setEnabled(true);
break;
}
}
CasoVER 02: Que calcule el sueldo mensual de un obrero que gana a destajo de acuerdo a las
prendas que confecciona. La tarifa para el pago depende de la prenda que termina de acuerdo
al siguiente cuadro:
Los obreros durante el mes pueden confeccionar solo un tipo de prenda. Si el obrero
confecciona más de 700 unidades recibirá una bonificación de acuerdo a su categoría,
como se indica en el cuadro siguiente:
CATEGORIA BONIFICACION
A 250.00
B 150.00
C 100.00
D 50.00
Al final presentar el sueldo neto, cada uno de los descuentos y la bonificación. Los
resultados se mostraran con dos decimales.
void tipo(){
tp=cboTipoPrenda.getSelectedIndex();
switch(tp){
case 0:
tari=0.50;
break;
case 1:
tari=1.00;
break;
case 2:
tari=1.50;
break;
}
salida_datos();
}
void calcular(){
cate=cboCategoria.getSelectedIndex();
unidades= Integer.parseInt( txtNroUnidades.getText());
switch(cate){
case 0:
boni=250.00;
break;
case 1:
boni=150.00;
break;
case 2:
boni=100.00;
break;
case 3:
boni=50.00;
break;
}
if(unidades>700){
sb=(unidades*tari)+boni;
}else{
sb=unidades*tari;
boni=0;
}
imp=0.09*sb;
seg=0.02*sb;
soli=0.01*sb;
if(seg>20)
seg=20;
sn=sb-imp-seg-soli;
salida_datos();
}
void salida_datos(){
lblt.setText(""+tari);
lblsb.setText(""+sb);
lblR.setText(""+sn);
lblImp.setText(""+imp);
lblSegu.setText(""+seg);
lblSoli.setText(""+soli);
}
void buscar_Mayor(){
int a, b, c;
a= Integer.parseInt(txtn1.getText());
b= Integer.parseInt(txtn2.getText());
c= Integer.parseInt(txtn3.getText());
int re = Math.max (a,b);
int r = Math.max (re,c);
lblr.setText(""+r);
}
BIBLIOGRAFIA.