Вы находитесь на странице: 1из 105

LOGICA DE PROGRAMACION

HERRAMIENTAS DE DESARROLLO
DE SOFTWARE
Algoritmos Teora y Ejercicios resueltos con
Pseudocodigo
Diagramas de Flujo y
Diagramas Nassi-Schneidermann
PREPARADO POR
Adolfo Rondan Chacn

Contenido
Terminologa bsica.................................................................................. 6

1.

1.1.

Bit...................................................................................................... 6

1.2.

Byte................................................................................................... 6

1.3.

campo................................................................................................ 6

1.3.1.

Campo constante..........................................................................7

1.3.2.

Campo variable............................................................................. 7

1.3.2.1.

Tipos de variable.......................................................................7

1.4.

Registro.............................................................................................. 8

1.5.

Archivo............................................................................................... 9
Base de datos.................................................................................. 9

1.6.
1.6.1.

Modelos de bases de datos...........................................................9

1.6.1.1.

Bases de datos jerrquicas......................................................10

1.6.1.2.

Base de datos de red............................................................10

1.6.1.3.

Bases de datos transaccionales............................................10

1.6.1.4.

Bases de datos relacionales..................................................11

1.6.1.5.

Bases de datos multidimensionales......................................12

1.6.1.6.

Bases de datos orientadas a objetos.....................................12

1.6.1.7.

Bases de datos documentales...............................................13

1.6.1.8.

Bases de datos deductivas...................................................13

2.

Algoritmo................................................................................................ 14

3.

Descripcin de los datos.........................................................................15

3.1. Datos, en este caso declarar el tipo de dato, el nombre del dato y realizar una
asignacin si es necesario................................................................................ 15
3.2. Operadores.- son los smbolos usados tanto al escribir una formula como al
escribir una condicin...................................................................................... 15
4.

Herramientas de realizacin de algoritmos............................................15


Herramienta textual................................................................................. 16
Herramientas grficas;............................................................................ 16

4.1.

Pseudocdigo................................................................................... 16

4.2.

Los diagramas de Flujo.....................................................................17

4.3.

Diagramas Nassi-Schneiderman N/S..................................................18

5.

Etapas para resolver un problema usando un computador........................21

6.

Resolucin de algoritmos........................................................................22
6.1.

Planteo del problema........................................................................23

6.2.

Una solucin del problema................................................................24

Elaborado por Adolfo Rondn Chacn

En esta fase se plantea la solucin al problema usando una de las herramientas de


diseo de programas.................................................................................... 24
7.

Implementacin de los algoritmos...........................................................24

8.

Elementos de diseo de programas.........................................................25


8.1.

Programacin Modular......................................................................25

8.2.

Programacin Estructurada...............................................................26

8.2.1.

Estructuras de programacin estructurada..................................26

8.2.1.1.

Estructura secuencial.................................................................26

8.2.2.

Modelo de estructura secuencial.................................................27

8.3.

9.

Estructuras de Seleccin (decisin o alternativa)................................27

8.3.1.

Estructura de Seleccin Simple SI...............................................27

8.3.2.

Estructura de seleccin doble si - sino.........................................28

8.3.3.

Estructura de seleccin doble en cascada si-sino-si.....................29

8.3.4.

Estructura de seleccin mltiple segun.......................................30

EJERCICIOS DESARROLLADOS..............................................................31

10.

Concepto de Programa.........................................................................43

11.

Elementos Bsicos de un Programa......................................................43

12.

Escritura de Programas........................................................................44
JVM.................................................................................................. 44

12.1.
13.

Etapas para desarrollar un programa en java.........................................45

13.1.

Edicin.......................................................................................... 45

13.2.

Compilacin.................................................................................. 46

13.3.

Ejecucin...................................................................................... 46

14.

Software para el desarrollo de programas java......................................46

14.1.

Instalacin del Software.................................................................47

14.2.

Instalacin del jdk:......................................................................48

14.3.

Instalacin del JCreator:.............................................................49

15.

Primeros pasos para trabajar con JCreator............................................51

15.1.

Creando un programa simple en JCreator.......................................56

15.2.

Identificadores en java......................................................................58

15.3.

Palabras reservadas en java..............................................................59

15.4.

Datos primitivos en Java...................................................................59

15.5.

Literales........................................................................................ 61

15.5.1.

Literales enteros.........................................................................61

15.5.2.

Literales reales...........................................................................61

15.5.3.

Literales de carcter...................................................................62

15.5.4.

Literales de Cadena....................................................................62

15.6.

Sentencias de asignacion...............................................................62

Elaborado por Adolfo Rondn Chacn

15.7.

Constructor................................................................................... 66

15.8.

Eventos......................................................................................... 68

15.9.

Entrada y salida de datos...............................................................70

15.9.1.

Uso de dos o ms Botones.......................................................74

15.10.

Condicin simple ( if ).................................................................76

15.11.

Condicin doble ( if - else )..........................................................77

15.12.

Condicin en cadena ( if - else - if )..............................................77

15.13.

Condicin compuesta.................................................................77

15.14.

Condicin o Decisin Mltiple (switch)........................................78

15.14.1.

Contador................................................................................. 79

15.14.2.

Acumulador............................................................................. 82

15.15.

Repeticiones.................................................................................. 85

15.15.1.

Repeticin FOR (para)...........................................................85

15.15.2.

Repeticin WHILE (mientras).................................................86

15.15.3.

DO - WHILE (hacer - mientras):.................................................88

Nmeros Aleatorios (Math.random)..........................................................95


16.

Funciones (subprocesos) en Pseint......................................................98

Elaborado por Adolfo Rondn Chacn

INTRODUCCION
El propsito de este texto es proporcionar a los alumnos que recin inician sus estudios
en el rea de programacin una breve teora y una serie de problemas a ser resueltos
usando un software de prueba y luego de desarrollo, los cuales sern resueltos
algortmicamente con detalle.
Este texto presenta tres herramientas para desarrollar una lgica apropiada para el
planteamiento y solucin de un problema (pseudocdigo, diagramas de flujo y
diagramas Nassi-Schneiderman).
Los problemas que se plantean estn enfocados en utilizar las tres estructuras bsicas de
la programacin (secuencias, decisiones alternativas y decisiones repetitivas), de forma
que el alumno vaya desarrollando su capacidad de resolver problemas cada vez ms
complejos, y desarrolle una lgica apropiada mediante la utilizacin de una de las
herramientas para la solucin de problemas, luego en la siguiente etapa sern
implementados en la computadora usando un software de desarrollo adecuado

Elaborado por Adolfo Rondn Chacn

1. Terminologa bsica
1.1. Bit
Es el acrnimo de Binary digit. (Dgito binario). Un bit es un dgito del
sistema de numeracin binario.

El bit es la mnima unidad de

representacin de la informacin empleada en informtica. Con l, podemos


representar dos valores cualesquiera, basta con asignar uno de esos
valores al estado de "apagado" (0), y el otro al estado de "encendido" (1).
Podran representarse tambin con 2 niveles alto y bajo, tambin con dos
estados de magnetizacin, con carga o sin carga y por ultimo podra ser dos
niveles de voltaje alto o bajo.
1.2. Byte
El byte es la unidad de capacidad de almacenamiento estndar. Con esta
unidad de medida se mide desde el almacenamiento de datos hasta la
capacidad de memoria de un ordenador. Representa un carcter (un
nmero, una letra, un espacio, o cualquier otro signo) y est constituido por
8 bits consecutivos, de modo tal que un byte equivaldra a 8 bits.
Hay 256 combinaciones de 8 bits posibles, por lo que hay 256 caracteres.
Debido a que es una medida de capacidad mnima (si bien como se ha
dicho la ms pequea es el bit), existen otras magnitudes que se utilizan
para capacidades superiores y que son mltiplos del byte (Mltiplos de 8).
1 byte
1 Kilobyte
1 Megabyte
1 Gigabyte
1 Terabyte

8 bits
1024 bytes
1024 kilobytes
1024 Megabytes
1024 Gigabytes

1.3. campo
El campo es un conjunto de bytes, asignados a una ubicacin de memoria y
que poseen un nombre que los identifica, por ejemplo los campos; nombre,
paterno, edad, monto etc.

Elaborado por Adolfo Rondn Chacn

El campo es un espacio de almacenamiento para un dato en particular tiene


un nombre que se le asigna a un objeto en memoria, estos pueden ser
variables o constantes, e intervienen en los procesos que se realizan para la
solucin de un problema, por consiguiente, es necesario establecer qu
caractersticas tienen.
Para establecer el nombre de campo se debe seguir ciertas reglas que
establecen cada uno de los lenguajes de programacin, el nombre de
campo variable o constante representa el objeto que se va a identificar por
lo que tambin se le conoce con el nombre de identificador.
1.3.1. Campo constante
Un campo se clasifica como constante cuando el valor que se le asigna
a este no cambia durante la ejecucin o proceso de solucin del
problema. Por ejemplo, en problemas donde se utiliza el valor de PI, si el
lenguaje que se utiliza para codificar el programa y ejecutarlo en la
computadora no lo tiene definido, entonces se puede establecer de
forma constante estableciendo un campo llamado PI y asignarle el valor
correspondiente de la siguiente manera:
PI = 3.1416.
De igual forma, se puede asignar valores constantes para otro campo
segn las necesidades del algoritmo que se est diseando.
1.3.2. Campo variable
El campo de tipo variable son todos aquellos objetos cuyo valor vara
durante la ejecucin o proceso de solucin del problema. Por ejemplo, el
sueldo, el pago, el descuento, u otros, que se deben calcular con un
algoritmo determinado, o en su caso, contar con el largo (l) y ancho (a)
de un rectngulo que servirn para calcular y obtener su rea. Como se
puede ver, tanto l como a son variables que se proporcionan para que
el algoritmo pueda funcionar, y no necesariamente se calculen dentro del
proceso de solucin.
1.3.2.1.

Tipos de variable

Elaborado por Adolfo Rondn Chacn

NUMERICOS
Son nmeros con los que se realiza operaciones matemticas:
adicin, sustraccin, multiplicacin, divisin, potenciacin, porcentaje,
asociacin, inversin de signo ejemplos: edad, peso, precio, sueldo,
rea, volumen, talla, inters, descuento, igv,
TEXTO
Son texto que puede incluir nmeros con los que no se realiza
operaciones matemticas, se realiza operacin de concatenacin
(juntar texto): nombre, direccin, telfono, correo, hobby, ocupacin,
profesin, deporte, disponibilidad, categora, nivel, ciclo, sexo,
FECHA
Son datos que involucran fechas (sumar fechas, restar fechas, se
puede adicionar o sustraer nmeros) fecha de nacimiento, fecha de
ingreso, fecha de cese.
HORA
Son datos que involucra horas (sumar, restar entre horas). Hora,
hora de nacimiento, hora de ingreso, hora de salida,
LOGICOS o BOOLEANOS
Son datos que involucra solo dos posibles respuestas (verdadero o
true) o (falso o false). Aprob, blanco, celeste
1.4. Registro
Un registro es un conjunto de campos que contienen los datos que
pertenecen a una misma entidad. Se le asigna automticamente un
nmero

consecutivo.

Representa

un

objeto

nico

de

datos

implcitamente estructurados en una tabla. Un ejemplo es un DNI,


una ficha de matrcula, una tarjeta de propiedad vehicular, un
permiso de conducir, una membreca, una cuenta bancaria, una
transaccin etc.
Elaborado por Adolfo Rondn Chacn

1.5. Archivo
Los archivos denominados ficheros (file); es una coleccin de
informacin (datos relacionados entre s), localizada o almacenada
como un medio de almacenamiento de una computadora
Los archivos son el conjunto organizado de registros del mismo tipo,
que pueden utilizarse en un mismo tratamiento; Cada archivo es
referenciado por su identificador (su nombre.). Las principales
caractersticas de esta estructura son:

Independencia de las informaciones respecto de los programas


La informacin almacenada es permanente
Un archivo puede ser accedido por distintos programas en

distintos momentos
Gran capacidad de almacenamiento

1.6. Base de datos


Una base de datos o banco de datos es un conjunto de datos
pertenecientes

un

mismo

contexto

almacenados

sistemticamente para su posterior uso. Debido al desarrollo


tecnolgico de campos como la informtica y la electrnica, la
mayora de las bases de datos estn en formato digital, siendo este
un componente electrnico, y por ende se ha desarrollado y se
ofrece

un

amplio

rango

de

soluciones

al

problema

del

almacenamiento de datos.

1.6.1. Modelos de bases de datos


Adems de la clasificacin por la funcin de las bases de datos,
stas tambin se pueden clasificar de acuerdo a su modelo de
administracin de datos.
Un modelo de datos es bsicamente una "descripcin" de algo
conocido como contenedor de datos (algo en donde se guarda la
informacin), as como de los mtodos para almacenar y recuperar

Elaborado por Adolfo Rondn Chacn

informacin de esos contenedores. Los modelos de datos no son


cosas fsicas: son abstracciones que permiten la implementacin de
un sistema eficiente de base de datos; por lo general se refieren a
algoritmos, y conceptos matemticos.
Algunos modelos con frecuencia utilizados en las bases de
datos:
1.6.1.1.

Bases de datos jerrquicas

En este modelo los datos se organizan en forma de rbol invertido


(algunos dicen raz), en donde un nodo padre de informacin puede
tener varios hijos. El nodo que no tiene padres es llamado raz, y a
los nodos que no tienen hijos se los conoce como hojas.
Las bases de datos jerrquicas son especialmente tiles en el caso
de aplicaciones que manejan un gran volumen de informacin y
datos muy compartidos permitiendo crear estructuras estables y de
gran rendimiento.
Una de las principales limitaciones de este modelo es su incapacidad
de representar eficientemente la redundancia de datos.
1.6.1.2.

Base de datos de red

ste es un modelo ligeramente distinto del jerrquico; su diferencia


fundamental es la modificacin del concepto de nodo: se permite que
un mismo nodo tenga varios padres (posibilidad no permitida en el
modelo jerrquico).
Fue una gran mejora con respecto al modelo jerrquico, ya que
ofreca una solucin eficiente al problema de redundancia de datos;
pero, aun as, la dificultad que significa administrar la informacin en
una base de datos de red ha significado que sea un modelo utilizado
en su mayora por programadores ms que por usuarios finales.
1.6.1.3.

Bases de datos transaccionales

Elaborado por Adolfo Rondn Chacn

10

Son bases de datos cuyo nico fin es el envo y recepcin de datos a


grandes velocidades, estas bases son muy poco comunes y estn
dirigidas por lo general al entorno de anlisis de calidad, datos de
produccin e industrial, es importante entender que su fin nico es
recolectar y recuperar los datos a la mayor velocidad posible, por lo
tanto la redundancia y duplicacin de informacin no es un problema
como con las dems bases de datos, por lo general para poderlas
aprovechar al mximo permiten algn tipo de conectividad a bases
de datos relacionales.
Un ejemplo habitual de transaccin es el traspaso de una cantidad de
dinero entre cuentas bancarias. Normalmente se realiza mediante
dos operaciones distintas, una en la que se decremento el saldo de
la cuenta origen y otra en la que incrementamos el saldo de la cuenta
destino. Para garantizar la atomicidad del sistema (es decir, para que
no aparezca o desaparezca dinero), las dos operaciones deben ser
atmicas, es decir, el sistema debe garantizar que, bajo cualquier
circunstancia (incluso una cada del sistema), el resultado final es
que, o bien se han realizado las dos operaciones, o bien no se ha
realizado ninguna,
1.6.1.4.

Bases de datos relacionales

ste es el modelo utilizado en la actualidad para representar


problemas reales y administrar datos dinmicamente. Tras ser
postulados sus fundamentos en 1970 por Edgar Frank Codd, de los
laboratorios IBM en San Jos (California), no tard en consolidarse
como un nuevo paradigma en los modelos de base de datos. Su idea
fundamental es el uso de "relaciones". Estas relaciones podran
considerarse en forma lgica como conjuntos de datos llamados
"tuplas". Pese a que sta es la teora de las bases de datos
relacionales creadas por Codd, la mayora de las veces se
conceptualiza de una manera ms fcil de imaginar. Esto es
pensando en cada relacin como si fuese una tabla que est

Elaborado por Adolfo Rondn Chacn

11

compuesta por registros (las filas de una tabla), que representaran


