Documento 88310

Anuncio
e
Fundamentos de Programación
5
e
 Presentación
…………………………………………………………………………..
7
 Modulo A
 Semana 1
…………………………………………………………………………..
10
 Semana 2
…………………………………………………………………………..
22
 Semana 3
…………………………………………………………………………..
40
 Semana 4
………………………………………… ………………………………..
48
 Semana 5
…………………………………………………………………………..
74
 Semana 6
…………………………………………………………………………..
90
 Semana 7
…………………………………………………………………………..
98
 Semana 8
…………………………………………………………………………..
104
 Semana 9
…………………………………………………………………………..
110
 Semana 1
…………………………………………………………………………..
148
 Semana 2
…………………………………………………………………………..
160
 Semana 3
…………………………………………………………………………..
174
 Semana 4
…………………………………………………………………………..
182
 Semana 5
…………………………………………………………………………..
192
 Semana 6
…………………………………………………………………………..
204
 Semana 7
…………………………………………………………………………..
212
 Semana 8
…………………………………………………………………………..
226
 Semana 9
…………………………………………………………………………..
230
 Modulo B:
Fundamentos de Programación
6
e
Fundamentos de Programación
7
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.
La Organización SISE, líder en la enseñanza tecnológica a nivel superior, promueve
la elaboración de materiales educativos, en concordancia a las exigencias de las
tecnologías de estos tiempos, que permiten la creación de nuevas herramientas de
aprendizaje con el objetivo de facilitar el acceso de los estudiantes a la educación en
el marco del desarrollo tecnológico de la informática u de las telecomunicaciones.
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.
En este proceso el alumno aprenderá instrucciones que le permitirán evaluar
expresiones para luego procesar un conjunto de sentencias. También aprenderá el
uso de las estructuras de control (Condicionales y Repetitivas), de la misma forma el
manejo del lenguaje de programación orientada a objetos.
La implementación y uso de métodos (con retorno y sin retorno), permitirán que el
alumno aplique el uso de variables Globales y Locales donde el alumno demostrara el
manejo de la programación orientada a objetos.
Todas estas herramientas darán un soporte solido al alumno para aprender a
programar en cualquier lenguaje de programación estructurada o a los lenguajes
Orientada a Objetos (JAVA, .NET, Visual C,etc).
Este material en su primera edición, servirá para ayudar a nuestros estudiantes
SISESINOS a tener una formación solida para resolver problemas.
Fundamentos de Programación
8
e
Fundamentos de Programación
9
e
INTRODUCCION
Contenidos
- Introducción a la Programación
- Sistema de Procesamiento de la Información
- Etapas del Procesamiento de Datos (Entrada, Clasificación, Procesamiento,
Almacenamiento, Control, Salida).
- Razones para automatizar los procesos.
- Lenguajes de Programación, Definición de programa y Clasificación de Lenguajes
- Traductores de Lenguajes: Intérpretes y Compiladores.
- Ciclo de Vida de un Programa
- Tipos de Datos Primitivos: Numéricos, Lógicos, Carácter.
- Definición de Identificadores y reglas
- Definición de Variables y Constantes
____________________________________________________________________________
Introducción a la Programación
Muchas personas piensan que una computadora puede realizar tareas o trabajos de
complejidad superior a una inteligencia humana. La realidad es que una computadora no tiene
ninguna inteligencia. No olvidemos que no es más que una máquina creada por el hombre y,
por tanto, no podrá realizar una tarea que no haya sido previamente determinada por él.
Una computadora (ordenador) es una máquina de origen electrónico que puede realizar una
gran variedad de trabajos, pero. En principio, sólo es capaz de hacer físicamente tres clases de
operaciones básicas: Sumar, restar, multiplicar y dividir dos valores numéricos, es decir,
realizar operaciones aritméticas sencillas; Comparar dos valores
(comprobar si son iguales, si el primero es mayor que el
segundo. etc.), es decir, realizar operaciones lógicas sencillas. Y
Almacenar o recuperar información.
Con estas pocas operaciones utilizadas y combinadas de forma
adecuada, mediante lo que llamamos programa. Se pueden
llegar a realizar tareas increíblemente complejas que aporten la
solución a un determinado problema, ya sea de gestión, técnico
o de cualquier otro tipo.
Fundamentos de Programación
10
e
La principal razón para que las personas aprendan lenguajes y técnicas de programación es
utilizar la computadora como una herramienta para resolver problemas. La resolución de un
problema exige al menos los siguientes pasos:
1. Definición o análisis del problema.
2. Diseño del algoritmo.
3. Transformación del algoritmo en un programa.
4. Ejecución y validación del programa.
Uno de los objetivos de la programación es el aprendizaje y diseño de algoritmos.
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 equipo computacional: el hardware necesario para que el sistema de información pueda
operar.
El recurso humano que interactúa con el Sistema de Información, el cual está formado por las
personas que utilizan el sistema.
Un sistema de información realiza cuatro actividades básicas: entrada, almacenamiento,
procesamiento y salida de información.
Entrada de Información: Es el proceso mediante el cual el Sistema de Información
toma los datos que requiere para procesar la información. Las entradas pueden ser
manuales o automáticas.
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.
Almacenamiento de información: El almacenamiento es una de las actividades o
capacidades más importantes que tiene una computadora, ya que a través de esta
propiedad el sistema puede recordar la información guardada en la sección o proceso
anterior. Esta información suele ser almacenada en estructuras de información
denominadas archivos. La unidad típica de almacenamiento son los discos magnéticos
o discos duros, los discos flexibles o diskettes y los discos compactos (CD-ROM).
Procesamiento de Información: Es la capacidad del Sistema de Información para
efectuar cálculos de acuerdo con una secuencia de operaciones preestablecida. Estos
cálculos pueden efectuarse con datos introducidos recientemente en el sistema o bien
con datos que están almacenados. Esta característica de los sistemas permite la
transformación de datos fuente en información que puede ser utilizada para la toma de
decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones
genere una proyección financiera a partir de los datos que contiene un estado de
resultados o un balance general de un año base.
Fundamentos de Programación
11
e
Salida de Información: La salida es la capacidad de un Sistema de Información para
sacar la información procesada o bien datos de entrada al exterior. Las unidades
típicas de salida son las impresoras, terminales, diskettes, cintas magnéticas, la voz,
los graficadores y los plotters, entre otros.
 Actividades que realiza un Sistema de Información:
Entradas:
Datos generales del cliente: nombre, dirección, tipo de cliente, etc.
Políticas de créditos: límite de crédito, plazo de pago, etc.
Facturas (interface automático).
Pagos, depuraciones, etc.
Proceso:
Cálculo de antigüedad de saldos.
Cálculo de intereses moratorios.
Cálculo del saldo de un cliente.
Almacenamiento:
Movimientos del mes (pagos, depuraciones).
Catálogo de clientes.
Facturas.
Salidas:
Reporte de pagos.
Estados de cuenta.
Pólizas contables (interface automática)
Consultas de saldos en pantalla de una terminal.
 Tipos y Usos de los Sistemas de Información
Durante los próximos años, los Sistemas de Información cumplirán tres objetivos básicos dentro de las
organizaciones:
1.
2.
3.
Automatización de procesos operativos.
Proporcionar información que sirva de apoyo al proceso de toma de decisiones.
Lograr ventajas competitivas a través de su implantación y uso.
Fundamentos de Programación
12
e
2. Razones Para Automatizar Los Procesos








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. Lenguajes de 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.
Un lenguaje de programación es un sistema notacional para describir computaciones de
una forma legible tanto para la maquina como para el ser humano
Dicha solución es generar un programa o software utilizando un determinado lenguaje de
programación.
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.
¿Qué conoces tú por léxico, sintaxis y semántica?
Léxico: Conjunto de símbolos permitidos o vocabulario
Sintaxis: Reglas que indican cómo realizar las construcciones del
lenguaje.
Semántica: Reglas que permiten determinar el significado de
cualquier construcción del lenguaje.
Fundamentos de Programación
13
e
 Programa

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.

Estos contienen un conjunto de instrucciones que nos permiten realizar
operaciones de entrada / salida, calculo, manipulación de textos, lógica /
comparación y almacenamiento / recuperación.

Tipos de lenguajes: Atendiendo al número de instrucciones necesarias para
realizar una tarea específica podemos clasificar los lenguajes informáticos en dos
grandes bloques:
 Máquina.
 Bajo nivel
 Alto nivel

Los lenguajes de programación se clasifican
Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente
entendibles por la computadora y no necesitan traducción posterior para que la
CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje
maquina se expresan en términos de la unidad de memoria más pequeña el bit
(dígito binario 0 ó 1).
Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se
escriben en códigos alfabéticos conocidos como mnemotécnicos para las
operaciones y direcciones simbólicas.
Lenguaje de Alto Nivel: Los lenguajes de
programación de alto nivel (BASIC, pascal, cobol,
fortran, etc.) son aquellos en los que las instrucciones o
sentencias a la computadora son escritas con palabras
similares a los lenguajes humanos (en general en
ingles), lo que facilita la escritura y comprensión del
programa.
 Tipos de Lenguaje Alto Nivel (Estructurados y Orientado a
Objetos).
La programación estructurada es una forma de escribir programas de ordenador
(programación de computadora) de forma clara. Para ello utiliza únicamente tres
estructuras: secuencia, selección e iteración.
 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.
Fundamentos de Programación
14
e
 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.
La programación orientada a objetos
 La orientación a objetos promete mejoras de amplio alcance en la forma de
diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo
plazo a los problemas y preocupaciones que han existido desde el comienzo en
el desarrollo de software: la falta de portabilidad del código y reusabilidad,
código que es difícil de modificar, ciclos de desarrollo largos y técnicas de
codificación no intuitivas.

Un lenguaje orientado a objetos ataca estos problemas. Tiene tres
características básicas: debe estar basado en objetos, basado en clases y
capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de
estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear
es usualmente la herencia.
 Programa Fuente.
Describe el argumento escrito por el programador que da inicio al desarrollo de
su obra de software.
No se inclina por el software libre o propietario, porque está destinado al
programador que lo crea y modifica. Es por eso, que existen luego otras
denominaciones, como Código Abierto (Open Source), el cual hace posible que
el acceso al "Código Fuente" del programa no esté limitado a su autor.
Fuente También denominado fuente o texto fuente. Es el texto que contiene las
instrucciones del programa, escritas en el lenguaje de programación.
 Intérpretes y Compiladores

Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo
que haya escrito en lenguaje de alto nivel (código fuente) y lo convierten a código
objeto (casi ejecutable).
Fundamentos de Programación
15
e

Compilado
Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en
un programa en lenguaje de máquina que la computadora es capaz de entender y
ejecutar directamente. Un compilador es un tipo especial de programa, en cuanto a
que sus entradas o datos son algún programa y su salida es otro programa. Para
evitar confusiones, solemos llamar programa fuente o código fuente al programa de
entrada, y programa objeto o código objeto a la versión traducida que el compilador
produce. Código se usa frecuentemente para referirse a un programa o a una parte
de él, sobre todo cuando se habla de programas

El compilador, informa al usuario de la presencia de errores en el programa
fuente, pasándose a crear el programa objeto cuando está libre de errores. El
código objeto puede ser ejecutado posteriormente. Una vez traducido un programa,
su ejecución es independiente de su compilación. Involucra dos pasos en su
operación:
1. Convertir código fuente a objeto
2. Ejecutar el código objeto


Las ventajas de los intérpretes son:
o Resulta más fácil localizar y corregir errores (depuración de programas)
son más pedagógicos para aprender a programar.
o El programa es más fácil de desarrollar.
Traducen programas de alto nivel. No se genera en la mayoría de los
ficheros.
Con el intérprete, cada vez que necesitamos ejecutar el programa tenemos que
volver a analizarlo porque no hay código objeto.
Con el compilador, aunque más lenta la traducción, sólo se realiza una vez.
 Ciclo de Vida de un Programa
En este paso se determinan la información inicial para la elaboración del programa. Es
donde se determina qué es lo que debe resolverse con el computador, de qué
presupuestos se debe partir, etc. en definitiva, el planteamiento del problema, por ello
se debe de seguir los siguientes pasos:

Análisis del Problema
Esta fase requiere una clara definición donde se contemple exactamente lo que
debe hacer el programa y el resultado o solución deseada.
Dado que se busca una solución se precisan especificaciones de entrada y salida.
Para poder definir bien un problema es conveniente responder a las siguientes
preguntas:
¿Qué entradas se requieren? (cantidad y tipo)
¿Cuál es la salida deseada? (cantidad y tipo)
¿Qué método produce la salida deseada?

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
Fundamentos de Programación
16
e
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)
b)
c)
d)
e)
Codificación
Compilación y ejecución
Verificación
Depuración
Documentación
a) Codificación: Es la escritura en un lenguaje de programación de la
representación de un algoritmo. Dado que el diseño del algoritmo es
independiente del lenguaje de programación utilizado en su implementación, el
código puede ser escrito con igual facilidad en un lenguaje o en otro.
b) Compilación y ejecución: Una vez que el algoritmo se ha convertido en un
programa fuente, es preciso introducirlo en memoria mediante el teclado y
almacenarlo posteriormente en un disco. Esta operación se realiza con un
editor de texto, posteriormente el programa fuente se convierte en un archivo
de programa que se guarda en un disco.
c) Verificación:
Consiste en verificar la funcionalidad del programa a través de varios métodos
para detectar errores posibles. Métodos de Prueba: Chequeo de escritorio
Prueba manual de datos de muestra Intento de traducción Prueba de datos de
muestra en la computadora Prueba por un grupo selecto de usuarios
potenciales.





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.
d) Prueba y depuración del programa
Depurar es correr el programa en una computadora y corregir las partes que no
funcionan. En esta fase se comprueba el funcionamiento de cada programa y
esto se hace con datos reales o ficticios. Cuando los programas están
depurados, se prueban. Cuando los programas se depuran, se pueden
encontrar los siguientes errores:
Fundamentos de Programación
17
e




Errores de sintaxis o de compilación
Errores de ejecución
Errores de lógica
Errores de especificación.
 Errores de sintaxis o de compilación
Es una violación de las reglas del lenguaje de programación. Son más fáciles de
corregir, ya que son detectados por el compilador (posible error de escritura).
 Errores de Ejecución
Se deben generalmente a operaciones no permitidas como dividir por cero, leer
un dato no numérico en una variable numérica, exceder un rango de valores
permitidos, etc. Se detectan porque se produce una parada anormal del
programa durante su ejecución.
 Errores de Lógica
Corresponden a la obtención de resultados que no son correctos y la única
manera de detectarlos es realizando suficientes pruebas del programa. Son los
más difíciles de corregir, no sólo por la dificultad de detectarlos, sino porque se
deben a la propia concepción y diseño del programa.
 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.
e)
Documentación del programa
Consiste en describir por escrito a nivel técnico los procedimientos relacionados
con el programa y su modo de uso. También se debe documentar el programa
para que sea más entendible.
 ¿Para quiénes son la documentación?
Usuarios (Digitadores)
Operadores
Programadores
Analistas de sistemas
 Documentos que se elaboran:
Manual de Usuario y Manual del Analista.
A los usuarios se les elabora un manual de referencia para que aprendan a utilizar
el programa. Esto se hace a 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 operadores por si se presentan mensajes de error, sepan cómo responder a
ellos. Además que se encargan de darle soporte técnico al programa.
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
Fundamentos de Programación
18
e
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.

Mantenimiento del programa
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.
 Identificadores
Los Identificadores son palabras que de alguna manera ayudan a identificar a un conjunto de
datos.
Los identificadores tienen las siguientes reglas:
o No debe tener espacios en blanco
o
No comenzar por un carácter especial (·,·,#,%,?¿,etc.).
o
Su nombre debe ser corto que debe dar como referencia a lo que quiera representar.
o
Siempre debe de comenzar por una letra o subguion.
Ejemplos:
 Identificador que agrupe a:
William, Angie, Sebastián, Anibal, Anabel
Por lo tanto estamos hablando de Nombres.
 Identificador que agrupe a:
Escobar, Aquino, Ángeles, Florián
Por lo tanto estamos hablando de Apellidos
 Identificador que agrupe una evaluación final :
Evaluación final
Recuerda que debe de respetar las reglas por lo tanto
puede ser:
Eva_Final
o quizás pueda ser
Evaluacion_F
de acuerdo a tu criterio.
Otros Identificadores tales como:
Sueldo, Est_Civil, _Sexo, _ Pagos, etc.
Fundamentos de Programación
19
e
 Te damos algunos ejemplos para establecer identificadores corto para los siguientes
ejemplos:
o
Nombres y Apellidos Nom_Ape
o
Edades
Eds
o
Primera Nota
Nota_1
o
Promedio de Practicas Prom_Pract
o
Estado Civil
Est_Civ
o
Sueldo Básico
Suel_B
o
Sueldo Neto
Suel_N
o
Cantidad de Horas
Cant_H
o
Costo por hora
Cst_H
Recuerda que los identificadores son palabras que deberás de definir de acuerdo al
valor que quieras representar.
Ejercicios Propuestos
a) Definir los identificadores para agrupar:
1. _________________ Perú, Colombia, Holanda, Ecuador, España, etc.
2. _________________ 15, 12, 10, 5, 13, etc.
3. _________________ Planilla, Honorarios, etc.
4. _________________ Varón, Mujer, etc.
5. _________________ Rojo, verde, azul, blanco, etc.
6. _________________ Chorrillos, Villa el Salvador, Comas, Puente Piedra, etc.
7. _________________ Licuadora, Televisión, Refrigeradora, etc.
8. _________________ Memoria, Mouse, Teclado, Scanner, etc.
9. _________________ 2,4,6,8,10,12,14, etc.
10. _________________ 1,3,5,7,9,11, etc.
11. _________________ Aprobado, Desaprobado.
12. _________________ Matemáticas, Fundamentos, Ingles, etc.
13. _________________ Coca-Cola, Pepsi, KR, etc.
14. _________________ Enero, Febrero, Marzo,Abril, etc..
15. _________________ Lunes, Martes, Miercoles, etc.
Fundamentos de Programación
20
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.
Entero
Numéricos
Decimal
Simples
Carácter
No Numéricos
Tipos de Datos
Primitivos
Booleano
Internas
Estructura de
Datos
Externas
Ejemplos:
Qué tipo de dato seria para establecer a los:
-
Sexo
_____________________
Igv
_____________________
Nombres
_____________________
Apellidos
______________________
Notas
______________________
Promedio
____________________
Peso de una persona ____________________
Edad
____________________
Fundamentos de Programación
21
e
Contenidos
-
Uso de Expresiones: Definición, Clasificación de la Expresiones
Operadores Div y Mod
Operación de Asignación(Aritmética, Lógica y Carácter)
Salida y Entrada de Datos.
Estructura general de un programa: Definición de Algoritmos y Características
Uso de Herramientas de Desarrollo de Algoritmos
Pseudocódigo: Definición, Estructura del Pseudocódigo, Definición de sus partes
Sección de Declaración: Variables – Constantes.
Estilo de escritura (Datos, Procesos, Salidas).
Estructura General de un programa: Estructura Secuencial.
Tipos de Instrucciones : Instrucción de entrada, Instrucciones de Manejo de Datos,
Instrucción de salida de Resultados
Propuesta de Ejercicios usando los pseudocódigos
Introducción a las Herramientas de Programación
El objetivo de esta semana es familiarizar al alumno con el diseño de algoritmos para la
resolución de problemas por computadora. Requiere él uso de una notación que sea entendida
por ella, es decir, un lenguaje de programación. No obstante, durante la fase de diseño del
programa, la utilización de un lenguaje así no es aconsejable debido a su rigidez.
Además de la utilización de las representaciones gráficas un programa puede describirse
mediante un lenguaje intermedio entre el lenguaje natural y el lenguaje de programación, de tal
manera que permita flexibilidad para expresar las acciones que se han de realizar y. sin
embargo. Imponga algunas limitaciones, importantes desde el punto de vista de su posterior
codificación en un lenguaje de programación determinado.
Al igual que las otras técnicas, la utilización de una notación intermedia permite el diseño del
programa sin depender de ningún lenguaje de programación y es después del diseño, cuando
se codificará el algoritmo obtenido en aquel lenguaje que nos interese.
Por lo tanto debemos de aprender a manejar distintas expresiones dentro de un lenguaje de
programación y es por ello que conoceremos lo siguiente:
 Expresiones
