Vous êtes sur la page 1sur 37

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

Q /DYDULHJD P 0HUFDGR

MANUAL DE PRCTICAS

35&7,&$ 
Calcular e imprimir el rea de un triangulo a partir de su base y altura. 2EMHWLYR GH OD SUiFWLFD

FUNDAMENTOS DE PROGRAMACIN

,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 introduccin 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 frmula: Area = (Base * Altura) 2

inicio

leer Base, Altura

Area = ( Base * Altura ) / 2

Escribir Area

fin

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

130

"!    # 

Prctica 1

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 conversin del costo total de la gasolina en una variable Total, todas tipo GRXEOH. El equivalente a utilizar es de 3.785 Litros por Galn.

inicio

leer Galones, Precio

Total = Galones * 3.785 * Precio

Escribir Total

fin

"!    # 

Prctica 2 131

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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 clculo 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 asignacin de los valores de rea y volumen, ambos de tipo GRXEOH. El rea del cilindro lo calculamos aplicando la siguiente formula: 'RQGH  rea = 2 * UDGLR DOWXUD

El volumen del cilindro lo calculamos aplicando la siguiente formula: 9ROXPHQ


132

UDGLR2 * altura

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

inicio

Pi = 3.141592

leer Radio, Altura

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

Escribir Area, Volumen

fin

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;
133

"!    # 

Prctica 3

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

19 20 21 22 23 }

public Cilindro(double h, double r) { area = 2 * r * PI * h; volumen = PI * r * r * h; }

En esta prctica se hace uso de dos clases, Practica_3 y Cilindro; la primera contiene la funcin PDLQ, en la cual realizamos la solicitud de las variables Radio y Altura, como se muestra de la lnea 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 conversin 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 clculo de grados Celsius (centgrados) a grados Fahrenheit se genera a partir de la siguiente frmula: F = 1.8 * C +32

inicio

leer Centigrados

Fahrenheit = 1.8 * Centigrados + 32

Escribir Fahrenheit

fin

134

"!    # 

Prctica 4

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 calificacin de un alumno en un examen, escriba Aprobado en caso de que esa calificacin 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 calificacin, que compararemos en una estructura selectiva LI simple. Solo si la condicin resulta verdadera mostrara el mensaje Aprobado.

135

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

inicio

leer Calificacion

Calificacin >= 8 Si Escribir Aprobado No

fin

3VHXGRFyGLJR inicio leer Calificacin si Calificacin >= 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"); } }

136

"!    # 

Prctica 5

FUNDAMENTOS DE PROGRAMACIN

35&7,&$ 

MANUAL DE PRCTICAS

Indique e imprima cual es el mayor de dos nmeros 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 nmeros dados.

inicio

leer N1, N2

Si

N1 > N2

No

Escribir N1

Escribir N2

fin

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

"!    # 

Prctica 5

137

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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%.
inicio leer Salario

Si

Salario < 1000

No

Salario = Salario * 1.15

Salario = Salario * 1.12

Escribir Salario fin

138

"!    # 

Prctica 7

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 nmeros enteros diferentes ledos 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

139

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

inicio leer A, B, C,

Si

A>B

No

Si

A>C

No escribir C, A, B

Si

B>C

No escribir C, B, A

Si escribir A, B, C

B>C

No escribir A, C, B,

Si escribir B, A, C

A>C

No escribir B, C, A,

fin

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
140

"!    # 

Prctica 8

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 das de la semana, en funcin 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 Da introducida por el usuario ser de tipo LQW, y a partir de ella obtendremos el da de la semana correspondiente, para ello haremos uso de la estructura selectiva mltiple 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.

141

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

inicio leer Dia

Dia 1 Escribir Lunes 2 Escribir Martes 3 Escribir Mircoles 4 Escribir Jueves 5 Escribir Viernes 6 Escribir Sabado 7 Escribir Domingo Otro Escribir Error

fin

3VHXGRFyGLJR inicio leer Dia segn sea Dia 1: escribir Lunes 2: escribir Martes 3: escribir Mircoles 4: escribir Jueves 5: escribir Viernes 6: escribir Sbado 7: escribir Domingo otro: escribir Error fin_segn 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;
142

"!    # 

Prctica 9

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 tambin todas las que van a continuacin, hasta que se llega a un EUHDN o hasta que se termina el VZLWFK.

