37
0$18$/’( 35É&7,&$6 Q/DYDULHJDP0HUFDGR

Manual de prácticas Java

Embed Size (px)

Citation preview

Page 1: Manual de prácticas Java

��

0$18$/�'(�35É&7,&$6�

��������������������

Q��/DYDULHJD�♦�P��0HUFDGR�

Page 2: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

130

35È&7,&$��� Calcular e imprimir el área de un triangulo a partir de su base y altura.

2EMHWLYR�GH�OD�SUiFWLFD�

,PSOHPHQWDU� XQD� FODVH� SDUD� FRQRFHU� VX� HVWUXFWXUD� H� LPSOHPHQWDFLyQ� HQ� XQ� OHQJXDMH� GH�SURJUDPDFLyQ�� $QiOLVLV�GHO�SUREOHPD��

Para calcular el área de la figura es necesario la introducción de dos variables: Base y Altura, y una tercera Area en donde se almacenara el resultado, todas de tipo IORDW. La superficie de un triangulo se calcula aplicando la siguiente fórmula:

(Base * Altura) Area = 2

��� ��������� ������� ����� Práctica 1

3VHXGRFyGLJR inicio leer Base, Altura hacer Area = (Base * Altura) / 2 escribir Area fin

leer Base, Altura

inicio

Area = ( Base * Altura ) / 2

Escribir Area

fin

Page 3: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

131

3URJUDPD�HQ�-DYD� import java.io.*; public class Practica_1{ public static void main (String args[]) throws IOException{ float Base, Altura, Area; InputStreamReader res=new InputStreamReader(System.in); BufferedReader calculo=new BufferedReader(res); System.out.println("Introduzca la base del triangulo"); Base = Float.parseFloat(calculo.readLine()); System.out.println("Introduzca la altura del triangulo"); Altura = Float.parseFloat(calculo.readLine()); Area = (Base * Altura)/2; System.out.println("La superficie del triangulo es: "+ Area); } }

35È&7,&$��� Calcular e imprimir el costo total a cobrar al cliente en una gasolinera, tomando en cuenta que la

gasolina que surten la registran en galones, pero el precio de la gasolina esta fijado en litros. 2EMHWLYR�GH�OD�SUiFWLFD�

,PSOHPHQWDU� XQD� FODVH� SDUD� FRQRFHU� VX� HVWUXFWXUD� H� LPSOHPHQWDFLyQ� HQ� XQ� OHQJXDMH� GH�SURJUDPDFLyQ�� $QiOLVLV�GHO�SUREOHPD�� Para obtener el costo total a cobrar por el surtidor al cliente, sean dos variable Galones y Precio, que se necesitan leer desde el teclado y asignar el valor de la conversión del costo total de la gasolina en una variable Total, todas tipo GRXEOH. El equivalente a utilizar es de 3.785 Litros por Galón.

��� ��������� ������� ����� Práctica 2

leer Galones, Precio

inicio

Total = Galones * 3.785 * Precio

Escribir Total

fin

Page 4: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

132

3VHXGRFyGLJR inicio

leer Galones, Precio hacer Total = Galones * 3.780 * Precio escribir Total

fin 3URJUDPD�HQ�-DYD� import java.io.*; public class Practica_2{ public static void main (String args[])throws IOException{ double Galones, Total, Precio; InputStreamReader res=new InputStreamReader(System.in); BufferedReader calculo=new BufferedReader(res); System.out.println("Introduzca los galones de gasolina"); Galones=Float.parseFloat(calculo.readLine()); System.out.println("Introduzca el precio del litro de gasolina"); Precio=Float.parseFloat(calculo.readLine()); Total=Galones*3.785*Precio; System.out.println("Total a pagar del cliente es:"+Total); } }

35È&7,&$��� Calcular e imprimir el área y volumen de un cilindro, dados su radio y altura.

2EMHWLYR�GH�OD�SUiFWLFD�

,PSOHPHQWDU� XQ� JUXSR� GH� FODVHV� TXH� XWLOLFHQ� FRQVWUXFWRUHV� \� PRGLILFDGRUHV� GH� DFFHVR� SDUD�DQDOL]DU�GH�TXp�IRUPD�DIHFWDQ�HO�IXQFLRQDPLHQWR�GH�ODV�FODVHV�\�FXDQGR�VRQ�UHFRPHQGDEOHV�FDGD�XQR�GH�HOORV�� $QiOLVLV�GHO�SUREOHPD��� Para el cálculo de los valores del área y volumen de un cilindro, es necesaria la lectura de dos variables Radio y Altura de tipo GRXEOH, así como dos variables de asignación de los valores de área y volumen, ambos de tipo GRXEOH. El área del cilindro lo calculamos aplicando la siguiente formula:

Área = 2 * � �UDGLR� �DOWXUD 'RQGH�� � ���������� El volumen del cilindro lo calculamos aplicando la siguiente formula:

9ROXPHQ� � � �UDGLR2 * altura

Page 5: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

133

��� ��������� ������� ����� Práctica 3

3VHXGRFyGLJR inicio Pi = 3.141592 leer Radio, Altura hacer Area = 2 * Pi * Radio * Altura hacer Volumen = Pi * Radio * Radio * Altura escribir Area