Fundamentos de Programación
22
e
Es la representación de un cálculo necesario para la obtención de un resultado.
Ejemplo: son datos: 11, “Angie”, “SISE”, etc
Son cálculos: Y=4+3
 Tipos de Expresiones:
a)
b)
c)
d)
e)
Aritméticos (su resultado es un número): potencia, * , / , mod, div, + , Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <>
Lógicos o Booleanos (su resultado es un valor de verdad): not, and, or
Alfanuméricos : + (concatenación)
Asociativos. El único operador asociativo es el paréntesis ( ) , el cual permite indicar
en qué orden deben realizarse las operaciones. Cuando una expresión se encuentra
entre paréntesis, indica que las operaciones que están dentro de ellos debe realizarse
primero. Si en una expresión se utilizan más de un paréntesis se deberá proceder
primero con los que se encuentren más hacia el centro de la expresión.
Ejemplos de Expresiones Aritméticas:
6^(1/2)
6^2
28+29*(14^2)
 Jerarquía de Operaciones:
o
o
o
o
o
o
o
o
o
o
()
Potencia
Producto y división
Div y Mod
Suma y resta
Concatenación
Relacionales
Negación
And
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.
Fundamentos de Programación
23
e

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.
a. Establecer las expresiones matemáticas a expresiones algorítmicas.
b. Hallar el resultado de esta expresión según la jerarquía de operadores.
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
Fundamentos de Programación
24
e
c. Mencione los valores que puedan tener:
Donde:
N1=5
U=N3*2
N2=2 N3=1
Q=U/2+N1
Y=N1+N3
T=Q^0
Z=Y+N2
¿Cuál es el valor de T?
¿Cuál es el valor de
Z?
Z=___
T=____
 Operadores DIV y MOD
El símbolo / se utiliza para la división Decimal; por lo tanto para poder obtener el
cociente y el residuo se deberá de utilizar el operador div para el cociente y el mod
para el residuo. Por ejemplo en JAVA se utiliza el símbolo / para el cociente pero la
variable debe ser de tipo int para poder obtener el cociente y él % para obtener el
residuo.
Ejemplos usando DIV:
Y= 15 div 3  Y toma el valor 5.
Otro ejemplo puede ser la división 15/6 de esta manera se obtendrá toda la división
exacta solo si este es de tipo decimal; es por ello que el tipo de dato de Y debe ser
entero, para solo darnos el resultado 5 que es el cociente de la división.
Otros ejemplos con Div: A= 20 div 5  A toma el valor 4
Q= 15 div 2
 Q toma el valor 7
V= 51 div 7
 V toma el valor 7
Ejemplos usando MOD:
H= 15 mod 3  H toma el valor 0
A= 20 mod 5  A toma el valor 0
Q= 15 div 2
 Q toma el valor 1
V= 51 div 7
 V toma el valor 2
Fundamentos de Programación
Estos operadores los podrás
utilizar
también
para
la
descomposición de números,
como por ejemplo en el cual
quisieras realizar la suma de las
cifras del número, preguntar si es
par o quizás si el numero es
capicúa
25
e
 Resuelva los siguientes Ejercicios aplicando la jerarquía de
operadores
Obtener el valor de cada una de las siguientes expresiones aritméticas:
1. 17 div 2
2. 17 mod 2
3. 12 div 5
4. l2 div 3
5. 10 mod 3
6. 15 mod 6
7. 7*10-50 mod 3*2+9
8. (7*(10-3) mod 2)*4+9
NOTA: Considérese jerarquía de operadores.
Encontrar el valor de cada una de las siguientes expresiones o decir si no es
una expresión válida:
1. 9-5-3
2. 20 div 3+3 / 5
3. 9 div 2 / 5
4. 9 mod 5 mod 3
5. 7 mod (5 mod 4)
6. (7 mod 5) div 3
7. (7 div 5 mod 3)
8. ((12+3) div 2) / (8-(5+1))
9. 12/2*3
NOTA: Considérese jerarquía de operadores.
Fundamentos de Programación
26
e

Asignación de Datos
La instrucción de asignación se usa para asignar valores a variables utilizando la
igualdad (=).
Identificador=Expresión
La expresión podrá ser un valor fijo o un cálculo.
En el caso de ser un dato de tipo carácter este estará entre comillas “” , solo en este
caso.
Ejemplo:
A=2
Edad=33
Palabra=”SISE”
Prom=(a+b+c)/3
Raiz=(5^(1/3))
Direccion=”Mz B4 - Lt4”


Sección de Declaración de Datos (Variables – Constantes).
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
 Como declarar una Variable
Tipo de Dato: Identificador
Fundamentos de Programación
27
e
Ejemplos:
o
o
o
o
o
Caracter: Nombres
Caracter: Apellidos
Entero: Edad
Decimal: Promedio
Lógico: Bandera
 Sección Constantes (Literales)
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.
 Como declarar una Constante
Identificador=Valor
Ejemplos:
o
o
o
o
o
Instituto=”SISE”
Mes_Aniv=”Noviembre”
Edad=25
Igv=0.19
Existe_Codigo=verdadero
 Resuelva los siguientes Ejercicios
a) Defina el tipo de dato que corresponda a cada identificador:
a) _____________ Promedios
b) _____________ Edades
c) _____________ Año de Nacimiento
d) _____________ Correo electrónico
b)
Define tus propios valores para los siguientes Literales(Contantes):
o
Codigo
____________________
o
Direccion
____________________
o
Telefono
____________________
o
Peso
____________________
o
Talla
____________________
o
Estado_Civil
____________________
Fundamentos de Programación
28
e
c)
Otros propuestos
 Estos nombres de variable son válidos.
Edad
fechaNacimiento
jugador1
Igv
vidasRestantes
 Estos otros nombres no son válidos
2jugadores (No empieza por una letra)
año (Contiene la ñ)
elPatioDeMiCasaEsParticularYCuandoLlueveSeMoja (Muy Largo)
puntuación (Lleva acento)
 Mencione 15 Identificadores (datos) que pueda tener un estudiante.
1) ___________________
2) ___________________
3) ___________________
4) ___________________
5) ___________________
6) ___________________
7) ___________________
8) ___________________
9) ___________________
10) ___________________
11) ___________________
12) ___________________
13) ___________________
14) ___________________
15) ___________________
Fundamentos de Programación
29
e
 Estructura General de un Programa
Un programa puede considerarse como una secuencia lógica de acciones (instrucciones) que
manipulan un conjunto de objetos (datos) para obtener unos resultados que serán la solución al
problema que resuelve dicho programa.
Todo programa en general contiene dos bloques bien diferenciados tales como:
• Bloque de declaraciones. En él se especifican todos los objetos que utiliza el programa
(constantes, variables, tablas, registros. archivos, etc.) indicando sus características. Este
bloque se encuentra localizado siempre por delante del comienzo de las acciones.
• Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar
para la obtención de tos resultados deseados.
Los procesos que se pueden llevar a cabo en un programa pueden ser de tipo aritmético o
lógico, incluyéndose algunas operaciones de manejo de caracteres y operaciones de
entrada salida.
Las partes principales de un programa están relacionadas con sus dos bloques ya
mencionados.
Es por ello que necesitamos realizar algoritmos para encontrar la solución a problemas
computables.

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
Las características básicas que debe tener todo buen algoritmo, y, por tanto,
cualquier receta de cocina, son las siguientes:
• Precisión: No debe haber la menor ambigüedad ni en las operaciones a
realizar ni en su orden, ni omitir algo. Por ejemplo, en una receta dice: „En otro
recipiente, batir dos huevos con los dos azúcares e incorporar la mantequilla
fundida”. Si la siguiésemos al pie de la letra, el pastel saldría con múltiples
fragmentos de cáscara de huevo... y es que el lenguaje humano es un tanto
impreciso.
• Definibilidad: Cada vez que se repita, en las mismas condiciones, el
resultado debe ser idéntico. Sí, ya sé que con las recetas de cocina esto no
siempre sucede... pero es que las condiciones no son las mismas en todo
momento.
Fundamentos de Programación
30
e
• Finitud: Evidentemente, para que el algoritmo tenga alguna utilidad, debe
acabar en un número finito de pasos. De hecho, el tiempo que nos lleva
completar el algoritmo es casi siempre algo primordial.
No obstante, existen algoritmos que, aún siendo válidos en teoría, no son efectivos en la
práctica.
Ejemplos:
1) PROBLEMA: Un estudiante se encuentra en su casa (durmiendo) y debe ir a la
universidad (a tomar la clase de programación!!), ¿qué debe haga el estudiante?
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.
Cepillarse los dientes.
Despedirse de la mamá y el papá.
¿Hay tiempo suficiente?
Si, Caminar al paradero.
Sino, Correr al paradero.
Hasta que pase un bus para la universidad haga:
Esperar el bus
Ver a las demás personas que esperan un bus.
Tomar el bus.
Mientras no llegue a la universidad haga:
Seguir en el bus.
Pelear mentalmente con el conductor.
Timbrar.
Bajarse.
Entrar a la universidad.
Fin
2) PROBLEMA: Cambiar la rueda pinchada de un automóvil teniendo un gato mecánico
en buen estado, una rueda de reemplazo y una llave inglesa.
ALGORITMO:
Fundamentos de Programación
31
e
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
3) PROBLEMA: Realizar la suma de los números 2448 y 5746.
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
 Tips de Algoritmos
1) Algoritmo De Euclides
Uno de los algoritmos más antiguos que se conocen, y que todavía se utiliza hoy en día, se
debe a Euclides y permite calcular el máximo común divisor de dos números de una manera
cómoda y rápida6. Es decir, la finalidad de este algoritmo radica en encontrar el mayor número
entero que es divisor de los dos números dados.
Adaptado al lenguaje actual, el algoritmo de Euclides viene a decir que puede obtenerse el
máximo común divisor de dos números, a y b, en la siguiente forma:
1. Calcular r, el resto de la división entre a y b
2. Si r = O el mcd (a, b) es b. En caso contrario, se hace a = b y b = r y se vuelve al
paso 1.
Por ejemplo, para hallar el mcd (1230, 450) basta efectuar las siguientes divisiones (figura 2):
o 1230 / 450
Se obtiene el cociente 330 y el residuo 2
o 450 / 330
Se obtiene el cociente 120 y el residuo 1
o 330 / 120
Fundamentos de Programación
32
e
Se obtiene el cociente 90 y el residuo 2
o 120 / 90
Se obtiene el cociente 30 y el residuo 1
o 90 / 30 mcd
Se obtiene el cociente 0 y el residuo 3
Consecuentemente, se tiene que el mayor divisor común de 1230y450 es 30.
Enseguida se aprecia que este algoritmo es mucho más eficiente que el método de
descomposición en factores primos que se enseña en la escuela. Por una parte, es mucho más
rápido, salvo que trabajemos con números pequeños; por otro lado, no exige memorizar todos
los factores primos, sino únicamente tres números. Debido a esto, el algoritmo de Euclides es
el que se implementa en los ordenadores para calcular el máximo común divisor.
2) Sistema Binario
Las personas utilizamos el sistema decimal (base 10) y, ocasionalmente, el sexagesimal (base
60) al calcular con ángulos y tiempo. En cambio, para el ordenador es mucho más eficaz
trabajar en sistema binario (base 2), ya que puede identificar un dígito binario, 0 ó 1,
comprobando si pasa o no corriente por un determinado circuito.
Cuando queremos pasar un número del sistema decimal al binario, podemos utilizar el
siguiente algoritmo:
1. Dividir por 2 el número.
2. Dividir por 2 el cociente entero obtenido.
3. Repetir el paso anterior hasta llegar a 1.
4. Escribir, de izquierda a derecha, el último cociente (1) y los restos que se han obtenido al
dividir, en orden inverso.
Si no conocía este algoritmo, es posible que su enunciado le parezca poco claro, así que nada
mejor que un ejemplo para acabarlo de entender. Obtengamos el binario de 26 así como se
muestra el numero 26 se divide entre 2 y se luego el 26 será el cociente entre 2 y así,
sucesivamente, los números 26. 13. 6 y 3.
Fundamentos de Programación
33
e
 Herramientas de Desarrollo de Algoritmos
Para representar nuestros algoritmos podemos usar:
A. Diagramas de Flujos
B. Diagramas N-S
C. Pseudocódigos, Otros
A. Diagramas de Flujos
Es la representación gráfica de flujo de un algoritmo o de secuencia rutinaria. Se basan
en la utilización de diversos símbolos para representar operaciones específicas. Se les
llama diagramas de flujo porque los símbolos utilizados se conectan por medio de
flechas para indicar la secuencia de la operación.
Símbolo
Descripción
Inicio / Terminación. Este símbolo se utiliza para señalar el
comienzo así como el final de un diagrama. Tradicionalmente
se colocan las palabras “INICIO” ó “FIN” dentro de la figura
para hacerlo más explícito.
Entrada de datos. En este símbolo se indican los valores
iníciales que deberá recibir el proceso. Esto se hace
asignándoles letras o nombres de variables para cada uno de
los valores y anotando estas letras en el interior de la figura.
Este símbolo siempre deberá tener al menos una conexión
entrante (generalmente del inicio) y una de salida.
Proceso de datos. Este símbolo lo utilizaremos para señalar
operaciones matemáticas, aritméticas o procesos específicos
que se realicen con nuestros datos.
La manera de anotar dichos procesos, puede ser mediante
una descripción breve de la operación o mediante una
asignación de dicha operación hacia una variable como por
ejemplo:
R
=
A
+
B
Decisión. Este símbolo nos representa una disyuntiva lógica
o decisión. En su interior se anota una instrucción o pregunta
que pueda ser evaluada como cierta o falsa y que determine
el
flujo
del
programa.
Fundamentos de Programación
34
e
Desplegado de información. Este símbolo se utiliza para
mostrar un resultado, el cual puede representar la solución al
problema que se pretende resolver y que fue conseguida a
través
del
resto
del
diagrama.
Dentro de su interior se anotará la variable con el resultado
final o el mensaje que represente el resultado del algoritmo.
Generalmente veremos este símbolo muy cerca del final del
proceso y precedido por el símbolo de terminación.
Este símbolo siempre deberá tener al menos una conexión de
entrada y una de salida.
Flechas: Indica el sentido del flujo del proceso,
conectando al proceso
En la diagramación, también contamos con una serie de símbolos auxiliares que no
intervienen en el proceso del algoritmo, pero que pueden ser útiles para ayudarnos a
dar claridad a nuestros diagramas, algunos de ellos son los siguientes:
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.
Este conector va asociado a un conector “gemelo” y junto con él, representa
una puerta de entrada y de salida para el flujo del diagrama, es decir que
cuando una flecha termina en un conector marcado con la letra “A”, se
continuará el diagrama a partir de otro conector marcado con la misma letra
tal como si se tratara de una línea continua in interrumpida.
Conector de página. Este conector es idéntico en funcionamiento que el
anterior, pero su forma pentagonal lo distingue y nos indica que debemos
buscar el “gemelo” en una página distinta de la actual. Este conector lleva
asociado una especie de salto entre páginas.
Ejemplo:
Fundamentos de Programación
35
e
B. Diagramas N-S (I. Nassi y B. Scheneiderman)
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
Un pseudocódigo (falso lenguaje), es una serie de palabras léxicas y gramaticales referidos a
los lenguajes de programación, pero sin llegar a la rigidez de la sintaxis de estos ni a la fluidez
del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier
lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases
de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las distintas
herramientas de la ingeniería de software. Es, netamente, lenguaje de tipo informático.
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.
 Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo

Ocupa menos espacio en una hoja de papel

Permite representar en forma fácil operaciones repetitivas complejas

Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación.

Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación.
 Estructura de un Pseudocódigo