las tuplas, y campos (las columnas de una tabla).
En este modelo, el lugar y la forma en que se almacenen los datos
no tienen relevancia (a diferencia de otros modelos como el
jerrquico y el de red). Esto tiene la considerable ventaja de que es
ms fcil de entender y de utilizar para un usuario espordico de la
base de datos. La informacin puede ser recuperada o almacenada
mediante "consultas" o querys que ofrecen una amplia flexibilidad y
poder para administrar la informacin.
El lenguaje ms habitual para construir las consultas a bases de
datos relacionales es SQL, Structured Query Language o Lenguaje
Estructurado de Consultas, un estndar implementado por los
principales motores o sistemas de gestin de bases de datos
relacionales.
Durante su diseo, una base de datos relacional pasa por un proceso
al que se le conoce como normalizacin de una base de datos.
1.6.1.5.

Bases de datos multidimensionales

Son bases de datos ideadas para desarrollar aplicaciones muy


concretas, como creacin de Cubos OLAP. Bsicamente no se
diferencian demasiado de las bases de datos relacionales (una tabla
en una base de datos relacional podra serlo tambin en una base de
datos multidimensional), la diferencia est ms bien a nivel
conceptual; en las bases de datos multidimensionales los campos o
atributos de una tabla pueden ser de dos tipos, o bien representan
dimensiones de la tabla, o bien representan mtricas que se desean
aprender.
1.6.1.6.

Bases de datos orientadas a objetos

Este modelo, bastante reciente, y propio de los modelos informticos


orientados a objetos, trata de almacenar en la base de datos los
objetos completos (estado y comportamiento).

Elaborado por Adolfo Rondn Chacn

12

Una base de datos orientada a objetos es una base de datos que


incorpora todos los conceptos importantes del paradigma de objetos:
Encapsulacin - Propiedad que permite ocultar la informacin al
resto de los objetos, impidiendo as accesos incorrectos o conflictos.
Herencia - Propiedad a travs de la cual los objetos heredan
comportamiento dentro de una jerarqua de clases.
Polimorfismo - Propiedad de una operacin mediante la cual puede
ser aplicada a distintos tipos de objetos.
En bases de datos orientadas a objetos, los usuarios pueden definir
operaciones sobre los datos como parte de la definicin de la base
de datos. Una operacin (llamada funcin) se especifica en dos
partes. La interfaz (o signatura) de una operacin incluye el nombre
de la operacin y los tipos de datos de sus argumentos (o
parmetros). La implementacin (o mtodo) de la operacin se
especifica separadamente y puede modificarse sin afectar la interfaz.
Los programas de aplicacin de los usuarios pueden operar sobre los
datos invocando a dichas operaciones a travs de sus nombres y
argumentos, sea cual sea la forma en la que se han implementado.
Esto

podra

denominarse

independencia

entre

programas

operaciones.
SQL:2003, es el estndar de SQL92 ampliado, soporta los conceptos
orientados a objetos y mantiene la compatibilidad con SQL92.
1.6.1.7.

Bases de datos documentales

Permiten la indexacin a texto completo, y en lneas generales


realizar bsquedas ms potentes. Tesaurus es un sistema de ndices
optimizado para este tipo de bases de datos. Otro muy usado por la
ONU es el MicroIsis.
1.6.1.8.

Bases de datos deductivas

Elaborado por Adolfo Rondn Chacn

13

Un sistema de base de datos deductiva, es un sistema de base de


datos pero con la diferencia de que permite hacer deducciones a
travs de inferencias. Se basa principalmente en reglas y hechos que
son almacenados en la base de datos. Las bases de datos
deductivas son tambin llamadas bases de datos lgicas, a raz de
que se basa en lgica matemtica. Este tipo de base de datos surge
debido a las limitaciones de la Base de Datos Relacional de
responder a consultas recursivas y de deducir relaciones indirectas
de los datos almacenados en la base de datos.

2. Algoritmo
El trmino algoritmia proviene del nombre del matemtico rabe Al-Khuarizmi,
el cual escribi sobre los aos 800 y 825 su obra Quitad Al Mugabala, donde se
recoga el sistema de numeracin hind y el concepto del cero.
Un algoritmo es una secuencia ordenada y finita de pasos o instrucciones que
representa un modelo de solucin para un determinado tipo de problema.
Tambin podra definirse con un conjunto de instrucciones que realizadas en un
orden lgico conducen a obtener la solucin de un problema.
Realizar un algoritmo, requiere conocer herramientas de diseo de los mismos,
sumado a la creatividad del creador y constituye la base para la
implementacin de programas, usando un software de desarrollo.

Debe

tenerse en cuenta que los algoritmos son independientes de los lenguajes de


programacin. El algoritmo es el plano, la programacin la implementacin.
Un algoritmo debe obtener un resultado, este resultado puede ser visible como
un nmero, un texto, un reporte o no visible un valor o una accin final en un
dispositivo fsico remoto. Un algoritmo, aparte de tener como caracterstica la
facilidad para transcribirlo, debe ser:
1. Preciso. Debe indicar el orden en el cual debe realizarse cada uno de los
pasos que conducen a la solucin del problema.

Elaborado por Adolfo Rondn Chacn

14

2. Definido. Esto implica que el resultado nunca debe cambiar bajo las
mismas condiciones del problema, ste siempre debe ser el mismo.
3. Finito. No se debe caer en repeticiones de procesos de manera
innecesaria; deber terminar en algn momento.
4. Determinado. Puede tener cero, uno o ms elementos de entrada
5. Obtiene resultados. Debe obtener datos de salida que sern los que se ha
planificado previos al algoritmo
3. Descripcin de los datos
3.1. Datos, en este caso declarar el tipo de dato, el nombre del dato y
realizar una asignacin si es necesario
3.2. Operadores.- son los smbolos usados tanto al escribir una formula
como al escribir una condicin
OPERADOR
MATEMATIC
O
+
*
/
^
% O MOD
OPERADOR
RELACIONA
LES
>
>=
<
<=
==

OPERACIN

ADICION
SUSTRACCION
MULTIPLICACI
ON
DIVISION
EXPONENCIAC
ION
RESTO DE LA
DIVISION
ENTERA
OPERACIN
MAYOR
MAYOR O
IGUAL
MENOR
MENOR O
IGUAL
IGUAL

RESULTADO

EJEMPL
O

SUMA
RESTA
PRODUCTO

S<-4+B
R<-1-B
P<-5*L

COCIENTE
POTENCIA

P<-L/5L
E<-3^2

RESIDUO
ENTERIO

RE<-N
%2

RESULTADO

EJEMP
LO

VOF
VOF

A>B
A>=B

VOF
VOF

A<B
A<=B

VOF

A==B

Elaborado por Adolfo Rondn Chacn

15

OPERADOR
ES
LOGICOS
&& / Y
|
~

OPERACIN

RESULTADO

EJEMP
LO

CONJUNCION

VOF

/ O

DISYUNCION

VOF

/ NO

NEGACION

VOF

A>B Y
B>4
A>=B
||A>C
NO
A>B

Elaborado por Adolfo Rondn Chacn

16

4. Herramientas de realizacin de algoritmos


Son tcnicas grficas y textuales que permiten representar la solucin de un
problema, mediante ALGORITMOS, se asemejan a la realizacin de un plano
antes de proceder a la construccin de una edificacin.
Estas herramientas son 3:
Herramienta textual

Pseudocdigo

Herramientas grficas;

Diagramas de flujo

Diagramas nassi sneidermann

4.1. Pseudocdigo
El pseudocdigo es una de las herramientas ms conocidas para el diseo de solucin de
problemas por computadora. Esta herramienta permite pasar casi de manera directa la
solucin del problema a un lenguaje de programacin especfico. El pseudocdigo es
una serie de pasos bien detallados y claros que conducen a la resolucin de un
problema.
La facilidad de pasar casi de forma directa el pseudocdigo a la computadora ha dado
como resultado que muchos programadores implementen de forma directa los
programas en la computadora, cosa que no es muy recomendable, sobre todo cuando no
se tiene la suficiente experiencia para tal aventura, pues se podran tener errores propios
de la poca experiencia acumulada con la solucin de diferentes problemas.
Por ejemplo, el pseudocdigo para determinar el volumen de una caja de dimensiones
A, B y C se puede establecer de la siguiente forma:
Inicio proceso
Leer A, B y C.

Elaborado por Adolfo Rondn Chacn

17

V = A* B * C )
Escribir V.
finProceso
4.2. Los diagramas de Flujo
Es una herramienta que permite representar visualmente qu operaciones se requieren y
en qu secuencia se deben efectuar para solucionar un problema dado as, un diagrama
de Flujo es la representacin grfica mediante smbolos especiales, de los pasos o
procedimientos de manera secuencial y lgica que se deben realizar para solucionar un
problema dado.
En la tabla 1.1 se muestran algunos de los principales smbolos utilizados para construir
un diagrama de Flujo.
Dentro de los diagramas de Flujo se pueden utilizar los smbolos que se presentan en la
tabla 1.2, con los cuales se indican las operaciones que se efectuarn a los datos con el
in de producir un resultado.

Smbolo

Significado

Tabla 1.1 Principales smbolos utilizados para construir los diagramas de Flujo.

Elaborado por Adolfo Rondn Chacn

18

Ejemplo, determinar el volumen de una caja de dimensiones A, B y C como se muestra


en la figura 1.1.

Figura 1.1 Diagrama de Flujo para obtener el volumen de un deposito rectangular.


Y como se puede ver de manera grfica, se establece de forma precisa la secuencia de
los pasos por realizar para obtener el resultado del volumen. Como se puede verificar,
son los mismos pasos que se establecieron en el algoritmo presentado previamente
mediante el pseudocdigo.
4.3. Diagramas Nassi-Schneiderman N/S
El diagrama N-S es una tcnica en la cual se combina la descripcin textual que se
utiliza en el pseudocdigo y la representacin grfica de los diagramas de Flujo. Este
tipo de tcnica se presenta de una manera ms compacta que las dos anteriores,
contando con un conjunto de smbolos muy limitado para la representacin de los pasos
que se van a seguir por un algoritmo; por consiguiente, para remediar esta situacin, se
utilizan expresiones del lenguaje natural, sinnimos de las palabras propias de un
lenguaje de programacin (leer, hacer, escribir, repetir, etctera).
Los smbolos ms utilizados en diagrama N/S corresponden a un tipo de estructura para
la solucin del problema, esas estructuras pueden ser: secuenciales de decisin y de
ciclo. Estas estructuras de los diagramas N/S se presentan en la tabla 1.3.
Smbolo

Tipo de estructura

Elaborado por Adolfo Rondn Chacn

19

Principales estructuras utilizadas para construir los diagramas N/S.


Por ejemplo, se puede establecer la solucin del diagrama N/S para determinar el
volumen de una caja de dimensiones A, B y C como se muestra en la figura 1.2.
Como se puede ver de este ejemplo, los diagramas N/S son como los diagramas de
flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones
sucesivas se escriben dentro de las cajas sucesivas y, como en los diagramas de flujo, se
pueden escribir

diferentes acciones en una caja.

Leer A, B y C.
V = A* B * C )
Escribir V.
Figura 1.2 Diagrama N/S para obtener el volumen de un recipiente rectangular.
Establecer cul herramienta utilizar para representar los algoritmos diseados para la
solucin de problemas estar en funcin del gusto y preferencia del programador, y
quizs no tanto en funcin de la complejidad de los problemas, ya que si bien es cierto
que los diagramas N/S tienen pocos smbolos, presentan la ventaja de que por lo
compacto que resultan sus representaciones suelen ser ms fciles de leer y de
transcribir al lenguaje de programacin que se utilizar, pero luego resulta a veces
complicado acomodar las acciones al construir el diagrama.
La figura 1.3 que muestra un diagrama N/S con el algoritmo para obtener el rea de un
rectngulo, en el cual la solucin tiene una estructura secuencial.
Leer b, h
a=b*h

Elaborado por Adolfo Rondn Chacn

20

Escribir rea:, a
Figura 1.3 Diagrama N/S con una estructura secuencial.
Para una estructura de decisin se muestra la figura 1.4, en la cual se tiene la solucin
de un algoritmo para determinar cul de dos cantidades es la mayor.
Leer c1, c2
c1 > c2
Si
m <- c1
escribir m

No
m <- c2

Figura 1.4 Estructura selectiva de un diagrama N/S.


Finalmente para una estructura de ciclo, el smbolo que se utiliza es como el que se
muestra en la figura 1.5, en el cual estn presentes una combinacin de estructuras
secuenciales con la de ciclo. En este diagrama se presenta la solucin de la suma de diez
cantidades cualesquiera.
Para i=1 paso 1
Leer c
S <- s + c
Hasta 10
Escribir s
Figura 1.5 Estructura de repeticin controlada de un diagrama N/S.

Elaborado por Adolfo Rondn Chacn

21

5. Etapas para resolver un problema usando un computador


a) Anlisis del problema.- definir y delimitar el problema, Delimitar los resultados
solicitados, definir los procesos necesarios para llegar a los resultados y
finalmente considerar cuales datos son de entrada o necesarios de acuerdo a los
procesos
b) Diseo y desarrollo del algoritmo.- (utilizar una herramienta de diseo:
pseudocodigo, diagramas de flujo, diagramas n-s, descripcin natural del
proceso de solucin.
c) Prueba de escritorio.- Seguimiento manual de los datos y los procesos
descritos en el algoritmo, esto tiene la finalidad de establecer la verificacin de
la lgica
d) Codificacin.- Seleccionar un lenguaje de programacin y hacer uso de la
sintaxis y estructura gramatical del software de desarrollo elegido.
e) Compilacin o interpretacin del programa.- El software de desarrollo
traduce las instrucciones escritas verificando las reglas del lenguaje y usando las
palabras reservadas del lenguaje utilizado
f) Ejecucin.- el programa es ejecutado para verificar la lgica correcta, con los
datos reales esperados
g) Depuracin.- etapa del debugging o limpieza de deteccin, localizacin y
eliminacin de errores y validacin del programa.
h) Evaluacin de resultados y manual del usuario.- obtencin de resultados y
verificar si son correctos.

Elaborado por Adolfo Rondn Chacn

22

6. Resolucin de algoritmos
Ejercicio.-

Se requiere un algoritmo para determinar el cambio que recibir una


persona que adquiere un producto en la tienda.

En esta solucin lo que se propone es determinar el cambio que recibir una persona,
para esto es necesario conocer cunto cuesta el producto (CP) y qu cantidad de dinero
disponible se tiene, y resolver el problema mediante una simple diferencia entre lo que
se pag y el costo del producto.
Pseudocodigo
Proceso cambio
Leer cp,cd
cambio <- cd-cp
Escribir cambio
FinProceso

FIBURA 1.6

Diagrama de flujo para determinar el cambio que recibir una persona al adquirir
un producto.
Prob 2. Modificar el problema anterior de forma que tenga en cuenta si el disponible de
dinero fuera insuficiente para la compra muestra en la figura 1.7.

Nombre de las variables


CP

Costo de producto

CD

Cantidad de dinero
Pseudocdigo de un planteo mejorado

Proceso cambio1
Leer cp,cd
si cp>cd Entonces
Escribir "monto insuficiente"
Sino
cambio <- cd-cp
Escribir cambio
Finsi

Elaborado por Adolfo Rondn Chacn

23

FinProceso
Figura 1.7 Diagrama de flujo para determinar el cambio que recibir una persona al
adquirir un producto.
Leer cp , cd
cp > cd
Si
Escribir m.insuf

No
Cambio <- cd - cp
escribir cambio

Figura 1.8 Diagrama n-s para determinar el cambio que recibir una persona al
adquirir un producto.
Como se puede ver, en ocasiones exponer la solucin de un problema dado depender
de cmo se considere su planteamiento, y tambin tendr mucho que ver la forma en la
que el diseador lo conceptualice; debido a esto, es muy importante, cuando se realicen
algoritmos para la solucin de problemas prcticos, que se plantee de manera correcta lo
que se quiere y se aclaren los puntos necesarios que permitan disear la solucin ms
ptima, pues hay que recordar que un algoritmo es siempre perfectible.
Para los siguientes captulos se propondr la solucin de problemas donde se utilicen
para su representacin principalmente pseudocdigo y diagramas de flujo, y en otros
casos diagramas N/S.
Pero antes de pasar al planteamiento y solucin de problemas, es necesario dejar bien
claro que las soluciones planteadas en este texto no son nicas, y pueden ser mejoradas
por los lectores.
Es necesario conocer que para resolver un problema usando un lenguaje de
programacin, debe ceirse paso a paso a un procedimiento:
6.1. Planteo del problema

Enterarse de las necesidades del usuario, entender plenamente lo requerido por


el usuario

Plantear la posible solucin (salidas, procesos y entradas)

Desarrollar el algoritmo en forma secuencial y lgica

Implementarlo en un lenguaje de programacin.

Elaborado por Adolfo Rondn Chacn

24

6.2. Una solucin del problema