escribir Volumen fin 3URJUDPD�HQ�-DYD� 1 import java.io.*; 2 public class Practica_3{ 3 public static void main (String args[])throws IOException{ 4 double Radio, Altura; 5 InputStreamReader res=new InputStreamReader(System.in); 6 BufferedReader calculo=new BufferedReader(res); 7 System.out.println("Introduzca el radio"); 8 Radio=Float.parseFloat(calculo.readLine()); 9 System.out.println("Introduzca la altura"); 10 Altura=Float.parseFloat(calculo.readLine()); 11 Cilindro cilindro = new Cilindro(Altura, Radio); 12 System.out.println("El volumen del cilindro es:"+cilindro.volumen); 13 System.out.println("El area del cilindro es:"+cilindro.area); 14 } 15 } 16 class Cilindro{ 17 public static final double PI = 3.14159265; 18 public double area, volumen;

leer Radio, Altura

inicio

Area = 2 * Pi * Radio * Altura Volumen = Pi * Radio * Radio * Altura

Escribir Area, Volumen

fin

Pi = 3.141592

Page 6: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

134

19 public Cilindro(double h, double r) { 20 area = 2 * r * PI * h; 21 volumen = PI * r * r * h; 22 } 23 }

En esta práctica se hace uso de dos clases, Practica_3 y Cilindro; la primera contiene la función

PDLQ, en la cual realizamos la solicitud de las variables Radio y Altura, como se muestra de la línea 7 a la 10; la segunda clase es Cilindro, en donde inicialmente se define la variable PI como SXEOLF�VWDWLF�ILQDO, que indica que el valor no puede ser modificado, o lo que es lo mismo, es una FRQVWDQWH. La sentencia 18 nos muestra el modificador de acceso SXEOLF el cual nos indica que los atributos area y volumen son visibles fuera de la clase, contrario a si fueran declarados como SULYDWH. La sentencia 19 define el constructor general de la clase Cilindro, que recibe como argumentos (K���U� que son utilizados para calcular el área y volumen del cilindro.

35È&7,&$��� Realizar e imprimir, la conversión de grados Celsius a grados Fahrenheit.

2EMHWLYR�GH�OD�SUiFWLFD�

,PSOHPHQWDU� XQ� JUXSR� GH� FODVHV� TXH� XWLOLFHQ� FRQVWUXFWRUHV� \� PRGLILFDGRUHV� GH� DFFHVR� SDUD�DQDOL]DU�GH�TXp�IRUPD�DIHFWDQ�HO�IXQFLRQDPLHQWR�GH�ODV�FODVHV�\�FXDQGR�VRQ�UHFRPHQGDEOHV�FDGD�XQR�GH�HOORV�� $QiOLVLV�GHO�SUREOHPD� El cálculo de grados Celsius (centígrados) a grados Fahrenheit se genera a partir de la siguiente fórmula:

ºF = 1.8 * ºC +32

��� ��������� ������� ����� Práctica 4

leer Centigrados

inicio

Fahrenheit = 1.8 * Centigrados + 32

Escribir Fahrenheit

fin

Page 7: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

135

3VHXGRFyGLJR inicio leer Centigrados hacer Fahrenheit = 1.8 * Centigrados +32 escribir Fahrenheit fin 3URJUDPD�HQ�-DYD� import java.io.*; public class Practica_4{ public static void main (String args[])throws IOException{

double Centigrado; InputStreamReader res=new InputStreamReader(System.in); BufferedReader calculo=new BufferedReader(res); System.out.println("Introduzca el grados centigrados"); Centigrado=Float.parseFloat(calculo.readLine()); Grados grados = new Grados (Centigrado); System.out.println("Los grados Fahrenheit son: "+grados.fahrenheit); } } class Grados{ public double fahrenheit; public Grados(double c) { fahrenheit = 1.8 * c + 32; } }

35È&7,&$��� Construya un programa que tomando como dato la calificación de un alumno en un examen,

escriba “Aprobado” en caso de que esa calificación sea mayor o igual a 8.

2EMHWLYR�GH�OD�SUiFWLFD� � ,PSOHPHQWDU�FODVHV�TXH�UHTXLHUDQ�GH�HVWUXFWXUDV�VHOHFWLYDV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ $QiOLVLV�GHO�SUREOHPD� Para este ejercicio solo hacemos solicitud de una variable de tipo IORDW� llamada calificación, que compararemos en una estructura selectiva LI simple. Solo si la condición resulta verdadera mostrara el mensaje “Aprobado”.

Page 8: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

136

��� ��������� ������� ����� Práctica 5

�3VHXGRFyGLJR inicio leer Calificación si Calificación >= 8 escribir “ Aprobado” fin_si fin 3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_5{ public static void main (String args[])throws IOException{ float Calificacion; InputStreamReader res= new InputStreamReader(System.in); BufferedReader calculo= new BufferedReader(res); System.out.println("Introduzca la calificacion"); Calificacion=Float.parseFloat(calculo.readLine()); if (Calificacion>=8) System.out.println("Aprobado"); } }

leer Calificacion

inicio

Calificación >= 8

Escribir “ Aprobado”

fin

No Si

Page 9: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

137

35È&7,&$��� Indique e imprima cual es el mayor de dos números dados.

2EMHWLYR�GH�OD�SUiFWLFD� � ,PSOHPHQWDU�FODVHV�TXH�UHTXLHUDQ�GH�HVWUXFWXUDV�VHOHFWLYDV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ� $QiOLVLV�GHO�3UREOHPD Se necesita introducir dos valores, almacenados en las variables N1 y N2 que declararemos como tipo LQW los cuales compararemos en una estructura selectiva LI� HOVH que mostrara el mayor de los números dados.

��� ��������� ������� ����� Práctica 5

�3VHXGRFyGLJR inicio leer N1, N2 si N1 > N2 escribir N1 sino escribir N2 fin_si fin