a) Encabezado de programa.- Se establece un nombre para el programa *
b) Sección de Declaración- Permite establecer las Variables y la Constantes
c) Cuerpo del Programa.- se establece con la palabra Inicio
Fundamentos de Programación
36
e
d) Instrucciones.- son acciones o tareas que se establecen como una expresión o
una asignación de datos.
e) Termino del programa.- se establece con la palabra Fin
algoritmo <nombre_del_algoritmo>
//Secciones de declaraciones
[constantes
//declaraciones de constantes]
[variables
//declaraciones de variables]
//Cuerpo del programa
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
2. Instrucciones de Asignación.- se le establecer un tipo de dato o una expresión.
<variable> = <expresión>
3. Instrucciones de Lectura.- se refiere al ingreso de datos que se tendrá que establecer
para cada identificador.
Se realizara con la palabra Leer
Fundamentos de Programación
37
e
leer(<Variable>)
Formas:
leer (ident_1)
o
leer (ident1,ident2, ident3,….)
leer (ident_2)
<nombre_de_constante>
= <expresión>
leer (ident_3)
La lectura en un Pseudocódigo puede ser uno por uno o separados por comas
4.
Instrucciones de Escritura.- Una instrucción de salida (o simplemente salida)
consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluación de
una lista de expresiones. Normalmente, los datos son enviados a la salida estándar (la
pantalla), pero, también existen otros dispositivos de salida (la impresora, el plotter,...).
Se realiza con la palabra Escribir
escribir(<variable>,<expresión_literal>)
Formas:
escribir (expresión1)
escribir (expresión2)
escribir (expresión3)
o
escribir (expresión1, expresión1, expresión3)
Ejemplo de Pseudocódigo:

Ejemplo 1:
Mostrar los datos asignados de la siguiente maneraalgoritmo Entrada_Salida
Constante
nombre = "Timoteo"
edad = 27, hijos = 2
Inicio
escribir (nombre, " tiene ", edad, " años")
escribir (nombre, " tiene ", hijos, " hijos")
Fin_Programa
Por pantalla aparecerá:
Fundamentos de Programación
38
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
Leer (BASE, ALTURA)
AREA = BASE * ALTURA
Escribir( “El área del rectángulo es “, AREA)
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
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
Fundamentos de Programación
39
e
Contenidos
-
Estructuras Secuenciales con uso de casos comerciales
Uso de cálculos matemáticos (use el operador +,-,*,/,raíz, exponente, etc)
Elaboración Caso Práctico. Explicación de uso de porcentajes, uso de promedios
aritméticos, armónicos, etc.
Propuesta de los trabajos grupales (elaborar en papelotes los pseudocódigos
propuestos)
____________________________________________________________________________________
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
40
e
Ejemplos:
1. Hallar la suma de tres números
Ejemplo:
Variables
entero: Num1, Num2, Suma
INICIO
leer (Num1,Num2,Num3)
Suma=Num1+Num2+Num3
escribir (Suma)
FIN
2. Mostrar el promedio de 5 notas
Ejemplo:
Variables
entero: n_1, n_2, n_3, n_4, n_5
decimal: 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
3. Mostrar la quinta parte de la suma de 3 números
Variables
entero: numA, numB, numC,suma
decimal: quinta
INICIO
leer (numA, numB, numC)
suma=( numA+ numB+ numC)
quinta=suma/5
escribir (suma,quinta)
FIN
Fundamentos de Programación
41
e
4. Mostrar la edad de una persona de acuerdo al año que nació.
Constante
a_Actual=2009
Variables
entero: a_Nac,edad
INICIO
leer (a_Nac)
edad=(a_Actual – a_Nac)
escribir (edad)
FIN
5. Dada las horas trabajadas de una persona y el valor por hora.
Calcular su salario e imprimirlo Ejemplo:
Variables
decimal: HorasT,CostoH,salario
INICIO
leer (HorasT,CostoH)
salario=HorasT * CostoH
escribir (salario)
FIN
6. Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y
15% respectivamente. Desplegar el resultado.
Variables
decimal: Suel_1, Suel_2, Suel_3,Aum_1,Aum_2,Aum_3,Nsuel_1, Nsuel_2,
Nsuel_3
INICIO
leer (Suel_1, Suel_2, Suel_3)
Aum_1= Suel_1 * 0.10
Aum_2= Suel_2 * 0.12
Aum_3= Suel_3 * 0.15
Nsuel_1=Suel_1+Aum_1
Nsuel_2=Suel_2+Aum_2
Nsuel_3=Suel_3+Aum_3
escribir (Aum_1,Aum_2,Aum_3,Nsuel_1, Nsuel_2, Nsuel_3)
FIN
Fundamentos de Programación
42
e
7. Programa que pida el precio de un artículo y calcule su valor aplicándole
un 19% de IGV.
Variables
decimal: PrecioA, igv,Nprecio
INICIO
leer (PrecioA)
igv=PrecioA * 0.19
Nprecip=PrecioA+igv
escribir (Nprecip)
FIN
8. Realiza un programa que pida el valor de 3 artículos y muestre el total y
la media Aritmética.
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
9. Escriba un programa que calcule el área de un triángulo rectángulo,
dada la altura y la base.
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
43
e
10.
Convertir de grados Celsius a grados Fahrenheit.
Variables
entero: c
decimal: f
INICIO
leer (C)
F= 1.8 * C + 32
escribir (F)
FIN
11. Se tiene un monto en soles, deberá de mostrarlo en dólares.
Variables
decimal: Mont_Soles, Mont_Dolares
Constante
Tc=2.87
INICIO
leer (Mont_Soles)
Mont_Dolares= Mont_Soles * Tc
escribir (Mont_Dolares)
FIN
12. Convertir una cantidad de metros a centímetros
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
44
e
EJERCICIOS DE APLICACIÓN
1. Escribir un programa que calcule el salario de un trabajador de la
manera siguiente. El trabajador cobra un precio fijo por hora y se le
descuento el 10% en concepto de impuesto sobre la renta. El programa
debe pedir el nombre del trabajador, las horas trabajadas y el precio que
cobra por hora. Como salida debe imprimir el sueldo bruto, el descuento
de renta y el salario a pagar.
2. Dada una medida de tiempo expresada en horas, minutos y segundos
con valores arbitrarios, elabore un programa que transforme dicha
medida en una expresión correcta. Por ejemplo, dada la medida 3h
118m 195s, el programa deberá obtener como resultado 5h 1m 15s.
3. Elabore un programa que realice la conversión de cm. a pulgadas.
Donde 1cm = 0.39737 pulgadas. Por lo tanto, el usuario proporcionara el
dato de N cm. y el programa dirá a cuantas pulgadas es equivalente.
4. Elabore un programa que realice la conversión de pulgadas a cm.
Donde 1 cm. = 0.39737 pulgadas. Por lo tanto, el usuario proporcionara
el dato de N pulgadas y el programa dirá a cuantos centímetros
equivale.
5. Elabore un programa que realice la conversión de metros a pies Donde
1 m = 3.2808 pies. Por lo tanto, el usuario proporcionara el dato de N m
y el programa dirá a cuantos pies equivale.
6. Elabore un programa que realice la conversión de pies a metros
Donde 1 m = 3.2808 pies. Por lo tanto, el usuario proporcionara el dato
de N pies y el programa dirá a cuantos metros equivale.
7. Elabore un programa que realice la conversión de kilogramos a libras
Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el
dato de N Kg. y el programa dirá a cuantas libras equivale.
8. Elabore un programa que realice la conversión de libras a kilogramos
Donde 1 Kg. = 2.2046 libras. Por lo tanto, el usuario proporcionara el
dato de N libras y el programa dirá a cuantos kilogramos equivale.
9. Se desea encontrar la longitud y el área de un círculo de radio 5.
Modificar el problema anterior para que sea capaz de calcular el área y
la longitud de un círculo de cualquier radio requerido.
10. Escribe un programa que calcule el área de un círculo de cualquier radio.
L = 2 * pi * R (asignación del valor de la longitud)
Fundamentos de Programación
45
e
11. Escribe un programa que lea una cantidad depositada en un banco y
que calcule la cantidad final después de aplicarle un 20% de interés.
12. Un maestro desea saber qué porcentaje de hombres y que porcentaje de
mujeres hay en un grupo de estudiantes.
13. Un alumno desea saber cuál será su calificación final en la materia de
Lógica Computacional. Dicha calificación se compone de tres exámenes
parciales cuya ponderación es de 30%, 30% y 40%.
14. Una farmacia aplica al precio de los remedios el 10% de descuento.
Hacer un programa que ingresado el costo de los medicamentos calcule
el descuento y el precio final.
15. Diseñar un algoritmo que lea cuatro variables y calcule e imprima su
producto, suma y media aritmética.
16. Realiza un programa que dados el voltaje en voltios y la resistencia en
ohmios, nos calcule la intensidad, mediante la aplicación de esta
fórmula:
intensidad = Voltaje / Resistencia
17. Suponga que un individuo desea invertir su capital en un banco y desea
saber cuánto dinero ganará después de un mes si el banco paga a razón
de 2% mensual. Realiza un programa que calcule dicha ganancia
teniendo como entrada el capital invertido.
18. Un vendedor recibe mensualmente un sueldo base más un 10% extra
por comisión de sus ventas. El vendedor desea saber cuánto dinero
obtendrá por concepto de comisiones por las tres ventas que realiza en
el mes y el total que recibirá en el mes tomando en cuenta su sueldo
base y comisiones.
19. PC:Se lee un número correspondiente al radio de la circunferencia,
visualizando la longitud de la misma y el área del círculo
correspondiente.
Se recuerda: AREA = PI * RADIO2 y LONGITUD = 2 * PI * RADIO
20. Se tiene que calcular el área de un cuadrado, teniendo en cuenta que:
AREA= lado * lado = l2
21. Se tiene que calcular el área de un rombo, teniendo en cuenta que:
Fundamentos de Programación
46
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, z)
Fin.
Fundamentos de Programación
47
e
Temass
-
Historia acerca del origen del Lenguaje JAVA. Características.
Entornos de Desarrollo Integrado (IDE):JDeveloper, JCreator, NetBeans, Eclipse, etc.
Diferencias entre los entornos.JVM: Java Virtual Machine
Creación de Aplicaciones usando la IDE de JDeveloper. Descripción del Entorno de
Trabajo.
Comentarios, Separadores e Identificadores (Palabras Clave y Reservadas). Tipos de
Datos.
Variables Primitivas y Literales (Constantes)
Operadores Aritméticos, de Asignación, Lógicos y Relacionales, de Concatenación.
Crear una Aplicación usando el contenedor JFrame. Propiedades.
Controles Básicos de JAVA - SWING (JLabel, JTextField, JButton).
Conversiones de Datos en Java
Estandarización de prefijos (lbl, txt, btn)
Ingreso y Salida de Datos (getText, setText).
____________________________________________________________________________________
Introducción al Lenguaje O.O.
Java es un lenguaje de programación orientado a objetos desarrollado por Sun
Microsystems a principio de los años 90´s.
En Diciembre de 1950 Patrick Naughton, ingeniero de Sun Microsystems, reclutó
a varios colegas entre ellos James Gosling y Mike Sheridan para trabajar sobre un
nuevo proyecto conocido como "El proyecto verde".
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
Fundamentos de Programación
48
e
lenguaje C++ ++ - (++ - porque se añadían y eliminaban características a C++), pero lo
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
49
e
Y como parte de su estrategia de crecimiento mundial y para favorecer la promoción de la
nueva tecnología, Java Soft otorgó permisos para otras compañías para que pudieran tener
acceso al código fuente y al mismo tiempo mejorar sus navegadores.
También les permitía crear herramientas de desarrollo para programación Java y los facultaba
para acondicionar máquinas virtuales Java (JVM), a varios sistemas operativos.
Muy pronto las licencias o permisos contemplaban prestigiosas firmas como: IBM, Microsoft,
Symantec, Silicon Graphics, Oracle, Toshiba y Novell.
Los apples Java (basados en JDK 1.02) son apoyados por los dos más populares navegadores
web (Nestcape Navigator 3.0 y Microsoft Internet Explorer 3.0. I.B.M./Lotus, Computer
Asociates, Symantec, Informix, Oracle, Sybase y otras poderosas empresas de software están
construyendo Software 100% puro JAVA, por ejemplo el Corel Office que actualmente está en
versión Beta.
Los nuevos proyectos de Java son co-patrocinados por cientos de millones de dólares en
capital disponible de recursos tales como la Fundación Java, un fondo común de capital
formado el verano pasado por 11 compañías, incluyendo Cisco Systems, IBM, Netscape y
Oracle.
Hoy en día, puede encontrar la tecnología Java en redes y dispositivos que comprenden desde
Internet y superordenadores científicos hasta portátiles y teléfonos móviles; desde simuladores
de mercado en Wall Street hasta juegos de uso doméstico y tarjetas de crédito: Java está en
todas partes.
 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
50
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.

Entornos de Desarrollo Integrado

BlueJ: desarrollado como un proyecto de investigación universitaria, es libre.

Eclipse: desarrollado por la Fundación Eclipse, es libre y de código abierto,

IntelliJ IDEA: desarrollado por JetBrains, es comercial.

Jbuilder: desarrollado por Borland, es comercial pero también existe la versión
gratuita.

JCreator: desarrollado por Xinox, , es comercial pero también existe la versión
gratuita.

JDeveloper: desarrollado por Oracle Corporation, es gratuito.

NetBeans – gratuito y de código abierto.

Sun Java Studio Enterprise: desarrollado por Sun, es comercial.
Fundamentos de Programación
51
e
 Java Virtual Machine
Es una aplicación necesaria para poder visualizar ciertas páginas web que requieren la JVM.
La JVM (máquina virtual de Java) es únicamente un aspecto del software de Java,
específicamente utilizado para la interacción en la web. Podrás visualizar páginas web que
requieran el uso de la JVM. Puede que tu Windows XP no posea la Java Virtual Machine, así
que no dudes en descargar la JVM. Programas como el Azureus requieren tener instalada la
Java Virtual Machine.
 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.
En este tipo de comentario para documentación, se permite la introducción de algunos tokens o
palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto
en la documentación.
 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:
() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos.
También se utiliza para definir precedencia en expresiones, contener expresiones para control
de flujo y rodear las conversiones de tipo.
{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se
utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.
[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de
matriz.
; - punto y coma. Separa sentencias.
, - coma. Separa identificadores consecutivos en una declaración de variables. También se
utiliza para encadenar sentencias dentro de una sentencia for.
. - 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
52
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.
Serían identificadores válidos:
identificador
nombre_usuario
Nombre_Usuario
_variable_del_sistema
transaccion
Idetentificadores y tipos de datos:
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
53
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;
double 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.
String nom;
String ape;
char letra;
 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.
boolean valor1, valor2 ;
valor1 = true;
valor2 = false;
Tabla tipos de datos:
Tipos de datos
Rango de valores
Descripción
Números enteros
byte
8-bit complemento a 2
Entero de un Byte
short
16-bit complemento a 2
Entero corto
int
32-bit complemento a 2
Entero
long
64-bit complemento a 2
Entero largo
Números reales
float
32-bit IEEE 754
Coma flotante de precisión simple
double
64-bit IEEE 754
Coma flotante de precisión doble
otros tipos
char
16-bit Caracter
Un sólo carácter
boolean
true o false
Un valor booleano (verdadero o falso)
Fundamentos de Programación
54
e
 Constantes (Literales)
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.
final float PI = 3.14159;
final char letra=‟A‟;
final String Nombre =”Angie Aquino”;
final String Direccion=”Mz3 Lt5 Villa de Jesús”;
 Variables
En Java, se utiliza anteponiendo el tipo de dato que corresponda
int edad, a_Actual;
double peso, talla;
También se le pude inicializar con un valor por ejemplo
int c=0, edad=23;
String nom=””,Ape=””;
//inicializando a las variables con “” comillas doble por ser String.
 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:
+
suma los operandos
-
resta el operando de la derecha al de la izquierda
*
multiplica los operandos
/
divide el operando de la izquierda entre el de la derecha
%
resto de la división del operando izquierdo entre el derecho
Como se ha indicado anteriormente, el operador más (+), se puede utilizar para concatenar
cadenas, como se observa en el ejemplo siguiente:
 Operadores Relacionales y Condicionales
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
55
e
>
Mayor que
>=
Mayor o Igual que
<
Menor que
<=
Menor o Igual que
==
Igualdad solo con números
!=
Diferencia entre un valor numérico y otro valor numérico
Los operadores relacionales combinados con los operadores condicionales, 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
56
e
Creación de Aplicaciones usando la IDE de JDeveloper
 Ingresar al Entorno JDeveloper
Para ingresar al Java Developer se deberá de buscar este
icono luego presionar doble click y comenzara a cargar el programa.
Entorno del JDeveloper
Objeto Frame
Ventana de
Componente
s
Ventana de
Aplicaciones
Ventana
Structure
Ventana de
Mensajes
Fundamentos de Programación
Ventana de
Propiedades
57
e
Descripción del Entorno de trabajo
Applications Navigator (Ventana de Aplicacion)
Permite crear y visualizar a las aplicaciones en forma gerarquica;
toda aplicación deberá de empezar con App_Nombre, el proyecto
con prj_Nombre, la clase con Class_Nombre y
Frame con
Frm_Nombre.
Component Palette (Ventana de Componentes)
Aquí se mostraran todos los objetos(JLabel, JButton, JCheckBox,
JComboBox, JList, etc) que se estableceran dentro del Frame.
Donde cada una de ellas tienen sus propias caracteristicas.
Property Inspector(Ventana de Propiedades y Eventos)
En Propiedades Se mostraran 5 tipos de contenidos para
poder manipular todas las caracteristicas que podra adoptar un
objeto (nombre, titulo, color, borde,etc). Ademas se podran
crear
nuevos
Eventos(actionPerformed,
KeyRealesed,
FocusLost,tec) para tener una mayor eficacia en nuestros
proyetos.
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
58
e
Messages – Log(Vetana de Mensajes y Depuracion)
Aquí mostraran
los errores que
ubiecen dentro
del código
En el caso que no ubiese errores mostrara esto
Run Manager(Vetana)
Aquí se Mostraran todas las aplicaciones
que están ejecutadas
Fundamentos de Programación
59
e
 Para abrir cada ventana
Podrá ir al menú ver y podrá seleccionar aquella ventana que desea activar.
 Pasos para crear una Aplicación.
Pasos para crear la aplicación:
1) Crear la Aplicación:
a) Dar click en New Application (ventana de aplicaciones)
Fundamentos de Programación
60
e
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.
Paso 1:
Nombre de la
Aplicación
Paso 2: La ruta
donde se
guardará la
Aplicación
Paso 3: Java
Desktop
Application
Paso 4:
Siguiente (Next)
c)
Se establecerá el nombre del proyecto y finalizar
Paso 5:
Nombre del
Proyecto
Paso 6: Finish
Fundamentos de Programación
61
e
d)
Presionar click derecho sobre el proyecto creado y elegir New
Paso 7: New
e)
Aparecerá una ventana donde deberá Elegir Client Tier / Swing/AWT y luego Java Application
Paso 9:
Paso 8:
f)
Crear la clase: establecer el nombre de clase estableciendo la nomenclatura Class
Paso 10:
Fundamentos de Programación
62
e
g)
crear el Frame: Establecer el nombre del Frame establezca la nomenclatura Frm.
Paso 11:
Hagamos el ejemplo de crear la Aplicación con los pasos que te indique:
1) Ponle el nombre a tu aplicación AppDemo1
2) Establezca como ruta de trabajo el escritorio de la PC y crea una carpeta
nueva llamada Trabajos
3) El proyecto se llamara PrjDemo1
4) La clase se llamara ClassDemo1
5) El Frame se llamara FrmDemo1
Fundamentos de Programación
63
e
Añadir otras aplicaciones en la venta Applications

Deberá de dar click en el icono de Application Navigator y elegir New
Application
 Y repetir el paso 1 hasta el paso 11 para terminar la creación de proyecto
Hagamos otro ejemplo de crear el proyecto con los pasos que te indique:
1)
2)
3)
4)
5)
Nombre de la Aplicación AppDemo1
Ponle el nombre a tu Proyecto PrjCaso01(Sigue los demás pasos y finalizar)
Luego a tu clase que se ejecutara se llamara Class_Caso01
Luego al Frame ponle Frm_Caso1.
Y al darle aceptar quedara así.
 En la venta de aplicaciones se mostraran todas las aplicaciones creadas solo dale un
click al icono y veras algo similar a esto.
Son las 3 últimas aplicaciones creadas para ver a una
de ellas solo da un click aquella que quieras visualizar
Fundamentos de Programación
64
e
 Deberá de tomar en cuenta lo siguiente:

Abrir un proyecto existente

Permitirá cerrar la aplicación que seleccione

Eliminara la aplicación (en forma lógica es decir ya no se podrá
recuperar).

Cambiar el nombre de la aplicación

Permitirá ejecutar los archivos deploy creados
Ejercicio: Realiza la creación de las dos Aplicaciones en la misma unidad y la
misma carpeta de Trabajo
Hay una interrogante ¿cómo
haría para solo tener una
aplicación y varios proyectos?
Lo único que harías es:
1) Crea una aplicación con los pasos indicados
anteriormente.
2) Selecciona la aplicación y Crea el proyecto con su Clase
y Frame
 Repita esta secuencia las veces que desea crear su
aplicación.
Fundamentos de Programación
65
e
 Como por ejemplo:
Click derecho sobre la aplicación / new project
Observa debe estar
seleccionado Project
poner el nombre del proyecto y finalizar y luego pedira el nombre de la clase y frame
como resultado se obtendra
Fundamentos de Programación
66
e
 Como Guardar una aplicación creada
solo tiene que darle click al disco(si solo quieres guardar la aplicación activa)
y si deseas
guardar todas las aplicaciones deberas de elegir a
o ir al menu File (Save / Save All).
 Como abrir una aplicación creada
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
67
e
 Conociendo algunas propiedades del Jframe
 Title.- Permite establecer el titulo a la ventana.
Por ejemplo si pones en el Title que se encuentra en VISUAL pones Presentación
de Notas 2011 o Mi Primer Programa – SISE 2011 – VER aparecera así
 Name.- nos da el nombre de identificacion del Frame en este caso será por defecto
this
 Resizable.- Si esta activado podras cambiar la dimension de la ventana en plena
