Você está na página 1de 70

ESTRUCTURA DE LA INFORMACIÓN

ESTRUCTURA DE LA INFORMACIÓN

Amigo(a) estudiante:

La asignatura Estructura de la Información es la base de programación, siendo base


fundamental para el desarrollo de Algoritmos. Para resolver un problema de la vida real lo primero
que hacemos es analizar el grado de dificultad, diseñamos luego una estrategia en base a los
elementos disponibles y finalmente podemos darle solución.

El curso comprende: Estructuras algorítmicas básicas, Estructuras algorítmicas usando Java.


Fundamentos de Programación. Arreglos Multimensionales Conceptos de la Programación
Orientada a Objetos.

OBJETIVOS

Con el estudio de curso lograrás:

 Analizar problemas y plantear soluciones objetivas que permitan su


desarrollo.
 Diseñar algoritmos lógicos apropiados.
 Crear buenos hábitos de programación.

2
ESTRUCTURA DE LA INFORMACIÓN

PRIMERA UNIDAD DIDÁCTICA

ESTRUCTURAS ALGORÍTMICAS BÁSICAS

1.1 LA ALGORITMIA

La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de


un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en
el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar
solución a un problema específico.

TIPOS DE ALGORITMOS
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

LENGUAJES ALGORÍTMICOS
Alude a series de símbolos y reglas que se utilizan para describir de manera explícita un proceso. Pueden
ser:

Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).
No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(seudocódigo).

METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS POR MEDIO DE COMPUTADORA

a. Definición del Problema


Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es
importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del
todo no tiene mucho caso continuar con la siguiente etapa.
El planteamiento debe ser tan claro como para que cualquiera entienda exactamente lo que se desea
hacer. No es lo mismo decir:
- Sumar dos números que,
- Ingresar dos números enteros, sumar ambos números y mostrar el resultado de la suma.

b. Análisis del Problema


Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
 Los datos de entrada. (Número1 y Número2)
 Cual es la información que se desea producir (Resultado)
 Los métodos y fórmulas que se necesitan para procesar los datos. (Resultado = Número1 +
Número2)
Una recomendación muy práctica es el que nos pongamos en el lugar de la computadora y analicemos que
es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.

c. Diseño del Algoritmo


Las características de un buen algoritmo son:

3
ESTRUCTURA DE LA INFORMACIÓN

 Debe tener un punto particular de inicio.


 Debe ser definido, no debe permitir dobles interpretaciones.
 Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la
definición del problema.
 Debe ser finito en tamaño y tiempo de ejecución.

d. Codificación
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de
flujo o seudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la
computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un
lenguaje de programación o lenguaje de alto nivel.

Solución del problema ejemplo (En formato de seudocódigo)

var
Numero1, Numero2, Resultado : numerico
inicio
Leer(Numero1,Numero2);
Resultado=Numero1+Numero2;
Imprimir(Resultado);
fin

Como verá el seudocódigo es fácil de implementar a través de los verbos de la acción. NO USAR
ACENTOS. Es probable que en algunos textos aparezca Lee por Leer o Ingresa por Leer; Asigna
(Resultado=Numero1+Numero1); Muestra por Imprimir o Salida por Imprimir. También es probable que no
aparezca las palabras inicio y fin o en lugar de var diga variables. Es posible incluso que primero vaya el
tipo de dato (numérico) y luego las variables, o que sea más específica la definición del tipo de dato (real,
entero, flotante, etc.). El seudocódigo se ajusta a dichas variantes pero siempre debe tratar que no se
pierda la legibilidad. Obviamente usaremos el lenguaje de seudocódigo del SL.

e. Prueba y Depuración
Los errores humanos dentro de la programación de computadoras son muchos y aumentan
considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar
paso a una solución sin errores se le llama depuración.

La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se
debe considerar con el mismo interés y entusiasmo.

No seremos tan detallistas; básicamente, lo que pretendemos cubrir es lo concerniente a:

 Planteamiento de los problemas


 Declaración del seudocódigo

EL LENGUAJE DE SEUDOCÓDIGO
El lenguaje natural no es apropiado para la descripción de algoritmos ya que es inconcreto y disperso.

Los lenguajes de programación, y más los muy estructurados como el C ó el Pascal, podrían ser utilizados
perfectamente en la descripción. Pero en estos casos el detalle sintáctico oscurecerá lo esencial del

4
ESTRUCTURA DE LA INFORMACIÓN

algoritmo. Se utilizará por ello, un lenguaje intermedio: Seudocódigo; que siendo muy simple en su sintaxis
permita una buena estructuración.

 La traducción de seudocódigo a un determinado lenguaje de programación puede implicar


que un sentencia se traduzca en varias o, en estructuras de bucle complejas, pero este
efecto no será considerado a nuestros propósitos.
 Igualmente, a efectos de simplicidad se evitará la declaración de magnitudes escalares
(Enteras, reales, booleanas, ..) considerando, a menos que se especifique lo contrario, todas
las variables de ámbito local.
 Se utilizarán los sangrados para aclarar el código y sus bloques, y las sentencias inicio y fin
para englobar bloques de código, tratando de no abusar de ello.
 Los espacios alrededor de los símbolos ayudarán a su mejor lectura.
 En las funciones solo se declararán los parámetros y el valor de retorno si ello ayuda a
entender el seudocódigo.
 Los parámetros se pasarán por valor salvo indicación de lo contrario.
 Se utilizarán siempre letras minúsculas, reservando las mayúsculas para separar términos en
nombres compuestos o en la nomenclatura de constantes.
 Los términos que representan sentencias o acciones se dispondrán en negrita y las
variables, nombres de funciones o procedimientos y parámetros en oblicuo.
 Usaremos Leer e Imprimir para procesos de entrada y salida respectivamente; desde para
bucles de n ciclos fijos; mientras o hasta bucles con centinelas; Si para decisiones simples y
Si – Entonces – SinoSi para decisiones múltiples o eval para las mismas. Volveremos sobre
el tema luego.

Ejemplo: El programa recibirá dos números y devolverá la suma, resta, multiplicación y división de ambos
números (no use acentos en el nombre de las variables). Haremos la solución en lenguaje de seudocódigo.

var
numero1, numero2, suma, resta, multiplicacion, division : numerico
inicio
cls()
imprimir("\nIngrese el primer número : ");
leer(numero1);
imprimir("\nIngrese el segundo número : ");
leer(numero2);
suma=numero1+numero2;
resta=numero1-numero2;
multiplicacion=numero1*numero2;
division=numero1/numero2;
imprimir("\nEl resultado de la suma es : ",suma);
imprimir("\nEl resultado de la resta es : ",resta);
imprimir("\nEl resultado de la multiplicación es : ", multiplicacion);
imprimir("\nEl resultado de la división es : ", division);
fin

Comentario: cls() se emplea para limpiar la pantalla

5
ESTRUCTURA DE LA INFORMACIÓN

PSEUDOCÓDIGO Y LENGUAJE SLE

El SLE (Lenguaje de Seudocódigo)


Es un software diseñado para construir y analizar algoritmos en un lenguaje cercano al natural. Es un
programa “antiguo” para sistemas operativos DOS pero que corre sin problemas en ambientes Windows y
está en castellano. Al ejecutarlo se verá la siguiente pantalla:

Es una buena práctica crear una carpeta para guardar nuestros trabajos (Podemos establecer dicha
carpeta como el directorio por defecto con Archivo-Cambiar Directorio). Del menú Archivo tomamos la
opción Nuevo; aparecerá al centro una “página” azul con el título “untitled” lo que indica que no tiene
nombre. Es ahí donde escribimos nuestra aplicación.

Escribimos:
inicio
imprimir(“Hola Mundo”);
fin

Se verá de la siguiente forma: (Sólo estamos mostrando la parte superior de la pantalla). Observe que en
SL casi toda línea termina en punto y coma (;). Ya explicaremos las excepciones.

Del Menú ejecutar, tomamos la opción Compilar. Aparecerá un cuadro de diálogo para darle nombre a la
aplicación, pongámosle Saludo.sl (sl es la extensión para los archivos del programa).

6
ESTRUCTURA DE LA INFORMACIÓN

Y hacemos un clic sobre OK, apareciendo el siguiente cuadro de diálogo (si no hay errores de escritura)

Para ejecutar pulsamos Ejecutar-Ejecutar. Se verá como sigue:

También hemos recortado la pantalla. Es una vista tipo consola que se cierra al pulsar cualquier tecla.
Bastante sencillo ¿o no?
Algunos elementos básicos los detallamos a continuación. El resto de elementos se expondrán durante el
desarrollo de cada tema. Los comentarios se escriben así:

/* Este es un comentario
hecho en dos líneas*/
//Este es un comentario en una sola línea

En SL solo existen variables numéricas y de cadena, se declaran antes del bloque del programa o sea
antes de la palabra inicio.

var
num1, num2, num3 : numerico
estado : cadena

Las constantes también se declaran antes de inicio:

7
ESTRUCTURA DE LA INFORMACIÓN

const
pi=3.1416
vacio=” “

Opciones del Menú de SLE

8
ESTRUCTURA DE LA INFORMACIÓN

Lista de principales teclas rápidas

Programa 1:
Permite ingresar un nombre y mostrar un saludo:

var
nombre : cadena

inicio
imprimir("\nIngrese Nombre : ")
leer(nombre)
imprimir("\nHola " + nombre)
fin

Nota:
str(numero) se emplea para convertir un número en una expresión de cadena para ser mostrada por
imprimir.
str(numero,0,0) evita que se muestren decimales
Puede usarse “,” para encadenar sin necesidad de str()

9
ESTRUCTURA DE LA INFORMACIÓN

1.2 FUNDAMENTOS DE PROGRAMACIÓN

TIPOS DE DATOS
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un
valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar
una variable.

Numéricos
Simples Lógicos
Alfanuméricos (string)
Tipos de
datos Arreglos (Vectores, Matrices)
Estructurados Registros
Clases
(Def. por el Archivos
usuario) Apuntadores

Tipos de Datos Simples

Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números
enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.

Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el
resultado de una comparación entre otros datos (numéricos o alfanuméricos).

Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar
valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible
representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es
posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.
Ejemplo:
“Universidad Privada Telesup”
“2008”
Programa 2:
Permite ingresar un nombre, sexo y edad y mostrar dichos valores en una sola expresión
var
nombre,sexo : cadena
edad : numerico

inicio
cls()
imprimir("\nIngrese Nombre : ")
leer(nombre)
imprimir("\nIngrese Edad : ")
leer(edad)
imprimir("\nIngrese Sexo : ")
leer(sexo)
imprimir("\nHola " + nombre + " tu edad es " + str(edad,0,0) + " y eres " + sexo)
fin

10
ESTRUCTURA DE LA INFORMACIÓN

EXPRESIONES
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres
de funciones especiales. Por ejemplo:

a+(b + 3)/c

Programa 3:
Ingrese 2 números y muestre la suma de ambos números:

var
n1,n2, s: numerico

inicio
cls()
imprimir("\nIngrese primer número : ")
leer(n1)
imprimir("\nIngrese segundo número : ")
leer(n2)
s=n1+n2
imprimir("\nLa suma de ambos números es " + str(s))
fin
Cada expresión toma un valor que se determina tomando los valores de las variables y constantes
implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican
las expresiones en:

- Aritméticas
- Relaciónales
- Lógicas

OPERADORES Y OPERANDOS

Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o
constantes. Es decir, los operadores nos permiten manipular valores.

Aritméticos
Tipos de Operadores Relaciónales
Lógicos

11
ESTRUCTURA DE LA INFORMACIÓN

Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas


con los valores (variables y constantes).

Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son
enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

Operando (Operador) Operando

Valor
(constante o variable)

Operadores Aritméticos
+ Suma
- Resta
* Multiplicación
/ División
Mod Modulo (residuo de la división entera) En Java y C++ es %

Ejemplos:
Expresión Resultado
7/2 3.5
12 mod 7 5
4 +2*5 14

Programa 4:
Ingrese un sueldo básico y otorgue una bonificación de 15% y muestre el sueldo a cobrar.

var
basico, bonif, sueldo: numerico

inicio
cls()
imprimir("\nIngrese Básico : ")
leer(basico)
bonif=basico * 0.15
sueldo=basico+bonif
imprimir("\nEl basico es " + str(basico))
imprimir("\nla Bonificación es de " + str(bonif))
imprimir("\nEl sueldo a recibir es " + str(sueldo))
fin

PRIORIDAD DE LOS OPERADORES ARITMÉTICOS


- Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados
se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero.
- Dentro de una misma expresión los operadores se evalúan en el siguiente orden.
- 1.- ^ Exponenciación
- 2.- *, /, mod Multiplicación, división, modulo.
- 3.- +, - Suma y resta.

12
ESTRUCTURA DE LA INFORMACIÓN

- Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a
derecha.