leer N1, N2

inicio

N1 > N2

Escribir N1

fin

No Si

Escribir N2

Page 10: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

138

3URJUDPD�HQ�-DYD�import java.io.*; public class Practica_6{ public static void main (String args[])throws IOException{ int N1, N2; InputStreamReader res=new InputStreamReader(System.in); BufferedReader calculo=new BufferedReader(res); System.out.println("Introduzca el entero numero 1"); N1=Integer.parseInt(calculo.readLine()); System.out.println("Introduzca el entero numero 2"); N2=Integer.parseInt(calculo.readLine()); if (N1>N2) System.out.println("El mayor es: " + N1); else System.out.println("El mayor es: " + N2); } }

35È&7,&$��� Obtener e imprimir el nuevo sueldo de un trabajador, aplicando un aumento del 15% si su sueldo

es inferior a $1000 y 12% en caso contrario.

2EMHWLYR�GH�OD�SUiFWLFD� � ,PSOHPHQWDU�FODVHV�TXH�UHTXLHUDQ�GH�HVWUXFWXUDV�VHOHFWLYDV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ� �$QiOLVLV�GHO�3UREOHPD

El nuevo sueldo del trabajador depende principalmente de su sueldo actual, por lo tanto, la variable

que solicitada es 6XHOGR%DVH, comparada con la cantidad de $1000 se aplicara, si resulta menor se incrementara un 15% al salario, en caso contrario solo incrementar 12%.

��� ��������� ������� ����� Práctica 7

leer Salario

inicio

Salario < 1000

Salario = Salario * 1.15

fin

No Si

Salario = Salario * 1.12

Escribir Salario

Page 11: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

139

