Sie sind auf Seite 1von 242

e

Fundamentos de Programacin

Presentacin

..

Modulo A
Semana 1 Semana 2 Semana 3 Semana 4 Semana 5 Semana 6 Semana 7 Semana 8 Semana 9 .. .. .. .. .. .. .. .. .. 10 22 40 48 74 90 98 104 110

Modulo B:
Semana 1 Semana 2 Semana 3 Semana 4 Semana 5 Semana 6 Semana 7 Semana 8 Semana 9 .. .. .. .. .. .. .. .. .. 148 160 174 182 192 204 212 226 230

Fundamentos de Programacin

Fundamentos de Programacin

PRESENTACIN
Esta gua didctica es un material de ayuda institucional, perteneciente a las especialidades de computacin, Ingeniera de Software e Ingeniera de Redes y Comunicaciones tiene por finalidad proporcionar los conocimientos de fundamentos de programacin orientada a los estudiantes del primer ciclo de estudios. La Organizacin SISE, lder en la enseanza tecnolgica a nivel superior, promueve la elaboracin de materiales educativos, en concordancia a las exigencias de las tecnologas de estos tiempos, que permiten la creacin de nuevas herramientas de aprendizaje con el objetivo de facilitar el acceso de los estudiantes a la educacin en el marco del desarrollo tecnolgico de la informtica u de las telecomunicaciones. Esta gua se divide en 2 mdulos y cada una de ellas en 9 semanas. Permite conocer las herramientas indispensables para la elaboracin de un algoritmo. Se inicia con el reconocimiento de las herramientas bsicas que se necesitaran para dar solucin a una determinada proposicin o problema. En este proceso el alumno aprender instrucciones que le permitirn evaluar expresiones para luego procesar un conjunto de sentencias. Tambin aprender el uso de las estructuras de control (Condicionales y Repetitivas), de la misma forma el manejo del lenguaje de programacin orientada a objetos. La implementacin y uso de mtodos (con retorno y sin retorno), permitirn que el alumno aplique el uso de variables Globales y Locales donde el alumno demostrara el manejo de la programacin orientada a objetos. Todas estas herramientas darn un soporte solido al alumno para aprender a programar en cualquier lenguaje de programacin estructurada o a los lenguajes Orientada a Objetos (JAVA, .NET, Visual C,etc). Este material en su primera edicin, servir para ayudar a nuestros estudiantes SISESINOS a tener una formacin solida para resolver problemas.

Fundamentos de Programacin

Fundamentos de Programacin

INTRODUCCION
Contenidos
- Introduccin a la Programacin - Sistema de Procesamiento de la Informacin - Etapas del Procesamiento de Datos (Entrada, Clasificacin, Procesamiento, Almacenamiento, Control, Salida). - Razones para automatizar los procesos. - Lenguajes de Programacin, Definicin de programa y Clasificacin de Lenguajes - Traductores de Lenguajes: Intrpretes y Compiladores. - Ciclo de Vida de un Programa - Tipos de Datos Primitivos: Numricos, Lgicos, Carcter. - Definicin de Identificadores y reglas - Definicin de Variables y Constantes ____________________________________________________________________________

Introduccin a la Programacin
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 ms que una mquina 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 mquina de origen electrnico que puede realizar una gran variedad de trabajos, pero. En principio, slo es capaz de hacer fsicamente tres clases de operaciones bsicas: Sumar, restar, multiplicar y dividir dos valores numricos, es decir, realizar operaciones aritmticas sencillas; Comparar dos valores (comprobar si son iguales, si el primero es mayor que el segundo. etc.), es decir, realizar operaciones lgicas sencillas. Y Almacenar o recuperar informacin. Con estas pocas operaciones utilizadas y combinadas de forma adecuada, mediante lo que llamamos programa. Se pueden llegar a realizar tareas increblemente complejas que aporten la solucin a un determinado problema, ya sea de gestin, tcnico o de cualquier otro tipo.

Fundamentos de Programacin

10

La principal razn para que las personas aprendan lenguajes y tcnicas de programacin es utilizar la computadora como una herramienta para resolver problemas. La resolucin de un problema exige al menos los siguientes pasos: 1. Definicin o anlisis del problema. 2. Diseo del algoritmo. 3. Transformacin del algoritmo en un programa. 4. Ejecucin y validacin del programa. Uno de los objetivos de la programacin es el aprendizaje y diseo de algoritmos.

1. Sistema de Informacin
Introduccin:
Un sistema de informacin es un conjunto de elementos que interactan 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 informacin pueda operar. El recurso humano que interacta con el Sistema de Informacin, el cual est formado por las personas que utilizan el sistema. Un sistema de informacin realiza cuatro actividades bsicas: entrada, almacenamiento, procesamiento y salida de informacin. Entrada de Informacin: Es el proceso mediante el cual el Sistema de Informacin toma los datos que requiere para procesar la informacin. Las entradas pueden ser manuales o automticas. Las manuales son aquellas que se proporcionan en forma directa por el usuario, mientras que las automticas son datos o informacin que provienen o son tomados de otros sistemas o mdulos. Las unidades tpicas de entrada de datos a las computadoras son las terminales, las cintas magnticas, las unidades de diskette, los cdigos de barras, los escner, la voz, los monitores sensibles al tacto, el teclado y el mouse, entre otras. Almacenamiento de informacin: El almacenamiento es una de las actividades o capacidades ms importantes que tiene una computadora, ya que a travs de esta propiedad el sistema puede recordar la informacin guardada en la seccin o proceso anterior. Esta informacin suele ser almacenada en estructuras de informacin denominadas archivos. La unidad tpica de almacenamiento son los discos magnticos o discos duros, los discos flexibles o diskettes y los discos compactos (CD-ROM). Procesamiento de Informacin: Es la capacidad del Sistema de Informacin para efectuar clculos de acuerdo con una secuencia de operaciones preestablecida. Estos clculos pueden efectuarse con datos introducidos recientemente en el sistema o bien con datos que estn almacenados. Esta caracterstica de los sistemas permite la transformacin de datos fuente en informacin que puede ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones genere una proyeccin financiera a partir de los datos que contiene un estado de resultados o un balance general de un ao base.

Fundamentos de Programacin

11

e
Salida de Informacin: La salida es la capacidad de un Sistema de Informacin para sacar la informacin procesada o bien datos de entrada al exterior. Las unidades tpicas de salida son las impresoras, terminales, diskettes, cintas magnticas, la voz, los graficadores y los plotters, entre otros.

Actividades que realiza un Sistema de Informacin:


Entradas: Datos generales del cliente: nombre, direccin, tipo de cliente, etc. Polticas de crditos: lmite de crdito, plazo de pago, etc. Facturas (interface automtico). Pagos, depuraciones, etc. Proceso: Clculo de antigedad de saldos. Clculo de intereses moratorios. Clculo del saldo de un cliente. Almacenamiento: Movimientos del mes (pagos, depuraciones). Catlogo de clientes. Facturas. Salidas: Reporte de pagos. Estados de cuenta. Plizas contables (interface automtica) Consultas de saldos en pantalla de una terminal.

Tipos y Usos de los Sistemas de Informacin


Durante los prximos aos, los Sistemas de Informacin cumplirn tres objetivos bsicos dentro de las

organizaciones: 1. 2. 3. Automatizacin de procesos operativos. Proporcionar informacin que sirva de apoyo al proceso de toma de decisiones. Lograr ventajas competitivas a travs de su implantacin y uso.

Fundamentos de Programacin

12

2. Razones Para Automatizar Los Procesos


Seguridad de la informacin. Fcil y rpido acceso a la informacin. Reduccin de espacio fsico. Estandarizacin. Facilidad en la creacin de copias de respaldo. Reduccin de gastos. Data Ordenada y clasificada. Conservacin de la informacin.

3. Lenguajes de Programacin
Un lenguaje de programacin es aquel elemento dentro de la informtica que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que pone a disposicin del programador para que este pueda comunicarse con los dispositivos hardware y software existentes. Un lenguaje de programacin es un sistema notacional para describir computaciones de una forma legible tanto para la maquina como para el ser humano Dicha solucin es generar un programa o software utilizando un determinado lenguaje de programacin. Es por ello que como objetivo de este curso es que el alumno conozca los principios de la programacin y que aprenda aplicar las etapas de procesamiento de datos dentro de un proyecto real.

Qu conoces t por lxico, sintaxis y semntica? Lxico: Conjunto de smbolos permitidos o vocabulario Sintaxis: Reglas que indican cmo realizar las construcciones del lenguaje. Semntica: Reglas que permiten determinar el significado de cualquier construccin del lenguaje.

Fundamentos de Programacin

13

Programa
Definicin.- Es un conjunto de instrucciones escritas en algn lenguaje de programacin. 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, manipulacin de textos, lgica / comparacin y almacenamiento / recuperacin. Tipos de lenguajes: Atendiendo al nmero de instrucciones necesarias para realizar una tarea especfica podemos clasificar los lenguajes informticos en dos grandes bloques: Mquina. Bajo nivel Alto nivel Los lenguajes de programacin se clasifican Lenguaje Mquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traduccin posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en trminos de la unidad de memoria ms pequea el bit (dgito binario 0 1). Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en cdigos alfabticos conocidos como mnemotcnicos para las operaciones y direcciones simblicas. Lenguaje de Alto Nivel: Los lenguajes de programacin 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 comprensin del programa.

Tipos de Lenguaje Alto Nivel (Estructurados y Orientado a Objetos).


La programacin estructurada es una forma de escribir programas de ordenador (programacin de computadora) de forma clara. Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin. A los finales de los aos 1960 surgi una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que facilitaba su comprensin posterior. El teorema del programa estructurado, demostrado por Bhm-Jacopini, demuestra que todo programa puede escribirse utilizando nicamente las tres instrucciones de control siguientes: Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio.

Fundamentos de Programacin

14

e
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres bsicas. Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones. La programacin orientada a objetos La orientacin a objetos promete mejoras de amplio alcance en la forma de diseo, desarrollo y mantenimiento del software ofreciendo una solucin a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta de portabilidad del cdigo y reusabilidad, cdigo que es difcil de modificar, ciclos de desarrollo largos y tcnicas de codificacin no intuitivas.

Un lenguaje orientado a objetos ataca estos problemas. Tiene tres caractersticas bsicas: 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 ms difcil 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 Cdigo Abierto (Open Source), el cual hace posible que el acceso al "Cdigo Fuente" del programa no est limitado a su autor. Fuente Tambin denominado fuente o texto fuente. Es el texto que contiene las instrucciones del programa, escritas en el lenguaje de programacin.

Intrpretes y Compiladores
Los compiladores, los intrpretes y los ensambladores se encargan de traducir lo que haya escrito en lenguaje de alto nivel (cdigo fuente) y lo convierten a cdigo objeto (casi ejecutable).

Fundamentos de Programacin

15

e
Compilado Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en lenguaje de mquina 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 algn programa y su salida es otro programa. Para evitar confusiones, solemos llamar programa fuente o cdigo fuente al programa de entrada, y programa objeto o cdigo objeto a la versin traducida que el compilador produce. Cdigo 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, pasndose a crear el programa objeto cuando est libre de errores. El cdigo objeto puede ser ejecutado posteriormente. Una vez traducido un programa, su ejecucin es independiente de su compilacin. Involucra dos pasos en su operacin: 1. Convertir cdigo fuente a objeto 2. Ejecutar el cdigo objeto

Las ventajas de los intrpretes son: o Resulta ms fcil localizar y corregir errores (depuracin de programas) son ms pedaggicos para aprender a programar. o El programa es ms fcil de desarrollar. Traducen programas de alto nivel. No se genera en la mayora de los ficheros. Con el intrprete, cada vez que necesitamos ejecutar el programa tenemos que volver a analizarlo porque no hay cdigo objeto. Con el compilador, aunque ms lenta la traduccin, slo se realiza una vez.

Ciclo de Vida de un Programa


En este paso se determinan la informacin inicial para la elaboracin 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: Anlisis del Problema Esta fase requiere una clara definicin donde se contemple exactamente lo que debe hacer el programa y el resultado o solucin deseada. Dado que se busca una solucin 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) Cul es la salida deseada? (cantidad y tipo) Qu mtodo produce la salida deseada? Diseo

Es disear cualquier sistema nuevo o las aplicaciones que se requieren para satisfacer las necesidades. Esta actividad se debe dividir en: Operaciones de entrada/salida Clculos Lgica/comparacin Almacenamiento/ consulta

Fundamentos de Programacin

16

e
En este paso se genera una solucin con tcnicas de programacin como diseo descendente de programas, pseudocdigos, flujo gramas y estructuras lgicas. Implementacin Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: a) b) c) d) e) Codificacin Compilacin y ejecucin Verificacin Depuracin Documentacin

a) Codificacin: Es la escritura en un lenguaje de programacin de la representacin de un algoritmo. Dado que el diseo del algoritmo es independiente del lenguaje de programacin utilizado en su implementacin, el cdigo puede ser escrito con igual facilidad en un lenguaje o en otro. b) Compilacin y ejecucin: 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 operacin 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) Verificacin: Consiste en verificar la funcionalidad del programa a travs de varios mtodos para detectar errores posibles. Mtodos de Prueba: Chequeo de escritorio Prueba manual de datos de muestra Intento de traduccin 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 impresin del programa. Revisa el listado lnea por lnea en busca de errores de sintaxis y lgica. 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 Traduccin: El programa corre en una computadora usando un programa traductor para convertirlo a lenguaje de mquina. Para ello debe estar ya libre de errores de sintaxis, de lo contrario sern identificados por el programa de traduccin. Prueba de datos de muestra en la computadora: Despus del intento de traduccin y corregidos los errores de sintaxis, se procede a buscar errores de lgica 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 retroalimentacin.

d) Prueba y depuracin 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 estn depurados, se prueban. Cuando los programas se depuran, se pueden encontrar los siguientes errores:

Fundamentos de Programacin

17

e
Errores de sintaxis o de compilacin Errores de ejecucin Errores de lgica Errores de especificacin.