Ejemplos:
4 + 2 * 5 = 14
23 * 2 / 5 = 9.2
46 / 5 = 9.2
3 + 5 * (10 - (2 + 4)) = 23
3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23
3.5 + 5.09 - 14.0 / 40 = 5.09
3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09
2.1 * (1.5 + 3.0 * 4.1) = 28.98
2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98

Programa 5:
Haga un programa para hallar X,Y, si se sabe que :
X = (A+B*C)/8
Y = (B*D)/A
Z =( X + Y)/Y*4

var
A,B,C,D,X,Y,Z : numerico

inicio
cls()
imprimir("\nIngrese los valores de A,B,C,D : \n")
leer(A,B,C,D)
X = (A+B*C)/8
Y = (B*D)/A
Z =( X + Y)/Y*4
imprimir("\nEl valor de X : " + str(X))
imprimir("\nEl valor de Y : " + str(Y))
imprimir("\nEl valor de Z : " + str(Z))
fin

OPERADORES RELACIONALES:

- Se utilizan para establecer una relación entre dos valores.


- Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad
(verdadero o falso).
- Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)
- Tienen el mismo nivel de prioridad en su evaluación.
- Los operadores relaciónales tiene menor prioridad que los aritméticos.

Son: > Mayor que


< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Diferente
= Igual (En C++ y Java se usa == y = para asignación)

13
ESTRUCTURA DE LA INFORMACIÓN

Ejemplos:
Si a = 10 b = 20 c = 30
a+b>c Falso
a-b<c Verdadero
a-b=c Falso
a*b<>c Verdadero

Ejemplos no lógicos:
a<b<c
10 < 20 < 30
T < 30 (no es lógico porque tiene diferentes operandos)

OPERADORES LÓGICOS:
- Estos operadores se utilizan para establecer relaciones entre valores lógicos.
- Estos valores pueden ser resultado de una expresión relacional.

Son: Y And
O Or
No Not

Operador Y
Operando1 Operador Operando2 Resultado
T Y T T
T F F
F T F
F F F

Operador O
Operando1 Operador Operando2 Resultado
T O T T
T F T
F T T
F F F

Operador Not
Operando Resultado
T F
F T

Ejemplos:
(a < b) Y (b < c)
(10<20) Y (20<30)
T Y T

T
Prioridad de los Operadores Lógicos
No
Y
O

14
ESTRUCTURA DE LA INFORMACIÓN

Prioridad de los Operadores en General


1.- ( )
2.- ^
3.- *, /, Mod, No
4.- +, -, Y
5.- >, <, > =, < =, < >, =, O

Ejemplos:
a = 10 b = 12 c = 13 d =10

1) ((a > b)O (a < c)) Y ((a = c) O (a > = b))


F T F F
T F
F

2) ((a > = b) O (a < d)) Y (( a > = d) Y (c > d))


F F T T
F T
F

3) NO(a = c) Y (c > b)
F T
T
T

Programa 6:
Haga un programa que reciba el precio de 3 productos, obtenga el IGV (19%) de la suma de dichos
productos y muestre el total a pagar.

var
pp1, pp2, pp3, ti, igv, tf: numerico

inicio
cls()
imprimir("\nIngrese Precio primer producto : ")
leer(pp1)
imprimir("\nIngrese Precio segundo producto : ")
leer(pp2)
imprimir("\nIngrese Precio tercer producto : ")
leer(pp3)
ti=pp1+pp2+pp3
igv=ti*0.19 /*puedo no usar igv y multiplicar ti*1.19
*/
tf=ti+igv
imprimir("\nEl precio sin impuestos es " + str(ti))
imprimir("\nEl IGV es de " + str(igv))
imprimir("\nEl Total a pagar es " + str(tf))
fin

15
ESTRUCTURA DE LA INFORMACIÓN

PALABRAS RESERVADAS
Las palabras utilizadas por SL para propósitos especiales son llamadas “palabras reservadas”. Dado que
las mismas tienen un significado específico para el compilador de SL, no pueden ser utilizadas como
identificadores.

Todas las palabras reservadas deben ser escritas siempre completamente en letras minúsculas, de lo
contrario el compilador SL no las reconocerá como tales.

DELIMITADORES DE SENTENCIAS
Las sentencias pueden ocupar una o varias líneas, es decir:

a = (b + c) * (b / y) +
(y / c)

es una sentencia válida, aunque ocupa dos líneas.


Puede escribirse más de una sentencia en una sola línea, si se las separa por el carácter punto y coma (‘;’).
Así:

a = b + c; n = a / y

son dos sentencias escritas en una sola línea, separadas por el carácter punto y coma (‘;’).

Las expresiones numéricas complejas o las sentencias muy largas pueden ser libremente distribuidas en
dos o más líneas para mejorar la legibilidad del programa fuente SL.
También debemos señalar que las líneas en blanco y los espacios entre las sentencias no son necesarios
para que la computadora interprete correctamente el programa, por lo tanto podríamos omitirlas, pero al
suprimirlos haremos difícil a otras personas, e incluso a nosotros mismos, la comprensión de nuestros
programas.

IDENTIFICADORES
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un
identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la
computadora, que nos permite acceder a su contenido.

Ejemplo: Nombre
Num_hrs
Calif2

16
ESTRUCTURA DE LA INFORMACIÓN

Reglas para formar un Identificador


Los identificadores son utilizados para dar nombre a los programas, variables, subrutinas, tipos de datos,
constantes y otros elementos de un programa SL.

Existen algunas reglas a tener en cuenta en la creación de identificadores:


1. Deben comenzar con una letra o con el carácter ‘_’ (guión bajo).
2. Pueden tener hasta 32 caracteres.
3. No deben contener espacios.
4. La combinación de mayúsculas y minúsculas en los identificadores hace que los mismos sean
considerados diferentes. En otras palabras:
CANTIDAD, cantidad y Cantidad representan tres identificadores distintos.
5. Pueden incluir las letras ñ y Ñ (eñe minúscula y mayúscula respectivamente).
6. No pueden contener caracteres acentuados.
7. Pueden incluir combinaciones de letras y números y el carácter ‘_’ (guión bajo)

CONSTANTES Y VARIABLES
Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del
programa.
Ejemplo:
pi = 3.1416 (Java tiene una constante Math.PI)

Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato


durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para
poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual
podamos identificarla dentro de un algoritmo.
Ejemplo:
area = pi * radio ^ 2
Las variables son: el radio, el área y la constate es pi

CLASIFICACIÓN DE LAS VARIABLES

Numéricas
Por su Contenido Lógicas
Alfanuméricas (String)
Variables

De Trabajo
Por su Uso Contadores
Acumuladores

POR SU CONTENIDO

Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos,
es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.

Ejemplo:
iva=0.15 pi=3.1416 costo=2500

Variables Lógicas: Son aquellas que solo pueden tener dos valores (TRUE o FALSE O SUS EQUIVALES
SI - NO) estos representan el resultado de una comparación entre otros datos.

17
ESTRUCTURA DE LA INFORMACIÓN

Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres
especiales). Ejemplo:
letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’

POR SU USO

Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se
usan normalmente dentro de un programa. Ejemplo:
suma=a+b/c
Contadores: Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o
se cumple una condición. Con los incrementos generalmente de uno en uno. (Su uso más común es dentro
de bucles).
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de
valores que se van leyendo o calculando progresivamente (a=a+3 en un ciclo desde por ejemplo que es
donde más se usan).

1.3 ESTRUCTURAS ALGORÍTMICAS


Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten,
mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de
problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

- Asignación
Secuenciales - Entrada
- Salida

- Simples
Estructuras Condicionales
Algorítmicas - Múltiples

- Hacer desde
Cíclicas - Hacer mientras
- Repetir hasta
ESTRUCTURAS SECUENCIALES

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas
se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin
del proceso. Una estructura secuencial se representa de la siguiente forma:
Inicio
Accion1
Accion2
.
.
AccionN
fin

18
ESTRUCTURA DE LA INFORMACIÓN

ASIGNACIÓN: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha
zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de
la siguiente forma:
 Simples: Consiste en pasar un valor constante a una variable (a=15)
 Contador: Consiste en usarla como un verificador del número de veces que se realiza un
proceso (a=a+1)
 Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b)
 De trabajo: Donde puede recibir el resultado de una operación matemática que involucre
muchas variables (a=c+b*2/4).

LECTURA: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta
operación se representa en un pseudocódigo como sigue:

leer a, b ó
leer(a,b)

Donde “a” y “b” son las variables que recibirán los valores

ESCRITURA: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o
mensaje. Este proceso se representa en un pseudocódigo como sigue:

Escribe “El resultado es:”, R


Muestra(“El resultado es:”, R)
En SLE usamos:
Imprimir(“\nEl resultado es “, R)

Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor.

Programa 7:
Hallar Z si se sabe que

var
a,b,x,y,z : numerico
x=3^(4)/7 + (9*(a-b)^(2)*8)/5
y=(4^(-3.23))/(a-b)
z=(x+y)/(x-y)

inicio
cls()
imprimir("\nIngrese el valor de A y B: \n")
leer(a,b)
x=3^(4)/7 + (9*(a-b)^(2)*8)/5
y=(4^(-3.23))/(a-b)
z=(x+y)/(x-y)
imprimir("\nEl resultado es " + str(z))
fin

19
ESTRUCTURA DE LA INFORMACIÓN

Programa 8:
Halle la potencia X de N y la raíz X de N si N y X se ingresan por teclado. (^ Símbolo de potencia)

var
N, X, potencia, raiz : numerico

inicio
cls()
imprimir("\nIngrese el número : " )
leer(N)
imprimir("\nIngrese el exponente : " )
leer(X)
potencia=N^X
raiz= N^(1/X)
imprimir("\nLa Potencia es : " + str(potencia))
imprimir("\nLa raiz es : " + str(raiz))
fin

Programa 9:
Haga un programa permita ingresar una cantidad en metros y que convierta dicha cantidad en su
equivalente en centímetros, pie, pulgadas, yardas si se sabe que:
metro = 100 cm
pulgada = 2.54 cm
pie = 12 pulgadas
yarda = 3 pies

var
metros, cm, pie, pulg, yar: numerico

inicio
cls()
imprimir("\nIngrese cantidad en metros : \n")
leer(metros)
cm=metros*100
pulg=cm/2.54
pie=pulg/12
yar=pie/3
imprimir("centimetros " + str(cm))
imprimir("\npulgadas " + str(pulg))
imprimir("\npie " + str(pie))
imprimir("\nyarda " + str(yar))
fin

Programa 10:
Haga un programa que permita ingresar 3 notas de práctica, 2 exámenes y una nota de trabajo. Debe
obtener el promedio ponderando:
Promedio de prácticas peso 2
Promedio de exámenes peso 3
Trabajo peso 1

20
ESTRUCTURA DE LA INFORMACIÓN

Forma 1:

var
pr1,pr2,pr3,ex1,ex2,tr,pp,pe,pf : numerico

inicio
cls()
imprimir("\nIngrese práctica 1 : ")
leer(pr1)
imprimir("\nIngrese práctica 2 : ")
leer(pr2)
imprimir("\nIngrese práctica 3 : ")
leer(pr3)
imprimir("\nIngrese Examen 1 : ")
leer(ex1)
imprimir("\nIngrese Examen 2 : ")
leer(ex2)
imprimir("\nIngrese Trabajo : ")
leer(tr)
pp=(pr1+pr2+pr3)/3
pe=(ex1+ex2)/2
pf=(pp*2+pe*3+tr)/6
imprimir("\nEl promedio final es : " + str(pf))
fin

Forma 2:
var
pr1,pr2,pr3,ex1,ex2,tr,pp,pe,pf : numerico

inicio
cls()
imprimir("\nIngrese las notas de las prácticas (3)\n")
leer(pr1,pr2,pr3)
imprimir("\nIngrese las notas de los exámenes (2)\n")
leer(ex1,ex2)
imprimir("\nIngrese la nota del trabajo (1)")
leer(tr)
pp=(pr1+pr2+pr3)/3
pe=(ex1+ex2)/2
pf=(pp*2+pe*3+tr)/6
imprimir("\nEl promedio final es : " + str(pf))
fin

ESTRUCTURAS CONDICIONALES
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado
de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación
se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos,
las simples y las múltiples.

21
ESTRUCTURA DE LA INFORMACIÓN

 SIMPLES: Las estructuras condicionales simples se les conoce como “Toma de decisión”. Estas
tomas de decisión tienen la siguiente forma:

si(condición){
Acción(es)
}

Programa 11:
Realice un programa que reciba el sueldo básico de un trabajador y su estado civil (use 0 para casado y 1
para soltero).
EL programa debe otorgar 10% de bonificación si es casado.
var
basico,ec,bonif, total: numerico

inicio
cls()
imprimir("\nIngrese el básico : ")
leer(basico)
imprimir("\nEstado Civil : ")
leer(ec)
si(ec==0){
bonif=(basico*0.1)}
total=basico+bonif
imprimir("\nLa bonificación es de : " + str(bonif))
imprimir("\nEl total a cobrar es de : " + str(total))
fin

Programa 12:
Reciba 3 notas y aumente 1 punto al promedio si este es mayor a 15.
var
not1,not2,not3,prom : numerico