3VHXGRFyGLJR� inicio leer Salario si Salario < 1000 escribir Salario = Salario * 1.15 sino escribir Salario = Salario * 1.12 fin_si fin 3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_7{ public static void main (String args[])throws IOException{ double Salario; BufferedReader Calc = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduzca el salario del trabajador"); Salario = Float.parseFloat(Calc.readLine()); if (Salario < 1000) Salario = Salario*1.15; else Salario = Salario*1.12; System.out.println("El nuevo sueldo del trabajador es:"+ Salario); } }

35È&7,&$��� Imprimir tres números enteros diferentes leídos desde el teclado en forma descendente.

2EMHWLYR�GH�OD�SUiFWLFD� � ,PSOHPHQWDU� FODVHV� TXH� UHTXLHUDQ� GH� HVWUXFWXUDV� VHOHFWLYDV� DQLGDGDV� SDUD� SUREDUODV� HQ� XQD�DSOLFDFLyQ� $QiOLVLV�GHO�3UREOHPD�

Dados los datos A, B, C que representan variables de tipo LQW, ordenarlos en forma descendentes, esto con ayuda de varias estructuras selectivas LI HOVH�anidadas�

Page 12: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

140

��� ��������� ������� ����� Práctica 8

3VHXGRFyGLJR� inicio leer A, B, C, si A > B si A > C si B < C

escribir A, B, C sino

escribir A, C, B fin_si sino escribir C, A, B fin_si sino si B > C si A > C escribir B, A, C sino escribir B, C, A fin_si sino escribir C, B, A fin_si

fin_si fin

leer A, B, C,

inicio

A > B

fin

No Si

A > C

B > C

escribir A, B, C

Si

Si escribir C, A, B

escribir A, C, B,

No

No

B > C

A > C

escribir B, A, C

Si

Si escribir C, B, A

escribir B, C, A,

No

No

Page 13: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

141

3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_8{ public static void main (String args[])throws IOException{ int A,B,C; InputStreamReader res = new InputStreamReader (System.in); BufferedReader calculo = new BufferedReader(res); System.out.println("Introduzca el valor de A"); A=Integer.parseInt(calculo.readLine()); System.out.println("Introduzca el valor de B"); B=Integer.parseInt(calculo.readLine()); System.out.println("Introduzca el valor de C"); C=Integer.parseInt(calculo.readLine()); if (A>B) if (A>C) if (B>C) System.out.println(A+" "+B+" "+C); else System.out.println(A+" "+C+" "+B); else System.out.println(C+" "+A+" "+B); else if (B>C) if (A>C) System.out.println(B+" "+A+" "+C); else System.out.println(B+" "+C+" "+A); else System.out.println(C+" "+ B+" "+A); } }

35È&7,&$��� Imprimir los nombres de los días de la semana, en función del valor de una variable Dia

introducida por el teclado.

2EMHWLYR�GH�OD�SUiFWLFD� � ,PSOHPHQWDU� FODVHV� TXH� UHTXLHUDQ� GH� HVWUXFWXUDV� VHOHFWLYDV�P~OWLSOHV�SDUD� LPSOHPHQWDUODV� HQ� HO�GHVDUUROOR�GH�DSOLFDFLRQHV �$QiOLVLV�GHO�3UREOHPD�

La variable Día introducida por el usuario será de tipo LQW, y a partir de ella obtendremos el día de la semana correspondiente, para ello haremos uso de la estructura selectiva múltiple VZLWFK,� debido a que cada sentencia FDVH se corresponde con un único valor de H[SUHVLyQ� No se pueden establecer rangos o condiciones, como en el caso del LI HOVH, sino que se debe comparar con valores concretos.

Page 14: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

142

��� ��������� ������� ����� Práctica 9

�3VHXGRFyGLJR� inicio leer Dia según sea Dia 1: escribir “ Lunes” 2: escribir “ Martes” 3: escribir “ Miércoles” 4: escribir “ Jueves” 5: escribir “ Viernes” 6: escribir “ Sábado” 7: escribir “ Domingo” otro: escribir “ Error” fin_según fin 3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_9{ public static void main (String args[])throws IOException{ int Dia; BufferedReader calc = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduzca el numero del dia de la semana"); Dia = Integer.parseInt(calc.readLine()); switch (Dia){ case 1: System.out.println("Lunes"); break; case 2: System.out.println("Martes"); break;

leer Dia

inicio

Dia

fin

1

Escribir “ Lunes”

Escribir “ Martes”

Escribir “ Miércoles”

Escribir “ Jueves”

Escribir “ Viernes”

Escribir “ Sabado”

Escribir “ Domingo”

Escribir “ Error”

2 3 4 5 6 7 Otro

Page 15: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

143

case 3: System.out.println("Miercoles");break; case 4: System.out.println("Jueves"); break; case 5: System.out.println("Viernes"); break; case 6: System.out.println("Sabado"); break; case 7: System.out.println("Domingo"); break; default: System.out.println("Error"); break; } } }

Los valores no comprendidos en ninguna sentencia FDVH� se pueden gestionar en GHIDXOW, que es opcional. En ausencia de EUHDN, cuando se ejecuta una sentencia FDVH�se ejecutan también todas las que van a continuación, hasta que se llega a un EUHDN�o hasta que se termina el VZLWFK.

35È&7,&$���� Imprimir el número de días de un mes, en función del número de orden dentro del calendario

(1= Enero, 2 = Febrero, etc.) y teniendo en cuenta si el año es bisiesto o no.

2EMHWLYR�GH�OD�SUiFWLFD� � ,PSOHPHQWDU� FODVHV� TXH� UHTXLHUDQ� GH� HVWUXFWXUDV� VHOHFWLYDV�P~OWLSOHV�SDUD� LPSOHPHQWDUODV� HQ� HO�GHVDUUROOR�GH�DSOLFDFLRQHV �$QiOLVLV�GHO�SUREOHPD��� La obtención del número de días con los que cuenta un mes, requiere de dos variables de tipo LQW, Mes, la palabra Año no puede ser utilizada como identificador válido porque la mayoría de los compiladores no reconoce la letra x, para este caso utilizaremos el identificador Anio y para ello debemos tomar en consideración si el año es o no bisiesto, esto se llevara a cabo a partir de las siguientes reglas:

• 5HJOD��� Los años exactamente divisibles entre 4 VRQ años bisiestos. • 5HJOD��� Los años exactamente divisibles entre 100 QR�VRQ años bisiestos. • 5HJOD��� Los años exactamente divisibles entre 400 VRQ años bisiestos

Decidir si utilizar la sentencia LI�o VZLWFK�es a consideración del programador, el cual puede decidir cuál usar basado en la legibilidad y otros factores. La sentencia LI� se puede utilizar para tomar las decisiones basadas en gamas de valores o de condiciones, mientras que la sentencia VZLWFK puede tomar las decisiones basadas solamente en un solo número entero, un valor enumerado o único.

Otro punto de interés es la sentencia �EUHDN�después de cada FDVH. Cada sentencia EUHDN� termina la declaración FDVH� que incluye, y el flujo del control continúa con la siguiente declaración FDVH��Las declaraciones EUHDN son necesarias porque sin ellas el control fluiría secuencialmente con declaraciones FDVH� subsecuentes. Esta práctica nos ilustra una de las utilidades de la sentencia FDVH dentro de la estructura secuencial múltiple VZLWFK��

Page 16: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

144

��� ���������� ���� �! "�#�$ Práctica 10

��3VHXGRFyGLJR��inicio leer Mes, Anio según sea Mes 1, 3, 5, 7, 8, 10, 12: escribir “ 31” 4, 6, 9, 11: escribir “ 30” 2: si ((Anio % 4 = 0 && !Anio % 100 = 0) || Anio % 400 = 0) escribir “ 29” sino escribir “ 30” fin_si otro: escribir “ No existe” fin_segun fin

leer Mes, Anio

inicio

Mes

fin

Escribir “ 31”

Escribir “ 30”

Escribir “ No existe”

1, 3, 5, 7, 8, 10, 12 4, 6, 9, 11 2 Otro

[(Anio ��$�

4 = 0) �%���%�$ (Anio

��$� 100 = 0)] $�

(Anio ��$�

400 = 0)

Escribir

“ 29” Escribir

“ 28”

Si No

Page 17: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

145

3URJUDPD�HQ�MDYD��import java.io.*; public class Practica_10 { public static void main(String[] args) throws IOException { int Mes; int Anio; BufferedReader Oper= new BufferedReader (new InputStreamReader(System.in)); System.out.println ("Introduzca el numero del mes"); Mes = Integer.parseInt(Oper.readLine()); System.out.println ("Introduzca el anio"); Anio = Integer.parseInt(Oper.readLine()); switch (Mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:

System.out.println("Numero de dias = 31 "); break; case 4: case 6: case 9: case 11: System.out.println("Numero de dias = 30 "); break; case 2:

if (((Anio % 4 == 0) && !(Anio % 100 == 0)) || (Anio % 400 == 0)) System.out.println("Numero de dias = 29 "); else System.out.println("Numero de dias = 28 "); break; default: System.out.println("No existe"); break; } } }

35È&7,&$���� Desarrolle un programa que invierta un número entero N dado por el usuario.

2EMHWLYR�GH�OD�SUiFWLFD�

� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD�� El fin de la práctica es mostrar el número invertido de una cifra, por ejemplo, de 12345 su número invertido es 54321.

Page 18: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

146

Para esta circunstancia, definimos las variables num_inv = 0, div_entera = num, resto_div = 0; el procedimiento a seguir es obtener el residuo de las divisiones sucesivas de la variable num de tipo LQW� entre 10, para posteriormente sumar este residuo a la variable resto_div multiplicada por 10.

��� ���������� ���� �! "�#�$ Práctica 11

3VHXGRFyGLJR Inicio

escribir “ Ingrese número” leer num num_inv = 0 div_entera = num resto_div = 0 mientras div_entera != 0 hacer resto_div = div_entera mod 10 hacer div_entera = div_entera / 10 hacer num_inv = num_inv * 10 + resto_div fin_mientras escribir "El numero " + num + " invertido es " + num_inv

fin

inicio

div_entera != 0

fin

No

Si

div_entera = div_entera / 10

escribir num_inv

num_inv = 0 div_entera = num

resto_div = 0

resto_div = div_entera mod 10

num_inv = num_inv * 10 + resto_div

leer num

Page 19: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

147

3URJUDPD�HQ�-DYD� import java.io.*; class Practica_11{ public static void main(String Arg[ ]) throws IOException { int num , num_inv , div_entera , resto_div; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese numero : "); num = Integer.parseInt(in.readLine()); num_inv = 0; div_entera = num; resto_div = 0; while (div_entera != 0) { resto_div = div_entera % 10; div_entera = div_entera / 10; num_inv = num_inv * 10 + resto_div; } System.out.println("El numero " + num + " invertido es " + num_inv); } }

35È&7,&$���� Calcular e imprimir la media de N números dados por el usuario.

2EMHWLYR�GH�OD�SUiFWLFD�

� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD��� Para realizar el cálculo del promedio de una cierta cantidad de números definiremos las siguientes variables: N : tipo LQW, determinará el número de veces que la estructura de repetición se efectuará; Contador: tipo LQW� un contador es una variable que incrementa de forma constante dentro de la estructura de repetición.

Acumulador: tipo GRXEOH, almacena la suma de los números introducidos desde el teclado; Promedio: tipo GRXEOH� guarda la media de los números dados, mediante la formula:

Promedio = Acumulador / N

Page 20: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

148

��� ���������� ���� �! "�#�$

Práctica 12

3VHXGRFyGLJR��inicio � N = 0, x = 0, Acumulador = 0, Promedio = 0, Contador = 1 leer N mientras Contador < = N leer x hacer Acumulador =Acumulador + x hacer Contador = Contador + 1 fin_mientras hacer Promedio = Acumulador / N escribir Promedio fin

leer N

inicio

Contador <= N

fin

No

Si

Acumulador = Acumulador + x

escribir Promedio

N = 0, Contador =1, x = 0 Acumulador =0, Promedio = 0

leer x

Contador = Contador + 1

Promedio = Acumulador / N

Page 21: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

149

3URJUDPD�HQ�-DYD import java.io.*; public class Practica_12{ public static void main(String arg[]) throws IOException{ int N = 0, Contador = 1; double Acumulador = 0, Promedio = 0, x = 0; BufferedReader calc = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Dame un numero: "); N = Integer.parseInt(calc.readLine()); while (Contador <= N){ System.out.println("Numero "+Contador); x = Float.parseFloat(calc.readLine()); Acumulador= Acumulador + x; Contador=Contador+1; } Promedio = Acumulador / N; System.out.println("El promedio es: " + Promedio); } }

35È&7,&$���� Imprimir los números impares menores o iguales a N.

2EMHWLYR�GH�OD�SUiFWLFD�

� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD���� Para resolver este ejercicio necesitaremos de una variable Contador de tipo LQW y un variable N que delimitara el numero de iteraciones de la estructura repetitiva ZKLOH�� Incrementaremos el contador en dos unidades en cada iteración para desplegar el número impar correspondiente.

Page 22: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

150

��� ���������� ���� �! "�#�$ Práctica 13

3VHXGRFyGLJR��inicio N = 0, Contador = 1

leer N mientras Contador <= N imprimir Contador hacer Contador = Contador + 2

fin_mientras fin 3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_13{ public static void main(String arg[]) throws IOException{ int N = 0, Contador = 1; BufferedReader calc = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Dame un numero: "); N = Integer.parseInt(calc.readLine()); while (Contador <= N){ System.out.println(Contador); Contador=Contador + 2; } } }

leer N

inicio

Contador <= N

fin

No

Si

N = 0, Contador =1

Contador = Contador + 2

escribir Contador

Page 23: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

151

35È&7,&$���� Imprimir la tabla de Multiplicar de N.

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD�� Se desea mostrar la tabla de multiplicar de un número dado, a partir de una estructura cíclica ZKLOH�con la cual utilizaremos una variable de tipo LQW llamada Contador que incrementa su valor en uno, para esto aplicaremos un operador de incremento Contador++; que es similar a la expresión aritmética Contador = Contador + 1, observe que el resultado es idéntico en ambos casos.

��� ���������� ���� �! "�#�$ Práctica 14

�����

leer N

inicio

Contador <= N

fin

No

Si

N = 0, Contador =1

Contador++

escribir N + “ * ” + Contador + “ = ” + N * Contador

Page 24: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

152

3VHXGRFyGLJR��inicio N = 0, Contador = 1 leer N mientras Contador <= 10 imprimir N + “ * ” + Contador + “ = “ + N*Contador hacer Contador ++ fin_mientras fin 3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_14{ public static void main(String arg[]) throws IOException{ int N = 0, Contador = 1; BufferedReader calc = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Dame un numero: "); N = Integer.parseInt(calc.readLine()); while (Contador <= 10){ System.out.println(N+ " * " +Contador+" = " + N*Contador); Contador++; } } }

��

35È&7,&$���� Imprimir y calcular el cociente y el resto de dos números enteros.

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� �$QiOLVLV�GHO�SUREOHPD� El método de obtener el cociente y el resto es por restas sucesivas, el cual consiste en restar sucesivamente el divisor del dividendo hasta obtener un resultado menor o igual que el divisor y que será el resto de la división, el número de restas efectuadas será el cociente.

Page 25: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

153

��� ���������� ���� �! "�#�$ Práctica 15

�3VHXGRFyGLJR� inicio Dividendo = 0, Divisor = 0, Cociente = 0, Resto = 0 leer Dividendo, Divisor Resto = Dividendo repetir Resto – = Divisor Cociente++ hasta que (Resto >= Divisor) escribir “ El cociente es : ” + Cociente escribir “ El resto es : ” + Resto fin ��������

leer Dividendo, Divisor

inicio

Resto -= Divisor

fin

No

Si

Dividendo = 0, Divisor = 0 Cociente = 0, Resto = 0

Resto >= Divisor

Resto = Dividendo

Cociente++

Cociente, Resto

Page 26: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

154

3URJUDPD�HQ�-DYD��import java.io.*; public class Practica_15{ public static void main(String arg[]) throws IOException{ int Dividendo = 0, Divisor = 0, Cociente = 0, Resto = 0; BufferedReader calc = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Dame el dividendo: "); Dividendo = Integer.parseInt(calc.readLine()); System.out.println("Dame el divisor: "); Divisor = Integer.parseInt(calc.readLine()); Resto = Dividendo; do{ Resto –= Divisor; Cociente++; } while (Resto >= Divisor); System.out.println("El Cociente es:" +Cociente+" El Resto es: "+Resto); } }

35È&7,&$���� Construya un programa que indique al usuario los números primos comprendidos entre 1 y N.

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD�

La característica principal de un número primo consiste en que éste solo es divisible entre si mismo y uno, por lo tanto, el algoritmo consiste en buscar si el entero tiene un divisor diferente de los dos anteriores; el proceso se lleva a cabo KDVWD la mitad entera del valor a evaluar ya que después de esta cualquier valor no divide a éste.

Un FRQWDGRU�es una variable cuyo valor se incrementa o decrementa en una cantidad fija en cada iteración, en este caso el contador lo inicializaremos en 1 e irá incrementando su valor hasta N, para mostrar los números primos existentes, esta es una variable de tipo LQW. Para identificar si el número dentro del rango, es primo o no, se define la clase 3ULPR, la cual devuelve una variable de tipo ERROHDQ o lógico (WUXH�R�IDOVH).

Page 27: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

155

��� ���������� ���� �! "�#�$ Práctica 16

3VHXGRFyGLJR� inicio escribir “ Escribe un número” leer Numero escribir “ Los números primos son:” Contador = 1 repetir Num = Contador Si (Num es SULPR) Escribir Contador Fin_si Contador++ hasta que (Contador <= Numero) fin

leer Numero

inicio

Numero. primo

fin

No

Si

Contador = 1

Contador <= Numero

escribir “ Los número primos son:”

Contador++

escribir Contador

Primo (N)

(N mod i == 0) and (N>3)

fin

No

Si

i < N / 2

i++

primo = false

primo = true, i = 2

Si

Si No

No

Page 28: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

156

clase 3ULPR inicio primo = verdadero i = 2 Constructor Primo (N): entero inicio repetir si (N mod i = 0) and (N>3) primo = falso fin_si i++ hasta que (i < N / 2) fin fin 3URJUDPD�HQ�-DYD� import java.io.*; public class Practica_16{ public static void main (String arg[]) throws IOException{ int Numero, Contador; BufferedReader tecl = new BufferedReader(new InputStreamReader(System.in)); System.out.println ("Escribe un numero:"); Numero = Integer.parseInt(tecl.readLine()); System.out.println("\nLos numeros primos son:"); Contador = 1; do{ Primo Num = new Primo(Contador); if (Num.primo) System.out.println(Contador); Contador++; } while (Contador <= Numero); } } class Primo{ public boolean primo = true; private int i=2; public Primo(int N){ do{ if ((N % i == 0)&&(N > 3)) primo = false; i++; }while(i < N / 2); } }

Al enviar información de salida hay ocasiones en que resulta útil agregar algo de formato con caracteres especiales llamado VHFXHQFLDV� GH� HVFDSH, un ejemplo es System.out.println("?QLos números primos son:"), en donde�?Q representa una nueva línea, es decir, coloca el cursor al principio de la siguiente línea.

Page 29: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

157

35È&7,&$���� Construya un programa que calcule la función Factorial de un número N (N!).

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD� El factorial de un número entero positivo se define como el producto de todos los números naturales anteriores o iguales a él. Se escribe n! y se lee “ n factorial” , por definición establecida el factorial de 0 es 1. Por ejemplo:

5! = 1 * 2 * 3 * 4 * 5 5! = 120

Para realizar el factorial del número, hacemos uso de una clase )DFWRULDO, que recibe el argumento de tipo LQW�1, se definen también dos variables, la primera SXEOLF� llamada IDFW inicializada en 1, y la segunda SULYDWH�L; y en el constructor )DFWRULDO es donde se realizan las iteraciones del ciclo IRU cuyo valor inicial es 2, el valor final 1 y su incremento en 1 de L.

&�' (�)�*�(+�( ,�-�.�/ 0�1�2 Práctica 17

������

leer Numero

inicio

fin

escribir “ Introduzca un número”

escribir “ El factorial de ” Numero “ es ” Num.fact

Factorial (N)

i = 2 ; i <= N ; i++

fin

Fact += i

Fact = 1

No

Si

Page 30: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

158

3VHXGRFyGLJR� inicio escribir “ Introduzca un número” leer Numero Factorial� Num (Numero) escribir “ El factorial de “ Numero “ es “ Num.fact fin clase Factorial inicio fact = 1 contructor Factorial (N): entero inicio desde i=2 hasta i <= N hacer i++ hacer fact *= i fin_desde fin fin 3URJUDPD�HQ�-DYD� import java.io.*; public class Practica_17{ public static void main (String arg[] ) throws IOException{ int Numero; BufferedReader tecl= new BufferedReader (new InputStreamReader(System.in)); System.out.println ("Introduzca un numero entero:"); Numero = Integer.parseInt(tecl.readLine()); Factorial Num = new Factorial(Numero); System.out.println("Factorial de "+ Numero +" es "+Num.fact); } } class Factorial{ public double fact=1; private int i; public Factorial(int N) { for (i=2; i<=N; i++){ fact *= i; } } }

La expresión fact *= i utiliza un operador de asignación que es similar a la expresión fact = fact * i.

Page 31: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

159

35È&7,&$���� Construya un programa que realice e imprima el método de Fibonacci de un número N.

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD

Leonardo Pisan Fibonacci probablemente se conoce mejor por descubrir la sucesión de Fibonacci, una sucesión de números que existe en la naturaleza. La serie de Fibonacci es la siguiente:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,… El próximo número en la serie simplemente es la suma de los dos números anteriores. Los números

de arranque son 0 y 1. El tercer número se calculó de la suma 0+1 (ya que no hay ningún número antes del primer 1) y es de nuevo 1. El próximo número es 1+1 = 2, luego 1+2 = 3, luego 2+3 = 5 y 5+3 = 8, etc., esta serie es consecutiva e infinita.

&�' (�)�*�(+�( ,�-�.�/ 0�1�2 Práctica 18

leer Numero

inicio

fin

escribir “ Introduzca un número”

Fibonacci (Numero)

Fibonacci (N)

i = 1; i < N; i++

fin

Fib = Aux

Fib = 0 , Sig = 1

No

Si

Aux = Sig

Sig += Fib

escribir “ – “ + Fib

escribir “ – “ + Fib

Page 32: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

160

3VHXGRFyGLJR� inicio escribir “ Introduce un numero entero” leer Numero Fibonacci (Numero) fin Funcion Fibonacci(N): entero inicio Fib = 0, Sig = 1 escribir Fib desde i = 1 hasta i < N hacer i++ hacer Aux = Sig hacer Sig += Fib hacer Fib = Aux escribir “ - ” + Fib fin_desde fin 3URJUDPD�HQ�-DYD� import java.io.*; public class Practica_18{ public static void main (String args[]) throws IOException{ int Numero; BufferedReader tecl = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Introduzca un numero"); Numero = Integer.parseInt(tecl.readLine()); Fibonacci(Numero); } public static void Fibonacci(int n){ int fib=0, sig = 1; System.out.print(fib); for( int i = 1; i < n; i++){ int aux = sig; sig += fib; fib = aux; System.out.print(" - "+fib); } } }

�� Es importante resaltar la definición de una función para calcular y mostrar la serie de Fibonacci dentro de la cual se observa la inicialización de variables en la sentencia for( int i = 1; i < n; i++) y int aux = sig; que también es una forma válida para la declaración de variables.

Page 33: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

161

35È&7,&$���� Construya un programa que muestre los múltiplos de 3 en orden descendente a partir de 99.

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU� HO� XVR� \� IXQFLRQDPLHQWR� GH� ODV� HVWUXFWXUDV� GH� UHSHWLFLyQ� HQ� HO� PRPHQWR� GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD La práctica consiste en decrementar el valor final del ciclo IRU en 3, con la expresión i-=, esta es una de las características relevantes de la sentencia IRU, en donde el “ incremento” de la estructura IRU�puede ser negativo, en cuyo caso será realmente un decremento y el ciclo contará hacia atrás.

&�' (�)�*�(+�( ,�-�.�/ 0�1�2 Práctica 19

3VHXGRFyGLJR inicio desde i=99 hasta i>=1 hacer i-=3 escribir “ -“ + i fin_desde fin 3URJUDPD�HQ�-DYD� public class Practica_19{ public static void main (String args[]){ for( int i = 99; i >=1;i-=3){ System.out.print("-"+ i); } } }

inicio

i = 99; i >=1; i - =3

fin

No

Si

escribir “ – “ + i

Page 34: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

162

35È&7,&$���� Construya un programa que despliegue las tablas de multiplicar del 1 al 10.

2EMHWLYR�GH�OD�SUiFWLFD��� &RPSUHQGHU�HO�XVR�\�IXQFLRQDPLHQWR�GH�ODV�HVWUXFWXUDV�GH�UHSHWLFLyQ�DQLGDGDV�HQ�HO�PRPHQWR�GH�LPSOHPHQWDU�FODVHV�TXH�LPSOLTXHQ�HO�GLVHxR�GH�DOJRULWPRV�SDUD�SUREDUODV�HQ�XQD�DSOLFDFLyQ�� $QiOLVLV�GHO�SUREOHPD�� Aunque la realización de esta práctica aparenta ser sencilla el programador requiere de práctica y experiencia en estructuras de repetición para poder anidarlas.

&�' (�)�*�(+�( ,�-�.�/ 0�1�2 Práctica 20

3VHXGRFyGLJR inicio desde i=1 hasta i<=10 hacer i++ desde j=1 hasta j<=10 hacer j++ escribir i +“ *” + j +” =” + i * j fin_desde fin_desde fin ���

inicio

i = 1; i <=10; i ++

fin

No

Si

escribir i + ” *” + j + ” =” + i *j

j = 1; j <=10; j++

Si

No

Page 35: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

163

3URJUDPD�HQ�-DYD��public class Practica_20{ public static void main (String args[]){ for( int i = 1; i <=10;i++){ for( int j=1; j<= 10; j++) System.out.println(i+" * "+ j +" = "+ i*j); System.out.println("\n"); } } }

Page 36: Manual de prácticas Java

MANUAL DE PRÁCTICAS FUNDAMENTOS DE PROGRAMACIÓN

164

�35È&7,&$6�35238(67$6�

1. Se definen los números triangulares como los obtenidos de sumar los números naturales sucesivos 1, 2, 3, ...; es decir, los primeros números triangulares son 1, 3, 6, 10, .... Elaborar un algoritmo para imprimir el N-ésimo número triangular. Describir el algoritmo mediante diagrama de flujo y Pseudocódigo.

2. Diseñar un algoritmo que, dados 10 números enteros, indique cuantos de ellos son números

pares, nos muestre estos y calcule la media aritmética de los impares.

3. Se desea un algoritmo que realice la operación de suma o resta de so números leídos del teclado en función de la respuesta S/N a un mensaje de petición de datos.

4. Diseñar el algoritmo de Euclides que calcule el M.C.D. (Máximo común divisor) de dos

números A y B. Este método se basa en dos teoremas:

• Si dos números son divisibles el uno por el otro, el menor es su máximo común divisor. • Si dos números a y b (a>b) no son divisibles el uno por el otro, los divisores comunes de

a y b son los mismos que los de b y r, siendo r el resto de la división entera de a entre b. 5. Elabore un programa para imprimir el triángulo de Floyd con un número dado de filas

completas.

1 2 3 4 5 6 7 8 9 10

6. La multiplicación ``a la rusa'' permite realizar el producto de dos números enteros utilizando

solo sumas y divisiones o productos por dos. El método consiste en realizar sucesivamente las siguientes operaciones: multiplicar uno de los números por dos y obtener la división entera del otro, también por dos. Se detiene el proceso al obtener como cociente de la división un uno. Por ejemplo, para multiplicar 22 por 64 se obtienen las dos columnas siguientes:

22 64 11 128 5 256 2 512 1 1024

22 x 64 = 1408

A continuación sumamos los números de la columna de la derecha que corresponden a números impares en la columna de la izquierda, esto es en nuestro caso: 128+256+1.024=1.408 y el resultado de la suma es el producto de los números iniciales. Elaborar un programa en Pascal que multiplique mediante este método dos números enteros introducidos por pantalla.

Page 37: Manual de prácticas Java

FUNDAMENTOS DE PROGRAMACIÓN MANUAL DE PRÁCTICAS

165

�35È&7,&$6�35238(67$6��

7. Dado un número entero, N, si la suma de sus divisores (sin contar a si mismo) es igual a N se

dice que ese número es perfecto. Si la suma es inferior, se dice que es deficiente, y si es superior se dice que es abundante. Por ejemplo:

o 6 tiene como divisores 1, 2, 3: Su suma es 6, por lo tanto es perfecto. o 8 tiene como divisores 1, 2, 4: Su suma es 7, por lo tanto es deficiente. o 24 tiene como divisores 1, 2, 3, 4, 6, 8, 12: Su suma es 36, por lo tanto es abundante.

Escribir un programa que reciba un número entero como parámetro y devuelva un valor que lo clasifique como perfecto, deficiente o abundante.

8. Diseñar un algoritmo que determine el precio de un billete de ida y vuelta en ferrocarril, dando

la distancia a recorrer y el número de días en destino, sabiendo que si la estancia es superior a 7 días y la distancia es superior a 800 km. el billete tiene una reducción del 30%. El precio por kilómetro es de 8,5 pesos.

9. Diseñar un programa que cuente e imprima los dígitos de un número dado. Por ejemplo, 17568

tiene 5 dígitos.

10. Calcule el valor de PI ( ��D�SDUWLU�GH�OD�VHULH�LQILQLWD

4 4 4 4 4 � � 1 - 3 + 5 - 7 + 9 - …

Imprima una tabla que muestre el valor de PI aproximado a un termino de esta serie, a dos, a tres, a cuatro, hasta N.

11. Ternas Pitagóricas. Un triangulo rectángulo puede tener lados que sean todos enteros. El

conjunto de tres valores enteros para los lados de un triangulo rectángulo se conoce como una terna pitagórica. Estos tres lados deben de satisfacer la relación de que la suma de los cuadrados de dos de los lados es igual al cuadrado de la hipotenusa. Encuentre todas las ternas pitagóricas para lado1, lado2 e hipotenusa, todos ellos no mayores de 500. utilice un ciclo IRU de triple anidamiento que pruebe todas la posibilidades.