Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Fundamentos de Programacion V0111 PDF
Manual de Fundamentos de Programacion V0111 PDF
Fundamentos de Programacin
Presentacin
..
Modulo A
Semana 1
..
10
Semana 2
..
22
Semana 3
..
40
Semana 4
..
48
Semana 5
..
74
Semana 6
..
90
Semana 7
..
98
Semana 8
..
104
Semana 9
..
110
Semana 1
..
148
Semana 2
..
160
Semana 3
..
174
Semana 4
..
182
Semana 5
..
192
Semana 6
..
204
Semana 7
..
212
Semana 8
..
226
Semana 9
..
230
Modulo B:
Fundamentos de 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.
organizaciones:
1.
2.
3.
Fundamentos de Programacin
12
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.
Fundamentos de Programacin
13
Programa
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.
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
Fundamentos de Programacin
15
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
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
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.
Fundamentos de Programacin
17
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.
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
Su nombre debe ser corto que debe dar como referencia a lo que quiera representar.
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.
Fundamentos de Programacin
19
e
Te damos algunos ejemplos para establecer identificadores corto para los siguientes
ejemplos:
o
Nombres y Apellidos Nom_Ape
o
Edades
Eds
Primera Nota
Nota_1
Estado Civil
Est_Civ
Sueldo Bsico
Suel_B
Sueldo Neto
Suel_N
Cantidad de Horas
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
Decimal
Simples
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
-
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.
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
EJERCICIOS.
a. Establecer las expresiones matemticas a expresiones algortmicas.
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:
N1=5
U=N3*2
N2=2 N3=1
Q=U/2+N1
Y=N1+N3
T=Q^0
Z=Y+N2
Cul es el valor de T?
Cul es el valor de
Z?
Z=___
T=____
Q toma el valor 7
V= 51 div 7
V toma el valor 7
Q toma el valor 1
V= 51 div 7
V toma el valor 2
Fundamentos de Programacin
25
Fundamentos de Programacin
26
Asignacin de Datos
La instruccin de asignacin se usa para asignar valores a variables utilizando la
igualdad (=).
Identificador=Expresin
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
Fundamentos de Programacin
27
e
Ejemplos:
o
o
o
o
o
Caracter: Nombres
Caracter: Apellidos
Entero: Edad
Decimal: Promedio
Lgico: Bandera
Instituto=SISE
Mes_Aniv=Noviembre
Edad=25
Igv=0.19
Existe_Codigo=verdadero
b)
Codigo
____________________
Direccion
____________________
Telefono
____________________
Peso
____________________
Talla
____________________
Estado_Civil
____________________
Fundamentos de Programacin
28
e
c)
Otros propuestos
1) ___________________
2) ___________________
3) ___________________
4) ___________________
5) ___________________
6) ___________________
7) ___________________
8) ___________________
9) ___________________
10) ___________________
11) ___________________
12) ___________________
13) ___________________
14) ___________________
15) ___________________
Fundamentos de Programacin
29
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
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
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
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
Fundamentos de Programacin
34
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.
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
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.
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>
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.
escribir(<variable>,<expresin_literal>)
Formas:
escribir (expresin1)
escribir (expresin2)
escribir (expresin3)
Ejemplo de Pseudocdigo:
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
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
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
Fundamentos de Programacin
42
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
Fundamentos de Programacin
43
e
10.
Variables
entero: c
decimal: f
INICIO
leer (C)
F= 1.8 * C + 32
escribir (F)
FIN
Variables
decimal: Cant_Metros,Cant_Centimetros
Constante
centi=100
INICIO
leer (Cant_Metros)
Cant_Centimetros= Canti_Metros * centi
escribir (Mont_Dolares)
FIN
Fundamentos de Programacin
44
EJERCICIOS DE APLICACIN
Fundamentos de Programacin
45
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
-
____________________________________________________________________________________
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
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.
Fundamentos de Programacin
51
Comentarios
Formato
Uso
/*comentario*/
//comentario
/**comentario*/
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;
Rango de valores
Descripcin
Nmeros enteros
byte
8-bit complemento a 2
Entero de un Byte
short
16-bit complemento a 2
Entero corto
int
32-bit complemento a 2
Entero
long
64-bit complemento a 2
Entero largo
Nmeros reales
float
double
char
16-bit Caracter
Un slo carcter
boolean
true o false
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:
+
Fundamentos de Programacin
55
>
Mayor que
>=
<
Menor que
<=
==
!=
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
Fundamentos de Programacin
56
Ventana de
Componente
s
Ventana de
Aplicaciones
Ventana
Structure
Ventana de
Mensajes
Fundamentos de Programacin
Ventana de
Propiedades
57
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
Run Manager(Vetana)
Aqu se Mostraran todas las aplicaciones
que estn ejecutadas
Fundamentos de Programacin
59
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)
Paso 5:
Nombre del
Proyecto
Paso 6: Finish
Fundamentos de Programacin
61
e
d)
Paso 7: New
e)
Aparecer una ventana donde deber Elegir Client Tier / Swing/AWT y luego Java Application
Paso 9:
Paso 8:
f)
Paso 10:
Fundamentos de Programacin
62
e
g)
Paso 11:
Fundamentos de Programacin
63
Hagamos otro ejemplo de crear el proyecto con los pasos que te indique:
1)
2)
3)
4)
5)
Fundamentos de Programacin
64
e
Deber de tomar en cuenta lo siguiente:
Fundamentos de Programacin
65
e
Como por ejemplo:
Click derecho sobre la aplicacin / new project
Fundamentos de Programacin
66
Fundamentos de Programacin
67
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
Su nomenclatura es lbl_Nombre
Fundamentos de Programacin
68
e
a. Border.- permite establecer un tipo de borde y un color.
f.
Fundamentos de Programacin
69
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.
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
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
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
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
btnCalcular
LUEGO tendr que programar en el boton calcular.(ud. Dara doble click y aparecera la ventana
de codigo donde podra escribir).
Fundamentos de Programacin
72
Fundamentos de Programacin
73
Contenidos
-
____________________________________________________________________________________
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.
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
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
Fundamentos de Programacin
75
si (<expresin_lgica>) entonces
<acciones>
fin_si
JAVA:
if(Condicin)
<Accion>;
if(Condicin) {
<Accion 1>;
<Accion 2>;
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:
Fundamentos de Programacin
77
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
Es la Condicin
leer(edad)
si (edad>=18)
escribir(es mayor de edad)
sino
escribir(no es mayor de edad)
fin_si
fin_programa
2. Se pide leer tres notas del alumno, calcular su promedio 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
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
Es la Condicin
inicio
leer(altura)
si (altura <=150) entonces
escribir( persona de altura baja)
sino
si altura <=170 entonces
escribir(persona de altura media)
Es importante ser ordenado
en el cdigo que se escribe!
sino
si altura>170 entonces
escribir( persona alta)
fin_si
fin_si
fin_si
fin_prorama
Es la Condicin
leer(num1,num2,num3)
si (num1>0 y num2>0 y num3>0 )
entonces
suma=num1+num2+num3
resta=num1-num2-num3
multip=num1*num2*num3
escribir(suma,resta,multip)
sino
escribir(Los nmeros no son positivos)
fin-si
fin_programa
Fundamentos de Programacin
79
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
Fundamentos de Programacin
81
e
3. En un hospital existen 3 reas: Urgencias, Pediatra y Traumatologa. El
rea
Presupuesto
Urgencias
37%
Pediatra
42%
Traumatologa
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
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
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.
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
Presupuesto
Urgencias
37%
Pediatra
42%
Traumatologa
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
Fundamentos de Programacin
89
Contenidos
-
____________________________________________________________________________________
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.
Fundamentos de Programacin
chk_nombre
90
e
Metodos:
isSelected.- devuelve si el objeto ah sido selecccionado True si lo esta y false si esta
apagado
setEnabled.- permite poner o quitar la activacion.
Realicemos este ejemplo: usando Check : En el caso del seguro es el 7% del sueldo y
en los casos de faltas y tardanzas se da un valor fijo de 50 y 30 soles al activar el
check.
Insertar 4 Jlabel
El primero: Text =
Borde = Title Descuentos
El segundo: Text =
Name = lblS
El tercero: Text =
Name = lblF
El cuarto:
Fundamentos de Programacin
Text =
Name = lblT
91
e
2do Paso (codificar dentro de cada check)
private void chkS_actionPerformed(ActionEvent e) {
double seguro;
int su=Integer.parseInt(txtS.getText());
if(chkS.isSelected()==true)
seguro=0.07*su;
else
seguro=0;
lblS.setText(""+seguro);
}
lblF.setText(""+falta);
}
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)
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{
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);
3er Paso
Guarda tu archivo
Y elige la clase y ejecuta(puedes presionar F11).
Fundamentos de Programacin
94
Usando JRADIOBUTTON
Realicemos este ejemplo: usando radios: al elegir la carrera saldr el monto por carrera
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
-
_________________________________________________________________________________
[sino
<acciones>]
fin_cuando
Fundamentos de Programacin
98
e
Descripcin:
<expresin>
<lista_de_valores>
que 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
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();
cbotipo.addItem("Darle el Valor");
Int orden=nombreCombo.getSelectedIndex();
nombreCombo.removeAllItems;
3 Pasos Importantes:
2do paso poner el nombre del Combo busca la propiedad Name= cboNombre
jbInit y
escribir
Fundamentos de Programacin
101
Caso 2:
Establecer una Lista de Estado Civil y de Areas. Debe de quedar como se muestra en el
Ejemplo.
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
-
____________________________________________________________________________________
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 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 );
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
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
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%
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){
}
break;
}
importe=cuota-porcI;
lblDsct.setText(""+porcI);
lblNeto.setText(""+importe);
}
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()
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
Fundamentos de Programacin
112
Funciones trigonomtrica
Fundamentos de Programacin
113
e
Funciones exponencial y logartmica
La funcin exponencial exp devuelve el nmero e elevado a una potencia
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
cifras
double x = 72.3543;
double y = 0.3498;
System.out.println(x + " es aprox. " + (double)Math.round(x*100)/100);
System.out.println(y + " es aprox. " + (double)Math.round(y*100)/100);
/*Se obtiene 72.35 y 0.35 como 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*/
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));
Fundamentos de Programacin
117
Fundamentos de Programacin
intentalo
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
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";
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
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);
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
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);
}
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.
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
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);
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
Fundamentos de Programacin
:
S/.
:
:
S/.
S/.
S/.
135
e
private void jbInit() throws Exception {
.
..
GrpDescVaria.add(rbtCoo);
GrpDescVaria.add(rbtSin);
GrpCategoria.add(rbtA);
GrpCategoria.add(rbtB);
GrpCategoria.add(rbtC);
cboAs.addItem("Seleccionar Tiempo");
cboAs.addItem("0 - 5");
cboAs.addItem("6 - 10");
cboAs.addItem("11 - 15");
cboAs.addItem("16 a mas");
}
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;
//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 Martes 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
19
21
SAMSUNG
PANASONIC
LG
SONY
12
14
12
13
13
12
14
15
12. PC: Que permita a un alumno de SISE, actualmente de tercer ciclo, calcular el promedio
correspondiente al curso de Taller de Software 3, sabiendo que este se obtiene 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
PARTIDO
ngeles Carlos
Florin Jess
Escobar Mara
Lpez Gino
Garca Manuel
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
Porcentaje
de(aos) bonificacin
17%
21%
29%
52%
CATEGORIA
Porcentaje
De bonificacin
11%
22%
33%
A-B
C-D
OTROS
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
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
A, B
C, D
Se deber mostrar el monto total a pagar.
30 %
25 %
26. PC: Que calcule el monto a pagar por una licencia municipal. El monto de la licencia
depender de la zona donde se encuentra el negocio, el rea que ocupa y el giro de este.
De acuerdo a la 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
INCREMENTO (%)
Abarrotes (A)
Vestido y Calzado (V)
Electrodomsticos (E)
Alimentos y Bebidas (B)
--15
20
5
27. PC: Que calcule el monto por impuesto predial. El impuesto depender del rea que ocupa
la casa (Ingresado por teclado), de los aos de construccin y del material de construccin.
Para calcular el impuesto debe considerarse el siguiente cuadro:
AOS DE CONSTRUCCIN
IMPUESTO ($/M2)
0-5
6 10
11 15
16 a ms
2.00
1.20
0.85
0.25
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
Fundamentos de Programacin
100.00
450.00
300.00
350.00
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
INCREMENTO (%)
DESTINO
Natural
Ica
Arequipa
Chimbote
Trujillo
0
9
10
13
Empresa
Ica
Chimbote
3
7
Si el cliente es una persona natural las tarifas 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
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).
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
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:
variables
entero: c
inicio
c=3
mientras(c<=30)
escribir(c)
c=c+3
fin_mientras
fin_programa
c=c-3
fin_mientras
fin_programa
Fundamentos de Programacin
151
variables
entero: c
inicio
c=4
mientras(c<=450)
escribir(c)
c=c*2
fin_mientras
fin_programa
variables
entero: c
inicio
c=2
mientras(c<=22222)
escribir(c)
c=c*10+2
fin_mientras
fin_programa
152
e
Caso 6: Muestre la Serie : 80,70,60,50,,0
variables
entero: c
inicio
c=80
Es la variacin del contador
para poder cumplir con la
condicin del bucle.
mientras(c>=0)
escribir(c)
c=c-10
fin_mientras
fin_programa
variables
entero: c,x
inicio
c=9 : x=1
mientras(c<=650)
escribir(c)
c=c+x
x=x+1
fin_mientras
fin_programa
Fundamentos de Programacin
153
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
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
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.
Fundamentos de Programacin
156
3er paso: regrese componentes Swing y elija un JList y dar click dentro
del JScrollPane quedando de la siguiente manera.
Fundamentos de Programacin
157
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
-
____________________________________________________________________________________
JList
Fundamentos de Programacin
JTextArea
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.
c=c+3;
}
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;
}
}
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
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
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
Recuerda:
Cuando necesites
saber cantidades de datos debers
de usar un contador y a una
condicin. El contador ser
mientras(cd<=15)
leer(distrito)
C=C+1
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
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
Sueldo
1520
1630
1450
1230
1020
Fundamentos de Programacin
167
Variable=JOptionPane.showInputDialog(Mensaje);
Cuando aparezca
este emergente
deber de
presionar Alt enter
Fundamentos de Programacin
168
Sueldo=Double.parseDouble(JOptionPane.showInputDialog(Ingresar el Sueldo));
Fundamentos de Programacin
169
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.
Fundamentos de Programacin
172
Fundamentos de Programacin
173
Contenidos
-
__________________________________________________________________________________________________
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
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
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.
Fundamentos de Programacin
179
Cuando aparezca
este emergente
deber de
presionar Alt enter
Fundamentos de Programacin
180
Fundamentos de Programacin
181
Contenidos
-
____________________________________________________________________________________
Estructura Desde
La estructura Desde sirve para repetir un cdigo dependiendo de un contador, establecer el
valor inicial y el valor final.
Definicin:
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.
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
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
Fundamentos de Programacin
187
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);
Fundamentos de Programacin
188
e
Ejemplos de Mensajes:
JOptionPane.showMessageDialog(this,"Estamos en la Version 11g de JDeveloper....");
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
Fundamentos de Programacin
194
Fundamentos de Programacin
195
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).
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.
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)
56,53,50,47(25 trminos)
g)
h)
i)
j)
5,6,8,11,15,20,26,33.(22 trminos)
k)
1,1,2,3,5,8,13,21,34.(31 trminos)
l)
S=5+9+13+17+.45
m) OP=167-(3+6+9+.+27)
n) P=4*6*8*.*18
o)
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
+
7
9
+
+
10
13
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
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:
x
= 1 + x0 + x1 + x2 + x3 + x4 + xn
2
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
n Lneas:
1
1
1
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
INTERES
TOTAL
SALDO
2400.00
1920.00
1536.00
1228.00
983.04
786.43
600.00
480.00
384.00
307.20
245.76
196.61
3000.00
2400.00
1920.00
1536.00
1228.80
983.04
9600.00
7680.00
6144.00
4915.20
3932.16
3145.73
54.04
216.00
13.51
10.81
67.55
226.81
216.17
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
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
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
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.
sueldo
variables
entero: ch,cost
inicio
leer(ch,cost)
suel=ch*cost;
escribir(suel);
fin_procedimiento
se podr llamar a este modulo mediante un objeto (botones, textos, combos, radios,
check) tan solo poner el nombre del procedimiento.
Sueldo
Fundamentos de Programacin
207
e
2) Un modulo que me permita mostrar el promedio de 5 notas y su condicin de aprobado
o desaprobado.
Procedimiento
Calculo
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
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
Fundamentos de Programacin
210
Fundamentos de Programacin
211
Contenidos
-
____________________________________________________________________________________
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
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.
- 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.
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
Fundamentos de Programacin
215
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(){
int i,acu=0,n=2;
for(i=1;i<=10;++i){
serie=serie+n+"-";
acu=acu+n;
n=n+2;
}
return(acu);
Fundamentos de Programacin
217
e
Caso 03: Promedio de 5 Notas
int a,b,c,d,e1;
double promedio(){
Variables
Globales
Funcin promedio
return((a+b+c+d+e1)/5);
}
void leer(){
Procedimiento Leer
a=Integer.parseInt(txtn1.getText());
b=Integer.parseInt(txtn2.getText());
c=Integer.parseInt(txtn3.getText());
d=Integer.parseInt(txtn4.getText());
e1=Integer.parseInt(txtn5.getText());
}
private void txtn1_actionPerformed(ActionEvent e) {
leer();
lbls.setText(""+promedio());
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
Descuento
Logistica
6%
Administracion 9%
Seguridad
3%
Otros
1.5
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);
}
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();
}
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);
}
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".
Fundamentos de Programacin
226
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
Fundamentos de Programacin
227
Fundamentos de Programacin
228
Fundamentos de Programacin
229
Contenidos
-
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
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.
Fundamentos de Programacin
231
.
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));
}
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");
//--------------
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
.
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();
Fundamentos de Programacin
235
e
private void cboColorFondo_actionPerformed(ActionEvent e) {
fondo();
}
//Desactivar controles
txtNumero.setEnabled(false);
btnAnterior.setEnabled(false);
Fundamentos de Programacin
236
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(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(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);
}
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