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

Algoritmos y Programación – Ing.

Haybert Escobedo Neyra 2013

Algoritmos y Programación

Ing. Haybert Escobedo Neyra

(Trujillo-Perú, 2013)

ÍNDICE

1. PRESENTACIÓN ................................................................................................................. 2
2. CONCEPTOS BÁSICOS ........................................................................................................ 3
2. INTRODUCCIÓN A LA PROGRAMACIÓN ........................................................................... 17
3. REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES ........................ 38
4. ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES ............................................................ 60
5. ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS .................................................... 77
6. MÉTODOS TIPO VOID ...................................................................................................... 89
7. MÉTODOS CON VALOR DE RETORNO............................................................................... 99
8. CONTADORES Y ACUMULADORES ................................................................................. 109
9. ESTRUCTURAS DE REPETICION WHILE – DO WHILE ........................................................ 123
10. ESTRUCTURAS DE SELECCIÓN MULTIPLES .................................................................. 139
11. ESTRUCTURAS DE REPETICION WHILE – DO WHILE .................................................... 154
12. BIBLIOGRAFIA ............................................................................................................ 170

ÍNDICE Página 1
Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

1. PRESENTACIÓN
El texto universitario de Algoritmos y Programación en NetBeans tiene la finalidad de
ser un texto de apoyo en el aprendizaje de los algoritmos y programación mediante las
estructuras básicas de control para:

 Estructuras Secuenciales
 Estructuras Selectivas
 Estructuras Repetitivas

Encontrarán información de cómo representar los algoritmos mediante los diagramas


de flujo, diagrama estructurado (Nassi-Schneiderman) y el pseudocódigo. Aplicarán las
estructuras básicas en los algoritmos para la resolución de problemas abstractos y
reales.

Aprenderán a programar desde cero mediante el lenguaje de programación Java, para


ello aprenderán a dominar el IDE NetBeans donde se crearán los programas de los
algoritmos realizados así como los problemas planteados, así mismo los algoritmos
podrán ser verificados utilizando la herramienta PSeInt

PRESENTACIÓN Página 2
Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

2. CONCEPTOS BÁSICOS

TEMARIO

 Representación de la Información
 Tipos de Programas
 Lenguaje de Programación
 Definición de Algoritmos
 El Proceso de un algoritmo
 Verificación del algoritmo o prueba de escritorio
 Lenguaje Java
 Etapas De Desarrollo De Un Programa Java
 Tipos de Programas en Java
 Software para el desarrollo de programas Java.

CONCEPTOS BÁSICOS Página 3


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

1. REPRESENTACIÓN DE LA INFORMACIÓN
a. Dato e Información

Son dos términos que suelen confundirse. Se consideran datos a toda entrada de
información a una computadora. Estos datos pueden ser administrativos, científicos,
comerciales, etc. son elementos primitivos, de los cuales a través del procesamiento se
obtiene la información. Presupuesto, ámbito y plazos

b. Proceso Computacional

El computador es una máquina cuya función básica es llevar a cabo operaciones de


cómputo (transformaciones) sobre elementos de datos. Como todas las máquinas, el
computador recibe una “materia prima” (datos de entrada), la transforma a través de un
proceso y devuelve un “producto” (datos de salida)

El proceso computacional es análogo a una función matemática, con R el rango (datos


de salida), D el dominio (datos de entrada) y t() la transformación.

R = t(D)

Sin embargo el computador posee una característica primordial que lo diferencia:

El proceso que define la transformación efectuada sobre los datos de entrada puede ser
especificado por el usuario; es por ello que se dice que el computador es programable.

c. Software

Sabemos que el ordenador se compone de un conjunto de componentes conectados


entre sí. Para que el ordenador funcione es necesario que haya unos programas que le
digan paso a paso qué debe hacer.

El software es el componente intangible de todo sistema informático y está formado por


una colección de reglas e instrucciones que permiten establecer la relación entre el
usuario y la máquina.

CONCEPTOS BÁSICOS Página 4


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

d. Programas

Es una transformación específica, definida y expresada de forma que pueda ser utilizada
por el computador.

Como primera aproximación, puede definirse programa como un conjunto de pasos,


especificados por el usuario en un lenguaje comprensible para la máquina (lenguaje de
programación), que definen el proceso que se efectúa sobre los datos; de esto se
concluye, que al ejecutarse el programa, se lleva a cabo un proceso computacional.

2. TIPOS DE PROGRAMA
 Sistema operativo,
 Lenguajes de programación
 Programas de aplicación.

Ilustración 1: Tipos de Programas

Programa Fuente

El concepto de "Programa Fuente" se relaciona de forma directa con los lenguajes de


programación y las aplicaciones creadas, porque precisamente "Programa Fuente" describe
el argumento escrito por el programador que da inicio al desarrollo de su obra de software.

Programa Objeto

Es aquel programa que resulta de la traducción del lenguaje fuente (lenguaje entendible
por el ser humano) a un lenguaje máquina, es decir a aquel que es inteligible por la
computadora. Esta tarea es llevada a cabo por los programas intérpretes o compiladores

CONCEPTOS BÁSICOS Página 5


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Los intérpretes, realizan la traducción de manera tal que el lenguaje obtenido puede
ser ejecutado directamente por la máquina.

En cuanto a los compiladores, no realizan la traducción directa para que pueda ser
ejecutable por la computadora sino que debe utilizar también un programa montador
o enlazador, conocido como linker, que es el que realiza la acción final que permite
que el programa objeto pueda ser ejecutado.

3. Lenguajes de Programación

Se usan para poder dar a un computador las diferentes órdenes que llegan a componer un
algoritmo. Según su nivel de abstracción los lenguajes de programación se pueden
clasificar:

 Lenguajes de bajo nivel, son aquellos que se acercan al funcionamiento de la


computadora. El lenguaje de más bajo nivel es por excelencia es el código máquina, a
éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan
con los registros de memoria de la computadora de forma directa.

 Lenguajes de alto nivel, son normalmente fáciles de aprender porque están formados
por elementos de lenguajes naturales, como el inglés. Algunos ejemplos de estos tipos
de lenguajes son. Visual Basic, Java, Power Builder, etc.

 Lenguajes de medio nivel, hay lenguajes de programación que son considerados por los
expertos lenguajes de medio nivel al tener ciertas características que los acercan a los
lenguajes de bajo nivel, pero teniendo al mismo tiempo, ciertas cualidades que lo hacen
un lenguaje más cercano al humano, por lo tanto de alto nivel. Por ejemplo el lenguaje
C.

CONCEPTOS BÁSICOS Página 6


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 2: Top de Lenguajes de Programación a Febrero 2013

Fuente : TIOBE SOFTWARE

CONCEPTOS BÁSICOS Página 7


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

4. Definición de Algoritmo
 Es un método o conjunto de reglas (sin ambigüedades) que se aplican paso a paso en
forma ordenada para solucionar problemas.
 Se define también como los pasos ordenados que se deben efectuar para realizar un
trabajo o tarea específica.

Ejemplos de Algoritmo
 Diseñar un algoritmo para preparar un litro de limonada:
Inicio
Llenar una jarra con un litro de agua
Exprimir el jugo de 5 limones
Añadir el jugo de limones al agua
Agregar 5 cucharadas de azúcar
Revolver el agua hasta que el azúcar se disuelva completamente
Fin

 Diseñar un algoritmo que permita hallar la suma y el promedio de tres números:


Inicio
Leer número 1, número 2, número 3
Hacer suma = número 1 + número 2 + número 3
Hacer promedio = suma/3
Imprimir suma , promedio
Fin

Algoritmo vs Programa
Recordemos que el término “Algoritmo” se refiere a la secuencia de pasos para resolver un
problema, pero independientemente del lenguaje de programación que se utilice, mientras
que “Programa” se refiere propiamente a la codificación de un algoritmo en un lenguaje de
programación.

CONCEPTOS BÁSICOS Página 8


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Características de un algoritmo
Las características fundamentales que debe cumplir todo algoritmo son:
 Debe ser preciso, es decir debe indicar el orden exacto de la realización de cada
etapa evitando acciones innecesarias.
 Debe estar definido, significa que si se ejecuta un algoritmo 2 o más veces, con los
mismos valores iníciales, se debe obtener el mismo resultado todas las veces.
 Debe ser finito, significa que si se sigue un algoritmo, se debe terminar en algún
momento, es decir, debe tener un número finito de pasos.
 Debe tener un único punto de entrada o inicio y uno de salida o fin.
 Todas las etapas o pasos a seguir son ejecutables

También hay que tener en cuenta en un algoritmo:


 El algoritmo sirve de base para generar un programa, pero no es el programa en sí.
 El algoritmo no es inteligible directamente por el ordenador.
 El mismo algoritmo puede ser implementado de forma distinta en diversos
programas, es decir, dos programadores pueden obtener distintos códigos fuente
a partir del mismo algoritmo.

5. El proceso de un algoritmo

La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida.

Entrada Proceso Salida

La información proporcionada al algoritmo constituye su entrada, el procedimiento


para la solución del problema constituye su proceso y la información producida por
el algoritmo constituye su salida.
A continuación ejemplos para un mejor entendimiento:

CONCEPTOS BÁSICOS Página 9


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo 01:
Leer la base y altura de un paralelogramo. Calcular su área.

Datos de Entrada ---> base y altura


Proceso ---> área = base x altura
Datos de Salida ---> El área del paralelogramo

Ejemplo 02:
Leer el radio de una circunferencia. Calcular su área y longitud.

Datos de Entrada ---> Radio de una circunferencia.


Proceso ---> Área = πr2 y Longitud = 2πr
Datos de Salida ---> El área y longitud de una circunferencia.

6. Verificación del algoritmo o prueba de escritorio

Una vez escrito el algoritmo es necesario asegurarse de que éste realiza las tareas para las
que ha sido diseñado, y que por lo tanto produce el resultado correcto y esperado.

El modo más normal de comprobar un algoritmo es mediante su ejecución manual usando


datos significativos que abarquen todo el posible rango de valores y anotando en una hoja
de papel los valores que van tomando en las diferentes fases, los datos de entrada o
auxiliares y, por último los valores de los resultados. Este proceso se conoce como
prueba del algoritmo o prueba de escritorio.

Haremos una prueba de escritorio de los dos problemas anteriores:


Elementos Ejercicio 01 Ejercicio 02
Datos de entrada r (radio) = 3 Base = 5
π (pi) = 3.14 (Solo tomaremos hasta dos decimales) Altura = 3
Proceso A = πr2 = 3.14 x (3)2 A = base x altura
L = 2πr = 2 x 3.14 x 3 A=5x3
Datos de salida A = 28.26 A = 15
L = 18.84

CONCEPTOS BÁSICOS Página 10


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Métodos de representación de los Algoritmos:


 Diagrama de Flujo (Convencional)
 Pseudocódigo
 Diagrama de flujo estructurado (Nassi-Schneiderman)

7. Lenguaje Java

Java es un lenguaje de programación de alto nivel con el que se pueden escribir programas
de cualquier tipo. Se dice que es un lenguaje de alto nivel porque se asemeja más al
lenguaje humano, a diferencia de los lenguajes de bajo nivel que se asemejan más al
lenguaje de las computadoras (conocidos como lenguajes máquina).

Los programas escritos en Java no son comprensibles en forma directa por el procesador,
por lo que requieren de pasos intermedios de traducción al lenguaje del computador
conocido como lenguaje máquina.

8. Etapas De Desarrollo De Un Programa Java

Para desarrollar un programa en Java sigue las siguientes etapas:

a. Edición

En esta etapa, se escriben las instrucciones del programa usando el lenguaje Java y se
guarda en un archivo cuyo nombre debe terminar con la extensión .java. Así, por
ejemplo, el archivo podría llamarse Saludo.java. A este programa escrito en Java se
denomina código fuente y para escribirlo se puede recurrir a cualquier editor de texto.

b. Compilación

En esta etapa, se compila el código fuente usando el compilador de Java, que es un


programa denominado javac.exe, con lo que se obtiene un nuevo código conocido como
código de bytes, que queda guardado en un archivo con el mismo nombre que el archivo
de código fuente, pero con la extensión .class. Así, si el archivo de código fuente se
denomina Saludo.java, el código de bytes quedará almacenado automáticamente en un
archivo denominado Saludo.class.

CONCEPTOS BÁSICOS Página 11


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

c. Ejecución

En esta etapa, el código de bytes es ejecutado por la Máquina Virtual de Java (JVM,
siglas en inglés de Java Virtual Machine). El código de bytes es el lenguaje de la JVM.
Existe una JVM para cada plataforma (para cada sistema operativo); pero, todas las JVM
pueden ejecutar el mismo código de bytes. Así, el código de bytes es independiente de
la plataforma. Esto hace que los programas Java puedan ser ejecutados en cualquier
máquina que disponga de una JVM. Actualmente, existe una JVM para la mayor parte de
las plataformas, lo que garantiza que los programas Java sean ampliamente portables.

Ilustración 3: Compilación y Ejecución de un Programa en Java

9. Tipos De Programas Java

Java es la base de prácticamente cualquier tipo de aplicación en red y es el estándar


mundial para el desarrollo y entrega de aplicaciones móviles, juegos, contenidos basados
en web y software empresarial.

Con más de 9 millones de desarrolladores alrededor del mundo, Java permite desarrollar e
implementar de forma eficaz emocionantes aplicaciones y servicios. Con herramientas
integrales, un ecosistema maduro y un rendimiento sólido, Java ofrece portabilidad a las
aplicaciones incluso en los entornos más diversos.

CONCEPTOS BÁSICOS Página 12


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Plataformas

Java Platform, Enterprise Edition (Java EE), es el estándar de la industria para la


computación empresarial de Java. Usa el nuevo y liviano perfil web de Java EE 6
para crear aplicaciones web de próxima generación y todo el poder de la
plataforma Java EE 6 para aplicaciones empresariales. Los desarrolladores
aprovechan las mejoras de productividad con más anotaciones, más POJO,
empaque simplificado y menos configuración XML.

Java Platform, Standard Edition (Java SE), está diseñado para permitirle
desarrollar aplicaciones seguras, portátiles y de alto rendimiento para la más
amplia gama posible de plataformas computacionales. Al hacer que las
aplicaciones estén disponibles para entornos heterogéneos, los negocios
pueden aumentar la productividad, la comunicación y la colaboración del
usuario final y así reducir drásticamente el costo de propiedad de las aplicaciones
empresariales y de consumidor.

Java Embedded, cuando busca una mayor selección, protección y potencia,


Java es la opción. Oracle ofrece una amplia gama de soluciones, desde
servidores hasta dispositivos incrustados, para dispositivos con recursos
limitados y sistemas de clase de escritorio. Estas soluciones proporcionan
capacidades de alto rendimiento en tiempo real que le permiten acceder de
forma segura a recursos mientras protege sus datos, para que pueda hacer más con sus
dispositivos.

CONCEPTOS BÁSICOS Página 13


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Java para dispositivos móviles, Java Platform, Micro Edition (Java ME) se usa
para una gran cantidad de desarrolladores Java de teléfonos móviles,
proveedores de telecomunicaciones y OEM para crear productos de funciones
de teléfono alrededor del mundo. Oracle es el proveedor líder de tecnologías
para teléfonos móviles que se encuentran en más de tres mil millones de
dispositivos y contando.

JavaFX, es una plataforma de interfaz de usuario avanzada de Java para


aplicaciones empresariales de negocios y el siguiente paso en la evolución de
Java como una rica plataforma de primer nivel para clientes. Al usar Java en el lado del servidor
y del cliente de las aplicaciones, los desarrolladores pueden disminuir bastante el riesgo al
reducir la complejidad de las soluciones de negocios.

10.Software Para El Desarrollo De Programas Java

Para el desarrollo de programas Java usaremos el siguiente software:

• Java SE Development Kit (JDK), que contiene el compilador, la JVM y a las Librerías del
lenguaje. El JDK fue desarrollado inicialmente por Sun Microsystems y posteriormente
comprado por Oracle, la dirección es http://www.oracle.com/us/sun/index.html

CONCEPTOS BÁSICOS Página 14


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

• NetBeans IDE es un entorno de desarrollo - una herramienta para que los


programadores puedan escribir, compilar, depurar y ejecutar programas. Está escrito
en Java - pero puede servir para cualquier otro lenguaje de programación. Existe
además un número importante de módulos para extender el NetBeans IDE.
NetBeans IDE es un producto libre y gratuito sin restricciones de uso. Puede ser
descargado desde: https://netbeans.org/

CONCEPTOS BÁSICOS Página 15


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

• JCreator LE, que es un Entorno Integrado de Desarrollo (IDE, siglas del inglés
Integrated Development Environment) que permite editar, compilar y ejecutar
programas Java. Para la compilación y ejecución se requiere tener instalado el JDK.
JCreator LE puede ser descargado de la página de Xinox Software cuya dirección es
http://www.jcreator.com
A parte de JCreator LE existen otros Entornos Integrados de Desarrollo profesionales
como JBuilder de Borland, Visual Café de Symantec, Eclipse de IBM, JDeveloper de
Oracle, Visual Age de IBM, etc.

CONCEPTOS BÁSICOS Página 16


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

2. INTRODUCCIÓN A LA PROGRAMACIÓN

TEMARIO

 Identificadores
 Palabras Reservadas
 Tipos de Datos
 Variables
 Variable Primitivas
 Constantes
 Instrucciones
 Literales
 Sentencias de Asignación
 Expresiones

INTRODUCCIÓN A LA PROGRAMACIÓN Página 17


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

1. IDENTIFICADORES

Los identificadores son nombres usados para identificar diversos elementos de programa
como variables, constantes, métodos, clases, etc.
Para crear un identificador deben tenerse en cuenta las siguientes reglas:
 Debe comenzar con una letra, un símbolo de subrayado (_) o un símbolo de dólar
($).
 Los siguientes caracteres pueden ser letras, dígitos, símbolos de subrayado (_) o