Errores de sintaxis o de compilacin Es una violacin de las reglas del lenguaje de programacin. Son ms fciles de corregir, ya que son detectados por el compilador (posible error de escritura). Errores de Ejecucin Se deben generalmente a operaciones no permitidas como dividir por cero, leer un dato no numrico en una variable numrica, exceder un rango de valores permitidos, etc. Se detectan porque se produce una parada anormal del programa durante su ejecucin. Errores de Lgica Corresponden a la obtencin de resultados que no son correctos y la nica manera de detectarlos es realizando suficientes pruebas del programa. Son los ms difciles de corregir, no slo por la dificultad de detectarlos, sino porque se deben a la propia concepcin y diseo del programa. Errores de Especificacin Es el peor tipo de error y el ms difcil de corregir. Se deben a mal diseo del programa posiblemente por mala comunicacin usuario programador y se detectan cuando ya se ha concluido el diseo e instalacin del programa, lo cual puede implicar repetir gran parte del trabajo realizado. e) Documentacin del programa Consiste en describir por escrito a nivel tcnico los procedimientos relacionados con el programa y su modo de uso. Tambin se debe documentar el programa para que sea ms entendible. Para quines son la documentacin? 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 travs de capacitaciones y revisin de la documentacin del manual de usuario. El manual del usuario no est escrito a nivel tcnico sino al de los distintos usuarios previstos y explica en detalle cmo usar el programa: descripcin de las tareas que realiza el programa, instrucciones necesarias para su instalacin puesta en marcha y funcionamiento, recomendaciones de uso, mens de opciones, mtodo de entrada y salida de datos, mensajes de error, recuperacin de errores, etc. A los operadores por si se presentan mensajes de error, sepan cmo responder a ellos. Adems que se encargan de darle soporte tcnico al programa. A los programadores a travs del manual del analista para que recuerden aspectos de la elaboracin del programa o en caso que otras personas puedan actualizarlo o modificarlo (darle mantenimiento) y no son necesariamente las personas que lo disearon. Es por ello, que la documentacin debe contener algoritmos y flujo gramas de los diferentes mdulos que lo constituyen y las relaciones que se establecen entre ellos; listados del programa, corridas, descripcin de variables que se emplean en cada mdulo, cules son comunes a

Fundamentos de Programacin

18

e
diferentes mdulos y cules locales; descripcin de los ficheros de cada mdulo y todo lo que sea de importancia para un programador. A los analistas de sistemas que son las personas que debern proporcionar toda la informacin al programador. Estos se encargan de hacer una investigacin previa de cmo realizar el programa y documentar con las herramientas necesarias para que el programador pueda desarrollar el sistema en algn lenguaje de programacin 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 propsito del mantenimiento es garantizar que los programas en uso estn libres de errores de operacin 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 o o No comenzar por un carcter especial (,,#,%,?,etc.). Su nombre debe ser corto que debe dar como referencia a lo que quiera representar. Siempre debe de comenzar por una letra o subguion.

Ejemplos: Identificador que agrupe a: William, Angie, Sebastin, Anibal, Anabel Por lo tanto estamos hablando de Nombres. Identificador que agrupe a: Escobar, Aquino, ngeles, Florin Por lo tanto estamos hablando de Apellidos Identificador que agrupe una evaluacin final : Evaluacin final Recuerda que debe de respetar las reglas por lo tanto puede ser: Eva_Final o quizs pueda ser Evaluacion_F de acuerdo a tu criterio.

Otros Identificadores tales como: Sueldo, Est_Civil, _Sexo, _ Pagos, etc.

Fundamentos de Programacin

19

e
Te damos algunos ejemplos para establecer identificadores corto para los siguientes ejemplos: o Nombres y Apellidos Nom_Ape o o o o o o o o Edades Primera Nota Eds Nota_1

Promedio de Practicas Prom_Pract Estado Civil Sueldo Bsico Sueldo Neto Cantidad de Horas Costo por hora Est_Civ Suel_B Suel_N Cant_H Cst_H

Recuerda que los identificadores son palabras que debers de definir de acuerdo al valor que quieras representar.

Ejercicios Propuestos
a) Definir los identificadores para agrupar: 1. _________________ Per, Colombia, Holanda, Ecuador, Espaa, etc. 2. _________________ 15, 12, 10, 5, 13, etc. 3. _________________ Planilla, Honorarios, etc. 4. _________________ Varn, Mujer, etc. 5. _________________ Rojo, verde, azul, blanco, etc. 6. _________________ Chorrillos, Villa el Salvador, Comas, Puente Piedra, etc. 7. _________________ Licuadora, Televisin, 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. _________________ Matemticas, Fundamentos, Ingles, etc. 13. _________________ Coca-Cola, Pepsi, KR, etc. 14. _________________ Enero, Febrero, Marzo,Abril, etc.. 15. _________________ Lunes, Martes, Miercoles, etc.

Fundamentos de Programacin

20

Dato. Es la expresin 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 sitan en objetos llamados variables.
Entero Numricos Simples Decimal

Carcter No Numricos

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 Programacin

21

Contenidos
Uso de Expresiones: Definicin, Clasificacin de la Expresiones Operadores Div y Mod Operacin de Asignacin(Aritmtica, Lgica y Carcter) Salida y Entrada de Datos. Estructura general de un programa: Definicin de Algoritmos y Caractersticas Uso de Herramientas de Desarrollo de Algoritmos Pseudocdigo: Definicin, Estructura del Pseudocdigo, Definicin de sus partes Seccin de Declaracin: Variables Constantes. Estilo de escritura (Datos, Procesos, Salidas). Estructura General de un programa: Estructura Secuencial. Tipos de Instrucciones : Instruccin de entrada, Instrucciones de Manejo de Datos, Instruccin de salida de Resultados Propuesta de Ejercicios usando los pseudocdigos

Introduccin a las Herramientas de Programacin


El objetivo de esta semana es familiarizar al alumno con el diseo de algoritmos para la resolucin de problemas por computadora. Requiere l uso de una notacin que sea entendida por ella, es decir, un lenguaje de programacin. No obstante, durante la fase de diseo del programa, la utilizacin de un lenguaje as no es aconsejable debido a su rigidez. Adems de la utilizacin de las representaciones grficas un programa puede describirse mediante un lenguaje intermedio entre el lenguaje natural y el lenguaje de programacin, 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 codificacin en un lenguaje de programacin determinado. Al igual que las otras tcnicas, la utilizacin de una notacin intermedia permite el diseo del programa sin depender de ningn lenguaje de programacin y es despus del diseo, 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 programacin y es por ello que conoceremos lo siguiente:

Expresiones
Fundamentos de Programacin 22

e Es la representacin de un clculo necesario para la obtencin de un resultado.


Ejemplo: son datos: 11, Angie, SISE, etc Son clculos: Y=4+3

Tipos de Expresiones:
a) b) c) d) e) Aritmticos (su resultado es un nmero): potencia, * , / , mod, div, + , Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <> Lgicos o Booleanos (su resultado es un valor de verdad): not, and, or Alfanumricos : + (concatenacin) Asociativos. El nico operador asociativo es el parntesis ( ) , el cual permite indicar en qu orden deben realizarse las operaciones. Cuando una expresin se encuentra entre parntesis, indica que las operaciones que estn dentro de ellos debe realizarse primero. Si en una expresin se utilizan ms de un parntesis se deber proceder primero con los que se encuentren ms hacia el centro de la expresin.

Ejemplos de Expresiones Aritmticas:

6^(1/2)

6^2

28+29*(14^2) Jerarqua de Operaciones: o o o o o o o o o o () Potencia Producto y divisin Div y Mod Suma y resta Concatenacin Relacionales Negacin 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 adems trunc, round, int, y otros. La suma y multiplicacin de datos de tipo real cumplen la propiedad conmutativa, pero no siempre la asociativa y la distributiva. Para resolver una expresin aritmtica se deben seguir las siguientes reglas: Primero se resuelven las expresiones que se encuentran entre parntesis. Se procede aplicando la jerarqua de operadores. Al evaluar una expresin, si hay dos operadores con la misma jerarqua, se procede a evaluar de izquierda a derecha.

Fundamentos de Programacin

23

e
Si hay expresiones relacionales, se resuelven primero parntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por ltimo se aplica jerarqua de operadores lgicos. En caso de haber iguales, proceder de izquierda a derecha.

EJERCICIOS. a. Establecer las expresiones matemticas a expresiones algortmicas.

b. Hallar el resultado de esta expresin segn la jerarqua de operadores.

4+1*5^21

9 / 3 + 4 ^ 2 5 * 1 + 9 / -2 + 3

5/2+34*5/2

(4 + 1) * 5 ^ 2 1

17 / 2 + 3 ^ 2 ^ 2 2 * 2 / 2

Fundamentos de Programacin

24

e
c. Mencione los valores que puedan tener: Donde: Y=N1+N3 Z=Y+N2 Cul es el valor de Z? Z=___ N1=5 N2=2 N3=1 U=N3*2 Q=U/2+N1 T=Q^0 Cul es el valor de T?

T=____

Operadores DIV y MOD El smbolo / se utiliza para la divisin 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 smbolo / 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 divisin 15/6 de esta manera se obtendr toda la divisin 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 divisin.
Otros ejemplos con Div: A= 20 div 5 A toma el valor 4 Q= 15 div 2 V= 51 div 7 Q toma el valor 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 V= 51 div 7 Q toma el valor 1 V toma el valor 2

Estos operadores los podrs utilizar tambin para la descomposicin de nmeros, como por ejemplo en el cual quisieras realizar la suma de las cifras del nmero, preguntar si es par o quizs si el numero es capica

Fundamentos de Programacin

25

Resuelva los siguientes Ejercicios aplicando la jerarqua de operadores


Obtener el valor de cada una de las siguientes expresiones aritmticas: 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: Considrese jerarqua de operadores. Encontrar el valor de cada una de las siguientes expresiones o decir si no es una expresin vlida: 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: Considrese jerarqua de operadores.

Fundamentos de Programacin

26

Asignacin de Datos
La instruccin de asignacin se usa para asignar valores a variables utilizando la igualdad (=). Identificador=Expresin

La expresin podr ser un valor fijo o un clculo. En el caso de ser un dato de tipo carcter 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 Seccin de Declaracin de Datos (Variables Constantes).

Seccin de Variable

Las variables son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de informacin. Son objetos cuyo valor puede ser modificado a lo largo de la ejecucin de un programa. Ejemplos:

Nombres Fecha_Nac Apellidos Direccion Edades Dni Telefonos


Como declarar una Variable

Tipo de Dato: Identificador

Fundamentos de Programacin

27

e
Ejemplos: o o o o o Caracter: Nombres Caracter: Apellidos Entero: Edad Decimal: Promedio Lgico: Bandera

Seccin Constantes (Literales)


Son objetos cuyo valor permanece invariable a lo largo de la ejecucin de un programa. Una constante es la denominacin 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) _____________ Ao de Nacimiento d) _____________ Correo electrnico

b)

Define tus propios valores para los siguientes Literales(Contantes): o o o o o o Codigo Direccion Telefono Peso Talla Estado_Civil ____________________ ____________________ ____________________ ____________________ ____________________ ____________________

Fundamentos de Programacin

28

e
c) Otros propuestos

Estos nombres de variable son vlidos.


Edad fechaNacimiento jugador1 Igv vidasRestantes

Estos otros nombres no son vlidos


2jugadores (No empieza por una letra) ao (Contiene la ) elPatioDeMiCasaEsParticularYCuandoLlueveSeMoja (Muy Largo) puntuacin (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 Programacin

29

Estructura General de un Programa


Un programa puede considerarse como una secuencia lgica de acciones (instrucciones) que manipulan un conjunto de objetos (datos) para obtener unos resultados que sern la solucin 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 caractersticas. 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 obtencin de tos resultados deseados. Los procesos que se pueden llevar a cabo en un programa pueden ser de tipo aritmtico o lgico, incluyndose algunas operaciones de manejo de caracteres y operaciones de entrada salida. Las partes principales de un programa estn relacionadas con sus dos bloques ya mencionados. Es por ello que necesitamos realizar algoritmos para encontrar la solucin a problemas computables.

Algoritmo: Definiciones:
a) Es un Mtodo 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 ambigedad. b) Los algoritmos son modos de resolucin de problemas, cabe aclarar que no slo son aplicables a la actividad intelectual, sino tambin a todo tipo de problemas relacionados con actividades cotidianas. c) El algoritmo podra confundirse con lo comnmente 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 seran pasos ya establecidos.

Caractersticas
Las caractersticas bsicas que debe tener todo buen algoritmo, y, por tanto, cualquier receta de cocina, son las siguientes: Precisin: No debe haber la menor ambigedad 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 azcares e incorporar la mantequilla fundida. Si la siguisemos al pie de la letra, el pastel saldra con mltiples fragmentos de cscara 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 idntico. 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 Programacin

30

e
Finitud: Evidentemente, para que el algoritmo tenga alguna utilidad, debe acabar en un nmero finito de pasos. De hecho, el tiempo que nos lleva completar el algoritmo es casi siempre algo primordial. No obstante, existen algoritmos que, an siendo vlidos en teora, no son efectivos en la prctica. Ejemplos: 1) PROBLEMA: Un estudiante se encuentra en su casa (durmiendo) y debe ir a la universidad (a tomar la clase de programacin!!), 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 Baarse. 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 dems 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 automvil teniendo un gato mecnico en buen estado, una rueda de reemplazo y una llave inglesa. ALGORITMO:

Fundamentos de Programacin

31

Inicio PASO 1. Aflojar los tornillos de la rueda pinchada con la llave inglesa. PASO 2. Ubicar el gato mecnico 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 nmeros 2448 y 5746. ALGORITMO: Inicio PASO 1. Colocar los nmeros el primero encima del segundo, de tal manera que las unidades, decenas, centenas, etc., de los nmeros queden alineadas. Trazar una lnea debajo del segundo nmero. PASO 2. Empezar por la columna ms a la derecha. PASO 3. Sumar los dgitos 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 lnea las unidades de la suma. Si no es mayor anotar la suma debajo de la lnea. PASO 5. Si hay ms columnas a la izquierda, pasar a la siguiente columna a la izquierda y volver a 3. PASO 6. El nmero debajo de la lnea es la solucin. Fin

Tips de Algoritmos
1) Algoritmo De Euclides Uno de los algoritmos ms antiguos que se conocen, y que todava se utiliza hoy en da, se debe a Euclides y permite calcular el mximo comn divisor de dos nmeros de una manera cmoda y rpida6. Es decir, la finalidad de este algoritmo radica en encontrar el mayor nmero entero que es divisor de los dos nmeros dados. Adaptado al lenguaje actual, el algoritmo de Euclides viene a decir que puede obtenerse el mximo comn divisor de dos nmeros, a y b, en la siguiente forma: 1. Calcular r, el resto de la divisin 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 Programacin

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 comn de 1230y450 es 30. Enseguida se aprecia que este algoritmo es mucho ms eficiente que el mtodo de descomposicin en factores primos que se ensea en la escuela. Por una parte, es mucho ms rpido, salvo que trabajemos con nmeros pequeos; por otro lado, no exige memorizar todos los factores primos, sino nicamente tres nmeros. Debido a esto, el algoritmo de Euclides es el que se implementa en los ordenadores para calcular el mximo comn 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 ms eficaz trabajar en sistema binario (base 2), ya que puede identificar un dgito binario, 0 1, comprobando si pasa o no corriente por un determinado circuito. Cuando queremos pasar un nmero del sistema decimal al binario, podemos utilizar el siguiente algoritmo: 1. Dividir por 2 el nmero. 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 conoca 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 nmeros 26. 13. 6 y 3.