inicio
cls()
imprimir("\nIngrese 3 notas :\n")
leer(not1,not2,not3)
prom=(not1+not2+not3)/3
si(prom>=15){
prom=prom+1}
imprimir("\nEl promedio es " + str(prom))
fin

 DOBLES: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas
posibles en función del cumplimiento o no de una determinada condición. Se representa de la
siguiente forma:
si(condición){
Acción(es)
sino
Acción(es)
}
22
ESTRUCTURA DE LA INFORMACIÓN

Donde:
Si ………………… Indica el comando de comparación
Condición………… Indica la condición a evaluar
acción(es)………… Son las acciones a realizar cuando se cumple o no la condición
sino……………… Precede a las acciones a realizar cuando no se cumple la condición
{}………………….. Las instrucciones luego de si o sino que se ejecutaran.
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones.

Programa 13:
Agregue al programa anterior 5% si es soltero (o si no es casado)

/* programa para ejecutar


una estructura condicional doble
*/
var
basico,ec,gi,bonif, total: numerico

inicio
cls()
imprimir("\nIngrese el básico : ")
leer(basico)
imprimir("\nEstado Civil : ")
leer(ec)

si(ec==0){
bonif=(basico*0.1)
sino
bonif=(basico*0.05)}
}

total=basico+bonif
imprimir("\nLa bonificación por Estado Civil es de : " + str(bonif))
imprimir("\nEl total a cobrar es de : " + str(total))
fin

 MÚLTIPLES: Las estructuras de comparación múltiples, son tomas de decisión especializadas que
permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una
serie de instrucciones específicas. La forma común es la siguiente:

si(condición){
Acción(es)
sino
Si(condición){
Acción(es)
sino
.
. Varias condiciones
.
}}

23
ESTRUCTURA DE LA INFORMACIÓN

Programa 14:
Agregue al programa anterior una bonificación por grado de instrucción (0 licenciado, 1 bachiller, 2 técnico)
Licenciado = 16%
Bachiller = 8%
Técnico 4%

/* programa para ejecutar


una estructura condicional múltiple
*/

var
basico,ec,gi,bonifec, bonifgi,total: numerico

inicio
cls()
imprimir("\nIngrese el básico : ")
leer(basico)
imprimir("\nEstado Civil : ")
leer(ec)
imprimir("\nGrado de Instrucción : ")
leer(gi)

si(ec==0){
bonifec=(basico*0.1)
sino
bonifec=(basico*0.05)}

si(gi==0){
bonifgi=(basico*0.16)
sino si(gi==1)
bonifgi=(basico*0.08)
sino si(gi==2)
bonifgi=(basico*0.04)
sino
imprimir("\nSólo 0/1/2 ")
}

total=basico+bonifec+bonifgi
imprimir("\nLa bonificación por Estado Civil es de : " + str(bonifec))
imprimir("\nLa bonificación por Grado de Instrucción es de: " + str(bonifgi))
imprimir("\nEl total a cobrar es de : " + str(total))
fin

ESTRUCTURAS REPETITIVAS O CÍCLICAS


Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo
conjunto de acciones que se puedan ejecutar una cantidad específica de veces. Esta cantidad puede ser
fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato
dentro del programa).Los ciclos se clasifican en:

24
ESTRUCTURA DE LA INFORMACIÓN

Ciclos con un Numero Determinado de Iteraciones (desde)


Son aquellos en que el número de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta
estructura es la siguiente (conocidos como ciclos for):

desde V.C = L.I hasta L.S {


Accion1
Accion2 .
.
.
AccionN}
Donde:
V.C Variable de control del ciclo
L.I Límite inferior
L.S Límite superior

En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de
control llegue al límite superior.
Programa 15:
Haga un programa que muestre los números del 1 al 10

var
valor : numerico

inicio
cls()
desde valor=1 hasta 10 paso 1{
imprimir("\nNúmero " + str(valor))}
fin

El paso por defecto es 1 así que omitiendo el paso funciona igual

var
valor : numerico

inicio
cls()
desde valor=1 hasta 10{
imprimir("\nNúmero " + str(valor))}
fin

pero si queremos solos los pares del hasta el 10 entonces

var
valor : numerico

inicio
cls()
desde valor=2 hasta 10 paso 2{
imprimir("\nNúmero " + str(valor))}
fin

25
ESTRUCTURA DE LA INFORMACIÓN

CICLOS CON UN NÚMERO INDETERMINADO DE ITERACIONES (MIENTRAS, REPETIR-HASTA)


Son aquellos en que el número de iteraciones no se conoce con exactitud, ya que esta dado en función de
un dato dentro del programa.

 Mientras: Esta es una estructura que repetirá un proceso durante “N” veces, donde “N” puede
ser fijo o variable. Para esto, la instrucción se vale de una condición que es la que debe
cumplirse para que se siga ejecutando (conocidos como ciclos while). Cuando la condición ya
no se cumple, entonces ya no se ejecuta el proceso. La forma de esta estructura es la
siguiente:
mientras(condición){
Accion1
Accion2
.
.
AccionN}
Problema 16:
Programa que permita procesar N notas y muestre la suma y el promedio de dichas notas.

var
numnot, n,nota, suma, prom, cont : numerico

inicio
cls()
imprimir("\Ingrese el número de notas a procesar ")
leer(numnot)
n= 1
mientras(n<=numnot){
imprimir("\nIngrese la nota" +str(n,0,0) + " : ")
leer(nota)
suma=suma+nota
cont=cont+1}
prom=suma/cont
imprimir("\nEl puntaje es " + str(suma))
imprimir("\nEl promedio es " + str(prom))
fin

 Repetir-Hasta: Esta es una estructura similar en algunas características, a la anterior. Repite


un proceso una cantidad de veces, pero a diferencia del Hacer-Mientras, el Repetir-Hasta lo
hace hasta que la condición se cumple y no mientras, como en el Hacer-Mientras. Por otra
parte, esta estructura permite realizar el proceso cuando menos una vez, ya que la condición
se evalúa al final del proceso, mientras que en el Hacer-Mientras puede ser que nunca llegue a
entrar si la condición no se cumple desde un principio (conocidos como ciclos until no está
presente en algunos lenguajes). La forma de esta estructura es la siguiente:
repetir
Accion1
Accion2
.
.
AccionN
hasta (condición)

26
ESTRUCTURA DE LA INFORMACIÓN

ARREGLOS

Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una
colección de datos del mismo tipo.
Los arreglos se caracterizan por:
 Almacenan los elementos en posiciones contiguas de memoria.
 Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer referencia a
esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento
dentro del archivo.

Unidimensionales (Vectores)
Tipo de
Arreglos
Bidimensionales (Matrices)

VECTORES
Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o
tamaño del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del
índice (entre corchetes), el cual indica una posición en particular del vector. Por ejemplo:

Vec[x]

Donde:
Vec………… Nombre del arreglo
x…………… Numero de datos que constituyen el arreglo

Representación gráfica de un vector

Vec[1] 7
Vec[2]
Vec[3] 8
Vec[4] 9
1
0

Llenado de un Vector

 desde I = 1 hasta 10{


leer(vec[I])}

 I=1
mientras(I <= 10){

27
ESTRUCTURA DE LA INFORMACIÓN

leer vec[I]}

 I=1
repetir
leer(vec[I])
I=I+1
Hasta(I>10)

La declaración de vectores en SLE es muy sencilla: se declara como una variable más, indicando al
compilador los datos adicionales que necesita:
La cantidad de elementos que tendrá, y de qué tipo serán los elementos, es decir, si serán numéricos, de
cadena o lógicos.

Por ejemplo, para declarar un vector numérico de 100 elementos escribiremos:

var
A : vector [100] numerico
Para imprimir el valor del primer elemento escribiremos:
imprimir (A [1])
Con el siguiente ciclo podemos imprimir todos los elementos del vector, uno en cada línea:
desde k=1 hasta 100
imprimir (“\n”, A [k])}

Programa 17:
Haga un programa que permita ingresar 5 notas y muestre 1 de ellas.

var
a : vector[5] numerico
n,m : numerico

inicio
cls()
imprimir("\nIngrese nota1 ")
leer(a[1])
imprimir("\nIngrese nota2 ")
leer(a[2])
imprimir("\nIngrese nota3 ")
leer(a[3])
imprimir("\nIngrese nota4 ")
leer(a[4])
imprimir("\nIngrese nota5 ")
leer(a[5])
imprimir("\nIngrese el número que desea mostrar ")
leer(m)
imprimir("\nEl valor solicitado contiene ",a[m])
fin

28
ESTRUCTURA DE LA INFORMACIÓN

MATRICES
Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el número de filas o
reglones y “N” el número de columnas.
Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz
acompañado de dos índices.

Mat [R,C]

Donde R indica el renglón y C indica la columna, donde se encuentra almacenado el dato.

Representación gráfica de una matriz

Mat [R,C]
Fila o
Renglon
[R] 1,1 1,2 1,3 1,4
2,1 2,2 2,3 2.4
3,1 3,2 3,3 3,4
4,1 4,2 4,3 4,4

Columna
Llenado de una matriz [C]
 Por renglones
desde R = 1 hasta 5{
desde C = 1 hasta 5{
leer(Mat [R,C]) }}

 Por columnas
desde C = 1 hasta 5{
desde R = 1 hasta 5{
leer(Mat [R,C])}}

Para hacer el llenado de una matriz se deben de usar dos variables para los índices y se utilizan 2 ciclos
uno para los renglones y otro para las columnas; a estos ciclos se les llama ciclos anidados (un ciclo dentro
de otro ciclo).
Las matrices son declaradas exactamente igual que los vectores, excepto que se especifica más de una
dimensión entre los corchetes:
var
M : matriz [5, 10] cadena
En este caso M es una matriz de 5 filas por 10 columnas, donde cada elemento es una cadena.
La siguiente matriz tridimensional se declara con:
M3 : matriz [3, 5, 2] numerico

29
ESTRUCTURA DE LA INFORMACIÓN

Programa 18:
Haga un programa que permita ingresar números aleatorios en una matriz de 2*2 y mostrar los números
generados.

var
num : matriz [2,2] numerico
r,c : numerico
inicio
cls()
desde r= 1 hasta 2{
desde c= 1 hasta 2{
num[r,c]=random(20)+1}}
desde r= 1 hasta 2{
desde c= 1 hasta 2{
imprimir("\n",r,"-",c,"=", num[r,c])}}
fin

DECLARACIÓN DE REGISTROS

Se llama “registro” (algunos usan el término “estructura”) a una variable que está compuesta a su vez de
otras variables. La ventaja de agrupar variables para formar una estructura más compleja es que de esa
forma se mantiene la unidad conceptual del dato. Por ejemplo, una fecha es un solo “dato”, a pesar de que
se compone de día, mes y año. En muchos casos es deseable tratarla como una sola entidad y en otros
deseamos operar sobre sus componentes.
A continuación un ejemplo de declaración de registro:
var
r : registro
{
nombre : cadena
edad, peso : numerico
direccion : cadena
}

30
ESTRUCTURA DE LA INFORMACIÓN

A las variables contenidas en un registro se las llama campos. En este caso, r es una variable que contiene
tres campos, los que pueden ser accedidos de la siguiente forma:

r.nombre = “Maria Gonzalez”


r.edad = 15
r.peso = 48
r.direccion = “Algun lugar”

es decir, los campos son accedidos poniendo el nombre de la variable-registro, seguido de un punto y a
continuación el nombre del campo. Los campos son utilizados como cualquier otra variable.

Los registros pueden contener variables de cualquier tipo, incluyendo vectores, otros registros, etc.
Dadas las siguientes definiciones:

var
p1, p2 : registro
{
nombre : cadena
edad, peso : numerico
direccion : cadena
fecha_nac : registro
{
dia, mes, año : numerico
}
notas : vector [100] numerico
}
Las variables p1 y p2 son registros, ambos conteniendo 6 campos, uno de los cuales (fecha_nac) es a su
vez un registro y el último es un vector numérico de 100 elementos. Por lo tanto, para asignar un valor al
campo dia de la variable p1 se usaría:
p1.fecha_nac.dia = 23
y para asignar un valor al segundo elemento del vector notas de la variable p2 se usaría:
p2.notas [2] = 98

31
ESTRUCTURA DE LA INFORMACIÓN

Programa 19:
Haga un programa que permita asignar 5 notas a 5 alumnos usando registros y arreglos
tipos
Alumno : registro {
codigo : cadena
notas : vector [*] numerico
}
var
lista : vector [5] Alumno
k=0
inicio
cls()
lista = { {"1283912 = ", {10, 11, 14, 12, 13}},
{"3281242 = ", {13, 12, 13, 11, 14}},
{"1278217 = ", {12, 14, 16, 11, 13}}, // Este alumno no tiene notas
{"2381923 = ", {15, 15, 15, 15, 14}},
{"1938281 = ", {14, 13, 12, 12, 11}}
}
imprimir ("\nDatos de la clase:\n")
desde k=1 hasta alen(lista) {
imprimir (lista [k], "\n")
}
fin
Otras consideraciones