símbolos de dólar ($).
 Las mayúsculas y minúsculas se consideran diferentes
 No puede ser una palabra reservada del lenguaje.

Ejemplo:
Son válidos los siguientes identificadores:
edadMaxima
edadmaxima
monto_total
sueldo_bruto
suelbru
$ganancia
nota2
importeCompra

Note que los identificadores edadMaxima y edadmaxima no son iguales dado que M
(mayúscula) no es lo mismo que m (minúscula).

Son inválidos los siguientes identificadores:


1cuenta No puede comenzar con un número
monto total Contiene un carácter invalido intermedio (el espacio en blanco)
premio# Contiene el carácter inválido #
final No puede ser una palabra reservada
continue No puede ser una palabra reservada

INTRODUCCIÓN A LA PROGRAMACIÓN Página 18


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

2. PALABRAS RESERVADAS

Se denominan palabras reservadas a aquellas palabras que tienen un significado especial


dentro del lenguaje y que por lo tanto no pueden ser utilizados para otros propósitos. Así,
una palabra reservada no se puede utilizar como un identificador.

En la tabla que sigue se muestran las 50 palabras reservadas del lenguaje Java. Note que
todas ellas están en minúsculas.

Tabla 1: Palabras reservadas del lenguaje Java

abstract default if private this


boolean do implements protected throw
break double import public throws
byte else instanceof return transient
case extends int short try
catch final interface static void
char finally long strictfp volatile
class float native super while
const for new switch assert
continue goto package synchronized enum

También lo podemos definir como Palabras utilizadas por los algoritmos o lenguajes de
programación para representar sentencias, órdenes, etc.

Ejemplos:
inicio. Fin. si–entonces - sino-mientras.
hacer. desde.

3. TIPOS DE DATOS PRIMITIVOS

Se conocen como tipos de datos primitivos a los tipos de datos que forman parte del núcleo
del lenguaje Java. Existen ocho tipos primitivos que se muestran en la tabla 2

INTRODUCCIÓN A LA PROGRAMACIÓN Página 19


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Tabla 2: Tipos de datos primitivos de java

Dato Tipo Bits Rango


carácter char 16 0 a 65535
byte 8 -128 a 127
entero short 16 -32768 a 32767
int 32 -2147483648 a 2147483647
long 64 -9223372036854775808 a 9223372036854775807
real float 32 -3.4x1038 a -1.4x10-45, 1.4x10-45 a 3.4x1038
double 64 -1.7x10308 a -4.9x10-324, 4.9x10-324 a 1.7x10308
booleano boolea 1 true, false
n
A parte de los tipos primitivos existen otros tipos conocidos como tipos referencia a los que
se conoce también como tipos abstractos o simplemente clases. Para el manejo de cadenas
de caracteres el lenguaje Java dispone del tipo referencia String.

4. VARIABLES

Una variable es una localización de memoria en la que se puede almacenar un valor que
puede cambiar en el transcurso de la ejecución de un programa. Si una variable está
compuesto por dos palabras, éstas pueden ser juntas o unidos por el subrayado bajo ‘ _ ’ .

Nota:
No se deben utilizar como nombres de variables (identificadores) palabras reservadas
del algoritmo o del lenguaje de programación.

Ejemplos:
Nota
Nombre
Apellidos
nota_oral
Apellido_paterno
apellido_materno
Nota1
Contador1
precios
hora
prom
pi

INTRODUCCIÓN A LA PROGRAMACIÓN Página 20


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Los nombres de las variables elegidas deben ser significativos y tener relación con el objeto
que representan, como pueden ser los casos siguientes:

nombre para representar nombres de personas.


precios para representar los precios de diferentes artículos.
notas para representar las notas de una clase.

A continuación se muestra como ejemplos los nombres de variables no adecuados


porque tienen otro significado a lo expresado:

azucar para representar la nota de una clase.


pan para representar la edad de una persona.

5. CONSTANTES

Una constante toma o recibe un valor que no cambia durante el desarrollo del
algoritmo o la ejecución del programa.

6. INSTRUCCIONES

Las instrucciones especifican las operaciones o acciones que deben ser realizadas o
ejecutadas.

7. VARIABLES PRIMITIVAS

Una variable es primitiva si el valor que almacena es de tipo primitivo.

Todas las variables deben ser declaradas antes de ser utilizadas. Para declarar una variable
se usa una sentencia de declaración que en su forma básica tiene el siguiente formato:
tipo nombre;

INTRODUCCIÓN A LA PROGRAMACIÓN Página 21


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Esta forma básica de declaración puede repetirse para cada variable a declarar; sin
embargo, si varias variables comparten el mismo tipo de dato, puede usarse el
siguiente formato:
tipo nombre1, nombre2, ...,nombren;

Ejemplo 1:
int edad;
int hijos;
double sueldo;
double bonificacion;
char letra;
String curso;

Ejemplo 2:
int edad, hijos;
double sueldo, bonificacion;
int a, b, c;

8. LITERALES

Una literal es la representación de un valor en el código fuente del programa.

8.1. Literales enteros

Cualquier valor numérico entero es un literal entero. Los literales enteros se


consideran de tipo int. Para especificar que un literal es de tipo long, debe añadirse,
como sufijo, la letra L ó l.

Por ejemplo:
 Los siguientes literales son de tipo int
12, 34, 0, -50, etc.

 Los siguientes literales son de tipo long


9223372036854775807L, 25L, -1L, etc.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 22


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

8.2. Literales reales

Cualquier valor numérico decimal con parte fraccionaria es un literal real. Los literales
reales se consideran de tipo double. Para especificar que un literal es de tipo float,
debe añadirse, como sufijo, la letra F ó f.

Por ejemplo:
 Los siguientes literales son de tipo double
1.23, 3.456, -2.0, 3.25E+12, 2.7e-5, etc.

 Los siguientes literales son de tipo float


2.75f, -4.567f, 2.0F, 6.73e+2f, etc.

Para representar un literal real en notación científica se usa la letra E ó e para expresar
la potencia de 10.

Por ejemplo:
 3.25E+12 representa a 3.25 x 1012
 2.7E-5 representa a 2.7 x 10-5

El signo + que acompaña al exponente es opcional.

8.3. Literales booleanos

Los únicos literales booleanos son los siguientes:


true, false

8.4. Literales de carácter

Un literal de carácter consiste de un único carácter encerrado dentro de un par de


comillas simples.

'a', '1', '2', '$', etc.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 23


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Una secuencia de escape es un conjunto de caracteres, a continuación hay una lista de


secuencias de escape:
\n -----> Nueva Línea.
\t -----> Tabulador.
\r -----> Retroceso de Carro.
\f -----> Comienzo de Pagina.
\b -----> Borrado a la Izquierda.
\\ -----> El carácter barra inversa ( \ ).
\' -----> El carácter prima simple ( ' ).
\" -----> El carácter prima doble o bi-prima ( " ).

8.5. Literales de Cadena

Un literal de cadena consiste de un conjunto de caracteres encerrados entre comillas


dobles.
 "Hola mundo"
 "Bienvenido a Java"
 "Algoritmos y Programación"
 "abcde123xy"
 "Edad inválida"
 "Arriba Alianza Lima"

9. SENTENCIAS DE ASIGNACION

Una sentencia de asignación se utiliza para asignar (almacenar) un valor a una variable.
En una sentencia de asignación el valor situado a la derecha del signo igual se almacena en
la variable situada a la izquierda del signo igual.

Una sentencia de asignación tiene la siguiente forma:

variable = expresión;

Donde expresión puede ser una variable, un literal o una combinación de variables, literales
y operadores. La sentencia de asignación almacena en variable el valor de la expresión;
para esto se requiere que expresión y variable tengan el mismo tipo de dato.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 24


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Notas
o La asignación tiene carácter destructivo. Esto es, la variable que recibe la
asignación pierde su valor actual de forma irrecuperable
 Una variable de tipo double puede recibir la asignación de un valor de tipo int. Esta
es una excepción a la regla. En ese caso el valor de tipo int se convierte
automáticamente al tipo double antes de ser asignado.
o Es un error de sintáxis tratar de asignar un valor de tipo double a una variable de
tipo int.

Ejemplo:

// Declara las variables p, q y r


int p, q, r;

// Asigna el valor 2 a la variable p


p = 2; p 2

// Asigna una copia del valor de p a la variable q


q = p; q 2

// Evalúa el valor de la expresión 2*p + q a la variable r


r = 2*p + q; r 6

INTRODUCCIÓN A LA PROGRAMACIÓN Página 25


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.EXPRESIONES ARITMÉTICAS

Una expresión aritmética es una combinación de variables, literales y operadores


aritméticos.

10.1. Operadores Aritméticos

En la tabla que sigue se muestran los operadores aritméticos del lenguaje Java.

Tabla 3: Operadores aritméticos

Operador Significado Ejemplo Resultado


- Resta a-b Resta de a y b
+ Suma a+b Suma de a y b
* Multiplicación a*b Producto de a por b
/ División Real a/b Cociente de a entre b
% Modulo (Resto o Residuo) a%b Residuo de a entre b
Exponenciación a^b Exponencial de ‘a’ a la ‘b’
div División Entera adivb Cociente entero de a entre b

Los operadores aritméticos pueden utilizarse con tipos enteros y reales. Si ambos
operandos son enteros, el resultado es un entero; si alguno de ellos es real, el
resultado es real.

Ejemplo:
2+5 produce el valor 7
2.0 + 5 produce el valor 7.0
2 + 5.0 produce el valor 7.0
2.0 + produce el valor 7.0
10/4
5.0 produce el valor 2
10/4.0 produce el valor 2.5
10.0/4 produce el valor 2.5
10.0/4. produce el valor 2.5
15/2 produce el valor 7
0
15%2 produce el valor 1
4/10 produce el valor 0
4%10 produce el valor 4

INTRODUCCIÓN A LA PROGRAMACIÓN Página 26


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.2. Reglas de jerarquía de los operadores aritméticos

Cuando una expresión aritmética tiene más de un operador aritmético, el orden de


aplicación de los operadores sigue un orden preciso determinado por las reglas
jerarquía de los operadores aritméticos que se muestran en la siguiente tabla:

Tabla 4: Jerarquía de los operadores aritméticos

Operador Precedencia
() Se evalúan en primer lugar.
(^) Se evalúan en segundo lugar.
* / Se evalúan en tercer lugar.
%, div Se evalúan en quinto lugar.
+- Se evalúan al último.

Si existen paréntesis anidados, se evalúa primero la expresión en el par más interno. Si


varios operadores o paréntesis tienen la misma precedencia, es decir, están en el
mismo nivel de jerarquía, la evaluación será de izquierda a derecha.

Ejemplo1:
¿Cuál es el resultado de las siguientes expresiones?

a) 15 + 9 * 2 – 6 * 2 ^ 2
b) -8 / 4 * 6 + 3 ^ 2 * (10 / 5)

Solución

INTRODUCCIÓN A LA PROGRAMACIÓN Página 27


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo2:
Escriba en Java las siguientes expresiones algebraicas:
a.

b.

c.

Solución

a. e = a*a + 3*b*c + 2;

c. z = (a+b+2)/(a*a+1) + 2*a*b;

d. prom = (n1+n2+n3+n4)/4;

Ejercicio de Clases
Convertir en expresiones aritméticas algorítmicas las siguientes expresiones:

a) 7 ( a + b )

b) 8x + 9y + 3z

c) a2 + 2a – 3

d)
x2 – y 2

e) p + q
r+s
t

f) a (cd)
b

INTRODUCCIÓN A LA PROGRAMACIÓN Página 28


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

División entera (div)


Es la acción de dividir dos números enteros uno viene hacer el dividendo y el otro el
divisor, el resultado del operador div es el valor del cociente. En esta división no es de
mucha importancia el residuo. Recuerden que para utilizar el div solo se aplica a
divisiones de números enteros, veamos el siguiente ejemplo:

Ejemplo:
9 div 2 = 4

Reglas de la división real y entera:


Los operandos pueden ser enteros (E) o reales(R).

Residuo (% o mod)
El operador mod se utiliza para obtener el residuo o resto de una división entera. Igual
que para el operador div, para poder hallar el residuo de una división utilizando
el operador mod, los operandos deben ser exclusivamente enteros.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 29


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Reglas del residuo:


Residuo
E mod E = E
E mod R = No Válido
R mod E = No Válido
R mod R = No Válido

Ejemplos:
a. 15 mod 6 = 3 b. 14 mod 2 = 0 c. 19 mod 3 = 1
d. 7 mod 9 = 7 e. 3 mod 3 = 0 f. 2 mod 5 = 2

10.3. Métodos matemáticos

En la siguiente tabla se listan algunos métodos matemáticos del lenguaje Java:

Álgebra Método Java


nm Math.pow(n, m)

√ Math.sqrt(n)

Donde n y m pueden ser de tipo int o de tipo double; pero el resultado en ambos casos
es de tipo double.

Ejemplo:
Escriba en Java las siguientes expresiones algebraicas:


a. ( )

( )
b.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 30


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Solución:
a. e = Math.pow(a,7) + Math.pow(a + b * b,4) + Math.sqrt(2 + b)/(a * a + b * b);

b. e = Math.pow(a + Math.pow(b,7),5)/Math.pow(a + b * b,1/3.0);

10.4. EXPRESIONES LÓGICAS

Una expresión lógica es una expresión que solo puede tomar dos valores:
verdad y falso. Las expresiones lógicas se forman combinando constantes
lógicas, variables lógicas y otras expresiones lógicas, utilizando los operadores
relacionales (de relación o comparación) y los operadores lógicos not, and y or.

Operadores de relación
Permiten realizar comparaciones de valores de tipo numérico o carácter. Los
operadores de relación sirven para expresar las condiciones en los algoritmos. El
resultado de las operaciones de comparación será verdadero o falso.

Tabla 5: Operadores de Relación

Operadores de Relación
Significado Operador Algebraico Operador Algorítmico
Menor que < <
Mayor que > >
Igual que = =
Menor o igual que ≤ <=
Mayor o igual que ≥ >=
Distinto de o ≠ <>
Diferente de

Ejemplos:
Si P = 7 * 2 y Q = 3 ^ 2

INTRODUCCIÓN A LA PROGRAMACIÓN Página 31


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Expresión Lógica Resultado


P>Q Verdad
P<Q Falso
P <> Q Verdad
(P-3) = (Q+2) Verdad
15 < 14 Falso
4+6=9 Falso

Para realizar comparaciones de datos tipo carácter, se requiere una secuencia de


ordenación de los caracteres, similar al orden creciente o decreciente. Esta ordenación
suele ser alfabética, tanto mayúsculas como minúsculas, y numérica, considerándolas
de modo independiente.

A continuación se mostrarán los caracteres situados en el código ASCII en orden


creciente: Los caracteres que representan a los dígitos.
’0’ <’1’ , ’1’ < ’2’ , ………………, ’8’ < ’9’

Las letras mayúsculas A a Z siguen el orden alfabético.


’A’ < ’B’ , ’B’ < ’C’ , ………………..., ’Y’ < ’Z’

Las letras minúsculas, siguen el mismo criterio alfabético.


’a’ < ’b’ , ’b’ < ’c’ , ………………….., ’y’ < ’z’

Nota
Para tener completa seguridad en la ordenación de los caracteres, será preciso
consultar el código de caracteres de su computadora, normalmente el ASCII
(American Standar Code for Information Interchange) o bien el EBCDIC (Extended
Binary-Coded Decimal Interchange Code) utilizado en computadoras IBM diferentes a
los modelos PC y PS/2.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 32


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Operadores lógicos
Los operadores lógicos o voléanos son not (no), and (y) y or(o). Las definiciones
de las operaciones no, y, o se resumen en unas tablas conocidas como las tablas de la
verdad.

Tabla 6: Operadores Lógicos

Operador Lógico Expresión Lógica Significado


no (not) no P negación de P
y (and) PyQ conjunción de P y Q
o (or) PoQ disyunción de P o Q

Tabla 7: Tablas de Verdad

Operador ‘No’ Operador ‘Y’ Operador ‘O’


P no P P Q PYQ P Q POQ
V F V V V V V V
F V V F F V F V
F V F F V V
F F F F F F

Nota:
Siendo P y Q expresiones booleanas, V valor verdadero, F valor falso.

Negación = not
Disyunción = and
Conjunción = or

Ejemplos:
o (7 < 12) y (9 < 21) verdad
o (9 > 15) y (3 < 4) falso
o (6 = 41) o (13 > 8) verdad
o (16 > 8) o (2 > 5) verdad
o no(18 > 6) falso

INTRODUCCIÓN A LA PROGRAMACIÓN Página 33


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

11.ACTIVIDADES PROPUESTAS
11.1. Ponga un aspa al costado de los identificadores válidos.

• año nacimiento
• sueldoNeto
• $monto
• peso-máximo
• EDAD_PROMEDIO
• númeroDeEmpleados
• _temperatura
• xy1$$$$$
• 1_abc$$
• volumen_CILINDRO

11.2. Declare variables adecuadas para almacenar los siguientes datos:


a. El área de un círculo.

b. El sexo de una persona.

c. La estación del año.

d. El importe bruto, el importe de descuento y el importe neto de una compra.

e. Tú fecha de cumpleaños.

INTRODUCCIÓN A LA PROGRAMACIÓN Página 34


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

11.3. Escriba las siguientes expresiones algebraicas en el lenguaje Java:

a.

b.

c.

d.

e.

11.4. Escribir las siguientes expresiones algebraicas como expresiones algorítmicas:

INTRODUCCIÓN A LA PROGRAMACIÓN Página 35


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

11.5. Evaluar las siguientes expresiones y realizar el proceso:

a) Para un valor de A = 3 y B = 4:

4*A+8*A/B–B^2

b) Para un valor de M = 3 , N = 4 Y O = 5:

( N – M ) ^ 200 * raiz2 (( M * 12 ) + ( N * 7)) – O * 6 / 15

c) c. Para un valor de P = 3 , Q = 4 , R = 7 y S = 8:

raiz2(( S / Q ) ^ P * 7 – ( cuadrado(R) + (S - R) ))

11.6. Si el valor de A es 6, B es 5 y el valor de C es 2, evaluar las siguientes


expresiones:

a) A * B + B ^ 2 / 4 * C – ( B * C + C / 2 )

b) cuadrado(A + C) - raiz(B * A + 6) * (B * A / C )

c) ((( B + C ) / 2 * A + 10 ) - 3 * B ) + 6 – C

11.7. Si el valor de ‘p’ es 3, ‘q’ es 3 y ‘r’ es 2, evaluar la expresión:

P^q^r

11.8. Obtener el valor de cada una de las siguientes expresiones aritméticas:


a) 11 div 2
b) 26 mod 2
c) 32 div 3
d) 13 mod 3
e) 0 mod 5
f) 15 mod 4
g) 0 div 9

INTRODUCCIÓN A LA PROGRAMACIÓN Página 36


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

h) 6 * 10 – 40 mod 3 * 4 + 9
i) (9 ^ 2 mod 4 + ( 7 * 5 ) div 6) div 2
j) 5 mod 3 * ( 7 div 1 ) - ( 22 div 4 * 2 ) mod 3

11.9. Encontrar el valor de cada una de las siguientes expresiones o


decir si no es una expresión válida.

a) raiz2(15 – 7 + 8 – 3 * 2)
b) 2 mod 3 + 3 div 5 * 7
c) 7 div 3 / 9
d) 9 mod 6 mod 2
e) 9 mod ( 6 mod 2)
f) ( 5 mod 3 ) mod 7
g) (( 9 + 8 ) div 2) / ( 4 * (1 mod 9))
h) ( 23 div 4 ) * ( 8 / 2 + 3 mod 8 )

INTRODUCCIÓN A LA PROGRAMACIÓN Página 37


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

3. REPRESENTACIÓN DE LOS ALGORITMOS Y


ESTRUCTURAS SECUENCIALES

TEMARIO

 Representación gráfica de algoritmos


o Diagrama de flujo
o Diagrama estructurado o n-s
o Pseudocódigo
 Estructuras Básicas de Control
o Estructura Secuencia
 Problemas resueltos para laboratorio en java de estructuras secuenciales

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 38


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

3. REPRESENTACIÓN GRÁFICA DE ALGORITMOS

Para representar un algoritmo se debe utilizar algún método que permita


independizar dicho Algoritmo del lenguaje de programación elegido. Ello permitirá que
un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir
este objetivo se precisa que el algoritmo sea representado gráfica o numéricamente, de
modo que las sucesivas acciones no dependan de la sintaxis de ningún lenguaje de
programación, sino que la descripción pueda servir fácilmente para su transformación en
un programa, es decir, su codificación.

Los métodos usuales para representar un algoritmo son:


 Diagrama de Flujo.
 Diagrama estructurado o N – S (Nassi Schneiderman).
 Pseudocódigo

3.1. DIAGRAMA DE FLUJO

Un diagrama de flujo es una de las técnicas de representación de algoritmos más


antigua y a la vez más utilizada, aunque su empleo ha disminuido considerablemente.
Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar y que
tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas
líneas de flujo, que indican la secuencia en que se deben ejecutar.

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 39


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Los símbolos más utilizados en un diagrama de flujo son:

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 40


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Los símbolos más utilizados en un diagrama de flujo son:


a) inicio/fin.
b) proceso.
c) decisión.
d) conectores.
e) entrada/salida.
f) dirección del flujo.

Primer algoritmo con un diagrama de flujo


Para conocer cómo se resuelve un problema mediante el diagrama de flujo,
resolveremos un ejemplo:

Ejemplo 1:
El diagrama de flujo siguiente representa la resolución de nuestro primer programa
que deduce el área y perímetro de un rectángulo, sabiendo que su base y altura tienen
los valores 8cm y 2cm respectivamente.

Explicación de nuestro primer algoritmo

Lo primero que debemos hacer para realizar un algoritmo, es analizar el problema;


reconocer las variables que representarán a los datos de entrada, dentro del proceso
de cálculo y los datos de salida, que vamos a utilizar, procesar y encontrar.

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 41


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Análisis
Para este ejemplo hemos identificado nuestras variables a trabajar:

base
a = b
Altura
b
. = h
área
c = a
.
Perímetro
d = p
.
.
Todo algoritmo se debe comenzar con un inicio y finalizar con un fin, para ello
se utilizará el símbolo terminal. Para lograr explicar con mayor claridad nuestro
algoritmo, hemos incluido número de línea. Donde la explicación por línea es la
siguiente:

La línea 01, se utiliza el símbolo terminal junto con la palabra inicio que
representa el comienzo del algoritmo.

La línea 02, se utiliza el símbolo proceso donde a las variables b y h se le asignan


los números 8 y 2 respectivamente.

La línea 03, se utiliza el símbolo proceso donde primero se realiza la operación b *


h y segundo, el resultado de esta operación se asigna a la variable a (área).

La línea 04, se utiliza el símbolo conector de página, donde sirve para enlazar dos
partes cualesquiera en la misma página del diagrama. Para poder enlazar los
conectores podemos utilizar números o símbolos diferentes a los utilizados en el
algoritmo.

La línea 05, se utiliza el símbolo proceso donde primero se realiza la operación 2 * (b +


h) y segundo, el resultado de esta operación se asigna a la variable p (perímetro).

La línea 06, se utiliza el símbolo entrada/salida, en este caso este símbolo representa
la salida de la información obtenida por el algoritmo: el área y el perímetro.

La línea 07, se utiliza el símbolo terminal junto con la palabra fin que representa el fin
del algoritmo.

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 42


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Nota:
El diagrama de flujo nos da una idea del orden de ejecución de las actividades
en el tiempo. Primero cargamos los datos de entrada, luego hacemos las operaciones
necesarias y por último mostramos los resultados.

Ejemplo 2:
El diagrama de flujo del ejemplo anterior también se puede llevar acabo sin el uso de
conectores de página o de páginas diferentes, en el siguiente diagrama se muestra
cómo sería. Pero para este ejemplo haremos una variación en nuestro ejemplo. En el
ejemplo 1, los datos de la base y altura eran conocidos 8cm y 2cm. En este ejemplo los
datos de la base y altura, no se conocen y se solicitan para resolver el problema; para
solicitar los datos de entrada utilizaremos el símbolo entrada/salida.

Nota:
En el ejemplo 1, los valores de b y h se conocen, por ello se utiliza el símbolo proceso.
Pero para el ejemplo 2, los valores no se conocen por tanto tienen que ser ingresados,
para realizar ello en algoritmos se utiliza el símbolo entrada/salida.

Para poner en práctica los nuevos conocimientos adquiridos, resolveremos


los siguientes ejemplos:

Ejercicios de autocomprobación de aprendizajes

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 43


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo 3:
Se ingresan por teclado dos números positivos. Calcular la suma, resta,
multiplicación, división real, división entera, residuo y promedio de dichos números.
Reportar los resultados.

Ejemplo 4:
Una tienda de ropa exclusiva compra en Lima 50 pantalones jeans a un costo de S/. 45
y aquí en Trujillo los oferta a S/. 60. ¿Cuánto es la ganancia?

Nota: Hacer uso de un tiempo de 10 minutos para resolver cada ejemplo.


Terminado de hacerlo revisar sus respuestas con la solución que se presentará en la
siguiente sesión.

3.2. DIAGRAMA ESTRUCTURADO O N-S

Se trata de un método de representación de algoritmos en forma de bloque


compacto. Es un diagrama algo similar a los diagramas de flujo (convencionales) en el
que se omiten las flechas, y las figuras que se usan son rectángulos contiguos.

La representación del algoritmo se basa en los siguientes puntos:

 Un programa se representa por un solo diagrama, en el que se incluyen


todas las operaciones a realizar para la resolución del problema. La forma de
conectar una página con la siguiente es similar al método anterior, es decir,
mediante un número o un nombre encerrados en uno de los rectángulos que
componen el algoritmo.
 Todo diagrama comienza con un rectángulo que tiene la palabra inicio y
al último del algoritmo un rectángulo con la palabra fin.
 Las acciones sucesivas se escriben en rectángulos sucesivos.
 En un solo rectángulo se pueden escribir diferentes acciones.
 Un proceso puede ser un subprograma.
 La lectura del diagrama se hace de arriba hacia abajo.

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 44


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

La forma gráfica de representar un algoritmo en diagrama estructurado o N – S es el


siguiente:

Primer algoritmo con un diagrama estructurado o N-S


Para conocer cómo se realiza un diagrama estructurado, resolveremos el ejemplo 1
planteado en la parte de diagrama de flujo:

Como se ve en la solución del ejemplo 1, en este diagrama se utilizan sólo rectángulos.


Si se dan cuenta, en un diagrama estructurado existe un rectángulo de declaración de
variables, donde se colocan las variables que se utilizarán en el algoritmo y a la
vez también podemos inicializar variables con sus valores dados.

A continuación, la solución del ejemplo 2, de la parte de diagrama de flujo:

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 45


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Para poner en práctica los nuevos conocimientos adquiridos, resuelvan los ejemplos 3
y 4 de la parte de diagrama de flujo.

Nota: Hacer uso de un tiempo de 10 minutos para resolver cada ejemplo.


Terminado de hacerlo revisar sus respuestas con la solución que se presentará en la
siguiente sesión.

3.3. PSEUDOCÓDIGO

El pseudocódigo es una herramienta de programación que nació como un


lenguaje en que las instrucciones se escriben en palabras similares al inglés o
español, que facilitan tanto la escritura como la lectura de programas. En esencia el
pseudocódigo se puede definir como un lenguaje de especificación (descripción) de
algoritmos.

La ventaja del pseudocódigo es que en su uso, es decir durante la planificación de un


programa,
el programador se puede concentrar en la lógica y en las estructuras de control, sin
preocuparse por las reglas de un determinado lenguaje de programación.

La escritura del pseudocódigo exige normalmente la identación (sangría en el margen


izquierdo) de diferentes líneas. La línea precedida por // se denomina
comentario, que viene hacer información para el programador o el lector del
programa, y no realiza ninguna instrucción ejecutable. El uso de pseudocódigo se
ha extendido en la comunidad hispana con términos en español como: inicio, fin,
leer, escribir, si_entonces_sino, mientras, fin_mientras, etc.
Estilo de escritura de algoritmos en pseudocódigo
algoritmo nombre_del_programa // cabecera
var // sección de declaraciones
tipo_de_datos : Lista_de_identificadores
const
Lista_de_identificadores = valor
Inicio // cuerpo del programa
Instrucción 1

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 46


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Instrucción 2
Instrucción 3
.
.
.
.
Instrucción n
Fin

Primer algoritmo con un pseudocódigo


Para conocer cómo se realiza un pseudocódigo, resolveremos el mismo ejemplo 1
planteado en la parte de diagrama de flujo:

algoritmo Ejemplo 1
var
entero : b, h, a, p
Inicio
b =8
h =2
a = b * h
p = 2*(b+h)
escribir ( a, p )
fin

Como se ve en esta solución del ejemplo 1, en pseudocódigo, se coloca el nombre del


algoritmo, en la sección de declaración de variables se escriben a la parte izquierda los
tipos de datos y a la derecha las variables que pertenecen a ese tipo de dato. Para este
ejemplo solo tenemos el tipo de dato entero. Se tiene un cuerpo del programa
donde se escriben todas las instrucciones necesarias para resolver el problema.

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 47


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

A continuación la solución del ejemplo 2, de la parte de diagrama de flujo:

algoritmo Ejemplo 2
var
entero : b, h, a, p
Inicio
leer (b)
leer (h)
a = b * h
p = 2*(b+h)
escribir ( a, p )
fin

Para poner en práctica los nuevos conocimientos adquiridos, resolveremos los ejemplos 3 y
4, de la parte de diagrama de flujo.

Nota: Hacer uso de un tiempo de 10 minutos para resolver cada ejemplo. Terminado
de hacerlo revisar sus respuestas con la solución que se presentará en la siguiente sesión.

4. ESTRUCTURAS BÁSICAS DE CONTROL

Un algoritmo o programa puede ser escrito utilizando solamente tres tipos de


estructuras de control, a las cuales se les conocen como estructuras básicas de control, y
son las siguientes:
A. Estructuras Secuenciales.
B. Estructuras Selectivas.
a. Simples (si – entonces - fin_si / if – then – end_if)
b. Dobles (si – entonces – sino – fin_si / if – then – else – end_if)
c. Múltiples

C. Estructuras Repetitivas.
a. Mientras (while)
b. Hacer_Mientras (do - While)
c. Desde / Para (for)

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 48


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

4.1. ESTRUCTURA SECUENCIAL

La estructura secuencial es aquella en la que una instrucción (acción) sigue a otra en


secuencia.
Las tareas a realizar en cada instrucción se suceden de tal modo que la salida
de una es la entrada de la siguiente y así sucesivamente hasta el final del proceso.

La representación gráfica de una estructura secuencial se muestra en las


siguientes ilustraciones en Diagrama de Flujo, Diagrama Estructurado y Pseudocódigo

Ilustración 4: Diagrama de Flujo de una estructura secuencial

Ilustración 5: Diagrama Estructurado de una estructura secuencial

Ilustración 6: Pseudocódigo de una estructura secuencial

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 49


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Para poder conocer cómo se realiza un algoritmo utilizando los métodos para
representar algoritmos, procederemos a realizar tres ejercicios.

EJERCICIOS

1. Escribir un algoritmo que determine el pago por la compra de dos televisores


LCD de 21'' marca SONY, si cada uno cuesta 2 400 soles.
2. Encontrar el valor de la función: x = 3y + z
3. Escribir un algoritmo en el cual se ingresen dos números. Se desea calcular y
mostrar la suma y resta.

Solución de los ejemplos

Ejercicio 01:

Ilustración 7: Diagrama de Flujo del ejercicio 01

Ilustración 8: Diagrama Estructurado del ejercicio 01

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 50


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 9: Pseudocódigo del ejercicio 01

Ejercicio 02:

Ilustración 10: Diagrama de Flujo del ejercicio 02

Ilustración 11: Diagrama Estructurado del ejercicio 02

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 51


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 12: Pseudocódigo del ejercicio 02

Ejercicio 03:

Ilustración 13: Diagrama de Flujo del ejercicio 03

Ilustración 14: Diagrama Estructurado del ejercicio 03

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 52


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 15: Pseudocódigo del ejercicio 03

5. PROBLEMAS RESUELTOS PARA LABORATORIO EN JAVA DE ESTRUCTURAS SECUENCIALES:

5.1. El cálculo del pago mensual de un empleado de una empresa se efectúa de la


siguiente manera: el sueldo básico se calcula en base al número total de horas
trabajadas basado en una tarifa horaria; al sueldo básico, se le aplica una bonificación
del 20% obteniéndose el sueldo bruto; al sueldo bruto, se le aplica un descuento del
10% obteniéndose el sueldo neto. Escriba un programa que calcule e imprima el
sueldo básico, el sueldo bruto y el sueldo neto de un trabajador.

Algoritmo

Inicio

// Declaración de variables
real horasTrab, tarifaHor
real sueldoBas, montoBoni, sueldoBru, montoDesc, sueldoNet

// Entrada de datos
Leer horasTrab, tarifaHor

// Proceso de cálculo
sueldoBas = horasTrab*tarifaHor
montoBoni = 0.20*sueldoBas
sueldoBru = sueldoBas+montoBoni
montoDesc = 0.10*sueldoBru
sueldoNet = sueldoBru-montoDesc

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 53


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

// Salida de resultados
Imprimir sueldoBas, montoBoni, sueldoBru, montoDesc, sueldoNet
Fin

5.2. Escriba un programa que calcule el área total y el volumen de un cilindro. Considere
las siguientes fórmulas: A = 2πr(r+h) y V = πr²h; siendo A el área, V el volumen, r el
radio y h la altura.

Algoritmo

Inicio
// Declaración de variables
real r, h, area, volumen

// Entrada de datos
Leer r, h

// Proceso de cálculo
area = 2*3.1416*r*(r+h)
volumen = 2*3.1416*r*r*h

// Salida de resultados
Imprimir area, volumen
Fin

5.3. René, Verónica y Leyla aportan cantidades de dinero para formar un capital. Diseñe
un programa que determine el capital formado y el porcentaje de dicho capital que
aporta cada una.

Algoritmo

Inicio
// Declaración de variables
real dineRene, dineVero, dineLey, capital, porcRene, porcVero, porcLey

// Entrada de datos
Leer dineRene, dineVero, dineLey

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 54


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

// Halla el capital formado


capital = dineRene + dineVero + dineLey

// Determine los porcentajes de cada capital respecto del total


porcRene = dineRene*100/capital
porcVero = dineVero*100/capital
porcLey = dineLey*100/capital
// Salida de resultados
Imprimir capital, porcRene, porcVero, porcLey
Fin
5.4. Diseñe un algoritmo que lea un número entero de cinco cifras y determine la cifra
central del número. Así, si el número ingresado fuera 45781, la cifra central a mostrar
es 7.

Algoritmo

Inicio
// Declaración de variables
entero numero, centro

// Entrada de datos
Leer numero

// Determina la cifra central


centro = (numero%1000)/100

// Salida de resultados
Imprimir centro
Fin

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 55


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

5.5. Diseñe un algoritmo para repartir una cantidad de dinero a tres personas en forma
proporcional a sus edades. El monto que le corresponde a cada persona se calcula
con la siguiente fórmula:

Algoritmo

Inicio
// Declaración de variables
real montoP1, montoP2, montoP3, montoRepartir
entero edadP1, edadP2, edadP3, sumaEdades

// Entrada de datos
Leer montoRepartir, edadP1, edadP2, edadP3

// Calcula la suma total de edades


sumaEdades = edadP1 + edadP2 + edadP3

// Calcula la cantidad de dinero de cada persona