35&7,&$ 
Imprimir el nmero de das de un mes, en funcin del nmero de orden dentro del calendario (1= Enero, 2 = Febrero, etc.) y teniendo en cuenta si el ao 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 obtencin del nmero de das con los que cuenta un mes, requiere de dos variables de tipo LQW, Mes, la palabra Ao no puede ser utilizada como identificador vlido porque la mayora de los compiladores no reconoce la letra x, para este caso utilizaremos el identificador Anio y para ello debemos tomar en consideracin si el ao es o no bisiesto, esto se llevara a cabo a partir de las siguientes reglas:

5HJOD  Los aos exactamente divisibles entre 4 VRQ aos bisiestos. 5HJOD  Los aos exactamente divisibles entre 100 QR VRQ aos bisiestos. 5HJOD  Los aos exactamente divisibles entre 400 VRQ aos bisiestos

Decidir si utilizar la sentencia LI o VZLWFK es a consideracin del programador, el cual puede decidir cul 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 nmero entero, un valor enumerado o nico. Otro punto de inters es la sentencia EUHDN despus de cada FDVH. Cada sentencia EUHDN termina la declaracin FDVH que incluye, y el flujo del control contina con la siguiente declaracin FDVH Las declaraciones EUHDN son necesarias porque sin ellas el control fluira secuencialmente con declaraciones FDVH subsecuentes. Esta prctica nos ilustra una de las utilidades de la sentencia FDVH dentro de la estructura secuencial mltiple VZLWFK

143

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

inicio leer Mes, Anio

Mes 1, 3, 5, 7, 8, 10, 12 Escribir 31 4, 6, 9, 11 2 Otro Escribir No existe

Escribir 29

3VHXGRFyGLJR inicio leer Mes, Anio segn 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

144

65 3 2 1 0 ) &( ' % #4 && $

6 ( 7& 6 07
fin

Si

[(Anio (Anio (Anio

Prctica 10

6) 0 6) 0 0 6)

Escribir 30

4 = 0) 100 = 0)] 400 = 0)

No

Escribir 28

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 nmero 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 prctica es mostrar el nmero invertido de una cifra, por ejemplo, de 12345 su nmero invertido es 54321.

145

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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.
inicio

leer num

num_inv = 0 div_entera = num resto_div = 0

div_entera != 0 Si resto_div = div_entera mod 10

No

div_entera = div_entera / 10

num_inv = num_inv * 10 + resto_div

escribir num_inv fin

3VHXGRFyGLJR Inicio escribir Ingrese nmero 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
146

65 3 2 1 0 ) &( ' % #4 && $

Prctica 11

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 nmeros 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 clculo del promedio de una cierta cantidad de nmeros definiremos las siguientes variables: N : tipo LQW, determinar el nmero de veces que la estructura de repeticin se efectuar; Contador: tipo LQW un contador es una variable que incrementa de forma constante dentro de la estructura de repeticin. Acumulador: tipo GRXEOH, almacena la suma de los nmeros introducidos desde el teclado; Promedio: tipo GRXEOH guarda la media de los nmeros dados, mediante la formula: Promedio = Acumulador / N

147

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

inicio

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

leer N

Contador <= N Si leer x

No

Acumulador = Acumulador + x

Contador = Contador + 1

Promedio = Acumulador / N

escribir Promedio fin

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

148

65 3 2 1 0 ) &( ' % #4 && $

Prctica 12

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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 nmeros 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 iteracin para desplegar el nmero impar correspondiente.

149

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

inicio

N = 0, Contador =1

leer N

Contador <= N Si escribir Contador

No

Contador = Contador + 2

fin

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; } } }
150