- Los nombres de campos no pueden duplicarse dentro de un mismo registro.


- Para leer o imprimir un registro, debe realizarse la operación deseada sobre cada uno de sus
campos, toda vez que estos sean de tipos simples.
- Una definición de registro debe especificar al menos un campo.

Manejo de Módulos
Definición, Función y Manipulación

Un problema complejo se puede dividir en pequeños subproblemas más sencillos. Estos subproblemas se
conocen como “Módulos” y su complementación en un lenguaje se llama subprograma (procedimientos y
funciones).
Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma lo utiliza
solamente un programa para un propósito especifico.

32
ESTRUCTURA DE LA INFORMACIÓN

Un subprograma recibe datos de un programa y le devuelve resultados (el programa “llama” o “invoca” al
subprograma, este ejecuta una tarea especifica y devuelve el “control” al programa que lo llamo).

Funciones
Tipos de
Módulos Procedimientos
Función: Una función en matemáticas, es una operación que toma un o mas valores (argumentos) y
devuelve un resultado (valor de la función para los argumentos dados). Por ejemplo:
F(X) = X / (1+X2)
Donde:
F ………….. Nombre de la función
X …………. Es el argumento (también conocido como parámetro formal)

Definición de funciones: Una definición de función se presenta de la siguiente manera:


Sub nombre_funcion (p1, p2, …, pn : tipos) : tipo
inicio
Bloque de instrucciones
fin
Donde:
sub…………… Es la palabra clave que nos indica una definición de función.
Nombre_funcion ….. Es el identificador con el cual se reconoce a la función en el cuerpo del
algoritmo principal.
P1,p2,…,pn ……... Es el grupo de parámetros que define a la función.
Tipo ……………… Tipo de dato del parámetro o tipo de dato retornado
Llamado a una función
Cuando definimos una función solo le indicamos al algoritmo que esta función existe, pero una definición de
función no implica la realización de las instrucciones que la constituyen. Para hacer uso de una función, el
algoritmo principal la debe llamar. Por ejemplo:
inicio
imprimir(“\nEste es el algoritmo principal”)
Leer(N)
R = F(N) llamado de la función
Imprimir “El resultado de la función es:”,R
fin
sub F(X)
inicio
F = X /(1 + X^2)
fin

33
ESTRUCTURA DE LA INFORMACIÓN

SEGUNDA UNIDAD DIDÁCTICA

ESTRUCTURAS ALGORÍTMICAS USANDO JAVA

2.1 FUNDAMENTOS DEL LENGUAJE JAVA

Java tiene sus propias características para describir algoritmos, es decir sus propios fundamentos
del lenguaje. Este texto no pretende ser una descripción exhaustiva de todos los modos en que podemos
"expresarnos" en este lenguaje, sino una base para poder ir creando nuestros programas. Creo que es
mucho más útil empezar a programar puesto que se aprenden mejor estas cosas cuando tenemos que
resolver algún problema durante nuestro trabajo.
En buena parte del material usaremos palabras comunes del idioma castellano como identificadores java
pero, si dichas palabras en el idioma común tuvieran tilde, como identificadores no se les coloca pues las
tildes no son reconocidas en los lenguajes de programación (salvo como literales). Así que, querido alumno
no piense que su profesor no sabe escribir. Usaremos negritas en expresiones dentro del texto que sean
identificadores y/o importante resaltarla.

IDENTIFICADORES

Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias
del lenguaje, es decir, son los nombres que podemos ponerles a nuestros/as variables, métodos, clases,
interfaces y objetos.
La única restricción en la formación de identificadores es que tienen que comenzar por letra, subrayado o
por el signo $, pudiéndoles seguir después letras o números. Hay que tener en cuenta que Java como
muchos lenguajes de programación es CASE SENSITIVE (se distinguen las mayúsculas y las minúsculas).
Hay una serie de convenciones i para crear identificadores en Java: En Java es habitual escribir todos los
identificadores en minúscula teniendo en cuenta las siguientes excepciones:

1. Si en un identificador queremos incluir un nombre compuesto se pone el primer nombre entero en


minúscula y el resto con la primera letra en mayúscula y el resto en minúscula. Por ejemplo:
miVar = 3;

2. Los identificadores de clases e interfaces siempre empiezan en mayúscula siguiendo la anterior norma
en caso de tratarse de un nombre compuesto. Por ejemplo:
MiClase();

3. Los nombres de variables finales (las más habitualmente llamadas "constantes") se escriben
íntegramente en mayúscula. Por ejemplo: "PI"

Otra restricción muy importante y evidente a la hora de elegir identificador por ejemplo para una variable es
no emplear las palabras reservadas (ver más adelante).

COMENTARIOS
Hay tres tipos de comentarios en Java:
// Este es un comentario de una sola línea
/* Este es un comentario de una o más líneas */
/** Este es un comentario de documentación */

34
ESTRUCTURA DE LA INFORMACIÓN

Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo.
Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o
función), indican que ese comentario ha de ser colocado en la documentación que se genera
automáticamente cuando se utiliza la herramienta de Java, javadoc, no disponible en otros lenguajes de
programación. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar
una documentación de las clases que se va construyendo al mismo tiempo que se genera el código de la
aplicación.

SENTENCIAS
Una sentencia es una orden que se le da al programa para realizar una tarea específica, esta puede ser:
mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en memoria), inicializarla,
llamar a una función, etc. Las sentencias acaban con “;” (sin las comillas); este carácter separa una
sentencia de la siguiente. Normalmente, las sentencias se ponen unas debajo de otras, aunque sentencias
cortas pueden colocarse en una misma línea. He aquí algunos ejemplos de sentencias
int i=1;
import java.awt.*;
System.out.println("El primer programa");
rect.mover(10, 20);

En el lenguaje Java, los caracteres espacio en blanco se pueden emplear libremente. Es muy importante
para la legibilidad de un programa la colocación de unas líneas debajo de otras empleando tabuladores. El
editor del NetBeans nos ayudará plenamente en esta tarea sin apenas percibirlo.

BLOQUES DE CÓDIGO
Un bloque de código es un conjunto de sentencias que se comportan como una unidad. Un bloque de
código está limitado llaves:
{
Sentencia1;
Sentencia2;
SentenciaN;
}

Como ejemplos de bloques de código tenemos la definición de una clase, la definición de una función
miembro, una sentencia iterativa for, los bloques try ... catch, para el tratamiento de las excepciones, como
se verá luego en este documento.

EXPRESIONES
Una expresión es todo aquello que se puede poner a la derecha del operador asignación =. Por ejemplo:
x=123;
y=(x+100)/4;
area=circulo.calcularArea(2.5);
Rectangulo r=new Rectangulo(10, 10, 200, 300);

La primera expresión asigna el valor 123 a la variable x.


La segunda, realiza la operación en donde (x+100)/4 es asignado a y.
La tercera, es la llamada a la función miembro (o método, o procedimiento, etc.) calcularArea de un objeto
circulo de una clase determinada para asignar el valor devuelto a la variable area

35
ESTRUCTURA DE LA INFORMACIÓN

La cuarta, reserva espacio en memoria para el objeto r de la clase Rectángulo mediante la llamada a una
función o método especial llamado constructor al que se le pasa los valores entre paréntesis.

VARIABLES
Las variables se utilizan en la programación Java para almacenar datos durante la ejecución del programa.
Para usar una variable, hay que indicarle al compilador el tipo y nombre de esa variable, a esto se le
denomina “declaración de la variable”. El tipo de la variable determinará el conjunto de valores que se
podrán almacenar en la variable y el tipo de operaciones que se podrán realizar con ella así como su
longitud o tamaño.
Por ejemplo, el tipo int solamente puede contener números completos (enteros) entre -32768 y 32767. En
Java, todas las variables de tipo int contienen valores con signo.
Todas las variables han de declararse antes de usarse; la declaración consiste en una sentencia en la que
figura el tipo de dato y el nombre que asignamos a la variable, por ejemplo:
Double nro1;

Donde Double es el tipo de dato y nro1 es el identificador.


Una vez declarada se le podrá asignar valores.
Java tiene tres tipos de variables:

 de instancia
 de clase
 locales

Las variables de instancia (o variables miembros), guardan atributos de un objeto particular.


Las variables de clase (o miembros estáticos) son similares a las variables de instancia, con la excepción
de que los valores que guardan son los mismos para todos los objetos de una determinada clase. En el
siguiente ejemplo, PI es una variable de clase y radio es una variable de instancia. PI guarda el mismo
valor para todos los objetos de la clase Círculo, pero el radio de cada círculo puede ser diferente
class Circulo{
static final double PI=3.1416;
double radio;
//...
}

Las variables locales se utilizan dentro de las funciones miembro (o métodos). En el siguiente ejemplo area
es una variable local a la función calcularArea en la que se guarda el valor del área de un objeto de la
clase Círculo. Una variable local existe desde el momento de su definición hasta el final del bloque en el
que se encuentra.
class Circulo{
//...
double calcularArea(){
double area=PI*radio*radio;
return area;
}
}

En el lenguaje Java, las variables locales se declaran en el momento en el que son necesarias. Es una
buena práctica inicializar las variables en el momento en que se declaradan. Veamos algunos ejemplos de
declaración de algunas variables
36
ESTRUCTURA DE LA INFORMACIÓN

int x=0;
String nombre="Angel";
double a=3.5, b=0.0, c=-2.4;
boolean bNuevo=true;
int[] datos;
Las variables pueden ser

 Un tipo de dato primitivo


 El nombre de una clase
 Un array

El lenguaje Java utiliza el conjunto de caracteres denominado Unicode, que incluye no solamente el
conjunto de caracteres ASCII sino también caracteres específicos de la mayoría de los alfabetos.

Se ha de poner nombres significativos a las variables, generalmente formados por varias palabras
combinadas, la primera empieza por minúscula, pero las que le siguen llevan la letra inicial en mayúsculas.
double radioCirculo=3.2;

Las variables son uno de los elementos básicos de un programa, y se deben

 Declarar
 Inicializar
 Usar

LOS TIPOS BÁSICOS DE DATOS

Tipo Descripcion
boolean Tiene dos valores true o false.
Caracteres Unicode de 16 bits Los caracteres alfa-numéricos son los mismos que los
char ASCII con el bit alto puesto a 0. El intervalo de valores va desde 0 hasta 65535 (valores de
16-bits sin signo).
byte Tamaño 8 bits. El intervalo de valores va desde -27 hasta 27 -1 (-128 a 127)
short Tamaño 16 bits. El intervalo de valores va desde -215 hasta 215-1 (-32768 a 32767)
Tamaño 32 bits. El intervalo de valores va desde -231 hasta 231-1 (-2147483648 a
int
2147483647)
Tamaño 64 bits. El intervalo de valores va desde -263 hasta 263-1 (-9223372036854775808
long
a 9223372036854775807)
Tamaño 32 bits. Números en coma flotante de simple precisión. Estándar IEEE 754-
float
1985 (de 1.40239846e–45f a 3.40282347e+38f)
Tamaño 64 bits. Números en coma flotante de doble precisión. Estándar IEEE 754-1985.
double
(de 4.94065645841246544e–324d a 1.7976931348623157e+308d.)

37
ESTRUCTURA DE LA INFORMACIÓN

Caracteres
Como ya mencionamos el juego de caracteres de java es Unicode. Un carácter está siempre rodeado de
comillas simples como 'A', '9', 'ñ', etc. El tipo de dato char sirve para guardar estos caracteres.

Un tipo especial de carácter es la secuencia de escape, que se utilizan para representar caracteres de
control o caracteres no imprimibles. Una secuencia de escape está formada por la barra invertida (\) y un
carácter, .como se muestra en la siguiente tabla.

Carácter Secuencia de escape


retorno de carro \r
tabulador
\t
horizontal
nueva línea \n
barra invertida \\

Variables booleanas
Una variable booleana solamente puede contener uno de los dos posibles valores: true (verdadero) y false
(falso).
boolean encontrado=false;
{...}
encontrado=true;

Variables enteras
Una variable entera ó int consiste en cualquier combinación de cifras precedidos por el signo más
(opcional), para los positivos, o el signo menos, para los negativos. Son ejemplos de números enteros:
12, -36, 0, 4687, -3598

Como ejemplos de declaración de variables enteras tenemos:


int numero=1205;
int x,y;
long m=30L;

int es la palabra reservada para la declaración de variables enteras. En el primer caso, el compilador
reserva una porción de 16 bits de memoria en el que guarda el número 1205. Se accede a dicha porción de
memoria mediante el nombre de la variable, numero. En el segundo caso, las porciones de memoria cuyos
nombres son x e y, guardan cualquier valor entero si la variable es local o cero si la variable es de instancia
o de clase. Declarar e inicializar una variable es una considerado una buena práctica que no es obligatoria..
En la tercera línea 30 es un número de tipo int por defecto, le ponemos el sufijo L en mayúsculas o
minúsculas para indicar que es de tipo long.
Existen como vemos en la tabla varios tipos de números enteros (byte, short, int, long), y también existe
una clase denominada BigInteger cuyos objetos pueden guardar un número entero arbitrariamente grande.