En esta fase se plantea la solucin al problema usando una de las
herramientas de diseo de programas
Sin importar qu herramienta o tcnica se utilice para la solucin de un problema dado,
sta tendr una estructura, esta se inicia despus del planteo, realizando una tabla en la
que se lleva la cuenta de las variables y constantes, su descripcin y su tipo.
Adicionalmente si se trata de constantes debe colocarse el valor que va a aceptar a lo
largo de la solucin. Como se muestra en la tabla que a continuacin se muestra
Nombre de la variable
h
b
rea

Descripcin
Altura del rectngulo
Base del rectngulo
rea del rectngulo

Tipo
Real
Real
Real

A esta accin se denomina como declaracin de las variables que se utilizarn para
obtener el rea de un rectngulo.
Debe tenerse presente que la solucin de un problema dado mediante el uso de una
computadora es un sistema, el cual debe tener una entrada de datos, los cuales sern
procesados para obtener una salida, que es la solucin o informacin que se busca. En la
figura 2.1 se muestra el esquema de un sistema que transforma los datos en informacin
mediante un proceso.
Entrada

proceso

Salida

7. Implementacin de los algoritmos


Los algoritmos se pueden implementar usando 3 estructuras bsicas: la
secuencial, la de seleccin o la repetitiva.
El algoritmo provee de mtodos de solucin de problemas a ser implementados
en los programas de computadora. Por lo que se concluye que el programa es
la implementacin de un algoritmo en un determinado lenguaje de
programacin

Elaborado por Adolfo Rondn Chacn

25

8. Elementos de diseo de programas


Es un conjunto de herramientas que permiten elaborar una solucin a
problemas que se pueden resolver usando el computador y cuyo primer paso
es la elaboracin del algoritmo.
Estas tcnicas estn basadas en principios de:

Programacin modular: Es la tcnica de programacin que consiste en


dividir el programa en partes ms pequeas, llamados mdulos.

Programacin estructurada: Es una tcnica de programacin basada


en tres estructuras bien determinadas: secunciales, selectivas o,
condicionales y repetitivas.

8.1. Programacin Modular


Es usar el criterio de DIVIDE Y VENCERAS, En todo algoritmo o programa
existir un mdulo o programa principal que es al que transfiere el control a
las partes, cuando comienza la ejecucin del programa, y luego desde l, se
va llamando al resto de los mdulos.
Llamar a un mdulo implica transferirle el control, es decir que se ste
ltimo se inicia a ejecutar y lo har desde su inicio hasta terminar,

al

concluir este devuelve el control al mdulo que lo llam. Dentro del mdulo
a su vez se puede invocar a otro
Un mdulo solo tiene acceso a los mdulos a los que llama y a los sub
mdulos a los que a su vez llaman stos. Los resultados producidos por un
mdulo pueden ser utilizados por otros.
No existe un criterio fijo para determinar el tamao, ni muy grandes ni muy
pequeos, la idea fundamental es que realicen una nica tarea y obtengan
un resultado.
Los mdulos o subprogramas reciben diferentes nombres segn el lenguaje
de programacin y segn su tipo. Se llaman procedimientos y funciones

Elaborado por Adolfo Rondn Chacn

26

(Pascal, C), subrutinas (basic, fortran), secciones (cobol).

En la

programacin por objetos toma el nombre de mtodos y clases.


8.2. Programacin Estructurada
La programacin estructurada fue planteada por warnier. La caracterstica
fundamental es que se va a basar en el uso nicamente de tres estructuras
de control. Para ello se apoya en las siguientes filosofas:
1. Diseo descendente (top down): Arriba Abajo. Se trata de
descomponer el problema en niveles o pasos cada vez ms sencillos, tal
que la salida de una etapa va a servir como entrada de la siguiente. En
las primeras etapas tomamos el punto de vista externo, es decir, que
entradas hay y que salidas hay, y a medida que vamos bajando de nivel,
lo vamos viendo de modo interno (como lo hace por dentro).
2. Estructuras bsicas de control: Para hacer cualquier programa
siguiendo los anteriores pasos de razonamiento, al final codificamos el
programa usando tres tipos de secuencias (repetitivas, alternativas y
secuenciales).
Al final todo problema va a tener una nica entrada y una nica salida.
8.2.1. Estructuras de programacin estructurada
8.2.1.1.

Estructura secuencial

Una estructura se define como un esquema con cierta distribucin y orden


que permite representar una idea de forma simplificada, una despus de
otra, bajo ciertas condiciones es constante (Trejos, 1999)... Tambin se la
conoce como estructura lineal. Est compuesta de instrucciones que deben
ejecutarse en forma consecutiva, una tras otra, siguiendo una lnea de flujo.
Solamente los problemas muy sencillos pueden resolverse haciendo uso
nicamente de esta estructura. La estructura secuencial hace parte de
soluciones a problemas complejos en las que se la utiliza mezclada con
estructuras iterativas (repetir varias veces un conjunto de instrucciones) y
condicionales

Elaborado por Adolfo Rondn Chacn

27

8.2.2. Modelo de estructura secuencial.


Una estructura de control secuencial puede contener cualquiera de las
siguientes instrucciones:

Declaracin variables

Asignacin de valores

Entrada de datos

Procesamiento de datos (operaciones)

Obtencin de resultados

8.3. Estructuras de Seleccin (decisin o alternativa)


Las estructuras de seleccin son estructuras de control utilizadas para la
toma decisiones dentro de un programa. A estas estructuras se conocen
tambin como estructuras selectivas o estructuras de decisin y son las
siguientes:

La estructura de seleccin simple (SI).

La estructura de seleccin doble (SI-SINO).

La estructura de seleccin mltiple (SEGUN)


8.3.1. Estructura de Seleccin Simple SI

La estructura de seleccin simple permite ejecutar una accin o un grupo de


acciones slo si se cumple una determinada condicin. As, en el grfico, si la
condicin es verdadera se ejecuta la accin acciona; en caso contrario, no se
hace nada.
Pseudocdigo (accin simple)
SI (condicin)
Accin a

Pseudocdigo (accin compuesta)


SI (condicin) {
Accin a1
accina2
Accin
}

Estructura de Seleccin Simple

Elaborado por Adolfo Rondn Chacn

28

Por ejemplo, si se desea cambiar el signo de un


nmero nicamente en caso que sea negativo,
podemos escribir:
SI (nmero<0)
nmero = -1 * nmero
Si el nmero no es negativo, simplemente esta estructura se pasara por alto y
se continuara en la siguiente instruccin despus del SI.
8.3.2. Estructura de seleccin doble si - sino
La estructura de seleccin doble permite
seleccionar una ruta de dos rutas posibles
en base a la verdad o falsedad de una
condicin. As, en la Figura 3.2, si la
condicin es verdadera, se ejecuta la accin
A; en caso contrario, se ejecuta la accin B.
En la Figura se muestra el diagrama de flujo y el pseudocdigo de la estructura
de seleccin doble. Diagrama de Flujo
Pseudocdigo (accin simple)
SI (condicin)
acciona
SINO
accinb

Pseudocdigo (accin compuesta)


SI(condicin ){
acciona1
acciona2
acciona
}
SINO{
accionb1
accionb2
accionb
}

Ejemplo
Por ejemplo, la siguiente estructura de seleccin doble determina si una
persona es mayor o menor de edad:
SI( edad >= 18 )
estado = "Mayor de edad"

Elaborado por Adolfo Rondn Chacn

29

SINO
estado = "Menor de edad"
Esto imprime "Mayor de edad" si la persona tiene 18 aos o ms e imprime
"Menor de edad" si la persona tiene menos de 18 aos. En cualquiera de los
casos, despus de efectuar la impresin, se ejecutar la primera instruccin
que sigue a la estructura SI...SINO.
8.3.3. Estructura de seleccin doble en cascada si-sino-si
La estructura de seleccin doble en cascada est
formada por varias estructuras de seleccin doble
SI-SINO puestas una a continuacin de otra de
forma que aun SI-SINO le sigue otro SI-SINO.
En la estructura de seleccin doble en cascada,
las

condiciones

se

evalan

en

orden

descendente, pasando de una condicin a otra si


la condicin anterior resulta falsa. En el momento
que se encuentra una condicin verdadera, se
efecta

la

accin

correspondiente

dicha

condicin y se corta el resto de la estructura. Si todas las condiciones resultan


falsas, se efecta la accin correspondiente al ltimo SINO, que se considera
como la accin por defecto.
En la Figura se muestra el diagrama de flujo y el pseudocdigo de la estructura
de seleccin doble en cascada, sera;
Pseudocdigo de la estructura de decisin doble en cascada
SI( condicion1 )
Pseudocdigo ( Forma 2 )
accion1
SI( condicion1 )
SINO
accion1
SI( condicion2 )
SINO SI( condicion2 )
accion2
accion2
SINO
SINO SI( condicion3 )
SI( condicion3 )
accion3
accion3
SINO
SINO
acciondefecto
acciondefecto
ejemplo de estructura de Seleccin Doble en Cascada
Elaborado por Adolfo Rondn Chacn

30

Por ejemplo, la siguiente estructura de seleccin doble en cascada determina el


signo de un nmero entre positivo, negativo o cero:
SI( n> 0 )
signo = "Positivo"
SINO
SI( n< 0 )
signo = "Negativo"
SINO
signo = "Cero"
Usando el otro formato tendramos:

SI( n> 0 )
signo = "Positivo"
SINO SI( n< 0 )
signo = "Negativo"
SINO
signo = "Cero"

8.3.4. Estructura de seleccin mltiple segun


La estructura de seleccin mltiple SEGUN permite elegir una ruta de entre
varias rutas posibles, en base al valor de una variable que acta como
selector. La estructura compara el
valor

del

selector

con

las

constantes c1, c2, ..., cn en orden


descendente. En el momento en
que

se

encuentre

una

coincidencia, se ejecuta la accin


correspondiente
constante

se

dicha

abandona

la

estructura.
En la Figura se muestra el diagrama de flujo y el pseudocdigo de la estructura
de seleccin mltiple.
Diagrama de Flujo
Estructura de Seleccin Mltiple
Pseudocdigo
SEGUN( selector ){
CASO c1 : accion1
CASO c2 : accion2
CASO c3 : accion3

CASO cn : accionn
DEFECTO : acciondefecto
}

Elaborado por Adolfo Rondn Chacn

31

Ejemplo de estructura segn


La siguiente estructura de seleccin mltiple determina el nombre de la
estacin del ao conociendo el nmero de la estacin (1 para primavera, 2 para
verano, 3 para otoo y 4 para invierno):
SEGUN(nmeroEstacion){
CASO 1: nombreEstacion = "Primavera"
CASO 2: nombreEstacion = "Verano"
CASO 3: nombreEstacion = "Otoo"
DEFECTO : nombreEstacion = "Invierno"
}
9. EJERCICIOS DESARROLLADOS
Ejercicio 1:- En una playa de estacionamiento cobran S/. 2.5 por hora o
fraccin. Disee un algoritmo que determine cuanto debe pagar un cliente por
el estacionamiento de su vehculo, conociendo el tiempo de estacionamiento en
horas y minutos.
Algoritmo 1
INICIO
// Declaracin de variables
ENTERO horas, minutos
REAL pago
// Entrada de datos
LEER horas, minutos
// Si hay alguna fraccin de hora,
incrementa las horas a pagar en una
unidad
SI( minutos > 0 )
horas = horas + 1
// Determina el importe a pagar
pago = horas * 2.5
// Salida de resultados
IMPRIMIR pago
FIN

Algoritmo 2
INICIO
// Declaracin de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Determina el nmero de horas a
pagar
SI( minutos > 0 )
horasPagar = horas + 1
SINO
horasPagar = horas
// Determina el importe a pagar
pago = horasPagar * 2.5
// Salida de resultados
IMPRIMIR pago
FIN

Ejercicio 2:- Disee un algoritmo que determine si n nmero es o no es, par


positivo.
Algoritmo
INICIO
// Declaracin de variables
REAL nmero
Elaborado por Adolfo Rondn Chacn

CADENA tipoNmero
// Entrada de datos
LEER nmero
32

// Determina si el nmero es o no es,


par positivo
SI( (nmero%2==0) && (nmero>0) )
tipoNmero = "El nmero es par
positivo"
SINO

tipoNmero = "El nmero no es par


positivo"
// Salida de resultados
IMPRIMIR tipoNmero
FIN

Ejercicio 3: -Disee un algoritmo que lea tres nmeros y determine el nmero


mayor.
Algoritmo
INICIO
// Declaracin de variables
REAL nmero1, nmero2, nmero3,
nmeroMayor
// Entrada de datos
LEER nmero1, nmero2, nmero3

// Determina el mayor
nmeroMayor = nmero1
SI(nmero2 >nmeroMayor )
nmeroMayor = nmero2
SI(nmero3 >nmeroMayor )
nmeroMayor = nmero3
// Salida de resultados
IMPRIMIR mayor
FIN

Ejercicio 4:- Una tienda ha puesto en oferta la venta al por mayor de cierto
producto, ofreciendo un descuento del 15% por la compra de ms de 3
docenas y 10% en caso contrario. Adems por la compra de ms de 3 docenas
se obsequia una unidad del producto por cada docena en exceso sobre 3.
Disee un algoritmo que determine el monto de la compra, el monto del
descuento, el monto a pagar y el nmero de unidades de obsequio por la
compra de cierta cantidad de docenas del producto.
Algoritmo
INICIO
// Declaracin de variables
REAL
montopag,
montocom,
montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
LEER docenas, precio
// Determina el monto de la compra
montocom = docenas*precio
// Determina el monto del descuento y
el obsequio
Elaborado por Adolfo Rondn Chacn

SI( docenas > 3 ){


montodes = 0.15*montocom
obsequio = docenas-3
}
SINO{
montodes = 0.10*montocom
obsequio = 0
}
// Determina el monto a pagar
montopag = montocom - montodes

33

// Salida de resultados
IMPRIMIR montocom,
montopag, obsequio

FIN
montodes,

Ejercicio 5:- Disee un algoritmo que lea un nmero de tres cifras y determine
si es o no capica. Un nmero es capica si es igual al revs del nmero.
Como el nmero tiene tres cifras, para ser capica basta con que la cifra de las
unidades sea igual a la cifra de las centenas. Por ejemplo: 353, 878, etc.
Algoritmo
INICIO
// Salida de resultados
ENTERO nmero, unidades, centenas
CADENA tipoNmero
// Entrada de datos
LEER nmero
// Si el nmero tiene tres cifras...
SI(nmero>= 100 &&nmero<= 999 ){
// Determina la cifra de las unidades y
la cifra de las centenas
unidades = nmero%10
centenas = nmero/100

// Determina el tipo de nmero entre


capica o no capica
SI( unidades == centenas )
tipoNmero = "El nmero es capica"
SINO
tipoNmero = "El nmero no es
capica"
// Muestra el tipo de nmero
IMPRIMIR tipoNmero
}
SINO
IMPRIMIR "Ingrese un nmero de tres
cifras"
FIN

Ejercicio 6:- Disee un algoritmo que califique el puntaje obtenido en el


lanzamiento de tres dados en base a la cantidad seis obtenidos, de acuerdo a
lo siguiente: tres seis, excelente; dos seis, muy bien; un seis, regular; ningn
seis, psimo.
Algoritmo
INICIO
// Declaracin de variables
ENTERO dado1, dado2, dado3
CADENA calificacin
// Entrada de datos
LEER dado1, dado2, dado3
// Determina la calificacin
SI( dado1 + dado2 + dado3 == 18 )
calificacin = "Excelente"

SINO SI( dado1+dado2 == 12 ||


dado1+dado3 == 12 || dado2+dado3
== 12 )
calificacin = "Muy bien"
SINO SI( dado1 == 6 || dado2 == 6 ||
dado3 == 6 )
calificacin = "Regular"
SINO
calificacin = "Psimo"
// Salida de resultados
IMPRIMIR calificacin
FIN

Ejercicio 7:- Una compaa dedicada al alquiler de automviles cobra un monto


fijo de $30 para los primeros 300 km de recorrido. Para ms de 300 km y hasta

Elaborado por Adolfo Rondn Chacn

34