Fundamentos de Programacin

33

Herramientas de Desarrollo de Algoritmos


Para representar nuestros algoritmos podemos usar: A. Diagramas de Flujos B. Diagramas N-S C. Pseudocdigos, Otros

A. Diagramas de Flujos
Es la representacin grfica de flujo de un algoritmo o de secuencia rutinaria. Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de la operacin.
Smbolo Descripcin

Inicio / Terminacin. Este smbolo se utiliza para sealar el comienzo as como el final de un diagrama. Tradicionalmente se colocan las palabras INICIO FIN dentro de la figura para hacerlo ms explcito.

Entrada de datos. En este smbolo se indican los valores inciales que deber recibir el proceso. Esto se hace asignndoles letras o nombres de variables para cada uno de los valores y anotando estas letras en el interior de la figura. Este smbolo siempre deber tener al menos una conexin entrante (generalmente del inicio) y una de salida.

Proceso de datos. Este smbolo lo utilizaremos para sealar operaciones matemticas, aritmticas o procesos especficos que se realicen con nuestros datos. La manera de anotar dichos procesos, puede ser mediante una descripcin breve de la operacin o mediante una asignacin de dicha operacin hacia una variable como por ejemplo: R = A + B

Decisin. Este smbolo nos representa una disyuntiva lgica o decisin. En su interior se anota una instruccin o pregunta que pueda ser evaluada como cierta o falsa y que determine el flujo del programa.

Fundamentos de Programacin

34

Desplegado de informacin. Este smbolo se utiliza para mostrar un resultado, el cual puede representar la solucin al problema que se pretende resolver y que fue conseguida a travs 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 smbolo muy cerca del final del proceso y precedido por el smbolo de terminacin. Este smbolo siempre deber tener al menos una conexin de entrada y una de salida.

Flechas: Indica el sentido del flujo del proceso, conectando al proceso

En la diagramacin, tambin contamos con una serie de smbolos 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:
Smbolo Descripcin

Conector. Este smbolo se utiliza para indicar un salto dentro del diagrama. Se utiliza con el propsito de facilitar la disposicin plana de un diagrama y evitar el cruce excesivo de lneas a travs 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 lnea continua in interrumpida.

Conector de pgina. Este conector es idntico en funcionamiento que el anterior, pero su forma pentagonal lo distingue y nos indica que debemos buscar el gemelo en una pgina distinta de la actual. Este conector lleva asociado una especie de salto entre pginas.

Ejemplo:

Fundamentos de Programacin

35

e B. Diagramas N-S (I. Nassi y B. Scheneiderman)


Tambin conocido como diagrama de Chapin es una tcnica de especificacin de algoritmos que combina la descripcin textual, propia del pseudocdigo, con la representacin grfica del diagrama de flujo. El diagrama N-S cuenta con un conjunto limitado de smbolos 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 ambigedad, solo se utiliza un conjunto de palabras, a las que se denomina palabras reservadas

Inicio .. .. .. .. Fin

C. Pseudocdigo
Un pseudocdigo (falso lenguaje), es una serie de palabras lxicas y gramaticales referidos a los lenguajes de programacin, 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 programacin, con la misma validez semntica, normalmente se utiliza en las fases de anlisis o diseo de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniera de software. Es, netamente, lenguaje de tipo informtico. Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el Pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema determinado. El Pseudocdigo utiliza palabras que indican el proceso a realizar. Ventajas de utilizar un Pseudocdigo a un Diagrama de Flujo

Ocupa menos espacio en una hoja de papel Permite representar en forma fcil operaciones repetitivas complejas Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de programacin. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin.

Estructura de un Pseudocdigo
a) Encabezado de programa.- Se establece un nombre para el programa * b) Seccin de Declaracin- Permite establecer las Variables y la Constantes c) Cuerpo del Programa.- se establece con la palabra Inicio

Fundamentos de Programacin

36

e
d) Instrucciones.- son acciones o tareas que se establecen como una expresin o una asignacin 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 asignacin. 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 Asignacin.- se le establecer un tipo de dato o una expresin. <variable> = <expresin>

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 Programacin

37

e
leer(<Variable>)

Formas: leer (ident_1) o leer (ident1,ident2, ident3,.) leer (ident_2) <nombre_de_constante > = <expresin> leer (ident_3) La lectura en un Pseudocdigo puede ser uno por uno o separados por comas
4.

Instrucciones de Escritura.- Una instruccin de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluacin de una lista de expresiones. Normalmente, los datos son enviados a la salida estndar (la pantalla), pero, tambin existen otros dispositivos de salida (la impresora, el plotter,...). Se realiza con la palabra Escribir

escribir(<variable>,<expresin_literal>)

Formas: escribir (expresin1) escribir (expresin2) escribir (expresin3)


Ejemplo de Pseudocdigo:

escribir (expresin1, expresin1, expresin3)

Ejemplo 1: Mostrar los datos asignados de la siguiente maneraalgoritmo Entrada_Salida Constante nombre = "Timoteo" edad = 27, hijos = 2 Inicio escribir (nombre, " tiene ", edad, " aos") escribir (nombre, " tiene ", hijos, " hijos") Fin_Programa Por pantalla aparecer:

Fundamentos de Programacin

38

Ejemplo 2: Realizar el pseudocdigo de un programa que permita calcular el rea de un rectngulo. Se debe introducir la base y la altura para poder realizar el clculo.

algoritmo rea Variables Entero: BASE, ALTURA, AREA Inicio Leer (BASE, ALTURA) AREA = BASE * ALTURA Escribir( El rea del rectngulo es , AREA) Fin_Programa

Ejemplo 3:

Realizar el pseudocdigo 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 Programacin

39

Contenidos
Estructuras Secuenciales con uso de casos comerciales Uso de clculos matemticos (use el operador +,-,*,/,raz, exponente, etc) Elaboracin Caso Prctico. Explicacin de uso de porcentajes, uso de promedios aritmticos, armnicos, etc. Propuesta de los trabajos grupales (elaborar en papelotes los pseudocdigos propuestos)

____________________________________________________________________________________

Estructuras Secuenciales
La estructura secuencial es aquella en la que una accin (instruccin) 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 Programacin

40

Ejemplos:
1. Hallar la suma de tres nmeros 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 nmeros 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 Programacin

41

e
4. Mostrar la edad de una persona de acuerdo al ao 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 Programacin

42

7. Programa que pida el precio de un artculo y calcule su valor aplicndole 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 artculos y muestre el total y la media Aritmtica.

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 tringulo rectngulo, 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 Programacin

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 dlares.


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 centmetros

Variables decimal: Cant_Metros,Cant_Centimetros Constante centi=100 INICIO leer (Cant_Metros) Cant_Centimetros= Canti_Metros * centi escribir (Mont_Dolares) FIN

Fundamentos de Programacin

44

EJERCICIOS DE APLICACIN

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 expresin 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 conversin 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 conversin 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 centmetros equivale. 5. Elabore un programa que realice la conversin 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 conversin 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 conversin 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 conversin 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 crculo de radio 5. Modificar el problema anterior para que sea capaz de calcular el rea y la longitud de un crculo de cualquier radio requerido. 10. Escribe un programa que calcule el rea de un crculo de cualquier radio.
L = 2 * pi * R (asignacin del valor de la longitud)

Fundamentos de Programacin

45

11. Escribe un programa que lea una cantidad depositada en un banco y que calcule la cantidad final despus de aplicarle un 20% de inters. 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 cul ser su calificacin final en la materia de Lgica Computacional. Dicha calificacin se compone de tres exmenes parciales cuya ponderacin 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. Disear un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmtica.

16. Realiza un programa que dados el voltaje en voltios y la resistencia en ohmios, nos calcule la intensidad, mediante la aplicacin de esta frmula: intensidad = Voltaje / Resistencia 17. Suponga que un individuo desea invertir su capital en un banco y desea saber cunto dinero ganar despus de un mes si el banco paga a razn de 2% mensual. Realiza un programa que calcule dicha ganancia teniendo como entrada el capital invertido. 18. Un vendedor recibe mensualmente un sueldo base ms un 10% extra por comisin de sus ventas. El vendedor desea saber cunto 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 nmero correspondiente al radio de la circunferencia, visualizando la longitud de la misma y el rea del crculo 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 Programacin

46

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=xy Y=X Escribir (y, x, z) Fin.

Fundamentos de Programacin

47

Temass
Historia acerca del origen del Lenguaje JAVA. Caractersticas. Entornos de Desarrollo Integrado (IDE):JDeveloper, JCreator, NetBeans, Eclipse, etc. Diferencias entre los entornos.JVM: Java Virtual Machine Creacin de Aplicaciones usando la IDE de JDeveloper. Descripcin del Entorno de Trabajo. Comentarios, Separadores e Identificadores (Palabras Clave y Reservadas). Tipos de Datos. Variables Primitivas y Literales (Constantes) Operadores Aritmticos, de Asignacin, Lgicos y Relacionales, de Concatenacin. Crear una Aplicacin usando el contenedor JFrame. Propiedades. Controles Bsicos de JAVA - SWING (JLabel, JTextField, JButton). Conversiones de Datos en Java Estandarizacin de prefijos (lbl, txt, btn) Ingreso y Salida de Datos (getText, setText).

____________________________________________________________________________________

Introduccin al Lenguaje O.O.


Java es un lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems a principio de los aos 90s. 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 pequea 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 tecnologa para programar la siguiente generacin de dispositivos inteligentes, en los que Sun vea un campo nuevo a explorar. Crear un lenguaje de programacin fcil 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 Programacin

48

e
lenguaje C++ ++ - (++ - porque se aadan y eliminaban caractersticas a C++), pero lo abandon para crear un nuevo lenguaje desde cero al que llamo Oak (roble en ingls, segn la versin ms aceptada, por el roble que vea a travs de la ventana de su despacho). El resultado fue un lenguaje que tena similitudes con C, C++ y Objetive C y que no estaba ligado a un tipo de CPU concreta. Mas tarde, se cambiara 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 corra sus primeros programas. Para 1992, el equipo ya haba desarrollado un sistema en un prototipo llamado Star7 (*7), dispositivo parecido a una PDA, cuyo nombre vena de la combinacin de teclas del telfono de la oficina del Proyecto Green que permita a los usuarios responder al telfono desde cualquier lugar. Por su parte, el presidente de la compaa Sun, Scott McNealy, se dio cuenta de forma oportuna y estableci el Proyecto Verde como una subsidiaria de Sun. Despus de mostrar a Scott McNealy y Bill Joy los prototipos de bajo nivel del sistema, continan con el desarrollo, incluyendo sistema operativo, Green OS; el lenguaje Oak, las libreras, alguna aplicacin bsica 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 electrnicos smart y las cajas Set-Up en particular, no eran del todo eficaces. La subsidiaria Proyecto verde fue amortizada por la compaa Sun a mediados de 1994. Afortunadamente, el cese del Proyecto Verde coincidi con el nacimiento del fenmeno mundial WEB. Al examinar las dinmicas de Internet, lo realizado por el ex equipo verde se adecuaba a este nuevo ambiente. Patrick Naughton procedi a la construccin del lenguaje de programacin 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 demostracin 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 prctico dentro del lenguaje Java y demostr que podra proporcionar multiplataforma para que el cdigo pueda ser bajado y corrido del Host del World Wide Web y que de otra forma no son seguros. Una de las caractersticas de HotJava fue su soporte para los "applets", que son las partes de Java que pueden ser cargadas mediante una red de trabajo para despus ejecutarlo localmente y as lograr soluciones dinmicas en computacin acordes al rpido 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 versin alpha de Java, que en ese momento solo corra en Solaris, y el hecho de que Java iba a ser incorporado en Netscape Navigator, el navegador ms utilizado de Internet. Con la segunda alpha de Java en Julio, se aade 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 tecnologas 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 versin 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 Programacin

49

Y como parte de su estrategia de crecimiento mundial y para favorecer la promocin de la nueva tecnologa, Java Soft otorg permisos para otras compaas para que pudieran tener acceso al cdigo fuente y al mismo tiempo mejorar sus navegadores. Tambin les permita crear herramientas de desarrollo para programacin Java y los facultaba para acondicionar mquinas 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 ms 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 estn construyendo Software 100% puro JAVA, por ejemplo el Corel Office que actualmente est en versin Beta. Los nuevos proyectos de Java son co-patrocinados por cientos de millones de dlares en capital disponible de recursos tales como la Fundacin Java, un fondo comn de capital formado el verano pasado por 11 compaas, incluyendo Cisco Systems, IBM, Netscape y Oracle. Hoy en da, puede encontrar la tecnologa Java en redes y dispositivos que comprenden desde Internet y superordenadores cientficos hasta porttiles y telfonos mviles; desde simuladores de mercado en Wall Street hasta juegos de uso domstico y tarjetas de crdito: Java est en todas partes.

Caractersticas de Java
Las caractersticas principales que nos ofrece Java respecto a cualquier otro lenguaje de programacin,

son: Simple Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las caractersticas menos usadas y ms confusas de stos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes ms difundidos, por ello Java se dise para ser parecido a C++ y as facilitar un rpido y fcil aprendizaje.

Orientado a objetos
Java implementa la tecnologa bsica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Soporta las tres caractersticas propias del paradigma de la orientacin a objetos: encapsulacin, herencia y polimorfismo. Las plantillas de objetos son llamadas, clases y sus copias, instancias.

Distribuido
Java se ha construido con extensas capacidades de interconexin TCP/IP. Existen libreras de rutinas para acceder e interactuar con protocolos como http y ftp. Esto permite a los programadores acceder a la informacin a travs de la red con tanta facilidad como a los ficheros locales.

Robusto
Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de ejecucin. La comprobacin de tipos en Java ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Java obliga a la declaracin explcita de mtodos, reduciendo as las posibilidades de error.

Fundamentos de Programacin

50

Seguro
La seguridad en Java tiene dos facetas. En el lenguaje, caractersticas como los punteros o el casting implcito 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 caractersticas del lenguaje con protecciones de sentido comn aplicadas al propio navegador.

Portable
Ms all de la portabilidad bsica por ser de arquitectura independiente, Java implementa otros estndares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y adems, enteros de 32 bits en complemento a 2. Adems, Java construye sus interfaces de usuario a travs de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en entornos Unix, Pc o Mac.

Interpretado
El intrprete Java (sistema run-time) puede ejecutar directamente el cdigo objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los desarrolladores con Java pasarn ms tiempo desarrollando y menos esperando por el ordenador.

Multithreaded
Al ser multithreaded (multihilvanado, en mala traduccin), Java permite muchas actividades simultneas en un programa.