65 3 2 1 0 ) &( ' % #4 && $

Prctica 13

FUNDAMENTOS DE PROGRAMACIN

35&7,&$ 

MANUAL DE PRCTICAS

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 nmero dado, a partir de una estructura cclica 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 expresin aritmtica Contador = Contador + 1, observe que el resultado es idntico en ambos casos.

inicio

N = 0, Contador =1

leer N

Contador <= N Si

No

escribir N + * + Contador + = + N * Contador

Contador++

fin

65 3 2 1 0 ) &( ' % #4 && $

Prctica 14

151

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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 nmeros 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 mtodo 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 divisin, el nmero de restas efectuadas ser el cociente.

152

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

inicio

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

leer Dividendo, Divisor

Resto = Dividendo

Resto -= Divisor

Cociente++ Si Resto >= Divisor No Cociente, Resto

fin

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

65 3 2 1 0 ) &( ' % #4 && $

Prctica 15

153

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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 nmeros 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 caracterstica principal de un nmero 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 despus 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 iteracin, en este caso el contador lo inicializaremos en 1 e ir incrementando su valor hasta N, para mostrar los nmeros primos existentes, esta es una variable de tipo LQW. Para identificar si el nmero dentro del rango, es primo o no, se define la clase 3ULPR, la cual devuelve una variable de tipo ERROHDQ o lgico (WUXH R IDOVH).

154

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

inicio

Primo (N)

Contador = 1

primo = true,

i=2

leer Numero No escribir Los nmero primos son: Si

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

primo = false

No

Numero. primo

Si i++

escribir Contador

Si

i<N/2 No fin

Contador++

Si

Contador <= Numero No fin

3VHXGRFyGLJR inicio escribir Escribe un nmero leer Numero escribir Los nmeros primos son: Contador = 1 repetir Num = Contador Si (Num es SULPR) Escribir Contador Fin_si Contador++ hasta que (Contador <= Numero) fin

65 3 2 1 0 ) &( ' % #4 && $

Prctica 16

155

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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 informacin 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 nmeros primos son:"), en donde ?Q representa una nueva lnea, es decir, coloca el cursor al principio de la siguiente lnea.

156

FUNDAMENTOS DE PROGRAMACIN

35&7,&$ 

MANUAL DE PRCTICAS

Construya un programa que calcule la funcin Factorial de un nmero 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 nmero entero positivo se define como el producto de todos los nmeros naturales anteriores o iguales a l. Se escribe n! y se lee n factorial , por definicin establecida el factorial de 0 es 1. Por ejemplo: 5! = 1 * 2 * 3 * 4 * 5 5! = 120 Para realizar el factorial del nmero, hacemos uso de una clase )DFWRULDO, que recibe el argumento de tipo LQW 1, se definen tambin 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.
inicio Factorial (N)

escribir Introduzca un nmero

Fact = 1

i = 2 ; i <= N ; i++ leer Numero Si escribir El factorial de Numero es Num.fact Fact += i

No

fin

fin

PI G F E D C @B A 9 #H @@ 8

Prctica 17

157

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

3VHXGRFyGLJR inicio escribir Introduzca un nmero 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 expresin fact *= i utiliza un operador de asignacin fact = fact * i.

que es similar a la expresin

158

FUNDAMENTOS DE PROGRAMACIN

35&7,&$ 

MANUAL DE PRCTICAS

Construya un programa que realice e imprima el mtodo de Fibonacci de un nmero 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 sucesin de Fibonacci, una sucesin de nmeros 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 prximo nmero en la serie simplemente es la suma de los dos nmeros anteriores. Los nmeros de arranque son 0 y 1. El tercer nmero se calcul de la suma 0+1 (ya que no hay ningn nmero antes del primer 1) y es de nuevo 1. El prximo nmero es 1+1 = 2, luego 1+2 = 3, luego 2+3 = 5 y 5+3 = 8, etc., esta serie es consecutiva e infinita.
inicio Fibonacci (N)

escribir Introduzca un nmero

Fib = 0 , Sig = 1

escribir + Fib leer Numero i = 1; i < N; i++ Si Aux = Sig fin Sig += Fib No

Fibonacci (Numero)

Fib = Aux

escribir + Fib

fin

PI G F E D C @B A 9 #H @@ 8

Prctica 18

159

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

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 definicin de una funcin para calcular y mostrar la serie de Fibonacci dentro de la cual se observa la inicializacin de variables en la sentencia for( int i = 1; i < n; i++) y int aux = sig; que tambin es una forma vlida para la declaracin de variables.

160

FUNDAMENTOS DE PROGRAMACIN

35&7,&$ 

MANUAL DE PRCTICAS

Construya un programa que muestre los mltiplos 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 prctica consiste en decrementar el valor final del ciclo IRU en 3, con la expresin i-=, esta es una de las caractersticas 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 atrs.

inicio

i = 99; i >=1; i - =3 Si escribir + i

No

fin

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); } } }

PI G F E D C @B A 9 #H @@ 8

Prctica 19

161

MANUAL DE PRCTICAS

35&7,&$ 