1000 km, cobra un monto adicional de $ 0.15 por cada kilmetro en exceso
Algoritmo
montopag
= de montofijo
+
sobre 300. Para ms de 1000 km cobra un
monto adicional
$ 0.10 por cada
INICIO
0.15*(kilomrec-300)
kilmetro
en exceso
sobre 1000. Los precios
// Declaracin
de variables
SINOya incluyen el 18% del impuesto
REAL
montopag,
montoigv,
montopag
= montofijo
+ 0.15*700
+
generalkilomrec,
a las ventas,
IGV. Disee
un algoritmo
que determine
el monto
a pagar
montofijo = 30, igv = 0.18
0.10*(kilomrec-1000)
por
el alquiler
de un vehculo y el monto incluido
del impuesto.
// Entrada
de datos
// Determina
el monto del impuesto
LEER kilomrec
montoigv = igv*montopag /(1+igv)
// Determina el monto a pagar
// Salida de resultados
SI( kilomrec <= 300 )
IMPRIMIR montopag, montoigv
montopag = montofijo
FIN
SINO SI( kilomrec <= 1000 )
Ejercicio 8:- Disee un algoritmo que determine quienes son contemporneos
entre Juan, Mario y Pedro.
Algoritmo
INICIO
// Declaracin de variables
ENTERO juan, mario, pedro
CADENA contemporneos
// Entrada de datos
LEER juan, mario, pedro
//
Determina
quienes
son
contemporneos
SI( juan == mario && mario == pedro )
contemporneos = "Los tres son
contemporneos"
SINO SI( juan == mario )

contemporneos = "Juan y Mario son


contemporneos"
SINO SI( juan == pedro )
contemporneos = "Juan y Pedro son
contemporneos"
SINO SI( mario == pedro )
contemporneos = "Mario y Pedro son
contemporneos"
SINO
contemporneos
=
"No
hay
contemporneos"
// Salida de resultados
IMPRIMIR contemporneos
FIN

Ejercicio 9:- El promedio de prcticas de un curso se calcula en base a cuatro


prcticas calificadas de las cuales se elimina la nota menor y se promedian las
tres notas ms altas. Disee un algoritmo que determine la nota eliminada y el
promedio de prcticas de un estudiante.
Algoritmo
INICIO
// Declaracin de variables
REAL pc1, pc2, pc3, pc4, pcmenor,
promedio
// Entrada de datos
LEER pc1, pc2, pc3, pc4
// Determina la nota menor
pcmenor = pc1
SI( pc2 < pcmenor )
pcmenor = pc2

SI( pc3 < pcmenor )


pcmenor = pc3
SI( pc4 < pcmenor )
pcmenor = pc4
// Determina el promedio
promedio = (pc1 + pc2 + pc3 + pc4 pcmenor )/3
// Salida de resultados
IMPRIMIR promedio, pcmenor
FIN

Elaborado por Adolfo Rondn Chacn

35

Ejercicio 10:- Disee un algoritmo que lea tres longitudes y determine si forman
o no un tringulo. Si es un tringulo determine de que tipo de tringulo se trata
entre: equiltero (si tiene tres lados iguales), issceles (si tiene dos lados
iguales) o escaleno (si tiene tres lados desiguales). Considere que para formar
un tringulo se requiere que: "el lado mayor sea menor que la suma de los
otros dos lados".
Algoritmo
INICIO
// Declaracin de variables
REAL L1, L2, L3, suma
CADENA tipoRectangulo
// Entrada de datos
LEER L1, L2, L3<
// Determina el lado mayor
mayor = L1
SI( L2 > mayor )
mayor = L2
SI( L3 > mayor )
mayor = L3
// Determina la suma de los lados a
excepcin del lado mayor
suma = L1 + L2 + L3 - mayor
// Determina de que tipo de tringulo
se trata

SI( mayor < suma ){


SI( ( L1 == L2 ) && ( L2 == L3 ) )
tipoRectangulo
=
"Tringulo
equiltero"
SINO SI( ( L1 == L2 ) || ( L1 == L3 ) || (
L2 == L3 ) )
tipoRectangulo = "Tringulo issceles"
SINO
tipoRectangulo = "Tringulo escaleno"
}
SINO
tipoRectangulo = "No es un tringulo"
// Salida de resultados
IMPRIMIR tipoRectangulo
FIN

Ejercicio 11:- Disee un algoritmo que lea tres nmeros enteros y determine el
menor valor positivo. Si los nmeros positivos son iguales, dar como menor a
cualquiera de ellos.
Algoritmo
INICIO
// Declaracin de variables
ENTERO a, b, c, menor
// Entrada de datos
LEER a, b, c
// Determina el menor
// Aqu a, b y c podran ser positivos
SI( a> 0 ){
menor = a
SI( b > 0 && b < menor )
// Aqu slo c podran ser positivos
SINO SI( c> 0 ){
menor = c
}menor = b
SI( c> 0 && c < menor )
Elaborado por Adolfo Rondn Chacn

menor = c
}
// Aqu slo b y c podran ser positivos
SINO SI( b > 0 ){
menor = b
SI( c> 0 && c < menor )
menor = c
}
// Guardamos el indicador -1 para
saber que no hay positivos
SINO
menor = -1
// Salida de resultados
36

SI( menor != -1 )
IMPRIMIR menor
SINO

IMPRIMIR "No se ingres ningn


nmero positivo"
FIN

Ejercicio 12:- Disee un algoritmo que lea tres nmeros y los imprima de mayor
a menor y de menor a mayor.
Algoritmo
INICIO
// Declaracin de variables
REAL n1, n2, n3, mayor, menor,
medio
// Entrada de datos
LEER n1, n2, n3
// Determina el menor
menor = n1
SI( n2 < menor )
menor = n2
SI( n3 < menor )
menor = n3

// Determina el mayor
mayor = n1
SI( n2 > mayor )
mayor = n2
SI( n3 > mayor )
mayor = n3
// Determina el medio
medio = n1+n2+n3-mayor-menor
// Imprime en orden ascendente
IMPRIMIR menor, medio, mayor
// Imprime en orden descendente
IMPRIMIR mayor, medio, menor
FIN

Ejercicio 13:- Disee un algoritmo para obtener el grado de eficiencia de un


operario de una fbrica de tornillos, de acuerdo a las siguientes condiciones,
que se le imponen para un perodo de prueba:
- Menos de 200 tornillos defectuosos.
- Ms de 10000 tornillos producidos.
El grado de eficiencia se determina de la siguiente manera:
- Si no cumple ninguna de las condiciones, grado 5.
- Si slo cumple la primera condicin, grado 6.
- Si slo cumple la segunda condicin, grado 7.
- Si cumple las dos condiciones, grado 8.
Las condiciones impuestas por la fbrica son:
torpro< 200siendo torpro el nmero de tornillos producidos
tordef> 10000siendo tordef el nmero de tornillos defectuosos
Algoritmo 1
INICIO
// Declaracin de variables
ENTERO torpro, tordef, grado
// Entrada de datos
LEER torpro, tordef
Elaborado por Adolfo Rondn Chacn

// Determina el grado de eficiencia


SI( tordef < 200 ){
SI( torpro > 10000 )
grado = 8
SINO
37

grado = 6
}
SINO{
SI( torpro > 10000 )
grado = 7
SINO
grado = 5
}
// Salida de resultados
IMPRIMIR grado
FIN
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO torpro, tordef, grado

// Entrada de datos
LEER torpro, tordef
// Determina el grado de eficiencia
SI( tordef < 200 && torpro > 10000 )
grado = 8
SINO SI( tordef < 200 )
grado = 6
SINO SI( torpro > 10000 )
grado = 7
SINO
grado = 5
// Salida de resultados
IMPRIMIR grado
FIN

Ejercicio 14:- Se cuenta con los votos obtenidos por Juan, Pedro y Mara en
una eleccin democrtica a la presidencia de un club. Para ganar la eleccin se
debe obtener como mnimo el 50% de los votos ms 1. En caso que no haya
un ganador se repite la eleccin en una segunda vuelta. Van a la segunda
vuelta los dos candidatos que obtengan la ms alta votacin. Se anula la
eleccin en caso de producirse un empate doble por el segundo lugar o un
empate triple. Disee un algoritmo que determine el resultado de la eleccin.
Algoritmo
INICIO
// Declaracin de variables
ENTERO vjuan, vpedro, vmaria,
vmingan
CADENA resultado
// Entrada de datos
LEER vjuan, vpedro, vmaria
// Determina la votacin mnima para
ganar
vmingan = (vjuan + vpedro +
vmaria)/2 + 1
// Determina el resultado de la
eleccin
SI( vjuan >= vmingan )
resultado = "Gana Juan "
SINO SI( vpedro >= vmingan )
resultado = "Gana Pedro"
SINO SI( vmaria >= vmingan )

resultado = "Gana Mara"


SINO SI( vpedro > vjuan && vmaria >
vjuan )
resultado = "Pasan a la segunda
vuelta Pedro y Mara"
SINO SI( vpedro > vmaria && vjuan >
vmaria )
resultado = "Pasan a la segunda
vuelta Pedro y Juan"
SINO SI( vmaria > vpedro && vjuan >
vpedro )
resultado = "Pasan a la segunda
vuelta Mara y Juan "
SINO
resultado = "Eleccin anulada"
// Salida de resultados
IMPRIMIR resultado
FIN

Elaborado por Adolfo Rondn Chacn

38

Ejercicio 15:- Disee un algoritmo que lea un nmero entero de 3 cifras, y


forme el mayor nmero posible con las cifras del nmero ingresado. El nmero
formado debe tener el mismo signo que el nmero ingresado.
Algoritmo
INICIO
// Declaracin de variables
ENTERO num1, num2, numaux, uni,
dec, cen, menor, mayor,medio
// Entrada de datos
LEER num1
// Si el nmero tiene tres cifras...
SI( ( num1 >= 100 && num1 <= 999 )
&& ( num1 >= -999 && num1 <=
-100 ) ){
// Guarda el nmero en una variable
auxiliar para preservar el signo
numaux = num1
// Cambia el signo de num1 en caso
de ser negativo
SI( num1 < 0 )
num1 = -num1
// Determina las cifras del nmero
cen = num1/100
dec = (num1%100)/10
uni = (num1%100)%10
// Determina la cifra menor
menor = cen
SI( dec < menor )
menor = dec

SI( uni < menor )


menor = uni
// Determina la cifra mayor
mayor = cen
SI( dec > mayor )
mayor = dec
SI( uni > mayor )
mayor = uni
// Determina la cifra del medio
medio = cen+dec+uni-mayor-menor
// Forma el nuevo nmero
SI( numaux > 0 )
num2 = mayor*100 + medio*10 +
menor
SINO
num2 = -1*(menor*100 + medio*10 +
mayor)
// Imprime el nuevo nmero
IMPRIMIR num2
}
SINO
IMPRIMIR "El nmero no tiene tres
cifras"
FIN

Ejercicios
1. Disee un aplicacin para una casa de juego en el que se ingresa una
ficha de 2 soles y se lanzan 3 dados basados en la siguiente regla:: tres
seis, puntaje excelente premio S/.10 ; dos seis, muy bien premio S/.2; un
seis regular mensaje premio volver a lanzar; ningn seis, psimo
mensaje Usted Perdi. En la salida se deben mostrar el nmero de cada
dado. Expresin para generar el randomDado=(int)(Math.random()*6+1)
2. Mano de Dios es una empresa de alquiler de automviles cobra un
monto fijo de S/.100 para los primeros 250 km de recorrido. Para ms de
250 km y hasta 1000 km, cobra un monto adicional de 0.55 por cada
kilmetro en exceso sobre 300. Para ms de 1000 km cobra un monto

Elaborado por Adolfo Rondn Chacn

39

adicional de 0.40 por cada kilmetro en exceso sobre 1000. Los precios
ya incluyen el 19% del impuesto general a las ventas, IGV. Obtener la
boleta de pago detallada al final del alquiler, incluya los montos sin incluir
impuestos, impuestos y total incluido impuestos
3. Un docente de Primaria, le solicita que prepare una aplicacin en la que
se ingresaran tres longitudes de segmentos y determine si forman o no
un tringulo. Si es un tringulo determine de que tipo de tringulo se
trata entre: equiltero (si
tiene tres lados iguales),
issceles (si tiene dos lados
iguales) o escaleno (si tiene
tres

lados

desiguales).

Considere que para formar


un tringulo se requiere

Cantidad
De 1 a 30
Por los siguientes
30
Por los siguientes
20
Por los siguientes
20
Por los siguientes

Precio
S/.1.15
S/.1.00
S/.0.80
S/.0.65
S/.0.45

que: "el lado mayor sea menor que la suma de los otros dos lados".
4. La tienda Te exprimo de a poco, vende gorritos para fiestas infantiles al
por mayor y menor, a un precio unitario, de acuerdo a la tabla que se
muestra obtener el monto que pagar el cliente si puede hacer solo un
pedido
5. Yo si la hago. Es una tienda que vende seguros de SOAT, esta empresa
los vendedores ganan un sueldo del 15% del total del monto de los seguros
vendidos mas S/23.00 por cada 300 soles de exceso sobre 4000. Obtener
el monto total que recibir el vendedor.
6. En el examen final del curso de matemticas, un alumno ha desarrollado
4 preguntas con igual puntaje, el profesor decide triplicar la nota ms
alta y duplicar la 2da nota ms alta, de las preguntas obtener la nota del
alumno.
7. En la empresa Un clavo saca otro clavo, se calcula el sueldo semanal
del trabajador tomando en cuenta que puede trabajar hasta 48 horas con
tarifa normal, para las horas en exceso(extras) tiene un adicional de
21%, si su sueldo es 1200 o menos recibe un descuento de ley de 9%, si
Elaborado por Adolfo Rondn Chacn

40

es mayor adems del descuento normal recibe otro descuento del 2%,
obtenga el monto neto a pagar
8. Un Jefe de departamento inicia su puntaje del semestre ante la direccin
con 30 puntos y recibe felicitaciones por hacer llamadas de atencin a
los profesores de su departamento, por cada llamada recibe un puntaje
de 7. Obtener el nombre y el puntaje del jefe de departamento al final del
semestre
9.

Yo vendo todo, es una tienda que vende seguros de SOAT,

cada

vendedor gana un bsico en funcin de su categora y adems recibe una


comisin en funcin del seguro vendido de acuerdo a
Categora
Monto
las tablas siguientes
del
bsico
Obtenga el monto que recibe el
finalizar el
1 vendedor alS/.500.0
mes conociendo que puede solo puede vender0 un tipo de
2
S/.450.0
seguro SOAT.
0
3
S/.400.0
0
4
S/.300.0
10. Cuatro docentes del departamento de Computacin 0 han sido
5
S/.250.0
encuestados y evaluados por sus alumnos, habiendo obtenido
un
0
puntaje real entre 0 y 5, obtenga la lista ordenada de los docentes luego

Vehculo

Porcenta
je
1 camin
4.5%
2 mnibus
4.0%
3
3.5%
camioneta
4
3.0%
automvil
5 moto taxi 2.5%

de ingresar el nombre y su puntaje en forma ascendente.


11. Richard, Oscar y Cristhian son tres hermanos, escriba un diagrama de
flujo y el programa correspondiente en Java que permita ingresar la
edad de los mismos y obtenga como resultado los mensajes de
ordenado ascendente, ordenado descendente o desordenado.
Magnitud del ngulo
0
De 0o a 90o
90 o
De 90o a 180o
180 o
De 180o a 270o
360 o

Clasificacin a obtener
Nulo
Agudo
Recto
Obtuso
Llano
Cncavo
Completo

Elaborado por Adolfo Rondn Chacn

41

12. El intihuatana o reloj incaico indica las horas de acuerdo al ngulo que
indica su sombra de la forma siguiente, para ello debe ingresar el Angulo en
grados minutos y segundos, los ngulos pueden ser
13. En el curso de matemticas se obtiene en promedio en base a tres
prcticas y tres exmenes, el promedio de las practicas se obtiene en
base a las dos mas altas, y en los exmenes, el profesor ha quedado
que incrementar 3 puntos a los que obtuvieran hasta 9 de nota, 2
puntos a los que obtienen ms de 9 y menos de 15 y 1 punto a los que
obtienen 15 hasta 17. No puede usar operadores lgicos y las notas
estn entre 0 y 20.
14. Los amigos Jos, Jonathan y Pilar ingresan al playland park y el que
tiene la talla intermedia recibe un premio sorpresa. Indicar que amigo se
lleva el premio.
15. Joel estudia ing. De sistemas, y lleva 7 cursos, el recibe una propina
semanal de 20 soles su papa ha decidido darle una propina adicional de
20 soles por curso aprobado al mes obtener el monto de la propina
mensual.
16. Se ingresa valores en grados de la temperatura del agua, obtener un
mensaje que indique si la temperatura es bajo cero, cero o mayor que
cero
17. Se ingresa un nmero correspondiente al mes del ao 2008, se desea
obtener como salida el nombre del mes al que corresponda, si el valor
no est en el rango de 0 a 12 obtener un mensaje de mes inexistente
18. Se ingresa el estado civil de Alexander, determinar el estado civil, si se
conoce que 1 es para los solteros, 2 para casados, 3 para viudos, 4 para
divorciados y el resto tiene el mensaje de estado civil no existe.
19. Acr system design debe adquir una cantidad de unidades de un
producto, cuenta con dos proveedores Tayloi y tai Heng, Tayloi le oferta
el producto a S/. 15 y 14% de descuento para ms de 35 unidades
adquiridas Tai heng oferta el producto a S/. 23 y 16% de descuento para
Elaborado por Adolfo Rondn Chacn