Dinmico
Java se beneficia todo lo posible de la tecnologa orientada a objetos. Java no intenta conectar todos los mdulos que comprenden una aplicacin hasta el tiempo de ejecucin.

Entornos de Desarrollo Integrado


BlueJ: desarrollado como un proyecto de investigacin universitaria, es libre. Eclipse: desarrollado por la Fundacin Eclipse, es libre y de cdigo abierto, IntelliJ IDEA: desarrollado por JetBrains, es comercial. Jbuilder: desarrollado por Borland, es comercial pero tambin existe la versin gratuita. JCreator: desarrollado por Xinox, , es comercial pero tambin existe la versin gratuita. JDeveloper: desarrollado por Oracle Corporation, es gratuito. NetBeans gratuito y de cdigo abierto. Sun Java Studio Enterprise: desarrollado por Sun, es comercial.

Fundamentos de Programacin

51

Java Virtual Machine


Es una aplicacin necesaria para poder visualizar ciertas pginas web que requieren la JVM. La JVM (mquina virtual de Java) es nicamente un aspecto del software de Java, especficamente utilizado para la interaccin en la web. Podrs visualizar pginas 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 /*comentario*/ //comentario /**comentario*/ Uso Se ignoran todos los caracteres entre /* */. Se ignoran todos los caracteres detrs de // hasta el fin de lnea. Lo mismo que /* */ pero se podrn utilizar para documentacin automtica.

Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentacin, colocados inmediatamente antes de una declaracin (de variable o funcin), indican que ese comentario ha de ser colocado en la documentacin que se genera automticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripcin del elemento declarado permitiendo generar una documentacin de nuestras clases escrita al mismo tiempo que se genera el cdigo. En este tipo de comentario para documentacin, se permite la introduccin de algunos tokens o palabras clave, que harn que la informacin que les sigue aparezca de forma diferente al resto en la documentacin.

Separadores
Slo hay un par de secuencias con otros caracteres que pueden aparecer en el cdigo Java; son los separadores simples, que van a definir la forma y funcin del cdigo. Los separadores admitidos en Java son: () - parntesis. Para contener listas de parmetros en la definicin y llamada a mtodos. Tambin 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 automticamente. Tambin se utiliza para definir un bloque de cdigo, para clases, mtodos y mbitos locales. [] - corchetes. Para declarar tipos matriz. Tambin se utiliza cuando se referencian valores de matriz. ; - punto y coma. Separa sentencias. , - coma. Separa identificadores consecutivos en una declaracin de variables. Tambin se utiliza para encadenar sentencias dentro de una sentencia for. . - punto. Para separar nombres de paquete de subpaquetes y clases. Tambin se utiliza para separar una variable o mtodo de una variable de referencia.

Fundamentos de Programacin

52

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 smbolo de dlar ($). Los siguientes caracteres pueden ser letras o dgitos. Se distinguen las maysculas de las minsculas y no hay longitud mxima. Seran identificadores vlidos: 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 tambin como operandos, indican una evaluacin o computacin 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 nmero y no pueden representar elementos fraccionarios. Esto puede ser un buen ejemplo de declaracin de tipos de datos enteros: byte midato1 = 1; short midato2 = 100; int midato3 = 10000; long midato4 = 100000000;

Fundamentos de Programacin

53

e
Decimales: Estos son float y double y pueden almacenar nmeros en coma flotante y con signo, esto quiere decir que nos permiten representar nmeros 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 tamao;

El tipo Caracter: Estos son de tipo char, String, que almacena la representacin de los caracteres (letras o nmeros), un carcter est almacenado en 16 bits, y siguen un estndar que es el Unicoide. String nom; String ape; char letra; El tipo Lgico: 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


Nmeros enteros byte short int long 8-bit complemento a 2 16-bit complemento a 2 32-bit complemento a 2 64-bit complemento a 2 Entero de un Byte Entero corto Entero Entero largo

Descripcin

Nmeros reales
float double

32-bit IEEE 754 64-bit IEEE 754

Coma flotante de precisin simple Coma flotante de precisin doble otros tipos

char boolean

16-bit Caracter true o false

Un slo carcter Un valor booleano (verdadero o falso)

Fundamentos de Programacin

54

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 modificacin 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 Jess;

Variables
En Java, se utiliza anteponiendo el tipo de dato que corresponda int edad, a_Actual; double peso, talla; Tambin 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 Aritmticos
Java soporta varios operadores aritmticos que actan sobre nmeros enteros y nmeros 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 divisin del operando izquierdo entre el derecho

Como se ha indicado anteriormente, el operador ms (+), 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 Programacin

55

> >= < <= == !=

Mayor que Mayor o Igual que Menor que Menor o Igual que Igualdad solo con nmeros Diferencia entre un valor numrico y otro valor numrico

Los operadores relacionales combinados con los operadores condicionales, se utilizan para obtener expresiones ms complejas. Los operadores condicionales que soporta Java son:

&& || !

Conector Y Conector O Niega la expresin (No)

Fundamentos de Programacin

56

Creacin 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 Aplicaciones

Ventana de Componente s

Ventana Structure

Ventana de Mensajes

Ventana de Propiedades

Fundamentos de Programacin

57

Descripcin del Entorno de trabajo

Applications Navigator (Ventana de Aplicacion) Permite crear y visualizar a las aplicaciones en forma gerarquica; toda aplicacin 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 aplicacin.

Fundamentos de Programacin

58

e
Messages Log(Vetana de Mensajes y Depuracion)

Aqu mostraran los errores que ubiecen dentro del cdigo

En el caso que no ubiese errores mostrara esto

Run Manager(Vetana) Aqu se Mostraran todas las aplicaciones que estn ejecutadas

Fundamentos de Programacin

59

Para abrir cada ventana


Podr ir al men ver y podr seleccionar aquella ventana que desea activar.

Pasos para crear una Aplicacin.


Pasos para crear la aplicacin:

1) Crear la Aplicacin: a) Dar click en New Application (ventana de aplicaciones)

Fundamentos de Programacin

60

e
b) Al decir new saldr esta ventana donde se establecer el nombre de la aplicacin (empezara con App_Nombre) y la ruta a guardarse.

Paso 1: Nombre de la Aplicacin

Paso 2: La ruta donde se guardar la Aplicacin 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 Programacin

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 Programacin

62

e
g) crear el Frame: Establecer el nombre del Frame establezca la nomenclatura Frm.

Paso 11:

Hagamos el ejemplo de crear la Aplicacin con los pasos que te indique: 1) Ponle el nombre a tu aplicacin 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 Programacin

63

Aadir 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 creacin de proyecto

Hagamos otro ejemplo de crear el proyecto con los pasos que te indique: 1) 2) 3) 4) 5) Nombre de la Aplicacin AppDemo1 Ponle el nombre a tu Proyecto PrjCaso01(Sigue los dems 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 Programacin

64

e Deber de tomar en cuenta lo siguiente:


recuperar). Cambiar el nombre de la aplicacin Permitir ejecutar los archivos deploy creados Abrir un proyecto existente Permitir cerrar la aplicacin que seleccione Eliminara la aplicacin (en forma lgica es decir ya no se podr

Ejercicio: Realiza la creacin de las dos Aplicaciones en la misma unidad y la misma carpeta de Trabajo

Hay una interrogante cmo hara para solo tener una aplicacin y varios proyectos?

Lo nico que haras es: 1) Crea una aplicacin con los pasos indicados anteriormente. 2) Selecciona la aplicacin y Crea el proyecto con su Clase y Frame Repita esta secuencia las veces que desea crear su aplicacin.

Fundamentos de Programacin

65

e Como por ejemplo:


Click derecho sobre la aplicacin / 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 Programacin

66

Como Guardar una aplicacin creada


solo tiene que darle click al disco(si solo quieres guardar la aplicacin activa) y si deseas guardar todas las aplicaciones deberas de elegir a o ir al menu File (Save / Save All).

Como abrir una aplicacin 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 extensin JWS (donde esta todo el contenido de la aplicacin).

Fundamentos de Programacin

67

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 Presentacin 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 Bsicos de JAVA - SWING (JLabel, JTextField, JButton)


Las etiquetas, junto con los botones y las cajas de seleccin, son uno de los componentes ms bsicos de todo interfaz de usuario..

El ms simple de todos ellos es la etiqueta, que se limita a presentar textos e imgenes en pantalla.

Su nomenclatura es lbl_Nombre

Propiedades esto afectara solo si esta seleccionado el objeto y en la opcin VISUAL

Fundamentos de Programacin

68

e
a. Border.- permite establecer un tipo de borde y un color.

b. Font .- permitir cambiar el tipo de letra, tamao y estilo(negrita y cursiva).

c. Foreground.-permite establecer color de texto. d. Name.- permitir establecer el nombre de objeto. Recuerda que debers 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 Programacin

69

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, tamao y estilo(negrita y cursiva). e. Foreground.-permite establecer color de texto. f. Name.- permitir establecer el nombre de objeto. Recuerda que debers de usar su nomenclatura ejemplo (txtNombre). g. Text.- esta propiedad deber estar en blanco para poner nuevos valores desde la ejecucin 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 Programacin

70

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 carcter 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 lgicos)
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 Carcter: nombre y apellido inicio Leer(nombre,apellido,edad,estatura) Fin_Programa

Paso 2:Ahora pensemos en el diseo. Sabemos que cada lectura sera un JtextField entonces ingresa a JAVA y crea tu aplicacin con su respectivo proyecto(Class y Frame). Y con los controles swing comienza a disear quedando de la siguiente manera tu pantalla

Tendramos 4 textos para leer los datos y 4 etiquetas para ver los mensajes que indicaran que ingresar. Aqu no se realizar nada de cdigo 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 Programacin

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

Tendramos 2 textos para leer las notas y 2 etiquetas para ver los resultados y las dems etiquetas solo reflejaran los ttulos que se muestran. Adems un botn para que nos de los resultados al darle Click. Todos los nombres lo podrs 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 Programacin

72

Fundamentos de Programacin

73

Contenidos
Definir que es una Condicin. Ejemplos de condiciones. Estructuras Selectivas Simples: SI... ENTONCES. Ejemplos de Aplicacin Estructura Selectivas Dobles Si...ENTONCESSINO Estructuras Condicionales: Simples: IF, Dobles: IF ELSE Resolucin de Aplicaciones.

____________________________________________________________________________________

Estructuras Condicionales
Las estructuras condicionales comparan una variable contra otro(s) valor (es), para que en base al resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen tres tipos bsicos, las simples, las dobles y las mltiples.

Que es una Condicin?


Es la comparacin 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 Programacin

74

e
Por lo tanto las respuestas que vamos a obtener sern Verdaderas o Falsas segn la condicin establecida. Tambin debemos de tener en cuenta la tabla lgica. Recordemos: Y V V F F V F V F V F F F V V V F O

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 condicin que un numero este el rango de 0 a 20 como seria la condicin? Si queremos que el numero este en el rango de 18 a 30 y de 40 a 90 como seria la condicin?

Fundamentos de Programacin

75

Tipos de estructuras condicionales Simples: Las estructuras condicionales simples se les conoce como Tomas de decisin. Estas tomas de decisin tienen la siguiente forma: PseudoCodigo

si (<expresin_lgica>) entonces <acciones> fin_si

JAVA: if(Condicin) <Accion>;

if(Condicin) { <Accion 1>; <Accion 2>; }

Cuando en java la condicional tenga una sola accin es opcional las llaves, pero cuando la condicin va a realizar ms de 1 se tendr que poner llave abierta { y llave cerrada }.

Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma: PseudoCodigo

si (<expresin_lgica>) entonces <acciones> sino <acciones> fin_si

Fundamentos de Programacin

76

e
JAVA: Formato 1:

If (Condicin) <Accion>; else <Accion>;

Formato 2:

if(Condicin) { <Accion 1>; <Accion 2>; } else{ <Accion 1>; <Accion 2>;

} Donde:

Si: Indica el comando de comparacin Condicin: Indica la condicin a evaluar Entonces : Precede a las acciones a realizar cuando se cumple la condicin Instruccin(es):Son las acciones a realizar cuando se cumple o no la condicin si no :Precede a las acciones a realizar cuando no se cumple la condicin Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms acciones.

Fundamentos de Programacin

77

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 indicndolo. Expresarlo en Pseudocdigo. variables entero: edad inicio leer(edad)
Es la Condicin

si (edad>=18) escribir(es mayor de edad) sino escribir(no es mayor de edad) fin_si fin_programa Es importante ser ordenado en el cdigo que se escribe!

2. Se pide leer tres notas del alumno, calcular su promedio aritmtico y enviar un mensaje donde diga si el alumno aprob o reprob el curso. Exprese el algoritmo usando Pseudocdigo:

variables decimal: not1, not2, not 3,prom inicio leer(nota1, nota2, nota3) prom= (not1 + not2 + not3) /3 si (prom<=10.4) entonces escriba reprob el curso sino escriba aprob el curso fin-si fin_progama
Es la Condicin

3. Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm enve 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 Pseudocdigo.

Fundamentos de Programacin

78

variables entero: altura inicio leer(altura) si (altura <=150) entonces escribir( persona de altura baja) sino si altura <=170 entonces escribir(persona de altura media) sino si altura>170 entonces escribir( persona alta) fin_si fin_si fin_si fin_prorama Es importante ser ordenado en el cdigo que se escribe!
Es la Condicin

DESARROLLEMOS ALGUNOS CASOS PROPUESTO USANDO JAVA


1. Elabore un programa que lea 3 nmeros enteros positivos y que muestre la

suma, la resta y la multiplicacin de todos.


variables entero: num1,num2,num3,suma,resta,multip inicio leer(num1,num2,num3) si (num1>0 y num2>0 y num3>0 ) suma=num1+num2+num3 resta=num1-num2-num3 multip=num1*num2*num3 escribir(suma,resta,multip) sino escribir(Los nmeros no son positivos) fin-si fin_programa Es importante ser ordenado en el cdigo que se escribe! entonces
Es la Condicin

Fundamentos de Programacin

79

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 nmeros 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 Programacin

80

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 comparacin 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 Programacin

81

e
3. En un hospital existen 3 reas: Urgencias, Pediatra y Traumatologa. El

presupuesto anual del hospital se reparte de la siguiente manera:

rea Urgencias Pediatra Traumatologa

Presupuesto 37% 42% 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 Programacin

82

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 capica variables entero: num,c1,c2 inicio leer(num) si(num>=10 y num<=99) entonces c1=num div 10

Fundamentos de Programacin

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 ao de ingreso. Si el trabajador

tiene ms de 10 aos 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 bsico. Muestre el incremento y el Monto a Cobrar.

Fundamentos de Programacin

84

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 Programacin

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 Programacin

86