ejecucion, pero si esta inactivo no permite la modificacion de la dimension en plena
ejecucion. Este se cuentra el opcion Model de la ventana de propiedades
 Controles Básicos de JAVA - SWING (JLabel, JTextField,
JButton)
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..

El más simple de todos ellos es la etiqueta, que se limita a presentar textos e
imágenes en pantalla.
Su nomenclatura es lbl_Nombre
Propiedades esto afectara solo si esta seleccionado el objeto y en la opción VISUAL
Fundamentos de Programación
68
e
a. Border.- permite establecer un tipo de borde y un color.
b. Font .- permitirá cambiar el tipo de letra, tamaño y estilo(negrita y cursiva).
c. Foreground.-permite establecer color de texto.
d. Name.- permitirá establecer el nombre de objeto. Recuerda que deberás de usar su
nomenclatura ejemplo (lblEtiqueta).
Presiona click derecho sobre el objeto y selecciona refactor y luego rename.
e. Text.- permitirá establecer el titulo que se visualizará por defecto. Ejemplo
f.
Tooltiptext.- muestra un mensaje emergente cuando el puntero esta encima
del objeto
Fundamentos de Programación
69
e

Me permite el ingreso de datos.
Su nomenclatura es txt_Nombre
Propiedades
a. Background.- permite poner color de fondo
b. Border.- permite establecer un tipo de borde (bevelBorde,LineBorde,
titleBorde,etc). Por defecto tiene su borde simple.
c.
Enabled.-devuelve True (en el caso que se desee escribir) o false(para
desactiviarlo y dejar de escribir).
d. Font .- permitirá cambiar el tipo de letra, tamaño y estilo(negrita y cursiva).
e. Foreground.-permite establecer color de texto.
f.
Name.- permitirá establecer el nombre de objeto. Recuerda que deberás
de usar su nomenclatura ejemplo (txtNombre).
g. Text.- esta propiedad deberá estar en blanco para poner nuevos valores desde la
ejecución de programa. Ejemplo
Es un texto
Es una Etiqueta
h. Tooltiptext.- muestra un mensaje emergente cuando el puntero esta
encima del objeto

se utiliza en el caso que se desee dar un resultado presionando un Click.
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
Fundamentos de Programación
70
e
 Ingreso y Salida de Datos (getText, setText).
getText() metodo que permitira obtener el contenido del objeto.
seText() metodo que permitira visualizar el contenido del obejto.
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:
 Integer.parseInt (para datos numericos enteros)
 Double.parseDouble(para datos numericos decimales)
 Boolean.parseBoolean(para datos lógicos)