montoP1 = (edadP1 * montoRepartir) / sumaEdades
montoP2 = (edadP2 * montoRepartir) / sumaEdades
montoP3 = (edadP3 * montoRepartir) / sumaEdades

// Salida de resultados
Imprimir montoP1, montoP2, montoP3
Fin

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 56


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

5.6. Una tienda ha puesto en oferta la venta de un producto ofreciendo un 11% de


descuento sobre el importe de la compra. Diseñe un algoritmo que determine el
importe de la compra, el importe del descuento y el importe a pagar por la compra
de cierta cantidad de unidades del producto.

Algoritmo

Inicio
// Declaración de variables
real precio, importecom, importedes, importepag
entero unidades

// Entrada de datos
Leer precio, unidades

// Cálculo de importes
importecom = unidades*precio
importedes = 0.11*importecom
importepag = importecom – importedes

// Salida de resultados
Imprimir importecom, importedes, importepag
Fin

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 57


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

6. ACTIVIDADES PROPUESTAS
Realice los siguientes ejercicios utilizando los diagramas de flujo, N-S y Pseudocódigo.

6.1. Hallar el área y perímetro de un rombo.


6.2. Hallar el área de un triángulo, circunferencia y trapecio.
6.3. Diseñe un programa que lea la capacidad de un disco duro en gigabytes y lo
convierta a megabytes, a kilobytes y a bytes.
6.4. Una institución social tiene un centro de salud, un comedor infantil, una escuela
infantil y un asilo de ancianos. La institución recibe anualmente una donación que
lo reparte de la siguiente forma: 25% de la donación para la implementación del
centro de salud, 35% de la donación para el comedor infantil, 25% de la donación
para la escuela infantil y el resto para el asilo de ancianos. Diseñe un algoritmo para
efectuar el reparto de la donación.
6.5. Dada la longitud de un cable en metros, diseñe un algoritmo que exprese dicha
longitud en pies y en yardas. Considere los siguientes factores de conversión:
 1 metro = 100 centímetros
 1 pulgada = 2.54 centímetros
 1 yarda = 3 pies
 1 pie = 12 pulgadas
6.6. Se cuenta con tres cantidades de dinero en soles, dólares y marcos,
respectivamente. Diseñe un algoritmo que determine el monto total del dinero en
euros. Considere los siguientes tipos de cambio:
 1 dólar = 3.51 soles
 1 dólar = 1.09 euros
 1 dólar = 2.12 marcos
6.7. Dado un tiempo en segundos, diseñe un algoritmo que exprese dicho tiempo en el
formato HH:MM:SS. Por ejemplo, si el tiempo es 14600 segundos, el algoritmo
deberá mostrar 4:3:20.
6.8. Dado un número natural de 4 cifras, diseñe un algoritmo que determine la suma y
el producto de las cifras del número.
6.9. Dado un número natural de cinco cifras, diseñe un algoritmo que forme un nuevo
número intercambiando las cifras extremas del número dado. Así, por ejemplo, si
se ingresara el número 14567, el número formado sería 74561.

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 58


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

6.10. Un hospital ha recibido una donación especial que será repartida entre las áreas de
Pediatría, Medicina General, Ginecología y Traumatología de la siguiente forma:
• Pediatría: 20% del monto total recibido entre Medicina General y
Ginecología
• Medicina General: 45% de la donación
• Ginecología: 30% de la donación
• Traumatología: lo que resta la donación.
Diseñe un algoritmo que determine cuánto recibirá cada área

6.11. Emplee la ley de Ohm para desarrollar un algoritmo para calcular el voltaje a partir
de los valores de la corriente y la resistencia ingresados por el usuario.

donde: v = voltaje

i = corriente Formula: v = i * r

r = resistencia

6.12. Una alcancía contiene n1 billetes de 200 soles, n2 billetes de 100 soles, n3 billetes
de 50soles, n4 billetes de 20 soles, n5 billetes de 10 soles, n6 monedas de 5 soles,
n7 monedas de 2 soles, n8 monedas de sol, n9 monedas de 50 centavos, n10
monedas de 20 centavos y n11 monedas de 10 centavos. ¿Cuánto dinero hay en la
alcancía expresado en soles y en centavos? n1, n2, n3,…n11 debe ingresar por
teclado.
6.13. Si la alcancía del problema anterior contuviera solamente n monedas de un sol.
¿Cuántos billetes de 200, de 100, de 50, de 20, de 10, contendría? Asimismo
monedas de 5, de 2 y de un sol?

REPRESENTACIÓN DE LOS ALGORITMOS Y ESTRUCTURAS SECUENCIALES Página 59


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

4. ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES

TEMARIO

 Estructuras de Selección
 Operadores Lógicos y Relacionales
 Estructura de Selección Simple
 Estructura de Selección Doble

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 60


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

4. ESTRUCTURAS DE SELECCIÓN

No todos los problemas pueden resolverse empleando estructuras secuenciales. Cuando


hay que tomar una decisión aparecen las estructuras selectivas. En nuestra vida diaria se
nos presentan situaciones donde debemos decidir:

¿Elijo la carrera A o la carrera B?


¿Me pongo este pantalón?
Para ir al trabajo, ¿elijo el camino A o el camino B?
Al cursar una carrera, ¿elijo el turno mañana, tarde o noche?

Las estructuras de selección, se utilizan para tomar decisiones lógicas; de ahí que se
suelen denominar también estructuras condicionales, de decisión o alternativas.

En las estructuras de selección se evalúa una condición y en función del resultado se


realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas.

Las estructuras de selección pueden ser:

 Simples
 Dobles
 Múltiples
 Anidadas

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 61


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

5. OPERADORES LOGICOS Y RELACIONALES

Son operadores que se utilizan para crear condiciones lógicas. Una condición lógica es una
expresión lógica que puede ser verdadera (true) o falsa (false) y puede incluir operadores
aritméticos.

5.1. Operadores relacionales

Los operadores relacionales se utilizan para escribir condiciones que describan la


relación entre dos valores. El conjunto de operadores relacionales en java se muestran
en la Tabla 1.
Tabla 8: Operadores Relacionales

Operador Significado
== Igual a
!= Diferente de
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que

Son operadores que permiten relacionar varias expresiones lógicas. El conjunto de


operadores lógicos se muestra en la tabla 2

Tabla 9: Operadores Lógicos

Operador Significado
|| OR lógico (ó)
&& AND lógico (y)
! NOT lógico (no)

Las tablas de verdad de los operadores lógicos son las mismas de la lógica
matemática, como se muestra en la tabla 3.

Tabla 10: Tabla de verdad de los operadores lógicos

p q p && q p || q !
true true true true false
p

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 62


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

true false false true false


false true false true true
false false false false true

6. ESTRUCTURA SELECTIVA SIMPLE

La estructura selectiva simple ejecuta una determinada acción o acciones cuando se cumple
una determinada condición, es decir, tenemos la opción de realizar una actividad o
varias si la condición es verdadero y si es falso no se realizará ninguna actividad.

La representación gráfica de la estructura selectiva simple en un Diagrama de Flujo


es la siguiente:

Ilustración 16: Diagrama de flujo de la estructura selectiva simple

En la figura anterior se puede observar lo siguiente: el rombo representa la condición. Hay


dos opciones que se pueden tomar. Si la condición es verdadera se sigue el camino del
verdadero, si la condición es falsa se sigue el camino del falso. Por el camino del
verdadero pueden existir varias operaciones, entradas y salidas que se pueden realizar,
inclusive ya veremos que pueden haber otras estructuras condicionales o selectivas.

La representación gráfica de la estructura selectiva simple en el diagrama


estructurado y pseudocódigo son las siguientes:

Ilustración 17: Diagrama estructurado de la estructura selectiva simple

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 63


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 18: Pseudocódigo de la estructura selectiva simple

Ahora pondremos en práctica los nuevos conocimientos adquiridos solucionando el


siguiente ejemplo:

Ejemplo 1:
Ingresar el sueldo de una persona, si supera los S/. 3000 soles, mostrar un mensaje en
pantalla indicando que debe abonar impuestos.

Ilustración 19: Diagrama de flujo del ejemplo 1

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 64


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 20: Diagrama estructurado del ejemplo 1

Ilustración 21: Figura 18. Pseudocódigo del ejemplo 1

Observación del Pseudocódigo


Obsérvese que las palabras del pseudocódigo si y fin_si se alinean verticalmente
identando (sangrando) la instrucción o bloque de instrucciones.

Ejemplo 2:
Realizar un algoritmo que permita el ingreso de un número entero, si es positivo debe
mostrar el mensaje que es un número positivo, elevarlo al cuadrado y mostrar dicho
resultado. Al terminar el algoritmo debe decir ’fin del algoritmo’.

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 65


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 22: Diagrama de Flujo del ejemplo 2

Ilustración 23: Diagrama Estructurado del Ejemplo 02

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 66


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 24: Pseudocódigo del ejemplo 2

7. ESTRUCTURA SELECTIVA SIMPLE

La estructura selectiva doble permite elegir entre dos opciones o alternativas, en


función del cumplimiento de una determinada condición, de tal forma que, si se
cumple, se ejecutan las acciones del primer bloque; si no se cumple, se ejecutan las
acciones del segundo bloque.

La representación gráfica de una estructura selectiva doble en los métodos para


representar a los algoritmos es el siguiente:

Ilustración 25: Diagrama de flujo de la estructura selectiva doble

Ilustración 26: Diagrama estructurado de la estructura selectiva doble

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 67


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 27: Pseudocódigo de la estructura selectiva doble

De acuerdo a la condición podemos realizar actividades por el lado verdadero o por el lado
falso, PERO NUNCA se realizan las actividades de ambos lados al mismo tiempo.

Ahora pondremos en práctica los nuevos conocimientos adquiridos solucionando el


siguiente ejemplo:

Ejemplo 3:
Realizar un algoritmo que lea dos números enteros distintos entre sí y mostrar por
pantalla el mayor y el menor. Al final del algoritmo mostrar también el nombre del creador
del algoritmo.

Ilustración 28: Diagrama de flujo del ejemplo 3

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 68


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 29: Diagrama estructurado del ejemplo 3

Ilustración 30: Pseudocódigo del ejemplo 3

Ejemplo de autoaprendizaje:
Resuelva en diagrama de flujo, estructurado y pseudocódigo.

Ejemplo 4:
Realizar un algoritmo que permita el ingreso de tres notas de un alumno. Calcular la
nota promedio y si el promedio es mayor o igual a 10.5 mostrar un mensaje
“Aprobado” o “Desaprobado”.

Ejemplo 5:

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 69


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Un cobrador de impuestos tiene la meta de cobrar 1000 soles, realiza tres cobranzas; si el
dinero obtenido supera la meta mostrar un mensaje respectivo. Al final del algoritmo
mostrar el monto cobrado.

8. PROBLEMAS RESUELTOS PARA LABORATORIO EN JAVA DE ESTRUCTURAS SECUENCIALES:


8.1. Una tienda vende un producto a precios unitarios que dependen de la cantidad de
unidades adquiridas de acuerdo a la siguiente tabla:

Unidades adquiridas Precio unitario


1a S/. 27.7
26
25a S/. 25.5
51
50a S/. 23.5
76 en 75
adelante S/. 21.5

Adicionalmente, si el cliente adquiere más de 50 unidades la tienda le descuenta el


15% del importe de la compra; en caso contrario, sólo le descuenta el 5%.
Diseñe un programa que determine el importe de la compra, el importe del
descuento y el importe a pagar por la compra de cierta cantidad de unidades del
producto.

Algoritmo
Inicio
// Declaración de variables
entero unidades;
real impcom, impdes, imppag
// Entrada de datos
Leer unidades
// Cálculo del importe de la compra si( unidades >= 1 && unidades <= 25 )
impcom = unidades*27.5
si( unidades >= 26 && unidades <= 50 )
impcom = unidades*25.5
si( unidades >= 51 && unidades <= 75 )
impcom = unidades*27.5
si( unidades >= 76)
impcom = unidades*27.5
// Cálculo del importe del descuento si( unidades > 50 )

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 70


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

impdes = 0.15*impcom
si( unidades <= 50 )
impdes = 0.05*impcom
// Calcula el importe a pagar
imppag = impcom - impdes;
// Salida de resultados
Imprimir impcom, impdes, imppag
Fin
8.2. Los ángulos se clasifican de la siguiente manera:

Magnitud Clasificación
β = 0º Nulo
0º < β < 90º Agudo
β = 90º Recto
90º < β < 180º Obtuso
β = 180º Llano
180º < β < 360º Cóncavo
β = 360º Completo

Diseñe un algoritmo que determine la clasificación de un ángulo dado en grados,


minutos y segundos. Asuma que el ángulo está en el intervalo de 0º a 360º.

Algoritmo
Inicio
// Declaración de variables
entero grados, minutos, segundos
real beta
cadena tipo
// Entrada de datos
Leer grados, minutos, segundos
// Determina el ángulo en grados
beta = grados + minutos/60.0 + segundos/3600.0
// Determina el tipo de ángulo
si( beta == 0 )
tipo = "Nulo"
si( beta > 0 && beta < 90 )
tipo = "Agudo"

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 71


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

si( beta == 90 )
tipo = "Recto"
si( beta > 90 && beta < 180 )
tipo = "Obtuso"
si( beta == 180 )
tipo = "Llano"
si( beta > 180 && beta < 360 )
tipo = "Cóncavo"
si( beta == 360 )
tipo = "Completo"
// Salida de resultados
Imprimir tipo
Fin
8.3. El promedio final de un curso se obtiene en base al promedio simple de tres
prácticas calificadas. Para ayudar a los alumnos, el profesor del curso ha prometido
incrementar en dos puntos la nota de la tercera práctica calificada, si es que esta es
no menor que
10. Diseñe un programa que determine el promedio final de un alumno conociendo
sus tres notas. Considere que la nota máxima es 20.

Algoritmo
Inicio
// Declaración de variables
real p1, p2, p3, promedio
// Entrada de datos
Leer p1, p2, p3
// Si amerita, añade 2 puntos a p3
si( p3 >= 10 ){
p3 = p3 + 2
si( p3 > 20 )
p3 = 20
}
// Determina el promedio
promedio = (p1+p2+p3)/3
// Salida de resultados

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 72


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Imprimir promedio
Fin

8.4. Diseñe un programa que lea un número natural de cuatro cifras y forme el mayor
número posible de dos cifras usando la cifra mayor y la cifra menor del número
ingresado

Algoritmo
Inicio
// Declaración de variables
entero numero, cunid, cdece, ccent, cmill, cmay, cmen, maynum
// Entrada de datos
Leer numero
// Descompone el número en sus cifras
cmill = numero/1000
ccent = numero%1000/100
cdece = numero%1000%100/10
cunid = numero%1000%100%10

// Determina la cifra mayor


cmay = cmill
si(ccent > cmay)
cmay = ccent
si(cdece > cmay)
cmay = cdece
si(cunid > cmay)
cmay = cunid
// Determina la cifra menor
cmen = cmill
si(ccent < cmen)
cmen = ccent
si(cdece < cmen)
cmen = cdece

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 73


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

si(cunid < cmen)


cmen = cunid
// Forma el mayor número posible con las cifras mayor y menor
maynum = cmay*10+cmen
// Salida de resultados
Imprimir may, cmen, maynum
Fin

8.5. En un estacionamiento, se cobra S/. 2.5 por hora o fracción de hora. Dado el tiempo
de estacionamiento de un vehículo expresado en el formato HH:MM, determine el
importe a pagar por concepto de estacionamiento

Algoritmo
Inicio
// Declaración de variables
entero horas, minutos
real importe
// Entrada de datos
Leer horas, minutos
// Si hay una fracción de hora, se cobra una hora adicional
si( minutos > 0 )
horas = horas+1
// Determina el importe a pagar
importe = horas*2.5
// Salida de resultados
Imprimir importe
Fin

9. ACTIVIDADES PROPUESTAS
Realice los siguientes ejercicios utilizando los diagramas de flujo, N-S y Pseudocódigo.

9.1. Una persona realiza 5 compras en un supermercado. Existe la oferta de que si la


compra supera los 550 soles, se le hace un descuento del 10%. Mostrar el monto a
pagar.

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 74


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

9.2. Leer un tiempo en segundos y determinar cuantos minutos hay, Al final del
algoritmo mostrar los segundos sobrantes.
9.3. Realizar un algoritmo que convierta de dólares a soles o de soles a dólares.
9.4. En una autopista se multa a los conductores de vehículos que exceden el límite de
velocidad permitido de acuerdo a la siguiente tabla.

Velocidad (km/h) Mult


Hasta 70 Sin sanción
a
71 a 90 100 euros
91 a 100 140 euros
Más de 100 200 euros

Diseñe un algoritmo que determine cuanto de multa deberá pagar un conductor.

9.5. Una tienda vende un producto a un precio unitario que depende del número de
unidades adquiridas de acuerdo a la siguiente tabla:

Unidades adquiridas Precio unitario


1 a 50 S/. 25.5
51 a 100 S/. 22.5
101 a 150 S/. 20.0
151 en adelante S/. 18.0

Como oferta la tienda ofrece un descuento igual al 15% del importe de la compra si
es que el número de unidades adquiridas es mayor que 50; en caso contrario, sólo
descuenta el 5%.

Diseñe un algoritmo que determine el importe de la compra, el importe del


descuento y el importe a pagar por la compra de cierta cantidad de unidades del
producto.

9.6. Diseñe un programa que lea un número entero del intervalo de 1 a 4,


correspondiente al estado civil de una persona, y determine el nombre del estado
civil. Considere: 1 para soltero, 2 para casado, 3 para viudo y 4 para divorciado.

9.7. Diseñe un programa que lea un número entero del intervalo 1 a 7,


correspondiente a un día de la semana, y determine el nombre del día. Considere:

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 75


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

1 para lunes, 2 para martes, ..., 6 para sábado, 7 para domingo.

9.8. Un curso se evalúa en base a cuatro notas de práctica de las cuales se elimina la
nota menor y se promedian las tres notas más altas. Diseñe un programa que
determine la nota eliminada y el promedio final de un alumno.