42

ms de 25 unidades adquiridas Indica que proveedor es ms


conveniente
20. Tai Heng ha puesto en oferta a la venta por docenas de un artculo de
sus litas ofreciendo un descuento de 9% por la compra de 5 docenas o
ms y 6% en caso contrario. Adems se obsequia un lapicero por cada
3 docenas en exceso sobre 5. Obtenga el monto de la compra, monto
del descuento, monto a pagar y cantidad de lapiceros de obsequio.

Elaborado por Adolfo Rondn Chacn

43

10. Concepto de Programa


Un programa es un conjunto de instrucciones que al ser ejecutadas resuelven
un problema.
Un programa tiene 4 partes:
1.

Declaracin de variables. En esta parte se definen los tipos de


datos que se utilizaran en el programa.

2.

Entrada de datos: Normalmente se va a ejecutar a travs de


instrucciones de lectura, y en lo que se le pide al usuario la
informacin que el programa va a necesitar para ejecutarse y se
hace a travs de lecturas o asignaciones.

3.

Procesos: Parte en la que se resuelve el problema usando los datos


de entrada.

4.

Salida: Mostrar en un dispositivo de salida los resultados de las


acciones anteriormente realizadas. Son acciones de escritura.
En la parte de las acciones a ejecutar se distinguen dos partes:

Declaracin de variables.

Instrucciones del programa.

11. Elementos Bsicos de un Programa


Qu es la sintaxis de un lenguaje?
Es el conjunto de reglas que tenemos que seguir a la hora de escribir un
programa en ese lenguaje tal que si no seguimos esas reglas de sintaxis
el compilador da errores.
Elementos delos lenguajes de programacin

Elaborado por Adolfo Rondn Chacn

44

1.

Palabras reservadas: Son un conjunto de palabras especiales que


nos sirven para definir la estructura del programa, y solo se pueden
usar para el fin para el que estn reservadas.

2.

Identificadores: Son los nombres que aparecen en el programa


dados por el usuario. Son por tanto los nombres de variables, de
constantes, de subprogramas y nombres de tipos creados por el
usuario.

3.

Caracteres especiales: Sirven como separadores entre sentencias,


por ejemplo el ;

4.

Instrucciones: De 3 tipos, secuenciales, repetitivas y selectivas, y


pueden aparecer elementos especiales (bucles, contadores,
interruptores y acumuladores).

12. Escritura de Programas


La primera es la zona de declaraciones de var y const, y la segunda es
la zona de las instrucciones del programa.
En la zona de instrucciones para que quede ms legible hay que usar la
indotacin y si es necesario hay que usar comentarios entre llaves.
La manera de aprender de forma fcil conocimientos bsicos para
programar en JCreator trata de ensear al detalle los primeros pasos
para aprender a programar usando el entorno del JCreator.
12.1.

JVM

Java es un lenguaje de programacin de alto nivel con el que se pueden


escribir programas de cualquier tipo. Se dice que es un lenguaje de alto
nivel porque se asemeja ms al lenguaje humano, a diferencia de los
lenguajes de bajo nivel que se asemejan ms al lenguaje de las
computadoras (conocidos como lenguajes mquina). Los programas
escritos en Java no son comprensibles en forma directa por el
procesador, por lo que requieren de pasos intermedios de traduccin al
lenguaje del computador conocido como lenguaje mquina.

Elaborado por Adolfo Rondn Chacn

45

Permite crear aplicaciones de todo tipo:


-

Comerciales

Cientficas

Juegos

Telecomunicaciones

Java permite crear 2 tipos de programas:


a) Applets: son programas para ser usados en o desde Internet.
b) Aplicaciones: son programas que no requieren de Internet.
Los applets son programas Java que se transmiten por Internet y que se
ejecutan incrustados en una pgina Web. Para ejecutar un applet se
requiere tener instalada una versin de la JVM..
Las aplicaciones son programas independientes de un navegador Web;
pero que,para ser ejecutados, tambin necesitan de una versin de la
JVM..
El siguiente manual nos permitir utilizar JCreator desde lo ms bsico y a
trabajar utilizando APPLETS.
13. Etapas para desarrollar un programa en java
13.1. Edicin
En esta etapa, se escriben las instrucciones del programa usando el
lenguaje Java y se guarda en un archivo cuyo nombre debe terminar con la
extensin .java. As, por ejemplo, el archivo podra llamarse Saludo.java. A

Elaborado por Adolfo Rondn Chacn

46

este programa escrito en Java se denomina cdigo fuente y para escribirlo


se puede recurrir a cualquier editor de texto.
13.2. Compilacin
En esta etapa, se compila el cdigo fuente usando el compilador de Java,
que es un programa denominado javac.exe, con lo que se obtiene un nuevo
cdigo conocido como cdigo de bytes, que queda guardado en un archivo
con el mismo nombre que el archivo de cdigo fuente, pero con la extensin
.class. As, si el archivo de cdigo fuente se denomina Saludo.java, el
cdigo de bytes quedar almacenado automticamente en un archivo
denominado Saludo.class.
13.3. Ejecucin
En esta etapa, el cdigo de bytes es ejecutado por la Mquina Virtual de
Java (JVM, siglas en ingls de Java Virtual Machine). El cdigo de bytes es
el lenguaje de la JVM.
Existe una JVM para cada plataforma (para cada sistema operativo); pero,
todas las JVM pueden ejecutar el mismo cdigo de bytes. As, el cdigo de
bytes es independiente de la plataforma. Esto hace que los programas Java
puedan ser ejecutados en cualquier mquina que disponga de una JVM.
Actualmente, existe una JVM para la mayor parte de las plataformas, lo que
garantiza que los programas Java sean ampliamente portables.
Compilacin y ejecucin de un programa Java
14. Software para el desarrollo de programas java
Para el desarrollo de programas Java usaremos el software: Java SE
Development Kit (JDK), que contiene el compilador, la JVM y a las libreras
del lenguaje. El JDK puede ser descargado de la pgina de Sun
Microsystems cuya direccin es http://java.sun.com
JCreator LE, que es un Entorno Integrado de Desarrollo (IDE, siglas del
ingls Integrated Development Environment) que permite editar, compilar y
ejecutar programas Java. Para la compilacin y ejecucin se requiere tener

Elaborado por Adolfo Rondn Chacn

47

instalado el JDK. JCreator LE puede ser descargado de la pgina de Xinox


Software cuya direccin es http://www.jcreator.com
A parte de JCreator LE existen otros Entornos Integrados de Desarrollo
profesionales como es el caso de NetBeans de Sun Microsystems, JBuilder
de Borland, Visual Caf de Symantec, Eclipse de IBM, JDeveloper de
Oracle, Visual Age de IBM, etc.
14.1. Instalacin del Software
El orden de instalacin que se debe seguir es:
- jdk-6u2-windows-i586-p
- JCreator 3.5
Las versiones de ambos pueden variar, ms no el orden de instalacin

Elaborado por Adolfo Rondn Chacn

48

14.2. Instalacin del jdk:


14.3.

Doble clic al archivo jdk-

6u2-Windows-i586-p.
Aparecer

la

siguiente

ventana.

Se

debe

esperar

unos

minutos

mientras prosigue la instalacin.

Esperamos unos segundos y nos


saldr otra ventana en la cual
debemos dar click en aceptar.
Aqu se inicia la instalacin del JRE.
Presionar Next.

En esta ventana se puede cambiar de


unidad para la instalacin. Si se desea
el cambio, presionar el botn change
y elegir otra carpeta; sino, elegir la
sealada por defecto. Se recomienda

Se debe esperar unos minutos a que


prosiga la instalacin.

dejarlo como est. Luego presionar en


el botn Next.

Elaborado por Adolfo Rondn Chacn

49

Al aparecer esta ventana, presionar


Finish para terminar la instalacin
del jdk.

14.4. Instalacin del JCreator:


14.5.

Dar doble click al archivo

JCreator_3.5. Aparecer la
siguiente ventana.

Luego

aparecer

la

ventana

de

confirmacin para crear la carpeta.


Presionamos Next.
Acepte los trminos de licencia y
presionamos Next.

Se va a crear un acceso directo en el


men de inicio. Presionamos Next.

En esta ventana podemos elegir la


ruta en la que se desea instalar
JCreator. Es recomendable elegir la
sealada por defecto. Presionamos
Next.
Elaborado por Adolfo Rondn Chacn

50

Aqu se adiciona un cono de JCreator


en el escritorio para un rpido acceso.
Presionamos Next.

La siguiente ventana nos pide la ruta


del jdk, ya que lo instalamos antes,
esta aparecer por defecto, caso
Presionar en Install para iniciar la

contrario presionamos en Browse

instalacin.

para buscarla. Luego presionamos


Finish.

Dejamos

avanzar

instalacin

hasta

siguiente

ventana.

el

proceso

de

salga

la

que

Presionamos

Finish para terminar la instalacin.

Para finalizar copiamos las carpetas


de plantillas Template en la siguiente
ruta:
C:\Archivos

de

programas\Xinox

Software\JCreatorV3LE\Templates

Luego

aparecer

esta

ventana.

Presionamos Next.
Importante!

Elaborado por Adolfo Rondn Chacn

51

Debemos asegurarnos de que dentro de la carpeta Templates SOLO se


encuentren las carpetas templates enumeradas del 1 al 6. De otra forma,
JCreator no las leer correctamente.
15. Primeros pasos para trabajar con JCreator
Paso 1: creando la carpeta de trabajo.
Lo primero que hay que hacer antes de abrir JCreator, es crear nuestra
carpeta de trabajo, eligiendo el nombre deseado.

Paso 2: creando el espacio de trabajo dentro de la carpeta.


Luego de abrir el JCreator, lo primero es crear el espacio de trabajo, para esto
damos un click con el mouse en FILE luego en NEW y por ltimo en BLANK
WORKSPACE tal como indica la imagen a continuacin.

Paso 3:
Luego nos aparecer una ventana, en la cual colocamos el nombre del espacio
de trabajo (en este caso Trabajo_1) evitando dejar espacios al elegir el nombre.
Luego damos click en donde nos muestra la figura:

Elaborado por Adolfo Rondn Chacn

52

Paso 4:
Luego nos aparecer el siguiente cuadro en el cual buscaremos nuestra
carpeta anteriormente creada, y a continuacin damos click en ACEPTAR.

Paso 5:
Damos click en FINISH.

Elaborado por Adolfo Rondn Chacn

53

Paso 6: creando un Applet.


Ahora que tenemos nuestro espacio de trabajo, debemos crear un Applet, para
esto damos click en FILE, luego en NEW y finalmente en PROJECT.

Paso 7:
A continuacin nos saldr la siguiente ventana, en la cual elegiremos el tipo de
proyecto deseado, en este caso elegiremos BASIC JAVA APPLET y damos
click en NEXT.

Paso 8:

Elaborado por Adolfo Rondn Chacn

54

A continuacin se elige el nombre del proyecto (en este caso Trabajo_1), el


nombre del proyecto puede ser igual al nombre del espacio de trabajo. Luego
se hace click en FINISH.

Paso 9:
Ahora se crearon 2 carpetas una llamada CLASES y la otra llamada SRC.
La carpeta clases permite elegir el ancho y alto de la ventana que tendr la
pantalla de nuestro programa. Por defecto aparecer con las medidas 500 x
300 (500 de ancho x 300 de alto), estas medidas pueden ser modificadas
segn se desee.

Elaborado por Adolfo Rondn Chacn

55

Paso 10:
La carpeta SRC es donde digitaremos toda nuestra lnea de cdigo. Por
defecto nos aparecer lo siguiente:

Elaborado por Adolfo Rondn Chacn

56

15.1.

Creando un programa simple en JCreator

Activacin de libreras: Una vez creado el entorno se procede a activar las


libreras.
Lo primero que debemos hacer es invocar nuestras LIBRERIAS, para los
programas sencillos que usaremos como ejemplos solo se necesitaran 3
libreras como vemos a continuacin:

La librera java.awt.* nos permitir utilizar los comandos generales en


java, es la librera principal si se quiere empezar a trabajar.

La librera javax.swing.* nos permitir utilizar los comandos para crear


objetos, los cuales nos permitirn crear la interfaz grfica de nuestro
programa.

La librera java.awt.event.* nos permitir utilizar los comandos de


eventos, los cuales nos permitirn darle accin a los controles, como por
ejemplo los botones.

NOTA:
Siempre que se termine una lnea de cdigo, debemos utilizar el punto y coma
(;) el cual nos sealara el final de dicha lnea de cdigo. Mientras nos
coloquemos el punto y coma, java asumir que nuestra lnea de cdigo sigue,
aunque hayamos presionado ENTER y bajado una lnea, lo que podramos
generarnos errores de compilacin.

Elaborado por Adolfo Rondn Chacn

57

Activacin de clase: luego de activar nuestras libreras debemos crear la


clase principal, para esto debemos colocar lo siguiente:
public class Nombre_del_programa extends JApplet {
}
Nombre_del_programa: aqu debe escribir el nombre del programa deseado,
recordando que el nombre debe ser el mismo que ya le habamos dado antes
al crear el proyecto (en este caso Trabajo_1). Recordar que el nombre no debe
llevar espacios, pero puede llevar guiones, puntos, etc. Las llaves nos
muestran el inicio y el final de la clase.
A continuacin mostramos como quedara en el programa:

Declaracin de objetos: un objeto no es mas que una variable cuyo tipo es


una Clase, a continuacin, dentro de la clase Trabajo_1, se debe declarar los
objetos a usar.
Para esto se tienen las siguientes clases propias de Java:
JLabel: nos permite crear etiquetas. Una etiqueta es un mensaje que nos
aparecer en la mascara de nuestro programa.
JTextField: nos permite crear cuadros de ingreso de datos (lectura de datos).
JTextArea: nos permite crear cuadros de salida de datos (impresin de datos).
JButton: nos permite crear botones de accin.

Elaborado por Adolfo Rondn Chacn

58

Para mantener un orden en Java, se usan prefijos antes de cada control lo que
nos permitir hacer ms entendible nuestro programa. Esto permite a la
persona que tenga que hacer el mantenimiento del programa, encontrar con
mayor facilidad los objetos, adems permitir mas adelante programar con
mayor facilidad.
15.2.

Identificadores en java

Los identificadores son nombres usados para identificar diversos elementos de


programa como variables, constantes, mtodos, clases, etc. Para crear un
identificador deben tenerse en cuenta las siguientes reglas:
Debe comenzar con una letra, un smbolo de subrayado (_) o un smbolo de
dlar ($). Los siguientes caracteres pueden ser letras, dgitos, smbolos de
subrayado (_) o smbolos de dlar ($).

No puede ser una palabra reservada del lenguaje.

Las maysculas y minsculas se consideran diferentes

Ejemplo
Son vlidos los siguientes identificadores:
edadMaxima
edadmaxima
monto_total
sueldo_bruto
suelbru
$ganancia
nota2
importeCompra
Note que los identificadores edadMaxima y edadmaxima no son iguales dado
que M (mayscula) no es lo mismo que m (minscula).
Ejemplo

Elaborado por Adolfo Rondn Chacn

59

Son invlidos los siguientes identificadores:


1cuenta No puede comenzar con un nmero
monto total Contiene un carcter invalido intermedio (el espacio en blanco)
premio# Contiene el carcter invlido #
final No puede ser una palabra reservada
continue No puede ser una palabra reservada
15.3.

Palabras reservadas en java

Se denominan palabras reservadas a aquellas palabras que tienen un


significado especial dentro del lenguaje y que por lo tanto no pueden ser
utilizados para otros propsitos. As, una palabra reservada no se puede
utilizar como un identificador.
En la tabla que sigue se muestran las 50 palabras reservadas del
lenguaje Java. Note que todas ellas estn en minsculas.
15.4.

Datos primitivos en Java

Tipos de datos primitivos

Elaborado por Adolfo Rondn Chacn

60

Se conocen como tipos de datos primitivos a los tipos de datos que


