Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulo Info
Modulo Info
g f b e
X X d c b a c
A
b
A
a
9.- Haga la secuencia de evaluacin de la expresin algebraica que hara el computador para:
(3 * 9 - 3 + 5/2 ) + 9 MOD 3 + (8 * 3 - 5) * (2/4) + (5 * 3 * 2 + 1) =
10.- Haga la codificacin Java de la expresin algebraica:
a b x
x y
2 2
58 3 54
3 4 2 1
+
=
, ,
11.- Evale el resultado para a = 7, b = 2, x = 2, y = 1.
Ejercicios sobre algoritmos Secuenciales
1.- Disee un algoritmo que calcule el rea de un tringulo en funcin de las longitudes de sus lados.
donde p = (a+b+c)/2 = (semipermetro)
2.- Elaborar un algoritmo que permita calcular el volumen de un cilindro (radio y altura se ingresan
desde el teclado). (volumne cilindro => radio
2
x altura)
3.- Haga un algoritmo que calcule
a. rea de un circulo => rea = r
2
b. rea de un tringulo => rea =
b h
2
4.- Disear un algoritmo a travs del cual se pueda calcular la siguiente expresin algebraica :
2 1
2 1
x x
y y
z
=
5.- Disee un algoritmo para la conversin una medida de metros a pies y pulgadas.
6.- Elabore un algoritmo que convierta una temperatura dada en centgrados a fahrenheit.
p(p - a)(p - b)(p - c) rea=
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
111
7.- Dado un carcter alfabtico en maysculas, elabore un algoritmo que imprima en pantalla su
equivalente en minscula (consulte el cdigo ASCII).
8.- Hacer un algoritmo para calcular el IVA (16%) de un valor digitado por el teclado, mostrar este
resultado y el de sumar el IVA al valor digitado.
Ejemplo: valor digitado => 1000
mostrar en pantalla IVA = 160 y valor mas IVA = 1160
9.- Elabore un algoritmo para mostrar la cantidad de miles, centenas, decenas y unidades de un
nmero entero digitado por teclado.
Ejemplo: Sea 1483 el nmero digitado el algoritmo debe mostrar en pantalla
Miles = 1
Centenas = 4
Decenas = 8
Unidades = 3
10.- Las funciones trigonomtricas calculan sus valores para ngulos dados en unidades de radianes,
haga un algoritmo que pase ngulos de grados a radianes, y calcule la tangente del ngulo
convertido a radianes usando las funciones seno y coseno.
1 Radian =
180
; = 3.141516
11.- Aplicando el teorema de Taylor a la funcin Seno se obtiene el siguiente polinomio que equivale
a esa funcin:
Sen(x) = P(x) =
x x x x x
1 3 5 7 9
3 5 7 9
! ! ! ! !
+ +
12.- Elabore un algoritmo para calcular el seno de un ngulo x usando este polinomio para siete (7)
trminos.
13.- Haga un algoritmo que convierta una medida de longitud en kilmetros a metros, centmetros,
milmetros, pulgadas, yardas, millas y pies.
14.- Elabore un algoritmo que convierta una medida de masa en toneladas a kilogramos, quintales,
gramos, libras.
15.- Realice un algoritmo que convierta unidades de fuerza en newtons a dinas.
16.- Elabore un algoritmo que convierta una unidad de presin en pascales a bares.
17.- Haga un algoritmo que calcule el rea de una cara de un cubo y su volumen.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
112
18.- Elabore un algoritmo que convierta una unidad de volumen en metros cbicos m
3
a litros y
centmetros cbicos.
19.- Lea dos puntos (x, y) y calcule la distancia entre ellos.
20.- Los siguientes son los mltiplos y submltiplos decimales (ver tabla), elabore un algoritmo que
lea un nmero dado en unidades y lo muestre en cada uno de sus mltiplos y submltiplos por
pantalla.
Smbolo Unidades
tera T 1.000.000.000.0
giga G 1.000.000.000
mega M 1.000.000
kilo K 1.000
hecto H 100
deca Da 10
unidad 1
deci D 0.1
centi C 0.01
mili M 0.001
micro
0.000.001
nano N 0.000.000.001
pico P 0.000.000.000.01
21.- Elabore un algoritmo que convierta una medicin de tiempo en segundos a horas, minutos y
segundos.
1 hora = 60 minutos
1 minuto = 60 segundos
Ejemplo: sea 34505 la cantidad digitada en segundos se debe mostrar en pantalla
Horas = 9
Minutos = 35
Segundos = 5
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
113
UNIDAD 6.
SENTENCIAS DE CONTROL EN JAVA
Introduccin
Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin
embargo, existen tareas ms complejas que no pueden ser resueltas empleando un esquema tan
sencillo, en ocasiones es necesario repetir una misma accin un nmero determinado de veces o
evaluar una expresin y realizar acciones diferentes en base al resultado de dicha evaluacin.
Para resolver estas situaciones existen las denominadas estructuras de control que poseen las
siguientes caractersticas:
Una estructura de control tiene un nico punto de entrada y un nico punto de salida.
Una estructura de control se compone de sentencias o de otras estructuras de control.
Tales caractersticas permiten desarrollar de forma muy flexible todo tipo de algoritmos an cuando
slo existen tres tipos fundamentales de estructuras de control:
Secuencial.
Alternativa.
Repetitiva.
A lo largo de esta leccin se presentarn las distintas estructuras de
control, la forma de representarlas en la notacin algortmica y las
correspondientes sentencias FORTRAN para poder utilizarlas en
nuestros programas.
Estructura secuencial
La estructura secuencial es la ms sencilla de todas, simplemente indica
al procesador que debe ejecutar de forma consecutiva una lista de
acciones (que pueden ser, a su vez, otras estructuras de control); para
construir una secuencia de acciones basta con escribir cada accin en
una linea diferente. A continuacin se muestra una composicin secuencial de acciones en notacin
algortmica y su equivalente JAVA.
leer a
leer b
c a + b
escribir c
Dado que las variables numricas a y b ya estuvieran
declaradas y hayan sido ledas, entonces las dos ltimas
instrucciones se escriben as en Java:
c = a + b ;
System.out.println( Valor de c= + c ) ;
A continuacin, la implementacin en Java con su correspondiente salida:
import java.io.* ; // Importa el paquete de entrada / salida (input / output)
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
114
class EstructuraSecuencial1 {
// Mtodo principal:
public static void main( String args[ ] ) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
double a, b, c; // Declaracin de las variables reales a, b y c.
// Lectura, va teclado, de las variables a y b:
System.out.print( "Digite el valor de la variable a: " ) ;
a = Double.parseDouble( br.readLine( ) ) ;
System.out.print( "Digite el valor de la variable b: " ) ;
b = Double.parseDouble( br.readLine( ) ) ;
// suma los valores de las variables a y b y lo asigna o
// guarda en la variable c:
c = a + b ;
// Muestra el valor de c:
System.out.println( " a + b = " + c ) ;
System.exit( 0 ) ; // Termine el programa (salir del sistema)
} // Fin del mtodo main( )
} // Fin de la clase EstructuraSecuencial1
Existe una forma alternativa de expresar una estructura secuencial escribiendo varias acciones en la
misma lnea pero utilizando el punto y coma ( ; ) como separador. Sin embargo, esta ltima notacin
es desaconsejable puesto que puede llegar a hacer el cdigo bastante difcil de leer.
leer a; leer b
c a + b; escribir c
Dado que las variables numricas a y b ya estuvieran
declaradas y hayan sido ledas, entonces las dos ltimas
instrucciones se escriben as en Java:
c = a + b ; System.out.println( Valor de c= + c ) ;
En Java:
import java.io.* ; // Importa el paquete de entrada / salida (input / output)
class EstructuraSecuencial2 {
public static void main( String args[ ] ) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Lectura, va teclado, de las variables a y b:
System.out.print( "Digite el valor de la variable a: " ) ; double a =
Double.parseDouble( br.readLine( ) ) ;
System.out.print( "Digite el valor de la variable b: " ) ; double b =
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
115
Double.parseDouble( br.readLine( ) ) ;
// Calcule c y mustrelo:
double c = a + b ; System.out.println( " a + b = " + c ) ;
System.exit( 0 ) ; // Termine el programa (salir del sistema)
} // Fin del mtodo main( )
} // Fin de la clase EstructuraSecuencial2
Por ltimo, es necesario sealar un aspecto importante de la composicin secuencial y es que no es
conmutativa.
Estructura alternativa
La estructura alternativa permite bifurcar el flujo del programa en funcin de una expresin lgica;
disponemos de tres estructuras alternativas diferentes: alternativa simple, alternativa doble y
alternativa mltiple.
Estructura alternativa simple
Esta estructura permite evaluar una expresin lgica y en funcin de dicha evaluacin ejecutar una
accin (o composicin de acciones) o no ejecutarla; tambin se la suele denominar SI-ENTONCES. A
continuacin se muestra la notacin algortmica y JAVA para la estructura alternativa simple.
si <expresin lgica> entonces
acciones
fin_si
En java es:
if ( <expresin lgica> ) {
acciones
}
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
116
En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es positivo no nulo:
si radio > 0 entonces
longitud = 2 * PI * radio
fin_si
En Java:
if ( radio > 0 ) {
longitud = 2 * Math.PI * radio ;
}
Estructura alternativa doble
La estructura alternativa doble es similar a la
anterior con la salvedad de que en este tipo
de estructura se indican acciones no slo
para la rama verdadera sino tambin para
la falsa; es decir, en caso de que la
expresin lgica evaluada sea cierta se
ejecutan una accin o grupo de acciones y en
el caso de que sea falsa se ejecuta un grupo
diferente de acciones. La sintxis en la
notacin algortmica y en JAVA son las que
se muestran a continuacin:
si <expresin lgica> entonces
acciones
si no
acciones
fin_si
En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es positivo no nulo
y, en caso contrario, se proporciona un mensaje de error:
si radio>0 entonces
longitud = 2piradio
si no
escribir Radio incorrecto
fin_si
En java es:
if ( <expresin lgica> ) {
acciones
}
else {
acciones
}
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
117
En Java:
if ( radio > 0 ) {
longitud = 2 * Math.PI * radio ;
}
else {
System.out.println( Error ) ;
}
Ejemplo:- Informar si un estudiante ha superado o no un determinado examen consistente en 20
preguntas de igual valor y calcular su nota en caso de aprobar.
leer num_correctas
si num_correctas < 12 entonces
escribir No ha superado Vd. el examen
faltan = 12 - num_correctas
escribir Le faltaron , faltan
si_no
nota = num_correctas * 0.25
escribir aprob Vd. con un , nota
fin_si
En Java:
import java.io.* ;
class AprobarExamen1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
String nombre ;
int numOk, faltan ;
float nota ;
// Entrada de datos:
System.out.print( "Digite su nombre : " ) ;
nombre = br.readLine( ) ;
System.out.print( "Digite el numero de respuestas correctas (1 a 20): " ) ;
numOk = Integer.parseInt( br.readLine( ) ) ;
// Sentencia de decisin if:
// *************************
if( numOk < 12 ) {
System.out.println( nombre + ", Ud. NO ha ganado el examen!!" ) ;
faltan = 12 - numOk ;
System.out.println( "Le faltaron " + faltan +
" respuestas correctas para obtener 3.0 !!" ) ;
}
else {
nota = numOk * 0.25F ;
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
118
System.out.println( nombre + ", Ud. ha ganado el examen con " +
"una nota de " + nota ) ;
}
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase AprobarExamen1
Salida:
Estructura multialternativa
Esta estructura evala una expresin que pueda tomar n valores (enteros, caracteres y lgicos pero
nunca reales) y ejecuta una accin o grupo de acciones diferente en funcin del valor tomado por la
expresin selectora.
La sintaxis de esta estructura es
la siguiente:
segun expresin
caso valor1:
accin 1
caso valor2:
accin 2
...
caso valorN:
accin n
otro caso:
accin
fin segn
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
119
En el siguiente ejemplo se proporciona como salida el nmero de das de un mes dado:
segun mes
caso 1,3,5,7,8,10,12:
escribir 31
caso 4,6,9,11:
escribir 30
caso 2:
escribir 28
otro caso:
escribir Mes incorrecto
fin segn
A continuacin, la implementacin en Java:
import java.io.* ; // Importa el paquete de entrada / salida (input / output)
class EstructuraMultialternativa1_switch {
// Mtodo principal:
public static void main( String args[ ] ) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
int mes ; // Declaracin de la variable entera mes
// Lectura, va teclado, de la variable entera mes
System.out.print( "Digite un numero entero [1 a 12] para el mes: " ) ;
mes = Integer.parseInt( br.readLine( ) ) ;
// Se utilizar una instruccin switch para determinar el nmero de
// das del mes digitado (nmero entero de 1 a 12):
La implementacin de la estructura multialternativa se escribe as, en Java:
switch( expresin ) { // Llave de apertura del bloque switch
case valor1:
// Accin 1: secuencia de instrucciones
break ;
case valor2:
// Accin 2: secuencia de instrucciones
break ;
case valorN:
// Accin N: secuencia de instrucciones
break ;
default: // El caso default: es opcional
// Accin: secuencia de instrucciones
break ; // Aqu, el break ; es opcional, pues es la ltima del bloque switch
} // Llave de cierre del bloque switch
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
120
switch( mes ) { // LLave de apertura del switch
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println( "El mes " + mes + " tiene 31 dias." ) ;
break ;
case 4:
case 6:
case 9:
case 11:
System.out.println( "El mes " + mes + " tiene 30 dias." ) ;
break ;
case 2:
System.out.println( "Si el anio NO es bisiesto, el mes " + mes + " tiene 28 dias." ) ;
System.out.println( "Si el anio es bisiesto, el mes " + mes + " tiene 29 dias." ) ;
break ;
default:
System.out.println( "ERROR al digitar el numero para el mes" ) ;
break ; // Aqu, este break; es opcional.
} //LLave de cierre del switch
System.exit( 0 ) ; // Termine el programa (salir del sistema)
} // Fin del mtodo main( )
} // Fin de la clase EstructuraSecuencial1
Nota: Obsrvese que es posible que un caso conste de mltiples valores.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
121
Estructura repetitiva
La estructura repetitiva o iterativa permite, como su propio nombre lo indica, repetir una accin (o
grupo de acciones); dicha repeticin puede llevarse a cabo un nmero prefijado de veces o depender
de la evaluacin de una expresin lgica. Existen tres tipos de estructuras repetitivas: desde-hasta (
Para), mientras y repetir-hasta.
Estructura desde-hasta ( Para)
Esta estructura permite repetir la ejecucin de una accin o de un grupo de acciones un nmero
determinado de veces; la sintxis es la siguiente:
desde indice = inicio hasta fin [con valor de paso] hacer
accin
fin desde
A continuacin se muestran algunos ejemplos:
Seudocdigo:
desde n1 hasta 10 hacer
escribir n
fin desde
Cdigo Java:
for( int n = 1; n <= 10; n = n + 1 ) {
System.out.println( n = + n ) ;
}
El ciclo anterior imprime por pantalla los nmeros del 1 al 10.
Ahora, preste atencin al siguiente seudocdigo:
desde n10 hasta 0 hacer
escribir n
La estructura repetitiva desde-hasta ( Para) se implementa as, en Java:
for( inicializacin; condicin; iteracin ) {
// Accin: secuencia de instrucciones
}
1. El ciclo ( bucle) for es controlado por una variable que, por su oficio, tambin se denomina variable de
control.
2. En su forma ms comn, la parte de inicializacin del ciclo asigna un valor inicial a la variable de control
del ciclo.
3. La condicin es una expresin booleana que analiza la variable de control del ciclo. Si el resultado de ese
anlisis es true (verdadero), el ciclo for contina. Si es false (falso), el ciclo termina.
4. La expresin iteracin determina cmo cambia el valor de la variable de control del ciclo en cada iteracin
del mismo.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
122
fin desde
que, escrito en cdigo Java, es:
for( int n = 10; n <= 0; n = n + 1 ) {
System.out.println( n = + n ) ;
}
El bucle anterior no se ejecuta nunca puesto que, de entrada, la condicin n <= 0 (con n = 10) arroja
false. Qu ocurrira si, en el ciclo anterior, se cambia < por > ? Analice y responda !!
Si queremos hacer lo anterior, por ejemplo con paso 2, el seudocdigo se puede escribir as:
desde n10 hasta 0 con paso 2 hacer
escribir n
fin desde
que, escrito en Java, es:
for( int n = 10; n >= 0; n = n - 2 ) {
System.out.println( n = + n ) ;
}
Este bucle escribe los nmeros pares de 10 a 0 en orden inverso.
La siguiente aplicacin Java resume estos casos:
class CicloFor1 {
public static void main( String args[ ] ) {
int n ; // Declara la variable entera n. sta,
// ser la variable de control del ciclo.
// Ciclo for con paso unitario positivo:
for( n = 1; n <= 10; n = n + 1 ) {
System.out.print( n + ", " ) ;
}
System.out.println( "\n Ahora, el ciclo for con el paso negativo (-2):" ) ;
// Ciclo for con paso negativo (-2):
for( n = 10; n >= 0; n = n - 2 ) {
System.out.print( n + ", " ) ;
}
System.out.println( ) ;
System.exit( 0 ) ;
}
}
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
123
Salida:
Estructura mientras (while)
Esta estructura repite una accin o grupo de acciones
mientras una expresin lgica sea cierta; la sintxis en la
notacin algortmica y en JAVA es la siguiente:
mientras <expresin lgica> hacer
accin
fin mientras
Un aspecto muy importante de la presente estructura de control es que si la expresin lgica es
inicialmente falsa el bucle no se ejecuta ni una sola vez; es decir, la estructura mientras supone que el
bucle iterar 0 ms veces.
A continuacin se muestra un ejemplo que solicita al usuario el radio de una circunferencia mientras
el radio introducido sea incorrecto:
mientras radio<0 hacer
escribir Radio?
leer radio
fin desde
En Java:
import java.io.* ; // Importa el paquete de entrada / salida (input / output)
class EstructuraMientras1 {
// Mtodo principal:
public static void main( String args[ ] ) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
double radio ; // Declaracin de la variable real radio
// Lectura, va teclado, de la variable radio:
System.out.print( "Digite el valor del radio (cm): " ) ;
radio = Double.parseDouble( br.readLine( ) ) ;
System.out.println( "Radio antes del ciclo: " + radio ) ;
As queda en Java:
while( <Condicin> ) {
// Accin: conjunto de
// instrucciones que conforman el
// cuerpo del ciclo.
}
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
124
System.out.println( "*******************************" ) ;
while( radio < 0 ) { // LLave de apertura del bloque while
// Lee de nuevo, va teclado, el radio:
System.out.print( "Digite el valor [ >= 0 ] del radio (cm): " ) ;
radio = Double.parseDouble( br.readLine( ) ) ;
System.out.println( "Radio dentro del ciclo: " + radio ) ;
} // LLave de cierre del bloque while
System.out.println( "*******************************" ) ;
// Muestra el ltimo valor del radio:
System.out.println( "Ultimo valor del radio: " + radio ) ;
System.exit( 0 ) ; // Termine el programa (salir del sistema)
} // Fin del mtodo main( )
} // Fin de la clase EstructuraMientras1
Notar que mientras radio < 0 el ciclo se ejecuta.
Ahora, note en la siguiente salida, que si desde la primera vez se digita un radio positivo,
entonces el ciclo while no se ejecuta:
Estructura haga-mientras (do-while)
Esta estructura repite una accin o grupo de acciones mientras una expresin lgica sea verdadera.
La sintxis en la notacin algortmica es la siguiente:
haga
accin
mientras <expresin lgica>
As queda en Java:
do {
// Accin: conjunto de
// instrucciones que conforman el
// cuerpo del ciclo.
} while( <Condicin> ) ;
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
125
Un aspecto muy importante de la presente estructura de control es que la expresin lgica se evala al
final; por tanto, el bucle se ejecuta al menos una vez, como una alternativa a la estructura anterior
(while), la cual podra nunca ejecutarse. El siguiente diagrama de flujo ilustra el ciclo haga-mientras:
Se aplicar la estructura de control do-while del lenguaje de programacin Java, en la
implementacin de un sencillo men:
import java.io.*;
class Menu3 {
public static void main( String args[] ) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
int opcion;
do {
System.out.println( " Opciones del menu:" ) ;
System.out.println( " ******************" ) ;
System.out.println( ) ;
System.out.println( " 1.- Opcion 1" ) ;
System.out.println( " 2.- Opcion 2" ) ;
System.out.println( " 3.- Opcion 3" ) ;
System.out.println( " 4.- Opcion 4" ) ;
System.out.println( " 5.- Terminar" ) ;
System.out.println( ) ;
System.out.print( "\n Ingrese su opcion: " ) ;
Accin
Expresin
lgica
Falso
Verdadero
Punto de entrada
Punto de salida
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
126
opcion = Integer.parseInt( br.readLine( ) ) ;
} while( opcion < 1 || opcion > 5 ) ;
switch( opcion ) {
case 1:
case 2:
case 3:
case 4:
System.out.println( "\nUsted ha seleccionado la opcion No. " + opcion ) ;
break;
case 5:
System.out.println( "\nUsted ha seleccionado Terminar\n" ) ;
System.exit( 0 );
} //Fin del switch
} //Fin del main( )
}//Fin de la clase Menu3
A continuacin, la salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
127
Ejercicios Resueltos
Ejercicio 1:- En una playa de estacionamiento cobran $ 2.5 por hora o fraccin. Disee un
algoritmo que determine cunto debe pagar un cliente por el estacionamiento de su vehculo,
conociendo el tiempo de estacionamiento en horas y minutos.
Algoritmo 1
INICIO
// Declaracin de variables
ENTERO horas, minutos
REAL pago
// Entrada de datos
LEER horas, minutos
// Si hay alguna fraccin de hora, incrementa las horas a pagar en una unidad
SI( minutos > 0 )
horas = horas + 1
// Determina el importe a pagar
pago = horas * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
As queda en Java:
import java.io.* ;
class CobroEstacionamiento1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
int horas, minutos ;
float pago ;
// Entrada de datos:
System.out.print( "Digite el numero [entero] de horas: " ) ;
horas = Integer.parseInt( br.readLine( ) ) ;
System.out.print( "Digite el numero de minutos [0 a 59]: " ) ;
minutos = Integer.parseInt( br.readLine( ) ) ;
// Si hay alguna fraccin de hora, incrementa las horas a
// pagar en una unidad:
if( minutos > 0 ) {
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
128
horas += 1 ; // Equivalente a: horas = horas + 1 ;
}
// Determina el importe a pagar:
pago = (float) (horas * 2.5) ; // Promocione a (casting) tipo float
// Salida de resultados:
System.out.println( "Valor a pagar: $" + pago ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase CobroEstacionamiento1
Salida:
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Determina el nmero de horas a pagar
SI( minutos > 0 )
horasPagar = horas + 1
SINO
horasPagar = horas
// Determina el importe a pagar
pago = horasPagar * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
En Java queda as:
import java.io.* ;
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
129
class CobroEstacionamiento2 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
int horas, minutos, horasPagar ;
float pago ;
// Entrada de datos:
System.out.print( "Digite el numero [entero] de horas: " ) ;
horas = Integer.parseInt( br.readLine( ) ) ;
System.out.print( "Digite el numero de minutos [0 a 59]: " ) ;
minutos = Integer.parseInt( br.readLine( ) ) ;
// Determina el nmero de horas a pagar:
if( minutos > 0 ) {
horasPagar = horas + 1 ;
}
else {
horasPagar = horas ;
}
// Determina el importe a pagar:
pago = (float) (horasPagar * 2.5) ; // Promocione a (casting) tipo float
// Salida de resultados:
System.out.println( "Valor a pagar: $" + pago ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase CobroEstacionamiento2
Salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
130
Ejercicio 2:- Disee un algoritmo que determine si n nmero es o no es, par positivo.
Algoritmo
INICIO
// Declaracin de variables
REAL numero
CADENA tipoNumero
// Entrada de datos
LEER numero
// Determina si el nmero es o no es, par positivo
SI( (numero %2 ==0) && (numero > 0) )
tipoNumero = "El nmero es par positivo"
SINO
tipoNumero = "El nmero no es par positivo"
// Salida de resultados
IMPRIMIR tipoNumero
FIN
As queda en Java:
import java.io.* ;
class EsParPositivo1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
float numero ;
String tipoNumero ;
// Entrada de datos:
System.out.print( "Digite un numero: " ) ;
numero = Float.parseFloat( br.readLine( ) ) ;
// Determina si el nmero es o no es, par positivo:
if( (numero %2 ==0) && (numero > 0) ) {
tipoNumero = "El numero es par positivo" ;
}
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
131
else {
tipoNumero = "El numero NO es par positivo" ;
}
// Salida de resultados:
System.out.println( tipoNumero ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase EsParPositivo1
Salida:
Ejercicio 3:- Disee un algoritmo que lea tres nmeros y determine el nmero mayor.
Algoritmo
INICIO
// Declaracin de variables
REAL numero1, numero2, numero3, numeroMayor
// Entrada de datos
LEER numero1, numero2, numero3
// Determina el mayor
numeroMayor = numero1
SI( numero2 > numeroMayor )
numeroMayor = numero2
SI( numero3 > numeroMayor )
numeroMayor = numero3
// Salida de resultados
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
132
IMPRIMIR numeroMayor
FIN
As queda en Java:
import java.io.* ;
class NumMay1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
float numero1, numero2, numero3, numeroMayor ;
// Entrada de datos:
System.out.print( "Digite el primer numero: " ) ;
numero1 = Float.parseFloat( br.readLine( ) ) ;
System.out.print( "Digite el segundo numero: " ) ;
numero2 = Float.parseFloat( br.readLine( ) ) ;
System.out.print( "Digite el tercer numero: " ) ;
numero3 = Float.parseFloat( br.readLine( ) ) ;
// Determina el nmero mayor:
numeroMayor = numero1 ;
if( numero2 > numeroMayor )
numeroMayor = numero2 ;
if( numero3 > numeroMayor )
numeroMayor = numero3 ;
// Salida de resultados:
System.out.println( "Numero mayor = " + numeroMayor ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase NumMay1
Salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
133
Ejercicio 4:- Una tienda ha puesto en oferta la venta al por mayor de cierto producto, ofreciendo
un descuento del 15% por la compra de ms de 3 docenas y 10% en caso contrario. Adems por
la compra de ms de 3 docenas se obsequia una unidad del producto por cada docena en exceso
sobre 3. Disee un algoritmo que determine el monto de la compra, el monto del descuento, el
monto a pagar y el nmero de unidades de obsequio por la compra de cierta cantidad de docenas
del producto.
Algoritmo
INICIO
// Declaracin de variables
REAL montopag, montocom, montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
LEER docenas, precio
// Determina el monto de la compra
montocom = docenas * precio
// Determina el monto del descuento y el obsequio
SI( docenas > 3 ) {
montodes = 0.15 * montocom
obsequio = docenas - 3
}
SINO {
montodes = 0.10*montocom
obsequio = 0
}
// Determina el monto a pagar
montopag = montocom - montodes
// Salida de resultados
IMPRIMIR montocom, montodes, montopag, obsequio
FIN
As queda en Java:
import java.io.* ;
class OfertaDocenasProducto1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
float montopag, montocom, montodes, precio ;
int docenas, obsequio ;
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
134
// Entrada de datos:
System.out.print( "Digite el precio de la docena del producto: $ " ) ;
precio = Float.parseFloat( br.readLine( ) ) ;
System.out.print( "Cuantas docenas del producto has comprado? " ) ;
docenas = Integer.parseInt( br.readLine( ) ) ;
// Determina el monto ( valor) de la compra:
montocom = docenas * precio ;
// Determina el monto del descuento y el obsequio:
if( docenas > 3 ) {
montodes = 0.15f * montocom ;
obsequio = docenas - 3 ;
}
else {
montodes = 0.10f * montocom ;
obsequio = 0 ;
}
// Determina el monto a pagar
montopag = montocom - montodes ;
// Salida de resultados:
System.out.println( "Valor de la compra: $ " + montocom ) ;
System.out.println( "Valor del descuento: $ " + montodes ) ;
System.out.println( "Neto a pagar: $ " + montopag ) ;
System.out.println( "Por su compra, se le ha obsequiado: " +
obsequio + " docenas." ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase OfertaDocenasProducto1
Salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
135
Ejercicio 5:- Disee un algoritmo que lea un nmero de tres cifras y determine si es o no capica.
Un nmero es capica si es igual al revs del nmero.
Observacin
Como el nmero tiene tres cifras, para ser capica basta con que la cifra de las unidades sea igual
a la cifra de las centenas. Por ejemplo: 353, 878, etc.
Algoritmo
INICIO
// Salida de resultados
ENTERO numero, unidades, centenas
CADENA tipoNumero
// Entrada de datos
LEER numero
// Si el nmero tiene tres cifras...
SI(numero >= 100 && numero <= 999 ){
// Determina la cifra de las unidades y la cifra de las centenas
unidades = numero % 10
centenas = numero / 100
// Determina el tipo de nmero entre capica o no capica
SI( unidades == centenas )
tipoNumero = "El nmero es capica"
SINO
tipoNumero = "El nmero no es capica"
// Muestra el tipo de nmero
IMPRIMIR tipoNumero
}
SINO
IMPRIMIR "Ingrese un nmero de tres cifras"
FIN
As queda en Java:
import java.io.* ;
class Capicua1 {
public static void main( String args[ ] ) throws IOException {
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
136
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Como el nmero tiene tres cifras, para ser capica basta con que
// la cifra de las unidades sea igual a la cifra de las centenas.
// Por ejemplo: 353, 878, etc.
// Declaracin de variables:
int numero, unidades, centenas ;
String tipoNumero ;
// Entrada de datos:
System.out.print( "Digite un numero entero de tres cifras: " ) ;
numero = Integer.parseInt( br.readLine( ) ) ;
// Si el nmero tiene tres cifras:
if(numero >= 100 && numero <= 999 ){
// Determina la cifra de las unidades y la cifra de las centenas:
unidades = numero % 10 ;
centenas = numero / 100 ;
// Determina el tipo de nmero entre capica o no capica:
if( unidades == centenas )
tipoNumero = "El numero es capicua" ;
else
tipoNumero = "El numero no es capicua" ;
// Muestra el tipo de nmero
System.out.println( tipoNumero ) ;
}
else
System.out.println( "El numero ingresado debe tener tres cifras!!" ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase Capicua1
Salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
137
Ejercicio 6:- Disee un algoritmo que califique el puntaje obtenido en el lanzamiento de tres
dados con base a la cantidad de 6s obtenidos, de acuerdo a lo siguiente: tres seis, excelente; dos
seis, bien; un seis, regular; ningn seis, mal.
Algoritmo
INICIO
// Declaracin de variables
ENTERO dado1, dado2, dado3
CADENA calificacion
// Entrada de datos
LEER dado1, dado2, dado3
// Determina la calificacin
SI( dado1 + dado2 + dado3 == 18 )
calificacion = "Excelente"
SINO SI( dado1 + dado2 == 12 || dado2 + dado3 == 12 || dado3 + dado1 == 12 )
calificacion = "Bin"
SINO SI( dado1 == 6 || dado2 == 6 || dado3 == 6 )
calificacion = "Regular"
SINO
calificacion = "Mal"
// Salida de resultados
IMPRIMIR calificacion
FIN
As queda en Java:
import java.io.* ;
class LanzarTresDados1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de variables:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
138
int dado1, dado2, dado3 ;
String calificacion ;
// Entrada de datos:
System.out.print( "Digite el numero de puntos del primer dado: " ) ;
dado1 = Integer.parseInt( br.readLine( ) ) ;
System.out.print( "Digite el numero de puntos del segundo dado: " ) ;
dado2 = Integer.parseInt( br.readLine( ) ) ;
System.out.print( "Digite el numero de puntos del tercer dado: " ) ;
dado3 = Integer.parseInt( br.readLine( ) ) ;
// Determina la calificacin:
if( dado1 + dado2 + dado3 == 18 )
calificacion = "Excelente" ;
else if( dado1 + dado2 == 12 || dado2 + dado3 == 12 || dado3 + dado1 == 12 )
calificacion = "Bien" ;
else if( dado1 == 6 || dado2 == 6 || dado3 == 6 )
calificacion = "Regular" ;
else
calificacion = "Mal" ;
// Salida de resultados
System.out.println( calificacion ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase LanzarTresDados1
Salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
139
Ejercicio 7:- Una compaa dedicada al alquiler de automviles cobra un monto fijo de $ 30 para
los primeros 300 km de recorrido. Para ms de 300 km y hasta 1000 km, cobra un monto
adicional de $ 0.15 por cada kilmetro en exceso sobre 300. Para ms de 1000 km cobra un
monto adicional de $ 0.10 por cada kilmetro en exceso sobre 1000. Los precios ya incluyen el
18% del impuesto general a las ventas, IGV. Disee un algoritmo que determine el monto a pagar
por el alquiler de un vehculo y el monto includo del impuesto.
Algoritmo
INICIO
// Declaracin de variables
REAL kilomrec, montopag, montoigv, montofijo = 30, igv = 0.18
// Entrada de datos
LEER kilomrec
// Determina el monto a pagar
SI( kilomrec <= 300 )
montopag = montofijo
SINO SI( kilomrec <= 1000 )
montopag = montofijo + 0.15 * (kilomrec - 300)
SINO
montopag = montofijo + 0.15 * 700 + 0.10 * (kilomrec - 1000)
// Segn el enunciado, para determinar el monto del impuesto (montoigv) tenga en
// cuenta que: x + igv * x = montopag, de donde x = montopag / (1 + igv).
// Entonces montoigv = igv * x = igv * montopag / (1 + igv); o sea:
montoigv = igv * montopag / (1 + igv)
// Salida de resultados
IMPRIMIR montopag, montoigv
FIN
As queda en Java:
import java.io.* ;
class AlquilerAutos1 {
public static void main( String args[ ] ) throws IOException {
// Creacin del objeto br de la clase BufferedReader para invocar el
// mtodo readLine( ) que lee datos ingresados va teclado:
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
// Declaracin de dos constantes:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
140
final double MONTOFIJO = 30, IGV = 0.18 ;
// Declaracin de variables:
double kilomrec, montopag, montoigv ;
// Entrada de datos:
System.out.print( "Digite el numero de kilometros recorridos: " ) ;
kilomrec = Double.parseDouble( br.readLine( ) ) ;
// Determina el monto a pagar:
if( kilomrec <= 300 )
montopag = MONTOFIJO ;
else if( kilomrec <= 1000 )
montopag = MONTOFIJO + 0.15 * (kilomrec - 300) ;
else
montopag = MONTOFIJO + 0.15 * 700 + 0.10 * (kilomrec - 1000) ;
// Segn el enunciado, para determinar el monto del impuesto (montoigv) tenga en
// cuenta que: x + IGV * x = montopag, de donde x = montopag / (1 + IGV).
// Entonces montoigv = IGV * x = IGV * montopag / (1 + IGV); o sea:
montoigv = IGV * montopag / (1 + IGV) ;
// Salida de resultados
System.out.println( "Valor a pagar: $ " + montopag ) ;
System.out.println( "Por impuesto, Ud. ha pagado $ " + montoigv ) ;
System.exit( 0 ) ;
} //Fin del mtodo main( )
} // Fin de la clase AlquilerAutos1
Salida:
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
141
Ejercicio 8:- Disee un algoritmo que determine quines son contemporneos entre Juan, Mario
y Pedro.
Algoritmo
INICIO
// Declaracin de variables
ENTERO juan, mario, pedro
CADENA contemporaneos
// Entrada de datos
LEER juan, mario, pedro
// Determina quienes son contemporneos
SI( juan == mario && mario == pedro )
contemporaneos = "Los tres son contemporneos"
SINO SI( juan == mario )
contemporaneos = "Juan y Mario son contemporneos"
SINO SI( juan == pedro )
contemporaneos = "Juan y Pedro son contemporneos"
SINO SI( mario == pedro )
contemporaneos = "Mario y Pedro son contemporneos"
SINO
contemporaneos = "No hay contemporneos"
// Salida de resultados
IMPRIMIR contemporaneos
FIN
Ejercicio 9:- El promedio de prcticas de un curso se calcula con base a cuatro prcticas
calificadas de las cuales se elimina la nota menor y se promedian las tres notas ms altas. Disee
un algoritmo que determine la nota eliminada y el promedio de prcticas de un estudiante.
Algoritmo
INICIO
// Declaracin de variables
REAL pc1, pc2, pc3, pc4, pcmenor, promedio
// Entrada de datos
LEER pc1, pc2, pc3, pc4
// Determina la nota menor
pcmenor = pc1
SI( pc2 < pcmenor )
pcmenor = pc2
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
142
SI( pc3 < pcmenor )
pcmenor = pc3
SI( pc4 < pcmenor )
pcmenor = pc4
// Determina el promedio
promedio = (pc1 + pc2 + pc3 + pc4 - pcmenor ) / 3
// Salida de resultados
IMPRIMIR promedio, pcmenor
FIN
Ejercicio 10:- Disee un algoritmo que lea tres longitudes y determine si forman o no un
tringulo. Si es un tringulo, determine de qu tipo de tringulo se trata entre: equiltero (si tiene
los tres lados iguales), issceles (si tiene dos lados iguales) o escaleno (si tiene tres lados
desiguales). Considere que para formar un tringulo se requiere que: "el lado mayor sea menor
que la suma de los otros dos lados".
Algoritmo
INICIO
// Declaracin de variables
REAL L1, L2, L3, suma
CADENA tipoRectangulo
// Entrada de datos
LEER L1, L2, L3
// Determina el lado mayor
mayor = L1
SI( L2 > mayor )
mayor = L2
SI( L3 > mayor )
mayor = L3
// Determina la suma de los lados a excepcin del lado mayor:
suma = L1 + L2 + L3 - mayor
// Determina de que tipo de tringulo se trata
SI( mayor < suma ){
SI( ( L1 == L2 ) && ( L2 == L3 ) )
tipoRectangulo = "Tringulo equiltero"
SINO SI( ( L1 == L2 ) || ( L2 == L3 ) || ( L3 == L1 ) )
tipoRectangulo = "Tringulo issceles"
SINO
tipoRectangulo = "Tringulo escaleno"
}
SINO
tipoRectangulo = "No es un tringulo"
// Salida de resultados
IMPRIMIR tipoRectangulo
FIN
Ejercicio 11:- Disee un algoritmo que lea tres nmeros enteros y determine el menor valor
positivo. Si los nmeros positivos son iguales, dar como menor a cualquiera de ellos.
Algoritmo
L1
L3
L2
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
143
INICIO
// Declaracin de variables
ENTERO a, b, c, menor
// Entrada de datos
LEER a, b, c
// Determina el menor
// ****************
// Aqu a, b y c podran ser positivos:
SI( a > 0 ){
menor = a
SI( b > 0 && b < menor )
menor = b
SI( c > 0 && c < menor )
menor = c
}
// Aqu slo b y c podran ser positivos
SINO SI( b > 0 ){
menor = b
SI( c > 0 && c < menor )
menor = c
}
// Aqu slo c podran ser positivos
SINO SI( c > 0 ){
menor = c
}
// Guardamos el indicador -1 para saber que no hay positivos:
SINO
menor = -1
// Salida de resultados
SI( menor != -1 )
IMPRIMIR menor
SINO
IMPRIMIR "No se ingres ningn nmero positivo"
FIN
Ejercicio 12:- Disee un algoritmo que lea tres nmeros y los imprima de mayor a menor y de
menor a mayor.
Algoritmo
INICIO
// Declaracin de variables
REAL n1, n2, n3, mayor, menor, medio
// Entrada de datos
LEER n1, n2, n3
// Determina el menor:
menor = n1
SI( n2 < menor )
menor = n2
SI( n3 < menor )
menor = n3
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
144
// Determina el mayor:
mayor = n1
SI( n2 > mayor )
mayor = n2
SI( n3 > mayor )
mayor = n3
// Determina el medio:
medio = n1+n2+n3-mayor-menor
// Imprime en orden ascendente:
IMPRIMIR menor, medio, mayor
// Imprime en orden descendente
IMPRIMIR mayor, medio, menor:
FIN
Ejercicio 13:- A continuacin, se muestra una aplicacin Java que solicita nmeros va teclado y
determina el menor y el mayor de ellos:
import java.io.* ;
class MinMay3A {
public static void main( String args[ ] ) throws IOException {
InputStreamReader isr = new InputStreamReader( System.in ) ;
BufferedReader br = new BufferedReader( isr ) ;
//BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ) ;
System.out.print( "Digite la cantidad de numeros que va a ingresar: " ) ;
int n = Integer.parseInt( br.readLine( ) ) ;
System.out.println( ) ; //Deje una lnea en blanco.
double num = 0, min = 0, may = 0 ;
for( int k = 1; k <= n; k ++ ) {
System.out.print( "Digite un numero: " ) ;
num = Double.parseDouble( br.readLine( ) ) ;
System.out.println( ) ; //Deje una lnea en blanco.
if( k == 1 ) {
min = num ; //Que el PRIMER nmero ledo haga de
may = num ; //nmero menor y de nmero mayor.
}
if( num < min ) {
min = num ;
}
if( num > may ) {
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
145
may = num ;
}
}
System.out.println( "*****************************************" ) ;
System.out.println( "\nValor minimo: " + min ) ;
System.out.println( ) ; //Deje una lnea en blanco.
System.out.println( "Valor maximo: " + may ) ;
System.out.println( ) ; //Deje una lnea en blanco.
System.exit( 0 ) ;
}
}
Salida:
Ejercicio 14:- Disee un algoritmo para obtener el grado de eficiencia de un operario de una
fbrica de tornillos, de acuerdo a las siguientes condiciones que se le imponen para un perodo de
prueba:
- Menos de 200 tornillos defectuosos.
- Ms de 10000 tornillos producidos.
El grado de eficiencia se determina de la siguiente manera:
- Si no cumple niguna de las condiciones, grado 5.
- Si slo cumple la primera condicin, grado 6.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
146
- Si slo cumple la segunda condicin, grado 7.
- Si cumple las dos condiciones, grado 8.
Entonces, en seudocdigo, Las condiciones impuestas por la fbrica son:
tordef < 200 siendo tordef el nmero de tornillos defectuosos
torpro > 10000 siendo torpro el nmero de tornillos producidos
Algoritmo 1
INICIO
// Declaracin de variables
ENTERO torpro, tordef, grado
// Entrada de datos
LEER torpro, tordef
// Determina el grado de eficiencia
SI( tordef < 200 ){
SI( torpro > 10000 )
grado = 8
SINO
grado = 6
}
SINO{
SI( torpro > 10000 )
grado = 7
SINO
grado = 5
}
// Salida de resultados
IMPRIMIR grado
FIN
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO torpro, tordef, grado
// Entrada de datos
LEER torpro, tordef
// Determina el grado de eficiencia:
SI( tordef < 200 && torpro > 10000 )
grado = 8
SINO SI( tordef < 200 )
grado = 6
SINO SI( torpro > 10000 )
grado = 7
SINO
grado = 5
// Salida de resultados
IMPRIMIR grado
FIN
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
147
Ejercicio 15:- Se cuenta con los votos obtenidos por Juan, Pedro y Mara en una eleccin
democrtica a la presidencia de un club. Para ganar la eleccin se debe obtener como mnimo el
50% del total de votos ms 1. En caso que no haya un ganador, se repite la eleccin en una
segunda vuelta, yendo a sta los dos candidatos que obtengan la ms alta votacin. Se anula la
eleccin en caso de producirse un empate doble por el segundo lugar o un empate triple. Disee
un algoritmo que determine el resultado de la eleccin.
Algoritmo
INICIO
// Declaracin de variables:
ENTERO vjuan, vpedro, vmaria, vmingan
CADENA resultado
// Entrada de datos:
LEER vjuan, vpedro, vmaria
// Determina la votacin mnima para ganar:
vmingan = (vjuan + vpedro + vmaria) / 2 + 1
// Determina el resultado de la eleccin:
SI( vjuan >= vmingan )
resultado = "Gana Juan"
SINO SI( vpedro >= vmingan )
resultado = "Gana Pedro"
SINO SI( vmaria >= vmingan )
resultado = "Gana Mara"
SINO SI( vpedro > vjuan && vmaria > vjuan )
resultado = "Pasan a la segunda vuelta Pedro y Mara"
SINO SI( vpedro > vmaria && vjuan > vmaria )
resultado = "Pasan a la segunda vuelta Pedro y Juan"
SINO SI( vmaria > vpedro && vjuan > vpedro )
resultado = "Pasan a la segunda vuelta Mara y Juan "
SINO
resultado = "Eleccin anulada"
// Salida de resultados:
IMPRIMIR resultado
FIN
Ejercicio 16:- Disee un algoritmo que lea un nmero entero de 3 cifras, y forme el mayor
nmero posible con las cifras del nmero ingresado. El nmero formado debe tener el mismo
signo que el nmero ingresado.
Algoritmo
INICIO
// Declaracin de variables:
ENTERO num1, num2, numaux, uni, dec, cen, menor, mayor,medio
// Entrada de datos:
LEER num1
// Si el nmero tiene tres cifras...
SI( ( num1 >= 100 && num1 <= 999 ) || ( num1 >= -999 && num1 <= -100 ) ){
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
148
// Guarda el nmero en una variable auxiliar para preservar el signo:
numaux = num1
// Cambia el signo de num1 en caso de ser negativo:
SI( num1 < 0 )
num1 = -num1
// Determina las cifras del nmero:
cen = num1 / 100
dec = (num1 % 100) / 10
uni = (num1 % 100) % 10
// Determina la cifra menor:
menor = cen
SI( dec < menor )
menor = dec
SI( uni < menor )
menor = uni
// Determina la cifra mayor:
mayor = cen
SI( dec > mayor )
mayor = dec
SI( uni > mayor )
mayor = uni
// Determina la cifra del medio:
medio = cen + dec + uni mayor - menor
// Forma el nuevo nmero:
SI( numaux > 0 )
num2 = mayor * 100 + medio * 10 + menor
SINO
num2 = -1 * (menor * 100 + medio * 10 + mayor)
// Imprime el nuevo nmero:
IMPRIMIR num2
}
SINO
IMPRIMIR "El nmero no tiene tres cifras"
FIN
Ejercicio 17:- Hallar la suma de N nmeros, a travs de una estructura repetitiva
algoritmo suma_nmeros
Entero cantNum, num, auxi
Leer cantNum
auxi = cantNum
SUMA = 0 // la suma parcial es 0 al inicio
MIENTRAS QUE cantNum > 0 HACER
LEER num
SUMA = SUMA+num
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
149
cantNum = cantNum - 1
FIN MIENTRAS
ESCRIBIR la suma de los , auxi , nmeros es , SUMA
Ejercicio 18:- Calcular el factorial de un nmero N, usando la estructura desde-hasta.
Inicio
Entero n, i, fact
leer n
fact = 1
desde i = 1 hasta n hacer
fact = fact * i
fin_desde
escribir el factorial del nmero, n, es, fact
Fin
Ejercicio 19:- Calcular los factoriales de n nmeros ledos por el teclado.
El problema consiste en realizar una primera estructura repetitiva de n iteraciones del algoritmo de
clculo del factorial, que a su vez se efecta con una segunda estructura repetitiva.
Inicio
Entero n, i, j, num, fact
leer n // lectura de la cantidad de nmeros
desde i = 1 hasta n hacer
leer num
fact = 1
desde j = 1 hasta num hacer
fact = fact * j
fin_desde
escribir el factorial del nmero, num, es, fact
fin_desde
Fin
Ejercicio 20:- Escribir un algoritmo que permita calcular el inters producido por un capital a las
tasas de inters comprendidos en el rango desde 10 a 20 % de 2 en 2 puntos, a partir de un capital
dado. Utilice el ciclo mientras.
Inicio
Entero capital, tasa
Real interes
leer capital
tasa = 10
mientras tasa <= 20 hacer
interes = tasa * 0.01 * capital // tasa * capital / 100 = tasa * 0.01 * capital
escribir inters producido, interes
tasa = tasa + 2
fin_mientras
escribir ltimo valor de tasa (fuera del ciclo) = , tasa
Fin
Los sucesivos valores de la tasa sern 10, 12, 14, 16,18,20 y 22; de modo que al tomar tasa el valor
22, se detendr el bucle y se escribir el ltimo valor de tasa. Notar que NO se calcular el inters
para 22, pues este valor hace que la condicin sea falsa produciendo la salida y terminacin del ciclo.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
150
Supongamos que ahora nos interesa conocer este dato de 3 en 3 puntos; para ello se cambia la ltima
lnea del bucle por tasa = tasa + 3. Ahora los valores que tomar tasa sern 10, 13, 16, 19 saltando a
22, el cual ser el ltimo valor que ocasionar la salida del ciclo y se imprimir fuera de l.
Ejercicio 21:- Escribir un programa y una funcin que por medio del paso por valor obtenga el
mximo comn divisor de dos nmeros.
// Algoritmo Maximo_comun_divisor
// Programa principal:
Inicio
Entero x, y, m
leer x, y
m = mcd (x, y)
escribir x, y, m
Fin
// Funcin (en Java se denomina mtodo):
Entero mcd(entero a, entero b)
Inicio
Entero resp
mientras a <> b hacer
si a > b
entonces a = a - b
sino
b = b - a
fin_si
fin_mientras
resp = a
fin
Al ejecutarse este algoritmo se producirn los siguientes resultados:
x y m a b mcd
10 25 10 25
5 15
5
5 5
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
151
Ejercicios de Algoritmos de decisin (selectivos):
1. Elabore un algoritmo que lea tres valores diferentes y determine el mayor, el menor y el promedio.
2. Elabore un programa que valide mediante un mensaje si una pareja (x, y) pertenece o no a la
siguiente funcin: y = 3x - 4.
Ejemplo: la pareja (2,2) s pertenece a esta funcin.
3. Disee un algoritmo que determine e imprima la hora correspondiente al segundo despus de una
hora digitada por el usuario ( hh, mm, ss ).
4. La siguiente ecuacin corresponde a la ecuacin general de segundo grado en la incgnita X o
ecuacin cuadrtica
aX
2
+ bX + c = 0 con a,b y c constantes y a 0
La formula general para hallar su solucin es:
x
b b ac
a
=
2
4
2
A. Elabore un algoritmo para hallar las soluciones reales.
B. Haga la prueba de escritorio para las siguientes ecuaciones.
X
2
- 4X - 5 = 0
X
2
- 4X + 4 = 0
4X
2
- 8X + 3 = 0
Nota: para efectuar la prueba de escritorio use la siguiente propiedad de las races de la ecuacin
de segundo grado: x x
b
a
x x
c
a
1 2 1 2
+ = = ; y
5. Modifique el algoritmo de las ecuacin general de segundo grado para que calcule las races
imaginarias, si existen.
6. Escribir un algoritmo que permita determinar cul es el ganador de la matricula de honor de entre
4 estudiantes . El algoritmo deber hallar la nota definitiva de c/u de ellos (4 materias.) Si es
mayor que 4.5 el alumno podr aspirar a la matricula de honor, de lo contrario no.
7. Disee un algoritmo que determine si un ao ledo por el teclado es o no bisiesto.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
152
8. Disear un algoritmo que permita descomponer un nmero ( 10 <= x <= 999 ) en sus dgitos e
imprimirlos.
9. Elabore un algoritmo que descomponga un nmero entero (mximo de tres cifras) en sus dgitos y
luego imprima cada uno de ellos en letras.
10. Disee un algoritmo que tome un valor entero positivo (mximo cuatro cifras), lo descomponga y
lo imprima invertido pero como un nico nmero entero.
Ejemplo: sea 3845 el nmero digitado se debe mostrar en pantalla el nmero 5483
Nota: para la prueba de escritorio escriba cualquier nmero de cifras decrecientes en uno como
8765, 6543, 3421, etc. y restele su inverso y vera que siempre dar 3087
11. Escriba un algoritmo para la resolucin de una ecuacin de primer grado (ax + b = 0).
12. Disee un algoritmo que lea una fecha como un nmero entero de ocho dgitos (ddmmaaaa), y
luego imprima el mes en letras (ejemplo: si se digita el nmero 02011999 entonces imprime "2 de
enero de 1999.")
13. Lea dos nmeros por teclado y determine si uno es divisor del otro.
14. Se lee un nmero de mximo tres dgitos (verifique que efectivamente sea de mximo tres dgitos)
y se debe determinar si es un nmero capica, es decir, que ledo de izquierda a derecha es igual
que ledo de derecha a izquierda. Por ejemplo: 727, 343, etc.
15. Usted debe realizar un algoritmo para un cajero automtico, que dispone de billetes de algunas
denominaciones existentes (10000, 20000 y 50000), de forma que se le indique una cantidad a
pagar y determine cul es la combinacin apropiada de billetes para formarla. La cantidad que se
va a retirar debe ser un mltiplo de 10000 y el algoritmo debe chequar que as sea.
16. En una universidad se ha variado el sistema de calificaciones, por tanto se requiere un algoritmo
que indique la valoracin en letras cuando se tiene la nota en nmeros, siguiendo la tabla mostrada
a continuacin
Nota Numrica Valoracin en letras
0.0 1.0 P (Psimo)
1.1 2.0 M (Mal)
2.1 2.9 R (Regular)
3.0 4.0 B (Bien)
4.1 5.0 E (Excelente)
17. En una multinacional se cuenta con tres departamentos de ventas, en los cuales los empleados
devengan el mismo salario. Sin embargo se tiene un incentivo de acuerdo al cual, si un
departamento vende ms del 50% del total de ventas, se da una bonificacin del 20% del salario a
los empleados de ese departamento. Considerando el total de ventas como la suma de las ventas
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
153
de los tres departamentos, indique cunto devengarn los empleados de cada uno de los tres
departamentos en un mes dado.
18. Realice un algoritmo que indique el valor de la funcin f(x) para un valor de x determinado por el
usuario. La funcin ha sido definida de la siguiente forma:
19. En una organizacin se tiene a los empleados agrupados por categora, los de categora 1 ganan
$20.000, los de categora 2, $15.000, los de categora 3, $10.000 y los de categora 4, $7.500. Se
quiere un algoritmo que permita determinar cuanto debe pagarse a un empleado si se conoce el
nmero de horas que trabaj durante el mes y la categora a la que pertenece. Se sabe que a todos
se les descuenta un 7.2% por concepto de salud, y si el salario total devengado (mensual) es menos
de 1000.000, se le da un subsidio del 15% sobre su salario mensual (sin descuentos).
20. Se debe leer un nmero y determinar en qu categora se encuentra; se sabe que la categora A,
son los nmeros entre 0 y 2 inclusive, la categora B son los nmeros entre 3 y 6 inclusive, la
categora C, los nmeros 7 y 8, y la categora D el nmero 9. (Adivin, los nmeros validos son
entre 0 y 9).
21. Se quiere determinar el valor de depreciacin de un artculo en una empresa, se sabe que el valor
de depreciacin anual se determina dividiendo el valor de compra del mismo, entre el nmero de
aos de vida til; la vida til se determina de acuerdo a la clase de artculo, los edificios tienen 20
aos, la maquinaria, muebles y enseres, 10 aos, los vehculos 5 aos y los computadores 3.
22. En un concesionario de vehculos, se pagan las comisiones a los vendedores segn el valor de la
venta (ver tabla). Al final del mes se desea saber Cunto gan un vendedor en total por todas las
comisiones, si se sabe que hizo 4 ventas?
Valor de Venta Comisin para el Vendedor
Hasta 10.000.000 2%
Ms de 10 y Menos de 15
millones
4%
Mas de 15 millones 10%
23. En una empresa comercializadora, cada vendedor debe realizar 5 ventas al mes, por cada venta
ganar una comisin de acuerdo a la tabla de comisiones. Cada vendedor tiene un salario bsico
(que usted debe leer) y de acuerdo a la suma del bsico y las comisiones, se le genera un
descuento para salud, pensiones y otros como seala la tabla de descuentos. Usted debe imprimir
el cdigo del vendedor, el total de sus ventas, el total ganado por comisiones, el total devengado
(bsico + comisiones), el total de descuentos, y el salario a pagar por cada empleado.
f(x) = 0 para cualquier otro
valor de x.
10 3
2
+ x x
8 5 + x x
x x x 2 3
2 3
+
10 x
20 10 < < x
20 > x
= ) ( x f
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
154
Valor Venta Comisin Devengado (salario+comisiones) Descuentos
0-1.000.000 5% 0-500.000 5%
1.000.001-1.500.000 7% 500.001-1.000.000 6%
1.500.001 ms 10% 1.000.001 ms 8%
24. El teniente encargado del planetario desea que se disee un algoritmo para que al digitar el
nombre del da indique el astro que dio origen a ese nombre. Recuerde los astros:
Nombre del da Astro
Domingo Sol
Sbado Saturno
Viernes Venus
Jueves Jpiter
Mircoles Mercurio
Martes Marte
Lunes Luna
25. Realice el algoritmo para un algoritmo que calcule si un tringulo es issceles, equiltero o
escaleno dados sus tres lados A, B y C
Issceles => dos lados iguales
Escaleno => A B C
Equiltero => A = B = C
26. Haga un algoritmo que muestre en pantalla si un ngulo es: recto, obtuso o agudo
Recto = 90
Agudo < 90
Obtuso > 90
27. Con relacin a sus ngulos un tringulo puede ser:
Rectngulo => Un ngulo recto
Acutngulo => 3 ngulos agudos
Obtusngulo => 1 ngulo obtuso
Elabore un algoritmo que calcule si un tringulo es rectngulo, acutngulo u obtusngulo.
28. Elabore un algoritmo que seleccione personal para un empleo con las siguientes caractersticas:
mujeres adultas, solteras y que practiquen algn deporte.
29. Para el clculo con inters compuesto se utilizan las siguientes frmulas:
Hallar una cuota mensual conociendo el inters efectivo mensual (i), nmero de meses (n),
y el precio del articulo
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
155
Cuota = Precio x
( )
( )
i i
i
n
n
1
1 1
+
+
Hallar el precio de un articulo conociendo el valor de la cuota mensual, el inters efectivo
mensual (i), y el nmero de meses (n)
Precio = Cuota x
( )
( )
1 1
1
+
+
i
i i
n
n
Hallar el valor futuro de una precio actual conociendo el inters efectivo mensual (i), y el
nmero de meses (n)
Valor Futuro = Precio x (1 + i)
n
Elabore un algoritmo que permita de un men de opciones calcular el valor deseado. (cuota, precio
o valor futuro)
Nota: si i = 30% se debe usar i como: i =
30%
100%
= 0.3
30. Elabore un algoritmo que muestre el dgito que ms se repite en un nmero de 5 cifras, en caso de
no repetirse ninguno imprimir un mensaje que diga "no hay dgitos repetidos".
31. El recargo por trabajar horas nocturnas en una empresa es del 70%, el recargo por trabajar festivos
es del 100%, haga un algoritmo que lea los das laboradas por un empleado, las horas nocturnas el
valor de la hora normal laborada y calcule e imprima el sueldo a pagar junto con el nombre del
empleado.
32. Elabore un algoritmo que tenga cuatro niveles de seguridad para un programa, si el usuario logra
ingresar imprimir el mensaje "Bienvenido", en caso contrario imprimir "Error clave" y el nivel del
error.
33. Realice un algoritmo que lea cuatro nmeros y los muestre ordenados de mayor a menor. Ejemplo:
sean los nmeros 5, 3, 7 y 9, debe mostrar 9, 7, 5 y 3.
34. En un club deportivo se cancela la matricula segn sea la categora del deportista, elabore un
algoritmo que calcule el valor de la matricula si los precios por categora son:
Infantil 5-8 aos $38.000=
Juvenil 9-17 aos $40.100=
Adultos mayores a 18 aos $45.800=
Se debe hacer un recargo a la matricula del 10% para la liga. Los nios menores a 5 aos no
pueden ser matriculados
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
156
35. A los profesores de cierta universidad se les paga por horas ctedra dictadas de 45 minutos.
Elabore un algoritmo que lea el nmero de horas dictadas en un mes, siendo estas horas de 60
minutos, y calcule el pago mensual para el profesor. Tenga en cuenta que a los profesores se les
cancela segn la siguiente categora, donde se indica el precio de la hora ctedra :
4 $ 35.400=
3 $ 29.200=
2 $ 25.000=
1 $ 22.500=
Al final al profesor se le resta el 10% de retencin en la fuente.
Ejercicios sobre Algoritmos repetitivos (ciclos)
36. Realice un algoritmo que imprima en pantalla el conjunto de los (n) mltiplos de un nmero
entero (x) digitado por el usuario.
37. Haga un algoritmo que imprima en pantalla el conjunto de los divisores de un nmero entero (x)
digitado por el usuario.
38. Elabore un algoritmo que calcule el mnimo comn mltiplo (m.c.m) de dos nmeros A y B,
recuerde el m.c.m. como su nombre lo indica es el menor mltiplo comn de dos o mas nmeros.
Ejemplo: sean los nmeros 8 y 6.
m.c.m. (8, 6) = 24
39. Al divisor comn que es mayor que todos los divisores comunes de dos nmeros (A, B) se le
llama mximo comn divisor (m.c.d.). Elabore un algoritmo para calcular el m.c.d. de dos
nmeros. Ejemplo: sea 8 y 12 (investigue el algoritmo de Euclides).
m.c.d. (8,12) = 4
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
157
40. Dos nmeros son amigos, si cada uno de ellos es igual a la suma de los divisores del otro.
Ejemplo: 220 y 284 son amigos por que,
284 220
1 1
2 2
4 4
71 5
142 10
11
20
22
44
55
110
220 284
Elabore un algoritmo que calcule si dos nmero son amigos o no.
41. Elabore un algoritmo que calcule el nmero de das que existen entre dos fechas. Tenga en cuenta
que existen meses de 30 y 31 das y los aos bisiestos.
42. Calcular usando cada uno de los tres ciclos el valor de X
n
.
43. Calcule e imprima las tablas de multiplicar del 1 al 9 usando el ciclo mientras().
44. Calcule e imprima las tablas de multiplicar del 1 al 9 usando el ciclo haga.. mientras().
45. Calcule e imprima las tablas de multiplicar del 1 al 9 usando el ciclo para(.....).
46. Desarrolle un algoritmo que impriman las siguientes series:
1, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44.
1, 4, 9, 16, 25, 36, 49, 64, 81.
2, 4, 6, 8, 10, .....100.
-2, +4, -6, +10, ....100.
47. Elabore un algoritmo que imprima las siguientes series para (n) trminos :
a.
1
2
3
4
5
6
7
8
9
10
+ + b.
1
2
3
4
5
6
7
8
9
10 ! ! ! ! !
+ +
c.
1
2
3
4
5
6
7
8
9
10
4 6 8 10
+ + d. + +
1
5
3
10
5
15
7
20
9
25
Divisores
Suma
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
158
48. Desarrolle un algoritmo que impriman la suma de los trminos de las siguientes series:
Suma = -1 +2 -3 +4 -5, ... hasta N trminos.
Suma =+1 +4 -8 +12 +16 -20 +24 +28, -... hasta N trminos.
terminos hasta Suma N
49
1
25
1
9
1
1
1
+ + + + =
terminos hasta Suma N
49
1
25
1
9
1
1
1
+ + + =
terminos hasta
x x x
x Suma N
! 4 ! 3 ! 2
1
4 3 2
+ + + + + =
terminos hasta
x x x
x Suma N
! 7 ! 5 ! 3
7 5 3
+ + =
terminos hasta
x x x
Suma N
! 6 ! 4 ! 2
1
6 4 2
+ + + + =
! ! 7 ! 5 ! 3
1
7 5 3
n
x x x x
x Suma
n
+ + + + + = (no son exactamente n trminos)
! ! 4 ! 3 ! 2
1
4 3 2
n
x x x x
x Suma
n
+ + + + + = (no son exactamente n trminos)
49. Escriba un algoritmo que calcule el factorial de un nmero N. (Ejemplo: el factorial de 4 es igual
a: 1x2x3x4=24)
50. Determine el valor del combinatorio C(m,n), definido como
( )! !
!
n m n
m
51. Escriba un algoritmo para calcular si un nmero es primo o no, recuerde que los nmeros primos
son aquellos que solo son divisibles por la unidad y por ellos mismos: ejemplo 5, 11, 17, etc..
52. Calcular mediante un algoritmo cuantos nmeros primos existen entre 1 y un nmero M dado por
el usuario.
53. Escriba un algoritmo que muestre el cuadrado de los nmeros del 1 al 50.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
159
54. Disear un algoritmo para determinar la cantidad de mujeres y de hombres que hay en un grupo de
N estudiantes (mximo 45). Adems se debe hallar el promedio de edad y de estatura del grupo.
(el usuario digitar para cada integrante del grupo, su sexo, edad y estatura).
55. Desarrolle un algoritmo que permita seleccionar personal para un empleo de un total de N
aspirantes. Los aspirantes deben cumplir las siguientes condiciones para ser aceptados:
- Mayores de edad
- Ser ingeniero titulado
- Tener experiencia laboral
Al final el algoritmo debe mostrar el total de aspirantes aceptados.
56. Desarrolle un algoritmo que permita calcular el valor de la tangente de un ngulo dado en grados
usando la serie de Taylor del seno y del coseno.
57. Disee un algoritmo que calcule e imprima la suma de los nmeros pares e impares comprendidos
entre 1 y 100.
58. Leer N nmeros y calcular el mayor sin importar que se repita.
59. Leer N nmeros y calcular el menor sin importar que se repita.
60. Leer una serie de M nmeros y mostrar al final cuantos son positivos.
61. Calcular la suma de los cuadrados de los nmeros comprendidos entre 1 y N.
62. Leer 10 nmeros y al final imprimir el promedio de estos.
63. Desarrolle un algoritmo que calcule el valor de usando la siguiente serie:
=
9
10
9
8
7
8
7
6
5
6
5
4
3
4
3
2
4
El nmero de trminos debe ser dado por el usuario (entre mayor sea el nmero de trminos mayor
ser la precisin del clculo).
64. Se desea calcular la resistencia equivalente en paralelo de un circuito de N resistencias, para lo
cual se le pide que disee un algoritmo.
N
R R R R
1 1 1 1
paralelo e equivalent a Resistenci
3 2 1
+ + + =
65. Se desea calcular la resistencia equivalente en serie de un circuito de N resistencias, para lo cual se
le pide que disee un algoritmo.
N
R R R R + + + + =
3 2 1
serie e equivalent a Resistenci
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
160
66. Implemente un algoritmo que lea un nmero entero y lo muestre invertido.
67. Calcular y mostrar los N primeros trminos de la serie de Leonardo Fibonacci.
Fibonacci = 0,1, 1, 2, 3, 5,...
68. Calcular suma de los primeros 100 trminos de la serie de Fibonacci.
69. Elaborar un algoritmo que convierta un nmero entero positivo, menor a 257 a sistema binario
70. Elabore un algoritmo que permita convertir un nmero entero positivo (mximo cuatro cifras) en
su equivalente en sistema octal.
71. Escribir un algoritmo que halle el nmero de aos bisiestos en un intervalo dado por el usuario
(ao bisiesto s es mltiplo de 4, pero s es mltiplo de 100 deber ser tambin mltiplo de 400).
72. Realizar la tabla de multiplicar de x (nmero digitado por el usuario, puede ser positivo o
negativo), desde 1 hasta n (nmero digitado por el usuario, puede ser positivo o negativo).
73. Dada la siguiente serie determine el valor de la suma de sus trminos. La serie termina cuando
(M-N)
2
sea igual a 0, El valor de M debe ser dado por el usuario.
Serie: 1,2,3, (M-0)
2
,4,5,6,(M-1)
2
,7,8,9,(M-2)
2
,.......(M-N)
2
74. Dada una fecha (mes, da, ao) indicar cuantos das (exactos) han transcurrido desde ese ao.
75. En un curso hay 20 alumnos, cada alumno tiene diferente nmero de notas, se quiere determinar el
promedio de cada estudiante, y el nmero de estudiantes que perdieron la materia (menos de 3.0).
NOTA: La nota definitiva de un estudiante corresponde al promedio simple de sus notas.
76. Se deben leer nmeros hasta que se digite 99 (el 99 no se debe contar), y determinar cuantos
primos hay, y cuantos pares. (recuerde que estas dos condiciones no son exclusivas).
77. Leer un nmero en base 10, y determinar su equivalente en cualquier base entre 2 y 16. (Puede
escribir el nmero al revs en la base indicada)
78. Elabore un algoritmo para que dos personas puedan jugar tres en lnea. El ganador es quien
primero logre colocar tres figuras en lnea (ver figura). Como ayuda muestre los cuadros
numerados del 1 al 9 a los jugadores para que escojan su jugada.
o x o
o x x
x x o
1 2 3
4 5 6
7 8 9
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
161
79. Que hacen los siguientes algoritmos:
ALGORITMO
INICIO
Entero n, i, total
Imprimir "Digite un nmero entero: "
Leer( n)
Para i = 0 Hasta n
total = total + (2*i)
Fin
Imprimir "El resultado es:" & total
FIN
ALGORITMO
INICIO
Real n, h=0, total = 0
Imprimir "Digite un nmero: "
Leer(n)
mientras h <> n
Imprimir "Digite un nmero "
Leer (h)
total=total+h
fin
Imprimir"El total es " & total
FIN
80. Elabore un algoritmo que lea cinco notas de (n) nmeros de estudiantes, y que calcule e imprima
el promedio de cada alumno y el promedio del grupo adems de la nota del estudiante de mayor y
menor promedio.
81. Un nmero es perfecto si la suma de sus divisores excepto l mismo es igual al propio nmero.
Ejemplos:
Nmero: 6 28 36
Divisores---> 1 1 1
2 2 2
3 4 3
7 4
14 6
9
12
18
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
162
Suma 6 28 55
De lo anterior el 6 y el 28 son nmeros perfectos, el 36 no lo es. Desarrolle un algoritmo que
Calcule si un nmero es perfecto o no.
82. Elabore un algoritmo que genere un nmero aleatorio y que les d la posibilidad a dos jugadores
de adivinar dicho nmero, el algoritmo debe pedir el nmero de partidas, intercalar los turnos para
adivinar, mostrar el ganador por partida y el ganador final. El nmero debe estar entre 0-9. (Use la
funcin aleatorio.)
83. Elabore un algoritmo que lea las ventas de (n) nmero de vendedores, para los productos (A, B, C,
D y C), si los precios de los productos son ($1000, $2345, $3876, $1235 y $550) respectivamente,
calcule el nmero individual y total de productos vendidos, las ventas totales por producto, el
promedio total de ventas, el producto mas vendido, el menos vendido, el vendedor que ms ventas
realiz.
84. Realice un algoritmo que calcule la suma de (n) nmeros, el producto de estos y cuantos de estos
son negativos y cuantos positivos. Estos datos deben ser mostrados por pantalla.
85. Haga un algoritmo que lea las notas de (n) estudiantes, que indique el nmero de estudiantes que
ganaron la materia (mayor o igual a 3.0), el numero de los que la perdieron (menor o igual a 3),
adems de indicar cuantos deben habilitar la materia (notas entre 2.5 y menores a 3.0). Todos los
datos deben ser mostrados por pantalla.
86. Realice un algoritmo que lea (n) nmeros y halle el mayor nmero par, el mayor impar, y el
producto de estos dos nmeros. Estos datos deben ser mostrados por pantalla.
87. Elabore un algoritmo para calcular de (n) nmeros ledos cuantos son primos y cuantos no, y los
mayores de cada grupo.
88. Haga un algoritmo que lea un nmero entero de 4 cifras (base 10) y que lo convierta a un binario
(base 2) y un octal (base 8). Utilice instrucciones repetitivas (use el operador residuo).
89. Un profesor necesita calcular las notas finales de su curso, para ello dispone de 7 notas, las
3 primeras componen la nota definitiva de quiz y talleres con un valor de 25%, la 4 nota
corresponde al primer examen parcial con un 25%, la 5 al segundo examen parcial con un 25%,
las dos ultimas (6 examen escrito y 7 trabajo opcional) al examen final con un valor de 25%.
El profesor desea obtener los siguientes resultados para cada estudiante:
La nota definitiva de quiz y talleres (promedio de las 3 primeras notas)
La nota definitiva del examen final (en el caso de haber presentado opcional)
La nota final del estudiante
Estos datos deben ser mostrados en pantalla junto con las dems notas.
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
163
Desea conocer tambin cuantos aprobaron el curso (notas superiores a 3.0) y cuantos no
cumplieron con los objetivos de este (notas menores a 3.0) y tambin obtener la mejor nota para
promover este estudiante como monitor de la materia para el prximo semestre. (estos ltimos
datos se deben mostrar por pantalla al final del calculo de las notas finales de todo el curso).
90. Elabore un algoritmo que imprima cual es el vendedor del mes de una empresa.
Tabla de Precios
Producto Precio
A $57000
B $62000
C $83000
Para lograr el clculo se leen las cantidades de productos vendidos por cada uno de los M
vendedores de la empresa y siguiendo la tabla de precios se determina el mejor como aquel que
mayores ventas haya tenido.
91. Use la siguiente frmula para calcular la raz cuadrada de un nmero entero positivo:
Raz = 0.5* ) (
1
1
X
N
X +
Donde N es el nmero del que se desea conocer la raz y X
1
es una variable que se le asigna un
valor inicial de 1.
Con estos dos valores iniciales se obtiene el primer valor de la variable Raz. Si el valor absoluto
de |Raz - X
1
| es mayor a 0.0000001 se le reasignar a X
1
el contenido de la variable Raz y se
har un nuevo calculo hasta que el valor absoluto sea menor, que es cuando se obtiene el valor
real de la raz.
92. Escriba un programa que calcule el resultado de la siguiente serie para N trminos.
+ + =
! 7 ! 5 ! 3
1 R
6 4 2
X X X
93. Algunos pueblos de Rusia emplean el siguiente mtodo para multiplicar: escriben los dos factores
uno al lado del otro y se forman con ellos dos columnas: debajo del factor que est a la izquierda
se toma la mitad en nmeros enteros, es decir despreciando fracciones, y de esta mitad se toma la
mitad, y as sucesivamente hasta llegar a 1; debajo del factor que est a la derecha, y
paralelamente, se escribe su duplo, y as sucesivamente hasta emparejar con el ultimo nmero de
la columna de la izquierda, como puede verse en el ejemplo, se tachan de la columna de la derecha
todos los nmeros colocados enfrente de los nmero pares de la otra columna y se suman todos los
nmeros no tachados de esta columna; esta suma ser el resultado de la multiplicacin.
Elabore un algoritmo que emplee este mtodo para multiplicar dos nmeros.
Ejemplo: Multiplicar 22 x 6 = 132
Universidad Autnoma de Occidente
Informtica I. Versin 1.0 Agosto de 2004.
164
22 X 6
11 12
5 24
2 48
1 96
132