FUNDAMENTOS DE PROGRAMACIN

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 realizacin de esta prctica aparenta ser sencilla el programador requiere de prctica y experiencia en estructuras de repeticin para poder anidarlas.

inicio

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

No

No j = 1; j <=10; j++ Si escribir i + * + j + = + i *j

fin

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

162

PI G F E D C @B A 9 #H @@ 8

Prctica 20

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

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"); } } }

163

MANUAL DE PRCTICAS

FUNDAMENTOS DE PROGRAMACIN

35&7,&$6 35238(67$6
1. Se definen los nmeros triangulares como los obtenidos de sumar los nmeros naturales sucesivos 1, 2, 3, ...; es decir, los primeros nmeros triangulares son 1, 3, 6, 10, .... Elaborar un algoritmo para imprimir el N-simo nmero triangular. Describir el algoritmo mediante diagrama de flujo y Pseudocdigo. 2. Disear un algoritmo que, dados 10 nmeros enteros, indique cuantos de ellos son nmeros pares, nos muestre estos y calcule la media aritmtica de los impares. 3. Se desea un algoritmo que realice la operacin de suma o resta de so nmeros ledos del teclado en funcin de la respuesta S/N a un mensaje de peticin de datos. 4. Disear el algoritmo de Euclides que calcule el M.C.D. (Mximo comn divisor) de dos nmeros A y B. Este mtodo se basa en dos teoremas: Si dos nmeros son divisibles el uno por el otro, el menor es su mximo comn divisor. Si dos nmeros 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 divisin entera de a entre b.

5. Elabore un programa para imprimir el tringulo de Floyd con un nmero dado de filas completas. 1 2 4 7 3 5 8

6 9

10

6. La multiplicacin ``a la rusa'' permite realizar el producto de dos nmeros enteros utilizando solo sumas y divisiones o productos por dos. El mtodo consiste en realizar sucesivamente las siguientes operaciones: multiplicar uno de los nmeros por dos y obtener la divisin entera del otro, tambin por dos. Se detiene el proceso al obtener como cociente de la divisin un uno. Por ejemplo, para multiplicar 22 por 64 se obtienen las dos columnas siguientes: 22 11 5 2 1 22 x 64 = 64 128 256 512 1024 1408

A continuacin sumamos los nmeros de la columna de la derecha que corresponden a nmeros 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 nmeros iniciales. Elaborar un programa en Pascal que multiplique mediante este mtodo dos nmeros enteros introducidos por pantalla.
164

FUNDAMENTOS DE PROGRAMACIN

MANUAL DE PRCTICAS

35&7,&$6 35238(67$6
7. Dado un nmero entero, N, si la suma de sus divisores (sin contar a si mismo) es igual a N se dice que ese nmero es perfecto. Si la suma es inferior, se dice que es deficiente, y si es superior se dice que es abundante. Por ejemplo:
o o o

6 tiene como divisores 1, 2, 3: Su suma es 6, por lo tanto es perfecto. 8 tiene como divisores 1, 2, 4: Su suma es 7, por lo tanto es deficiente. 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 nmero entero como parmetro y devuelva un valor que lo clasifique como perfecto, deficiente o abundante. 8. Disear un algoritmo que determine el precio de un billete de ida y vuelta en ferrocarril, dando la distancia a recorrer y el nmero de das en destino, sabiendo que si la estancia es superior a 7 das y la distancia es superior a 800 km. el billete tiene una reduccin del 30%. El precio por kilmetro es de 8,5 pesos. 9. Disear un programa que cuente e imprima los dgitos de un nmero dado. Por ejemplo, 17568 tiene 5 dgitos. 10. Calcule el valor de PI ( D SDUWLU GH OD VHULH LQILQLWD 4 1 4 3 + 4 5 4 7 + 4 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 Pitagricas. Un triangulo rectngulo puede tener lados que sean todos enteros. El conjunto de tres valores enteros para los lados de un triangulo rectngulo se conoce como una terna pitagrica. Estos tres lados deben de satisfacer la relacin de que la suma de los cuadrados de dos de los lados es igual al cuadrado de la hipotenusa. Encuentre todas las ternas pitagricas para lado1, lado2 e hipotenusa, todos ellos no mayores de 500. utilice un ciclo IRU de triple anidamiento que pruebe todas la posibilidades.

165

Vous aimerez peut-être aussi