38
ESTRUCTURA DE LA INFORMACIÓN

Variables en coma flotante


Las variables de tipo float o double (coma flotante) se usan para guardar números en memoria que tienen
parte entera y parte decimal.
double PI=3.14159;
double g=9.7805, c=2.9979e8;

El primero es una aproximación del número real de PI, el segundo es la aceleración de la gravedad a nivel
del mar, el tercero es la velocidad de la luz en m/s, que es la forma de escribir 2.9979 108. El carácter
punto '.', separa la parte entera de la parte decimal.
Otras ejemplos son los siguientes
float a=12.5f;
float b=7f;
double c=7.0;
double d=7d;

En la primera línea 12.5 lleva el sufijo f, ya que por defecto 12.5 es double. En la segunda línea 7 es un
entero y por tanto 7f es un número de tipo float. Y así el resto de los ejemplos.
Hay una infinidad de valores entre dos números reales. Ya que los valores de las variables se guardan en
un número prefijado de bits, algunos valores no se pueden representar de forma precisa en memoria. Por
tanto, los valores de las variables en coma flotante en un ordenador habitualmente se aproximan a los
verdaderos números reales en matemáticas. La aproximación es tanto mejor, cuanto mayor sea el tamaño
de la memoria que reservamos para guardarlo. De este hecho, surgen las variables del tipo float y double.
Para números de precisión arbitraria se emplea la clase BigDecimal.

Valores constantes
Cuando se declara una variable de tipo final, se ha de inicializar y dará lugar a un error en tiempo de
compilación cualquier intento de modificación del valor declarado.
Normalmente, las constantes de un programa se suelen poner en letras mayúsculas, para distinguirlas de
las que no son constantes. He aquí ejemplos de declaración de constantes.
final double PI=3.141592653589793;
final int MAX_DATOS=150;

LAS CADENAS DE CARACTERES O STRINGS


Además de los tipos de datos primitivos, las variables en Java pueden ser declaradas para guardar una
instancia de una clase.

Las cadenas de caracteres o strings en Java son objetos de la clase String.


String mensaje="El primer programa";
Observemos la siguiente clase empleando strings
public class PrimeroApp{
public static void main(String[] args) {
//imprime un mensaje
String mensaje="El primer programa";
System.out.println(mensaje);
}
}

39
ESTRUCTURA DE LA INFORMACIÓN

En una cadena se pueden insertar caracteres especiales como el carácter tabulador '\t' o el de nueva línea
'\n'
String texto="Un string con \t un carácter tabulador y \n un salto de línea";

PALABRAS RESERVADAS
En el siguiente cuadro se listan las palabras reservadas, aquellas que emplea el lenguaje Java, y que el
programador no puede utilizar como identificadores. Algunas de estas palabras le resultarán familiares al
programador del lenguaje C/C++. Las palabras reservadas señaladas con un arterisco (*) no se utilizan.
abstract boolean break byte byvalue*
case cast* catch char class
const* continue default do double
else extends false final finally
flota for future* generic* goto*
if implements import inner* instanceof
int interface long native new
null operator* outer* package private
protected public rest* return short
satatic super switch synchronized this
throw transient true try var*
void volatile while

Las palabras reservadas se pueden clasificar en las siguientes categorías:

 Tipos de datos: boolean, float, double, int, char


 Sentencias condicionales: if, else, switch
 Sentencias iterativas: for, do, while, continue
 Tratamiento de las excepciones: try, catch, finally, throw
 Estructura de datos: class, interface, implements, extends
 Modificadores y control de acceso: public, private, protected, transient
 Otras: super, null, this.

EJEMPLO 1: Declaración de variables con diferentes tipos de datos:


public class DataTypes {
public static void main(String[] args) {
boolean isReal=true; // Los nombres son sensibles a // mayúsculas y minúsculas, // deben empezar
por una letra y // pueden contener números,_,$
byte d= 122; // Deben ser inferiores a 127
short e= -29000; // Deben ser inferiores a 32767
int f= 100000; // Deben ser inferiores a 2100 mill.
long g= 999999999999L; // Deben poner L al final
float h= 234.99F; // Deben ser < 3E38; F al final
double i= 55E100; char cvalue= '4'; // char '4' no es el entero 4
//Las cadenas (strings) son objetos, no primitivos. //Ejemplo: String nombre= “Claudius”;
} //fin del método main
}//fin de la clase DataType.

40
ESTRUCTURA DE LA INFORMACIÓN

EJERCICIO 1.-
¿Qué tipo de dato utilizaría para almacenar?

- La velocidad de la luz.
- Su calificación en el curso 1.00.
- Su nota media de este trimestre.
- El número de frigoríficos de una habitación.
- Localización de un punto en la pantalla.
65
-2
- 234,77 dólares.
- La mitad de 234,77 dólares.
- Bits por segundo transmitidos por un módem.

41
ESTRUCTURA DE LA INFORMACIÓN

TERCERA UNIDAD DIDÁCTICA

FUNDAMENTOS DE LA PROGRAMACIÓN
ORIENTADA A OBJETOS

3.1 CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS (POO)

3.1.1 ANTECEDENTES DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

La Programación Orientada a objetos (POO) es una forma especial de programar, más cercana a
como expresaríamos las cosas en la vida real, que otros tipos de programación.

Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían
una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser
reutilizados por otras personas se creó la POO, la cual usa una serie de normas y estándares para cumplir
este objetivo.

La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de
manera que la forma de hacer las cosas pueden ser diferentes entre un o otro programador, aunque
podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar
orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos
aprovechar de todas las ventajas de la POO.

Programación Estructurada Vs Programación Orientada a Objetos (POO):


El desarrollo de la POO empieza a destacar durante la década de los 80 tomando en cuenta la
programación estructurada, a la que engloba y dotando al programador de nuevos elementos para el
análisis y desarrollo de software.
La POO permite a los programadores desarrollar software, de forma que esté organizado en la misma
manera como el problema que se trata de modelizar (analizar).

La programación estructurada es una programación de diseño ARRIBA – ABAJO (Top-Down), donde las
instrucciones del programa se van ejecutando una detrás de otra secuencialmente desde un Inicio hasta un
Fin. En esta forma de diseño se descomponen los requerimientos del programa paso a paso
(secuencialmente), hasta llegar a un nivel que permite expresarlos mediante procedimientos y funciones.
(Ejemplo: Un Diagrama de Flujo, Pseudocódigo).

En cambio, la POO estructura los datos en objetos que pueden almacenar, manipular y combinar
información de modo analítico, lógico y funcional

En resumen, la programación estructurada presta atención al conjunto de acciones que manipulan el flujo
de datos (desde la situación inicial a la final), mientras que la programación orientada a objetos presta
atención a la interrelación que existe entre los datos y las acciones a realizar con ellos.

En la actualidad, la POO es el estándar de programación utilizado por la gran mayoría de programadores y


las distintas herramientas de análisis y diseño de sistemas utilizado por los profesionales en informática usa

42
ESTRUCTURA DE LA INFORMACIÓN

la Tecnología de Orientación a Objetos. Por otro lado, los lenguajes de programación de la actualidad son
Orientados a Objetos (hablamos de Java y Microsoft Visual Studio .Net)

Ventajas de la Programación Orientada a Objetos:

a. Uniformidad. Ya que la representación de los objetos que lleva, implica tanto el análisis como el diseño
y la codificación de los mismos. Esto quiere decir que nos permite una mejor integración entre las
diferentes etapas del desarrollo de un proyecto informático.

b. Comprensión. Tanto los datos que componen los objetos, como los procedimientos que los manipulan,
están agrupados en clases, que se corresponden con las estructuras de información que el programa
trata.

c. Flexibilidad. Al tener relacionados los procedimientos que manipulan los datos con los datos a tratar,
cualquier cambio que se realice sobre ellos quedará reflejado automáticamente en cualquier lugar
donde estos datos aparezcan.

d. Estabilidad. Dado que permite un tratamiento diferenciado de aquellos objetos que permanecen
constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar las partes del
programa que permanecen inalterables en el tiempo.

e. Reusabilidad. La noción de objeto permite que programas que traten las mismas estructuras de
información reutilicen las definiciones de objetos empleadas en otros programas e incluso los
procedimientos que los manipulan. De esta forma, el desarrollo de un programa puede llegar a ser una
simple combinación de objetos ya definidos donde estos están relacionados de una manera particular.

Uno de los puntos clave a remarcar es que la programación orientada a objetos no sustituye a ninguna
metodología ni lenguaje de programación anterior. Todos los programas que se realizan según POO se
pueden realizar igualmente mediante programación estructurada.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros
programas en términos de objetos, propiedades, métodos

3.1.2 CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

A. CLASE

La clase es una plantilla o patrón a partir de la cual se crean muchos otros objetos similares, también se
podría definir a una clase como la agrupación de objetos que poseen características comunes.

Ejemplos:
 Si Ud. tuviera que dibujar 30 mapas del Perú ¿Cómo los podría hacer de un modo muy rápido?
Tendría que conseguir un molde o plantilla y a partir de éste podría crear los 30 mapas de un modo
fácil y rápido. En este ejemplo el Molde o Patrón sería la Clase y cada uno de los mapas
reproducidos vendrían ser los Objetos instanciados.

 ¿Qué clases puedes distinguir dentro de tu aula? En el aula existe la clase Alumnos, cada alumno
vendría ser un objeto que se origina de esta clase. Otras clases podrían ser: Carpetas, Útiles, etc.

43
ESTRUCTURA DE LA INFORMACIÓN

Como podemos darnos cuenta, los conceptos de la POO están en la vida diaria, y son estos conceptos los
que se aplican al momento de programar aplicaciones informáticas.

B. PROPIEDADES DE LA CLASE

Las propiedades o atributos son las características descriptivas de una clase. Cuando definimos una
propiedad especificamos su nombre y su tipo de dato.

Ejemplos:
Propiedades de la clase Alumnos
Apellidos (Tipo de dato String)
Nombres (Tipo de dato String)
Edad (Tipo de dato int)
Talla (Tipo de dato double)

C. MÉTODOS EN LAS CLASES

Son las funcionalidades, acciones o habilidades de la clase. Los métodos son funciones que están
asociadas a un objeto. Los métodos responden a la pregunta: ¿Qué es lo que es capaz de hacer la clase?

Los nombres de los métodos generalmente están asociados a una acción o verbos. Al final del nombre de
los métodos siempre se utilizarán paréntesis dentro de los cuales muchas veces es necesario enviar
algunos datos, para que puedan realizarse los procesos.

Ejemplos:
La clase Alumnos contiene los siguientes métodos:
estudiar()
hablar()
decirsuedad()

La clase plumones contiene los siguientes métodos:


pintar()
escribir()

La clase calculadora contiene los siguientes métodos:


Sumar(4,5)
Restar(3,2)
Multiplicar(4,3)
Multiplicar(4,2)

Nota:
 Algunos métodos reciben entre los paréntesis: datos, los cuales sirven al método para realizar su
tarea. Estos datos son conocidos como argumentos del método.

 Algunos métodos retornan un dato como resultado de la acción, por ejemplo el método sumar(4,5)
de la clase Calculadora, luego de realizar su acción devolverá un dato de respuesta el cual es el
resultado de la suma: 9.

44
ESTRUCTURA DE LA INFORMACIÓN

D. OBJETO INSTANCIADO

Los objetos instanciados son ejemplares resultantes de una clase cualquiera. Cuando creamos un
ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a
partir de una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en
inglés significa ejemplar). Por ejemplo, un objeto instanciado de la clase fracción es por ejemplo 3/5. El
concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en
concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto instanciado.

Todo objeto instanciado hereda automáticamente las propiedades y métodos de su clase base

E. ESTADOS EN OBJETOS

Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos una
Fracción, la propiedad numerador tomará un valor en concreto, como por ejemplo 1 y la propiedad
denominador puede tomar el valor de 3. El valor concreto de una propiedad de un objeto se llama
estado.

Para acceder a un estado de un objeto, para ver su valor o cambiarlo se utiliza el operador punto. Ejemplo:

f1.numerador = 2
f1.denominador=5

El objeto es f1, luego colocamos el operador punto y por último el nombre de la propiedad a la que
deseamos acceder. En el ejemplo anterior, estamos cambiando el valor del estado de la propiedad
numerador del objeto f1 a 2 con una simple asignación, y el valor de la propiedad denominador a 5.

45
ESTRUCTURA DE LA INFORMACIÓN

3.1.3 EJEMPLOS PRÁCTICOS

A continuación, mostraremos algunos ejemplos de clases con sus respectivas propiedades y


métodos.

Clase Reloj
Propiedades: Marca, Modelo, Precio, Tipo
Métodos: mostrarlaHora(), mostrarlaFecha(), fijarAlarma(), iniciarCronometro()