9.9. Realizar un algoritmo que calcule el salario semanal de un obrero, el cual se obtiene
de la siguiente manera:
Si trabaja 40 horas o menos se le paga $16 por hora
Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40
horas y $20 por cada hora extra.
9.10. En la empresa Toyota del Perú a los clientes se les ofrece los siguientes descuentos
en base al precio del auto que se quiere comprar.

Auto <= $ 15 000 5%


$ 15 000 < Auto 10%

¿Cuál será la cantidad que pagara una persona por su compra?

9.11. Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se
compran tres camisas o más se aplica un descuento del 20% sobre el total de la
compra y si son menos de tres camisas un descuento del 10%.

9.12. Una empresa calcula el sueldo bruto de sus trabajadores en base a las horas
trabajadas. Hasta 48 horas, se paga una tarifa horaria normal. Para las horas en
exceso sobre 48, se paga un recargo del 15% respecto a la tarifa horaria normal. Por
otro lado, si el sueldo bruto es superior a S/. 1700, se aplica un descuento del 11%.
Diseñe un programa que determine el sueldo bruto, el descuento y el sueldo neto
de un trabajador.

9.13. Dado un número natural de tres cifras, diseñe un algoritmo que determine si el
número es o no capicúa. Un número es capicúa si se lee igual de derecha a
izquierda que de izquierda a derecha. Así, por ejemplo, 363 es capicúa; pero, 356
no lo es.

ESTRUCTURAS DE SELECCIÓN SIMPLES Y DOBLES Página 76


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

5. ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS

TEMARIO

 La Estructura de selección doble encadenada if-else-if.

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 77


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

5. ESTRUCTURAS DE SELECCIÓN DOBLE ENCADENADA

La estructura de selección doble encadenada if...else...if evalúa un conjunto de


condiciones en orden descendente, pasando de una condición a otra, siempre que la
condición anterior sea falsa, y en el momento que encuentre una condición verdadera,
efectúa la acción correspondiente a dicha condición y abandona el resto de la
estructura. La estructura tiene una acción por defecto que se efectúa en el caso que todas
las condiciones sean falsas.

Ilustración 31: Estructura de selección doble en cascada

En la tabla que siguen se muestran el código Java y el pseudocódigo correspondiente a los


estándares de escritura de la estructura if-else-if

Código Java Pseudocódigo

if( condicion1) si( condicion1)


accion1; accion1
else sino
if( condicion2 ) si( condicion2 )
accion2; accion2
else sino
if( condicion3 ) si( condicion3 )
accion3; accion3
. .
. .
else .
if( condición n ) sino
acción n; si( condición n )
ESTRUCTURAS DE SELECCIÓNelse
DOBLES ENCADENADAS acción n Página 78
acción d’efecto; sino
acción d’efecto
Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

En el caso de acciones compuestas, estas deben estar encerradas entre llaves de bloque { }.

6. PROBLEMAS RESUELTOS PARA LABORATORIO EN JAVA DE ESTRUCTURAS DOBLES


ANIDADAS:
6.1. Los ángulos se clasifican de la siguiente manera:

Magnitud Clasificación
β = 0º Nulo
0º < β < 90º Agudo
β = 90º Recto
90º < β < 180º Obtuso
β = 180º Llano
180º < β < 360º Cóncavo
β = 360º Completo

Diseñe un algoritmo que determine la clasificación de un ángulo dado en grados,


minutos y segundos. Asuma que el ángulo está en el intervalo de 0º a 360º.

Algoritmo
Inicio
// Declaración de variables
entero grados, minutos, segundos real beta Cadena tipo
// Entrada de datos
Leer grados, minutos, segundos
// Determina el ángulo en grados
beta = grados + minutos/60.0 + segundos/3600.0
// Determina el tipo de ángulo
si( beta == 0 )
tipo = "Nulo"
sino si(beta < 90 )
tipo = "Agudo"
sino si( beta == 90 )
tipo = "Recto"
sino si( beta < 180 )
tipo = "Obtuso"

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 79


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

sino si( beta == 180 )


tipo = "Llano"
sino si( beta < 360 )
tipo = "Cóncavo"
sino
tipo = "Completo"
// Salida de resultados
Imprimir tipo
Fin
6.2. En la playa de estacionamiento de un centro comercial, cobran una tarifa fija por
hora o fracción de acuerdo a la siguiente tabla:

Día Tarifa
Lunes a Jueves S/. 3.5
Viernes y Sábado S/. 4.5
Domingo S/. 2.5

Cuando un vehículo entra al estacionamiento, se registra la hora de entrada y


al retirarse, se registra la hora de salida, ambas en horas y minutos. Diseñe un
programa que determine cuanto debe pagar un cliente por el estacionamiento de su
vehículo.

Algoritmo

Considerando: dia: 0=Lunes, 1= Martes, ...,6 = Domingo


Inicio
// Declaración de variables
entero h1, m1, h2, m2, dia, horaspag, totalmin
real montopag

// Entrada de datos
Leer h1, m1, h2, m2, dia

// Cálculo de la cantidad de horas a pagar


totalmin = (h2-h1)*60 + (m2-m1)
horaspag = totalmin/60

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 80


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

si( totalmin%60 != 0 )
horaspag = horaspag+1

// Cálculo del monto a pagar


si( dia <= 3 )
montopag = horaspag*3.5
sino si( dia <= 5 )
montopag = 4.5*horaspag
sino
montopag = 2.5*horaspag

// Salida de resultados
Imprimir horaspag, montopag
Fin

6.3. En nuestra universidad, los alumnos están categorizados en cuatro categorías. A


cada categoría le corresponde una pensión mensual distinta dada en la siguiente
tabla:

Categoría Pensión
A S/. 380
B S/. 340
C S/. 300
D S/. 260
E S/. 180
Semestralmente, la universidad efectúa rebajas en las pensiones de sus
estudiantes a partir del segundo ciclo en base al promedio ponderado del
ciclo anterior en porcentajes dados en la tabla siguiente:

Promedio Descuento
0 a13.99 No hay descuento
14.00 a 15.99 10 %
16.00 a 17.99 12 %
18.00 a 20.00 15 %
Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre
su pensión actual y a cuánto asciende su nueva pensión.

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 81


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Algoritmo
Inicio
// Declaración de variables entero categoria
real actualpen, nuevapen, descuento, promedio
// Entrada de datos
Leer categoria, promedio
// Cálculo de la pensión actual
si( categoria == 0 )
actualpen = 550
sino si ( categoria == 1 )
actualpen = 500
sino si ( categoria == 2 )
actualpen = 460
sino
actualpen = 400
// Cálculo del descuento
si( promedio <= 13.99 )
descuento = 0
sino si( promedio <= 15.99 )
descuento = 0.10*actualpen
sino si( promedio <= 17.99 )
descuento = 0.12*actualpen
sino
descuento = 0.15*actualpen
// Cálculo de la nueva pensión
nuevapen = actualpen – descuento
// Salida de resultados
Imprimir actualpen, nuevapen
Fin

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 82


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

6.4. Una empresa de préstamos tiene el siguiente esquema de cobros:

Monto del préstamo (S/.) Número de cuotas


Hasta 5000 2
Más de 5000 hasta 10 000 4
Más de 10000 hasta 15 000 6
Más de 15000 10

Si el monto del préstamo es mayor a S/. 10 000, la empresa cobra 3% de interés


mensual; en caso contrario, cobra 5% de interés mensual.
Dado el monto del préstamo de un cliente, diseñe un programa que determine el
monto de la cuota mensual y el monto del interés total entre todas las cuotas.

Algoritmo
Inicio
// Declaración de variables
real montoprestamo, montointeres, tasainteres, montocuota
entero cuotas
// Entrada de datos
Leer montoprestamo
// Obtención del número de cuotas
si( montoprestamo <= 5000 )
cuotas = 2
sino si( montoprestamo <= 10000 )
cuotas = 4
sino si( montoprestamo <= 15000 )
cuotas = 6
sino
cuotas = 10
// Obtención de la tasa de interés
si( montoprestamo > 10000 )
tasainteres = 0.03
sino
tasainteres = 0.05
// Cálculo del monto del interés total

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 83


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

montointeres = tasainteres*montoprestamo*cuotas

// Cálculo del monto de la cuota


montocuota = (montoprestamo + montointeres)/cuotas

// Salida de resultados
Imprimir cuotas, montocuota, montointeres
Fin

6.5. Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y
rendimiento. En cada caso el empleado recibe un puntaje que va de 1 a 10, de
acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en función a los minutos de tardanza de acuerdo a la
siguiente tabla:

Minutos de tardanza Puntaje


0 10
1a2 8
3a5 6
6a9 4
Más de 9 0

Puntaje por rendimiento:- está en función a la cantidad de observaciones


efectuadas al empleado por no cumplir sus obligaciones de acuerdo a la siguiente
tabla:

Observaciones Puntaje
0 10
efectuadas
1 8
2 5
3 1
Más de 3 0

El puntaje total del empleado es la suma del puntaje por puntualidad más el
puntaje por rendimiento. En base al puntaje total, el empleado recibe una
bonificación anual de acuerdo a la siguiente tabla:

Puntaje total Bonificación


Menos de 11 S/. 2.5 por punto
11 a 13 S/. 5.0 por punto
14 a 16 S/. 7.5 por punto

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 84


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

17 a 19 S/. 10.0 por punto


20 S/. 12.5 por punto

Diseñe un programa que determine el puntaje por puntualidad, el puntaje por


rendimiento, el puntaje total y la bonificación que le corresponden a un empleado
de la empresa.

Algoritmo
Inicio
// Declaración de variables
entero minutosTar, numeroObs, puntajePun, puntajeRen, puntajeTot
real bonificacion
// Entrada de datos
Leer minutosTar, numeroObs
// Determinación del puntaje por puntualidad
si(minutosTar == 0)
puntajePun = 10
sino si(minutosTar <= 2)
puntajePun = 8
sino si(minutosTar <= 5)
puntajePun = 6
sino si(minutosTar <= 9)
puntajePun = 4
sino
puntajePun = 0
// Determinación del puntaje por rendimiento
si(numeroObs == 0)
puntajeRen = 10
sino si(numeroObs == 1)
puntajeRen = 8
sino si(numeroObs == 2)
puntajeRen = 5
sino si(numeroObs == 3)
puntajeRen = 1
sino

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 85


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

puntajeRen = 0
// Determinación del puntaje total
puntajeTot = puntajePun + puntajeRen
// Determinación de la bonificación
si(puntajeTot < 11)
bonificacion = 2.5*puntajeTot
sino si(puntajeTot <= 13)
bonificacion = 5.0*puntajeTot
sino si(puntajeTot <= 16)
bonificacion = 7.5*puntajeTot
sino si(puntajeTot <= 19)
bonificacion = 10.0*puntajeTot
sino
bonificacion = 12.5*puntajeTot
// Salida de resultados
Imprimir puntajePun, puntajeRen, puntajeTot, bonificacion
Fin

7. ACTIVIDADES PROPUESTAS
Realice los siguientes ejercicios utilizando los diagramas de flujo, N-S y Pseudocódigo.

7.1. Diseñe un programa que determine le categoría de un estudiante en base a su


promedio ponderado de acuerdo a la siguiente tabla:

Promedio Categoría
≥ 17 A
≥ 14 pero < 17 B
≥ 12 pero < 14 C
< 12 D

7.2. El índice de masa corporal (IMC) permite medir el grado de sobrepeso u obesidad
de una persona. El IMC de una persona se calcula con la fórmula:

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 86


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Estando el peso en kilogramos y la estatura en metros. En base al valor del IMC, se


obtiene el grado de obesidad de la persona de acuerdo a la tabla adjunta. Diseñe un
programa que determine el grado de obesidad de una persona conociendo su peso
y su estatura.

IMC Grado de obesidad


< 20 Delgado
≥ 20 pero < 25 Normal
≥ 25 pero < 27 Sobrepeso
≥ 27 Obesidad

7.3. Diseñe un programa que lea un número entero en el intervalo de 1 a 4,


correspondiente al estado civil de una persona y determine el nombre del estado
civil. Considere: 1 para soltero, 2 para casado, 3 para viudo y 4 para divorciado. Si el
número no está en el intervalo de 1 a 4, imprima un mensaje de error.

7.4. Diseñar un programa que lea la temperatura promedio de un día e imprima el tipo
de clima correspondiente de acuerdo a la siguiente tabla:

Temperatura Clima
≤ 10 Frío
>10 pero ≤ 20 Nublado
>20 pero ≤ 30 Caluroso
> 30 Trópico

7.5. Una compañía cobra las cuotas mensuales de sus clientes de acuerdo a lo siguiente:
 Si el cliente paga dentro de los primeros diez días del mes, obtiene un
descuento igual al mayor valor entre $5 y el 2% de la cuota.
 Si el cliente paga en los siguientes diez días, no tiene derecho a ningún
descuento; deberá pagar exactamente la suma adeudada.
 Si el cliente paga dentro de los restantes días del mes, tendrá un recargo igual al
mayor valor entre $10 y el 3% de la cuota.

Diseñe un programa que determine cuanto debe pagar un cliente en un mes dado.

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 87


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

7.6. Una empresa calcula el sueldo bruto de sus trabajadores multiplicando las horas
trabajadas por una tarifa horaria que depende de la categoría del trabajador de
acuerdo a la siguiente tabla:

Categoría Tarifa
A S/. 21.0
B S/. 19.5
C S/. 17.0
D S/. 15.5

Por ley, todo trabajador se somete a un porcentaje de descuento del sueldo bruto:
20% si el sueldo bruto es mayor que S/. 2500 y 15% en caso contrario.

Diseñe un programa que determine el sueldo bruto, el descuento y el sueldo neto


que le corresponden a un trabajador de la empresa.

7.7. Diseñe un programa que lea tres números a, b, c y determine si los números fueron
ingresados en orden ascendente, en orden descendente o en desorden.

7.8. Diseñe un programa que lea un número entero y determine si tiene 1, 2, 3, 4 ó más
de 4 dígitos.

7.9. Una empresa registra el sexo, edad y estado civil de sus empleados a través de un
número entero positivo de cuatro cifras de acuerdo a lo siguiente: la primera cifra
de la izquierda representa el estado civil (1 para soltero, 2 para casado, 3 para viudo
y 4 para divorciado), las siguientes dos cifras representan la edad y la tercera cifra
representa el sexo (1 para femenino y 2 para masculino).

Diseñe un programa que determine el estado civil, edad y sexo de un empleado


conociendo el número que empaqueta dicha información.

7.10. En una elección democrática a la presidencia de un club femenino participan


Marylin, Ruth y María. Para ganar la elección se requiere obtener la mitad de los
votos emitidos más uno. En caso de no haber un ganador, pasan a una segunda
vuelta los candidatos que alcanzaron los dos primeros puestos o se anula la
elección, si hay empate entre los tres o, si hay empate por el segundo puesto.

ESTRUCTURAS DE SELECCIÓN DOBLES ENCADENADAS Página 88


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Dados los votos obtenidos por cada candidato, se le pide diseñar un programa que
determine el nombre del candidato ganador o los nombres de los candidatos que
pasan a la segunda vuelta o un mensaje indicando la anulación de la elección.

6. MÉTODOS TIPO VOID

TEMARIO

 Programación modular.
 Variables locales y globales.
 Métodos tipo void.

MÉTODOS TIPO VOID Página 89


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

6. PROGRAMACIÓN MODULAR

La programación modular es una metodología de programación que permite construir un


programa grande descomponiéndolo en pequeños subprogramas o módulos. Para ello se
parte de un módulo principal que se descompone en varios submódulos que son
controlados por el módulo principal. Si la tarea asignada a un módulo es demasiado
compleja este deberá descomponerse en otros módulos más pequeños hasta lograr
módulos que hagan tareas relativamente sencillas. A este proceso de refinamiento sucesivo
se conoce también como la técnica de “divide y vencerás”.

Ilustración 32: Descomposición Modular de un Programa

Las tareas asignadas a los subprogramas pueden ser de diversa índole: entrada, salida,
cálculos, control de otros módulos, etc. Para que un subprograma pueda efectuar su
tarea tiene que ser llamado o invocado por el programa principal o por algún otro módulo
que considere necesario el servicio del subprograma. Una vez que el subprograma termina
su tarea, devuelve el control al punto donde se hizo la llamada. Un subprograma puede
llamar a su vez a otros subprogramas.

Ilustración 33: Programa con diferentes niveles de subprogramas

MÉTODOS TIPO VOID Página 90


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

En el lenguaje Java a los módulos o subprogramas se denominan métodos, mientras que en


el lenguaje algorítmico se denominan subalgoritmos

7. VARIABLES LOCALES Y GLOBALES


7.1. Variables Locales

Una variable local es una variable que se declara en el interior de un método por lo
que su ámbito es el interior del método, es decir, sólo puede ser utilizada dentro del
método donde fue declarada. Este tipo de variable se crea al iniciar la ejecución del
método y se destruye al finalizar. Por otro lado, una variable local se crea vacía, es
decir no recibe ninguna inicialización automática.

7.2. Variables Globales

Una variable global es una variable que se declara dentro del programa, pero en el
exterior de todos los métodos, por lo que su ámbito es el interior de todo el
programa, es decir, puede ser utilizada desde cualquier parte del programa. Este tipo
de variable se crea al iniciar la ejecución del programa y se destruye al finalizar. Por
otro lado, una variable global se inicializa automáticamente: 0 si es de tipo int, 0.0 si
es de tipo double, false si es de tipo bolean, ‘\0’ si es de tipo char y null si es de tipo
String.

8. MÉTODOS TIPO VOID

Un método tipo void es un módulo de programa que puede recibir datos de entrada a
través de variables locales denominadas parámetros; pero, que no retorna ningún
resultado al punto donde es invocado, razón por el que se le conoce también como
método sin valor de retorno. Este tipo de método, al igual que los métodos que retornan un
valor, pueden recibir datos de entrada a través de variables locales al método conocidas
como parámetros.