EJERCICIOS DE APLICACIN
1. Se evala dos nmeros. Visualiza como resultado el mayor de los nmeros. 2. Se evala cuatro nmeros. Muestre por pantalla el menor de los nmeros. 3. Elabore un programa que lea 2 nmeros enteros positivos y que muestre la suma y la multiplicacin de estos. 4. Elabore un programa que lea 3 nmeros enteros positivos y que muestre la suma, la resta y la multiplicacin de todos. 5. Un alumno desea saber cul ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de tres exmenes. 6. Elabore un programa que calcule la edad exacta de una persona, considere da, mes y ao. 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 tambin la palabra Excelente. 8. Se tiene que evaluar cuatro notas de un alumno, como resultado se visualiza el promedio del alumno junto con su condicin de APROBADO o DESAPROBADO, si esta aprobado y con 13 o ms, 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 adems muestre la nota que no se tomo en cuenta para el resultado. 10. Se debe de ingresa tres nmeros. Muestre los tres nmeros ordenados en forma ascendente. 11. Se evala 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 nmero que est en el rango de 4 a 10. Si el nmero ingresado es par, muestre como resultado el nmero. 13. Se tiene un nmero. Evala si es que est en el rango de -18 a 29 de 90 a 105 en el rango de 140 a 250. Si el nmero es positivo, mostrara el doble del nmero; De no ser positivo el nmero, mostrara la mitad del nmero. 14. Se tiene un nmero. Evala si el nmero est en el rango de -54 a -20 y si el segundo digito es par. Muestre como resultado el doble del nmero y si no la tercera parte. 15. Se ingresa 4 nmeros. Evala si el primero es mayor al segundo nmero y si la suma del tercero con el cuarto es mayor a 167, de ser as muestre como resultado los nmeros ingresados ordenados en forma descendente. 16. Se ingresa 3 nmeros. De ser todos impares, muestre como primer resultado la suma de los tres nmeros y como ltimo resultado muestre el ltimo dgito del valor impreso anteriormente. cubo del nmero, de lo contrario muestre el 16% del

Fundamentos de Programacin

87

e
17. Escriba un algoritmo que dado el nmero 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 mnimo 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 nmeros. Si el tercer nmero es mayor a los dems, se debe de mostrar el promedio de los nmeros ingresados; de lo contrario evaluar si los tres nmeros son impares, si es as, muestre cada uno de los nmeros con un incremento del 89%. 22. Se ingresa un nmero entero. Si el nmero es de tres dgitos positivo muestre dicho nmero 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 calificacin de los alumnos, las calificaciones son notas entre 1 y 20; use los siguientes parmetros: 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, Pediatra y Traumatologa. El presupuesto anual del hospital se reparte de la siguiente manera: rea Urgencias Pediatra Traumatologa Presupuesto 37% 42% 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 Programacin

88

26. En base al valor de dos nmeros 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 nmero ingresado es Par o impar, si es positivo, negativo o Nulo. 28. Determine el tiempo de servicio de acuerdo al ao de ingreso. Si el trabajador tiene menos de 4 aos el tendr un aumento del 15% de su sueldo bsico, en caso contrario tendr un aumento del 12% por cada ao. 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 Bonificacin de 14% de un sueldo si su tiempo de servicio es ms de 3 aos. 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 nmero de 2 cifras y muestre si es capica. 34. Ingrese un nmero de 2 cifras y mustrelo en forma invertida. 35. Determine la suma de las cifras de un nmero que se encuentra entre 10 99 y adems 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 ao 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 dems trabajadores. Supongamos que el nmero de trabajadores es 4 y que su comisin se ver reducida a la mitad si no ha llegado a la media aritmtica de ventas de todos los trabajadores y se multiplicar por 2 si ha llegado o ha superado la media.

Fundamentos de Programacin

89

Contenidos
Estructuras Selectivas Anidadas. Control de Decisin: JcheckBox Mtodo isSelected(). Control de Decision JRadioButton(Custon ButtonGroup). Mtodo add. Mtodo 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 accin.

Por ejemplo un trabajador puede tener todos estos descuentos

Nomenclatura del obejto es

chk_nombre

Fundamentos de Programacin

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 Diseo 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: Text = Name = lblT

Fundamentos de Programacin

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 Programacin

92

JRadioButton
Los Botones de Radio son grupos de botones en los que, por convencin, slo 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 Diseo 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 Programacin

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 diseo 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 Programacin

94

Usando JRADIOBUTTON
Realicemos este ejemplo: usando radios: al elegir la carrera saldr el monto por carrera

Lo primero que debes de realizar es: 1. Disear 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 aadir 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 mtodo 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

Observacin: Al diseo que tienes puedes agregarle un Botn y dar el resultado cada vez que presionemos en el. Para ello selecciona el botn y dale nombre en la propiedad name (btnCalcularMonto), luego en el text ponle Calcular. Presione doble click y codifique lo siguiente:

Fundamentos de Programacin

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 Programacin

96

Fundamentos de Programacin

97

Contenidos
-

Estructuras Selectivas Mltiples Cuando <expresin> sea Evaluacin de valores carcter y numricos Condicionales Mltiples: SWITCH Controles de Opciones: JComboBox Use de mtodos: addItem(), getSelectedIndex(), getSelectedItem().toString()

_________________________________________________________________________________

Mltiples (En caso de)


Las estructuras de comparacin mltiples, es una toma de decisin 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 (<expresin>) sea <lista_de_valores> : <acciones> [sino <acciones>] fin_cuando

Fundamentos de Programacin

98

e
Descripcin: <expresin> <lista_de_valores> que la <expresin>. puede ser cualquier expresin validad. ser uno o ms valores separados por comas de mismo tipo

La estructura verifica si el valor de la expresin 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 evala la siguiente lista. Las acciones de la clusula sino se ejecutar si ningn valor coincide con la <expresin>.

EJEMPLOS:
1. Dado un numero entre 1 y 7 escriba su correspondiente da de la semana as: 1- Lunes 2- Martes 3- Mircoles 4- Jueves 5- Viernes 6- Sbado 7- Domingo Exprese el algoritmo usando Pseudocdigo.

variables entero: dia inicio leer(dia) cuando(dia) sea caso 1: escribir(lunes) caso 2: escribir(martes) caso 3: escribir(mircoles) caso 4: escribir(jueves) caso 5: escribir(viernes) caso 6: escribir(sbado) 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 [ms de 130] 220 Si adems el conductor no utilizara el cinturn de seguridad la multa se incrementara en un 50%. Mostrar el neto a pagar del conductor infractor.

Fundamentos de Programacin

99

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(cinturn=no)entonces incremento=multa*0.50 fin_si if(cinturn=si)entonces incremento=0 fin_si neto_pag=multa+incremento escribir(multa,incremento,neto_Pag) fin_programa

Practiquemos:
Realiza el diseo para cada uno de estos caso.

Fundamentos de Programacin

100

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 edicin 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 carcter. 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 escribir

jbInit y

Fundamentos de Programacin

101

EJEMPLOS DE APLICACIN 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 aplicacin 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 Programacin

102

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 Programacin

103

Contenidos
Implementacin de Aplicaciones usando sintaxis del Lenguaje. Uso de Mtodos de comparacin de caracteres: equalsIgnoreCase(), equals() Uso de la Clase Math (max,min,pow)

____________________________________________________________________________________

La Clase Math
La clase Math representa la librera matemtica de Java. Las funciones que contiene son las de todos los lenguajes, parece que se han metido en una clase solamente a propsito de agrupacin, por eso se encapsulan en Math, y lo mismo sucede con las dems 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 ) Math.min( a,b ) Math.E Math.PI

para int, long, float y double para int, long, float y double para la base exponencial para PI

float max; z = Math.pow( 2,4 ); // eleva el nmero 2 a la cuarta. max = Math.max(45,80 ); // devuelve el numero mayor entre los 2 nmeros 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 Programacin 104

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 funcin al instituto de procedencia del alumno y su categora. CATEGORIA Instituto Nacional Particular A 50% 25% B 40% 20% C 30% 15%

variables Carcter: 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 Programacin

105

e
Montos menos de 50 : descuento 0 Montos entre 50 y 120 : descuento 15% Montos ms 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 dgitos, por lo tanto muestre la quinta parte de dicho numero solo si el numero es par, en caso contrario muestre la raz cuadrada, si el numero no tuviera el rango de dgitos solo deber mostrar el mismo nmero.

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 Programacin

106

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 mnimo debe ser 50 y como mximo 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 Programacin

107

escribir(No hay de Billetes de 50 ) fin_si sino escribir(No tiene el monto requerido) fin_si fin_programa

Fundamentos de Programacin

108

Fundamentos de Programacin

109

Contenidos
Resolucin 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 funcin al instituto de procedencia del alumno y su categora. 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 Programacin

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){ case 0: porcI=0.30 * cuota; break; case 1: porcI=0.15 * cuota; break; } break; } importe=cuota-porcI; lblDsct.setText(""+porcI); lblNeto.setText(""+importe); }

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 categora 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). Una estructura dentro de otra ser Anidada, no olvidemos del break (salto de lnea) y esto se establecer por cada uno de los casos.

Fundamentos de Programacin

111

La Clase Math
La clase Math representa la librera matemtica de Java. Si se importa la clase, se tiene acceso al conjunto de funciones matemticas estndar: Math.abs( x ) 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 para int, long, float y double

Ejemplo 01: Inserte un botn y escriba este cdigo, donde estamos empleado mtodos 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 nmero 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 Programacin

112

Funciones trigonomtrica

En las funciones trigonomtricas 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 funcin 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 Programacin

113

e
Funciones exponencial y logartmica La funcin exponencial exp devuelve el nmero 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 funcin log calcula el logaritmo natural (de base e) de un nmero 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));

Funcin potencia y raz cuadrada Para elevar un nmero 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 raz cuadrada de un nmero, se emplea la funcin sqrt int n=15; System.out.println("La raz cuadrada de " + n + " es " + Math.sqrt(n));

Fundamentos de Programacin

114

e
Aproximacin de un nmero decimal Para expresar un nmero real con un nmero especificado de nmeros decimales empleamos la funcin round. Por ejemplo, para expresar los nmeros x e y con dos decimales escribimos 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 cabra esperar. Fijarse que round devuelve un nmero entero int que es necesario promocionar a double para efectuar la divisin entre 100. Si empleamos la funcin floor en vez de round obtendramos*/

cifras

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 aproximacin del primero es correcta ya que la tercera cifra decimal es 4 inferior a 5. La aproximacin del segundo es incorrecta ya que la tercera cifra decimal es 9 mayor que 5. En la mayor parte de los clculos se cometen errores, por lo que la diferencia entre floor y round no es significativa.

Fundamentos de Programacin

115

e
El mayor y el menor de dos nmeros Para hallar el mayor y el menor de dos nmeros se emplean las funciones min y max que comparan nmeros del mismo tipo.

int i = 7; int j = -9; double x = 72.3543; double y = 0.3498; // para hallar el menor de dos nmero 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 nmeros System.out.println("max(" + i + "," + j + ") es " + Math.max(i,j)); System.out.println("max(" + x + "," + y + ") es " + Math.max(x,y));

Fundamentos de Programacin

116

e
Nmeros 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 nmero 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 nmero 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 nmeros 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 raz cuadrada de " + i + " es " + Math.sqrt(i)); // Programacin en el lenguaje Java 9

// Devuelve un nmero pseudo-aleatorio comprendido entre 0.0 y 1.0 System.out.println("Nmero aleatorio: " + Math.random()); System.out.println("Otro nmero aleatorio: " + Math.random());

Fundamentos de Programacin

117

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 intentalo

Fundamentos de Programacin

118

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 lgico: 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 Programacin

119

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 Programacin

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 Programacin

121

Caso 03: Que muestre un mensaje indicando si un usuario es o no mayor de edad, segn al ao 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 an es menor de edad" fin_si fin_si

FIN

Fundamentos de Programacin

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 an es menor de edad";

lbleea.setText("Tiene "+eea+" aos y "+m); }

private void btnLimpiar_actionPerformed(ActionEvent e) { txtnac.setText(""); lbleea.setText(""); }

Fundamentos de Programacin

123

e
Caso 4 Que admita el ingreso de dos nmeros 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 Programacin

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 Programacin

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 Programacin

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 Programacin

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 reglamentacin: 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 ms 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 Programacin

128

e
private void btnactualizar_actionPerformed(ActionEvent e) { txthijos.setText(""); lblmh.setText(""); lblmm.setText(""); }

Fundamentos de Programacin

129

e
Caso 07: La Empresa CLARITO cobra por el servicio de minutos de llamadas locales de acuerdo a la siguiente escala: Si el nmero 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 Programacin

130

e
private void lblactualizar_actionPerformed(ActionEvent e) { txtcm.setText(""); lbln.setText(""); lbla.setText(""); lblmpi.setText(""); lblmpa.setText(""); lbligv.setText(""); lblmtp.setText(""); }

Fundamentos de Programacin

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 artculos indicados con *, adicionalmente tendrn 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 Programacin

132

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 Programacin

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 Programacin

134

Caso 10: Calcule el sueldo de un empleado a partir de su sueldo bruto. Sobre este sueldo se harn los siguientes descuentos: Descuentos fijos: Jubilacin 13%, Seguro 11%. Descuentos variables: Cooperativa 3% (descuento mximo S/.15.00), Sindicato a 6%. Estos descuentos se harn si el empleado pertenece a la cooperativa o al sindicato. Dependiendo de los aos de servicio el empleado recibir una bonificacin especial no afecta a descuento, de acuerdo al siguiente cuadro: AOS DE SERVICIO BONIFICACION (%)

05 15.0 6 10 18.0 11 - 15 20.0 Ms de 15 25.0 Estos porcentajes se aplicaran sobre el sueldo bruto y en ningn caso sobrepasaran los S/. 500.00. Los empleados pueden ser de 3 categoras (A, B, C). Los de categora A recibirn la bonificacin calculada, los de la categora B recibirn la mitad y los de la categora C recibirn la cuarta parte. Al final se presentara lo siguiente: SUELDO BRUTO TOTAL DESCUENTOS : BONIFICACION SUELDO NETO : S/. : : S/. S/. S/.

Fundamentos de Programacin

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 Programacin

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 Programacin

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 Programacin

138

e
Caso 11: Ingresar 5 numeros y mostrar el mayor, menor y promedio de estos. Realice el diseo

// 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 nmero 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 nmero 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 Programacin

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 diseo

// 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 Programacin

140

EJERCICIOS DE APLICACIN