Clase Triangulo
Propiedades: Color, TipodeBorde, TipodeTriangulo
Métodos: calcularArea(), calcularSemiPerímetro()

Clase BoletadePago
Propiedades: NroBoleta, FechadeEmision, Apellidos, Nombres
Métodos: calcularPromedioporAsignatura(), calcularPromedioPonderado()

3.2 CLASE: CREAR CLASES CON SUS MÉTODOS Y PROPIEDADES

1. CREACIÓN DE UNA CLASE


Cada IDE tiene sus propios pasos para crear una clase y esto lo aprendimos durante el pasado
semestre. Como ejemplo, crearemos la clase Calculadora

public class Calculadora {

public static void main(String args[])


{

}
} //Fin de la clase

2. ATRIBUTOS O PROPIEDADES DE LA CLASE


Se deberán crear a nivel de la clase (debajo de public class) y cada una corresponderá a un tipo de
dato.

Ejemplo: La clase con sus propiedades

public class Calculadora {


// DEFINICION DE PROPIEDADES
public String marca;
public double precio;
public String modelo;

public static void main(String args[])


{

}
} //Fin de la clase

46
ESTRUCTURA DE LA INFORMACIÓN

3. MÉTODOS DE LA CLASE
Se deberán crear dentro de la clase, cada método devuelve un tipo de dato como resultado final (el
cual puede ser int, double, String, boolean, etc), de no ser así el tipo de dato devuelto es void. Los
métodos usan paréntesis para recibir algunos datos (argumentos) desde el exterior.

Ejemplo;

Dato que devuelve Argumentos de Entrada

public double sumar (double a, double b)


{ double r;
r=a+b;
return r;
}

Nombre del método

Ejemplo: La clase con sus Propiedades y métodos:

public class Calculadora {

// DEFINICIÓN DE PROPIEDADES
public String marca;
public double precio;
public String modelo;

public double sumar(double a, double b)


{ double r;
r=a+b;
return r; //Retorna el resultado
}

public double restar(double a, double b)


{ double r;
r=a-b;
return r;
}

public double multiplicar(double a, double b)


{ double r;
r=a*b;
return r;
}

47
ESTRUCTURA DE LA INFORMACIÓN

public double dividir(double a, double b)


{double r;
if(b!=0)
{ r=a/b; }
else
{System.out.println("Resultado no determinado en N");
}
return r;
}

public double dimetuprecio()


{ return precio; }

public static void main(String args[])


{

}
} //Fin de la clase

4. MÉTODOS CONSTRUCTORES
Un método constructor es un método especial dentro de la clase, que lleva el nombre de la misma
clase. Pueden existir uno o varios métodos constructores. Su función es de permitir el instanciamiento
de objetos y al mismo tiempo introducir estados (datos) a todas o a algunas las propiedades del objeto
instanciado.

Ejemplo: La clase con 3 Métodos Constructores

Nota: Si una clase posee varios métodos constructores, significa que tiene varias formas de instanciar
un objeto.

public class Calculadora {

// DEFINICIÓN DE PROPIEDADES
public String marca;
public double precio;
public String modelo;

public double sumar(double a, double b)


{ double r;
r=a+b;
return r; //Retorna el resultado
}

public double restar(double a, double b)


{ double r;
r=a-b;
return r;
}

48
ESTRUCTURA DE LA INFORMACIÓN

public double multiplicar(double a, double b)


{ double r;
r=a*b;
return r;
}

public double dividir(double a, double b)


{double r;
if(b!=0)
{ r=a/b; }
else
{System.out.println("Resultado no determinado en N");
}
return r;
}

public double dimetuprecio()


{ return precio; }

// EL MÉTODO CONSTRUCTOR 1
// Permite el ingreso de los estados solo a 2 de
// las propiedades del objeto instanciado
public Calculadora(String ma,double p) {
marca=ma;
precio=p;
}

// EL MÉTODO CONSTRUCTOR 2 - Permite el ingreso de los


// estados solo a 3 de las propiedades del objeto
// instanciado
public Calculadora(String ma,double p, String mo) {
marca=ma;
precio=p;
modelo=mo;
}

// EL MÉTODO CONSTRUCTOR 3 - Permite solo el


// instanciamiento
public Calculadora() {
}

public static void main(String args[])


{
}
} //Fin de la clase

49
ESTRUCTURA DE LA INFORMACIÓN

5. EL MÉTODO ESTÁTICO MAIN


Este método el “Método principal” de la clase, es aquel que es invocado primero cuando ejecutamos la
clase, si una clase no cuenta con el método main, es imposible ejecutar la clase.

6. INSTANCIAMIENTO DE LA CLASE
Instanciar significar crear un objeto a partir de una clase base, recordemos también que al instanciar un
objeto, este hereda automáticamente propiedades y métodos de su clase.
public class Calculadora {

// DEFINICION DE PROPIEDADES
public String marca;
public double precio;
public String modelo;

public double sumar(double a, double b)


{ double r;
r=a+b;
return r; //Retorna el resultado
}
public double restar(double a, double b)
{ double r;
r=a-b;
return r;
}

public double multiplicar(double a, double b)


{ double r;
r=a*b;
return r;
}
public double dividir(double a, double b)
{double r=0;
if(b!=0)
{ r=a/b; }
else
{System.out.println("Resultado no determinado en N");
}
return r;
}
public double dimetuprecio()
{ return precio; }

// EL MÉTODO CONSTRUCTOR 1
// Permite el ingreso de los estados solo a 2 de
// las propiedades del objeto instanciado
public Calculadora(String ma,double p) {

50
ESTRUCTURA DE LA INFORMACIÓN

marca=ma;
precio=p;
}

// EL MÉTODO CONSTRUCTOR 2 - Permite el ingreso de los


// estados solo a 3 de las propiedades del objeto
// instanciado
public Calculadora(String ma,double p, String mo) {
marca=ma;
precio=p;
modelo=mo;
}

// EL MÉTODO CONSTRUCTOR 3 - Permite solo el


// instanciamiento
public Calculadora() {
}

public static void main(String args[])


{
//Creacióndelosobjetosinstanciados
Calculadorac1=newCalculadora("CASIO",25.45);//Usael constructor1
Calculadorac2=newCalculadora("CITIZEN",32.99,"RS23");//Usa elconstructor2
Calculadorac3=newCalculadora();//Usa elconstructor 3

//Usando lapropiedades ymétodosdel 1er.obj.instanciado


System.out.println("La marcadelacalculadora 1es :"+ c1.marca);
System.out.println("La calculadora1 suma 12+34 :"+ c1.sumar(12,34));
System.out.println("La calculadora1 resta 12-34 :"+ c1.restar(12,34));
System.out.println("La calculadora1 multiplica 12*34 :"+ c1.multiplicar(12,34));
System.out.println("La calculadora1divide 12/34: "+ c1.dividir(12,34));

//Usando lapropiedades ymétodosdel 2do.obj.instanciado


System.out.println("Accedemos alpreciode la calculadora 2: "+c2.precio);
System.out.println("La calculadora2 suma 2+-5 :"+ c2.sumar(2,-5));
System.out.println("La calculadora2nos dice suprecio :"+ c2.dimetuprecio());

//Usando lapropiedades ymétodosdel 3er.obj.instanciado


c3.marca="Panasonic";
c3.precio=29.99;
c3.modelo="RX123";
System.out.println("Accedemos alpreciode la calculadora 3: "+c3.precio);
System.out.println("La calculadora3 suma 10+32 :"+ c3.sumar(10,32));
System.out.println("La calculadora3nos dice suprecio :"+ c3.dimetuprecio());
}
} //Findelaclase

51
ESTRUCTURA DE LA INFORMACIÓN

7. CREACIÓN DE REFERENCIAS A UN OBJETO

Una referencia es un nombre adicional que apunta a un mismo objeto instanciado. Ejemplo:
Calculadorac1=newCalculadora("CASIO",25.45);//Usael constructor1
System.out.println("Preciodelacalculadora :"+ c1.precio);

CalculadoraMiCalculadora; //Declaración deunnuevo objetocalculadora


MiCalculadora=c1; //Creacióndeunanuevareferencia
MiCalcualdora.precio=20.00;

System.out.println("Preciodelacalculadora :"+ c1.precio);

Nota: Debemos tener presente que al crear una referencia, no estamos creando una nueva instancia,
solo estamos dando al objeto ya instanciado otro nombre, así que cualquier cambio sobre la referencia,
modificará al objeto original.

8. INVOCACIÓN DE UNA CLASE DESDE OTROS PAQUETES

¿Qué es una Paquete? Es una carpeta de java, dentro del cual podemos almacenar muchas clases,
los paquetes en Java sirven para organizar nuestras clases, cada IDE tiene una forma distinta de crear
paquetes.

Proyecto
Aquí tenemos dos paquetes,
Paquete 1 dentro de cada paquete
tenemos una clase.
Paquete 2

Cuando una clase es creada dentro de un paquete, debe llevar en la primera línea, la siguiente línea:

package Ejemplo1; //Nombre del paquete


public class Calculadora {
.
Aquí va el contenido de la
. clase Calculadora
.
}

package Ejemplo2; //Nombre del paquete donde se encuentra la clase

import Ejemplo1.Calculadora; //Clase que se desea utilizar en esta clase

public class Anexo {

public static void main(String args[])


{

52
ESTRUCTURA DE LA INFORMACIÓN

//Creación de los objetos instanciados


Calculadora c5=new Calculadora("SANSUNG",25.45); //Usa el constructor 1
System.out.println("Multiplicando en la Calculadora 5: "+ c5.multiplicar(4,9));
}
}

9. CREACIÓN DE VARIABLES Y MÉTODOS ESTÁTICOS

Variables Estáticas: Son aquellas variables que se declaran a nivel de la clase, se diferencian de las
propiedades, porque para acceder a ellas no se requiere de una instancia, se puede acceder a estas
variables directamente a través del nombre de la clase. Las variables estáticas conservan un mismo
valor para toda la clase y no cuentan con estados (datos) diferentes en cada objeto instanciado.

Ejemplo del uso de variables estáticas en la Clase Calculadora:


En este ejemplo se están creando dos variables estáticas:
total : Variable utilizada para acumular el precio de cada uno de los objetos instanciados
cuenta : Variable utilizada para contar la cantidad de objetos instanciados

Se usan las variables estáticas en cada una de los métodos constructores, para que de esta forma se
acumule o cuente, cada vez que se produce una instancia.

package Ejemplo1; //Nombre del paquete

public class Calculadora {

// DEFINICION DE PROPIEDADES
public String marca;
public double precio;
public String modelo;

//DECLARACIÓN DE VARIABLES ESTÁTICAS: Ámbito en toda la clase


// comparten el mismo valor para todos los obj. instanciados
public static double total;
public static double cuenta;

public double sumar(double a, double b)


{ double r;
r=a+b;
return r; //Retorna el resultado
}

public double restar(double a, double b)


{ double r;
r=a-b;
return r;
}

public double multiplicar(double a, double b)


{ double r;

53
ESTRUCTURA DE LA INFORMACIÓN

r=a*b;
return r;
}

public double dividir(double a, double b)


{double r=0;
if(b!=0)
{ r=a/b; }
else
{System.out.println("Resultado no determinado en N");
}
return r;
}

public double dimetuprecio()


{ return precio; }

// EL MÉTODO CONSTRUCTOR 1
// Permite el ingreso de los estados solo a 2 de
// las propiedades del objeto instanciado
public Calculadora(String ma,double p) {
marca=ma;
precio=p;
total+=precio; // Es un acumulador, es igual que decir total=precio+total
cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1
}

// EL MÉTODO CONSTRUCTOR 2 - Permite el ingreso de los


// estados solo a 3 de las propiedades del objeto
// instanciado
public Calculadora(String ma,double p, String mo) {
marca=ma;
precio=p;
modelo=mo;
total+=precio; // Es un acumulador, es igual que decir total=precio+total
cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1
}

// EL METODO CONSTRUCTOR 3 - Permite solo el


// instanciamiento
public Calculadora() {
total+=precio; // Es un acumulador, es igual que decir total=precio+total
cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1
}

public static void main(String args[])


{
//Creación de los objetos instanciados
Calculadora c1=new Calculadora("CASIO",25.45); //Usa el constructor 1
Calculadora c2=new Calculadora("CITIZEN",32.99,"RS23"); //Usa el constructor 2

54
ESTRUCTURA DE LA INFORMACIÓN

Calculadora c3=new Calculadora(); //Usa el constructor 3

//Usando la propiedades y métodos del 1er. obj. instanciado


System.out.println("La marca de la calculadora 1 es : "+ c1.marca);
System.out.println("La calculadora 1 suma 12+34 : "+ c1.sumar(12,34));
System.out.println("La calculadora 1 resta 12-34 : "+ c1.restar(12,34));

System.out.println("La calculadora 1 multiplica 12*34 : "+ c1.multiplicar(12,34));


System.out.println("La calculadora 1 divide 12/34 : "+ c1.dividir(12,34));

//Usando la propiedades y métodos del 2do. obj. instanciado


System.out.println("Accedemos al precio de la calculadora 2 : "+ c2.precio);
System.out.println("La calculadora 2 suma 2+-5 : "+ c2.sumar(2,-5));
System.out.println("La calculadora 2 nos dice su precio : "+ c2.dimetuprecio());

//Usando la propiedades y métodos del 3er. obj. instanciado


c3.marca="Panasonic";
c3.precio=29.99;
c3.modelo="RX123";
System.out.println("Accedemos al precio de la calculadora 3 : "+ c3.precio);
System.out.println("La calculadora 3 suma 10+32 : "+ c3.sumar(10,32));
System.out.println("La calculadora 3 nos dice su precio : "+ c3.dimetuprecio());
}
} //Fin de la clase