Los métodos tipo void pueden dividirse a su vez en dos tipos:

8.1. Métodos tipo void sin parámetros.

MÉTODOS TIPO VOID Página 91


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Estos métodos no pueden recibir datos de entrada ni retornar ningún resultado al


punto de su invocación.

Cuando se programa usando métodos se siguen dos etapas.


Primero, el método debe definirse. Esto consiste en crear el método
ubicándolo en alguna parte del programa.
Segundo, el método creado debe ser invocado en el lugar donde se requiera.
Esto consiste en poner el método en ejecución.

Definición
Este tipo de método se define de la siguiente manera:

void nombre(){
Declaración de variables locales
Cuerpo del método
}

Invocación
Este tipo de método se invoca de la siguiente manera:

nombre();
Donde nombre es el nombre del método.

8.2. Métodos tipo void con parámetros.

Estos métodos reciben datos de entrada a través de variables locales al método


denominadas parámetros; pero, igual que en el caso anterior no pueden retornar
ningún resultado al punto de su invocación.

El número de parámetros es variable y depende de las necesidades del método.

MÉTODOS TIPO VOID Página 92


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Definición
Este tipo de método se define de la siguiente manera:

void nombre( tipo1 p1, tipo2 p2, tipo3 p3, . . . ){


Declaración de variables locales
Cuerpo del método
}
Donde:
nombre : Es el nombre del método
p1, p2, p3, ... : Son los nombres de los parámetros
tipo1, tipo2, tipo3, … : Son los tipos de datos de los parámetros

Invocación
Este tipo de método se invoca de la siguiente manera:

nombre(v1, v2, v3, . . . );


Donde:
nombre : Es el nombre del método invocado
v1, v2, v3, ... : Son los valores dados a los parámetros

9. PROBLEMAS PROPUESTOS PARA LABORATORIO EN JAVA DE MÉTODOS VOID:


9.1. En nuestra universidad, los alumnos están categorizados en cinco categorías. A
cada categoría le corresponde una pensión mensual distinta dada en la siguiente
tabla:

Categoría Pensión
A S/. 380
B S/. 340
C S/. 300
D S/. 260
E S/. 180
Semestralmente, la universidad efectúa rebajas en las pensiones de sus
estudiantes a partir del segundo ciclo en base al promedio ponderado del

MÉTODOS TIPO VOID Página 93


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

ciclo anterior en porcentajes dados en la tabla siguiente:

Promedio Descuento
0 a 13.99 No hay descuento
14.00 a 15.99 10 %
16.00 a 17.99 12 %
18.00 a 20.00 15 %
Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre
su pensión actual y a cuánto asciende su nueva pensión.

Declare todas las variables como globales y use métodos tipo void.

Solución

MÉTODOS TIPO VOID Página 94


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

MÉTODOS TIPO VOID Página 95


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

9.2. Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y
rendimiento. En cada caso el empleado recibe un puntaje que va de 1 a 10, de
acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en función a los minutos de tardanza de acuerdo a la
siguiente tabla:

Minutos de tardanza Puntaje


0 10
1a2 8
3a5 6
6a9 4
Más de 9 0

Puntaje por rendimiento:- está en función a la cantidad de observaciones


efectuadas al empleado por no cumplir sus obligaciones de acuerdo a la siguiente
tabla:

Observaciones Puntaje
0 10
efectuadas
1 8
2 5
3 1
Más de 3 0

El puntaje total del empleado es la suma del puntaje por puntualidad más el
puntaje por rendimiento. En base al puntaje total, el empleado recibe una
bonificación anual de acuerdo a la siguiente tabla:

Puntaje total Bonificación


Menos de 11 S/. 2.5 por punto
11 a 13 S/. 5.0 por punto
14 a 16 S/. 7.5 por punto
17 a 19 S/. 10.0 por punto
20 S/. 12.5 por punto

Diseñe un programa que determine el puntaje por puntualidad, el puntaje por


rendimiento, el puntaje total y la bonificación que le corresponden a un empleado
de la empresa.

Declare todas las variables como globales y use métodos tipo void.

MÉTODOS TIPO VOID Página 96


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.ACTIVIDADES PROPUESTAS

Desarrolle los ejercicios utilizando métodos tipo void y considere las variables como
locales o globales según el caso.

10.1. Realice un programa que permita convertir un monto de dinero dado en soles a sus
equivalentes en dólares y euros.

10.2. Diseñe un programa que determine la cantidad de días y el nombre de un mes


conociendo los valores numéricos del mes y del año.

10.3. Una tienda vende tres tipos de productos a los precios unitarios dados en la
siguiente tabla:

Producto Precio
P1 S/. 15.0
P2 S/. 17.5
P3 S/. 20.0

Como oferta la tienda ofrece un regalo de acuerdo a la siguiente tabla:

Unidades adquiridas Regalo


1 a 25 un lapicero
26 a 50 un cuaderno
Más de 50 una agenda

Diseñe un programa que determine el importe a pagar y el regalo para un cliente de


la tienda.

Solución 1:- Declare todas las variables como globales y use métodos tipo void.

Solución 2:- Declare todas las variables como locales y use métodos tipo void.

MÉTODOS TIPO VOID Página 97


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.4. Una empresa calcula el sueldo bruto de sus trabajadores multiplicando las horas
trabajadas por una tarifa horaria que depende de la categoría del trabajador de
acuerdo a la siguiente tabla:

Categoría Tarifa
A S/. 21.0
B S/. 19.5
C S/. 17.0
D S/. 15.5

Por ley, todo trabajador se somete a un porcentaje de descuento del sueldo bruto:

20% si el sueldo bruto es mayor que S/. 2500 y 15% en caso contrario.

Diseñe un programa que determine el sueldo bruto, el descuento y el sueldo neto


que le corresponden a un trabajador de la empresa.

Declare todas las variables como globales y use métodos tipo void diferentes para
cada uno de los cálculos.

MÉTODOS TIPO VOID Página 98


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

7. MÉTODOS CON VALOR DE RETORNO

TEMARIO

 Métodos con valor de retorno

MÉTODOS CON VALOR DE RETORNO Página 99


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

7. MÉTODOS CON VALOR DE RETORNO

Un método con valor de retorno es un módulo de programa que puede recibir datos de
entrada a través de variables locales denominadas parámetros y que retorna un resultado
al punto donde es invocado. Este tipo de método se utiliza para efectuar cualquier tipo de
proceso que produzca un resultado

Estos métodos pueden dividirse a su vez en dos tipos:

7.1. Métodos con valor de retorno, sin parámetros

Este tipo de métodos no reciben datos de entrada; pero, retornan un resultado al


punto donde son invocados.

Definición

Este tipo de método se define de la siguiente manera:

tipo nombre(){
Declaración de variables locales
Cuerpo del método
return valor;
}

Donde:

nombre : Es el nombre del método


valor : Es el valor a ser retornado por el método
tipo : Es el tipo del valor de retorno.

MÉTODOS CON VALOR DE RETORNO Página 100


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Invocación

Este tipo de método se invoca de la siguiente manera:

variable = nombre();

Donde:
variable : Es la variable que recibe el valor retornado por el método.
nombre : Es el nombre del método invocado.

7.2. Métodos con valor de retorno con parámetros

Estos métodos reciben datos de entrada a través de parámetros y retornan un


resultado al punto de su invocación.

Definición
Este tipo de método se define de la siguiente manera:

tipo nombre( tipo1 p1, tipo2 p2, tipo3 p3, . . .){


Declaración de variables locales
Cuerpo del método
return valor;
}

Donde:
nombre : Es el nombre del método
tipo : Es el tipo del valor de retorno.
p1, p2, p3, ... : Son los nombres de los parámetros
tipo1, tipo2, tipo3, … : Son los tipos de datos de los parámetros
valor : Es el valor de retorno

MÉTODOS CON VALOR DE RETORNO Página 101


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Invocación
Este tipo de método se invoca de la siguiente manera:

variable = nombre(v1, v2, v3, …);

Donde:
nombre : Es el nombre del método invocado
variable : Es la variable que recibe el valor de retorno
v1, v2, v3, ... : Son los valores dados a los parámetros

8. PROBLEMAS PROPUESTOS PARA LABORATORIO EN JAVA DE MÉTODOS VOID:


8.1. En nuestra universidad, los alumnos están categorizados en cinco categorías. A
cada categoría le corresponde una pensión mensual distinta dada en la siguiente
tabla:

Categoría Pensión
A S/. 380
B S/. 340
C S/. 300
D S/. 260
E S/. 180
Semestralmente, la universidad efectúa rebajas en las pensiones de sus
estudiantes a partir del segundo ciclo en base al promedio ponderado del
ciclo anterior en porcentajes dados en la tabla siguiente:

Promedio Descuento
0 a 13.99 No hay descuento
14.00 a 15.99 10 %
16.00 a 17.99 12 %
18.00 a 20.00 15 %
Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre
su pensión actual y a cuánto asciende su nueva pensión.

Declare todas las variables como globales y use métodos tipo void.

Solución

MÉTODOS CON VALOR DE RETORNO Página 102


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

MÉTODOS CON VALOR DE RETORNO Página 103


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

MÉTODOS CON VALOR DE RETORNO Página 104


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

8.2. Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y
rendimiento. En cada caso el empleado recibe un puntaje que va de 1 a 10, de
acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en función a los minutos de tardanza de acuerdo a la
siguiente tabla:

Minutos de tardanza Puntaje


0 10
1a2 8
3a5 6
6a9 4
Más de 9 0

Puntaje por rendimiento:- está en función a la cantidad de observaciones


efectuadas al empleado por no cumplir sus obligaciones de acuerdo a la siguiente
tabla:

Observaciones Puntaje
0 10
efectuadas
1 8
2 5
3 1
Más de 3 0

El puntaje total del empleado es la suma del puntaje por puntualidad más el
puntaje por rendimiento. En base al puntaje total, el empleado recibe una
bonificación anual de acuerdo a la siguiente tabla:

Puntaje total Bonificación


Menos de 11 S/. 2.5 por punto
11 a 13 S/. 5.0 por punto
14 a 16 S/. 7.5 por punto
17 a 19 S/. 10.0 por punto
20 S/. 12.5 por punto

Diseñe un programa que determine el puntaje por puntualidad, el puntaje por


rendimiento, el puntaje total y la bonificación que le corresponden a un empleado
de la empresa.

Declare todas las variables como locales y use métodos con valor de retorno para
cada una de las entradas y para cada uno de los cálculos.

MÉTODOS CON VALOR DE RETORNO Página 105


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

MÉTODOS CON VALOR DE RETORNO Página 106


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

9. ACTIVIDADES PROPUESTAS

Declare todas las variables como locales y use métodos con valor de retorno para cada una
de las entradas y para cada uno de los cálculos de los siguientes ejercicios.

9.1. Realice un programa que permita convertir un monto de dinero dado en soles a sus
equivalentes en dólares y euros.

9.2. Diseñe un programa que determine la cantidad de días y el nombre de un mes


conociendo los valores numéricos del mes y del año.

9.3. Una tienda vende tres tipos de productos a los precios unitarios dados en la
siguiente tabla:

Producto Precio
P1 S/. 15.0
P2 S/. 17.5
P3 S/. 20.0

Como oferta la tienda ofrece un regalo de acuerdo a la siguiente tabla:

Unidades adquiridas Regalo


1 a 25 un lapicero
26 a 50 un cuaderno
Más de 50 una agenda

Diseñe un programa que determine el importe a pagar y el regalo para un cliente de


la tienda.

MÉTODOS CON VALOR DE RETORNO Página 107


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

9.4. Una empresa calcula el sueldo bruto de sus trabajadores multiplicando las horas
trabajadas por una tarifa horaria que depende de la categoría del trabajador de
acuerdo a la siguiente tabla:

Categoría Tarifa
A S/. 21.0
B S/. 19.5
C S/. 17.0
D S/. 15.5
Por ley, todo trabajador se somete a un porcentaje de descuento del sueldo bruto:

20% si el sueldo bruto es mayor que S/. 2500 y 15% en caso contrario.

Diseñe un programa que determine el sueldo bruto, el descuento y el sueldo neto


que le corresponden a un trabajador de la empresa.

9.5. En un parque de diversiones un juego consiste en efectuar 20 lanzamientos de una


pelota a uno de cuatro arcos de diferentes tamaños. Por cada gol anotado se recibe
cierta cantidad de puntos de acuerdo a la siguiente tabla:

Arco Puntos por gol


Pequeño 6
Mediano 4
Grande 3
Extra Grande 2

Luego en base al puntaje total obtenido se efectúa un obsequio de acuerdo a la


siguiente tabla:

Puntaje total Obsequio


0a9 Ninguno
10 a 39 Peluche
Más de 39 Reloj

Diseñe un programa que determine el puntaje total obtenido por un jugador y el


premio que le corresponde.

MÉTODOS CON VALOR DE RETORNO Página 108


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

8. CONTADORES Y ACUMULADORES

TEMARIO

 Operadores de incremento y decremento


 Operadores de asignación compleja
 Contadores
 Acumuladores

CONTADORES Y ACUMULADORES Página 109


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

8. OPERADORES DE INCREMENTO Y DECREMENTO

Son operadores que permiten incrementar o decrementar en una unidad el valor de una
variable numérica.
Operador Uso Equivalencia
++ a++; a = a + 1;
-- a--; a = a - 1;

Ejemplos:
// Incrementa en uno el valor de x (Forma 1)
x = x + 1;
// Incrementa en uno el valor de x (Forma 2)
x++;
// Decrementa en 1 el valor de la variable y (Forma 1)
y = y - 1;
// Decrementa en 1 el valor de la variable y (Forma 2)
y--;

9. OPERADORES DE ASIGNACION COMPLEJA

Son operadores que permiten asignar a una variable el valor de la variable mas, menos, por
o entre el valor de otra variable.

Operador Ejemplo Equivalencia


+= a += b; a = a + b;
-= a -= b; a = a – b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;

Ejemplos:
// Incrementa en 2 el valor de la variable z (Forma 1)
z = z + 2;
// Incrementa en 2 el valor de la variable z (Forma 2)
z += 2;
// Decrementa en 5 el valor de la variable m (Forma 1)
m = m – 5;
// Decrementa en 5 el valor de la variable m (Forma 2)
m -= 5;

CONTADORES Y ACUMULADORES Página 110


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.CONTADORES

Un contador es una variable que se utiliza para contar el número de ocurrencias de un


suceso o el número de veces que se cumple una determinada condición.

Por ejemplo, se necesita un contador para determinar:


 El número de veces que se hizo clic en un botón.
 El número de notas ingresadas.
 El número de notas aprobatorias.
 El número de notas desaprobatorias.
 Etc.

Una instrucción de conteo tiene la siguiente forma:


contador = contador +1;

Que puede escribirse también como:


contador++;

Ejemplos:
// Incrementa el número de alumnos aprobados de una sección
aprobados++;

// Incrementa el número de ventas efectuadas en un día


numeroVentasDia++;

11.ACUMULADORES

Un acumulador es una variable que se utiliza para acumular o totalizar cantidades de una
misma especie.

Por ejemplo, se necesita un acumulador para determinar:


 El sueldo total de los empleados de una empresa.
 La edad total de un conjunto de personas.
 La suma de las notas de un alumno.
 Etc.

CONTADORES Y ACUMULADORES Página 111


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Una instrucción de acumulación tiene la siguiente forma:


acumulador = acumulador + cantidad;

Qué puede escribirse también como:


acumulador += cantidad;

Ejemplos:

// Incrementa el monto total vendido


montoTotalVendido += montoVenta;

// Incrementa el sueldo total de los empleados de una empresa


sueldoTotalEmpresa += sueldoEmpleado;

12.PROBLEMAS PROPUESTOS PARA LABORATORIO EN JAVA DE CONTADORES Y


ACUMULADORES:
12.1. Diseñe un programa que permita ingresar, mediante un botón y de uno en uno,
los sueldos de los empleados de una empresa y muestre luego de cada ingreso
la cantidad de sueldos ingresados, el mayor y el menor sueldo ingresado y, el
sueldo promedio.

CONTADORES Y ACUMULADORES Página 112


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

CONTADORES Y ACUMULADORES Página 113


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

CONTADORES Y ACUMULADORES Página 114


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

12.2. En nuestra universidad, los alumnos están categorizados en cinco categorías. A


cada categoría le corresponde una pensión mensual distinta dada en la siguiente
tabla:

Categoría Pensión
A S/. 380
B S/. 340
C S/. 300
D S/. 260
E S/. 180
Semestralmente, la universidad efectúa rebajas en las pensiones de sus
estudiantes a partir del segundo ciclo en base al promedio ponderado del
ciclo anterior en porcentajes dados en la tabla siguiente:

Promedio Descuento
0 a 13.99 No hay descuento
14.00 a 15.99 10 %
16.00 a 17.99 12 %
18.00 a 20.00 15 %
Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre
su pensión actual y a cuánto asciende su nueva pensión.

Declare todas las variables como globales y use métodos tipo void.

Solución

CONTADORES Y ACUMULADORES Página 115


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

CONTADORES Y ACUMULADORES Página 116


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

CONTADORES Y ACUMULADORES Página 117


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

12.3. En un peaje se desea saber cuántos vehículos de cada tipo pasaron por el peaje y
la cantidad total de pasajeros por tipo de vehículo. Los tipos de vehículos a
considerar son: automóvil, camión, camioneta, ómnibus y otros.

12.4. Diseñe un programa para simular el movimiento de un almacén de bolsas de


cemento. Al comenzar la ejecución del programa, inicializar el stock de bolsas de
cemento en 2000 bolsas y la capacidad del almacén en 3500 bolsas. Luego, el
programa permitirá efectuar operaciones de depósito y de retiro, mostrando en
todo momento:
 El stock actual del almacén.
 La capacidad libre del almacén.
 El número de depósitos y de retiros efectuados.
 La cantidad total de bolsas depositadas y retiradas.
 La cantidad máxima de bolsas retiradas y depositadas.
 La cantidad mínima de bolsas retiradas y depositadas.