1. Que admita el ingreso de 3 nmeros, e imprima cul de ellos son los 2 primeros mayores. 2. Que admita el ingreso de 3 nmeros, e imprima cul de ellos es mayor as como el promedio de los dos mayores. 3. Que admita el ingreso de 3 nmeros, 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 nmeros. 4. PC: Que admita el ingreso de un registro de fecha, en el formato da, mes, ao, e imprima si este es o no correcto. Considere aos 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 nmeros corresponden a das de la semana segn: 0 Domingo, 1 Lunes, 2 Marte s Su programa deber mostrar literalmente el nombre del da de la semana al que corresponde el nmero ingresado. 6. PC: Que acepte una fecha bajo el formato que se indica, imprimiendo esta en forma numrica 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 bonificacin dependiendo de su estado civil y del nmero de hijos, segn: ESTADO CIVIL PORCENTAJE Casado 15 Viudo 17 Soltero 8 Adicionalmente se le abonara el 1.5% por cada hijo con un mximo 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 Programacin. Imprimir el promedio si se anula la nota ms baja. 10. PC: Que permita ingresar los nombres y precios de 3 productos diferentes de una farmacia. Imprimir el nombre del producto ms barato y el promedio de los tres.

Fundamentos de Programacin

141

e
11. PC: Que muestre le neto a pagar por un DVD sabiendo que la tienda se encuentra en realizacin ofreciendo los siguientes descuentos: MARCA SAMSUNG PANASONIC LG SONY 19 12 14 12 13 21 13 12 14 15

Tome usted en cuenta las siguientes consideraciones: El precio de lista a ingresar esta en dlares, debiendo mostrar el neto en dlares 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 segn: Adicionalmente se deber mostrar junto al promedio la observacin 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 recuperacin, 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 automtico. 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 segn: 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 ngeles Carlos Florin Jess Escobar Mara Lpez Gino Garca Manuel PARTIDO UCGV: Unidos Conseguiremos Grandes Victorias PALA: Patronato de Amigas de Lima Antigua ASU: Asociacin de Santos Unidos MOMIA: Movimiento de Mimos Austeros CUERO: Central Unitaria de Estudiantes de La Romana

Mostrar el candidato triunfador y con cuantos votos.

Fundamentos de Programacin

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 bonificacin 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 ms CATEGORIA A-B C-D OTROS Porcentaje de(aos) bonificacin 17% 21% 29% 52% Porcentaje De bonificacin 11% 22% 33%

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 nmero 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 kilmetro, de lo contrario se cobrara el monto bsico que es igual a S/. 25.00 La carga puede ser frgil o no frgil. Solo si la carga es frgil 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 nmero de viajes. En ningn 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 debern 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 ms 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 nmeros 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 (Niez, 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 Programacin

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 ningn 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 ms PRECIO * LITRO 0.894 1.244 1.737 2.685 3.362

Una pensin bsica 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 ms de 700 unidades recibir una bonificacin de acuerdo a su categora, 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 ningn caso el descuento por seguro ser mayor a S/. 20.00. Al final presentar el sueldo neto, cada uno de los descuentos y la bonificacin. Los resultados se mostraran con dos decimales. 25. PC: Que calcule el monto mensual a pagar por un servicio de atencin medica. El policlnico brinda atencin de salud solo a sus asegurados, los cuales se dividen en cuatro categoras, cada una con una tarifa bsica que se paga mensualmente: CATEGORA TARIFA (S/.) POLICLNICO DOMICILIO A 100 10 3 B 80 7 2 C 60 5 1 D 40 3 Si el asegurado asiste a ms consultas que las indicadas en el cuadro anterior deber pagar por consulta adicional: S/. 15.00 por consulta en el policlnico y S/. 20.00 por consulta a domicilio. Si el asegurado es mayor a 75 aos, recibir el siguiente descuento respecto al total segn su categora:

Fundamentos de Programacin

144

e
CATEGORA DESCUENTO 30 % 25 %

A, B C, D Se deber mostrar el monto total a pagar.

26. PC: Que calcule el monto a pagar por una licencia municipal. El monto de la licencia depender de la zona donde se encuentra el negocio, el rea que ocupa y el giro de este. De acuerdo a la ubicacin el monto de la licencia por metro cuadrado ser el que se indica en el siguiente cuadro: ZONA UBICACIN COMERCIAL PRINCIPAL LATERAL ($/M2) ($/M2) ($/M2) Miraflores (M) 15 13 10 San Isidro (S) 12 10 8 Lince (L) 10 9 6 Jess Maria (J) 14 12 10 De acuerdo al giro del negocio se incrementara el monto en los siguientes porcentajes: GIRO Abarrotes (A) Vestido y Calzado (V) Electrodomsticos (E) Alimentos y Bebidas (B) --15 20 5 INCREMENTO (%)

27. PC: Que calcule el monto por impuesto predial. El impuesto depender del rea que ocupa la casa (Ingresado por teclado), de los aos de construccin y del material de construccin. Para calcular el impuesto debe considerarse el siguiente cuadro: AOS DE CONSTRUCCIN 0-5 6 10 11 15 16 a ms IMPUESTO ($/M2) 2.00 1.20 0.85 0.25

De acuerdo al material de construccin el impuesto resultante aumentara en los porcentajes indicados:

MATERIAL DE CONSTRUCCIN 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 bsicas, las cuales se indican en el siguiente cuadro: DESTINO TARIFA ($) Ica Arequipa Chimbote Trujillo 100.00 450.00 300.00 350.00

Fundamentos de Programacin

145

e
El servicio se realiza por va terrestre. El servicio se brinda a personas naturales o empresas Las tarifas pueden variar de acuerdo a la modalidad del servicio incrementndose la tarifa bsica de acuerdo al siguiente cuadro: MODALIDAD Servicio Natural DESTINO Ica Arequipa Chimbote Trujillo Ica Chimbote 0 9 10 13 3 7 INCREMENTO (%)

Empresa

Si el cliente es una persona natural las tarifas bsicas tendrn otro incremento adicional de 5% por seguro. Los montos por el servicio se mostraran en soles y dlares.

Fundamentos de Programacin

146

Fundamentos de Programacin

147

Contenidos
Estructuras de Repeticin Concepto de Bucle: bucle finito Elementos de un Bucle: Contadores, Acumuladores, Banderas Tipos de estructura de repeticin Estructura de Repeticin Mientras

____________________________________________________________________________________

Estructura de Repeticin
Concepto de Bucle
En programacin, un bucle es un tipo de estructura de control que permite repetir una o ms sentencias mltiples veces. Todos los bucles se ejecutan mientras se cumpla una determinada condicin, mientras esa condicin sea verdadera, el bucle seguir ejecutndose. En la mayora de los lenguajes de programacin, los bucles tambin pueden "escaparse" o "romperse", a pesar de que la condicin siga siendo verdadera. Es otra forma de salir de la ejecucin de un bucle. El uso de este tipo de funciones de escape, es considerado impropia e innecesaria por los programadores ms puristas, pues siempre se puede salir de un bucle utilizando la condicin. En el caso de que salir sea complicado o imposible, significa que se eligi mal el tipo de bucle. Desde un punto de vista prctico, muchas veces es ms fcil emplear alguna funcin de escape del bucle. Si hay algn error en el cdigo, el bucle podra ejecutarse una y otra vez, entrando en un bucle infinito.

Fundamentos de Programacin

148

En programacin, un bucle es una sentencia que se repite varias veces bajo unas condiciones. Se utiliza para repetir sin tener que repetir el mismo cdigo. Esto permite ahorro de tiempo, menor tamao de programa, mayor claridad y facilita las modificaciones.

Bucle infinito se considera un error de programacin, a menos que ese sea el resultado
esperado por el programador (generalmente usado en programas malignos/molestos, para que se repita una accin una y otra vez).

Elementos de un Bucle
a) Contadores.- Un elemento cuyo valor puede incrementar o disminuir en un valor constante en cada iteracin de un bucle, y se utiliza para controlar la condicin 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 nmero de veces que es necesario repetir una accin (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. Tambin en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debindose inicializar con el valor 1.

Acu= Acu + Contador

Acu= Acu * Contador

Acu= Acu + Valor Ingresado

Fundamentos de Programacin

149

e
c) Banderas (Interruptor flag).- Es una variable que sirve como indicador de una determinada informacin 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 instruccin alternativa qu accin realizar. Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.

1. Tipos de estructura de Control de Repeticin Entre ellas tenemos:


Estructura de Repeticin Mientras En esta estructura, de entrada se evala una condicin. En caso de que el resultado de tal evaluacin sea true, se ejecuta un bloque de instrucciones, en el cual debe existir una instruccin que modifique la condicin. De no existir esa instruccin, se ejecutar un ciclo infinito. Si el resultado de la evaluacin es false, el bloque de instrucciones no se ejecuta y finaliza la ejecucin 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 Programacin

150

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 fin_mientras fin_programa


Es la variacin del contador para poder cumplir con la condicin del bucle.

Caso 2: Muestre la serie 50,47,44,41,.,3


variables entero: c inicio c=50 mientras(c>=3) escribir(c) c=c-3 fin_mientras fin_programa
Es la variacin del contador para poder cumplir con la condicin del bucle.

Fundamentos de Programacin

151

Caso 3: Muestre la Serie 4,8,16,32,.,450

variables entero: c inicio c=4 mientras(c<=450) escribir(c) c=c*2 fin_mientras fin_programa


Es la variacin del contador para poder cumplir con la condicin del bucle.

Caso 4: Muestre la serie : 2,22,222,2222,22222

variables entero: c inicio c=2 mientras(c<=22222) escribir(c) c=c*10+2 fin_mientras fin_programa


Es la variacin del contador para poder cumplir con la condicin del bucle.

Caso 5: Mostrar 50 Veces la palabra Programacion


variables entero: c inicio c=1 mientras(c<=50) escribir(c,.- Programacin) c=c+1 fin_mientras fin_programa Fundamentos de Programacin
Es la variacin del contador para poder cumplir con la condicin del bucle.

152

e Caso 6: Muestre la Serie : 80,70,60,50,,0

variables entero: c inicio c=80 mientras(c>=0) escribir(c) c=c-10 fin_mientras fin_programa


Es la variacin del contador para poder cumplir con la condicin del bucle.

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 x=x+1 fin_mientras fin_programa
Es la variacin del contador para poder cumplir con la condicin del bucle. Puede haber N Contadores.

Fundamentos de Programacin

153

Uso de la Estructura while en Java.


El programa se ejecuta siguiendo estos pasos: (1) Se evala la expresin lgica. (2) Si la expresin 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 ms de una Accin.

int c=9,x=1; while(c<=650){ modlista.addElement(c); c=c+x; x=x+1; }

Fundamentos de Programacin

154

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 mltiples lneas que permite la presentacin de texto, que puede ser editable o de slo lectura. Los mtodos que podemos ir usando son: setText.- cuando solo se desea imprimir una lnea o limpiar todo el texto. append.- cuando se quiera agregar mltiples lneas dentro del texto.

Cuando se use un JTextArea no es necesario utilizar un Custom debido a que su mtodo append permite reflejar los datos introducidos, ahora lo que se puede realizar es manipular salto de lnea y dar espacio entre un carcter y otro. \n permite dar un salto de lnea \t permite establecer un espacio entre uno y otro

Como por Ejemplo:

JList .- Este control permite agregar datos en forma lineal, es un poco ms difcil de manejar pero nos permite hacer cosas ms interesantes que el JComboBox. Tambin veremos cmo utilizar algunas otras clases que nos van a permitir manejar un JList de una manera ms eficiente por ejemplo para permitir que crezca de manera dinmica.

Fundamentos de Programacin

155

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 aplicacin.(Clase y Frame) 2do paso: en el Frame insertar un JScrollPane que se encuentra en el Containers. Quedando de esta forma

Fundamentos de Programacin

156

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 habamos creado.
No te olvides de haber seleccionado al jList.

Elige el modal que corresponde al JList Seleccionado.

Fundamentos de Programacin

157

Mtodos 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 segn el orden

modLstNotas.remove(orden);
clear.- Borrar todo los datos de la lista. modLstNotas.clear; setElementAt(objeto,orden).- asigna un dato a una posicin establecida

modLstNotas.setElementAt(txtN1.getText(),orden);
getElementAt(orden).- permite obtener el dato de acuerdo a la posicin.

lblResultado.setText(""+ModLstNotas.getElementAt(orden));

Fundamentos de Programacin

158

Fundamentos de Programacin

159

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 cdigo Java


En la clase anterior aprendimos a realizar series utilizando el pseudocdigo y ahora esos ejemplos los pasaremos a JAVA. Qu te parece si abres el programa y creas una aplicacin y realizas esta ventana.

JList

JTextArea

Fundamentos de Programacin

160

e
Disea lo siguiente: 1. Inserta un botn y ponle el nombre: btnSerie1 2. Inserta dos JScrollPane dibjelo segn la dimensin 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 botn y codifiquemos esto.