Métodos Estáticos: Son aquellos métodos que pertenecen directamente a la clase y que para
acceder a ellos no se requiere de una instancia, se puede acceder a estos métodos directamente a
través del nombre de la clase.
Ejemplo del uso de métodos estáticos en la Clase Calculadora:
En este ejemplo se están creando dos métodos estáticos:
totalizar: Método utilizado para devolver la cantidad acumulada de todos los precios
promediar: Método utilizado para promediar todos los precios de los objetos instanciados

package Ejemplo1; //Nombre del paquete

public class Calculadora {

// DEFINICIÓN DE PROPIEDADES
public String marca;
public double precio;
public String modelo;

//DECLARACIÓN DE VARIABLES ESTÁTICAS : Ámbito en toda la clase


// comparten el mismo valor para todos los obj. instanciados
public static double total;
public static double cuenta;

public double sumar(double a, double b)


{ double r;
r=a+b;

55
ESTRUCTURA DE LA INFORMACIÓN

return r; //Retorna el resultado


}

public double restar(double a, double b)


{ double r;
r=a-b;
return r;
}

public double multiplicar(double a, double b)


{ double r;
r=a*b;
return r;
}

public double dividir(double a, double b)


{double r=0;
if(b!=0)
{ r=a/b; }
else
{System.out.println("Resultado no determinado en N");
}
return r;
}

public double dimetuprecio()


{ return precio; }

// EL MÉTODO CONSTRUCTOR 1
// Permite el ingreso de los estados solo a 2 de
// las propiedades del objeto instanciado
public Calculadora(String ma,double p) {
marca=ma;
precio=p;
total+=precio; // Es un acumulador, es igual que decir total=precio+total
cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1
}

// EL MÉTODO CONSTRUCTOR 2 - Permite el ingreso de los


// estados solo a 3 de las propiedades del objeto
// instanciado
public Calculadora(String ma,double p, String mo) {
marca=ma;
precio=p;
modelo=mo;
total+=precio; // Es un acumulador, es igual que decir total=precio+total
cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1
}

// EL MÉTODO CONSTRUCTOR 3 - Permite solo el

56
ESTRUCTURA DE LA INFORMACIÓN

// instanciamiento
public Calculadora() {
total+=precio; // Es un acumulador, es igual que decir total=precio+total
cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1
}

public static void main(String args[])


{
//Creación de los objetos instanciados
Calculadora c1=new Calculadora("CASIO",25.45); //Usa el constructor 1
Calculadora c2=new Calculadora("CITIZEN",32.99,"RS23"); //Usa el constructor 2
Calculadora c3=new Calculadora(); //Usa el constructor 3

//Usando la propiedades y métodos del 1er. obj. instanciado


System.out.println("La marca de la calculadora 1 es : "+ c1.marca);
System.out.println("La calculadora 1 suma 12+34 : "+ c1.sumar(12,34));
System.out.println("La calculadora 1 resta 12-34 : "+ c1.restar(12,34));
System.out.println("La calculadora 1 multiplica 12*34 : "+ c1.multiplicar(12,34));
System.out.println("La calculadora 1 divide 12/34 : "+ c1.dividir(12,34));

//Usando la propiedades y métodos del 2do. obj. instanciado


System.out.println("Accedemos al precio de la calculadora 2 : "+ c2.precio);
System.out.println("La calculadora 2 suma 2+-5 : "+ c2.sumar(2,-5));
System.out.println("La calculadora 2 nos dice su precio : "+ c2.dimetuprecio());

//Usando la propiedades y métodos del 3er. obj. instanciado


c3.marca="Panasonic";
c3.precio=29.99;
c3.modelo="RX123";
System.out.println("Accedemos al precio de la calculadora 3 : "+ c3.precio);
System.out.println("La calculadora 3 suma 10+32 : "+ c3.sumar(10,32));
System.out.println("La calculadora 3 nos dice su precio : "+ c3.dimetuprecio());

//INVOCACION D E LOS MÉTODOS ESTÁTICOS


System.out.println("El total del costo delas dos calculadoras es : " + Calculadora.totalizar());
System.out.println("El promedio del costo de las dos calculadoras es: " + Calculadora.promediar());
}
} //Fin de la clase

USO DE CONSTANTES:
Las constantes son también variables estáticas que al ser declaradas reciben un valor, y luego de esto,
no permiten que dicho valor sea modificado por ninguna razón.

Ejemplo:
public static final double IGV=0.19;
public static final String RazonSocial=”TecniSystem SRL”;

57
ESTRUCTURA DE LA INFORMACIÓN

CUARTA UNIDAD DIDÁCTICA

ARREGLOS MULTIMENSIONALES CONCEPTOS AVANZADOS


DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

4.1 ARREGLOS BIDIMENSIONALES EN JAVA

1. DEFINICIÓN
Los arreglos de dos dimensiones son estructuras de datos compuestas de filas y columnas. Esta
estructura guarda un conjunto de datos del mismo tipo, su uso es similar al de los arreglos
unidimensionales, a excepción de las siguientes características:

2. DECLARACIÓN DE UN ARREGLO BIDIMENSIONAL

|a. Declaración de un Arreglo Bidimensional:


Ejemplo 1: Declaración de un arreglo:
int notas[ ][ ];
String apellidos[ ] [ ];
Persona lista[ ] [ ];

Ejemplo 2: Otra forma de declaración:


int[ ] [ ] notas;
String[ ] [ ] apellidos;
Persona[ ] [ ] lista;

b. Inicialización de un Arreglo:
notas=new int[4] [4]; //El arreglo se dimensiona a 4 filas y 4
//columnas

0 4 12 5 15
1 10 15 16 17
2 5 10 15 9
3 8 10 15 12 Índice del Arreglo (De 0 a 3) para filas y
0 1 2 3 columnas

//Otras inicializaciones
apellidos=new String[4][3];
lista=new Persona[4][2];

3. ASIGNAR VALORES PARA UN ARREGLO BIDIMENSIONAL


Para asignar un valor a un elemento de un array, se hace de la misma forma que con las variables
normales, pero indicando el índice (o posición) en el que guardará el valor. Primero se hará referencia a
la fila y luego a la columna.

58
ESTRUCTURA DE LA INFORMACIÓN

notas[3][2]=15; //Se asigna el valor 15 al dato que se encuentra en la


//fila 3 y columna 2

4. ACCEDER A UN ELEMENTO DEL ARREGLO BIDIMENSIONAL

nn=nota[3][0]+2; //Se suma al dato ubicado en la fila 3, columna 0


//2 unidades y este nuevo valor se asigna
//hacia la variable nn

EJEMPLOS PRÁCTICOS

import javax.swing.*;

public class Matriz {

public static void main(String[] args) {


//Ingresar dimensiones de la matriz

String ff=JOptionPane.showInputDialog("Indique la cantidad de filas : ");


String cc=JOptionPane.showInputDialog("Indique la cantidad de columnas : ");

int f,c,i,j;
f=Integer.parseInt(ff);
c=Integer.parseInt(cc);

if(f==c)
{
//Declarar el arreglo
int numeros[][];

//Inicializar el arreglo
numeros=new int[f][c];

//Cargar el arreglo
for(i=0;i<=f-1;i++) //Para las filas
{
for(j=0;j<=c-1;j++) //Para las columnas
{
numeros[i][j]=Integer.parseInt(JOptionPane.showInputDialog("Ingrese dato para la posicion ["+i+"]["+j+"] : "));
}
}

//Mostrar contenido de la diagonal principal de la matriz


for(i=0;i<f;i++) //Para las filas
{
for(j=0;j<c;j++) //Para las columnas
{
if(i==j)
{ System.out.println("Posicion: ["+i+"]["+j+"] : "+numeros[i][j]); }
}

59
ESTRUCTURA DE LA INFORMACIÓN

}
}
else
{
JOptionPane.showMessageDialog(null,"La Matriz (arreglo) debe ser cuadrada, \n no se acepta este tipo de Matriz");
}
}
}

Ejemplo: Trabajando con un arreglo (matriz) tridimensional

package Arreglos;
/**
*
* @author Pepe
*/
public class Tridimensional {
/** Creates a new instance of Tridimensional */
public Tridimensional() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args)

{ int[][][] acad=new int[3][3][3];


int a,n,alu,mayor, alumno=0;

// Alumno 0 - Asignatura 0
acad[0][0][0]=12;
acad[0][0][1]=5;
acad[0][0][2]=10;

// Alumno 1 - Asignatura 0
acad[0][1][0]=17;
acad[0][1][1]=20;
acad[0][1][2]=15;

// Alumno 2 - Asignatura 0
acad[0][2][0]=6;
acad[0][2][1]=12;
acad[0][2][2]=10;

// Alumno 0 - Asignatura 1
acad[1][0][0]=14;
acad[1][0][1]=13;
acad[1][0][2]=10;

// Alumno 1 - Asignatura 1
acad[1][1][0]=13;
acad[1][1][1]=10;
acad[1][1][2]=14;

// Alumno 2 - Asignatura 1
acad[1][2][0]=4;
acad[1][2][1]=6;
60
ESTRUCTURA DE LA INFORMACIÓN

acad[1][2][2]=17;

// Alumno 0 - Asignatura 2
acad[2][0][0]=12;
acad[2][0][1]=12;
acad[2][0][2]=14;

// Alumno 1 - Asignatura 2
acad[2][1][0]=11;
acad[2][1][1]=18;
acad[2][1][2]=11;

// Alumno 2 - Asignatura 2
acad[2][2][0]=14;
acad[2][2][1]=13;
acad[2][2][2]=5;

for(a=0;a<3;a++)
{ mayor=acad[a][0][0];
for(alu=0;alu<3;alu++)
{
for(n=0;n<3;n++)
{
if(mayor<acad[a][alu][n])
{ mayor=acad[a][alu][n];
alumno=alu; }
}
}
System.out.println("En la Asignatura " + a + " El alumno de primer puesto es: "+alumno+" Con la nota de: "+mayor);
}
}
}

4.2 HERENCIA DE CLASES

CONCEPTO DE HERENCIA
La herencia permite que se pueda definir nuevas clases basadas en clases existentes, lo cual facilita re-utilizar
código previamente desarrollado. Si una clase deriva de otra (extends), hereda todas sus atributos y métodos.

La clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados.

En cierta forma es como si la sub-clase (la clase derivada) “contuviera” un objeto de la super-clase; en realidad
lo “amplía” con nuevas variables y métodos.

Java permite múltiples niveles de herencia, No obstante, no permite que una clase derive de varias (no es
posible la herencia múltiple).

Se pueden crear tantas clases derivadas de una misma clase como se quiera.

Creamos una nueva clase a partir de la Clase Padre. La Clase Hijo hereda métodos y Atributos de la Clase
Padre.

Adicionalmente Podemos añadir otros métodos o atributos a la clase hijo.

61
ESTRUCTURA DE LA INFORMACIÓN

Padr
e

La Clase Hijo
Extiende de la
Clase Padre

Hijo

 Para indicar que una clase deriva de otra se utiliza la palabra extends, como por ejemplo:

public class Alumno extends Persona


{ ... }

En el ejemplo anterior, se está creando la clase Alumno la cual extienda (hereda) de la clase Persona. Por tanto
la clase Alumno habrá heredado las propiedades y métodos de la clase Persona.

Todas las clases de Java creadas por el programador tienen una super-clase. Cuando no se indica
explícitamente una super-clase con la palabra extends, la clase deriva de java.lang.Object, que es la clase raíz
de toda la jerarquía de clases de Java. Como consecuencia, todas las clases tienen algunos métodos que han
heredado de Object.

VENTAJAS Y PRECAUCACIONES DE SU USO


La principal ventaja del uso de herencia de clases es la reutilización de los métodos de clases base, lo cual
impide que se repita el mismo código muchas veces dentro del desarrollo de una aplicación, y por otro lado
favorece el mantenimiento de los programas, porque cualquier cambio que se realice en una clase base
inmediatamente replica para todas las subclases que extienden de esta, lo cual ahorra el tiempo a la labor de la
programación.

Al diseñar nuestras clases es fundamental que primero se diseñe adecuadamente un modelo inicial, utilizando
metodologías basadas en el análisis y diseño de sistemas orientado a objetos, de no ser así nuestro diseño de
clases con sus respectivas herencias podría ser inconsistente e inarticulado.

