CAPÍTULO 2: SECUENCIACIÓN Y ESTRUCTURAS - Inicio

Transcripción

CAPÍTULO 2: SECUENCIACIÓN Y ESTRUCTURAS - Inicio
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca CAPÍTULO 2: SECUENCIACIÓN Y ESTRUCTURAS DE SELECCIÓN Empecemos el estudio de este segundo capítulo no sin antes recordar que un
programa tiene un orden estricto de ejecución, en el pseudocódigo que estamos
estudiando ubicamos números y letras a la izquierda de cada línea que es parte
del algoritmo, vea la página 53 del texto básico, para señalar cuál es el orden
de ejecución. En los programas escritos en Java o en cualquier otro lenguaje de
programación no es necesario el uso de números 1 para indicar cuál es el orden
de ejecución, generalmente las líneas de código se ejecutan según el orden en
el que fueron escritos. A este orden se lo denomina flujo normal de ejecución.
Todos los lenguajes de programación que se denominan de alto nivel, poseen
un conjunto de estructuras que permite controlar y modificar el flujo de
ejecución de un programa.
Estas estructuras pueden clasificarse en: secuenciación, selección y repetición.
En este capítulo nos dedicaremos a aprender la secuenciación y
selección por lo cual necesitamos estudiar ciertas secciones del
Capítulo 2 “Elementos para solucionar problemas en
pseudocódigo”, el Capítulo 3 “La secuenciación” y el Capítulo 4
“La selección” del texto básico.
Iniciemos este capítulo estudiando el comportamiento por defecto que tienen
todos los programas, independientemente del lenguaje de programación con el
que fueron escritos, y que se denomina secuenciación.
2.1 La secuenciación Realice una lectura comprensiva del Capítulo 3 “La
secuenciación”. Una vez hecha la lectura regrese a este
apartado para revisar algunos temas que debe tener en
cuenta.
¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos
ciertos elementos de la lectura anterior.
Acuda a la página 50 del texto básico y encontrará un definición de
secuenciación y como se implementará en el pseudocódigo que estamos
aprendiendo. Es necesario que analice a detalle los puntos 3.1 ”Nuestro primer
programa” y 3.2 “Estructura y diseño de un algoritmo” ya que ellos explican
como se arma un algoritmo y se plantea el primer problema a resolver, para
luego en el punto 3.3 “Nuestro primer algoritmo” mostrar ya el primer
algoritmo que resuelve el problema planteado.
Hagamos entonces una analogía con el mundo de Java. En Java, así como en
1 En la guía todas las imágenes que muestran programas Java tienen números (a la izquierda de cada
línea), esos números no son parte del programa y las usamos con el afán de hacer más sencilla la
explicación de los mismos.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca todos los lenguajes de programación, la secuenciación es una característica
innata, es decir, que ya viene implementada como el comportamiento por
defecto, ejecutando una tras otras las líneas de código según el orden en el que
aparecen en el código fuente.
El código fuente es un archivo en texto plano que muestra las instrucciones
que el programa ejecutará. En Java el código fuente se graba en un archivo con
la extensión .java y contiene a una clase.
Analicemos ahora como Java implementa las estructuras que posee un
algoritmo (apartado 3.2 del texto básico).
1. El encabezado
Si bien en Java no existe una representación directa para este elemento
podemos utilizar comentarios de bloque para identificar el programa. Lo
haríamos así:
/**
* Programa CALCULAR SUELDO DE UN EMPLEADO
* @author jorgaf
*/
Ubicaremos una descripción del programa que vamos a elaborar y otras
explicaciones que le pueden ayudar a entender el propósito del
programa. Además podemos ubicar el nombre de la persona que elaboró
el programa, para ello debemos colocar @author y luego el nombre del
programador. El @author es un comentario de documentación, por
ahora no nos preocuparemos del mismo.
2. Clases
Todo programa que creamos en Java es una clase y se define con el
siguiente código:
public class Empleado1 {
Esta clase se llama Empleado1. Al final de la definición de la clase se
coloca una llave de apertura, que indica el inicio del bloque de código
que corresponde a la clase.
Un bloque de código es una o más sentencias que se encierran entre
llaves {} y pueden incluir a otras estructuras como métodos y
estructuras de control
Además de la clase se define el método principal, que en Java tiene la
siguiente forma:
public static void main(String args[]){
Los detalles lo dejaremos para el segundo bimestre cuando estudiemos
métodos. Por cada clase únicamente puede existir un método principal.
3. Declaraciones
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Para las declaraciones revise la Ilustración 1 que se encuentra en el
capítulo anterior de la presente guía didáctica. Las declaraciones más
utilizadas serán las variables, razón por la cual debe estudiarlas con
mayor detenimiento.
4. Leer, calcular e imprimir
Las acciones de leer e imprimir o escritura de información lo analizamos
en el capítulo anterior, vuelva a revisarlas. Los cálculos se realizan a
través de sentencias de asignación, que son instrucciones que permiten
asignar resultado de una expresión matemática, trigonométrica o lógica
a una variable. Entraremos en detalles en la sección 2.2 Operadores
aritméticos y funciones matemáticas de la presente guía didáctica.
5. Fin del método principal de la clase y del algoritmo
En Java estos elementos se señalan con llaves de cierre para el método
principal y la clase. No se señala el cierre del algoritmo.
Como se menciona en la nota de la página 53 del texto básico, el mismo incluye
un CD con los programas Java de cada uno de los algoritmos desarrollados en
los diferentes capítulos.
Existen algunas diferencias entre lo que planteamos en la guía didáctica y lo
que encontrará en el CD. Las diferencias son: el ingreso de datos y la salida o
escritura de datos. Usted está en la libertad de seleccionar la forma a la que
mejor se adapte, aunque recomendamos usar lo expuesto en esta guía.
En la siguiente ilustración usted encontrará la “traducción” que hemos realizado
para el algoritmo que se encuentra en la página 53 del texto básico. Observe
como a través de comentarios señalamos el encabezado y el inicio de algunas
secciones como el método principal, las declaraciones. Vea las diferencias que
existen entre el código que contiene el CD del texto básico y el código
desarrollado para la materia, especialmente para el ingreso y escritura de
datos.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 1 Clase Empleado1, primer algoritmo "traducido"
Es necesario que revise la explicación del algoritmo de la página 53, ponga
especial atención a la nota que se encuentra en la página 54 y establezca la
relación con la línea 23 de la ilustración anterior. Vea la representación
esquemática de las variables en memoria. Finalmente haga la práctica que se
recomienda en la página 55.
Generalmente dentro de los programas como el que muestra la Ilustración 5, se
utilizan espacios en blanco (saltos de línea y tabuladores) con el fin de mejorar
la legibilidad del código fuente, ellos no influyen de ninguna manera en el
programa (no son la causa de errores, su existencia o ausencia no hace que un
programa funcione) y su uso es exclusivamente para facilitar la lectura de los
programas. Cosa igual sucede con los comentarios, solamente son útiles para
que el programador entienda que hace y luego recuerde lo que hizo.
La secuenciación es útil para resolver problemas en los que intervienen algún
tipo de cálculo (matemático, trigonométrico o lógico), como ejemplo calcular el
sueldo de un empleado según las horas trabajadas, calcular el área de un
triángulo, etc. Generalmente la secuenciación se aplicará para hacer algoritmos
y programas que resuelven alguna fórmula. Para ello es necesario conocer los
operadores matemáticos (página 43 del texto básico) y algunas funciones
matemáticas (página 55 del texto básico). Seguidamente revisaremos estos
temas.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 2.2 Operadores aritméticos y funciones matemáticas Recurra nuevamente al texto básico y lea detenidamente las
páginas de 43 a la 55. Además revise los ejemplos que ahí se
muestran.
Para realizar algún tipo de cálculo es necesario trabajar con operadores,
operandos y alguna función matemática (elevar un número x a una potencia y
por ejemplo). Por tal motivo debemos definir cada una ellas.
El pseudocódigo que estamos aprendiendo muestra sus operadores aritméticos
en la página 43 del texto básico, concretamente en el apartado “3. Operaciones
aritméticas fundamentales”, ponga atención a los notas que se muestran en las
páginas 44 y 45.
El último ejemplo de la página 43 muestra como “traducir” expresiones
algebraicas a expresiones comprensibles por un computador, que muchas veces
puede traer problemas cuando nos iniciamos en la programación. Otro punto a
analizar es la precedencia de operadores que se encuentra explicado
correctamente en la página 45. Finalmente vea los ejercicios de conversión que
inician al final de la página 45 y terminan en la 46.
Antes de pasar a analizar la correspondencia entre los operadores aritméticos
del pseudocódigo con los operadores de Java, dos observaciones:
- El operador de multiplicación es el asterisco (*), no la letra equis minúscula
(x) o mayúscula (X)
- Expresiones así: 3(2y-1) no son válidas, un computador no las comprenderá
y nos lanzará un error léxico (página 25 del texto básico, el tema 2).
La omisión del operador de multiplicación es un error
programación, especialmente cuando somos principiantes.
común
en
la
Dentro de Java existen los mismos operadores aritméticos que muestra el texto
básico, su correspondencia se muestra en la siguiente tabla:
Tabla 1 Correspondencia entre operadores aritméticos
Operador pseudocódigo
Operador Java
Ejemplo
+ (Suma)
+
a = a + 3;
- (Resta)
-
a = a - 3;
* (Multiplicación)
*
a = a * 3;
/ (División real)
/
a = a / 3;
\ (División entera)
NO EXISTE
Mod (Módulo)
%
a = a % 3;
= (Asignación)
=
a = 3;
En Java, no existe el operador de división entera, pero cuando estamos
dividiendo 2 números enteros, el resultado será un número entero (Ejemplo:
5/2 = 2). ¿Qué sucede con la parte decimal? Nada, simplemente la división
entre enteros da como resultado un entero.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En cambio la división entre números reales (o cuándo al menos uno de los
operandos es un número real), el resultado será un número real. Por ejemplo
5.0/2 = 2.5.
En Java, la división entre números enteros da como resultado otro número
entero, sin parte decimal, sin redondeos, ni truncamientos.
Otro de los operadores que cambia de forma, entre el pseudocódigo y Java es
el operador módulo, pero el resultado siempre será el mismo (el residuo de una
división entera), esto limita su aplicación con números enteros, tanto en Java
como pseudocódigo.
El operador módulo (% en Java, Mod en pseudocódigo) solamente se puede
aplicar entre números enteros.
Una operación que a veces puede causar confusión es la asignación, no
siempre, pero sí las que tienen la siguiente forma:
int a = 5;
a = a + 2;
Alguna vez, nos podemos preguntar, ¿Cómo es posible que la variable a esté a
ambos lados del signo igual? ¿Cuál es el valor que toma a antes de la
asignación, 5 o 7? Bien cuando estemos realizando cualquier tipo de asignación
(usando el signo igual), siempre se resuelve primero lo que tenemos a la
derecha del igual, para luego asignar ese valor a la variable que se encuentra a
la izquierda del igual. Entonces en el código anterior, en la línea en donde se
realiza la suma (a la derecha del igual) a toma el valor de 5; finalmente y luego
de la asignación el valor de a es 7.
Las funciones matemáticas, página 55 del texto básico, difieren
considerablemente en Java. En Java para invocarlas es necesario utilizar la
clase estática Math. Veamos una tabla de equivalencias entre Java y
pseudocódigo.
Tabla 2 Equivalencia entre funciones matemáticas
Función pseudocódigo
Función Java
Ejemplo
Seno(x)
Math.sin(x)
Math.sin(45);
Coseno(x)
Math.cos(x)
Math.cos(90);
ArcoTan(x)
Math.atan(x)
Math.atan(0);
Ln(x)
Math.log(x)
Math.log(4.3);
Exp(x)
Math.exp(x)
Math.exp(89);
Absoluto(x)
Math.abs(x)
Math.abs(-2.8);
RaizCuad(x)
Math.sqrt(x)
Maht.sqrt(36);
Potencia(base, exponente)
Math.pow(base, exponente)
Math.pow(3, 4);
La tabla anterior muestra algunos ejemplos de equivalencias, solamente las
definidas en el texto básico, pero la clase Math tiene algunas otras funciones y
valores constantes como PI y E, Math.PI y Math.E respectivamente. Tanto
para el pseudocódigo como para Java el valor de x puede ser un número entero
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca o real. Pero el resultado de una función matemática en Java, siempre será un
número real.
Luego de revisar la Tabla 2, posiblemente se pregunte ¿cómo calculo la raíz 7 de
127? La respuesta es usando la función potencia, debido a la siguiente
equivalencia:
En un ejemplo sería:
Y en código Java, se expresaría así:
double raiz;
raiz = Math.pow(127, 1.0/7);
Los siguientes programas Java muestran el uso de los operadores aritméticos y
las funciones matemáticas.
Ilustración 2 Programa que muestra el uso de los operados aritméticos
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En la ilustración anterior podemos ver como se hacen las divisiones enteras y
reales, fíjese en las líneas desde la 29 hasta la 34. La salida del programa se
muestra en la siguiente imagen:
Ilustración 3 Salida del programa de la Ilustración 6
La Ilustración 8 muestra el uso de las funciones matemáticas. Recuerde que una
función matemática en Java siempre devuelve un valor real, por ese motivo la
variable resultado se definió como double. En la línea 32 se muestra el cálculo
de la raíz 7 de 127, usamos 1.0 para decirle a Java que el exponente debe ser
un valor real.
Ilustración 4 Programa que muestra el uso de las funciones matemáticas
La salida del programa es la siguiente:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 5 Salida del programa de la Ilustración 8
Observe, en la ejecución del programa, que el separador decimal es la coma
(,), aunque en el código fuente de un programa en Java es el punto (.). La
diferencia se da porque el sistema operativo usa como separador decimal la
coma (,) y la ejecución depende del sistema operativo. Esto puede cambiar
según la forma en la que trabaja su sistema operativo.
Las siguientes imágenes muestran la “traducción” de los algoritmos de los
ejercicios 3.4.2 (página 59) y 3.5.2 (página 61).
Ilustración 10 Programa para el algoritmo 3.4.2 del texto básico
Como se mencionó anteriormente la clase Math posee algunas constantes, por
tal razón no se definió PI como tal, sino que se utilizó el valor que tiene la clase
Math (vea las líneas 25 y 26 de la Ilustración 10).
La salida del programa anterior se muestra en la siguiente imagen:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 7 Salida del programa de la Ilustración 10
La siguiente ilustración corresponde al programa del ejemplo 3.5.2, página 61
del texto básico.
Ilustración 12 Programa que representa al algoritmo 3.5.2 del texto básico
La salida es la siguiente:
Ilustración 9 Salida del programa que se muestra en la Ilustración 12
Para una mejor comprensión de los temas aquí tratados es necesario que revise
todos los ejercicios desde el 3.4.1 (página 58) hasta el 3.5.3 (página 62) del
texto básico. Antes de revisar las soluciones trate usted mismo de resolverlos y
compare sus respuesta con el texto básico. Recuerde que primero debe
entender el pseudocódigo y luego la programación Java. Una vez comprendidos
los ejercicios, trate de codificarlos en Java. Recuerde que si tiene problemas en
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca la “traducción” a Java, puede revisar el CD del texto básico y ver los ejercicios
escritos en Java, sin olvidar la diferencia que existe en la entrada y salida de
datos entre el código Java que muestra el CD y el código que se expone en esta
guía.
Una vez que hemos analizado la secuenciación debemos iniciar el estudio de las
estructuras de selección, ya que si bien la secuenciación es un mecanismo que
sirve para un tipo de problemas es limitado, por lo que es necesario
complementarla a través de otras estructuras como la selección.
2.3 Estructuras de selección Es el momento de realizar una lectura comprensiva del Capítulo
4 “La selección” del texto básico. Una vez concluida la lectura
vuelva a este apartado para desarrollar en detalle algunas
ideas que le ayudaran a comprender de mejor manera este
tema.
¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos
ciertos elementos de la lectura anterior.
La secuenciación, nos permite hacer un cierto tipo de ejercicios, que pueden ser
clasificados como sencillos. Pero la secuenciación no es suficiente, para resolver
todos los problemas a los que nos podemos enfrentar, por tal motivo se han
creado las estructuras de control: selección y repetición. La primera de las
estructuras de programación que analizaremos es la selección, para lo cual nos
apoyaremos en el texto básico, en el Capítulo 4 “La selección”, página 67. Para
empezar revise el ejercicio que se muestra en la página 68 que nos muestra la
necesidad de contar con estructuras que nos permitan decir si un grupo de
acciones o instrucciones se ejecutan o no.
De manera general las estructuras de selección son IF-THEN-ELSE, IF-THEN y
SWITCH que son analizadas en las páginas 68, 79 y 80 respectivamente.
Veamos cuál es la representación de cada uno de ellos en Java, iniciando por
IF-THEN-ELSE, revise por completo el punto 4.1 del texto básico. Vamos a usar
el algoritmo que se muestra en la página 70, solamente mostraremos las
secciones d, e y f.
Ilustración 10 Ejemplo en Java de la estructura IF-THEN-ELSE
Recuerde siempre revisar la explicación de cada uno de los algoritmos, para de
esa manera comprenderlos.
En la ilustración anterior podemos ver como la línea d del pseudocódigo
corresponde a la línea 29 en Java; la línea e corresponde a la línea 31 y la línea
f corresponde a la línea 33. Para que se ejecute la línea 30 es necesario que el
valor de la variable horasTrab sea menor o igual a 40, sino es así (si es mayor
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuella de Ciencias d
de la Computacción – UTPL Fundamentoss de la Program
mación Autores: Ing
g. Jorge López, Ing. Greyson Alberca que 40) se ejecutará
e
la línea 32
2. Vemos como exiisten bloques (línea
as de
códig
go, encerra
adas entre
e llaves {})) tanto parra el if com
mo para el else. En el
e
pseu
udocódigo el bloque
e del IF inicia en la siguie
ente línea luego de
e su
decla
aración y llega hasta
a encontrarr la palabrra ELSE, mientras
m
qu
ue el bloque del
ELSE
E inicia luego de la pa
alabra ELS
SE y llega hasta
h
la palabra ENDIF.
Una sentencia que sea parte
p
de un
u bloque IF-THEN-E
ELSE debe ubicarse en
e el
bloque de sentencias de
el IF o en bloque
b
del ELSE, pero nunca ffuera. Tantto en
Java
a como en el pseudo
ocódigo se suele usa
ar indentac
ción, revis
se la págin
na 71
puntto 4.2 del texto básico, para encontrar
e
una
u
definic
ción a este
e término y ver
algunos ejemp
plos.
Entre las difere
encias que
e podemos encontrarr entre el pseudocódi
p
igo y Java para
el IF-THEN-EL
LSE (que podemos generaliza
ar para to
odas las estructuras de
conttrol) son:
- Ell uso de las
s minúscullas para las palabras reservada
as IF y ELS
SE.
- En
n Java no existe
e
la pa
alabra THE
EN.
- Ell uso de los
s paréntes
sis para enc
cerrar la co
ondición qu
ue en Java
a es obligattorio.
- Y el uso de llaves ({}) para iden
ntificar los bloques de
d código, tanto para
a el if
co
omo el else
e.
En la
a página 77 del texto
o básico, encontrará
e
el tema 4.4 “IF’s anidados” qu
ue no
es otra cosa que ubicar dentro de un IF a otro u otros
s IF. La sig
guiente imagen
mue
estra un eje
emplo en Java
J
que nos ayuda a aclarar es
ste tema.
Ilustración
r
11 Ejem
mplo de IF's anidados
Veam
mos ahora
a la repre
esentación de IF-TH
HEN o tam
mbién conocida com
mo la
selec
cción simp
ple (lea po
or completto el aparttado 4.5 “La
“
selecciión simple
e (IFTHEN
N)” del tex
xto básico, páginas 79 y 80), en
n Java. La sección de
e código qu
ue se
toma
ará corresp
ponde al algoritmo de la página
a 80 en los
s puntos e.. y f.
Ilustración
r
12 Cód
digo Java quee muestra la estructura
e
IF
F-THEN
La líneas
l
e. y f. del pseudocódigo, corrresponden a las lín
neas 31 y 33
respectivamente del cód
digo Java. En este caso
c
si el valor de horasTra
ab es
mayor que 40 se ejecuta
ará la línea
a 32, si no es así, se continua c
con la línea
a 34.
Esta
a obra ha sido licenciada con Creative
C
Commo
ons Ecuador 3.0
0 de Reconocim
miento - No com
mercial Compa
artir igual (http:///creativecommo
ons.org/licensess/by-nc-sa/3.0/e
ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En este ejemplo no existe un caso alternativo, únicamente se cuenta con el
bloque de sentencias del IF.
La última estructura de selección es SWITCH, revisar por completo el acápite
4.6 “La selección múltiple (SWITCH)”, página 80 del texto básico. La siguiente
sección de código muestra el algoritmo de la página 82, en las líneas d., e. y f.
incluidas las líneas que están dentro. La correspondencia es la siguiente: la
línea d. corresponde a la 22, la línea e. a la 44 y la f. a la 46.
Ilustración 13 Ejemplo de código en Java que muestra un SWITCH
Para identificar cada caso en Java se usa la palabra reservada case, además
por cada caso se usa la palabra reservada break (vea las líneas 25, 28, 31,
etc.) excepto, en el caso por defecto (línea 44) en donde ya no es necesario.
La palabra reservada break le dice a Java que se ha ejecutado uno de los casos
del switch y que termine de realizar las comparaciones, saltando a la siguiente
línea luego del switch, en el programa sería la línea 47.
La única operación de comparación que admite una estructura SWITCH es la
igualdad, es decir se compara si el selector (numDia) es igual a uno de los
valores de los casos (del 1 al 7). Si no existe ningún valor igual se ejecuta la
opción default. El caso por defecto (default) es opcional, es decir que
podemos construir una estructura SWITCH sin el, para ver un ejemplo revise el
algoritmo de la página 106 (acciones comprendidas entre 4 y 5) del texto
básico.
Para aclarar el funcionamiento del SWITCH, lea la página 81 del texto básico en
donde habla del funcionamiento de esta estructura.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En Java se cumple exactamente lo que dice el libro en la página 81 acerca del
selector. Los únicos tipos de datos admitidos para la variable que hará de
selector son int y char; aunque se ha anunciado que para la versión 7 de Java
se soportará el tipo String 2 .
Para cada caso (case) existe un bloque de sentencias, aunque no se use las
llaves ({}), para mostrarlo. El bloque inicia desde los dos puntos (:) hasta
donde inicia el siguiente caso.¿Cuántas y cuáles sentencias pueden ser parte
del bloque de un case? La respuesta es cualquier tipo y número de sentencias,
no existe restricción alguna. Aunque hasta el momento no hemos visto un
bloque de un caso(case) con más de 10 sentencias.
En la página 83 del texto básico se muestra otras aspectos de la estructura
switch. Tanto para el ejercicio de la página 83 y 84 del texto básico, en Java se
pueden programar obviando el uso de las sentencias break en cada caso.
Veamos el programa Java que representa el algoritmo de la página 84 para
observar cómo trabajar con caracteres (variables tipo char).
Ilustración 14 Programa que representa la algoritmo de la página 84 del texto básico
2
Al momento de escribir este documento la última versión de Java era la 6
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca La ilustración anterior muestra como leer un tipo de dato tipo char (carácter)
en la línea 18. En Java, a través de la clase Scanner, no se puede leer
directamente un tipo de dato char, por lo cual leemos una cadena de
caracteres (método next()) y de esa cadena sacamos el primer carácter
(método charAt(0), porque las cadenas de caracteres inician en la posición 0).
Vemos también el manejo de los caracteres, siempre se encierra entre comilla
sencilla (o apóstrofe) y existe un carácter para las mayúsculas y otro para las
minúsculas que es diferente.
Podemos ver como la ausencia de la sentencia break; afecta el
comportamiento de un programa, permitiendo agrupar los casos. Recuerden
que el break señala la salida del switch y al no existir, en los casos anteriores
al caso con u (minúscula o mayúscula - líneas 24 y 32), hace que siempre se
ejecute ese caso. Vea la explicación de la página 84 del texto básico para
despejar sus dudas.
Como se pudo haber percatado ya, para el correcto funcionamiento de las
estructuras de selección se necesita implementar condiciones, por tal motivo
debemos estudiar los operadores relacionales y lógicos ya que ellos permiten
crear condiciones.
2.4 Operadores lógicos y relacionales Es necesario que acuda nuevamente al texto básico y lea
detenidamente las páginas de la 69 a la 76. Revise a detalle los
conceptos y ejercicios que ahí se desarrollan.
¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos
ciertos elementos de la lectura anterior que son necesarios destacar.
Para comprender el funcionamiento de éstas estructuras de control (en especial
IF-THEN-ELSE e IF-THEN), es necesario entender el concepto de condición. En
la página 69 del texto básico, se da una definición de lo que es una condición.
Para formar condiciones tanto en el pseudocódigo como en Java se debe hacer
uso de los operadores relaciones, que son aquellos operadores que nos
permiten realizar comparaciones y nos devuelven un valor de verdadero o falso.
La siguiente tabla los muestra con su equivalencia en Java, en el texto básico
vea la página 73.
Tabla 3 Operadores relaciones en psuedocódigo y Java
Operador pseudocódigo
<
>
<=
>=
=
<>
Operador Java
<
>
<=
>=
==
!=
Significado
Menor que
Mayor que
Menor igual que
Mayor igual que
Igual que
Diferente de
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Observe como existen diferencias entre los operados de igual y de diferencia
que usa Java y el pseudocódigo. Nuestra recomendación es que en el
pseudocódigo, use el doble igual (==) para comparaciones de igualdad y (!=)
para diferencia.
Cuando construya algoritmos en pseudocódigo use los símbolos == y !=
para relaciones de igual y diferencia respectivamente. Así el proceso de
“traducción” a Java será más sencillo.
Es común que tengamos que realizar condiciones más complejas que incluya la
comparación de los valores de varias variables. Ejemplo: si la persona tiene una
edad mayor que 18 y su sexo es femenino es una mujer mayor de edad o
revise el algoritmo que se muestra en la página 88 del texto básico, el
algoritmo MAYOR 3 NUMEROS, para ver como se forman condiciones que
evalúan el valor de más de una variable.
Por la anterior podemos decir que para formar condiciones complejas se debe
usar, a más de las operadores relacionales, los operadores lógicos, formando lo
que se denomina expresiones lógicas. Por favor lea el punto 4.3 “Expresiones
lógicas” del texto básico en la página 72.
La siguiente tabla muestra los operadores lógicos en pseudocódigo y Java.
Tabla 4 Operadores lógicos en Java
Operador pseudocódigo
AND
OR
XOR
NOT
Operador Java
&&
||
NO EXISTE 3
!
Significado
Conjunción “y”
Disyunción “O”
“O” Exclusiva
Negación
Recordemos que estos operadores lógicos tienen tablas de verdad que las
pueden revisar en las páginas 74 a la 76 del texto básico.
Muchas de las veces, llegamos a acostumbrarnos a ver condiciones sencillas o
relativamente fáciles, y eso provoca que cuando tengamos que hacer
condiciones complejas no sepamos cómo actuar. Pero recuerden que una
condición puede ser tan sencilla como la que se muestra en el algoritmo de la
página 70 del texto básico, relativamente compleja como muestra el algoritmo
de la página 88 del texto básico o compleja como la que se muestra en la
siguiente imagen:
Ilustración 15 Condición compleja 4
Para expresiones complejas, ya sean fórmulas matemáticas o expresiones
lógicas, es necesario utilizar paréntesis para agrupar los elementos y garantizar
que las operaciones se ejecuten en el orden correcto. Recuerden la precedencia
de operadores que se analizó en el capítulo anterior.
3
4
Existe un operador XOR a nivel de bits que no es igual al operador lógico y no puede aplicarse.
La condición ha sido formulada como un ejemplo sin interesarnos el valor de verdad de la misma.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Dentro del pseudocódigo y en Java existe un tipo de dato boolean o lógico
(página 37 del texto básico). Este tipo de dato puede tener dos valores,
pseudocódigo True (en Java true) y False (en Java false). Este tipo de dato se
puede usar para declarar variables o para realizar comparaciones. Inclusive en
Java una variable tipo boolean puede almacenar el resultado de una expresión
boleana. Veamos un ejercicio en pseudocódigo y Java.
Algoritmo VARIABLES BOOLENAS
Clase VarBoolean
1. Método principal
a. Declaraciones
Variables
expre1, op1, op2 : boolean
b. Calcular op1 = True, op2 = False
c. Calcular expre1 = NOT((op1 AND op2) or op1)
d. IF (expre1 == True) THEN
1. Imprimir el valor de expre1 es verdadero
e. ELSE
1. Imprimir el valor de expre1 es falso
f. ENDIF
h. Fin Método principal
Fin Clase VarBoolean
Fin
El código Java se muestra en la siguiente imagen:
Ilustración 16 Ejemplo de un programa Java con valores y expresiones booleanas
Los siguientes ejercicios muestra algunas características de las estructuras que
hemos estudiado, por lo que les invitamos a que los revisen detalladamente.
2.5 Ejercicios Es necesario que recuerde lo siguiente: en el análisis de los ejercicios
desarrollados se utiliza números para referirse a líneas de código de los
programas Java. Mientras que, para los algoritmos escritos en pseudocódigo se
utiliza letras del alfabeto y a veces la combinación de letras y números.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 1. Elabore un algoritmo y luego un programa en Java que aplicando el
teorema de Pitágoras calcule el valor de la hipotenusa al cuadrado.
Recuerde que: c 2 = a 2 + b 2 En dónde c es la hipotenusa, a y b son
catetos.
Algoritmo Calculo Hipotenusa
Clase Hipotenusa
1. Método principal
a. Declaraciones
Variables
c, a, b : Real
b. Solicitar Cateto a y Cateto b
c. Leer a, b
d. Calcular c = (a*a) + (b*b)
e. Imprimir “Hipotenusa al cuadrado =”, c
f. Fin Métdo principal
Fin Clase Hipotenusa
Fin
El código Java se muestra continación:
Ilustración 17 Cálculo de la hipotenusa
Ilustración 18 Ejecución de Clase Hipotenusa
Análisis:
Recuerde que: para el análisis del código Java todas los números de
líneas hacen referencia a la Ilustración 22.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Las entradas para este problema son los catetos a y b, el proceso es
simple: aplicar la fórmula. Para elevar un cateto al cuadrado
múltiplicamos por si mismo el valor del cateto(luego veremos otras
formas). La salida es el valor de c elevado al cuadrado.
La entrada se realiza en los puntos b. y c. del algoritmo, mientras que en
Java se lo hace en las líneas de la 19 a la 22. El proceso se ejecuta en el
punto d. (algoritmo) y línea 24 (Java). Finalmente la salida se lo hizo en
el punto e. con la acción Imprimir y en las líneas 26 y 27 con la
sentencia printf, en Java es posible dividir una sentencia en dos líneas.
2. Elabore un algoritmo y luego un programa en Java que calcule el número
menor de billetes de 1, 5, 10, 20 ó 50 que se tiene que entregar a una
persona que ha ingresado un valor entero. Para resolver este problema
imagínese que quiere retirar dinero de una cuenta bancaria usando un
cajero automático. Obviando algunos pasos, el proceso sería más o
menos así, el usuario digita la cantidad a retirar, el cajero determina la
mejor combinación de billetes a entregar.
Algoritmo CAJERO
Clase Cajero
1. Método principal
a. Declaraciones
Variables
cantidad, nroBilletes : Entero
b. Solicitar la cantidad de dinero
c. Leer cantidad
d. IF cantidad >= 50 THEN
1. nroBilletes = cantidad \ 50
2. Imprimir nroBilletes “ de $50”
3. cantidad = cantidad MOD 50
e. ENDIF
f. IF cantidad >= 20 THEN
1. nroBilletes = cantidad \ 20
2. Imprimir nroBilletes “ de $20”
3. cantidad = cantidad MOD 20
g. ENDIF
h. IF cantidad >= 10 THEN
1. nroBilletes = cantidad \ 10
2. Imprimir nroBilletes “ de $10”
3. cantidad = cantidad MOD 10
i. ENDIF
j. IF cantidad >= 5 THEN
1. nroBilletes = cantidad \ 5
2. Imprimir nroBilletes “ de $5”
3. cantidad = cantidad MOD 5
k. ENDIF
l. IF cantidad >= 1 THEN
1. nroBilletes = cantidad
2. Imprimir nroBilletes “ de $1”
m. ENDIF
n. Fin Método principal
Fin Clase Cajero
Fin
El código Java se muestra continación:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 19 Clase Cajero
La ejecución que se obtiene luego de ejecutar el programa de la Ilustración 23 se
muestra a continuación:
Ilustración 20 Ejecución del programa Cajero
Análisis:
Tenga presente que: para el análisis del código Java todas los números
de líneas hacen referencia a la Ilustración 23.
Para este problema la entrada es un número entero positivo que
representa la cantidad a entregar.
El proceso consiste en encontrar la combinación de billetes que cubra la
cantidad ingresada, sin preocuparnos por la disponibilidad de los billetes,
asumiremos que siempre están disponibles.
Para el proceso nos ayuda hacernos la pregunta ¿Hay billetes de x
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca denominación en y cantidad de dinero? Por ejemplo ¿Hay billetes de 50
en $69? Una vez determinada la cantidad de billetes debemos trabajar
con el dinero restante, en el ejemplo, la cantidad de billetes sería 1, y el
sobrante $19. Volvemos a preguntar ¿Hay billetes de 20 en $19? La
respuesta es no, seguimos con otra pregunta ¿Hay billetes de 10 en $19?
La respuesta es si, entonces determinados la cantidad de billetes de 10,
en este caso 1 y el dinero sobrante $9. Avanzamos con otra pregunta
¿Hay billetes de 5 en $9? Respuesta si, calculalos cuántos billetes, para
el caso sería 1 billete, y el dinero restante $4. Volvemos a preguntar
¿Hay billetes de 1 en $4? Si, en este caso el número de billetes será
igual a la cantidad de dinero ¿porqué? Por que todo número dividido para
la unidad es igual a si mismo.
La salida se realiza siempre que existan billetes en la cantidad.
Tanto el algoritmo como en Java, la pregunta ¿Hay billetes de x
denominación en y cantidad de dinero?, se usaron sentencias IF (desde
el punto d. hasta el punto i. del algoritmo – en Java líneas desde la 21
hasta la 41). Mientras que para determinar el número de billetes se usa
la división entera de la cantidad de dinero para el valor de los billetes.
Finalmente para determinar el dinero restante se usa el operador módulo
(MOD algoritmo y % Java). Vea los puntos 1 de todas las sentencias IF
del algoritmo y las líneas 22, 27, 32, 37 y 42 del programa Java. Como
siempre la salida se hace con sentencias Imprimir (pseudocódigo) y
printf (Java).
3. Elabore un algoritmo y luego un programa en Java que permita calcular
el índice de masa corporal IMC. Para ello debe aplicar la siguiente
fórmula IMC =
Peso
, el peso debe estar expresado en kilogramos y la
Altura2
altura en metros. Una vez obetenido el valor de IMC, se debe usar la
siguiente tabla 5 de clasificación:
Delagadez pronunciada
Delgadez
Normalidad
Gordura
Obesidad
Hombre
Hasta 15
15 – 20
20 – 25
25 – 30
Arriba de 30
Mujer
Hasta 13
13 – 18
18 – 23
23 – 28
Arriba de 28
El algoritmo es el siguiente:
Algoritmo Calcular el índice de masa corporal
Clase IndiceMasaCorporal
1. Método principal
a. Declaraciones
Variables
peso, altura, imc : Real
sexo : Carácter
b. Solicitar peso, estatura, sexo
5
Tabla elaborada según la información que se encuentra en: http://bulimarexia.com.ar/
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca c. Leer peso, altura, sexo
d. Calcular imc = peso / (altura * altura)
e. Imprimir “Indice masa corporal” imc
f. IF sexo == ‘H’ THEN
1. IF imc <= 15 THEN
a. Imprimir “Delgadez pronunciada”
2. ELSE
a. IF imc > 15 AND imc < 20 THEN
1. Imprimir “Delgadez”
b. ELSE
1. IF imc > 20 AND imc < 25 THEN
a. Imprimir “Normalidad”
2. ELSE
a. IF imc > 25 AND imc < 30
THEN
1. Imprimir “Gordura”
b. ELSE
1. IF imc >= 30 THEN
a.
Imprimir
“Obesidad”
2. ENDIF
c. ENDIF
3. ENDIF
c. ENDIF
3. ENDIF
g. ELSE
1. IF imc <= 13 THEN
a. Imprimir “Delgadez pronunciada”
2. ELSE
a. IF imc > 13 AND imc < 18 THEN
1. Imprimir “Delgadez”
b. ELSE
1. IF imc > 18 AND imc < 23 THEN
a. Imprimir “Normalidad”
2. ELSE
a. IF imc > 23 AND imc < 28
THEN
1. Imprimir “Gordura”
b. ELSE
1. IF imc >= 28 THEN
a.
Imprimir
“Obesidad”
2. ENDIF
c. ENDIF
3. ENDIF
c. ENDIF
3. ENDIF
h. ENDIF
2. Fin Método principal
Fin Clase IndiceMasCorporal
Fin
Y el código Java es:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 21 Programa IMC
Análisis:
Recuerde que: para el análisis del código Java todas los números de
líneas hacen referencia a la Ilustración 25.
Para este problema las entradas son el sexo, el peso y la altura. Parte del
proceso es calcular el índice de masa corporal aplicando la fórmula que
se detalla en el planteamiento del problema. Con el valor del imc y el
sexo se debe buscar el rango al que pertenece ese valor, según el sexo.
La salida es la clasificación según el imc y el sexo.
Probablemente, la tarea más compleja es determinar el rango al que
pertenece el imc, para ello se utilizó una serie de sentencias IF-THENELSE.
La primera sentencia IF hace la clasificación según el sexo, los siguientes
IF evaluan el rango al cual pertenece imc, algunos rangos tienen un
límite mínimo y otro máximo en ellos se usa el operador lógico Y (AND
(Algoritmo), && (Java)) para construir la condición.
4. Elabore un algoritmo y luego un programa en Java que calcule la edad
de una persona. La edad debe expresarse en años, meses y días.
El algoritmo es el siguiente:
Algoritmo CALCULAR EDAD
Clase Edad
1. Método principal
a. Declaraciones
Variables
añoAc, mesAc, diaAc : Entero
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca añoNa, mesNa, diaNa: Entero
añosE, mesesE, diasE: Entero
b. Solicitar año, mes y día actual
c. Leer añoAc, mesAc, diaAc
d. Solicitar año, mes y día de nacimiento
e. Leer añoNa, mesNa, diaNace
f. IF añoNa <= añoAc THEN
1. IF diaAc < diaNa THEN
a. Calcular diaAc = diaAc + 30
b. Calcular mesAc = mesAc -1
2. ENDIF
3. IF mesAc < mesNa THEN
a. Calcular mesAc = mesAc + 12
b. mesAc = mesAc – 1
4. ENDIF
g. Calcular añosE = añosAc – añoNa;
h. Calcular mesesE = mesAc – mesNa
i. Calcular diasE = diasAc – diaNa
j. Imprimir añosE, mesesE, diasE
2. ELSE
1. Imprimir “Datos incorrectos”
3. END FI
4. Fin Clase IMC
FIN
El programa en Java que se muestra a continuación usa algunas
sentencias adicionales ya que no lee la fecha actual, sino que la obtiene
del computador. Las líneas 8,9, 18 y el grupo 25-27 se usan para
obtener la fecha del computador. En Java por alguna razón los meses
inician desde 0 por eso en la línea 26 se agrega una unidad.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 22 Programa en Java que calcula la edad de una persona
Análisis:
No olvide que: para el análisis del código Java todas los números de
líneas hacen referencia a la Ilustración 26.
Para este problema las entradas, en el algoritmo, son las fechas de
nacimiento y actual, mientras que para el programa en Java, es
únicamente la fecha de nacimiento ya que como se explico
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca anteriormente la fecha actual se obtiene del computador.
El proceso consiste en restar de la fecha actual la fecha de nacimiento;
restando en el siguiente orden: día actual menos día de nacimiento, mes
actual menos mes de nacimiento y año actual menos año de nacimiento.
Las restas se deben hacer siempre que sea posible, es decir cuando el
minuendo (valores de fecha actual) es mayor que el sustraendo (valores
de fecha de nacimiento). En caso de no ser posible (sustraendo mayor al
minuendo) se debe actuar así:
- En caso de no ser posible la resta en los días se debe pedir 30 días y
sumarlos al día actual, como se pidió 30 días (es decir 1 mes) se debe
disminuir en una unidad al mes actual. Vea el punto 1. bajo f. del
algoritmo y las líneas 37-40 del código Java .
- En el caso de los meses se debe pedir 12 meses al año actual,
sumarlos al mes actual y disminuir en una unidad al año actual. Vea el
punto 3. bajo f. del pseudocódigo y las líneas 41-44 del código Java.
Tanto en el algoritmo como en el programa Java, primero se evalúa la
factibilidad de realizar la resta, sino es así se ajustan los valores como
indica el párrafo anterior; para luego sí realizar las restas puntos del g. al
h. (algoritmo) y líneas 45 – 47 (Java).
La salida es la edad de la persona. El algoritmo y programa también
verifican que año de nacimiento sea como máximo igual al año actual (IF
del punto f. del algoritmo – Línea 36 del código Java).
5. Elaborar un algoritmo que permita
la conversión
de un
número decimal a los diferentes tipos de sistemas numéricos
binario, octal, hexadecimal.
Algoritmo CONVERSION TIPOS
Clase Secuenciaación1.
1. Método Principal
a. Declaraciones
Variables
i: entera
hex,bin,octal: Cadena
b. Solicitar numero en Decimal
c. Leer i
d. Calcular hex= valor hexadecimal de i;
e. Calcular bin= valor binario de i;
f. Calcular octal= valor octal de i
g. Imprimir el valor hex, bin, octal
2. Fin del Método principal
Fin de la Clase
Código Java:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 23 Programa en Java que transforma entre sistemas de numeración
Análisis
Tenga presente que: para el análisis del código Java todas los números
de líneas hacen referencia a la Ilustración 27.
Para este problema la entrada en el programa es un número en el
sistema decimal (base 10) y la salida es la representación de dicho
número en los sistemas numéricos de bases 2, 8 y 16.
El proceso es sencillo simplemente definimos tres variables de tipo
String (hex, bin y octal) que van a contener los valores luego de la
conversión.
Observe
en
las
líneas,
15,
16,
17
se
utiliza
la
clase
Interger.toHexString
ó
Integer.toBinaryString
ó
Integer.toOctalString, para convertir un número de base decimal a los
diferentes sistemas numéricos. Es importante observar el parámetro
entero i, que es el valor que ingreso el usuario y utilizado para la
conversión.
Una vez almacenado los valores hex, bin y octal se procede a presentar
los resultados de estas cadenas, las mismas que corresponden a el
equivalente de i en los diferentes sistemas numéricos.
En este capítulo hemos analizado las estructuras de control conocidas como
secuenciación y selección. Aprendimos cómo trabaja la secuenciación, su
utilidad y la necesidad de otras estructuras de control como la selección.
También examinamos las diferentes formas de estructuras de selección,
detallando y dando ciertas recomendaciones sobre cada una de ellas. Además
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca revisamos como se puede formar expresiones complejas a través de la
concatenación de operadores relacionales y lógicos. Y finalmente desarrollamos
algunos ejercicios que ayudan a aclarar los temas expuestos.
Con el afán de que incremente sus conocimientos y aclare algunos de los
conceptos que se expresaron en este capítulo, los invitamos a revisar el
siguiente material adicional.
Material adicional:
En el CD que se adjuntó en la guía didáctica, puede revisar
(programación-en-java-i\Contenidos\LecturaObligatoria\)
los
archivos:
2-estructuradeunprogramaenjava.pdf
3-tiposprimitivosdedato.pdf
4-operadores.pdf – A excepción del punto 4.8
5-sentenciasselectivasocondicionales.pdf
Para determinar el nivel de comprensión de la materia que hasta el momento
ha alcanzado, les recomendamos desarrollar la siguiente autoevaluación.
Recuerde que las respuestas a todas las autoevaluaciones las puede encontrar
en las secciones finales de la guía didáctica.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).

Documentos relacionados