private void btnS_actionPerformed(ActionEvent e) { int c=3; while(c<=30){ ModLstN.addElement(c); txt1.append(c+"\n"); c=c+3; } // Escribe dentro de la lista // Escribe dentro del area.

Esto es solo una demostracin, t solo puedes utilizar a cualquiera de los dos para poder mostrar.

Fundamentos de Programacin

161

e
Caso 2: 50,47,44,41,.,3 private void btnS_actionPerformed(ActionEvent e) { int c=50; while(c>=3){ ModLstN.addElement(c); c=c-3; } } // Escribe dentro de la lista

Caso 5: Mostrar 50 Veces la palabra SISEver

private void btnS_actionPerformed(ActionEvent e) { int c=1; while(c<=50){ ModLstN.addElement(c+".- SISE...ver"); c=c+1; } }

Fundamentos de Programacin

162

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 Programacin

163

Mientras con ingreso de datos


Significa que el bucle permitir controlar el total de datos que deseemos ingresar. Adems 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 Programacin

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, Brea o San Miguel se ingresaron a la lista.

variables caracter: distrito entero: cl,cb,cs,cd inicio cd=1 mientras(cd<=15) leer(distrito) escribir(distrito) si(distrito=Lince)entonces cl=cl+1 fin_si si(distrito=Brea)entonces cb=cb+1 fin_si si(distrito=San Miguel)entonces cs=cs+1 fin_si cd=cd+1

Recuerda:

Cuando necesites saber cantidades de datos debers de usar un contador y a una condicin. El contador ser

C=C+1

fin_mientras escribir(Cantidad de Distritos de Lince son : ,cl) escribir(Cantidad de Distritos de Brea son : ,cb) escribir(Cantidad de Distritos de San Miguel son : ,cs) fin_programa

Fundamentos de Programacin

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 Programacin

166

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 Programacin

167

La clase JOptionPane (parte I)


Es simplemente un contenedor que puede crear automticamente un JDialog y se aade a s mismo al panel de contenido de JDialog, permitiendo que se puedan crear muchos dilogos.

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 Programacin

168

double se usara de la siguiente manera

Sueldo=Double.parseDouble(JOptionPane.showInputDialog(Ingresar el Sueldo));

Ejemplos usando el cdigo Java:


En la clase anterior aprendimos a realizar series e ingreso de datos utilizando el pseudocdigo. Ahora aprenderemos a ingresar datos en el lenguaje JAVA. Qu te parece si abres el programa y creas una aplicacin y realizas esta ventana.

Aqu utilizaremos la clase JOptionPane para realizar el ingreso de datos con showInputDialog

Fundamentos de Programacin

169

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 Programacin

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 Programacin

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 Diseemos 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 Programacin

172

Fundamentos de Programacin

173

Contenidos
Elaboracin del plan de Prueba Estructura de Repeticin 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 condicin determinada que se comprueba al final del bucle, esto permite que la iteracin se ejecute al menos una vez antes de que la condicin sea evaluada.

Estructura Repetir

repetir <acciones> hasta_que (<expresin_lgica>)

do{ <acciones> }while (<expresin_lgica>)


Fundamentos de Programacin 174

e
Caso 01: Escriba un algoritmo que lea del teclado un nmero entero y que compruebe si es menor que 5. Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Finalmente debe escribir por pantalla el valor ledo.

variables entero: num inicio escribir(Teclee un nmero menor que 5) repetir leer num hasta_que(num >= 5) escribir(El nmero ledo 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 Programacin

175

e
Caso 02: Modifique el algoritmo del caso 1 para que, en vez de comprobar que el nmero es menor que 5, compruebe que se encuentre en el rango (5,15).

variables entero: num inicio escribir(Teclee un nmero entre 5 y 15 (no incluidos)) repetir leer num hasta_que(num <= 5 O num >= 15) escribir(El nmero ledo 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 Programacin

176

e
Caso 03: Modifique el algoritmo del caso 2 para que cuente las veces que ha ledo un nmero que no est incluido en el rango y escriba el resultado por pantalla.

variables entero: num, veces inicio escribir(Teclee un nmero entre 5 y 15 ) veces 1 repetir leer num veces = veces + 1 hasta_que(num <= 5 O num >= 15) escribir(El nmero ledo es: , num) escribir(La Cantidad de Numeros ingresados fueron : ,veces ) fin

Fundamentos de Programacin

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 pseudocdigo que calcule e imprima la suma de los n primeros nmeros 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 Programacin

178

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 Programacin

179

La clase JOptionPane (parte II)


Tambin se podr usar para establecer mensajes de confirmacin 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 segn 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 Programacin

180

Fundamentos de Programacin

181

Contenidos
Estructura de Repeticin 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 cdigo dependiendo de un contador, establecer el valor inicial y el valor final.

desde(<variable> = <valor_inicial> hasta <valor_final> , [incremento ]) <acciones> fin_desde

Definicin:

<variable> .- Puede ser cualquier variable en la que se pueda incrementar su valor,


es decir todas las numricas. <valor_inicial> Es una expresin con el primer valor que toma la variable del bucle. Debe ser del mismo tipo que la variable del bucle. <valor_final> Es una expresin 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(lase bien entero, o sea que tcnicamente podemos decrementar).

Fundamentos de Programacin

182

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 cuntas veces se iterar el mismo, lo cual muchas veces puede redundar en una optimizacin del cdigo por parte de los compiladores. Las condicionales constituyen junto con los bucles los pilares de la programacin estructurada, y su uso es una evolucin de una sentencia de lenguaje ensamblador que ejecutaba la siguiente lnea o no en funcin del valor de una condicin.

El bucle DESDE se ha convertido en el bucle ms ampliamente utilizado en la programacin, ya que con la evolucin de los lenguajes la mayora de las condiciones de fin puede determinarse con una funcin. Un ejemplo claro es el reemplazo del cdigo de recorrido de una tabla

En JAVA for(expresin inicial; expresin 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 nmeros son:,suma) fin_programa

Fundamentos de Programacin

183

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 nmeros es :"+suma); }

Caso 02: Imprimir la suma de los primeros 1250 nmeros enteros

Fundamentos de Programacin

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 nmeros 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 Programacin

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 nmeros enteros y producir: La suma de los nmeros ledos El promedio de los nmeros El mayor y el menor nmero 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 Programacin

186

e
escribir ("La suma de los nmeros: ",suma) escribir(Promedio de los nmeros: ,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 nmeros: "+suma); lblprom.setText("Promedio de los nmeros: "+prom_num); lblpMa.setText("EL numero Mayor es: "+Aux_mayor); lblpme.setText("EL numero Menor es: "+Aux_menor); }

Fundamentos de Programacin

187

La clase JOptionPane (parte III)


Tambin 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: //ttulo e icono por defecto JOptionPane.showMessageDialog(null,"Texto del mensaje."); //ttulo personalizado, icono de pregunta JOptionPane.showMessageDialog(null,"Texto del mensaje.","Ttulo del marco o ventana", JOptionPane.QUESTION_MESSAGE); //ttulo personalizado, icono de informacin JOptionPane.showMessageDialog(null,"Texto del mensaje.","Ttulo del marco o ventana", JOptionPane.INFORMATION_MESSAGE); //ttulo personalizado, icono de aviso JOptionPane.showMessageDialog(null,"Texto del mensaje.","Ttulo del marco o ventana", JOptionPane.WARNING_MESSAGE); //ttulo personalizado, icono de error JOptionPane.showMessageDialog(null,"Texto del mensaje.","Ttulo del marco o ventana", JOptionPane.ERROR_MESSAGE); //ttulo personalizado, sin icono JOptionPane.showMessageDialog(null,"Texto del mensaje.","Ttulo del marco o ventana ", JOptionPane.PLAIN_MESSAGE);

Saca el mensaje centrado en un componente padre. Si ponemos this te centra en la barra de ttulo.

Fundamentos de Programacin

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,"Anlisis de resultados del examen",JOptionPane.INFORMATION_MESSAGE );

Fundamentos de Programacin

189

e
Caso 01: Modifique el algoritmo del caso 3 para que se realicen 10 lecturas del teclado como mximo. variables entero: num, veces inicio escribir(Teclee un nmero entre 5 y 15 ) veces 1 repetir leer num veces = veces + 1 hasta_que(!(num>=5 & num<=15) & !(veces==10)) escribir(El nmero ledo es: , num) si (veces=10) entonces escribir(Completo con los intentos) fin_si fin_programa

Fundamentos de Programacin

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 Programacin

191

Contenidos
Estructuras Anidadas. Ejemplos con Iterativas. Ejercicios de Aplicacin.

____________________________________________________________________________________

Estructura Anidadas
Puede anidar una estructura dentro de otra estructura, y por tanto guardar juntos elementos asociados. Las estructuras de control bsicas pueden anidarse, es decir pueden ponerse una dentro de otra. En los ciclos anidados, al entrar a una estructura de repeticin, dentro de ella se encuentra otra. La ms interna se termina de realizar y se contina con la externa hasta que la condicin 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 Programacin

192

Bucle A Bucle B

Fin B Fin A

Bucle A Bucle B Bucle C

Fin C Fin B Fin A

Fundamentos de Programacin

193

e
EJEMPLOS 1. Mostrar las combinaciones de siguiente Serie: 00,01,02,03,.0n,10,11,12,131n,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 Programacin

194

2. Mostrar la Serie de acuerdo al nmero 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 Programacin

195

3. Mostrar la Serie de acuerdo al nmero 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 Programacin

196

EJERCICIOS DE APLICACIN
1. Escriba un programa que muestre los nmeros del 15 al 1 2. Escriba un programa que pida N nmeros y nos diga cul es el mayor y cul es el menor y la posicin en que fueron ledos 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 tringulo issceles de 10 filas, como se muestra a continuacin: * ** *** **** ***** ****** ******* ******** ********* 6. Ingresar un nmero par y mostrar sus divisores; el nmero par debe ser positivo. 7. Dado dos nmeros enteros a y b, imprimir su Mximo Comn Divisor. El MCD es el mayor valor que divide exactamente a ambos nmeros. 8. Contar cuantos nmeros mltiplos de 3, 7 y 9 existen entre 7 y 1000. (**) 9. Realice un programa que lea N nmeros de 6 dgitos y calcule el promedio de slo aquellos nmeros que sean capicas (nmeros palndromas).

10. Tome en consideracin la siguiente definicin: Un palndromo es una palabra, nmero o frase que se lee igual hacia adelante que hacia atrs. Si se trata de un nmero, se llama capica. 11. Realice un programa que calcule el valor de la siguiente expresin:

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 informacin del censo para una persona: a) Nmero de censo b) Sexo c) Edad d) Estado civil (a. Soltero, b. Casado c. Viudo d. Divorciado)

Fundamentos de Programacin

197

e
14. Elabore un programa que lea secuencias de datos de personas censadas e indique el nmero de personas que son mujeres solteras entre 16 y 21 aos. 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 vlida puede suministrarse incluso como primer valor ledo.

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 trminos) f) g) h) i) j) k) l) 56,53,50,47(25 trminos) 1,2,3,4,5, 1,2,3,4,5, 1,2,3(60 trminos) 1,2,3,4,5, 1,2,3,4,5, 1,2,3(47 trminos) 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 5,6,8,11,15,20,26,33.(22 trminos) 1,1,2,3,5,8,13,21,34.(31 trminos) 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 nmeros que tengan por lo menos un 6)

p) S= 2+ 5+ 7+ 10+ 12+ 15+ 17+ .... +1800.

18. Consistencia el ingreso de 4 nmeros. Que el primer nmero sea mayor al segundo, que el segundo mayor al tercero y el tercero sea mayor al doble del cuarto nmero. 19. Consistencia el ingreso de 3 nmeros. Que el primer nmero sea mayor al doble del segundo nmero; que el segundo nmero sea menor al tercer nmero y que el tercer nmero sea positivo mayor a 300.

Fundamentos de Programacin

198

e
20. Consistencia el ingreso del nombre de un distrito, tomando en cuenta que los distritos vlidos 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 vlidos 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, adems de la suma de estos en la siguiente serie:

3 S= 4 +

5 + 7

7 + 10

9 + 13

Considere que se sumaran 35 elementos nicamente. 23. Para encontrar el mximo comn divisor de dos nmeros, 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 nmeros ser el ltimo divisor obtenido. 24. PC: Que permita obtener a un alumno su promedio final en el curso de algortmica, este se calcula segn:

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 Programacin

199

e 25. PC: Que muestre la estadstica de las notas de los alumnos de un aula sabiendo que el promedio mnimo 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 nmeros capicas mayores que 100. 27. PC: Que ingrese un nmero y muestre un mensaje indicando si es primo o no. 28. PC: Que muestre por lo menos 5 nmeros perfectos. Los primeros nmeros perfectos son: 6, 28, 496, 8128, 33550336, 8589869056. As, 6 es un nmero 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 nmeros 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 trminos de la serie de Fibonacci. 31. PC: Que calcule el factorial de un nmero n: n ! =1 * 2 * 3 * 4 * . n 32. PC: Que evale: e
x

= 1 + x0 + x1 + x2 + x3 + x4 + xn 2 3 4 5 n

Considere que x y n sern ingresados por el usuario, donde n es positiva y entera.

33. PC: Que muestre los elementos del siguiente triangulo para N Lneas:

Fundamentos de Programacin

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 1 1 1 1 2 3 2 2 4 1 1 3 2 1

n Lneas:

2 3

35. PC: Que desarrolle la nmina para una compaa 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 impresin 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 numrico, 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 cuntos alumnos tienen estaturas menores a 1.55 metros; como segundo resultado indique cuntos tiene estaturas entre 1.65 y 1.80 metros. 38. Se ingresa un nmero entero. Si el nmero es mayor a uno se debe de dividir el nmero 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 cuntas veces resulto 0 (CERO) dicha operacin y muestre como resultado final este valor. 39. PC: Que permita ingresar el monto comprado en una ferretera e imprima el nmero mnimo de billetes y monedas en actual circulacin necesarios para la cancelacin. 40. PC: Que muestre el reporte de pagos que realizara un usuario a una prestamista sabiendo que los prstamos se realizan bajo las siguientes condiciones: El monto mnimo que se otorga en prstamo es US$2500. Los pagos se realizaran en forma mensual, amortizando por cada vez un 20% del saldo. Se cancelara adems un 5% mensual por concepto de inters, respecto al saldo. Fundamentos de Programacin 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 2400.00 1920.00 1536.00 1228.00 983.04 786.43

INTERES 600.00 480.00 384.00 307.20 245.76 196.61

TOTAL 3000.00 2400.00 1920.00 1536.00 1228.80 983.04

SALDO 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 pas 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: Cuntos son de PER con edades mayores a 22 aos, con un peso mayor a 70 y menor a 91. Cuntos son de COLOMBIA con ms de 30 goles anotados y con pesos menores a 68 kilos. Cuntos son casados, que hallan anotado menos de 15 goles y que sean de PER, COLOMBIA BRASIL. Cuntos 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 nmeros. Cada vez que se ingrese un nuevo nmero muestre la suma de sus dgitos y al trmino de los ingresos muestre los siguientes resultados: Cuntos nmeros tuvieron 6 9 dgitos. Cuntos nmeros fueron pares de 4 5 dgitos y su ltimo dgito fue mayor a 5. Cuntos nmeros fueron mayores a 100 pero menores a 200 y a su vez impar. Cuntos nmeros fueron mayor a 5 y a su vez fueron nmeros primos. Cuntos nmeros fueron pares negativos en el rango de -200 a -8. 43. Imprimir por pantalla los nmeros desde el 40 hasta el 687, solo aquellos que sean divisibles de 6 y de 9 a la vez. Fundamentos de Programacin 202

Fundamentos de Programacin

203

Contenidos
Qu es un Mtodo? Ventajas en usar Mtodos Definir los tipos de Mtodos (Procedimientos Funciones) Procedimiento: Definicin, Sintaxis, Parmetros - void mbito de Variables Globales y Locales. Invocacin de Procedimientos. Ejercicios de Aplicacin

____________________________________________________________________________________

Programacin modular
La programacin modular es un modelo de programacin que consiste en dividir un programa en mdulos o subprogramas con el fin de hacerlo ms legible y manejable. Se presenta histricamente como una evolucin de la programacin estructurada para solucionar problemas de programacin ms grandes y complejos de lo que sta puede resolver. Al aplicar la programacin modular, un problema complejo debe ser dividido en varios subproblemas ms simples, y estos a su vez en otros subproblemas ms simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fcilmente con algn lenguaje de programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers anlisis descendente (Top-Down). Un mdulo 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 mdulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un mdulo necesite de otro, puede comunicarse con ste mediante una interfaz de comunicacin que tambin 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 prctica es comn representarlos con procedimientos y funciones. Adicionalmente, tambin pueden considerarse mdulos las libreras que pueden incluirse en un programa o, en programacin orientada a objetos, la implementacin de un tipo de dato abstracto.

Fundamentos de Programacin

204

e Ventajas de la Programacin Modular:


Como los mdulos son independientes, el desarrollo de un programa se puede efectuar con mayor facilidad, ya que cada mdulo se puede crear aisladamente y varios programadores podrn trabajar simultneamente en la confeccin de un algoritmo, repartindose las distintas partes del mismo. Se podr modificar un mdulo sin afectar a los dems Las tareas, subalgoritmos, slo se escribirn una vez, aunque se necesiten en distintas ocasiones a lo largo del algoritmo. El uso de mdulos facilita la proyeccin y la comprensin de la lgica subyacente para el programador y el usuario. Aumenta la facilidad de depuracin y bsqueda de errores en un programa ya que stos se pueden aislar fcilmente. El mantenimiento y la modificacin de la programacin se facilitan. Los mdulos reciben diferentes nombres: - Funciones en C, C++ - Subrutinas en Basic - Procedimientos y funciones en Pascal - Subrutinas en Fortran - Secciones en Cobol y - Mtodos en Java

Cuestiones generales
Tiempo de vida de los datos Segn 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 funcin. Conocidas tambin como variables publicas en java. Locales: las variables son creadas cuando el programa llega a la funcin o procedimiento en la que estn definidas. Al finalizar la funcin 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 mdulo en que ha sido declarada. Dos variables locales pueden tener el mismo nombre siempre que estn declaradas en funciones o procedimientos diferentes.

Fundamentos de Programacin

205

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, mdulos que forman parte de un programa y realizan una tarea especfica. Un procedimiento puede tener sus propias variables que se declaran en la seccin 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 slo se pueden usar en el cuerpo del procedimiento y no en el cuerpo principal del programa. Declaracin

procedimiento <nombre_procedimiento>([<lista_parmetros >]) [Variables locales] inicio fin_procedimiento

Fundamentos de Programacin

206

e
Definicin <nombre_procedimiento> Debe ser un identificador vlido. <lista_parmetros_formales> Son uno o ms grupos de parmetros separados por punto y coma. Cada grupo de argumentos se define de la siguiente forma:

{E | E/S} <tipo_de_dato> : <lista_de_parmetros>

E indica que el paso de parmetros se realiza por valor. E/S indica que el paso de parmetros se realiza por referencia. <tipo_de_dato> es un tipo de dato estndar o definido previamente por el usuario. <lista_de_parmetros> es uno o ms identificadores vlidos separados por comas.

Llamada a procedimientos <nombre_procedimiento>([<lista_parmetros>])

La lista de parmetros actuales es una o varias variables o expresiones separadas por comas que deben coincidir en nmero, orden y tipo con la lista de parmetros formales de la declaracin.

Crear los siguientes mdulos:


1) Que muestre le sueldo de un empleado de acuerdo a la cantidad y costo por hora. Procedimiento 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

Sueldo

Fundamentos de Programacin

207

e
2) Un modulo que me permita mostrar el promedio de 5 notas y su condicin de aprobado o desaprobado. Procedimiento variables entero: n1,n2,n3,n4,n5 carcter: condicin inicio leer(n1,n2,n3,n4,n5) prom=(n1+n2+n3+n4+n5)/5; si(prom>=10.5) condicin=Aprobado else condicin=Desaprobado fin_si escribir(condicin,prom); fin_procedimiento Calculo

3) Crear un modulo que permita mostrar la siguiente serie. 3,33,333,3333,.(15 trminos) 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 Programacin

208

Procedimientos en Java

void

<nombre_procedimiento>([<lista_parmetros >]){

[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 botn escribir promedio();

Compila tu programa ingrsale las notas y aparecer el promedio de dichas notas-

Fundamentos de Programacin

209

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 Programacin

210

Fundamentos de Programacin

211

Contenidos
Uso de Mtodos con retorno- Funciones. Semejanzas entre los procedimientos y funciones Casos prcticos. Uso del return.

____________________________________________________________________________________

Funciones
La funcin es una estructura autnoma similar a los mdulos. La diferencia radica en que la funcin se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia. La funcin se relaciona especificando su nombre en una expresin, como si fuera una variable ordinaria de tipo simple. Las funciones se dividen en estndares y definidas por el usuario. Estndar: Son funciones proporcionadas por cualquier lenguaje de programacin de alto nivel, y se dividen en aritmticas y alfabticas. Definidas por el usuario: son funciones que puede definirlas el programador con el propsito de ejecutar alguna funcin especfica, y que por lo general se usan cuando se trata de hacer algn clculo que ser requerido en varias ocasiones en la parte principal del algoritmo. Declaracin

funcion <nombre_funcin>([<lista_parmetros_formales>]):tipo_Dato [declaraciones locales] inicio fin_funcion


Fundamentos de Programacin 212

e
Definicin <tipo_de_dato> es un tipo de dato estndar o definido previamente por el usuario. Se trata del tipo del dato que devuelve la funcin. <nombre_funcin> debe ser un identificador vlido. <lista_parmetros_formales> son uno o ms grupos de parmetros separados por punto y coma. Cada grupo de argumentos se define de la siguiente forma:

{E | E/S} <tipo_de_dato> : <lista_de_parmetros>

E indica que el paso de parmetros se realiza por valor. E/S indica que el paso de parmetros se realiza por referencia. <tipo_de_dato> es un tipo de dato estndar o definido previamente por el usuario. <lista_de_parmetros> es uno o ms identificadores vlidos separados por comas. <expresin> es el valor de retorno de la funcin. Debe coincidir con el tipo de dato de la declaracin.

Llamada a funciones Se puede realizar en dos formas: 1era forma: utilizando una variable local o global. 2da forma: llamndolo desde un objeto de visualizacin Ejemplo X= <nombre_funcin>([<lista_parmetros_actuales>]) Escribir (x)

La lista de parmetros actuales es una o varias variables o expresiones separadas por comas que deben coincidir en nmero, orden y tipo con la lista de parmetros formales de la declaracin.

Fundamentos de Programacin

213

e Semejanzas entre Procedimientos y Funciones.

- La definicin de ambos aparece en la seccin 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 parmetros, constantes y variables declarados en una funcin o procedimiento son locales a la funcin o al procedimiento, solamente son accesibles dentro del subprograma.

- Cuando se llama a una funcin o a un procedimiento, el nmero de los parmetros reales debe ser el mismo que el nmero de los parmetros formales y los tipos de los parmetros reales deben coincidir con los tipos de los correspondientes parmetros formales, con una excepcin: se puede asociar un parmetro real de tipo entero con un parmetro formal por valor de tipo real.

Diferencias entre Procedimientos y Funciones.

- Mientras que a un procedimiento se le llama mediante una instruccin de llamada a procedimiento, a una funcin se la llama usando su nombre en una expresin.

- Puesto que se debe asociar un valor al nmero de una funcin, tambin se le debe asociar un tipo. Por tanto, la cabecera de una funcin debe incluir un identificador de tipo que especifique el tipo del resultado. Sin embargo, no se asocia ningn valor con el nombre de un procedimiento y, por tanto, tampoco ningn tipo.

- Las funciones normalmente devuelven un nico valor a la unidad de programa que la llama. Los procedimientos suelen devolver ms de un valor, o pueden no devolver ninguno si solamente realizan alguna tarea, como una operacin de salida.

- En los procedimientos, los valores se devuelven a travs de parmetros por variable, pero el valor de una funcin se devuelve mediante la asignacin al nombre de la funcin de dicho valor en la parte de instrucciones de la definicin de la funcin.

Fundamentos de Programacin

214

e
Ejemplos: Caso 01: Crear una funcin que me devuelva el factorial de un nmero. Funcin 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 funcin que me devuelva la sumatoria de los 20 primeros nmeros pares. Funcin 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 funcin que devuelva el promedio de 5 notas. Funcin 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 Programacin

215

Usando Mtodos(Funciones) en Java Tipo_Dato <nombre_funcin>([<lista_parmetros_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 Programacin

216

e
private void txtn1_actionPerformed(ActionEvent e) { lblf.setText(""+factorial()); //mostrndolo 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 Programacin

217

e
Caso 03: Promedio de 5 Notas int a,b,c,d,e1; double promedio(){ return((a+b+c+d+e1)/5); }

Variables Globales Funcin promedio

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

Procedimiento Leer

Se puede invocar varias veces


}

private void txtn5_actionPerformed(ActionEvent e) { leer(); lbls.setText(""+promedio()); }

Fundamentos de Programacin

218

EJERCICIOS DE APLICACIN
1. Disear una funcin que calcule el promedio de N nmeros introducidos por el teclado. 2. Escribir una funcin que intercambie el valor de dos variables, es decir si X=5 e Y=7 tras aplicar la funcin, por ejemplo haciendo "intercambiar(X,Y)" se tiene que X=7 e Y=5. 3. Disear una funcin que calcule la potencia ensima de un nmero, es decir que calcule X n para X, real y n entero 4. Disear una funcin "Invertir()" que invierta un numero introducido. 5. Disear dos funciones "EurosAPesetas()" y "PesetasAEuros()" que realicen las conversiones de monedas de forma que se puedan utilizar directamente dentro de una expresin del tipo: "Imprimir valEuros son EurosAPts(valEuros)" 6. Disear una funcin "EsBisiesto()" que decida si un ao es bisiesto o no 7. Escribir una funcin "EsMultiplo" que sirva para determinar si un nmero es mltiplo de otra. Utilizarla en un programa que pida la antigedad de un trabajador y calcule cuantos trienios de antigedad tiene. 8. Modularizar el programa nomina1.c utilizando tres funciones. Una para la entrada, una para los clculos 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 nmero 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 Programacin

219

Usando Mtodos
Realiza el siguiente caso utilizando mtodos. 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 segn como se muestra en el cuadro. rea Logistica Descuento 6%

Administracion 9% Seguridad Otros 3% 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 Gratificacin(25%).

Fundamentos de Programacin

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 Programacin 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 Programacin 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 Programacin 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 Programacin

224

Fundamentos de Programacin

225

Contenidos
Definicin de Recursividad Recursividad frente a las Estructuras Repetitivas Elementos de Recursividad Recursividad Directa / Indirecta.

____________________________________________________________________________________

Recursividad
La recursividad es una tcnica de programacin importante. Se utiliza para realizar una llamada a una funcin desde la misma funcin. La recursividad y la iteracin (ejecucin en bucle) estn muy relacionadas, cualquier accin que pueda realizarse con la recursividad puede realizarse con iteracin y viceversa. Normalmente, un clculo determinado se prestar a una tcnica u otra, slo necesita elegir el enfoque ms natural o con el que se sienta ms cmodo. Claramente, esta tcnica puede constituir un modo de meterse en problemas. Es fcil crear una funcin recursiva que no llegue a devolver nunca un resultado definitivo y no pueda llegar a un punto de finalizacin. 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 funcin recursiva f debe definirse en trminos 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 funcin recursiva. Cualquier caso de definicin recursiva o invocacin de un algoritmo recursivo tiene que reducirse a la larga a alguna manipulacin de uno o casos ms simples no recursivos.

Fundamentos de Programacin

226

Tipos de mtodos Recursivos


Recursividad directa (simple). Es cuando un subprograma A se llama a s mismo una o ms veces directamente

Recursividad indirecta Cuando en una subrutina hay llamadas a ella misma se habla de recursividad directa, en contraposicin, cuando se tienen varias subrutinas y stas se llaman unas a otras formando ciclos se dice que la recursin 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 Programacin

227

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 Programacin

228

Fundamentos de Programacin

229

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 APIs las cuales nos permite mejorar la presentacin del FRAME de Java. Adems 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 presentacin de nuestro Frame, pudiendo ponerle imgenes y pudiendo controlarlos mediante objetos.

JLabel Ponle el nombre lblImagen

Fundamentos de Programacin

230

Realicemos este ejemplo: Empecemos: 1) Realice todo el diseo y para la parte de la imagen inserte un JLabel. 2) Ingrese al source del Frame(FrmAcceso) y ubquese en el jbInit y escriba esto lblImagen.setImageIcon(new ImageIcon("sise.jpg")); 3) Crear los siguientes mtodos del FrmAcceso que contenga esto: Declare una variable pblica llamada Usuario de tipo String. Luego crear este mtodo:

String nombre(){
If(rbtProfesor.isSelected()) Usuario=Profesor; If(rbtAlumno.isSelected()) Usuario=Alumno; Return(Usuario);

Void contrasea(){
FrmDatos llama=new FrmDatos(); llama.setLocationRelativeTo(null); llama.setVisible(true); llama.setTitle("Usuario: "+nombre());

4) Quizs el FrmDatos saldr con lnea roja es porque no existe, as que haz lo siguiente, ubcate 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 podrs seguir con todo lo que has aprendido.

Fundamentos de Programacin

231

USANDO CDIGOS JAVA I


CASO 01: Cambiar el color de fondo de texto segn 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++) 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)); } Esta inicializacin permitir que los combos contengan nmeros desde 0 hasta 255.

Fundamentos de Programacin

232

CASO 02: Cambiar la apariencia del texto, poniendo estilos de letras, tamao 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) choTamao.addItem(""+i); }

private void btnAplicar_actionPerformed(ActionEvent e) { String fuente = leeFuente(); int estilo = leeEstilo(); int tamao = leeTamao();

// crear fuente segn atributos leidos Font miFuente = new Font(fuente,estilo,tamao);

// aplicar nueva fuente al JTextArea txtS.setFont(miFuente); }

//--------------

Fundamentos de Programacin

233

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 leeTamao() { return Integer.parseInt(choTamao.getSelectedItem().toString()); }

Fundamentos de Programacin

234

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 Programacin

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 mtodos //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 Programacin

236

USANDO CDIGOS 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 debern 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 ms 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 Programacin

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 Programacin 238

e } if(n4<n1 && n4<n2 && n4<n3){ menor=n4; } prom=(n1+n2+n3+n4-menor)/3; m="promedio de 4 notas suman ms 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 Programacin 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 Programacin

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 ms de 700 unidades recibir una bonificacin de acuerdo a su categora, 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 ningn caso el descuento por seguro ser mayor a S/. 20.00. Al final presentar el sueldo neto, cada uno de los descuentos y la bonificacin. Los resultados se mostraran con dos decimales.

Fundamentos de Programacin

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 Programacin

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 Programacin

243

e
CasoVER 03: Ingresar 3 nmeros y mostrar el nmero 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 Programacin

244

BIBLIOGRAFIA.
JOYANES AGUILAR, Luis. Fundamentos de Programacin, Estructura de Datos y Programacin Orienta Objetos. 3era Edicin McGraw-Hill/Interamericana de Espaa S.A. Victor Balta Julio Vsquez. Sper JAVA 2. Gua de Desarrollo en Java para aplicaciones Windows. Segunda Edicin 2006 Java 2 SE. Editorial MegaByte

Fundamentos de Programacin

245

Das könnte Ihnen auch gefallen