4.3 ENCAPSULAMIENTO

Es el mecanismo que permite definir el tipo de nivel de acceso a la información de los objetos, (clases, métodos y
propiedades).

En Java los niveles de encapsulamiento están dadas de la siguiente forma:


 public, private, protected y package. De esta forma se puede controlar el acceso hacia las clases,
métodos y propiedades y evitar un uso inadecuado.

62
ESTRUCTURA DE LA INFORMACIÓN

Veamos en un caso práctico como funcionan los diferentes niveles de encapsulamiento:

1. Creamos dos paquetes: Paquete m y paquete n


2. Dentro del paquete m, tenemos dos clases; La clase A y la Clase B y
3. En el paquete n, tenemos también dos clases: La clase C (es una clase que extiende de la clase B), y la
clase D.

Ahora, ubiquémonos en la clase B, y veamos en el siguiente cuadro, los diferentes tipos de acceso de esta clase
hacia las demás clases del mismo paquete y de los demás.

CONCEPTO Y NIVELES DE ACCESO EN JAVA

63
ESTRUCTURA DE LA INFORMACIÓN

Explicación:
 Si el nivel de encapsulamiento para la clase B es public, esta clase será accesible a todas las clases de
su propio paquete y de los demás.

 Si el nivel de encapsulamiento para la clase B es private, esta clase no será accesible para ninguna otra
clase, ni del mismo paquete, ni de otros.

 Si el nivel de encapsulamiento para la clase B es protected, esta clase será accesible a todas las clases
de su propio paquete y solo a las clases heredadas de otros paquetes.

 Si el nivel de encapsulamiento para la clase B es package o default, esta clase será accesible a todas
las clases de su propio paquete únicamente.

APLICACIONES PRÁCTICAS EN JAVA:

Dado a que la POO, es tomando de nuestra realidad humana, veamos el siguiente ejemplo que nos ayudará a
entender como funcionan los diferentes niveles de encapsulamiento:

 En la vida cotidiana, el acceso a la información esta limitada por niveles de accesos:

Existe información confidencial a la cual únicamente nosotros podemos acceder y no otras personas. Este
tipo de información tiene un nivel de seguridad muy alto. (Para Java es acceso prívate).

Existe otro tipo de información que solo es de conocimiento de nuestro entorno familiar y no del resto de
personas. Este tipo de información cuenta con un nivel de acceso menos restringido. (Para Java es acceso
package)

Existe otro tipo de información que es de conocimiento únicamente de nuestros familiares y allegados, más
no de otras personas desconocidas. Este tipo de información cuenta con nivel de acceso con menos
restricción que el caso anterior. (Para Java es acceso protected).

Existe otro tipo de información que es de conocimiento público, todos podemos acceder a ello. En este caso
no existe ningún tipo de restricción. (Para Java es acceso public).

64
ESTRUCTURA DE LA INFORMACIÓN

TRABAJO PRÁCTICO

1. Elabore un algoritmo para una empresa eléctrica que permita ingresar el código de suministro y la
cantidad de Kilowatts consumidos. Calcule y muestre los siguientes pagos:
 Importe inicial
 El pago del 3.5% por alumbrado público
 El pago del 1.80 por mantenimiento
 El pago de S/. 4.80 por reajuste de acuerdo a ley
 El 19% por pago del IGV
 El pago total
Los datos a ingresar son el nombre de usuario, la cantidad de Kilowatts, considerar para todos los
casos que la tarifa por cada Kilowatts es de S/.0.50.

Nota: Los porcentajes son con respecto al importe inicial.

PRUEBA DE AUTOEVALUACIÓN

1. Defina qué es un algoritmo.


2. ¿Cuál es la metodología para la solución de problemas por medio de los algoritmos computacionales?
3. ¿Defina que es un Pseudocódigo?
4. ¿Qué es el SLE?
5. ¿Cómo se clasifican los datos simples?
6. ¿Qué es una expresión?
7. ¿Qué es un operador y cuáles son sus tipos?
8. ¿Cuáles son los operadores relacionales?
9. ¿Cuáles son los operadores lógicos?
10. ¿Qué es una constante?
11. ¿Qué es una variable?
12. ¿Cómo se clasifican las variables?
13. ¿Cómo se clasifican las variables por su contenido?
14. ¿Cómo se clasifican las variables por su uso?
15. ¿Cómo se clasifican las estructuras algorítmicas?
16. ¿Cómo se establecen los comentarios en Java?
17. ¿Qué es una sentencia?
18. ¿Cuáles son los tipos de datos en Java?
19. ¿Qué tipo de dato utilizaría para almacenar?
La velocidad de la luz.
Su calificación en el curso 1.00.
Su promedio final
20. ¿Qué es una función en java?

65
ESTRUCTURA DE LA INFORMACIÓN

BIBLIOGRAFÍA RECOMENDADA

 LAFORE, Robert. Data Structures & Algoritms in Java Waite Group Press. 1988 by The Waite Group,
Inc. USA. 2005.
 DALE, Y LILLY. Algoritmos + Estructura de Datos = Programas. Ediciones Castillo. Data Structures
and Algorithms. Scientific Amercian. 2005.
 DEITEL, H. M. Y DEITEL, P. J. Guía de Programación Súper Java 2. 2006.

SOLUCIONARIO DE AUTOEVALUACIÓN

1. Defina qué es un algoritmo.


La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un
matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones
en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar
solución a un problema específico.

2. ¿Cuál es la metodología para la solución de problemas por medio de los algoritmos


computacionales?

a. Definición del Problema


Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es
importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca
del todo no tiene mucho caso continuar con la siguiente etapa.
El planteamiento debe ser tan claro como para que cualquiera entienda exactamente lo que se desea
hacer. No es lo mismo decir:
- Sumar dos números que,
- Ingresar dos números enteros, sumar ambos números y mostrar el resultado de la suma.

b. Análisis del Problema


Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
 Los datos de entrada. (Número1 y Número2)
 Cual es la información que se desea producir (Resultado)
 Los métodos y fórmulas que se necesitan para procesar los datos. (Resultado = Número1 +
Número2)
Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos
que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados
esperados.

c. Diseño del Algoritmo


Las características de un buen algoritmo son:
 Debe tener un punto particular de inicio.

66
ESTRUCTURA DE LA INFORMACIÓN

 Debe ser definido, no debe permitir dobles interpretaciones.


 Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la
definición del problema.
 Debe ser finito en tamaño y tiempo de ejecución.

d. Codificación
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama
de flujo o seudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la
computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe
en un lenguaje de programación o lenguaje de alto nivel.

Solución del problema ejemplo (En formato de seudocódigo)


var
Numero1, Numero2, Resultado : numerico
inicio
Leer(Numero1,Numero2);
Resultado=Numero1+Numero2;
Imprimir(Resultado);
fin

Como verá el seudocódigo es fácil de implementar a través de los verbos de la acción. NO USAR
ACENTOS. Es probable que en algunos textos aparezca Lee por Leer o Ingresa por Leer;
Asigna(Resultado=Numero1+Numero1); Muestra por Imprimir o Salida por Imprimir. También es probable
que no aparezca las palabras inicio y fin o en lugar de var diga variables. Es posible incluso que primera
vaya el tipo de dato (numerico) y luego las variables, o que sea más específica la definición del tipo de
dato (real, entero, flotante, etc.). El seudocódigo se ajusta a dichas variantes pero siempre debe tratar
que no se pierda la legibilidad. Obviamente usaremos el lenguaje de seudocódigo del SL.

e. Prueba y Depuración
Los errores humanos dentro de la programación de computadoras son muchos y aumentan
considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar
paso a una solución sin errores se le llama depuración.
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello
se debe considerar con el mismo interés y entusiasmo.

No seremos tan detallistas; básicamente, lo que pretendemos cubrir es lo concerniente a:

 Planteamiento de los problemas


 Declaración del seudocódigo

3. ¿Defina que es un Pseudocódigo?


El lenguaje natural no es apropiado para la descripción de algoritmos ya que es inconcreto y disperso.

4. ¿Qué es el SLE?
Es un software diseñado para construir y analizar algoritmos en un lenguaje cercano al natural. Es un
programa “antiguo” para sistemas operativos DOS pero que corre sin problemas en ambientes
Windows y está en castellano.

5. ¿Cómo se clasifican los datos simples?

67
ESTRUCTURA DE LA INFORMACIÓN

Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los
números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.

Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el
resultado de una comparación entre otros datos (numéricos o alfanuméricos).

Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten


representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones,
etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática,
es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre
comillas.

6. ¿Qué es una expresión?


Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y
nombres de funciones especiales.

7. ¿Qué es un operador y cuáles son sus tipos?


Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o
constantes. Es decir, los operadores nos permiten manipular valores.

Aritméticos
Tipos de Operadores Relacionales
Lógicos

8. ¿Cuáles son los operadores relacionales?


Se utilizan para establecer una relación entre dos valores.
Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad
(verdadero o falso).
Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)
Tienen el mismo nivel de prioridad en su evaluación.
Los operadores relaciónales tiene menor prioridad que los aritméticos.
9. ¿Cuáles son los operadores lógicos?
- Estos operadores se utilizan para establecer relaciones entre valores lógicos.
- Estos valores pueden ser resultado de una expresión relacional.

Son: Y And
O Or
No Not

10. ¿Qué es una constante?


Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

11. ¿Qué es una variable?


Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato
durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa.
Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre
con el cual podamos identificarla dentro de un algoritmo.

68
ESTRUCTURA DE LA INFORMACIÓN

12. ¿Cómo se clasifican las variables?


Numéricas
Por su Contenido Lógicas
Alfanuméricas (String)
Variables

De Trabajo
Por su Uso Contadores
Acumuladores
13. ¿Cómo se clasifican las variables por su contenido?
Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o
negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo:
iva=0.15 pi=3.1416 costo=2500
Variables Lógicas: Son aquellas que solo pueden tener dos valores (TRUE o FALSE O SUS
EQUIVALES SI - NO) estos representan el resultado de una comparación entre otros datos.
Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres
especiales). Ejemplo:
letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’

14. ¿Cómo se clasifican las variables por su uso?


Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que
se usan normalmente dentro de un programa. Ejemplo:
suma=a+b/c
Contadores: Se utilizan para llevar el control del número de ocasiones en que se realiza una operación
o se cumple una condición. Con los incrementos generalmente de uno en uno. (Su uso más común es
dentro de bucles)
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie
de valores que se van leyendo o calculando progresivamente (a=a+3 en un ciclo desde por ejemplo
que es donde más se usan).

15. ¿Cómo se clasifican las estructuras algorítmicas?


Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante
la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de
problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

- Asignación
Secuenciales - Entrada
- Salida

- Simples
Estructuras Condicionales
Algorítmicas - Múltiples

- Hacer desde
Cíclicas - Hacer mientras
- Repetir hasta

69
ESTRUCTURA DE LA INFORMACIÓN

16. ¿Cómo se establecen los comentarios en Java?


Hay tres tipos de comentarios en Java:
// Este es un comentario de una sola línea
/* Este es un comentario de una o más líneas */
/** Este es un comentario de documentación */

17. ¿Qué es una sentencia?


Una sentencia es una orden que se le da al programa para realizar una tarea específica, esta puede
ser: mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en memoria),
inicializarla, llamar a una función, etc.

18. ¿Cuáles son los tipos de datos en Java?

Tipo Descripcion
boolean Tiene dos valores true o false.
Caracteres Unicode de 16 bits Los caracteres alfa-numéricos son los mismos que los
char ASCII con el bit alto puesto a 0. El intervalo de valores va desde 0 hasta 65535 (valores de
16-bits sin signo).
byte Tamaño 8 bits. El intervalo de valores va desde -27 hasta 27 -1 (-128 a 127)
short Tamaño 16 bits. El intervalo de valores va desde -215 hasta 215-1 (-32768 a 32767)
Tamaño 32 bits. El intervalo de valores va desde -231 hasta 231-1 (-2147483648 a
int
2147483647)
Tamaño 64 bits. El intervalo de valores va desde -263 hasta 263-1 (-
long
9223372036854775808 a 9223372036854775807)
Tamaño 32 bits. Números en coma flotante de simple precisión. Estándar IEEE 754-
float
1985 (de 1.40239846e–45f a 3.40282347e+38f)
Tamaño 64 bits. Números en coma flotante de doble precisión. Estándar IEEE 754-1985.
double
(de 4.94065645841246544e–324d a 1.7976931348623157e+308d.)

19. ¿Qué tipo de dato utilizaría para almacenar?


La velocidad de la luz. long
Su calificación en el curso 1.00. double
Su promedio final double

20. ¿Qué es una función en java?


Una función en java es sinónimo de lo que en otros lenguajes de programación se conoce con los
nombres de: procedimiento o subprocedimiento, subprograma, módulo, procedimiento de evento,
proceso, subproceso, operación, y varios etc.

70

Você também pode gostar