CONTADORES Y ACUMULADORES Página 118


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

CONTADORES Y ACUMULADORES Página 119


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

13.ACTIVIDADES PROPUESTAS
13.1. Una empresa desarrolladora de software ha puesto a la venta licencias de su
programa de edición: Video Edit 2.0 a los siguientes costos unitarios:

Licencia Costo
Cobre $ 510
Bronze $ 1500
Silver $ 3100
Gold $ 4500

Diseñe un programa que permita ingresar por cada venta el tipo de licencia y el
número de licencias y muestre luego de cada venta:

o El importe a pagar para la venta efectuada.


o El importe total recaudado de cada tipo de licencia.
o El número de licencias vendidas de cada tipo de licencia.
o El número de ventas efectuadas de cada tipo de licencia.

13.2. Diseñe un programa que permita ingresar de una en una las edades de un conjunto
de personas y muestre luego de cada ingreso:
o El número de personas mayores de edad.
o El número de personas menores de edad.
o La mayor edad ingresada.
o La menor edad ingresada.

Declare como globales a las variables absolutamente necesarias.

13.3. Diseñe un programa que permita registrar una donación para uno de tres centros
de ayuda social: un comedor de niños, una posta médica o una escuela infantil. El
programa mostrará luego de cada donación:

o El número de donantes por cada centro de ayuda social.


o El monto total donado por cada centro de ayuda social.

CONTADORES Y ACUMULADORES Página 120


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Centro Número de donantes Monto total donado

Comedor 20 4500.0
Posta 10 1200.0
Escuela 80 5750.5

Declare como globales a las variables absolutamente necesarias.

13.4. Diseñe un programa para encuestar a un grupo de personas sobre sus


preferencias en bebidas gaseosas entre: Pepsi Cola, Coca Cola y Fanta. La empresa
encuestadora desea saber lo siguiente:

o Cuántas personas, entre varones y mujeres, prefieren cada tipo de gaseosa.


o Cuántos varones prefieren cada tipo de gaseosa.
o Cuántas mujeres prefieren cada tipo de gaseosa.

Gaseosa Varones Mujeres Total

Pepsi 46 60 106
Coca 80 50 130
Fanta 100 67 167

Declare como globales a las variables absolutamente necesarias.

13.5. Un hotel turístico tiene tres tipos de habitaciones, cuyos costos por día se dan en la
tabla adjunta. Como oferta, el hotel ofrece un descuento del 15% del importe bruto
para más de 5 días de hospedaje y 10% en caso contrario. Diseñe un programa que
determine el importe bruto, el importe del descuento y el importe a pagar por
parte de un cliente. Además, el programa debe mostrar información actualizada
sobre el número de clientes por tipo de habitación y el importe total pagado para
los clientes ingresados hasta el momento.

Categoría Costo por día


A S/. 90
B S/. 80
C S/. 70

El reporte será como el siguiente:

CONTADORES Y ACUMULADORES Página 121


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Importe bruto : S/. 640


Importe de descuento : S/. 96
Importe a pagar : S/. 544
Importe total pagado : S/. 35867
Clientes habitación A: 12
Clientes habitación B: 8
Clientes habitación C: 15

Declare como globales a las variables absolutamente necesarias.

CONTADORES Y ACUMULADORES Página 122


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

9. ESTRUCTURAS DE REPETICION WHILE – DO WHILE

TEMARIO

 Estructuras Repetitivas.
 Estructura de repetición while.
 Estructura de repitición do...while.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 123


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

8. ESTRUCTURAS REPETITIVAS

Se denominan estructuras repetitivas a aquellas estructuras que permiten repetir


instrucciones. A las estructuras repetitivas se conocen también como estructuras iterativas
o bucles, a las instrucciones a repetir se conocen como el cuerpo del bucle y al hecho de
repetir la secuencia de instrucciones se denomina iteración. En el caso del lenguaje Java
tenemos tres tipos de estructuras repetitivas: las estructuras while, do...while y for.

9. ESTRUCTURA REPETITIVA WHILE (Mientras)

La estructura while repite una acción o un conjunto de acciones mientras sea verdadera
una determinada condición, para lo cual primero verifica la condición y luego ejecuta la
acción. La acción puede ser una acción simple o una acción compuesta (bloque de
acciones encerradas entre llaves).

La representación gráfica de la estructura repetitiva Mientras es la siguiente:

Ilustración 34: Diagrama de Flujo de la estructura repetitiva Mientras

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 124


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 35: Diagrama Estructurado de la estructura repetitiva Mientras

Ilustración 36: Pseudocódigo de la estructura repetitiva Mientras

La sintaxis en java de la estructura de repetición while (mientras) es la siguiente:

Para una sola acción a repetir:


while( condición )
acción;

Para más de una acción a repetir:


while( condición ){
acción1;
acción2;
.
.
.
acción3;
}

Ejemplo 01:

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 125


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Escribir un algoritmo que lea las 40 notas finales del curso de Algoritmos y Programación, e
informe cuántos alumnos han aprobado y cuántos desaprobaron.
Dato: (Nota >= 10.5 Aprobado)

Ilustración 37: Diagrama de Flujo del ejemplo de estado del alumno

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 126


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 38: Diagrama estructurado del ejemplo de estado de los alumnos

Ilustración 39: Pseudocódigo del ejemplo de estado de los alumnos

Ejemplo 02:
Realizar un algoritmo que permita calcular la suma de los números enteros comprendidos
entre dos cantidades ingresadas por teclado. Hallar adicionalmente el promedio de la suma.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 127


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 40: Diagrama de Flujo del ejemplo 2

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 128


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 41: Diagrama estructurado del ejemplo 2

Ilustración 42: Pseudocódigo del ejemplo 2

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 129


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.ESTRUCTURA REPETITIVA DO… WHILE (Hacer-mientras)

La estructura do...while repite una acción o un conjunto de acciones mientras sea


verdadera una determinada condición, para lo cual primero ejecuta la acción y luego
verifica la condición. La acción puede ser una acción simple o una acción compuesta
(bloque de acciones encerradas entre llaves).
La representación gráfica de la estructura repetitiva Hacer-Mientras es la siguiente:

Ilustración 43: Diagrama de flujo de la estructura repetitiva Hacer-Mientras

Ilustración 44: Diagrama estructurado de la estructura repetitiva Hacer-Mientras

Ilustración 45: Pseudocódigo de la estructura repetitiva Hacer-Mientras

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 130


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

La sintaxis en java de la estructura de repetición do…while es la siguiente:

Para una sola acción a repetir:


do
acción;
while( condición );

Para más de una acción a repetir:


do{
acción1;
acción2;
.
.
.
acción3;
} while( condición );

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 131


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo 3:
En el curso de Algoritmos y Programación existen 40 alumnos, de los cuales se tiene el
promedio de la Primera Unidad. Se pide realizar un algoritmo que permita hallar el
promedio general de estos alumnos.

Ilustración 46: Diagrama de flujo del ejemplo 3

Desarrollamos el ejemplo 5 en 5 pasos:

1. Se asignan valores a las variables c = 0 y suma = 0


2. Se ingresa al cuerpo del bucle (no existe ninguna instrucción que nos impida), se tiene
tres instrucciones:
2.1. En la primera instrucción que se ejecuta tenemos un contador, este
contador
incrementa en una unidad siendo su resultado c = 1.
2.2. En la segunda instrucción se lee la nota del primer alumno (esta nota se ingresa
por teclado).
2.3. La tercera instrucción es un acumulador; cuya función es acumular la suma de
todas las notas (40 notas).

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 132


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

3. A continuación, se evalúa la condición; se pregunta: ¿c es menor que 40? Si la


respuesta
es verdadera se regresa al paso 2 y se ejecutan las tres instrucciones del cuerpo del
bucle nuevamente, de lo contrario se continúa con el paso 4.
4. Se llega a este paso después de finalizarse las 40 iteraciones que da el bucle.
En la variable suma se tiene la suma total de las notas y ahora se ejecuta la
instrucción que permite hallar el promedio.
5. Muestra en pantalla el resultado del promedio de notas.

La solución del ejemplo 3 en el diagrama estructurado y pseudocódigo es el siguiente:

Ilustración 47: Diagrama estructurado del ejemplo 3

Ilustración 48: Pseudocódigo del ejemplo

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 133


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo 4
Se desea contabilizar cuántos números son positivos, negativos y neutros del ingreso
continuo de números enteros. Este proceso re repite hasta que el usuario pulse la
tecla N al mensaje en pantalla “Desea Continuar[s/n]:”.

Solución
Para la solución del problema se va a necesitar de tres contadores, que realizarán la acción
de contar cuántos números son positivos, negativos y neutros se ingresarán por teclado, de
una serie de números.

Para ello, utilizaremos tres variables, a las que llamaremos:

cc : contador de ceros
cp : contador de positivos
cn : contador de negativos

Además, utilizaremos estructuras selectivas anidadas, con las que haremos la


comprobación de
Cuáles números son iguales a cero, positivos y negativos. Y de acuerdo al resultado
de la condición, los contadores (cc, cp y cn) incrementarán su valor.

Terminadas de realizar todas las condiciones, se preguntará al usuario si ‘Desea continuar


[s/n]’ ingresando más números, para ello utilizaremos una variable de tipo carácter,
llamado opc. El cuál almacenará el carácter de ‘s’ de “sí continuo”, o ‘n’ de “no
continuo” ingresando valores. De acuerdo a la respuesta seguiremos o terminamos el
bucle.

Al responder en 'n' de “no continuo” el algoritmo debe reportar lo siguiente:


Cantidad de números ceros.
Cantidad de números positivos.
Cantidad de números negativos.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 134


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 49: Diagrama de flujo del ejemplo 4

Ilustración 50: Diagrama estructurado del ejemplo 4

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 135


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 51: Pseudocódigo del ejemplo 4

11.ACTIVIDADES PROPUESTAS
11.1. Diseñar un algoritmo que permita visualizar la tabla de multiplicar de un
número entero ingresado por teclado.

1x5= 5

2 x 5 = 10

3 x 5 = 15

……

12 x 5 = 60

11.2. Cuantos números son pares positivos y negativos, impares positivos y negativos
entre N1 y N2 un rango de valores enteros.

11.3. Lea una serie de números hasta ingresar el valor de cero. Luego indique cuantos
números positivos, negativos, pares e impares fueron ingresados.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 136


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

11.4. A una fiesta ingresaron personas de diferentes edades, no se permite el


ingreso de menores de edad. Se pide encontrar la edad menor, la mayor y el
promedio de edades. El ingreso debe terminar cuando la edad ingresada sea cero.
11.5. Diseñe un programa que simule varios lanzamientos simultáneos de dos dados
hasta obtener 6 en ambos dados e informe cuántos lanzamientos simultáneos
fueron necesarios efectuar.
11.6. Imprime un rectángulo de altura n y ancho 2n relleno de asteriscos. Así, para n igual
a
5, el programa deberá imprimir un rectángulo de 10 asteriscos de ancho por 5
asteriscos de alto como el que se muestra a continuación:

11.7. Hallar el factorial de un número.


Ejemplo: n = 5, lo que debe mostrar el programa es:

5! = 5 x 4 x 3 x 2 x 1= 120

11.8. Lea N números e indique el mayor y el menor ingresado.

11.9. Diseñe un programa que genere aleatoriamente las notas de una práctica
calificada de 30 alumnos de una sección e imprima por cada nota tantos
asteriscos como indique la nota.

Nota Histograma

10 **********
8 ********
5 *****
15 ***************
4 ****
1 *
20 ********************

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 137


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

.
.
.
7 *******
3 ***

11.10. Obtenga el cociente y el residuo de una división calculando la cantidad de veces


que un número está contenido en otro, mediante restas sucesivas.
Por ejemplo: Si el dividendo es n1=52 y el divisor es n2=8, entonces

52 – 8 = 44
44 – 8 = 36
36 – 8 = 28
28 – 8 = 20
20 – 8 = 12
12 – 8 = 4

Ya no seguimos restando pues 4 es menor que 8. El cociente estará dado por el


número de restas (6) y el residuo por el último número obtenido (4). El
programa debe mostrar las restas sucesivas.

11.11. Escribir un algoritmo que me permita encontrar el máximo común múltiplo de un


número.
Por ejemplo: 30 = 2x3x5.

11.12. Escribir un algoritmo que diga si es un número primo.

11.13. En una campaña médica de medición de presión, se pide que se ingresen todas las
edades de los pacientes que serán atendidos. Se solicita que se calcule la mayor y
menor edad ingresada. El ingreso acaba cuando se ingrese un valor 0.

11.14. Escriba un algoritmo que permita reducir una fracción a su mínima expresión. Por
ejemplo:
24/30 = 4/5.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 138


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10. ESTRUCTURAS DE SELECCIÓN MULTIPLES

TEMARIO

 La estructura de selección Múltiple switch.

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 139


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

9. ESTRUCTURAS DE SELECCIÓN MULTIPLE

Con frecuencia en la práctica se presentan más de dos elecciones posibles de una


cierta condición. La estructura selectiva múltiple se utiliza para este tipo de problemas, es
decir, que la estructura selectiva múltiple evaluará una expresión que podrá tomar n
valores distintos: 1, 2, 3, 4,..., n. Según qué elija uno de estos valores en la condición, se
realizará una de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un
determinado camino entre los n posibles.

La representación gráfica de una estructura selectiva doble en las tres


herramientas de programación es la siguiente:

Ilustración 52: Diagrama de flujo de la estructura selectiva múltiple

Ilustración 53: Diagrama estructurado o N-S de la estructura selectiva múltiple

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 140


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 54: Pseudocódigo de la estructura selectiva múltiple

En el lugar donde aparece la palabra expresión pondremos lo que nosotros queremos


evaluar; puede ser una variable, una instrucción o cualquier cosa que tome diferentes
valores.

En el lugar de <valor1> o <caso1>, <valor2> o <caso2>, ..., <valor n> o <caso n> pondremos
los diferentes valores que pueda tomar la decisión, según los cuales el programa debe
hacer una u otra cosa. Pueden existir tanto valores como a nosotros nos convenga. Esta
estructura es muy útil en el momento en el que debemos tomar diferentes decisiones de
una misma condición.

En la tabla que sigue se muestra el código y el pseudocódigo de la estructura switch.

Código Java Pseudocódigo

switch( selector ){ segun( selector ){


case c1: caso c1:
accion1; accion1
break; caso c2:
case c2: accion2
accion2; .
break; .
. .
. caso cn:
. accionn
case cn: defecto:
accionn; acciondefecto
break; }
ESTRUCTURAS DE SELECCIÓN MULTIPLES
default :
Página 141
acciondefecto;
}
Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Consideraciones:

 Las sentencias break y el caso por defecto default son opcionales.


 El caso por defecto default no tiene que ser el último de todos sino que puede ser el
primero u ocupar una posición intermedia.
 Luego de efectuarse la acción o las acciones de un case o del default, se
proseguirá con la ejecución de la acción o las acciones de los case que siguen hasta
encontrar un break o hasta llegar al final de la estructura switch; lo que ocurra
primero.
 Es un error de sintaxis tener casos duplicados.
 Las acciones pueden ser acciones simples o acciones compuestas. En el caso de
acciones compuestas no es necesario colocarlas entre llaves de bloque.

Ejemplo 1:
Realizar un algoritmo que lea un número que represente el día de la semana y diga qué día
es, teniendo en cuenta lo siguiente: (Lunes=1, Martes=2, ..., Domingo=7).

Ilustración 55: Diagrama estructurado del ejemplo

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 142


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 56: Diagrama estructurado del ejemplo

Ilustración 57: Pseudocódigo del ejemplo

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 143


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.PROBLEMAS RESUELTOS PARA LABORATORIO EN JAVA DE ESTRUCTURAS MULTIPLES:


10.1. Diseñe un programa que determine la cantidad de días y el nombre de un
mes conociendo los valores numéricos del mes y del año.