Es por ello que cada objeto de entrada y salida necesita tener su Name(con sus respectivas
nomenclatura).
Ejemplos
1. Crear un pseudocodigo para ingresar nombres, apellidos, edad y estatura; entonces seria
asi:
Paso 1: realizar el analisis y establecerlo en un psedocodigo
Variables
Entero: edad
Decimal: estatura
Carácter: nombre y apellido
inicio
Leer(nombre,apellido,edad,estatura)
Fin_Programa
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
Tendríamos 4 textos para leer los datos y
4 etiquetas para ver los mensajes que
indicaran que ingresar.
Aquí no se realizar nada de código ya que
este frame solo me servirá para ingresar
datos distintos.
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
y veras que `podras ingresar tu propios
datos o los datos de otras personas…. Que Facil no?
Fundamentos de Programación
71
e
2. Crear un pseudocodigo que permita calcular la suma y el producto de 2 notas
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
txtN1
txtN2
lblSu
lblPr
Tendríamos 2 textos para leer las notas y
2 etiquetas para ver los resultados y las
demás etiquetas solo reflejaran los títulos
que se muestran.
Además un botón para que nos de los
resultados al darle Click.
Todos los nombres lo podrás poner
usando CTRL + ALT +R
btnCalcular
LUEGO tendrá que programar en el boton calcular.(ud. Dara doble click y aparecera la ventana
de codigo donde podra escribir).
private void btnCalcular_actionPerformed(ActionEvent e) {
int NOTA1, NOTA2, SUMA, PRODUCTO ;
NOTA1=Integer.parseInt(txtn1.getText());
NOTA2=Integer.parseInt(txtn2.getText());
SUMA = NOTA1 + NOTA2;
PRODUCTO = NOTA1 * NOTA2;
lblSuma.setText(""+SUMA);
lblProducto.setText(""+PRODUCTO);
}
Fundamentos de Programación
72
e
Fundamentos de Programación
73
e
Contenidos
-
Definir que es una Condición.
Ejemplos de condiciones.
Estructuras Selectivas Simples: SI... ENTONCES….
Ejemplos de Aplicación
Estructura Selectivas Dobles
Si...ENTONCES…SINO…
Estructuras Condicionales: Simples: IF, Dobles: IF… ELSE …
Resolución de Aplicaciones.
____________________________________________________________________________________
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.
 Que es una Condición?
Es la comparación entre 2 valores y un operador relacional (<,>,<=,>=,!=,=)
 Por ejemplo
Se tiene A y B si queremos armar condiciones entonces podres decir:
A=B
A>B
A<B
A != B
Fundamentos de Programación
74
e
Por lo tanto las respuestas que vamos a obtener serán Verdaderas o Falsas según la condición
establecida.
También debemos de tener en cuenta la tabla lógica. Recordemos:
Y
O
V
V
V
V
V
F
F
V
F
V
F
V
F
F
F
F
EJEMPLOS:
Tenemos A=5 y B=4
A = B  Falso
A > B  Verdadero
A < B  Falso
A != B  Verdadero
De esta manera se podrá armar condiciones y poder usar una estructura de control.
En el caso que se desea crear y unir varias condiciones se usar los conectores Y - O
EJEMPLOS:
Tenemos A=5 , B=4 y C=10
(A = B) y (A > C)  Falso
(C > B) y (B<A)  Verdadero
(C!=A) y (C< B)  Falso
(A != B) o (B=!C)  Verdadero
Armemos condiciones de rango. Por ejemplo
Si queremos armar la condición que un numero este el rango de 0 a 20 como seria la
condición?
Si queremos que el numero este en el rango de 18 a 30 y de 40 a 90 como seria la
condición?
Fundamentos de Programación
75
e
 Tipos de estructuras condicionales
 Simples:
Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas
tomas de decisión tienen la siguiente forma:
PseudoCodigo
si (<expresión_lógica>) entonces
<acciones>
fin_si
JAVA:
if(Condición)
<Accion>;
if(Condición) {
<Accion 1>;
Cuando en java la condicional tenga una sola
acción es opcional las llaves, pero cuando la
condición va a realizar más de 1 se tendrá que
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
76
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:
Si: Indica el comando de comparación
Condición: Indica la condición a evaluar
Entonces : Precede a las acciones a realizar cuando se cumple la condición
Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición
si no :Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más
acciones.
Fundamentos de Programación
77
e

Veamos algunos ejemplos donde se aplique todo lo anterior:
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 la Condición
leer(edad)
si (edad>=18)
escribir(“es mayor de edad”)
sino
escribir(“no es mayor de edad”)
fin_si
¡Es importante ser ordenado
en el código que se escribe!
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
Es la Condición
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
78
e
variables
entero: altura
Es la Condición
inicio
leer(altura)
si (altura <=150) entonces
escribir( “persona de altura baja”)
sino
si altura <=170 entonces
escribir(“persona de altura media”)
¡Es importante ser ordenado
en el código que se escribe!
sino
si altura>170 entonces
escribir( “persona alta”)
fin_si
fin_si
fin_si
fin_prorama
DESARROLLEMOS ALGUNOS CASOS PROPUESTO USANDO JAVA
1. Elabore un programa que lea 3 números enteros positivos y que muestre la
suma, la resta y la multiplicación de todos.
variables
entero: num1,num2,num3,suma,resta,multip
inicio
Es la Condición
leer(num1,num2,num3)
si (num1>0 y num2>0 y num3>0 )
entonces
suma=num1+num2+num3
resta=num1-num2-num3
multip=num1*num2*num3
¡Es importante ser ordenado
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
79
e
private void Generar_actionPerformed(ActionEvent e) {
int num1,num2,num3,suma,resta,multip;
num1=Integer.parseInt(txtn1.getText());
num2=Integer.parseInt(txtn2.getText());
num3=Integer.parseInt(txtn3.getText());
if (num1>0 & num2>0 & num3>0 ){
suma=num1+num2+num3;
resta=num1-num2-num3;
multip=num1*num2*num3;
lblSum.setText(""+suma);
lblRes.setText(""+resta);
lblMul.setText(""+multip);
}
else
lblSum.setText("Los números no son positivos");
}
2. Se ingresa el nombre de una persona. Si el nombre ingresado fuese ANA,
JUANA ó NANCY, se pide su edad y muestre como resultado su edad
incrementado en 30%; de lo contrario la edad incrementara en 90%.
Fundamentos de Programación
80
e
variables
caracter: nombre
entero: edad
decimal: 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
private void btnCalcular_actionPerformed(ActionEvent e) {
String nombre,m;
int edad;
double increm,porc;
nombre=txtNom.getText();
edad=Integer.parseInt(txtEdad.getText());
if(nombre.equalsIgnoreCase("Ana") | nombre.equalsIgnoreCase("Nancy") |
nombre.equalsIgnoreCase("Juana") ) {
m="30 %";
porc=edad*0.30;
Recordemos que cuando se
}
realiza una comparación de
else {
cadena se realiza con
m="90 %";
equalsIgnoreCase
porc=edad*0.90;
}
increm=edad+porc;
lblin.setText("El porcentaje es el "+m+" teniendo un incremento sobre la edad: "+increm);
}
Fundamentos de Programación
81
e
3. 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.
variables
caracter: area
decimal: 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
escribir(“presupuesto por :”,area,” es:”, p)
fin_programa
Fundamentos de Programación
82
e
private void btnCalcular_actionPerformed(ActionEvent e) {
String area;
double Monto_Gen, p=0;
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;
lblr.setText("presupuesto por "+area+" es "+ p);
}
4. Ingrese un numero de solo 2 cifras y muestre si el numero es capicúa
variables
entero: num,c1,c2
inicio
leer(num)
si(num>=10 y num<=99) entonces
c1=num div 10
Fundamentos de Programación
83
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
private void btnCalcular_actionPerformed(ActionEvent e) {
int num,c1,c2;
num=Integer.parseInt(txtnum.getText());
if(num>=10 & num<=99) {
c1=num / 10;
c2=num % 10;
if(c1==c2)
lblr1.setText("El numero es Capicua");
else
lblr1.setText("El numero No es Capicua");
}
}
5. Determine el tiempo de servicio de acuerdo al año de ingreso. Si el trabajador
tiene más de 10 años el tendrá un aumento del 25%, si tiene entre 5 y 10
tendrá el 15%, menos de 5 el 8% está sujeto a su sueldo básico. Muestre el
incremento y el Monto a Cobrar.
Fundamentos de Programación
84
e
variables
entero: ts,ai,sb
decimal: 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
85
e
private void btnCalcular5_actionPerformed(ActionEvent e) {
int ts,ai,sb;
double inc,mc;
//constante
final int ac=2009;
ai=Integer.parseInt(txtai.getText());
sb=Integer.parseInt(txtsuel.getText());
ts=ac-ai;
if(ts>10)
inc=0.25*sb;
else
if(ts>=5 & ts<=10)
inc=0.15*sb;
else
inc=0.08*sb;
mc=sb+inc;
lblts.setText("Tiempo de Servicio es:"+ts);
lblinc.setText("Incremento es:"+inc);
lblmonto.setText("El monto a cobrar es:"+mc);
}
Fundamentos de Programación
86
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.
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 MSOFFICE”.
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
87
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 1416, 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 el monto anual que recibe el hospital.
Fundamentos de Programación
88
e
26. En base al valor de dos números enteros, determine si estos son:
Iguales.
No iguales.
El primero es mayor que el segundo.
El segundo es mayor que el primero.
El primero es mayor o igual que el segundo.
El segundo es mayor o igual que el primero.
27. Determinar si el número ingresado es Par o impar, si es positivo, negativo o Nulo.
28. Determine el tiempo de servicio de acuerdo al año de ingreso. Si el trabajador tiene
menos de 4 años el tendrá un aumento del 15% de su sueldo básico, en caso contrario
tendrá un aumento del 12% por cada año. Muestre el Monto a Cobrar.
29. Determinar el Neto de acuerdo a un monto, este tendrá un descuento de 18% en el
caso que este supere a los 300 soles.
30. Determine el monto a pagar por una multa. En el caso que la velocidad sea de 80 a
120 su multa será de 180 soles caso contrario no tendrá multa.
31. Determine una Bonificación de 14% de un sueldo si su tiempo de servicio es más de 3
años.
32. Determine el monto a cobrar de una Madre. La madre recibirá 20 soles si tiene hijos,
deberá de ingresar la cantidad de hijos; 70 soles si su estado civil es viuda; 50 soles si
su estado de trabajador es “planilla”.
33. Ingrese un número de 2 cifras y muestre si es capicúa.
34. Ingrese un número de 2 cifras y muéstrelo en forma invertida.
35. Determine la suma de las cifras de un número que se encuentra entre 10 – 99 y
además muestre la tercera parte de la segunda cifra en el caso que este sea 6, en el
caso que la segunda cifra sea impar la quinta parte de la cifra.
36. una madre de familia recibirá un bono de acuerdo a su estado civil. Casada recibe S/.
40, soltera S/. 35, viuda S/. 55. Muestre el bono a recibir.
37. 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.
.
Fundamentos de Programación
89
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
____________________________________________________________________________________
Estructuras Condicionales en JAVA

JcheckBox
Dicho control permite establecer una lista de opciones dentro de la cuales se puede elegir
algunas de ellas o todas dando cada una su propia acción.
Por ejemplo un trabajador puede tener todos estos descuentos
Nomenclatura del obejto es
Fundamentos de Programación
chk_nombre
90
e
Metodos:
 isSelected.- devuelve si el objeto ah sido selecccionado True si lo esta y false si esta
apagado
 setEnabled.- permite poner o quitar la activacion.
 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.
Entonces haz lo siguiente
1er Paso (Realiza el Diseño y establece lo nombres y formatos)
 Inserta un JtextFiel y establece :
Name: txtS
Border: title y será Sueldo
 Inserta 3 checkBox y usa
 El primero: Text = Seguro
Name = chkS

El segundo: Text = Faltas
Name = chkF

El tercero: Text = Tardanzas
Name = chkT
 Insertar 4 Jlabel
 El primero: Text =
Borde = Title Descuentos

El segundo: Text =
Name = lblS

El tercero: Text =
Name = lblF

El cuarto:
Fundamentos de Programación
Text =
Name = lblT
91
e
2do Paso (codificar dentro de cada check)
private void chkS_actionPerformed(ActionEvent e) {
double seguro;
int su=Integer.parseInt(txtS.getText());
if(chkS.isSelected()==true)
seguro=0.07*su;
else
seguro=0;
lblS.setText(""+seguro);
}
private void ChkF_actionPerformed(ActionEvent e) {
double falta;
if(ChkF.isSelected()==true)
falta=50;
else
falta=0;
lblF.setText(""+falta);
}
private void ChkT_actionPerformed(ActionEvent e) {
double tardanza;
if(ChkT.isSelected()==true)
tardanza=30;
else
tardanza=0;
lblT.setText(""+tardanza);
}
3er Paso
 Guarda tu archivo
 Y elige la clase y ejecuta(puedes presionar F11).
Fundamentos de Programación
92
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)


Inserta un JLabel y establece :
Text =
Border: title y será Sexo
Inserta dentro del JLabel 2 radios
 El primer Radio: Text =Mujer
Name = rbtM
 El segundo Radio: Text =Varon

Name = rbtV
Para crear Grupos con la Clase ButtonGroup tendremos que realizar lo siguiente:
 Ir al source del Frame.
 Ubicarse en el
public class Nombre extends JFrame{
ButtonGroup GrpSexo=new ButtonGroup();
}
Fundamentos de Programación
93
e
Seguimos en el 1er Paso
Realiza lo mismo el mismo procedimiento para los del estado Civil
Recuerda que los nombres de los radios seran :
rbtC, rbtS, rbtVi el grupo será GrpEstCiv
2do Paso (debemos de realizar esto para que solo se pueda seleccionar uno de cada
grupo).
Entonces vuelve al diseño elige Source y ubicate en
private void jbInit() throws Exception {
………………………………….
………………………………….
………………………………….
………………………………….
………………………………….
………………………………….
………………………………….
//Grupo de Sexo
GrpSexo.add(rbtM);
GrpSexo.add(rbtV);
//Grupo de Estado Civil
GrpEstCiv.add(rbtC);
GrpEstCiv.add(rbtS);
GrpEstCiv.add(rbtVi);
Y antes que termine la
llave del jbInit escribe
}
3er Paso
 Guarda tu archivo
 Y elige la clase y ejecuta(puedes presionar F11).
Ahora si podras elegir uno de cada grupo.
Fundamentos de Programación
94
e
Usando JRADIOBUTTON
 Realicemos este ejemplo: usando radios: al elegir la carrera saldrá el monto por carrera
Lo primero que debes de realizar es:
1. Diseñar esta ventana
2. Establecer los nombres correspondientes a cada radio (rbtCom,rbtGes,rbtGas)
3. Luego establece el custom ButtonGrup llamado GrpCarreras
4. Recuerda que el jbInit debes de añadir cada radio al grupo así
//Grupo de Carreras
GrpCarreras.add(rbtCom);
GrpCarreras.add(rbtGes);
GrpCarreras.add(rbtGas);
5. Ahora si biene lo interesante debemos de codificar y por ello usaremos el método
isSelected que devuelve true si esta activado o false (se explico en la pagina 66)
cuando esta inactivo.así que haremos esto por cada radio.
private void rbtCom_actionPerformed(ActionEvent e) {
if(rbtCom.isSelected())
int mon=295;
lblMon.setText(""+mon);
}
private void rbtGes_actionPerformed(ActionEvent e) {
if(rbtGes.isSelected())
int mon=250;
lblMon.setText(""+mon);
}
private void rbtGas_actionPerformed(ActionEvent e) {
if(rbtGas.isSelected())
int mon=320;
lblMon.setText(""+mon);
}
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.
 Para ello selecciona el botón y dale nombre en la propiedad name (btnCalcularMonto),
luego en el text ponle Calcular.
 Presione doble click y codifique lo siguiente:
Fundamentos de Programación
95
e
private void btnCalcularMonto _actionPerformed(ActionEvent e) {
int mon;
if(rbtCom.isSelected())
mon=295;
if(rbtGes.isSelected())
mon=250;
if(rbtGas.isSelected())
mon=320;
lblMon.setText(""+mon);
}
Fundamentos de Programación
96
e
Fundamentos de Programación
97
e
Contenidos
-
Estructuras Selectivas Múltiples
Cuando <expresión> sea …
Evaluación de valores carácter y numéricos
Condicionales Múltiples: SWITCH
Controles de Opciones: JComboBox
Use de métodos: addItem(),
getSelectedIndex(), getSelectedItem().toString()
_________________________________________________________________________________
Múltiples (En caso de)
Las estructuras de comparación múltiples, es una toma de decisión especializada que
permiten evaluar una variable con distintos posibles resultados, ejecutando para cada
caso una serie de instrucciones especificas. La forma es la siguiente:
cuando (<expresión>) sea
<lista_de_valores> : <acciones>
…
[sino
<acciones>]
fin_cuando
Fundamentos de Programación
98
e
Descripción:


<expresión>
<lista_de_valores>
que la <expresión>.
puede ser cualquier expresión validad.
será uno o más valores separados por comas de mismo tipo
La estructura verifica si el valor de la expresión coincide con alguno de los valores de la
primera lista de valores>; si esto ocurre realiza las acciones correspondientes y el flujo de
control sale de la estructura, en caso contrario evalúa la siguiente lista. Las acciones de la
cláusula sino se ejecutará si ningún valor coincide con la <expresión>.
EJEMPLOS:
1. Dado un numero entre 1 y 7 escriba su correspondiente día de la semana así:
1- Lunes 2- Martes 3- Miércoles 4- Jueves 5- Viernes 6- Sábado 7- Domingo
Exprese el algoritmo usando Pseudocódigo.
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
[60, 100]
120
[101, 130]
150
[más de 130]
220
Si además el conductor no utilizara el cinturón de seguridad la multa se incrementara en un
50%. Mostrar el neto a pagar del conductor infractor.
Fundamentos de Programación
99
e
variables
entero: velocidad,multa
real: incremento,neto_Pag
inicio
leer(velocidad,cinturon)
cuando(velocidad) sea
caso 60 a 100: multa=120
caso 101 a 1300: multa=150
caso >130: multa=220
fin_cuando
if(cinturón=”no”)entonces
incremento=multa*0.50
fin_si
if(cinturón=”si”)entonces
incremento=0
fin_si
neto_pag=multa+incremento
escribir(multa,incremento,neto_Pag)
fin_programa
Practiquemos:
Realiza el diseño para cada uno de estos caso.
Fundamentos de Programación
100
e
Usando controles Swing
 JComboBox
Este componente ComboBox nos permite definir en primera instancia un conjunto de datos
o valores respuestas asociados a una caja de edición cualesquiera, así ahora el usuario
tendrá la oportunidad de seleccionar un dato del conjunto de datos o respuestas ya
predefinido.
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();
Devuelve el tipo de dato carácter.
Recuerde que este dato si lo quieres como numerico puedes usar la conversion de
dato que si es entero será Integer.parseInt u otra conversion que desee de cualquier
tipo de dato.
 removeAllItems().- permite eliminar todos los elementos del combo.
Como Usarlo:

cbotipo.addItem("Darle el Valor");

Int orden=nombreCombo.getSelectedIndex();

String Dato= nombreCombo.getSelectedItem().toString;

nombreCombo.removeAllItems;
3 Pasos Importantes:

1er paso Establecer el objeto dentro del Frame

2do paso poner el nombre del Combo busca la propiedad Name= cboNombre

3er paso dar click en Source y ubicarse antes de terminar el metodos
jbInit y
escribir
Fundamentos de Programación
101
e
EJEMPLOS DE APLICACIÓN EN JAVA
 Caso 1:
Establecer una Lista de Nombres de los Tipo de Letras. Debe de quedar como se muestra en
el Ejemplo.
1er paso Establecer el objeto dentro del Frame
2do paso poner el nombre del Combo busca la propiedad Name= cboTipo
3er paso dar click en Source y ubicarse antes de terminar el metodos jbInit y escribir
cbotipo.addItem("Arial");
cbotipo.addItem("Comis Sans");
cbotipo.addItem("Book Antigua");
cbotipo.addItem("Calibri");
4to paso ejecutar la aplicación y despliega el combo.
 Caso 2:
Establecer una Lista de Estado Civil y de Areas. Debe de quedar como se muestra en el
Ejemplo.
Asi que debes de realizar los 3 pasos que ya realizamos anteriormente.
Ah todo debe de ir en el jbInit
// Llenar Estado Civil
cboEst.addItem("Casado");
cboEst.addItem("Viudo");
cboEst.addItem("Soltero");
// Llenar Areas
cboArea.addItem("Logistica");
cboArea.addItem("Ventas");
cboArea.addItem("Laboratorio");
cboArea.addItem("Contabilidad");
Fundamentos de Programación
102
e
 Caso 3:
Tomando en cuenta el ejemplo anterior de acuerdo al area debemos de establecer el sueldo.
Procedimiento:
1. Realicemos los 3 primeros pasos.
2. Y ahora tambien agregue un Jlabel donde se llamara lblSueldo
3. Con una estructura condicional multiple preguntaremos por el orden que se selecciono y de
acuerdo al orden estableceremos el sueldo. Así:
4. Entonces despues de los primeros 3 pasos lo que haremos es ahora dar doble click en el
combo y codificamos.
private void cboArea_actionPerformed(ActionEvent e) {
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
103
e
Contenidos
-
Implementación de Aplicaciones usando sintaxis del Lenguaje.
Uso de Métodos de comparación de caracteres: equalsIgnoreCase(), equals()
Uso de la Clase Math (max,min,pow)
____________________________________________________________________________________
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.
 Math.max( a,b )
para int, long, float y double
 Math.min( a,b )
para int, long, float y double
 Math.E
para la base exponencial
 Math.PI
para PI
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 );
Estructuras Condicionales y Anidadas
Fundamentos de Programación
104
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
Nacional
Particular
A
50%
25%
B
40%
20%
C
30%
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
2. La empresa “Clarito” esta realizando ofertas aquellas personas donde sus montos sean:
Fundamentos de Programación
105
e
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
106
e
sino
r=numero^(1/2)
fin_si
escribir(r)
sino
escribir(numero)
fin_si
fin_si
fin_programa
4. Cuantos billetes de 200 , 100 y 50 se entregaran de acuerdo al monto ingresado, el monto
como mínimo debe ser 50 y como máximo 2500.
Ejemplo: Monto =356
Billetes de 200  1
Billetes de 100  1
Billetes de 50  1
variables
entero: Monto
inicio
leer(Monto)
si(Monto>50 y Monto <=2500)entonces
b200=Monto div 200
b100=(Monto mod 200) div 100
b50=((Monto mod 200) mod 100) div 50
si(b200>0)entonces
escribir(“La cantidad de Billetes de 200 es : ”+b200)
sino
escribir(“No hay de Billetes de 200 ”)
fin_si
si(b100>0)entonces
escribir(“La cantidad de Billetes de 100 es : ”+b100)
sino
escribir(“No hay de Billetes de 100 ”)
fin_si
si(b50>0)entonces
escribir(“La cantidad de Billetes de 200 es : ”+b50)
sino
Fundamentos de Programación
107
e
escribir(“No hay de Billetes de 50 ”)
fin_si
sino
escribir(“No tiene el monto requerido”)
fin_si
fin_programa
Fundamentos de Programación
108
e
Fundamentos de Programación
109
e
Contenidos
-
Resolución de Aplicaciones.
Uso de la Clase Math (abs,sqrt,log,etc)
Casos resueltos en Java
____________________________________________________________________________________
Desarrollo de Casos
Apliquemos estos casos en coodigo de Java.
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
Nacional
Particular
A
50%
25%
B
40%
20%
C
30%
15%
private void btnCalcular_actionPerformed(ActionEvent e) {
int cat,ins;
double porcI=0, importe,cuota;
cat=cboCat.getSelectedIndex();
ins=cboCole.getSelectedIndex();
cuota=Double.parseDouble(txtP.getText());
Fundamentos de Programación
110
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;
break;
}
break;
case 2:
switch(ins){
Recordemos que en el lenguaje Java al utilizar
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
3 entonces será el orden 0,1 y 2. En el caso
instituto por ser 2 trabajemos como el orden 0
y 1 (particular y nacional).
case 0: porcI=0.30 * cuota;
break;
case 1: porcI=0.15 * cuota;
break;
Una estructura dentro de otra será Anidada,
no olvidemos del break (salto de línea) y esto
se establecer por cada uno de los casos.
}
break;
}
importe=cuota-porcI;
lblDsct.setText(""+porcI);
lblNeto.setText(""+importe);
}
Fundamentos de Programación
111
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:
 Math.abs( x )
para int, long, float y double
 Math.sin( double )
 Math.cos( double )
 Math.tan( double )
 Math.asin( double )
 Math.acos( double )
 Math.atan( double )
 Math.atan2( double,double )
 Math.exp( double )
 Math.log( double )
 Math.sqrt( double )
 Math.ceil( double )
 Math.floor( double )
 Math.rint( double )
 Math.pow( a,b )
 Math.round( x )
 Math.random()
para double y float
devuelve un double
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
rand = Math.random()*100+1; //Genera un numero aleatorio desde 1 hasta 100.
x = Math.abs( -123 ); //convierte a un número absoluto.
y = Math.round( 123.567 ); // redondea el numero
//Permite mostrar en Consola
System.out.println("Numero Aleatorio: " +rand );
System.out.println("El Valor Absoluto de -123 es : "+ x );
System.out.println("Redondeo de 123.567 es: "+y );
Fundamentos de Programación
112
e

Funciones trigonométrica
En las funciones trigonométricas los argumentos se expresan en radianes.
Por ejemplo,
El ángulo 45º se convierte en radianes y luego se halla el seno, el coseno y la tangente
double angulo = 45.0 * Math.PI/180.0;
System.out.println("cos(" + angulo + ") es " + Math.cos(angulo));
System.out.println("sin(" + angulo + ") es " + Math.sin(angulo));
System.out.println("tan(" + angulo + ") es " + Math.tan(angulo));
/*Para pasar de coordenadas rectangulares a polares es útil la función atan2, que
admite dos argumentos, la ordenada y la abscisa del punto. Devuelve el ángulo en
radianes.*/
double y=-6.2; //ordenada
double x=1.2; //abscisa
System.out.println("atan2(" + y+" , "+x + ") es " + Math.atan2(y, x));
Fundamentos de Programación
113
e
 Funciones exponencial y logarítmica
La función exponencial exp devuelve el número e elevado a una potencia
System.out.println("exp(1.0) es " + Math.exp(1.0));
System.out.println("exp(10.0) es " + Math.exp(10.0));
System.out.println("exp(0.0) es " + Math.exp(0.0));
La función log calcula el logaritmo natural (de base e) de un número
System.out.println("log(1.0) es " + Math.log(1.0));
System.out.println("log(10.0) es " + Math.log(10.0));
System.out.println("log(Math.E) es " + Math.log(Math.E));
 Función potencia y raíz cuadrada
Para elevar un número x a la potencia y, se emplea pow(x, y)
System.out.println("5 al cubo 3 es: " + Math.pow(5,3));
//
Para hallar la raíz cuadrada de un número, se emplea la función sqrt
int n=15;
System.out.println("La raíz cuadrada de " + n + " es " +
Math.sqrt(n));
Fundamentos de Programación
114
e
 Aproximación de un número decimal
Para expresar un número real con un número especificado de números decimales
empleamos la función round. Por ejemplo, para expresar los números x e y con dos
decimales escribimos
cifras
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*/
System.out.println(x + " es aprox. " + Math.floor(x*100)/100);
System.out.println(y + " es aprox. " + Math.floor(y*100)/100);
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
115
e
 El mayor y el menor de dos números
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
116
e
 Números aleatorios, absolutos, max, min
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));
// 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));
// las constantes PI y E
System.out.println("Pi es " + Math.PI);
System.out.println("e es " + Math.E);
System.out.println("La raíz cuadrada de " + i + " es " + Math.sqrt(i));
//
Programación en el lenguaje Java
9
// Devuelve un número pseudo-aleatorio comprendido entre 0.0 y 1.0
System.out.println("Número aleatorio: " + Math.random());
System.out.println("Otro número aleatorio: " + Math.random());
Fundamentos de Programación
117
e
 Ingresar 4 numeros y mostrar el numero mayor.
private void b3_actionPerformed(ActionEvent e) {
int a,b,c,d,m1;
a=Integer.parseInt(txta.getText());
b=Integer.parseInt(txtb.getText());
c=Integer.parseInt(txtc.getText());
d=Integer.parseInt(txtd.getText());
m1=Math.max(a,b);
m1=Math.max(m1,c);
m1=Math.max(m1,d);
lblm.setText(""+m1);
}
 Mostrar la raiz cubica de un numero ingresado
Fundamentos de Programación
intentalo
118
e
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
Fundamentos de Programación
119
e
Java
private void jbInit() throws Exception {
……………………………..
……………………………..
GrupoVelocidades.add(rbtC);
GrupoVelocidades.add(rbtNC);
}
private void btncalcular_actionPerformed(ActionEvent e) {
int veloc,multa=0;
double inc=0,mp;
veloc=Integer.parseInt(txtveloc.getText());
if(veloc>60&veloc<=100)
multa=120;
if(veloc>100&veloc<=130)
multa=150;
if(veloc>130)
multa=220;
if(rbtC.isSelected()==true)
inc=0;
if(rbtNC.isSelected()==true)
inc=0.5*multa;
mp=multa+inc;
lblmulta.setText(""+multa);
lblinc.setText(""+inc);
lblmp.setText(""+mp);
}
private void btnrestablecer_actionPerformed(ActionEvent e) {
txtveloc.setText("");
lblmulta.setText("");
lblinc.setText("");
lblmp.setText("");
rbtC.setSelected(true);
}
Fundamentos de Programación
120
e
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
private void btncalcular_actionPerformed(ActionEvent e) {
int con;
double des=0,igv=0,mc;
con=Integer.parseInt(txtcon.getText());
if(con>0&con<=60)
des=0.075*con;
if(con>60)
des=0.12*con;
igv=0.19*con;
mc=con-des+igv;
lbldes.setText(""+des);
lbligv.setText(""+igv);
lblmc.setText(""+mc);
}
private void btnlimpiar_actionPerformed(ActionEvent e) {
txtcon.setText("");
lbldes.setText("");
lbligv.setText("");
lblmc.setText("");
}
Fundamentos de Programación
121
e
Caso 03: Que muestre un mensaje indicando si un usuario es o no mayor de edad,
según al año de nacimiento
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
Fundamentos de Programación
122
e
JAVA
private void btncalcular_actionPerformed(ActionEvent e) {
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";
lbleea.setText("Tiene "+eea+" años y "+m);
}
private void btnLimpiar_actionPerformed(ActionEvent e) {
txtnac.setText("");
lbleea.setText("");
}
Fundamentos de Programación
123
e
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
Usando estructura condicionales anidadas
Fundamentos de Programación
124
e
private void btncalcular_actionPerformed(ActionEvent e) {
int n1,n2;
String r="";
n1=Integer.parseInt(txtn1.getText());
n2=Integer.parseInt(txtn2.getText());
if(n1>n2)
r="en primero es mayor que el segundo";
if(n1==n2)
r="Ambos numeros son iguales";
if(n1<n2)
r="el segundo es mayor que el primero";
lblresultado.setText(""+r);
}
private void btnrefrescar_actionPerformed(ActionEvent e) {
txtn1.setText("");
txtn2.setText("");
lblresultado.setText("");
}
Fundamentos de Programación
125
e
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
Fundamentos de Programación
126
e
JAVA
private void btnprocesar_actionPerformed(ActionEvent e) {
int mca;
double descuento=0,igv=0,neto;
mca=Integer.parseInt(txtmca.getText());
if(mca>0&mca<=120)
descuento=0;
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);
}
private void btndeshacer_actionPerformed(ActionEvent e) {
txtmca.setText("");
lbldescuento.setText("");
lbligv.setText("");
lblneto.setText("");
}
Fundamentos de Programación
127
e
Caso 06: La empresa SODIMAC ha implementado como parte de su programa social un
subsidio familiar, que será otorgado por vez única a las madres de familia trabajadoras bajo
la siguiente reglamentación:
Las familias que tienen hasta 3 hijos reciben S/. 60, las que tienen 4 y 6 hijos reciben S/. 85
de escolaridad estos montos es por cada hijo y las que tienen más hijos reciben S/. 285 por
escolaridad. Si la madre de familia fuese:
Viuda
recibirá adicionalmente S/. 55
Casada
recibirá adicionalmente S/. 25
PC: Que determine el monto por subsidio que recibirá una trabajadora bajo las condiciones
ya indicadas.
private void btnprocesar_actionPerformed(ActionEvent e) {
int hijos,mh=0,mm=0;
hijos=Integer.parseInt(txthijos.getText());
if(hijos==0)
mh=0;
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);
}
Fundamentos de Programación
128
e
private void btnactualizar_actionPerformed(ActionEvent e) {
txthijos.setText("");
lblmh.setText("");
lblmm.setText("");
}
Fundamentos de Programación
129
e
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.
private void lblprocesar_actionPerformed(ActionEvent e) {
int cm;
double n=0,a=0,mpi=0,mpa=0,igv=0,mtp=0,total;
cm=Integer.parseInt(txtcm.getText());
if(cm>0&cm<=80){
n=0.45;
mpi=cm*n;
/*igv=0.19*mpi;
mtp=mpi+igv;*/
}
if(cm>80){
n=0.45;
a=0.52;
mpi=80*0.45;
mpa=(cm-80)*0.52;
/* igv=0.19*(mpi+mpa);
mtp=mpi+mpa+igv;*/
}
total=mpi+mpa;
igv=0.19*total;
mtp=mpi+mpa+igv;
lbln.setText(""+n);
lbla.setText(""+a);
lbltp.setText(""+total);
lblmpi.setText(""+mpi);
lblmpa.setText(""+mpa);
lbligv.setText(""+igv);
lblmtp.setText(""+mtp);
}
Fundamentos de Programación
130
e
private void lblactualizar_actionPerformed(ActionEvent e) {
txtcm.setText("");
lbln.setText("");
lbla.setText("");
lblmpi.setText("");
lblmpa.setText("");
lbligv.setText("");
lblmtp.setText("");
}
Fundamentos de Programación
131
e
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);
}
private void cbomarcas_actionPerformed(ActionEvent e) {
int orden,precio=0;
double descuento=0,igv=0,mp=0;
orden=cbomarcas.getSelectedIndex();
switch(orden){
case 0:precio=0;
descuento=0;
break;
case 1:precio=370;
descuento=0.125*precio;
break;
case 2:precio=365;
break;
case 3:precio=320;
break;
case 4:precio=299;
descuento=0.125*precio;
break;
case 5:precio=280;
break;
}
igv=0.19*precio;
mp=precio+igv;
lblprecio.setText(""+precio);
lbldescuento.setText(""+descuento);
lbligv.setText(""+igv);
lblmp.setText(""+mp);
}
Fundamentos de Programación
132
e
Caso 09:La universidad recibe a alumnos postulantes dentro de la cual el monto a
pagar sera de acuerdo a la procedencia del colegiio(Nacional o Particular) y
dependiedo a la categoria A , B y C
A
B
C
Nacional
50% 40% 30%
Particular
25% 20% 15%
private void btncalcular_actionPerformed(ActionEvent e) {
int orden;
double cuota,descuento=0,tp=0;
cuota=Double.parseDouble(txtcuota.getText());
orden=cbocategoria.getSelectedIndex();
switch(orden){
case 0:
if(rbtN.isSelected()==true)
lbldescuento.setText("");
lbltp.setText("");
if(rbtP.isSelected()==true)
lbldescuento.setText("");
lbltp.setText("");
break;
case 1:
if(rbtN.isSelected()==true)
descuento=0.5*cuota;
if(rbtP.isSelected()==true)
descuento=0.25*cuota;
break;
Fundamentos de Programación
133
e
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);
}
private void btnactualizar_actionPerformed(ActionEvent e) {
txtcuota.setText("");
lbldescuento.setText("");
lbltp.setText("");
cbocategoria.setSelectedIndex(0);
rbtN.setSelected(true);
}
Fundamentos de Programación
134
e
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:
Jubilación 13%, Seguro 11%.
Descuentos variables:
Cooperativa 3% (descuento máximo S/.15.00), Sindicato a 6%. Estos descuentos se harán
si el empleado pertenece a la cooperativa o al sindicato.
Dependiendo de los años de servicio el empleado recibirá una bonificación especial no
afecta a descuento, de acuerdo al siguiente cuadro:
AÑOS DE SERVICIO
BONIFICACION (%)
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.
Al final se presentara lo siguiente:
SUELDO BRUTO
TOTAL DESCUENTOS :
BONIFICACION
SUELDO NETO
Fundamentos de Programación
:
S/.
:
:
S/.
S/.
S/.
135
e
private void jbInit() throws Exception {
…………………….
……………………..
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");
}
private void btnCalcular_actionPerformed(ActionEvent e) {
int sb,as=0;
double b1=0,b2=0,sn,j,td,s,tb,dv=0;
sb=Integer.parseInt(txtSb.getText());
//Descuentos Fijos
if(chkJ.isSelected()==true)
j=0.13*sb;
else
j=0;
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;
Fundamentos de Programación
136
e
//Tiempo de Servicio y se halla la bonificacion
as=cboAs.getSelectedIndex();
switch(as){
case 1:b1=0.15*sb; break;
case 2:b1=0.18*sb; break;
case 3:b1=0.20*sb; break;
case 4:b1=0.25*sb; break;
}
if(b1>500)
b1=500;
// Categorias y segunda bonificacion
if(rbtA.isSelected())
b2=b1;
if(rbtB.isSelected())
b2=b1/2;
if(rbtC.isSelected())
b2=b1/4;
//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);
}
Fundamentos de Programación
137
e
private void btnNuevo_actionPerformed(ActionEvent e) {
txtSb.setText("");
lblJ.setText("");
lblS.setText("");
lblV.setText("");
lblB.setText("");
lblB2.setText("");
lblDes.setText("");
lblBoni.setText("");
lblSn.setText("");
cboAs.setSelectedIndex(0);
chkJ.setSelected(false);
chkS.setSelected(false);
}
Fundamentos de Programación
138
e
Caso 11: Ingresar 5 numeros y mostrar el mayor, menor y promedio de estos.
Realice el diseño
// 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");
Fundamentos de Programación
139
e
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;
// leer numero de hijos y numero de hijos escolares
nhijos = Integer.parseInt(txtHijos.getText());
hijosEsc = Integer.parseInt(txtEscolares.getText());
// calcular subsidio por numero de hijos
if(nhijos <= 2)
sub1 = 100;
else if(nhijos <= 5)
sub1 =190;
else
sub1 = 210;
// calcular subsidio por hijos en edad escolar
sub2 = hijosEsc * 10;
// calcular subsidio por viudez
sub3 = 0;
if(chkViuda.isSelected() )
sub3 = 20;
// calcular subsidio total
subsidio = sub1+sub2+sub3;
//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");
Fundamentos de Programación
140
e
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
28 12 1975
Errado
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
Ingresa 28 Diciembre 1975
Muestra
28 / 12 / 1975
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.
Fundamentos de Programación
141
e
11. PC: Que muestre le neto a pagar por un DVD sabiendo que la tienda se encuentra en
realización ofreciendo los siguientes descuentos:
MARCA
19”
21”
SAMSUNG
PANASONIC
LG
SONY
12
14
12
13
13
12
14
15
Tome usted en cuenta las siguientes consideraciones:
El precio de lista a ingresar esta en dólares, debiendo mostrar el neto en dólares y soles
donde dicho monto en soles se le aplicara el IGV.
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:
PF= 2PP + 2.5EP + 3EF
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
CACI
GESTION
EDUCACION
EOS
MONTO
275
260
260
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
Ángeles Carlos
UCGV: Unidos Conseguiremos Grandes Victorias
Florián Jesús
PALA: Patronato de Amigas de Lima Antigua
Escobar María
ASU: Asociación de Santos Unidos
López Gino
MOMIA: Movimiento de Mimos Austeros
García Manuel
CUERO: Central Unitaria de Estudiantes de La Romana
Mostrar el candidato triunfador y con cuantos votos.
Fundamentos de Programación
142
e
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
Servicio
1-3
4-6
7-15
15 a más
Porcentaje
de(años) bonificación
17%
21%
29%
52%
CATEGORIA
Porcentaje
De bonificación
11%
22%
33%
A-B
C-D
OTROS
Muestre el nuevo pago que recibirá.
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%
El monto resultante de acuerdo a la distancia y tipo de carga se le multiplicara por el
número de viajes.
En ningún caso el monto total a cobrar será menor a S/. 40.00.
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.
Si la suma es menor o igual a 70 pero mayor a 44 se eliminara la primera nota
desaprobatoria que el programa encuentre.
Si la suma es 44 o menos, se promediaran las cuatro notas.
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
Fundamentos de Programación
143
e
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:
LITROS
0 a 20
21 a 30
31 a 50
51 a 80
81 a más
PRECIO * LITRO
0.894
1.244
1.737
2.685
3.362
Una pensión básica de S/. 8.30, donde se incluye el IGV.
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:
TIPO DE PRENDA
POLO
CAMISA
PANTALON
TARIFA
0.50
1.00
1.50
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
Del total de ingresos se descontara 9% por concepto de impuestos, 2% por seguro y 1%
por solidaridad. En ningún caso el descuento por seguro será mayor a S/. 20.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:
Fundamentos de Programación
144
e
CATEGORÍA
DESCUENTO
A, B
C, D
Se deberá mostrar el monto total a pagar.
30 %
25 %
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
De acuerdo al giro del negocio se incrementara el monto en los siguientes porcentajes:
GIRO
INCREMENTO (%)
Abarrotes (A)
Vestido y Calzado (V)
Electrodomésticos (E)
Alimentos y Bebidas (B)
--15
20
5
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:
AÑOS DE CONSTRUCCIÓN
IMPUESTO ($/M2)
0-5
6 – 10
11 – 15
16 a más
2.00
1.20
0.85
0.25
De acuerdo al material de construcción el impuesto resultante aumentara en los
porcentajes indicados:
MATERIAL DE CONSTRUCCIÓN
Concreto
Ladrillo
Adobe
AUMENTO (%)
25
12
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
Arequipa
Chimbote
Trujillo
Fundamentos de Programación
100.00
450.00
300.00
350.00
145
e
El servicio se realiza por vía terrestre. El servicio se brinda a personas naturales o
empresas
Las tarifas pueden variar de acuerdo a la modalidad del servicio incrementándose la tarifa
básica de acuerdo al siguiente cuadro:
MODALIDAD
Servicio
INCREMENTO (%)
DESTINO
Natural
Ica
Arequipa
Chimbote
Trujillo
0
9
10
13
Empresa
Ica
Chimbote
3
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.
Fundamentos de Programación
146
e
Fundamentos de Programación
147
e
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.
En la mayoría de los lenguajes de programación, los bucles también pueden "escaparse" o
"romperse", a pesar de que la condición siga siendo verdadera. Es otra forma de salir de la
ejecución de un bucle. El uso de este tipo de funciones de escape, es considerado impropia e
innecesaria por los programadores más puristas, pues siempre se puede salir de un bucle
utilizando la condición. En el caso de que salir sea complicado o imposible, significa que se
eligió mal el tipo de bucle. Desde un punto de vista práctico, muchas veces es más fácil
emplear alguna función de escape del bucle.
Si hay algún error en el código, el bucle podría ejecutarse una y otra vez, entrando en un bucle
infinito.
Fundamentos de Programación
148
e
En programación, un bucle es una sentencia que se repite
varias veces bajo unas condiciones. Se utiliza para repetir sin
tener que repetir el mismo código. Esto permite ahorro de
tiempo, menor tamaño de programa, mayor claridad y facilita
las modificaciones.
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
a) Contadores.- Un elemento cuyo valor puede incrementar o disminuir en un valor
constante en cada iteración de un bucle, y se utiliza para controlar la condición del
bucle.
Las formas de poder usar a los contadores pueden ser:
C= C + Valor
C= C * Valor
C= C / Valor


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).
b) Acumuladores.- Es un campo de memoria cuyo valor se incrementa sucesivas veces
en cantidades variables. Se utiliza en aquellos casos en que se desea obtener el total
acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0.
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.
Acu= Acu + Contador
Acu= Acu * Contador
Acu= Acu + Valor Ingresado
Fundamentos de Programación
149
e
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=true


/
/
Sw=1
Sw=false
Recordar en un determinado punto de un programa la ocurrencia o no de un suceso
anterior, para salir de un bucle o para decidir en una instrucción alternativa qué acción
realizar.
Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un
bucle.
1. Tipos de estructura de Control de Repetición
Entre ellas tenemos:
 Estructura de Repetición Mientras
En esta estructura, de entrada se evalúa una condición. En caso de que el resultado de
tal evaluación sea true, se ejecuta un bloque de instrucciones, en el cual debe existir
una instrucción que modifique la condición. De no existir esa instrucción, se ejecutará
un ciclo infinito. Si el resultado de la evaluación es false, el bloque de instrucciones no
se ejecuta y finaliza la ejecución de la estructura.
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).
Fundamentos de Programación
150
e
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:
Caso 1: Muestre la Serie 3,6,9,12,….,50
variables
entero: c
inicio
c=3
mientras(c<=30)
escribir(c)
c=c+3
Es la variación del contador
para poder cumplir con la
condición del bucle.
fin_mientras
fin_programa
Caso 2: Muestre la serie 50,47,44,41,….,3
variables
entero: c
inicio
c=50
mientras(c>=3)
escribir(c)
Es la variación del contador
para poder cumplir con la
condición del bucle.
c=c-3
fin_mientras
fin_programa
Fundamentos de Programación
151
e
Caso 3: Muestre la Serie 4,8,16,32,….,450
variables
entero: c
inicio
c=4
mientras(c<=450)
escribir(c)
Es la variación del contador
para poder cumplir con la
condición del bucle.
c=c*2
fin_mientras
fin_programa
Caso 4: Muestre la serie : 2,22,222,2222,22222
variables
entero: c
inicio
c=2
mientras(c<=22222)
escribir(c)
Es la variación del contador
para poder cumplir con la
condición del bucle.
c=c*10+2
fin_mientras
fin_programa
Caso 5: Mostrar 50 Veces la palabra “Programacion”
variables
entero: c
inicio
c=1
mientras(c<=50)
escribir(c,”.- Programación”)
c=c+1
fin_mientras
fin_programa
Fundamentos de Programación
Es la variación del contador
para poder cumplir con la
condición del bucle.
152
e
Caso 6: Muestre la Serie : 80,70,60,50,…,0
variables
entero: c
inicio
c=80
Es la variación del contador
para poder cumplir con la
condición del bucle.
mientras(c>=0)
escribir(c)
c=c-10
fin_mientras
fin_programa
Caso 7: Muestre la Serie: 9,10,12,15,19,24,…,650
variables
entero: c,x
inicio
c=9 : x=1
mientras(c<=650)
escribir(c)
c=c+x
Es la variación del contador
para poder cumplir con la
condición del bucle. Puede
haber N Contadores.
x=x+1
fin_mientras
fin_programa
Fundamentos de Programación
153
e
 Uso de la Estructura while en Java.
El programa se ejecuta siguiendo estos pasos:
(1) Se evalúa la expresión lógica.
(2) Si la expresión es verdadera ejecuta las sentencias, sino el programa abandona la
sentencia while .
(3) Tras ejecutar las sentencias, volvemos al paso 1
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;
}
Fundamentos de Programación
154
e
Usando otros Controles Swing en JAVA
(JScrollPane, JTextArea y del JList)


JScrollPane.- permite que los objetos (JTextArea, JList) tengan barra de
desplazamiento en forma vertical u horizontal.
JTextArea .- Es un área de texto, es una zona de múltiples líneas que permite la
presentación de texto, que puede ser editable o de sólo lectura.
Los métodos que podemos ir usando son:
setText.- cuando solo se desea imprimir una línea o limpiar todo el texto.
append.- cuando se quiera agregar múltiples líneas dentro del texto.
Cuando se use un JTextArea no es necesario utilizar un Custom debido a que su
método append permite reflejar los datos introducidos, ahora lo que se puede realizar
es manipular salto de línea y dar espacio entre un carácter y otro.


“\n” permite dar un salto de línea
“\t” permite establecer un espacio entre uno y otro
Como por Ejemplo:

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.
Fundamentos de Programación
155
e
Manejo de Enlace con el modal

Debemos de crear un enlace llamado DefaultListModel que me permitirá
manipular los datos de la lista.
Nomenclatura : ModLstNombre
Para crearlo simplemente dar click al Source de Frame y escribir:
DefaultListModel nombre=new DefaultListModel();
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.
Procedimiento para Crear una Lista con el JScrollPane
 1er paso: Crear Tu aplicación.(Clase y Frame)
 2do paso: en el Frame insertar un JScrollPane que se encuentra en
el Containers. Quedando de esta forma
Fundamentos de Programación
156
e
 3er paso: regrese componentes Swing y elija un JList y dar click dentro
del JScrollPane quedando de la siguiente manera.
 4to paso: dar click en el Source del Frame y escribir.
DefaultListModel nombre=new DefaultListModel();
 5to paso y último: ahora tendrá que seleccionar al jList que se
encuentra en la ventana Structure y luego elegir la propiedad model y
seleccionar el modal que habíamos creado.
No te olvides de
haber seleccionado
al jList.
Elige el modal que
corresponde al JList
Seleccionado.
Fundamentos de Programación
157
e
Métodos que se pueden utilizar para manipular a las Listas
 addElement().- Permite agregar datos a la lista.
Ejemplo:
modLstNotas.addElement(“10”);
Cuando se va ah ingresar seria:
int x=Interger.parseInt(txtnota.getText())
modLstNotas.addElement(x);
 getSelectedIndex().- Devuelve el orden del dato seleccionado dentro de la
lista.
int orden=LstNotas.getSelectedIndex(); //índice del Jlist
 remove(ind).- Quita el dato según el orden
modLstNotas.remove(orden);
 clear.- Borrar todo los datos de la lista.
modLstNotas.clear;
 setElementAt(objeto,orden).- asigna un dato a una posición establecida
modLstNotas.setElementAt(txtN1.getText(),orden);
 getElementAt(orden).- permite obtener el dato de acuerdo a la posición.
lblResultado.setText(""+ModLstNotas.getElementAt(orden));
Fundamentos de Programación
158
e
Fundamentos de Programación
159
e
Contenidos
-
Ejemplos de Ingreso de Datos con estructura Mientras
Control de Bucle por Bandera
Contadores y Acumuladores
Uso del JOptionPane (showInputDialog)
Uso de la Estructura while con Ingreso de Datos.
____________________________________________________________________________________
Usando el código Java
En la clase anterior aprendimos a realizar series utilizando el pseudocódigo y ahora
esos ejemplos los pasaremos a JAVA. Qué te parece si abres el programa y creas una
aplicación y realizas esta ventana.
JList
Fundamentos de Programación
JTextArea
160
e
Diseña lo siguiente:
1. Inserta un botón y ponle el nombre: btnSerie1
2. Inserta dos JScrollPane dibújelo según la dimensión
3. Seleccione el 1er JScrollPane, inserte un JList .
4. Seleccione el 2do JScrollPane, inserte un JTextArea.
5. Inserte un Custom para el Jlist recuerde que se llama DefaultListModel,
establezca el nombre del custom que se llamara ModLstN.
6. Vuelva a la lista y elija la propiedad Model y busque el modal que ah creado.
7. Luego dar 2 click al botón y codifiquemos esto.
private void btnS_actionPerformed(ActionEvent e) {
int c=3;
while(c<=30){
ModLstN.addElement(c);
txt1.append(c+"\n");
// Escribe dentro de la lista
// Escribe dentro del area.
c=c+3;
}
}
Esto es solo una demostración, tú
solo puedes utilizar a cualquiera de
los dos para poder mostrar.
Fundamentos de Programación
161
e
Caso 2: 50,47,44,41,….,3
private void btnS_actionPerformed(ActionEvent e) {
int c=50;
while(c>=3){
ModLstN.addElement(c);
// Escribe dentro de la lista
c=c-3;
}
}
Caso 5: Mostrar 50 Veces la palabra “SISE…ver”
private void btnS_actionPerformed(ActionEvent e) {
int c=1;
while(c<=50){
ModLstN.addElement(c+".- SISE...ver");
c=c+1;
}
}
Fundamentos de Programación
162
e
Caso 7: 9,10,12,15,19,24,…,650
private void btnS_actionPerformed(ActionEvent e) {
int c=9 , x=1;
while(c<=650){
ModLstN.addElement(c);
c=c+x;
x=x+1;
}
}
Fundamentos de Programación
163
e
 Mientras con ingreso de datos
Significa que el bucle permitirá controlar el total de datos que deseemos ingresar. Además
podremos controlarlo mediante un estado de Bandera o el ingreso de una respuesta.
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
 Caso 02 : Ingresar N Sueldo y terminara cuando se ingrese un Sueldo 0, mostrar el
total de Sueldos ingresados sin incluir al cero.
variables
entero: sueldo,c,sw
inicio
c=0
sw=0
mientras(sw=0)
leer(sueldo)
escribir(sueldo)
si(sueldo=0)
Fundamentos de Programación
164
e
sw=1
sino
c=c+1
fin_si
fin_mientras
escribir(“Cantidad de Sueldos: ”,c)
fin_programa
 Caso 03 : Ingresar una lista de 15 Distritos y mencionar cuantos distritos de Lince,
Breña o San Miguel se ingresaron a la lista.
variables
caracter: distrito
entero: cl,cb,cs,cd
inicio
cd=1
Recuerda:
Cuando necesites
saber cantidades de datos deberás
de usar un contador y a una
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
Fundamentos de Programación
165
e
 Caso 04 : Ingresar una lista de 10 Datos (Nombres,Apellidos,Sexo,Edad ) deberá de
mostra cuantos son del sexo “Mujer” o “Varon”, cuantos son mayores o menores de
edad. Al final deberá de mosrtrar el promedio de las edades por sexo y en general.
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
Fundamentos de Programación
166
e
 Caso 05 : Resuelve este caso:
Ingresar una lista de 10 Datos (Empleado, Area, Estado ) deberá de establcer el sueldo
de acuerdo al area que se muestra en la siguiente tabla
Area
Contabilidad
Administracion
Logistica
Almacen
Otros
Sueldo
1520
1630
1450
1230
1020
El estado sera Honorarios o Planilla.
Todos aquellos que sean del estado de planilla tendra descuentos de Seguro el 7%,
fonavai el 12%, ademas cuenta con bonos de acuerdo al mes si estamos en Julio o
Diciembre seran gratificaciones del 50% y si estamos en el mes de Mayo o Noviembre
seran aumentos por CTS que sera el 27.34%.
Todos aquellos que sean del estado de Honorarios tendran un descuento del 10% por
ser de la 4ta categoria.
- La primera parte mostrar los datos generados(aumentos y descuentos),
ademas el neto a cobrar por el trabajado.
- La segunda parte tendra que mostrar cuantos empleados son del estado de
planilla y cuantos de honorarios, cuantos corresponden a cada area y cuanto
es el monto que desenbolso la empresa en las gratificaciones y CTS.
Fundamentos de Programación
167
e
 La clase JOptionPane (parte I)
Es simplemente un contenedor que puede crear automáticamente un JDialog y se añade a sí
mismo al panel de contenido de JDialog, permitiendo que se puedan crear muchos diálogos.
Como por ejemplo: Un dialogo que me permita el ingreso de datos.
Variable=JOptionPane.showInputDialog(“Mensaje”);
Cuando aparezca
este emergente
deberá de
presionar Alt enter
Por ejemplo si se tiene que ingresar un dato de tipo:

String se usara de la siguiente manera
Nombre=JOptionPane.showInputDialog(“Ingresar el Nombre”);
apellido=JOptionPane.showInputDialog(“Ingresar el Apellido”);

int se usara de la siguiente manera
int ts=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Tiempo de Servicio"));
Fundamentos de Programación
168
e
 double se usara de la siguiente manera
Sueldo=Double.parseDouble(JOptionPane.showInputDialog(“Ingresar el Sueldo”));
 Ejemplos usando el código Java:
En la clase anterior aprendimos a realizar series e ingreso de datos utilizando el
pseudocódigo. Ahora aprenderemos a ingresar datos en el lenguaje JAVA. Qué te
parece si abres el programa y creas una aplicación y realizas esta ventana.
Aquí utilizaremos la clase
JOptionPane para realizar el
ingreso
de
datos
con
showInputDialog
Fundamentos de Programación
169
e
private void btnIngreso_actionPerformed(ActionEvent e) {
int nota,c,acu=0;
double p;
c=1;
ModLstN.clear(); //permite limpiar toda la lista
while(c<=10){
nota=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Nota"+c));
ModLstN.addElement(nota);
acu=acu+nota;
c=c+1;
}
p=acu/10;
lblp.setText(""+p);
}
Caso 04 a Java : Ingresar una lista de 10 Datos (Nombres,Apellidos,Sexo,Edad ) deberá de
mostrar cuantos son del sexo “Mujer” o “Varon”, cuantos son mayores o menores de edad. Al
final deberá de mosrtrar el promedio de las edades por sexo.
Fundamentos de Programación
170
e
private void btnGenerar_actionPerformed(ActionEvent e) {
String nom,ape,sexo;
int edad,cd=1,csm=0,csv=0;
double psm,psv,acuEm=0,acuEv=0;
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);
}
Fundamentos de Programación
171
e
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.
private void btnIngreso_actionPerformed(ActionEvent e) {
int c;
double p,nota,acu=0;
c=1;
ModLstN.clear();
while(c<=10){
nota=Math.random()*100+1;
ModLstN.addElement(c+".- "+ nota);
acu=acu+nota;
c=c+1;
}
p=acu/10;
lblp.setText(“”+p);
}
Fundamentos de Programación
172
e
Fundamentos de Programación
173
e
Contenidos
-
Elaboración del plan de Prueba Estructura de Repetición – Repetir
Uso de interruptores para el control de bucle.
Laboratorio 2 - Uso del JOptionPane (showConfirmationDialog).
__________________________________________________________________________________________________
Estructura Repetir – Hacer Mientras
Se ejecuta hasta que se cumpla una condición determinada que se comprueba al
final del bucle, esto permite que la iteración se ejecute al menos una vez antes de
que la condición sea evaluada.
 Estructura Repetir
repetir
<acciones>
hasta_que (<expresión_lógica>)
do{
<acciones>
}while (<expresión_lógica>)
Fundamentos de Programación
174
e
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
escribir(“Teclee un número menor que 5”)
repetir
leer num
hasta_que(num >= 5)
escribir(“El número leído es: “, num)
fin
private void btnIngresar_actionPerformed(ActionEvent e) {
int num;
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
}while(num>5) ;
lblp.setText(""+num);
}
Fundamentos de Programación
175
e
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
private void btnIngresar_actionPerformed(ActionEvent e) {
int num;
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
}while (num <= 5 | num >= 15) ;
lblp.setText(""+num);
}
Fundamentos de Programación
176
e
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
entero: num, veces
inicio
escribir(“Teclee un número entre 5 y 15 )”
veces ← 1
repetir
leer num
veces = veces + 1
hasta_que(num <= 5 O num >= 15)
escribir(“El número leído es: “, num)
escribir(“La Cantidad de Numeros ingresados fueron : “,veces)
fin
Fundamentos de Programación
177
e
private void btnIngresar_actionPerformed(ActionEvent e) {
int num;
do{
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
}while (num <= 5 | num >= 15) ;
lblp.setText(""+num);
lblp1.setText("Intento "+veces+" Veces");
}
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)
escribir(“La suma hasta el numero “, n,)
escribir (“numeros es: “, s)
fin
Fundamentos de Programación
178
e
Usaremos un JTextArea
para
mostrar
Varios
resultados en el mismo
objeto.
private void btnIngresar_actionPerformed(ActionEvent e) {
int i=0,n;
double acu;
txtSalida.setText("");
n=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero"));
s= 0;
do{
acu= acu+i;
i = i+1;
} while(i<n);
txtSalida.append("La suma hasta el numero "+ n+"\n");
txtSalida.append("es: "+ s+"\n");
}
Fundamentos de Programación
179
e
 La clase JOptionPane (parte II)
También se podrá usar para establecer mensajes de confirmación de datos.
Como por ejemplo:
JOptionPane. showConfirmDialog( (“Mensaje”);
Cuando aparezca
este emergente
deberá de
presionar Alt enter
int rc = JOptionPane.showConfirmDialog(this,"Producto SISE", "Solicitud de
confirmacion",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(rc==0)
JOptionPane.showMessageDialog(null,"SI soy de SISE");
else
JOptionPane.showMessageDialog(null,"Quiero ser de SISE");
Para terminar el programa según la respuesta dada por el usuario
int ver = JOptionPane.showConfirmDialog(null,
"¿Deseas Salir del Programa...?", "Salida",
0,JOptionPane.QUESTION_MESSAGE);
if(ver==0)
System.exit(0);
Fundamentos de Programación
180
e
Fundamentos de Programación
181
e
Contenidos
-
Estructura de Repetición – Desde.
Sustento para el manejo de la Estructura Desde
Uso del JOptionPane (showMessageDialog)
Uso de la Estructura for..
____________________________________________________________________________________
Estructura Desde
La estructura Desde sirve para repetir un código dependiendo de un contador, establecer el
valor inicial y el valor final.
desde(<variable> = <valor_inicial> hasta <valor_final> , [incremento ])
<acciones>
fin_desde
Definición:




<variable> .- Puede ser cualquier variable en la que se pueda incrementar su valor,
es decir todas las numéricas.
<valor_inicial> Es una expresión con el primer valor que toma la variable del bucle.
Debe ser del mismo tipo que la variable del bucle.
<valor_final> Es una expresión con el último valor que toma la variable del bucle.
Debe ser del mismo tipo que la variable del bucle. El bucle finaliza cuando la variable
toma un valor mayor que este valor inicial.
[Incremento] en pseudolenguaje se toma por defecto el valor 1, aunque puede
explicitarse por medio de la sentencia PASO(léase bien entero, o sea que
técnicamente podemos decrementar).
Fundamentos de Programación
182
e
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.
El bucle DESDE se ha convertido en el bucle más ampliamente utilizado en la programación,
ya que con la evolución de los lenguajes la mayoría de las condiciones de fin puede
determinarse con una función. Un ejemplo claro es el reemplazo del código de recorrido de una
tabla
En JAVA
for(expresión inicial; expresión condicional; variacion){
<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
desde(I=1 hasta 50)
suma=suma+I*I
fin_desde
escribir(“La suma de los cuadros de los primeros 100 números son:”,suma)
fin_programa
Fundamentos de Programación
183
e
private void btnAceptar_actionPerformed(ActionEvent e) {
int suma=0,I,cua;
for(I=1;I<=50;++I){
cua=I*I;
suma=suma+cua;
ModLstNum.addElement(I+"^"+I+"= "+cua);
}
lbl1.setText("La suma de los cuadrados de los primeros 50 números es :"+suma);
}
Caso 02:
Imprimir la suma de los primeros 1250 números enteros
Fundamentos de Programación
184
e
private void btnAceptar_actionPerformed(ActionEvent e) {
int suma=0;
for(int x=1;x<=1250;++x){
suma=suma+x;
ModLstNum.addElement(x);
}
lbl1.setText("La suma de los primero 1250 números entero es :"+suma);
}
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
Fundamentos de Programación
185
e
private void btnAceptar_actionPerformed(ActionEvent e) {
int r;
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
decimal: pn,Aux_mayor , Aux_menor
inicio
leer(num)
Aux_menor=num
escribir(num)
desde(x=1 hasta 19){
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
Fundamentos de Programación
186
e
escribir ("La suma de los números: ",suma)
escribir(“Promedio de los números: ”,prom_num)
escribir(“EL numero Mayor es: ",Aux_mayor)
escribir("EL numero Menor es: ",Aux_menor)
fin_programa
private void btnAceptar_actionPerformed(ActionEvent e) {
int x,num,suma=0;
double prom_num,Aux_mayor=0,Aux_menor;
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero : Orden: 1"));
ModLstNum.addElement(num);
Aux_menor=num;
for(x=2;x<=20;++x){
suma= suma+num;
if(num>Aux_mayor)
Aux_mayor=num;
if(num<Aux_menor)
Aux_menor=num;
num=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Numero : Orden: "+x));
ModLstNum.addElement(num);
}
prom_num=suma/20;
lblsuma.setText("La suma de los números: "+suma);
lblprom.setText("Promedio de los números: "+prom_num);
lblpMa.setText("EL numero Mayor es: "+Aux_mayor);
lblpme.setText("EL numero Menor es: "+Aux_menor);
}
Fundamentos de Programación
187
e
 La clase JOptionPane (parte III)
También se podrá usar para establecer mensajes de salidas o avisos para el usuario.
Como por ejemplo:
JOptionPane.showMessageDialog(“Mensaje”);
Cuando aparezca
este emergente
deberá de
presionar Alt enter
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);
//título personalizado, icono de información
JOptionPane.showMessageDialog(null,"Texto del mensaje.","Título del marco o ventana",
JOptionPane.INFORMATION_MESSAGE);
//título personalizado, icono de aviso
JOptionPane.showMessageDialog(null,"Texto del mensaje.","Título del marco o ventana",
JOptionPane.WARNING_MESSAGE);
//título personalizado, icono de error
JOptionPane.showMessageDialog(null,"Texto del mensaje.","Título del marco o ventana",
JOptionPane.ERROR_MESSAGE);
//título personalizado, sin icono
JOptionPane.showMessageDialog(null,"Texto del mensaje.","Título del marco o ventana ",
JOptionPane.PLAIN_MESSAGE);
Saca el mensaje centrado en
“un componente padre”. Si
ponemos this te centra
en la barra de título.
Fundamentos de Programación
188
e
 Ejemplos de Mensajes:
JOptionPane.showMessageDialog(this,"Estamos en la Version 11g de JDeveloper....");
JOptionPane.showMessageDialog( null, "El promedio de la clase es " +
promedio,"Promedio de la clase", JOptionPane.ERROR_MESSAGE);
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 );
Fundamentos de Programación
189
e
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
hasta_que(!(num>=5 & num<=15) & !(veces==10))
escribir(“El número leído es: “, num)
si (veces=10) entonces
escribir(“Completo con los intentos”)
fin_si
fin_programa
Fundamentos de Programación
190
e
private void btnIngresar_actionPerformed(ActionEvent e) {
int num, veces=0;
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){
JOptionPane.showMessageDialog(null,"sus Intentos Termino");
lblp.setText(""+"");
}
lblp1.setText("Intento "+veces+" Veces");
}
Fundamentos de Programación
191
e
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
Fundamentos de Programación
192
e
Bucle A
Bucle B
Fin B
Fin A
Bucle A
Bucle B
Bucle C
Fin C
Fin B
Fin A
Fundamentos de Programación
193
e
EJEMPLOS
1. Mostrar las combinaciones de siguiente Serie:
00,01,02,03,….0n,10,11,12,13…1n,20,21,….n
private void btnSeries_actionPerformed(ActionEvent e) {
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.
Fundamentos de Programación
194
e
2. Mostrar la Serie de acuerdo al número ingresado siempre bajara de 2 en 2.
private void btnSeries_actionPerformed(ActionEvent e) {
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");
}
}
Fundamentos de Programación
195
e
3. Mostrar la Serie de acuerdo al número ingresado siempre bajara de 2 en 2.
private void btnSeries_actionPerformed(ActionEvent e) {
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");
}
}
Fundamentos de Programación
196
e
EJERCICIOS DE APLICACIÓN
1. Escriba un programa que muestre los números del 15 al 1
2. Escriba un programa que pida N números y nos diga cuál es el mayor y cuál es el
menor y la posición en que fueron leídos cada uno.
3.
Escriba un programa que pida las notas y nombres de cinco alumnos y calcule el
promedio general.
4.
Escriba un programa que presente en pantalla la tabla de multiplicar entre 1 y 10,
requerida por el usuario.
5.
Escribir un programa que visualice un triángulo isósceles de 10 filas, como se muestra
a continuación:
*
**
***
****
*****
******
*******
********
*********
6. Ingresar un número par y mostrar sus divisores; el número par debe ser positivo.
7. Dado dos números enteros a y b, imprimir su Máximo Común Divisor. El MCD es el
mayor valor que divide exactamente a ambos números.
8. Contar cuantos números múltiplos de 3, 7 y 9 existen entre 7 y 1000. (**)
9. Realice un programa que lea N números de 6 dígitos y calcule el promedio de sólo
aquellos números que sean capicúas (números palíndromas).
10. Tome en consideración la siguiente definición: Un palíndromo es una palabra, número
o frase que se lee igual hacia adelante que hacia atrás. Si se trata de un número, se
llama capicúa.
11. Realice un programa que calcule el valor de la siguiente expresión:
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)
Fundamentos de Programación
197
e
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.
17. Desarrolle cada una de las siguientes series:
a) 3,4,5,6,7….65
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)
g)
1,2,3,4,5, 1,2,3,4,5, 1,2,3…(60 términos)
h)
1,2,3,4,5, 1,2,3,4,5, 1,2,3…(47 términos)
i)
1,2,3,4,5,6,7,8, 1,2,3,4,5,6,7, 1,2,3,4,5,6, 1,2,3,4,5, 1… 1,2
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
o)
6,16,26,…,646,656,666(todos los números que tengan por lo menos un 6)
p) S= 2+ 5+ 7+ 10+ 12+ 15+ 17+ .... +1800.
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.
Fundamentos de Programación
198
e
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
S=
5
7
+
4
+
7
9
+ ……
+
10
13
Considere que se sumaran 35 elementos únicamente.
23. Para encontrar el máximo común divisor de dos números, se emplea el
algoritmo de Euclides, que se puede describir así: “Dados los enteros A y B,
obteniendo un cociente C y un residuo R, si el residuo fuese diferente a cero, el
nuevo dividendo será ahora B y el nuevo divisor será R, el proceso deberá
repetirse hasta que resulte R=0”.
El MCD de ambos números será el último divisor obtenido.
24. PC: Que permita obtener a un alumno su promedio final en el curso de
algorítmica, este se calcula según:
PP + 2 EP + 3 EF
PF=
6
Donde:
PP : Promedio de las 7 practicas obtenidas eliminando la menor nota.
EP : Examen Parcial.
EF : Examen Final.
Fundamentos de Programación
199
e
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.
El reporte deberá mostrar:
Total de Desaprobados por Inasistencias (Su promedio es cero)
% de Desaprobados por Inasistencias.
Total de Aprobados
Total de Desaprobados
% de Aprobados
% de Desaprobados
Nota promedio de los Aprobados
Nota promedio de los desaprobados
Nota promedio del aula.
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.
Así, 6 es un número perfecto, porque sus divisores propios son 1, 2 y 3; y 6
1 + 2 + 3=6 .sin incluir a el mismo
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
30. PC: Que imprima los 50 primeros términos de la serie de Fibonacci.
31. PC: Que calcule el factorial de un número n:
n ! =1 * 2 * 3 * 4 * …. n
32. PC: Que evalúe:
x
e
= 1 + x0 + x1 + x2 + x3 + x4 + ……… xn
2
3
4
5
n
Considere que x y n serán ingresados por el usuario, donde n es positiva y entera.
33. PC: Que muestre los elementos del siguiente triangulo para N Líneas:
Fundamentos de Programación
200
e
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
1
2
3
1
2 3
2
1
2
1
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.
37. Se ingresa la estatura de 20 alumnos. Como primer resultado muestre cuántos
alumnos tienen estaturas menores a 1.55 metros; como segundo resultado
indique cuántos tiene estaturas entre 1.65 y 1.80 metros.
38. Se ingresa un número entero. Si el número es mayor a uno se debe de dividir
el número con todo los valores enteros existentes desde la unidad hasta el
mismo valor ingresado; cada vez que divida, verifique si el MOD resultante es 0
(CERO); Si es así, cuente cuántas veces resulto 0 (CERO) dicha operación y
muestre como resultado final este valor.
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.
Fundamentos de Programación
201
e
Cuando el saldo sea menor a US$ 250, se deberá cancelar el integro
del saldo.
El modelo del reporte a generar es el siguiente:
PRESTAMO: US$ 12,000.00
MES
1
2
3
4
5
6
……
…..
18
19
AMORTIZACION
INTERES
TOTAL
SALDO
2400.00
1920.00
1536.00
1228.00
983.04
786.43
600.00
480.00
384.00
307.20
245.76
196.61
3000.00
2400.00
1920.00
1536.00
1228.80
983.04
9600.00
7680.00
6144.00
4915.20
3932.16
3145.73
54.04
216.00
13.51
10.81
67.55
226.81
216.17
41. Se ingresa el nombre de un futbolista, su país de nacimiento, edad, estado civil,
la cantidad de goles anotados en su carrera y su peso. Este proceso se realiza
100 veces.
Muestre como resultados:
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.
Fundamentos de Programación
202
e
Fundamentos de Programación
203
e
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.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios
subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe
hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos
fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo,
divide y vencerás ó análisis descendente (Top-Down).
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.
Fundamentos de Programación
204
e
 Ventajas de la Programación Modular:
Como los módulos son independientes, el desarrollo de un programa se puede efectuar
con mayor facilidad, ya que cada módulo se puede crear aisladamente y varios
programadores podrán trabajar simultáneamente en la confección de un algoritmo,
repartiéndose las distintas partes del mismo.
Se podrá modificar un módulo sin afectar a los demás Las tareas, subalgoritmos, sólo
se escribirán una vez, aunque se necesiten en distintas ocasiones a lo largo del
algoritmo.
El uso de módulos facilita la proyección y la comprensión de la lógica subyacente para
el programador y el usuario.
Aumenta la facilidad de depuración y búsqueda de errores en un programa ya que
éstos se pueden aislar fácilmente.
El mantenimiento y la modificación de la programación se facilitan. Los módulos
reciben diferentes nombres:
- 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
Tiempo de vida de los datos
Según el lugar donde son declaradas puede haber dos tipos de variables.
 Globales: las variables permanecen activas durante todo el programa. Se crean al
iniciarse éste y se destruyen de la memoria al finalizar. Pueden ser utilizadas en
cualquier procedimiento o función. Conocidas también como variables publicas en java.
 Locales: las variables son creadas cuando el programa llega a la función o
procedimiento en la que están definidas. Al finalizar la función o el procedimiento,
desaparecen de la memoria. Si dos variables, una global y una local, tienen el mismo
nombre, la local prevalecerá sobre la global dentro del módulo en que ha sido
declarada.
Dos variables locales pueden tener el mismo nombre siempre que estén declaradas en
funciones o procedimientos diferentes.
Fundamentos de Programación
205
e
Variables Globales (variables publicas)
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
procedimiento <nombre_procedimiento>([<lista_parámetros >])
[Variables locales]
inicio
…
fin_procedimiento
Fundamentos de Programación
206
e
Definición
<nombre_procedimiento>
Debe ser un identificador válido.
<lista_parámetros_formales>
Son uno o más grupos de parámetros
separados por punto y coma. Cada grupo de argumentos se define de la siguiente
forma:
{E | E/S} <tipo_de_dato> : <lista_de_parámetros>




E
indica que el paso de parámetros se realiza por valor.
E/S
indica que el paso de parámetros se realiza por referencia.
<tipo_de_dato>
es un tipo de dato estándar o definido previamente por el
usuario.
<lista_de_parámetros> es uno o más identificadores válidos separados por comas.
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.
Crear los siguientes módulos:
1) Que muestre le sueldo de un empleado de acuerdo a la cantidad y costo por hora.
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
Fundamentos de Programación
207
e
2) Un modulo que me permita mostrar el promedio de 5 notas y su condición de aprobado
o desaprobado.
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) Crear un modulo que permita mostrar la siguiente serie.
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
Fundamentos de Programación
208
e
 Procedimientos en Java
void
<nombre_procedimiento>([<lista_parámetros >]){
[Variables locales];
…<Accione>;
}
Ejemplos:
Caso 01:Hallar el Promedio de 5 Notas
void promedio(){
double nota,acu=0,Prom;
for(int g=0;g<5;++g){
nota=Integer.parseInt(JOptionPane.showInputDialog("Ingresar Nota: "+(g+1)));
ModLstn.addElement(nota);
acu=acu+nota;
}
Prom=(acu/5);
Lblprom.setText(“”+Prom)
}
Presionar 2 click en el botón
escribir promedio();
Compila tu programa
ingrésale las notas y
aparecerá el promedio de
dichas notas-
Fundamentos de Programación
209
e
Caso 02:Mostrar el Sueldo de acuerdo a la cantidad y costo por hora.
void sueldo(){
int ch,cost,suel;
ch=Integer.parseInt(txtch.getText());
cost=Integer.parseInt(txtcst.getText());
suel=ch*cost;
lbls.setText(""+suel);
}
private void txtch_actionPerformed(ActionEvent e) {
sueldo();
}
private void txtcst_actionPerformed(ActionEvent e) {
sueldo();
}
Fundamentos de Programación
210
e
Fundamentos de Programación
211
e
Contenidos
-
Uso de Métodos con retorno- Funciones.
Semejanzas entre los procedimientos y funciones
Casos prácticos.
Uso del return.
____________________________________________________________________________________
 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.
Estándar: Son funciones proporcionadas por cualquier lenguaje de programación de
alto nivel, y se dividen en aritméticas y alfabéticas.
Definidas por el usuario: son funciones que puede definirlas el programador con el
propósito de ejecutar alguna función específica, y que por lo general se usan cuando
se trata de hacer algún cálculo que será requerido en varias ocasiones en la parte
principal del algoritmo.
Declaración
funcion
<nombre_función>([<lista_parámetros_formales>]):tipo_Dato
[declaraciones locales]
inicio
…
fin_funcion
Fundamentos de Programación
212
e
Definición



<tipo_de_dato>
es un tipo de dato estándar o definido previamente por el
usuario. Se trata del tipo del dato que devuelve la función.
<nombre_función>
debe ser un identificador válido.
<lista_parámetros_formales>
son uno o más grupos de parámetros
separados por punto y coma. Cada grupo de argumentos se define de la siguiente
forma:
{E | E/S} <tipo_de_dato> : <lista_de_parámetros>





E
indica que el paso de parámetros se realiza por valor.
E/S
indica que el paso de parámetros se realiza por referencia.
<tipo_de_dato>
es un tipo de dato estándar o definido previamente por el
usuario.
<lista_de_parámetros>
es uno o más identificadores válidos separados
por comas.
<expresión> es el valor de retorno de la función. Debe coincidir con el tipo de dato
de la declaración.
Llamada a funciones
Se puede realizar en dos formas:
1era forma: utilizando una variable local o global.
2da forma: llamándolo desde un objeto de visualización
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.
Fundamentos de Programación
213
e
 Semejanzas entre Procedimientos y Funciones.
- La definición de ambos aparece en la sección de subprogramas de la parte de
declaraciones de un programa y en ambos casos consiste en una cabecera, una parte
de declaraciones una parte de instrucciones.
- Ambos son unidades de programa independientes. Los parámetros, constantes y
variables declarados en una función o procedimiento son locales a la función o al
procedimiento, solamente son accesibles dentro del subprograma.
- Cuando se llama a una función o a un procedimiento, el número de los parámetros
reales debe ser el mismo que el número de los parámetros formales y los tipos de los
parámetros reales deben coincidir con los tipos de los correspondientes parámetros
formales, con una excepción: se puede asociar un parámetro real de tipo entero con un
parámetro formal por valor de tipo real.
 Diferencias entre Procedimientos y Funciones.
- Mientras que a un procedimiento se le llama mediante una instrucción de llamada a
procedimiento, a una función se la llama usando su nombre en una expresió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.
- Las funciones normalmente devuelven un único valor a la unidad de programa que la
llama. Los procedimientos suelen devolver más de un valor, o pueden no devolver
ninguno si solamente realizan alguna tarea, como una operación de salida.
- En los procedimientos, los valores se devuelven a través de parámetros por variable,
pero el valor de una función se devuelve mediante la asignación al nombre de la
función de dicho valor en la parte de instrucciones de la definición de la función.
Fundamentos de Programación
214
e
Ejemplos:
Caso 01: Crear una función que me devuelva el factorial de un número.
Función factorial (n:entero):entero
variables
i,factorial:entero
inicio
si(n <=1) entonces
factorial <-- 1
sino
factorial <-- 1
desde(i = 1 hasta n )
factorial <-- factorial * 1
fin_desde
fin_si
fin_funcion
Caso 02: Crear una función que me devuelva la sumatoria de los 20 primeros números pares.
Función suma ():entero
variables
i,acu,n:entero
inicio
n=2
desde(i = 1 hasta 20 )
serie=serie+n+"-";
acu=acu+n;
n=n+2;
fin_desde
suma=acu
fin_funcion
Caso 03: Crear una función que devuelva el promedio de 5 notas.
Función suma ():entero
variables
i,suma:entero
inicio
desde(i = 1 hasta 20 )
leer(nota)
acu=acu+nota
fin_desde
suma=acu
fin_funcion
Fundamentos de Programación
215
e
 Usando Métodos(Funciones) en Java
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);
}
Fundamentos de Programación
216
e
private void txtn1_actionPerformed(ActionEvent e) {
lblf.setText(""+factorial()); //mostrándolo directamente en el objeto
}
Caso 01:Sumatoria.
String serie="";
int suma(){
//variable publica o Global
int i,acu=0,n=2;
for(i=1;i<=10;++i){
serie=serie+n+"-";
acu=acu+n;
n=n+2;
}
return(acu);
}
private void btnSeries_actionPerformed(ActionEvent e) {
lblf.setText("Total es: "+suma()+" y Los numero sumados son:"+serie);
}
Fundamentos de Programación
217
e
Caso 03: Promedio de 5 Notas
int a,b,c,d,e1;
double promedio(){
Variables
Globales
Función promedio
return((a+b+c+d+e1)/5);
}
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());
}
private void txtn1_actionPerformed(ActionEvent e) {
leer();
lbls.setText(""+promedio());
Se puede invocar varias veces
}
private void txtn5_actionPerformed(ActionEvent e) {
leer();
lbls.setText(""+promedio());
}
Fundamentos de Programación
218
e
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.
Fundamentos de Programación
219
e
Usando Métodos
Realiza el siguiente caso utilizando 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
Sueldo se hallara de acuerdo a la cantidad de horas, costo por hora.
Aumento de acuerdo al mes Mayo o Noviembre tendrá CTS (50%), Julio o Diciembre
tendrá Gratificación(25%).
Fundamentos de Programación
220
e
public class FrmCaso01 extends JFrame {
int suel,ch,costo,c=100,ordenM;
double des,aum,neto;
String nom,area;
private void jbInit() throws Exception {
…………….
……………
cboArea.addItem("Seleccionar");
cboArea.addItem("Logistica");
cboArea.addItem("Administracion");
cboArea.addItem("Seguridad");
cboArea.addItem("Otros");
GrpAumentos.add(rbtCts);
GrpAumentos.add(rbtGrati);
}
void sueldo(int ch,int cost){
suel=ch*cost;
lblS.setText(""+suel);
}
void descuento(String area){
if (area.equalsIgnoreCase("Logistica"))
des=0.06*suel;
if (area.equalsIgnoreCase("Administracion"))
des=0.09*suel;
if (area.equalsIgnoreCase("Seguridad"))
des=0.03*suel;
if (area.equalsIgnoreCase("Otros"))
des=0.015*suel;
lblD.setText(""+des);
}
void aumento(String mes){
if(mes.equalsIgnoreCase("Mayo") | mes.equalsIgnoreCase("Noviembre")){
aum=0.50*suel;
rbtCts.setSelected(true);
}
if(mes.equalsIgnoreCase("Julio") | mes.equalsIgnoreCase("Diciembre")){
aum=0.25*suel;
rbtGrati.setSelected(true);
Fundamentos de Programación
221
e
}
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();
}
private void btnAgregar_actionPerformed(ActionEvent e) {
leer();
sueldo(ch,costo);
descuento(area);
aumento(nom);
netos();
Fundamentos de Programación
222
e
agregar();
}
private void rbtCts_actionPerformed(ActionEvent e) {
nom=JOptionPane.showInputDialog("Ingresar Mes");
aumento(nom);
}
private void rbtGrati_actionPerformed(ActionEvent e) {
nom=JOptionPane.showInputDialog("Ingresar Mes");
aumento(nom);
}
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 ();
}
private void btnEliminar_actionPerformed(ActionEvent e) {
Eliminar();
}
private void btnModifica_actionPerformed(ActionEvent e) {
ordenM=Lstr.getSelectedIndex();
txtCh.setText(""+ModLstCh.getElementAt(ordenM));
txtCst.setText(""+modLstCosto.getElementAt(ordenM));
cboArea.setSelectedItem(""+ModLstA.getElementAt(ordenM));
lblS.setText(""+ModLstS.getElementAt(ordenM));
lblD.setText(""+ModLstDes.getElementAt(ordenM));
lblSn.setText(""+ModLstNeto.getElementAt(ordenM));
lblAum.setText(""+ModLstAum.getElementAt(ordenM));
btnActualizar.setEnabled(true);
Fundamentos de Programación
223
e
btnAgregar.setEnabled(false);
btnEliminar.setEnabled(false);
}
private void btnActualizar_actionPerformed(ActionEvent e) {
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);
}
private void txtCst_actionPerformed(ActionEvent e) {
leer();
sueldo(ch,costo);
}
private void txtCh_actionPerformed(ActionEvent e) {
leer();
sueldo(ch,costo);
}
}
Fundamentos de Programación
224
e
Fundamentos de Programación
225
e
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".
Propiedades de las definiciones o algoritmos recursivos:
Un requisito importante para que sea correcto un algoritmo recursivo es que no genere una
secuencia infinita de llamadas así mismo. Claro que cualquier algoritmo que genere tal
secuencia no termina nunca. Una función recursiva f debe definirse en términos que no
impliquen a f al menos en un argumento o grupo de argumentos. Debe existir una "salida" de la
secuencia de llamadas recursivas.
Si en esta salida no puede calcularse ninguna función recursiva. Cualquier caso de definición
recursiva o invocación de un algoritmo recursivo tiene que reducirse a la larga a alguna
manipulación de uno o casos más simples no recursivos.
Fundamentos de Programación
226
e
 Tipos de métodos Recursivos
 Recursividad directa (simple). Es cuando un subprograma A se llama a sí mismo una o más
veces directamente
 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.
Subrutina_A → Subrutina_B → Subrutina_A
Subrutina_A → Subrutina_B → Subrutina_C → Subrutina_D → Subrutina_A
Ejemplos de Recursividad
public int potencia(int x, int n){
int p;
if ( n == 0 ) return 1;
else{
p = x * potencia(x, n - 1);
return p; }
}
public int potencia(int x, int n){
if ( n == 0 ) return 1;
else return (x * potencia(x, n - 1));
}
public int factorial(int n){
if ( n == 0 ) return 1;
else return (n * factorial(n - 1));
}
Fundamentos de Programación
227
e
public int fibonacci(int n){
if ( n == 0 ) return 0;
else
if ( n == 1)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
Fundamentos de Programación
228
e
Fundamentos de Programación
229
e
Contenidos
-
Uso de las Estructuras de Control.
Ejemplos de Estructuras de Control en entorno JAVA
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
Fundamentos de Programación
230
e
Realicemos este ejemplo:
Empecemos:
1) Realice todo el diseño y para la parte de la imagen inserte un JLabel.
2) Ingrese al source del Frame(FrmAcceso) y ubíquese en el jbInit y escriba esto
lblImagen.setImageIcon(new ImageIcon("sise.jpg"));
3) Crear los siguientes métodos del FrmAcceso que contenga esto:
Declare una variable pública llamada Usuario de tipo String.
Luego crear este método:
String nombre(){
If(rbtProfesor.isSelected())
Usuario=”Profesor”;
If(rbtAlumno.isSelected())
Usuario=”Alumno”;
Return(Usuario);
}
Void contraseña(){
FrmDatos llama=new FrmDatos();
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.
Fundamentos de Programación
231
e
 USANDO CÓDIGOS JAVA I
CASO 01: Cambiar el color de fondo de texto según las combinaciones de los
combos.
private void jbInit() throws Exception {
……………
……………………
……………….
for (int i=0; i<256; i++)
choVerde.addItem(""+i);
for (int i=0; i<256; i++)
Esta inicialización permitirá que los
combos contengan números desde
0 hasta 255.
choAzul.addItem(""+i);
for (int i=0; i<256; i++)
choRojo.addItem(""+i);
}
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));
}
Fundamentos de Programación
232
e
CASO 02: Cambiar la apariencia del texto, poniendo estilos de letras, tamaño y
tipo.
private void jbInit() throws Exception {
…………………………………..
……………………………………
………………………………….
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");
for (int i=10; i<=120; i+=10)
choTamaño.addItem(""+i);
}
private void btnAplicar_actionPerformed(ActionEvent e) {
String fuente = leeFuente();
int estilo = leeEstilo();
int tamaño = leeTamaño();
// crear fuente según atributos leidos
Font miFuente = new Font(fuente,estilo,tamaño);
// aplicar nueva fuente al JTextArea
txtS.setFont(miFuente);
}
//--------------
Fundamentos de Programación
233
e
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());
}
Fundamentos de Programación
234
e
CASO 03: Cambiar el color de fondo del Frame.
private void jbInit() throws Exception {
…………………………………..
……………………………………
………………………………….
cboColorFondo.addItem("Color de Fondo");
cboColorFondo.addItem("Fondo Gris");
cboColorFondo.addItem("Fondo Azul");
cboColorFondo.addItem("Fondo Rojo");
cboColorFondo.addItem("Fondo Naranja");
}
void fondo(){
int color = cboColorFondo.getSelectedIndex();
// establece color de fondo segun eleccion del choice
switch(color)
{
case 1: this.getContentPane().setBackground(Color.lightGray);
break;
case 2: this.getContentPane().setBackground(Color.blue);
break;
case 3: this.getContentPane().setBackground(Color.red);
break;
case 4: this.getContentPane().setBackground(Color.orange);
break;
}
}
Fundamentos de Programación
235
e
private void cboColorFondo_actionPerformed(ActionEvent e) {
fondo();
}
private void btnRestablecer_actionPerformed(ActionEvent e) {
this.getContentPane().setBackground(new Color(198,198,198));
cboColorFondo.setSelectedIndex(0);
}
 Usando otros métodos
//Activar controles
txtNumero.setEnabled(true);
bnSiguiente.setEnabled(True);
//Desactivar controles
txtNumero.setEnabled(false);
btnAnterior.setEnabled(false);
//Establecer el curso en el objeto
Esto solo se podrá establecer dentro de un Jtexfield, jbutton,etc excepto en un jLabel.
Txtnombre.requestFocus();
//Terminar el programa presionando click
System.exit(0);
Fundamentos de Programación
236
e
 USANDO CÓDIGOS JAVA II
CasoVER 01: 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.
 Si la suma es menor o igual a 70 pero mayor a 44 se eliminara la primera nota
desaprobatoria que el programa encuentre.
 Si la suma es 44 o menos, se promediaran las cuatro notas.
private void btnCalcular_actionPerformed(ActionEvent e) {
int cantNotas;
double n1,n2,n3,n4,prom,menor,suma,desap;
String m="";
menor=0;
desap=0;
prom=0;
cantNotas= cboNroNotas.getSelectedIndex();
if (cantNotas>=0 && cantNotas<=2){
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: ";
}
Fundamentos de Programación
237
e
if(cantNotas==1){
n1= Double.parseDouble(txtN1.getText());
n2= Double.parseDouble(txtN2.getText());
n3= Double.parseDouble(txtN3.getText());
if(n1<n2 && n1<n3){
menor=n1;
}
if(n2<n1 && n2<n3){
menor=n2;
}
if(n3<n1 && n3<n2){
menor=n3;
}
prom= (n1+n2+n3-menor)/2;
lblme.setVisible(true);
lblme.setText(""+menor);
m="Promedio de 3 Notas quitando la menor nota: ";
}
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;
Fundamentos de Programación
238
e
}
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(suma<=70 && suma>44){
if(n1<=10)
desap=n1;
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);
}
}
Fundamentos de Programación
239
e
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;
}
}
Fundamentos de Programación
240
e
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:
TIPO DE PRENDA
POLO
CAMISA
PANTALON
TARIFA
0.50
1.00
1.50
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
Del total de ingresos se descontara 9% por concepto de impuestos, 2% por seguro y 1%
por solidaridad. En ningún caso el descuento por seguro será mayor a S/. 20.00.
Al final presentar el sueldo neto, cada uno de los descuentos y la bonificación. Los
resultados se mostraran con dos decimales.
Fundamentos de Programación
241
e
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;
Fundamentos de Programación
242
e
}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);
}
private void cboTipoPrenda_actionPerformed(ActionEvent e) {
tipo();
}
private void txtNroUnidades_actionPerformed(ActionEvent e) {
calcular();
}
private void txtNroUnidades_keyPressed(KeyEvent e) {
calcular();
}
Fundamentos de Programación
243
e
CasoVER 03: Ingresar 3 números y mostrar el número menor
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);
}
private void txtn3_actionPerformed(ActionEvent e) {
buscar_Mayor();
}
private void txtn2_actionPerformed(ActionEvent e) {
buscar_Mayor();
}
private void txtn1_actionPerformed(ActionEvent e) {
buscar_Mayor();
}
private void txtn1_keyPressed(KeyEvent e) {
buscar_Mayor();
}
private void txtn2_keyReleased(KeyEvent e) {
buscar_Mayor();
}
private void txtn3_keyReleased(KeyEvent e) {
buscar_Mayor();
}
Fundamentos de Programación
244
e
BIBLIOGRAFIA.
JOYANES AGUILAR, Luis. Fundamentos de Programación,
Estructura de Datos y Programación Orienta Objetos. 3era
Edición McGraw-Hill/Interamericana de España
S.A. Victor Balta – Julio Vásquez. Súper JAVA 2. Guía de
Desarrollo en Java para aplicaciones Windows. Segunda Edición
– 2006
Java 2 SE. Editorial MegaByte
Fundamentos de Programación
245
Descargar