|
Inicio
Generalidades
Ejercicios
Talleres
Proyecto

|
Iterativos o repetitivos
Las sentencias de control repetitiva se
constituyen en la esencia fundamental de los programas computacionales. Su
objetivo es controlar el flujo de ejecución de las instrucciones del
programa.
Por lo general, los lenguajes de programación contienen las siguientes
estructuras repetitivas:
- Estructura repetitiva while
- Estructura repetitiva do while
- Estructura repetitiva for
Todas estas estructuras también se pueden combinar.
--------------------------------------------------------------------------------------------------------------------------
Programación en lenguaje JAVA. Instrucciones REPETITIVAS o
ITERATIVAS (Ciclos):
____________________________________________________________________________________________
/* Especificacion de una Clase para calcular un promedio de edad
* @ EdadProm.java
* ciclo while
*
* @author vGus
* @version 1.00 2009/03/03
* @author Viejo Gus
*/
package poo_java;
import javax.swing.JOptionPane;
class EdadP {
private int edad;
private int sumed;
private float promed;
public void setedad(){
edad=Integer.parseInt(JOptionPane.showInputDialog("Edad?
"));
}
public int sumaredad(){
return (sumed=sumed+edad);
// Acumulador
}
}
public class EdadProm {
public static void main(String arg[]){
int ned=0, conte=1;
EdadP E = new EdadP();
ned=Integer.parseInt(JOptionPane.showInputDialog("Cuantas
edades desea procesar? "));
JOptionPane.showMessageDialog(null,"Por favor, digite
las "+ned+" edades");
while (conte <= ned){
E.setedad();
E.sumaredad();
conte=conte+1; //
Contador. Es equivalente a conte++
}
JOptionPane.showMessageDialog(null,"La edad promedio
es: "+(E.sumaredad()/conte));
}
}
__________________________________________________________________________________________
/** Otro programa en Java para calcular un promedio de edad
* @ EdadProm.java
* ciclo while
*
* @author vGus
* @version 1.00 2008/10/10
*/
import javax.swing.JOptionPane;
public class EdadProm {
public static void main(String arg[]){
String ed,ned;
int edad, ne=0, conte, acume=0;
float prome;
ned=JOptionPane.showInputDialog("Cuantas edades desea procesar? ");
ne=Integer.parseInt(ned);
JOptionPane.showMessageDialog(null,"Por favor, digite las "+ne+"
edades");
conte=1;
while (conte <= ne){
ed=JOptionPane.showInputDialog("Edad "+conte+"?");
edad=Integer.parseInt(ed);
acume=acume+edad; // Acumulador
conte=conte+1; // Contador. Es equivalente a conte++
}
prome=acume/ne;
JOptionPane.showMessageDialog(null,"La edad promedio es: "+prome);
}
}
--------------------------------------------------------------------------------------------------------------------------
/**
* EdadProm.java
* ciclo do while
*
* @author vGus
* @version 1.00 2008/10/10
*/
import javax.swing.JOptionPane;
public class EdadProm {
public static void main(String arg[]){
String ed,ned;
int edad, ne=0, conte, acume=0;
float prome;
ned=JOptionPane.showInputDialog("Cuantas edades desea procesar? ");
ne=Integer.parseInt(ned);
JOptionPane.showMessageDialog(null,"Por favor, digite las "+ne+"
edades");
conte=1;
do{
ed=JOptionPane.showInputDialog("Edad "+conte+"?");
edad=Integer.parseInt(ed);
acume=acume+edad; // Acumulador
conte++; // Contador
}while (conte <= ne);
prome=acume/ne;
JOptionPane.showMessageDialog(null,"La edad promedio es: "+prome);
}
}
--------------------------------------------------------------------------------------------------------------------------
/**
* EdadProm.java
* ciclo for
*
* @author vGus
* @version 1.00 2008/10/10
*/
import javax.swing.JOptionPane;
public class EdadProm {
public static void main(String arg[]){
String ed,ned;
int edad, ne=0, conte, acume=0;
float prome;
ned=JOptionPane.showInputDialog("Cuantas edades desea procesar? ");
ne=Integer.parseInt(ned);
JOptionPane.showMessageDialog(null,"Por favor, digite las "+ne+"
edades");
for(conte=1;conte <= ne;conte++){
ed=JOptionPane.showInputDialog("Edad "+conte+"?");
edad=Integer.parseInt(ed);
acume=acume+edad; // Acumulador
}
prome=acume/ne;
JOptionPane.showMessageDialog(null,"La edad promedio es: "+prome);
}
}
--------------------------------------------------------------------------------------------------------------------------
- Codificar los siguientes programas de computación
en Lenguaje C/C++ utilizando estructuras REPETITIVAS (ciclos):
--------------------------------------------------------------------------------------------------------------------------
Leer la edad de los n alumnos de un curso
de programación y determinar e imprimir la edad promedio:
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define cls clrscr()
// Utilizando el bucle while
void main(){
int edad, na, sume=0, conta=1;
float prome;
cls;
cout << "Cuántos alumnos desea procesar? -> ";
cin >> na;
cout << "Por favor, digite la edad de los "<< na <<" alumnos"<< endl;
while (conta <= na){
cout << "Alumno"<< conta << " edad? -> ";
cin >> edad;
sume = sume + edad;
// Acumulador
conta = conta + 1;
// Contador. Es equivalente a conta++
cls;
}
prome = sume/na;
cls;
cout << "La edad promedio del grupo es... " << prome << " años";
getch();
}
// *** Ahora, utilizando el bucle do while
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define cls clrscr()
void main(){
int edad, na, sume=0, conta=1;
float prome;
cls;
cout << "Cuántos alumnos desea procesar? -> ";
cin >> na;
cout << "Por favor, digite la edad de los "<< na <<" alumnos"<< endl;
do{
cout << "Alumno"<< conta << " edad? -> ";
cin >> edad;
sume = sume + edad;
conta = conta + 1; // equivalente a conta++
cls;
}while (conta <= na);
prome = sume/na;
cls;
cout << "La edad promedio del grupo es... " << prome << " años";
getch();
}
// *** Y finalmente, utilizando el bucle for
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define cls clrscr()
void main(){
int edad, na, conta, sume=0;
float prome;
cls;
cout << "Cuántos alumnos desea procesar? -> ";
cin >> na;
cout << "Por favor, digite la edad de los "<< na <<" alumnos"<< endl;
for (conta = 1; conta <= na; conta++){
cout << "Alumno"<< conta << " edad? -> ";
cin >> edad;
sume = sume + edad;
cls;
}
prome = sume/na;
cls;
cout << "La edad promedio del grupo es... " << prome << " años";
getch();
}
- Escribir un programa en Pascal, utilizando ciclo while, para
calcular la suma de una lista de números enteros leídos del teclado.
program SUMAR;
uses crt;
var
N, cont, num, suma : integer;
BEGIN
clrscr;
WriteLn('¿Cuántos números enteros desea sumar?');
ReadLn(N);
WriteLn('Digite los ',N,' números enteros...');
cont := 0; suma := 0;
while cont < N do
begin
Read(num);
suma := suma
+ num;
cont :=
cont + 1;
end;
WriteLn('La suma de los ',N,' números es: ',suma);
ReadLn;
END.
{ Con la estructura repeat del lenguaje Pascal }
program SUMAR;
uses crt;
var
N, cont, num, suma : integer;
BEGIN
clrscr;
WriteLn('¿Cuántos números enteros desea sumar?');
ReadLn(N);
WriteLn('Digite los ',N,' números enteros...
');
cont := 0; suma := 0;
repeat
Read(num);
suma := suma
+ num;
cont :=
cont + 1;
until cont = N;
WriteLn('La suma de los ',N,' números es: ',suma);
ReadLn;
END.
{ Con la estructura for del lenguaje Pascal }
program SUMAR;
uses crt;
var
N, cont, num, suma : integer;
BEGIN
clrscr;
WriteLn('¿Cuántos números enteros desea sumar?');
ReadLn(N);
WriteLn('Digite los ',N,' números enteros...');
suma := 0;
for cont := 1 to N do
begin
Read(num);
suma :=
suma + num;
end;
WriteLn('La suma de los ',N,' números es: ',suma);
ReadLn;
END.
___________________________________________________________________________________________
Ejercicios "amistosos"
___________________________________________________________________________________________
-
Calcular e imprimir los valores que toma
la ecuación Y = X² + 4X + 3 cuando X va de 1 a 10.
-
La empresa "TOLModels"
desea seleccionar para un evento local a un grupo de personas que
cumplan los siguientes requisitos: Mujeres con edad
igual o superior a 17 años e inferior a 20 años, con un peso menor a
55 kg y estatura entre 1.70 y 1.75 m. Hombres con
edad entre los 18 y 21 años y con estatura superior a 1.75 m. a)
Cuántas mujeres fueron seleccionadas, b)
Porcentaje de hombres seleccionados, c)
Estatura promedio de todos los aspirantes, y d)
Peso de la mujer más joven seleccionada.
-
En el Banco "SinFondos"
desean registrar las transacciones realizadas a diario. Los tipos de
transacción son: 'C' si la transacción es una
consignación se debe actualizar el saldo del
cliente, 'R' si la transacción es un
retiro se debe tener en cuenta si el saldo le alcanza a la persona; se
debe dejar un saldo mínimo de $20000 en la cuenta y el valor mínimo
de cada transacción es de $20000. Si el retiro es aprobado se debe
actualizar el saldo. Por cada cliente se debe visualizar: Número de
la cuenta y nombre del cliente, tipo, fecha y valor de transacción, y
nuevo saldo.
-
Leer el valor de N pensiones. Si el valor
de la pensión es superior a 4 salarios mínimos, se debe calcular el
IVA correspondiente. Determinar y visualizar el valor total del
impuesto a las pensiones.
-
Leer una cadena, caracter por caracter, y
determinar cuántas letras están comprendidas entre las letras
mayúsculas G - M ambas inclusive.
-
Leer por teclado N números enteros y
calcular e imprimir la media de los números pares y la media de los
impares. Utilizar un ciclo while.
-
Leer por teclado 27 números enteros y
determinar e imprimir cuántos números son primos.
-
Imprimir una tabla de números. Cada línea
de la tabla contiene tres entradas: el número, su cuadrado y su cubo.
Comience con 1 y termine con 12+1. Utilice un ciclo for para generar los
números.
-
Representar un modelo informatizado del
juego "adivina el número mágico". Funciona así: El
jugador tiene 7 intentos para adivinar el número mágico. Si el número
que se digita es el valor seleccionado como número mágico, el
programa debe imprimir el mensaje CORRECTO! y terminar. En caso
contrario, informar sobre si la suposición ha sido más alta o más
baja y permitir que el usuario introduzca números hasta que adivine
el número. Visualizar también el número de intentos.
-
Un programa que imprima en pantalla cinco
refranes diferentes, según el número del refrán seleccionado por el
usuario. Utilice un ciclo do-while.
-
Construír un ciclo indeterminado para
calcular e imprimir el tiempo de conducción dada la distancia y la
velocidad media.
-
Generar e imprimir la progresión aritmética
1 2 4 8 16, hasta 1000.
-
Simular una sencilla máquina
codificadora que traduzca los caracteres que se leen por teclado a un
formato codificado, adicionando 1 a cada letra. Es decir, 'A' se
convierte en 'B', y así sucesivamente. El programa debe terminar
cuando se presione ENTER.
-
Los códigos ASCII para las letras minúsculas
están separados de los de las letras mayúsculas por una diferencia
de 32. Por lo tanto, para convertir una letra minúscula en una mayúscula,
basta con restarle 32. Escriba un programa que lea los caracteres del
teclado y visualice las letras minúsculas como mayúsculas. Terminar
el programa cuando se presione la tecla ESC.
-
Generar e imprimir las tablas de
multiplicar.
-
Utilizando una sentencia switch, escribir
un programa que lea caracteres del teclado y busque tabuladores,
nuevas líneas, y retrocesos. Cuando reciba uno, muestre lo que
representa en palabras. Por ejemplo, cuando el usuario pulse la tecla
TAB, que imprima tabulador. El programa debe terminar cuando el
usuario digite ESC.
-
Codificar el algoritmo de Euclides para
calcular e imprimir el M.C.D. (máximo común divisor) de dos números,
A y B.
-
Para las elecciones a la Alcaldía de
Chaparral, se inscribieron cuatro candidatos (con identificadores
1,2,3,4). Escriba un programa que permita determinar e imprimir el número
de votos correspondiente a cada candidato y el porcentaje que obtuvo
respecto al total de los votantes. El final de datos está
representado por un cero. ¿Cuál es el nuevo alcalde de Chaparral?
-
El gerente de 'FibraTolima' autorizó
liquidar una bonificación a sus empleados en Navidad de acuerdo al
siguiente criterio: Si el empleado es casado y tiene hijos, la
bonificación es de $10000 por hijo. Si no es casado y tiene
hijos, la bonificación es de $5000 por hijo. Si el trabajador
tiene más de dos años de antigüedad en la Compañía, se le
aumentan $3000 por cada hijo. Visualizar el sueldo a pagar a cada
empleado y el total de la nómina.
-
Leer por teclado 24 números reales que
representan las temperaturas tomadas en EL Espinal en un período de 24
horas. Imprimir la temperatura promedio y las temperaturas más alta y
más baja del día.
-
Laura está de compras en el hipermercado
'Carrefour' de Ibagué y decide llevar un control sobre lo que va comprando, para
saber la cantidad de dinero que tendrá que pagar al llegar a una
caja. El supermercado tiene una promoción especial del 14% de
descuento sobre aquellos artículos cuya etiqueta sea de color verde:
del 10% sobre los de etiqueta amarilla, y del 7% sobre los de etiqueta vinotinto. Escriba un programa con un ciclo indeterminado que permita
determinar e imprimir la cantidad de dinero que Laura deberá pagar.
-
Un problema que se presenta
frecuentemente en las finanzas domésticas es el determinar cuánto
dinero se acumulará en una cuenta en el banco después de n años si
se deposita inicialmente una cantidad conocida P, y la cuenta acumula
anualmente interés a un porcentaje r (i = r/100). La cantidad futura
se puede determinar mediante la conocida fórmula de interés
compuesto: F = P(1 + i)^n. Escriba un programa utilizando un ciclo for
que permita calcular e imprimir el interés compuesto para cada uno de
los n años en los cuales el dinero se queda en depósito.
-
Una aplicación interesante de las
computadoras, es dibujar gráficos de barra (a veces llamados
"histogramas"). Escriba un programa que lea 10 números
(cada uno de ellos entre 1 y 27). Para cada uno de los números leídos,
su programa deberá imprimir una línea, conteniendo dicho número en
asteriscos adyacentes. Por ejemplo, si se lee por teclado el número
7, el programa deberá imprimir *******.
-
Escriba un programa que permita realizar operaciones
aritméticas elementales, según el operador ingresado por teclado.
Imprimir el operando1, operador, operando2 y el resultado de la
operación. El programa debe finalizar mediante una respuesta del
usuario.
(¿Desea salir? S = sí, N = no).
| OPERADOR |
OPERACIÓN |
| + |
Suma |
| - |
Resta |
| * |
Multiplicación |
| / |
División |
-
En el estadio 'Manuel Murillo Toro' se tienen 5 tipos
diferentes de localidades, las cuales se identifican por una clave numérica
(valor comprendido entre 1 y 5). Codifique un programa que permita:
a) Calcular e imprimir la recaudación total del estadio para el
partido TOLIMA
- CALI.
b) Para cada venta por localidad, imprimir el tipo de boleta, la cantidad
y el valor total de las boletas.
c) Imprimir la cantidad total de boletas vendidas de cada tipo.
-
La Distribuidora de Software "PengüinSoft" necesita calcular el aumento
de sueldo para sus N
empleados, bajo el siguiente criterio:
a) Sueldo < $700000: Aumento 14%
b) Sueldo comprendido entre $700000 y $1500000: Aumento 10%
c) Sueldo superior a $1500000: Aumento 8%.
La empresa también desea conocer el sueldo promedio de las mujeres,
sueldo promedio de hombres, sueldo promedio de los ingenieros de sistemas
y el total de nómina de la compañía.
-
La siguiente se llama la conjetura de
ULAM, en honor del matemático S.Ulam:
<> Comience con cualquier entero positivo.
<> Si es par, divídalo por 2; si es impar, multiplíquelo por 3 y
agréguele 1.
<> Obtenga enteros sucesivamente repitiendo el proceso.
Al final, obtendrá el número 1, independientemente del entero
inicial. Por ejemplo, cuando el entero inicial es 26, la secuencia será:
26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Escriba un programa que lea un
entero positivo y obtenga e imprima la sucesión de ULAM.
28. Un número es perfecto si "la suma
de sus divisores excepto el mismo, es
igual al propio número".
Codifique un programa para calcular e imprimir
los números perfectos
menores o iguales que N.
29. El factorial de un número entero
positivo N se define como el producto
de los números comprendidos
entre 1 y N. La expresión N! simboliza
el factorial de N. Por
definición: 0! = 1, 1! = 1, 2! = 1 * 2, 3! = 1 * 2 * 3
y así
sucesivamente. Escriba un programa que genere e imprima el factorial
de un número N. 30.
Los números de Fibonacci forman una
interesante secuencia en la que
cada número es igual a la suma de los
dos números anteriores. En otras
palabras: Fi = Fi-1 + Fi-2. Los dos
primeros números son iguales a 1 (F1
= F2 = 1).
F3 = F2 + F1 = 1 + 1 = 2
F4 = F3 + F2 = 2 + 1 = 3
F5 = F4 + F3 = 3 + 2 = 5 y así sucesivamente.
Escriba un programa que genere e imprima los N primeros números de
Fibonacci, donde N es un valor especificado por el usuario.

|