Algoritmo
Inicio
// Declaración de variables
entero dias, mes, año cadena nombre
// Entrada de datos
Leer mes, año
// Determina el nombre del mes
según( mes ){
caso 1 : nombre = "Enero"
caso 2 : nombre = "Febrero"
caso 3 : nombre = "Marzo"
caso 4 : nombre = "Abril"
caso 5 : nombre = "Mayo"
caso 6 : nombre = "Junio"
caso 7 : nombre = "Julio"
caso 8 : nombre = "Agosto"
caso 9 : nombre = "Setiembre"
caso 10: nombre = "Octubre"
caso 11: nombre = "Noviembre"
defecto: nombre = "Diciembre"
// Determina el número de días del mes
según( mes ){
caso 1:
caso 3:
caso 5:
caso 7:
caso 8:
caso 10:
caso 12:
dias = 31
caso 4:

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 144


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

caso 6:
caso 9:
caso 11:
dias = 30
defecto:
si((año%4 == 0) && ((año%100 != 0) || (año%400 ==
0)))
dias = 29
sino
dias = 28
}
// Salida
Imprimir nombre, dias

Fin

10.2. En la playa de estacionamiento de un centro comercial, cobran una tarifa fija


por hora o fracción de acuerdo a la siguiente tabla:

Día Tarifa
Lunes a Jueves S/. 3.5
Viernes y Sábado S/. 4.5
Domingo S/. 2.5

Cuando un vehículo entra al estacionamiento, se registra la hora de entrada y


al retirarse, se registra la hora de salida, ambas en horas y minutos. Diseñe un
programa que determine cuanto debe pagar un cliente por el estacionamiento de su
vehículo.

Algoritmo

Considerando: dia: 0=Lunes, 1= Martes, ...,6 = Domingo


Inicio
// Declaración de variables
entero h1, m1, h2, m2, dia, horaspag, totalmin
real montopag

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 145


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

// Entrada de datos
Leer h1, m1, h2, m2, dia

// Cálculo de la cantidad de horas a pagar


totalmin = (h2-h1)*60 + (m2-m1)
horaspag = totalmin/60
si( totalmin%60 != 0 )
horaspag = horaspag+1

// Cálculo del monto a pagar


si( dia <= 3 )
montopag = horaspag*3.5
sino si( dia <= 5 )
montopag = 4.5*horaspag
sino
montopag = 2.5*horaspag

// Salida de resultados
Imprimir horaspag, montopag
Fin

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 146


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

10.3. En nuestra universidad, los alumnos están categorizados en cuatro categorías. A


cada categoría le corresponde una pensión mensual distinta dada en la siguiente
tabla:

Categoría Pensión
A S/. 380
B S/. 340
C S/. 300
D S/. 260
E S/. 180
Semestralmente, la universidad efectúa rebajas en las pensiones de sus
estudiantes a partir del segundo ciclo en base al promedio ponderado del
ciclo anterior en porcentajes dados en la tabla siguiente:

Promedio Descuento
0 a13.99 No hay descuento
14.00 a 15.99 10 %
16.00 a 17.99 12 %
18.00 a 20.00 15 %
Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre
su pensión actual y a cuánto asciende su nueva pensión.

Algoritmo
Inicio
// Declaración de variables entero categoria
real actualpen, nuevapen, descuento, promedio
// Entrada de datos
Leer categoria, promedio
// Cálculo de la pensión actual
si( categoria == 0 )
actualpen = 550
sino si ( categoria == 1 )
actualpen = 500
sino si ( categoria == 2 )
actualpen = 460
sino
actualpen = 400
// Cálculo del descuento
si( promedio <= 13.99 )

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 147


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

descuento = 0
sino si( promedio <= 15.99 )
descuento = 0.10*actualpen
sino si( promedio <= 17.99 )
descuento = 0.12*actualpen
sino
descuento = 0.15*actualpen
// Cálculo de la nueva pensión
nuevapen = actualpen – descuento
// Salida de resultados
Imprimir actualpen, nuevapen
Fin

10.4. Una empresa de préstamos tiene el siguiente esquema de cobros:

Monto del préstamo (S/.) Número de cuotas


Hasta 5000 2
Más de 5000 hasta 10 000 4
Más de 10000 hasta 15 000 6
Más de 15000 10

Si el monto del préstamo es mayor a S/. 10 000, la empresa cobra 3% de interés


mensual; en caso contrario, cobra 5% de interés mensual.
Dado el monto del préstamo de un cliente, diseñe un programa que determine el
monto de la cuota mensual y el monto del interés total entre todas las cuotas.

Algoritmo
Inicio
// Declaración de variables
real montoprestamo, montointeres, tasainteres, montocuota
entero cuotas
// Entrada de datos
Leer montoprestamo
// Obtención del número de cuotas
si( montoprestamo <= 5000 )
cuotas = 2

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 148


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

sino si( montoprestamo <= 10000 )


cuotas = 4
sino si( montoprestamo <= 15000 )
cuotas = 6
sino
cuotas = 10
// Obtención de la tasa de interés
si( montoprestamo > 10000 )
tasainteres = 0.03
sino
tasainteres = 0.05
// Cálculo del monto del interés total
montointeres = tasainteres*montoprestamo*cuotas

// Cálculo del monto de la cuota


montocuota = (montoprestamo + montointeres)/cuotas

// Salida de resultados
Imprimir cuotas, montocuota, montointeres
Fin

10.5. Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y
rendimiento. En cada caso el empleado recibe un puntaje que va de 1 a 10, de
acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en función a los minutos de tardanza de acuerdo a la
siguiente tabla:

Minutos de tardanza Puntaje


0 10
1a2 8
3a5 6
6a9 4
Más de 9 0

Puntaje por rendimiento:- está en función a la cantidad de observaciones


efectuadas al empleado por no cumplir sus obligaciones de acuerdo a la siguiente
tabla:

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 149


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Observaciones Puntaje
0 10
efectuadas
1 8
2 5
3 1
Más de 3 0

El puntaje total del empleado es la suma del puntaje por puntualidad más el
puntaje por rendimiento. En base al puntaje total, el empleado recibe una
bonificación anual de acuerdo a la siguiente tabla:

Puntaje total Bonificación


Menos de 11 S/. 2.5 por punto
11 a 13 S/. 5.0 por punto
14 a 16 S/. 7.5 por punto
17 a 19 S/. 10.0 por punto
20 S/. 12.5 por punto

Diseñe un programa que determine el puntaje por puntualidad, el puntaje por


rendimiento, el puntaje total y la bonificación que le corresponden a un empleado
de la empresa.

Algoritmo
Inicio
// Declaración de variables
entero minutosTar, numeroObs, puntajePun, puntajeRen, puntajeTot
real bonificacion
// Entrada de datos
Leer minutosTar, numeroObs
// Determinación del puntaje por puntualidad
si(minutosTar == 0)
puntajePun = 10
sino si(minutosTar <= 2)
puntajePun = 8
sino si(minutosTar <= 5)
puntajePun = 6
sino si(minutosTar <= 9)
puntajePun = 4

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 150


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

sino
puntajePun = 0
// Determinación del puntaje por rendimiento
si(numeroObs == 0)
puntajeRen = 10
sino si(numeroObs == 1)
puntajeRen = 8
sino si(numeroObs == 2)
puntajeRen = 5
sino si(numeroObs == 3)
puntajeRen = 1
sino
puntajeRen = 0
// Determinación del puntaje total
puntajeTot = puntajePun + puntajeRen
// Determinación de la bonificación
si(puntajeTot < 11)
bonificacion = 2.5*puntajeTot
sino si(puntajeTot <= 13)
bonificacion = 5.0*puntajeTot
sino si(puntajeTot <= 16)
bonificacion = 7.5*puntajeTot
sino si(puntajeTot <= 19)
bonificacion = 10.0*puntajeTot
sino
bonificacion = 12.5*puntajeTot
// Salida de resultados
Imprimir puntajePun, puntajeRen, puntajeTot, bonificacion
Fin

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 151


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

11.ACTIVIDADES PROPUESTAS
Realice los siguientes ejercicios utilizando los diagramas de flujo, N-S y Pseudocódigo, así
como sus respectivos programas utilizando interface gráfica con los objetos swing.

11.1. Realizar un programa que ingrese una vocal minúscula y lo muestre en mayúscula.
11.2. Realizar un programa que ingrese una vocal mayúscula y lo muestre en minúscula.
11.3. Realizar un programa que ingrese número del 1 al 10 y lo muestre en letras.
11.4. Realizar un programa que determine en que estación del año nos
encontramos de acuerdo a la siguiente tabla:

Valor Estación
1 Verano
2 Otoño
3 Invierno
4 Primavera

11.5. Realizar un programa que simule la función de un semáforo, determine el


color y su significado de acuerdo a la siguiente tabla:

Valor Color
1 Rojo
2 Verde
3 Ambar

11.6. Realizar un programa que solicite el ingreso de dos números y de un


operador ( + , - , * , /) . El algoritmo debe calcular el resultado de la operación
seleccionada.

11.7. Realizar un programa que simule un cajero automático de cualquier banco. Se


desea actualizar el saldo de ahorro de un cliente tiene ahorrado un valor
ingresado por teclado, los tipos de movimientos que puede hacer es 1 ó 2. Si el tipo

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 152


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

de movimiento es 1 representa un depósito. Si es 2 representa un retiro. En ambos


casos se debe pedir el monto de la transacción.

ESTRUCTURAS DE SELECCIÓN MULTIPLES Página 153


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

11. ESTRUCTURAS DE REPETICION WHILE – DO


WHILE

TEMARIO

 Estructuras Repetitivas.
 Estructura de repetición while.
 Estructura de repitición do...while.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 154


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

ESTRUCTURAS REPETITIVAS

Se denominan estructuras repetitivas a aquellas estructuras que permiten repetir


instrucciones. A las estructuras repetitivas se conocen también como estructuras iterativas
o bucles, a las instrucciones a repetir se conocen como el cuerpo del bucle y al hecho de
repetir la secuencia de instrucciones se denomina iteración. En el caso del lenguaje Java
tenemos tres tipos de estructuras repetitivas: las estructuras while, do...while y for.

11. ESTRUCTURA REPETITIVA WHILE (Mientras)

La estructura while repite una acción o un conjunto de acciones mientras sea verdadera
una determinada condición, para lo cual primero verifica la condición y luego ejecuta la
acción. La acción puede ser una acción simple o una acción compuesta (bloque de
acciones encerradas entre llaves).

La representación gráfica de la estructura repetitiva Mientras es la siguiente:

Ilustración 58: Diagrama de Flujo de la estructura repetitiva Mientras

Ilustración 59: Diagrama Estructurado de la estructura repetitiva Mientras

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 155


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 60: Pseudocódigo de la estructura repetitiva Mientras

La sintaxis en java de la estructura de repetición while (mientras) es la siguiente:

Para una sola acción a repetir:


while( condición )
acción;

Para más de una acción a repetir:


while( condición ){
acción1;
acción2;
.
.
.
acción3;
}

Ejemplo 01:

Escribir un algoritmo que lea las 40 notas finales del curso de Algoritmos y Programación, e
informe cuántos alumnos han aprobado y cuántos desaprobaron.
Dato: (Nota >= 10.5 Aprobado)

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 156


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 61: Diagrama de Flujo del ejemplo de estado del alumno

Ilustración 62: Diagrama estructurado del ejemplo de estado de los alumnos

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 157


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 63: Pseudocódigo del ejemplo de estado de los alumnos

Ejemplo 02:
Realizar un algoritmo que permita calcular la suma de los números enteros comprendidos
entre dos cantidades ingresadas por teclado. Hallar adicionalmente el promedio de la suma.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 158


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 64: Diagrama de Flujo del ejemplo 2

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 159


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 65: Diagrama estructurado del ejemplo 2

Ilustración 66: Pseudocódigo del ejemplo 2

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 160


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

ESTRUCTURA REPETITIVA DO… WHILE (Hacer-mientras)

La estructura do...while repite una acción o un conjunto de acciones mientras sea


verdadera una determinada condición, para lo cual primero ejecuta la acción y luego
verifica la condición. La acción puede ser una acción simple o una acción compuesta
(bloque de acciones encerradas entre llaves).
La representación gráfica de la estructura repetitiva Hacer-Mientras es la siguiente:

Ilustración 67: Diagrama de flujo de la estructura repetitiva Hacer-Mientras

Ilustración 68: Diagrama estructurado de la estructura repetitiva Hacer-Mientras

Ilustración 69: Pseudocódigo de la estructura repetitiva Hacer-Mientras

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 161


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

La sintaxis en java de la estructura de repetición do…while es la siguiente:

Para una sola acción a repetir:


do
acción;
while( condición );

Para más de una acción a repetir:


do{
acción1;
acción2;
.
.
.
acción3;
} while( condición );

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 162


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo 3:
En el curso de Algoritmos y Programación existen 40 alumnos, de los cuales se tiene el
promedio de la Primera Unidad. Se pide realizar un algoritmo que permita hallar el
promedio general de estos alumnos.

Ilustración 70: Diagrama de flujo del ejemplo 3

Desarrollamos el ejemplo 5 en 5 pasos:

1. Se asignan valores a las variables c = 0 y suma = 0


2. Se ingresa al cuerpo del bucle (no existe ninguna instrucción que nos impida), se tiene
tres instrucciones:
2.1. En la primera instrucción que se ejecuta tenemos un contador, este
contador
incrementa en una unidad siendo su resultado c = 1.
2.2. En la segunda instrucción se lee la nota del primer alumno (esta nota se ingresa
por teclado).
2.3. La tercera instrucción es un acumulador; cuya función es acumular la suma de
todas las notas (40 notas).
3. A continuación, se evalúa la condición; se pregunta: ¿c es menor que 40? Si la
respuesta
es verdadera se regresa al paso 2 y se ejecutan las tres instrucciones del cuerpo del
bucle nuevamente, de lo contrario se continúa con el paso 4.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 163


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

4. Se llega a este paso después de finalizarse las 40 iteraciones que da el bucle.


En la variable suma se tiene la suma total de las notas y ahora se ejecuta la
instrucción que permite hallar el promedio.
5. Muestra en pantalla el resultado del promedio de notas.

La solución del ejemplo 3 en el diagrama estructurado y pseudocódigo es el siguiente:

Ilustración 71: Diagrama estructurado del ejemplo 3

Ilustración 72: Pseudocódigo del ejemplo

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 164


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ejemplo 4
Se desea contabilizar cuántos números son positivos, negativos y neutros del ingreso
continuo de números enteros. Este proceso re repite hasta que el usuario pulse la
tecla N al mensaje en pantalla “Desea Continuar[s/n]:”.

Solución
Para la solución del problema se va a necesitar de tres contadores, que realizarán la acción
de contar cuántos números son positivos, negativos y neutros se ingresarán por teclado, de
una serie de números.

Para ello, utilizaremos tres variables, a las que llamaremos:

cc : contador de ceros
cp : contador de positivos
cn : contador de negativos

Además, utilizaremos estructuras selectivas anidadas, con las que haremos la


comprobación de
Cuáles números son iguales a cero, positivos y negativos. Y de acuerdo al resultado
de la condición, los contadores (cc, cp y cn) incrementarán su valor.

Terminadas de realizar todas las condiciones, se preguntará al usuario si ‘Desea continuar


[s/n]’ ingresando más números, para ello utilizaremos una variable de tipo carácter,
llamado opc. El cuál almacenará el carácter de ‘s’ de “sí continuo”, o ‘n’ de “no
continuo” ingresando valores. De acuerdo a la respuesta seguiremos o terminamos el
bucle.

Al responder en 'n' de “no continuo” el algoritmo debe reportar lo siguiente:


Cantidad de números ceros.
Cantidad de números positivos.
Cantidad de números negativos.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 165


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 73: Diagrama de flujo del ejemplo 4

Ilustración 74: Diagrama estructurado del ejemplo 4

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 166


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ilustración 75: Pseudocódigo del ejemplo 4

12.ACTIVIDADES PROPUESTAS
12.1. Diseñar un algoritmo que permita visualizar la tabla de multiplicar de un
número entero ingresado por teclado.

1x5= 5

2 x 5 = 10

3 x 5 = 15

……

12 x 5 = 60

12.2. Cuantos números son pares positivos y negativos, impares positivos y negativos
entre N1 y N2 un rango de valores enteros.

12.3. Lea una serie de números hasta ingresar el valor de cero. Luego indique cuantos
números positivos, negativos, pares e impares fueron ingresados.

12.4. A una fiesta ingresaron personas de diferentes edades, no se permite el


ingreso de menores de edad. Se pide encontrar la edad menor, la mayor y el
promedio de edades. El ingreso debe terminar cuando la edad ingresada sea cero.
12.5. Diseñe un programa que simule varios lanzamientos simultáneos de dos dados
hasta obtener 6 en ambos dados e informe cuántos lanzamientos simultáneos
fueron necesarios efectuar.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 167


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

12.6. Imprime un rectángulo de altura n y ancho 2n relleno de asteriscos. Así, para n igual
a
5, el programa deberá imprimir un rectángulo de 10 asteriscos de ancho por 5
asteriscos de alto como el que se muestra a continuación:

12.7. Hallar el factorial de un número.


Ejemplo: n = 5, lo que debe mostrar el programa es:

5! = 5 x 4 x 3 x 2 x 1= 120

12.8. Lea N números e indique el mayor y el menor ingresado.

12.9. Diseñe un programa que genere aleatoriamente las notas de una práctica
calificada de 30 alumnos de una sección e imprima por cada nota tantos
asteriscos como indique la nota.

Nota Histograma

10 **********
8 ********
5 *****
15 ***************
4 ****
1 *
20 ********************
.
.
.
7 *******
3 ***

12.10. Obtenga el cociente y el residuo de una división calculando la cantidad de veces


que un número está contenido en otro, mediante restas sucesivas.
Por ejemplo: Si el dividendo es n1=52 y el divisor es n2=8, entonces

52 – 8 = 44
44 – 8 = 36
36 – 8 = 28
28 – 8 = 20
20 – 8 = 12
12 – 8 = 4

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 168


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

Ya no seguimos restando pues 4 es menor que 8. El cociente estará dado por el


número de restas (6) y el residuo por el último número obtenido (4). El
programa debe mostrar las restas sucesivas.

12.11. Escribir un algoritmo que me permita encontrar el máximo común múltiplo de un


número.
Por ejemplo: 30 = 2x3x5.

12.12. Escribir un algoritmo que diga si es un número primo.

12.13. En una campaña médica de medición de presión, se pide que se ingresen todas las
edades de los pacientes que serán atendidos. Se solicita que se calcule la mayor y
menor edad ingresada. El ingreso acaba cuando se ingrese un valor 0.

12.14. Escriba un algoritmo que permita reducir una fracción a su mínima expresión. Por
ejemplo:
24/30 = 4/5.

ESTRUCTURAS DE REPETICION WHILE – DO WHILE Página 169


Algoritmos y Programación – Ing. Haybert Escobedo Neyra 2013

12. BIBLIOGRAFIA

 Cadenhead, R & Lemay, L. (2008). Java 6.0. Ediciones Anaya

 Joyanes, L., Rodriguez, L. & Fernández, M. (2003). Fundamentos de programación:


libro de problemas. Algoritmos, estructuras de datos y objetos. Extraido el 21 de
Mayo, 2013, de
http://site.ebrary.com/lib/bibliocauladechsp/docDetail.action?docID=10498607&p00=
algoritmos

 Sun Microsystems “NetBeans IDE Java Quick Start Tutorial”


http://www.netbeans.org/kb/docs/java/quickstart.html

 Sun Microsystems “Basic IDE and Java Programming Learning Trail”


http://www.netbeans.org/kb/trails/java-se.html

 http://chuwiki.chuidiang.org/index.php?title=DecimalFormat

BIBLIOGRAFIA Página 170

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