forman parte del ncleo del lenguaje Java.
Tipos de datos primitivos de java
A parte de los tipos primitivos existen otros tipos conocidos como tipos
referencia a los que se conoce tambin como tipos abstractos o
simplemente clases. Para el manejo de cadenas de caracteres el
lenguaje Java dispone del tipo referencia
Una variable es una localizacin de memoria en la que se puede
almacenar un valor que puede cambiar en el transcurso de la ejecucin
de un programa. Una variable es primitiva si el valor que almacena es de
tipo primitivo.
Todas las variables deben ser declaradas antes de ser utilizadas. Para
declarar una variable se usa una sentencia de declaracin que en su
forma bsica tiene el siguiente formato:
tipo nombre;
Esta forma bsica de declaracin puede repetirse para cada variable a
declarar; sin embargo, si varias variables comparten el mismo tipo de
dato, puede usarse el siguiente formato:
tipo nombre1, nombre2, ...,nombren;
Ejemplo
int edad;
int hijos;
double sueldo;
double bonificacion;
char letra;
String curso;
Ejemplo
int edad, hijos;

Elaborado por Adolfo Rondn Chacn

61

double sueldo, bonificacion;


int a, b, c;
15.5.

Literales

Una literal es la representacin de un valor en el cdigo fuente del


programa.
15.5.1.

Literales enteros

Cualquier valor numrico entero es un literal entero. Los literales enteros


se consideran de tipo int. Para especificar que un literal es de tipo long,
debe aadirse,como sufijo, la letra L l.
Por ejemplo
Los siguientes literales son de tipo int
12, 34, 0, -50, etc.
Los siguientes literales son de tipo long
9223372036854775807L, 25L, -1L, etc.
15.5.2.

Literales reales

Cualquier valor numrico decimal con parte fraccionaria es un literal real.


Los literales reales se consideran de tipo double. Para especificar que un
literal es de tipo float, debe aadirse, como sufijo, la letra F f.
Por ejemplo:
Los siguientes literales son de tipo double
1.23, 3.456, -2.0, 3.25E+12, 2.7e-5, etc.
Los siguientes literales son de tipo float
2.75f, -4.567f, 2.0F, 6.73e+2f, etc.
Para representar un literal real en notacin cientfica se usa la letra E e
para expresar la potencia de 10.
Por ejemplo
3.25E+12 representa a 3.25 x 1012
2.7E-5 representa a 2.7 x 10

Elaborado por Adolfo Rondn Chacn

62

Literales booleanos
Los nicos literales booleanos son los siguientes:
true, false
15.5.3.

Literales de carcter

Un literal de carcter consiste de un nico carcter encerrado dentro de


un par de comillas simples.
'a', '1', '2', '$', etc.
Una secuencia de escape es un conjunto de caracteres
15.5.4.

Literales de Cadena

Un literal de cadena consiste de un conjunto de carcteres encerrados


entre comillas
dobles.
"Hola mundo"
"Bienvenido a Java"
"Algoritmos Computacionales"
"abcde123xy"
"Edad invlida"
etc
15.6.

Sentencias de asignacion

Una sentencia de asignacin se utiliza para asignar (almacenar) un valor a


una variable. En una sentencia de asignacin el valor situado a la derecha
del signo igual se almacena en la variable situada a la izquierda del signo
igual. Una sentencia de asignacin tiene la siguiente forma:
variable = expresin;
Donde expresin puede ser una variable, un literal o una combinacin de
variables, literales y operadores. La sentencia de asignacin almacena en

Elaborado por Adolfo Rondn Chacn

63

variable el valor de la expresin; para esto se requiere que expresin y


variable tengan el mismo tipo de dato.
Notas

La asignacin tiene carcter destructivo. Esto es, la variable que recibe


la asignacin pierde su valor actual de forma irrecuperable

Una variable de tipo double puede recibir la asignacin de un valor de


tipo int. Esta es una excepcin a la regla. En ese caso el valor de tipo int
se convierte automticamente al tipo double antes de ser asignado.

Es un error de sintxis tratar de asignar un valor de tipo double a una


variable de tipo int.

Ejemplo 1:
Como ejemplo declararemos los objetos de un programa sencillo que nos
permite ingresar un nombre, una edad, y a continuacin mostrarlos al darle
clic al botn de accin.
//declarando objetos
JLabel lblNombre, lblEdad;
JTextField txtNombre, txtEdad;
JTextArea txtArea;
JButton btnProcesar;
Como nos muestra el ejemplo, luego de cada prefijo la primera letra del
nombre del control debe ser mayscula, a continuacin indicaremos los
siguientes prefijos:
JLabel: usa el prefijo lbl. Ejemplo anterior: lblNombre, lblEdad;
JTextField: usa el prefijo txt. Ejemplo anterior: txtNombre, txtEdad;
JTextArea: al igual que el JTextField usa el prefijo txt. Ejemplo anterior:
txtArea;
JButton: usa el prefijo btn. Ejemplo anterior: btnProcesar;
A continuacin mostramos como va quedando nuestro programa:

Elaborado por Adolfo Rondn Chacn

64

Nota:
- El doble slash ( // ) nos permite escribir una lnea de comentario, esto
nos permite crear notas dentro de JCreator, las cuales el programa no
toma en cuenta.
- El slash, seguido de un asterisco ( /* ) nos permite crear varias lneas
de comentarios. En este caso para terminar el comentario debemos
colocar un asterisco seguido de un slash ( */ ).

Creando la interfaz grafica del usuario (GUI): El siguiente paso para


crear nuestro programa es comenzar a construir cada objeto declarado
en el paso anterior.
Lo primero es crear el mtodo que nos permite crear nuestra GUI:
public void init( ){
}

Elaborado por Adolfo Rondn Chacn

65

Esto se hace a continuacin de la declaracin de objetos, dentro de la


clase Trabajo_1.

A continuacin debemos pedir nuestro panel de contenido, el cual


contendr a nuestros controles. Para esto usamos la siguiente
sentencia:
getContentPane( ) . setLayout(null);
get: pedir
ContentPane: panel de contenido.
setLayout(null): nos permite pedir el panel de contenido limpio, anulando
las distribuciones esto nos permitir colocar de manera ordenada los
objetos, mediante coordenadas.

El siguiente paso es comenzar a construir paso a paso cada uno de


nuestros objetos.

Elaborado por Adolfo Rondn Chacn

66

Para esto debemos seguir 3 pasos principales (tomaremos como


ejemplo los objetos anteriormente declarados):
Paso 1:
15.7.

Constructor.

lblNombre = new JLabel( ); nos permite crear una etiqueta vaca. Si


queremos que nuestra etiqueta muestre algn texto, debemos ingresar
dicho texto entre comillas dentro de los parntesis, en este caso
aadiremos el texto Nombre.
lblNombre = new JLabel (Nombre );
Paso 2:
Ubicacin y tamao ( x ,y ,ancho , alto ).
Para colocar la ubicacin debemos usar la sentencia: setBounds
(Bounds = limites), esta nos permitir colocar la ubicacin segn
coordenadas ( x, y) adems de el ancho y el alto, como se muestra a
continuacin:
lblNombre.setBounds(x, y, ancho, alto);
X es la posicin horizontal en pxeles, Y es la posicin vertical en
pxeles, considerando el punto de inicio la esquina superior
izquierda.
Para calcular las coordenadas debemos hacer divisiones imaginarias de
nuestra pantalla, e ir ubicando nuestros controles segn se desee.
lblNombre.setBounds(50,50,100,20);
Paso 3:
Aadir nuestro control al panel principal.

Elaborado por Adolfo Rondn Chacn

67

Primero se coloca el lugar al que queremos aadir nuestra etiqueta, en


este caso al getContentPane( ) seguido de la sentencia add que
significa aadir.
getContentPane( ).add(lblNombre);
A continuacin mostraremos un ejemplo de cmo va quedando nuestra
etiqueta.

Con estos mismos pasos terminamos de agregar todos nuestros


controles.

Elaborado por Adolfo Rondn Chacn

68

Como podemos apreciar, en el caso de txtNombre este no lleva un


texto dentro de los parntesis, ya que al ser un objeto de entrada de
datos, nosotros debemos ingresar un nombre all por lo que debe quedar
el recuadro libre para esta accin.
Lo mismo pasa con txtArea que al ser un objeto de salida de datos,
este debe quedar libre para mostrarnos los datos requeridos luego de
cualquier proceso.
15.8.

Eventos

Definicin: los eventos nos permiten implementarle acciones a los objetos.


En este caso mostraremos como darles accin a nuestros botones.

Elaborado por Adolfo Rondn Chacn

69

Lo primero que se necesita es la librera: java.awt.event.* la que nos


permitir manejar eventos como ya mencionamos anteriormente.
Luego tenemos que implementarle accin a nuestro programa luego de
invocar las libreras. Tomaremos el ejemplo anterior y le implementaremos
accin:
public class Trabajo_1 extends JApplet implements ActionListener{
public void init( ){
}
}
Luego debemos darle aadirle accin al objeto que deseamos, en este caso
al botn Procesar.
btnProcesar.addActionListener(this);
Al implementarle accin al programa, este buscar el mtodo propio de
Java: actionPerformed, el cual debemos crear luego de terminar con el
mtodo que crea la GUI.
public class Trabajo_1 extends JApplet implements ActionListener{
public void init( ){
btnProcesar.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
}
}
Dentro del mtodo actionPerformed colocaremos toda nuestra lgica.
Las declaraciones pueden hacerse dndole un valor inicial al dato
declarado.
intnmero = 0;
Si nuestra variable la quisiramos declarar sin darle valor inicial, seria:

Elaborado por Adolfo Rondn Chacn

70

intnmero;
Tambin debemos tener en cuenta los diferentes operadores para realizar
las operaciones cuando sea necesario.
Operadores de comparacin: estos operadores devuelven un valor lgico,
que ser true si la operacin es verdadera o false si la operacin es
falsa.
Operadores lgicos: permiten evaluar operaciones lgicas compuestas.
15.9.

Entrada y salida de datos

Tenemos que tener en cuenta que para crear una estructura de


programacin lo primordial es programar la entrada y salida de datos.
Para esto tenemos las siguientes sentencias:
-

getText( ): este comando leer los datos de la GUI en forma de


texto, en caso de leer un nmero, sea entero o real, se debe
convertirlo a nmero al mismo tiempo que se lee.

Ejemplo: se quiere leer 3 datos ingresados desde la GUI: nombre, edad y


talla, ingresados desde los JTextField: txtNombre, txtEdad y txtTalla
respectivamente.
//se declara las variables
String nombre;
int edad;
double talla;
//leemos los datos desde la GUI
nombre = txtNombre.getText( );
edad = Integer.parseInt(txtEdad.getText( ) );
talla = Double.parseDouble(txtTalla.getText( ) );
Como podemos observar en los 3 casos, antes de colocar el comando
getText( ) se tiene que colocar el nombre del objeto desde el cual vamos a
ingresar el dato.
Elaborado por Adolfo Rondn Chacn

71

En el caso de nombre, no hacen falta conversiones ya que este es una


cadena de texto, en el caso de edad se tuvo que convertir a nmero
entero, lo mismo con talla que se tuvo que convertir a nmero real.
-

setText( ): este comando escribir lneas de impresin una sobre otra.

append( ): este comando escribir lneas de impresin una a


continuacin de otra.

Ejemplo: imprimir en el rea de impresin txtArea, los 3 datos ledos


anteriormente.
//mostramos primero el nombre ledo
txtArea.setText( Nombre ingresado : + nombre +\n);
//mostramos a continuacin los siguientes datos
txtArea.append( Edad ingresada: + edad +\n);
txtArea.append( Talla ingresada: + talla);
Como vemos, la primera lnea se mostr usando el comando setText( ), las
2 siguientes lneas se mostraron usando el comando append( ), ya que
estas deban salir a continuacin de la anterior respectivamente.
\n: esto se usa para bajar una lnea, as la siguiente lnea de impresin
saldr debajo.
\t: se usa para dejar espacios, equivalente a presionar una vez el botn
TAB del teclado.
Ejemplo: utilizando el mismo ejemplo anterior, se debe ingresar un nombre
y una edad, de tal manera que al darle click al botn Procesar, se
muestres estos datos en el JTextArea.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public

class

Trabajo_1

extends

JApplet implements ActionListener{


//declarando objetos

Elaborado por Adolfo Rondn Chacn

72

JLabel lblNombre,lblEdad;

//aadiendo accin al botn

JTextField txtNombre,txtEdad;

btnProcesar.addActionListener(this);

JTextArea txtArea;

getContentPane( ).add(btnProcesar);

JButton btnProcesar;

txtArea = new JTextArea( );

//creando la interfaz grafica(GUI)

txtArea.setBounds(50,170,400,100);

public void init( ){

getContentPane( ).add(txtArea);

//colocando un panel de contenido

libre de alineaciones

//eventos (lgica)

getContentPane( ).setLayout(null);

public

lblNombre = new JLabel("Nombre");

actionPerformed(ActionEvent e){

lblNombre.setBounds(50,50,100,20);

//declaracin de variables

getContentPane( ).add(lblNombre);

String nombre;

txtNombre = new JTextField( );

int edad;

txtNombre.setBounds(150,50,100,20);

//Entrada de datos: leemos los datos

getContentPane( ).add(txtNombre);

desde la GUI

lblEdad = new JLabel("Edad");

nombre = txtNombre.getText( );

lblEdad.setBounds(50,90,100,20);

edad

getContentPane( ).add(lblEdad);

Integer.parseInt(txtEdad.getText( ));

txtEdad = new JTextField( );

//Salida de datos: mostramos los

txtEdad.setBounds(150,90,100,20);

datos en el rea

getContentPane( ).add(txtEdad);

txtArea.setText("Nombre

btnProcesar

new

ingresado:

"+nombre+"\n");

JButton("Procesar");

txtArea.append("Edad

btnProcesar.setBounds(200,130,100,2

"+edad);

0);

Elaborado por Adolfo Rondn Chacn

void

ingresada:

73

} //fin del programa

Elaborado por Adolfo Rondn Chacn

74

15.9.1.

Uso de dos o ms Botones

En caso de que se quiera usar mas de un botn en el programa, debe


separarse la lgica con el comando getSource( ).
public void actionPerformed(ActionEvent e){
if (e.getSource( ) = = btnBoton1){
// proceso1
}
if (e.getSource( ) = = btnBoton2){
// proceso2
}
}
Ejemplo: aadiremos al ejemplo anterior un botn borrar, el cual limpiara
todos los datos ledos y mostramos de la GUI.

Elaborado por Adolfo Rondn Chacn

75

import java.awt.*;

getContentPane( ).add(lblEdad);

import java.awt.event.*;

txtEdad = new JTextField( );

import javax.swing.*;

txtEdad.setBounds(150,90,100,20);

public

class

Trabajo_1

extends

getContentPane( ).add(txtEdad);

JApplet implements ActionListener{

btnProcesar

//declarando objetos

JButton("Procesar");

JLabel lblNombre,lblEdad;

btnProcesar.setBounds(100,130,100,2

JTextField txtNombre,txtEdad;

0);

JTextArea txtArea;

//aadiendo accin al botn

JButton btnProcesar,btnBorrar;

btnProcesar.addActionListener(this);

//creando la interfaz grafica(GUI)

getContentPane( ).add(btnProcesar);

public void init( ){

btnBorrar = new JButton("Borrar");

//obteniendo el panel de contenido

btnBorrar.setBounds(300,130,100,20);

libre de alineaciones

//aadiendo accin al botn

getContentPane( ).setLayout(null);

btnBorrar.addActionListener(this);

lblNombre = new JLabel("Nombre");

getContentPane( ).add(btnBorrar);

lblNombre.setBounds(50,50,100,20);

txtArea = new JTextArea( );

getContentPane( ).add(lblNombre);

txtArea.setBounds(50,170,400,100);

txtNombre = new JTextField( );

getContentPane( ).add(txtArea);

txtNombre.setBounds(150,50,100,20);

getContentPane( ).add(txtNombre);

//lgica

lblEdad = new JLabel("Edad");

public

lblEdad.setBounds(50,90,100,20);

actionPerformed(ActionEvent e){

Elaborado por Adolfo Rondn Chacn

new

void

76

//si presionamos el botn Procesar


if (e.getSource( ) = = btnProcesar){

//programando el botn Borrar


if(e.getSource( ) = = btnBorrar){

//declaracin de variables

//mostrando textos vacos en todos

String nombre;

los cuadros de ingreso y salida de

int edad;

datos

//Entrada de datos: leemos los


datos desde la GUI

txtNombre.setText("");

nombre=txtNombre.getText( );

txtEdad.setText("");

edad=Integer.parseInt(txtEdad.getText

txtArea.setText("");

( ));

/*

//Salida de datos: mostramos los


datos en el area
txtArea.setText("Nombre

obteniendo

txtNombre,

el

lo

enfoque

que

en

permitir

ingresar otro nombre de manera


ingresado:

mas fcil */

"+nombre+"\n");
txtArea.append("Edad

ingresada:

"+edad);
}

txtNombre.requestFocus( );
}
} //fin de la lgica
} //fin del programa

Como podemos observar, se coloca cada lgica por separado, para esto
utilizamos una condicin simple: if (e.getSource( ) = = btnProcesar)
15.10. Condicin simple ( if )
Se utiliza cuando se desea evaluar una comparacin y hacer algn proceso
slo cuando la comparacin sea verdadera.
if (condicin)
//proceso
Ejemplo: mostrar en txtArea un mensaje, solo si el nmero ingresado es
positivo.
if ( nmero> 0 )

Elaborado por Adolfo Rondn Chacn

77

txtArea.setText(El nmero es positivo);


15.11. Condicin doble ( if - else )
Se utiliza cuando se desea evaluar una comparacin y hacer algn proceso
tanto cuando la comparacin sea verdadera como cuando la comparacin
sea falsa.
if (condicin)
//proceso1
else
//proceso2
Ejemplo: mostrar en txtArea si un nmero es negativo o positivo.
if( nmero> 0 )
txtArea.setText(El nmero es positivo);
else
txtArea.setText(El nmero es negativo o cero);
15.12. Condicin en cadena ( if - else - if )
Se utiliza cuando se desea evaluar consecutivamente varias operaciones,
generalmente se trata de valores continuos.
if (condicin1)
//proceso1
else if ( condicion2 )
//proceso2
else
//proceso3
Ejemplo: mostrar en txtArea si un nmero es negativo, positivo o cero.
15.13. Condicin compuesta
En cualquier tipo de comparacin, la condicin puede ser simple o
compuesta. Ser una condicin simple cuando tiene una sola comparacin,
o sea no utiliza operadores lgicos. En cambio, si tiene mas de una

Elaborado por Adolfo Rondn Chacn

78

comparacin,

esta

ser

compuesta,

para

lo

cual

utilizaremos

necesariamente los operadores lgicos Y, O: &&, | | respectivamente.


Se recomienda utilizar el operador && para expresar un rango continuo, de
lo contrario se debe utilizar el operador | |.
if ( condicion1 && condicin2 | | condicion3 )
//proceso
Ejemplo 1: mostrar en txtArea un mensaje de Nota correcta, si la nota
ingresada esta en el rango de 0 a 20.
if ( nota > = 0 && nota < = 20 )
txtArea.setText( Nota correcta);
Ejemplo 2: mostrar en txtArea un mensaje de Nota incorrecta, si la nota
ingresada esta fuera del rango de 0 a 20.
if ( nota < 0 | | nota > 20 )
txtArea.setText( Nota incorrecta);
Recomendacin: para todos los casos de condicin, si se quiere realizar
mas de un proceso por comparacin se deber utilizar las llaves: { }, lo que
le indicar a Java que se realizaran varios procesos si la condicin es
verdadera o falsa.
if ( condicin ){
//proceso1
//proceso2
//
//procesoN
}
15.14. Condicin o Decisin Mltiple (switch)
Se utiliza cuando se selecciona una opcin entre varias.
switch ( variable ) {
case valor1 : proceso1; break;

Elaborado por Adolfo Rondn Chacn

79

case valor2 : proceso2; break;


//
default : procesoN; break;
}
Ejemplo: mostrar en txtArea un mensaje segn sea el nmero: 0 para
solteros, 1 para casados, 2 para divorciados, 3 para viudos.
switch(nmero ) {
case 0 : txtArea.setText(Soltero); break;
case 1 : txtArea.setText(Casado); break;
case 2 : txtArea.setText(Divorciado); break;
case 3 : txtArea.setText(Viudo); break;
default: txtArea.setText(Estado civil desconocido); break;
}
En este caso se compara a la variable nmero con cada uno de los
valores situados despus del case, ejecutando la accin con la que
coincidiese el nmero.
default: si no existiese coincidencia entre la variable nmero y los
valores de cada case, el programa ejecutar el proceso contenido en
default, si no se pusiera un default simplemente no se ejecutar ningn
proceso dentro del switch.
break: nos permite salir de la decisin luego de ejecutado el proceso, si
no pusiramos un break, el programa ejecutara todos los procesos
hacia abajo hasta encontrar un break o la llave que cierra la decisin
mltiple.
15.14.1.

Contador

Definicin: un contador es una variable entera que toma un valor inicial,


generalmente cero uno, y luego dentro del proceso va aumentando y/o
disminuyendo de uno en uno. Normalmente un contador se coloca dentro
de un proceso repetitivo.

Elaborado por Adolfo Rondn Chacn

80

/* el contador es declarado junto con la declaracin de objetos o


variables globales, antes de crear la GUI, esto evita que se pierda su
valor */
int contador = 0;
//proceso
contador + +;
+ + :significa que nuestro contador aumentara de uno en uno cada vez que
se realice el proceso.
Ejemplo:
/* declarando un contador llamado cont, el cual nos ira contando la
cantidad de veces que se ingresa un nmero */
int cont = 0; // inicializamos nuestro contador en cero
intnmero;
nmero = Integer.parseInt( txtNmero.getText ( ) );
cont + +;
observe este ejemplo en un pequeo programa.

import java.awt.*;

public

class

import java.awt.event.*;

extends

import javax.swing.*;

ActionListener{

EjemploContador

JApplet

implements

//declaracin de variables globales


JLabel lblNmero;

Elaborado por Adolfo Rondn Chacn

81

JTextField txtNmero;

getContentPane( ).add(btnBorrar);

JButton btnProcesar, btnBorrar;

txtArea = new JTextArea( );

JTextArea txtArea;

scpScroll

JScrollPane scpScroll;

JScrollPane(txtArea);

//aqu se declara nuestro contador

scpScroll.setBounds(50,140,400,1

int cont = 0;

00);

new

getContentPane( ).add(scpScroll);
public void init( ) {

getContentPane( ).setLayout(null);
public

void

lblNmero = new JLabel("Ingrese

actionPerformed(ActionEvent e){

un nmero");

if(e.getSource( ) = = btnProcesar)

lblNmero.setBounds(50,50,120,2

procesar( );

0);

if(e.getSource( ) = = btnBorrar)

getContentPane( ).add(lblNmero);

borrar( );
}

txtNmero = new JTextField( );

//mtodo procesar

txtNmero.setBounds(170,50,50,2

public void procesar( ){

0);

//se declara la variable nmero

getContentPane( ).add(txtNmero)

intnmero;

//leemos el nmero ingresado en la


GUI

btnProcesar

new

nmero

JButton("Procesar");

Integer.parseInt(txtNmero.getText

btnProcesar.setBounds(50,100,10

( ));

0,20);

cont++; //aumentamos el contador

btnProcesar.addActionListener(this

en 1 cada que se ingrese un dato

);

imprimir("Nmero

getContentPane( ).add(btnProcesa

"+nmero);

r);

imprimir("Cantidad

btnBorrar = new JButton("Borrar");

ingresados: "+cont);

btnBorrar.setBounds(200,100,100,

txtNmero.setText("");

20);

txtNmero.requestFocus( );

btnBorrar.addActionListener(this);

Elaborado por Adolfo Rondn Chacn

ingresado:
de

nmeros

82

public void borrar( ){

public void imprimir(String s){

txtNmero.setText("");

txtArea.append(s+"\n");

txtArea.setText("");

txtNmero.requestFocus( );

} //Fin del programa

15.14.2.

Acumulador

Definicin: un acumulador es una variable real o entera, que va


aumentando y/o disminuyendo en una cierta cantidad, no necesariamente
uno.
//declaracin del acumulador, al igual que el contador, este debe ser
declarado junto con la declaracin de objetos o variables globales.
Tipo acumulador;
//leer dato
//proceso
acumulador = acumulador + dato;
Tambin se puede colocar:
acumulador + = dato;
Esto quiere decir que nuestro dato se ira sumando al acumulador.
Ejemplo:
/* se declara un acumulador llamado suma, el cual nos ira acumulando la
suma de los nmeros que vayamos ingresando */
int suma = 0; //inicializamos nuestro acumulador en cero
intnmero;
nmero = Integer.parseInt( txtNmero.getText ( ) );
suma = suma + nmero;
Veamos este ejemplo en un pequeo programa.

Elaborado por Adolfo Rondn Chacn

83

import java.awt.*;

lblNmero = new JLabel("Ingrese

import java.awt.event.*;

un nmero");

import javax.swing.*;

lblNmero.setBounds(50,50,120,2
0);

public class EjemploAcumulador


extends

JApplet

getContentPane( ).add(lblNmero);

implements

ActionListener{

txtNmero = new JTextField( );


txtNmero.setBounds(170,50,50,2

//declaracin de variables globales

0);

JLabel lblNmero;

getContentPane( ).add(txtNmero)

JTextField txtNmero;

JButton btnProcesar,btnBorrar;
JTextArea txtArea;

btnProcesar

JScrollPane scpScroll;

JButton("Procesar");

//aqu

se

declara

nuestro

new

btnProcesar.setBounds(50,100,10

acumulador

0,20);

int suma = 0;

btnProcesar.addActionListener(this
);

//GUI

getContentPane( ).add(btnProcesa

public void init( ) {

r);

getContentPane( ).setLayout(null);
btnBorrar = new JButton("Borrar");

Elaborado por Adolfo Rondn Chacn

84

btnBorrar.setBounds(200,100,100,

intnmero;

20);

//leemos el nmero ingresado en la

btnBorrar.addActionListener(this);

GUI

getContentPane( ).add(btnBorrar);

nmero=Integer.parseInt(txtNmer
o.getText( ));

txtArea = new JTextArea( );


scpScroll

suma+=nmero; //acumulamos el
new

nmero en la variable suma

JScrollPane(txtArea);

imprimir("Nmero

scpScroll.setBounds(50,140,400,1

"+nmero);

00);

imprimir("Suma de los nmeros

getContentPane( ).add(scpScroll);

ingresados: "+suma);

txtNmero.setText("");

public

void

actionPerformed(ActionEvent e){

ingresado:

txtNmero.requestFocus( );
}

if(e.getSource( )= =btnProcesar)
procesar( );

public void borrar( ){

if(e.getSource( )= =btnBorrar)

txtNmero.setText("");

borrar( );

txtArea.setText("");
txtNmero.requestFocus( );

}
public void imprimir(String s){

//mtodo procesar
public void procesar( ){
//se declara la variable nmero

Elaborado por Adolfo Rondn Chacn

txtArea.append(s+"\n");
}
} //Fin del programa

85

15.15. Repeticiones
Definicin: proceso por el que una accin es controlada una o mas veces.
A continuacin mostraremos las repeticiones : FOR, WHILE y DO WHILE.
15.15.1.

Repeticin FOR (para)

Es la secuencia de repeticin ms simple de usar. Muy preferida por los


programadores.
Estructura en Java:
for (tipo variable = valorInicial ; variable < valorFinal ; incremento) {
proceso;
}
Ejemplo:
Sumar los 50 primeros nmeros naturales.
Solucin:
//creamos un acumulador llamado suma
int suma = 0;
//creamos una repeticin for
for (int i = 1 ; i <= 50 ; i ++)
suma += i ;
//mostramos la variable suma con el mtodo imprimir
imprimir ( La suma es : + suma );
Como vemos la repeticin debe iniciar en 1 que es el primer nmero
natural y llegar hasta 50, se usa el smbolo menor o igual, ya que este
tambin estar incluido en la suma.
i ++ : esto quiere decir que la variable i ira aumentando de 1 en 1.
El proceso: suma += i; quiere decir que el valor de i se ira agregando
al acumulador suma, este proceso puede ser reemplazado por: suma =
suma + i;

Elaborado por Adolfo Rondn Chacn

86

La repeticin for se podra traducir de la siguiente forma:


para (i que va de 1 a 50, aumentando de 1 en 1){
proceso;
}
Esto quiere decir que el proceso se repetir 50 veces.
15.15.2.

Repeticin WHILE (mientras)

Repite la ejecucin de la accin mientras la expresin lgica siga siendo


verdad, cuando sea falsa el proceso termina.
Estructura en Java:
while ( condicin ) {
proceso;
}
Ejemplo:
Sumar los 50 primeros nmeros naturales.
Solucin:
//creamos un acumulador llamado suma, adems se declara nuestras
variables
int i = 1, suma = 0
//creamos una repeticin while
while ( i <=50 ){
suma += i ;
i ++;
}
//mostramos la variable suma con el mtodo imprimir
imprimir ( La suma es : + suma );
Como vemos, a diferencia del for, en la repeticin while se debe
controlar todo por separado: la declaracin de la variable i que nos
contar las repeticiones, la condicin que representa el limite de las
repeticiones, y el incremento de la variable i de 1 en 1.

Elaborado por Adolfo Rondn Chacn

87

La repeticin while se podra traducir de la siguiente forma:


mientras (i sea menor o igual que 50) {
proceso;
aumenta i de 1 en 1;
}
Esto quiere decir que mientras la variable i sea menor o igual a 50, se
repetir el proceso y se ira incrementando i de uno en uno.

Elaborado por Adolfo Rondn Chacn

88

15.15.3.

DO - WHILE (hacer - mientras):

Igual que la anterior, con la nica diferencia que la anterior evala la


condicin antes de ejecutar la accin. En cambio el do while evala la
condicin despus de realizar la accin por lo menos una vez.
Estructura en Java:
do{
proceso;
}
while ( condicin );
Ejemplo:
Sumar los 50 primeros nmeros naturales.
Solucin:
/* creamos un acumulador llamado suma, adems se declara nuestras
variables */
int i = 1, suma = 0
//creamos una repeticin do while
do{
suma += i ;
i ++;
}
while ( i <=50 );
//mostramos la variable suma con el mtodo imprimir
imprimir ( La suma es : + suma );
Esta estructura es similar a la repeticin while, con la diferencia de que
aqu se evala la condicin luego de realizar el proceso una vez.
La repeticin do while se podra traducir de la siguiente forma:
hacer{

Elaborado por Adolfo Rondn Chacn

89

proceso;
aumenta i de 1 en 1;
}
mientras (i sea menor o igual que 50);
Esto quiere decir que se repetir el proceso y se ira incrementando i de uno
en uno, mientras la variable i sea menor o igual a 50,
A continuacin realizaremos 3 ejercicios para visualizar mejor nuestros tres
tipos de repeticin:
Ejercicio 1:
Realizar un programa, utilizando la repeticin for, que ingrese un
nmero entero y obtenga la tabla de multiplicar hasta el 15 de dicho
nmero.

import java.awt.*;

JTextArea txtArea;

import java.awt.event.*;

JScrollPane scpScroll;

import javax.swing.*;

// GUI

public class RepeticionFor extends

public void init( ) {

JApplet implements ActionListener {

getContentPane( ).setLayout(null);

// declaracin de variables globales

lblTabla=new JLabel("TABLA DEL:");

JLabel lblTabla;

lblTabla.setBounds(50,20,200,20);

JTextField txtNmero;

getContentPane( ).add(lblTabla);

JButton btnProcesar,btnBorrar;

txtNmero = new JTextField( );

Elaborado por Adolfo Rondn Chacn

90

txtNmero.setBounds(112,

40,

40,

public void procesar( ){

20);

// leemos el nmero ingresado en la

getContentPane( ).add(txtNmero);

GUI

btnProcesar

intnmero=getNmero( );

new

JButton("Procesar");

// repetimos 15 veces la multiplicacin

btnProcesar.setBounds(300, 20, 150,

del nmero * i

20);

for(int i=1;i<=15;i++)

btnProcesar.addActionListener(this);

imprimir(""+nmero+" * "+i+" = "+

getContentPane( ).add(btnProcesar);

(nmero*i));

btnBorrar = new JButton("Borrar");

btnBorrar.setBounds(300,

// mtodo que lee el nmero de la GUI

40,

150,

20);

public int getNmero( ){

btnBorrar.addActionListener(this);

return

getContentPane( ).add(btnBorrar);

Integer.parseInt(txtNmero.getText( ));

txtArea=new JTextArea( );

scpScroll=new JScrollPane(txtArea);

// mtodo borrar

scpScroll.setBounds(50,100,400,250);

public void borrar( ){

getContentPane( ).add(scpScroll);

txtNmero.setText("");

txtArea.setText("");

// evento de los botones

txtNmero.requestFocus( );

public

void

actionPerformed( ActionEvent e ){

// mtodo que imprime una lnea en el

if(e.getSource( ) = = btnProcesar)

JTextArea

procesar( );

public void imprimir(String linea){

if(e.getSource( ) = = btnBorrar)

txtArea.append(lnea + "\n");

borrar( );

}//fin del programa

// mtodo procesar

Ejercicio
Realizar un programa, utilizando la repeticin while, que ingrese un nmero
entero y obtenga el factorial de dicho nmero.

Elaborado por Adolfo Rondn Chacn

91

import java.awt.*;

txtNmero.setBounds(112,

40,

40,

import java.awt.event.*;

20);

import javax.swing.*;

getContentPane( ).add(txtNmero);

public class RepeticionWhile extends

btnProcesar

JApplet implements ActionListener {

JButton("Procesar");

new

btnProcesar.setBounds(300, 20, 150,


//declaracin de variables globales

20);

JLabel lblFactorial;

btnProcesar.addActionListener(this);

JTextField txtNmero;

getContentPane( ).add(btnProcesar);

JButton btnProcesar, btnBorrar;


JTextArea txtArea;

btnBorrar = new JButton("Borrar");

JScrollPane scpScroll;

btnBorrar.setBounds(300,

40,

150,

20);
//GUI

btnBorrar.addActionListener(this);

public void init( ) {

getContentPane( ).add(btnBorrar);

getContentPane( ).setLayout(null);
txtArea=new JTextArea( );
lblFactorial=new JLabel("FACTORIAL

scpScroll=new JScrollPane(txtArea);

DEL:");

scpScroll.setBounds(50,100,400,150);

lblFactorial.setBounds(50,20,200,20);

getContentPane( ).add(scpScroll);

getContentPane( ).add(lblFactorial);

}
//evento de los botones

txtNmero = new JTextField( );


Elaborado por Adolfo Rondn Chacn

92

public

void

if(nmero!=1)

actionPerformed( ActionEvent e ){

imprimir(" * ");

if(e.getSource( ) = = btnProcesar)

nmero--;

procesar( );

if(e.getSource( ) = = btnBorrar)

imprimir(" = "+factorial);

borrar( );

//mtodo que lee el nmero de la GUI

//mtodo procesar

public int getNmero( ){

public void procesar( ){

return

//se

declara

un

acumulador

que

Integer.parseInt(txtNmero.getText( ));

contendr el producto total

int factorial=1;

//mtodo borrar

//leemos el nmero ingresado en la

public void borrar( ){

GUI

txtNmero.setText("");

intnmero=getNmero( );

txtArea.setText("");
txtNmero.requestFocus( );

//repetimos 15 veces la multiplicacin

del nmero * i

/*mtodo que imprime una lnea en el

while(nmero>=1){

JTextArea, esta vez no ponemos "\n"

factorial *= nmero;

ya que debemos imprimir todo en la

imprimir(""+nmero);

misma lnea*/

/*si el nmero es diferente de 1

public void imprimir(String linea){

imprimimos el smbolo "*" esto evitar

txtArea.append(lnea);

que se imprima este smbolo al

finalizar la operacin */

}//fin del programa

Ejercicio
Realizar un programa, utilizando la repeticin do while, que ingrese un
nmero entero y un exponente y muestre el resultado.

Elaborado por Adolfo Rondn Chacn

93

import java.awt.*;
import java.awt.event.*;

txtNmero = new JTextField( );

import javax.swing.*;

txtNmero.setBounds(110,

40,

40,

20);
public
extends

class

RepeticionDoWhile

JApplet

getContentPane( ).add(txtNmero);

implements

ActionListener {

lblExponente=new
JLabel("Exponente:");

// declaracin de variables globales

lblExponente.setBounds(200,20,100,2

JLabel lblNmero,lblExponente;

0);

JTextField txtNmero,txtExponente;

getContentPane( ).add(lblExponente);

JButton btnProcesar,btnBorrar;
JTextArea txtArea;

txtExponente = new JTextField( );

JScrollPane scpScroll;

txtExponente.setBounds(210, 40, 40,


20);

// GUI

getContentPane( ).add(txtExponente);

public void init( ) {


btnProcesar
getContentPane( ).setLayout(null);

new

JButton("Procesar");
btnProcesar.setBounds(300, 20, 150,

lblNmero=new JLabel("Nmero:");

20);

lblNmero.setBounds(100,20,100,20);

btnProcesar.addActionListener(this);

getContentPane( ).add(lblNmero);

getContentPane( ).add(btnProcesar);

Elaborado por Adolfo Rondn Chacn

94

int i=exponente;
btnBorrar = new JButton("Borrar");
btnBorrar.setBounds(300,

40,

150,

// hacer la multiplicacin mientras "i"

20);

sea mayor o igual que 1

btnBorrar.addActionListener(this);

do{

getContentPane( ).add(btnBorrar);

producto *= nmero;
i--;

txtArea=new JTextArea( );

scpScroll=new JScrollPane(txtArea);

while(i >= 1);

scpScroll.setBounds(50,100,400,150);
getContentPane( ).add(scpScroll);

// mostramos el nmero, el exponente

y el producto

// evento de los botones

imprimir(""+nmero+" ^ "+exponente+"

public

void

= "+ producto);

actionPerformed( ActionEvent e ){

if(e.getSource( ) = = btnProcesar)

// mtodo que lee el nmero de la GUI

procesar( );

public int getNmero( ){

if(e.getSource( ) = = btnBorrar)

return

borrar( );

Integer.parseInt(txtNmero.getText( ));

}
// mtodo que lee el exponente de la

// mtodo procesar

GUI

public void procesar( ){

public int getExponente( ){


return

// se declara un acumulador que

Integer.parseInt(txtExponente.getText(

contendr el producto total

));

int producto=1;

// leemos el nmero y el exponente


ingresados en la GUI

// mtodo borrar

intnmero=getNmero( );

public void borrar( ){

int exponente=getExponente( );

txtNmero.setText("");

// inicializamos una variable con el

txtExponente.setText("");

valor del exponente ledo

txtArea.setText("");

Elaborado por Adolfo Rondn Chacn

95

txtNmero.requestFocus( );

public void imprimir(String linea){

txtArea.append(lnea + "\n");

// mtodo que imprime una lnea en el

JTextArea

} // fin del programa

Nmeros Aleatorios (Math.random)


Definicin: la funcin Math.random nos permite generar nmeros
reales aleatorios en un intervalo abierto entre 0 y 1.
Ejemplo:
double num = Math.random( );
La variable num de tipo double contendr un nmero al azar en el
rango <0,1 >
Observacin:
Para generar nmeros mayores basta con multiplicar la funcin por el
nmero deseado.
Ejemplo: generar un nmero real al azar entre 0 y 10.
double num = Math.random( ) * 10;
Para generar un nmero entero aleatorio basta con agregarle int a la
funcin dada, adems se tendr que agregarle uno al limite del rango.
(int) (Math.random( ) * ( max + 1) );
Donde max es el mximo valor que queremos generar.
Ejemplo: generar un nmero entero al azar entre 0 y 10.
int num = (int) (Math.random( ) * 11);

Elaborado por Adolfo Rondn Chacn

96

Al agregarle int a la funcin, esta tomar solo la parte entera, por


ejemplo si el nmero generado al azar fuera 0.01 la funcin tomara
solo al 0, o si el nmero generado fuera 10.8 nos quedaramos solo
con el 10, es por eso que al generar nmeros enteros se le debe
aumentar 1 al limite que queremos, de ah que se multiplique la funcin
por 11.
Para generar un nmero entero aleatorio entre un rango diferente, se
necesitara una formula simple:
(int) (Math.random( ) * ((max + 1) - min) + (min)
Donde max, como mencionamos anteriormente, es el mximo valor
que deseamos generar y min ser el mnimo valor que queremos.
Ejemplo: generar un nmero entero al azar entre 5 y 20.
int num = (int) (Math.random( ) * 16 + 5);
Como vemos la funcin quedo de la siguiente manera:
(int) (Math.random( ) * ( (20 + 1) 5 ) + 5);
Donde al resolver las operaciones quedar como vimos en el ejemplo.
A continuacin mostraremos una pequea aplicacin, la cual simular
jugar con un dado, que al presionar un botn muestre un nmero entero
al azar entre 1 y 6.

Elaborado por Adolfo Rondn Chacn

97

import java.awt.*;

txtArea.setBounds(125,150,50,100);

import java.awt.event.*;

//el rea no se podr editar

import javax.swing.*;

txtArea.setEditable(false);

public

//tipo y tamao de letra para el rea

extends

class

NmerosAleatorios

JApplet

implements

txtArea.setFont(new

Font("Comic

ActionListener{

Sans MS",1,80));

//declaracin de variables globales

getContentPane( ).add(txtArea);

JLabel lblTitulo;

JButton btnJugar;

public

JTextArea txtArea;

actionPerformed(ActionEvent e){

// GUI

if(e.getSource( ) = = btnJugar)

public void init( ) {

jugar( );

getContentPane( ).setLayout(null);

//color de fondo

public void jugar( ){

getContentPane( ).setBackground(ne

//generamos un nmero al azar entre

w Color(107,249,100));

1y6

//creamos el titulo centrado

int num=(int)(Math.random( )*6+1);

lblTitulo = new JLabel("Juego del

//mostramos el nmero en el rea

Dado",SwingConstants.CENTER);

imprimir(""+num);

lblTitulo.setBounds(100,50,100,20);

getContentPane( ).add(lblTitulo);

public void imprimir(String s){

btnJugar = new JButton("Jugar");

//imprimimos solo una lnea en el rea

btnJugar.setBounds(100,100,100,20);

txtArea.setText(s);

btnJugar.addActionListener(this);
getContentPane( ).add(btnJugar);

void

}}//fin del programa

txtArea = new JTextArea( );

Elaborado por Adolfo Rondn Chacn

98

16. Funciones (subprocesos) en Pseint


A partir de la version 20121010 (10/Octubre/2012) Pseintpermite la
posibilidad de definir funciones al que el creador del mismo bautiz
como subprocesos, en este tutorial explicaremos brevemente cmo
se tratan dichas funciones.
Para empezar una funcin no es ms que un bloque de cdigo con un
determinado fin o propsito, podemos definir ms de una y nos
permiten ahorrar lneas cdigo si nuestros programas son muy
extensos o hay codificacin redundante.
Las funciones en Pseint se identifican por un nombre, comienzan con
la palabra reservadaFuncion y terminan con FinFuncion. Tambin
podemos utilizar SubProceso -FinSubProceso que sera lo mismo.
Siempre se declaran afuera del proceso principal para ser llamados o
invocados en ste. Tambin opcionalmente pueden retornar un valor
o recibir cierta cantidad de argumentos.
A continuacin se muestran una serie de ejemplos para comprender
mejor esta temtica.
Ejemplo 1. Funcion sin parmetros y sin retorno.

El proceso programa contiene el llamado a la funcin mensaje(), y


esta lo nico que hace es imprimir o mostrar el mensaje que esta en
rojo
Ejemplo 2. Funcion con 1 parmetro y sin retorno.

En este ejemplo se ingresa un texto en el programa y este es enviado


a la funcin que solo lo muestro junto a la palabra bienvenido es decir
bienvenido nombre
Ejemplo 3. Funcion sin parmetros y con retorno.

La estructura de una funcin que retorna un valor es la siguiente:


Funcion variable<-nombre()
instrucciones...
FinFuncion
En el ejemplo 3 se crea una funcion que suma dos nmeros y el
resultado se lo vamos a asignar a la variables. sta entonces
contendr un valor y lo va a retornar. En la lnea 10 se llama a la
funcion e imprimimos un mensaje para visualizar el resultado. La
salida que imprime es: "El resultado es: 10".
Ejemplo 4. Funcion con parmetros y con retorno.

En este ejemplo la funcion suma recibe dos parmetros, en este caso


dos nmeros que se van a sumar y guardar el resultado en la
variables. Vemos que en la lnea 9 se llama a la funcin con dos
valores (5 y 3), si no se ingresan o por el contrario se agregan ms
valores el programa generar error. Finalmente el programa imprime:
"El resultado es: 8".
Como vimos en los anteriores ejemplos, una funcin puede tener
muchas variantes, dependiendo del caso o del problema a resolver
una funcion puede o no llevar parmetros, como tambin puede o no

devolver un valor, por eso es importante tener claro estos conceptos


para saber cuando utilizarlos o aplicarlos en nuestros programas.
Funciones con pasaje por valor y por referencia
En Pseint se le pasan argumentos a una funcion de dos formas por
valor o por referencia. Hasta ahora en los anteriores ejemplos las
funciones que recibieron argumentos fueron por valor ya veremos por
que.
Cuando decimos pasaje por valor nos referimos a que los argumentos
de la funcion opera con una copia de la variable o el valor que recibi
en la llamada de la funcion, por lo que las acciones que se hagan
dentro de sta no afectarn al resto del programa.
La sintaxis para utilizar argumentos por valor es la siguiente:
Forma 1

Sin la palabra clave Por Valor.


Forma que utilizamos en los ejemplos.
Forma 2

Con la palabra clavePor Valor.


Ambas son vlidas, depende del programador que forma quiera
utilizar. Recomiendo la forma 1.
Realizaremos un ejemplo ms completo para entender mejor el
pasaje por valor.
Ejemplo 5. Funcion con pasaje por valor.

En la lnea 1 se declara una funcin llamada miFuncion que recibe un


argumento. Lo que har esta funcion simplemente es sumarle 5 al
valor que reciba en el argumento (lnea 3) e imprimirlo (lnea 5).
En el proceso principal se declara una variable llamada i inicializada
en 20. En la lnea 14 invocamos a la funcion miFuncion y le pasamos
como parmetro nuestra variable i. La lnea 16 imprime el valor de i.
Cuando ejecutamos el programa, la salida que produce es:25
El valor de i es: 20
El primer valor 25 se debe a que a la funcion le estamos pasando una
variable cuyo valor es 20, dentro de la funcion este valor cambia a 25
pues hace la siguiente operacion a<-20+5 e imprime el valor de a
osea 25.
En la otra salida ("El valor de i es: 20"), simplemente estamos
imprimiendo el valor de i para poder entender el pasaje por valor,
podemos observar que conserva el mismo valor a pesar de que la
funcion miFuncion lo haya modificado a 25, esto porque cmo
expresamos anteriormente, las funciones que reciben argumentos por
valor los cambios que ocurren dentro de ella no afectan al resto del
programa. La variable i le est pasando una copia de su valor a la
variable a, para que i no se vea afectada en las operaciones que se
hagan con a, de manera que i siempre conservar su valor original.
Los pasajes por referencia es lo contrario a los pasajes por valor. Su
sintaxis es la siguiente:
A los argumentos se le agrega la palabra clavePor Referencia.

Para comprender el pasaje por referencia realizaremos un ejemplo.


Ejemplo 6. Funcion con pasaje por referencia.

Bsicamente emplearemos el mismo ejemplo que el anterior slo que


el argumento ser por referencia. Reitermos:
En la lnea 1 se declara una funcin llamada miFuncion que recibe un
argumento. Lo que har esta funcion simplemente es sumarle 5 al
valor que reciba en el argumento (lnea 3) e imprimirlo (lnea 5).
En el proceso principal se declara una variable llamada i inicializada
en 20. En la lnea 14 invocamos a la funcion miFuncion y le pasamos
como parmetro nuestra variable i. La lnea 16 imprime el valor de i.
Cuando ejecutamos el programa, la salida que produce es la
siguiente:25
El valor de i es: 25
El primer valor 25 se debe a que a la funcion le estamos pasando una
variable cuyo valor es 20, dentro de la funcion este valor cambia a 25
pues hace la siguiente operacion a<-20+5 e imprime el valor de a
osea 25.
En la otra salida ("El valor de i es: 25"), estamos imprimiendo el valor
de i para poder captar el pasaje por referencia, podemos observar
que el valor ya no es el mismo porque la funcionmiFuncion lo ha
modificado a 25, las funciones que reciben argumentos por referencia
los cambios que ocurren dentro de ella afectan al resto del programa.
De manera que i pierde por completo su valor original.
Funcion que recibe como parmetro un arreglo:

No slo podemos pasarle parmetros nmericos o cadenas de texto a


una funcion, tambin podemos pasarle arreglos.
Ejemplo 7. Funcion que retorna un valor y recibe como parmetro un
arreglo.

El ejemplo consiste en sumar dos nmeros que estan almacenados en


un arreglo.
Creamos la funcion suma que recibe como parmetro un arreglo y
retorna un valor (lnea 2).
Se crea un acumulador inicializado en cero para sumar los dos
nmeros, ste contendr el resultado y es lo que vamos a retornar.
En la lnea 5 se recorre el arreglo con un ciclo para y se suman los dos
datos ingresados.
En el proceso principal es donde se crea el arreglo con un tamao de
2 (lnea 15).
En la lnea 17 - 24 a travs del ciclopara pedimos los dos nmeros al
usuario y lo guardamos en el arreglo.
Finalmente en la lnea 26 se imprime el resultado y se invoca a la
funcion pasandole como parmetro el arreglo creado: arr_num.

La anterior fue una breve gua para iniciar y dar conocer al estudiante
el manejo de las funciones (subprocesos) en Pseint, un tema muy
comn y utilizado en la programacin.

Вам также может понравиться