Beruflich Dokumente
Kultur Dokumente
PLANTEL4CULHUACN
LZAROCRDENAS
MATERIALDEPRCTICAS
AnlisisyResolucindeProblemas
NoAmbrosioPimentel
2014
MANUAL DE PRCTICAS
FUNDAMENTOS DE PROGRAMACIN
35&7,&$
Calcular e imprimir el rea de un triangulo a partir de su base y altura.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU XQD FODVH SDUD FRQRFHU VX HVWUXFWXUD H LPSOHPHQWDFLyQ HQ XQ OHQJXDMH GH
SURJUDPDFLyQ
$QiOLVLVGHOSUREOHPD
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
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
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU XQD FODVH SDUD FRQRFHU VX HVWUXFWXUD H LPSOHPHQWDFLyQ HQ XQ OHQJXDMH GH
SURJUDPDFLyQ
$QiOLVLVGHOSUREOHPD
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
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
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU XQ JUXSR GH FODVHV TXH XWLOLFHQ FRQVWUXFWRUHV \ PRGLILFDGRUHV GH DFFHVR SDUD
DQDOL]DUGHTXpIRUPDDIHFWDQHOIXQFLRQDPLHQWRGHODVFODVHV\FXDQGRVRQUHFRPHQGDEOHVFDGDXQR
GHHOORV
$QiOLVLVGHOSUREOHPD
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
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
inicio
Pi = 3.141592
Escribir
Area, Volumen
fin
Prctica 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
3URJUDPDHQ-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
MANUAL DE PRCTICAS
19
20
21
22
23 }
FUNDAMENTOS DE PROGRAMACIN
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 SXEOLFVWDWLF
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 (KU que son utilizados
para calcular el rea y volumen del cilindro.
35&7,&$
Realizar e imprimir, la conversin de grados Celsius a grados Fahrenheit.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU XQ JUXSR GH FODVHV TXH XWLOLFHQ FRQVWUXFWRUHV \ PRGLILFDGRUHV GH DFFHVR SDUD
DQDOL]DUGHTXpIRUPDDIHFWDQHOIXQFLRQDPLHQWRGHODVFODVHV\FXDQGRVRQUHFRPHQGDEOHVFDGDXQR
GHHOORV
$QiOLVLVGHOSUREOHPD
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
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
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDUFODVHVTXHUHTXLHUDQGHHVWUXFWXUDVVHOHFWLYDVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
Para este ejercicio solo hacemos solicitud de una variable de tipo IORDWllamada 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
No
Escribir
Aprobado
fin
3VHXGRFyGLJR
Prctica 5
inicio
leer Calificacin
si Calificacin >= 8
escribir Aprobado
fin_si
fin
3URJUDPDHQ-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
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
35&7,&$
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDUFODVHVTXHUHTXLHUDQGHHVWUXFWXUDVVHOHFWLYDVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHO3UREOHPD
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 N2
Escribir N1
fin
3VHXGRFyGLJR
Prctica 5
inicio
leer N1, N2
si N1 > N2
escribir N1
sino
escribir N2
fin_si
fin
137
MANUAL DE PRCTICAS
FUNDAMENTOS DE PROGRAMACIN
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDUFODVHVTXHUHTXLHUDQGHHVWUXFWXUDVVHOHFWLYDVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHO3UREOHPD
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
Escribir
Salario
fin
138
No
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
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU FODVHV TXH UHTXLHUDQ GH HVWUXFWXUDV VHOHFWLYDV DQLGDGDV SDUD SUREDUODV HQ XQD
DSOLFDFLyQ
$QiOLVLVGHO3UREOHPD
Dados los datos A, B, C que representan variables de tipo LQW, ordenarlos en forma descendentes,
esto con ayuda de varias estructuras selectivas LI HOVHanidadas
139
MANUAL DE PRCTICAS
FUNDAMENTOS DE PROGRAMACIN
inicio
leer A, B, C,
Si
Si
escribir
A, B, C
Si
A>C
B>C
No
escribir
A, C, B,
No
A>B
No
escribir
C, A, B
Si
Si
B>C
A>C
No
escribir
B, A, C
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
No
escribir
C, B, A
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU FODVHV TXH UHTXLHUDQ GH HVWUXFWXUDV VHOHFWLYDV P~OWLSOHV SDUD LPSOHPHQWDUODV HQ HO
GHVDUUROORGHDSOLFDFLRQHV
$QiOLVLVGHO3UREOHPD
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
Escribir
Martes
Escribir
Mircoles
Escribir
Jueves
Escribir
Viernes
Escribir
Sabado
Escribir
Domingo
Otro
Escribir
Error
fin
3VHXGRFyGLJR
Prctica 9
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
3URJUDPDHQ-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
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 FDVHse ejecutan tambin todas las que
van a continuacin, hasta que se llega a un EUHDNo 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.
2EMHWLYRGHODSUiFWLFD
,PSOHPHQWDU FODVHV TXH UHTXLHUDQ GH HVWUXFWXUDV VHOHFWLYDV P~OWLSOHV SDUD LPSOHPHQWDUODV HQ HO
GHVDUUROORGHDSOLFDFLRQHV
$QiOLVLVGHOSUREOHPD
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:
Decidir si utilizar la sentencia LIo VZLWFKes 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 EUHDNdespus 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
4, 6, 9, 11
Escribir
31
Escribir
30
Si
Otro
$
= 0)
%%[(Anio
$ (Anio $
4 100
$
(Anio $
400 = =0)0)]
Escribir
29
No
Escribir
28
fin
! "#$
Prctica 10
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
Escribir
No existe
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
3URJUDPDHQMDYD
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.
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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
leer num
num_inv = 0
div_entera = num
resto_div = 0
div_entera != 0
No
Si
resto_div = div_entera mod 10
div_entera = div_entera / 10
escribir
num_inv
fin
! "#$
Prctica 11
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
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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
Acumulador = Acumulador + x
Contador = Contador + 1
Promedio = Acumulador / N
escribir
Promedio
fin
! "#$
Prctica 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
148
No
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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
No
Si
escribir
Contador
Contador = Contador + 2
fin
! "#$
Prctica 13
3VHXGRFyGLJR
inicio
N = 0, Contador = 1
leer N
mientras Contador <= N
imprimir Contador
hacer Contador = Contador + 2
fin_mientras
fin
3URJUDPDHQ-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
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
35&7,&$
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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
No
Si
escribir
N + * + Contador + = + N * Contador
Contador++
fin
! "#$
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
3URJUDPDHQ-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.
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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
Resto = Dividendo
Resto -= Divisor
Cociente++
Si
Resto >= Divisor
No
Cociente, Resto
fin
! "#$
Prctica 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
153
MANUAL DE PRCTICAS
FUNDAMENTOS DE PROGRAMACIN
3URJUDPDHQ-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+"
}
}
35&7,&$
Construya un programa que indique al usuario los nmeros primos comprendidos entre 1 y N.
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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 FRQWDGRUes 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 (WUXHRIDOVH).
154
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
inicio
Primo (N)
Contador = 1
primo = true,
i=2
leer Numero
No
(N mod i == 0)
and (N>3)
escribir
Los nmero primos son:
No
Numero. primo
Si
primo = false
Si
i++
escribir Contador
Si
i<N/2
Contador++
No
fin
Si
! "#$
Prctica 16
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
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
3URJUDPDHQ-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
MANUAL DE PRCTICAS
35&7,&$
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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 LQW1, se definen tambin dos variables, la primera SXEOLFllamada IDFW inicializada en 1, y la
segunda SULYDWHL; 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++
No
leer Numero
Si
Fact += i
escribir
El factorial de Numero es Num.fact
fin
fin
&' ()*(
+(
,-./ 012
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
3URJUDPDHQ-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;
}
}
}
158
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
35&7,&$
Fibonacci (N)
escribir
Introduzca un nmero
Fib = 0 , Sig = 1
escribir + Fib
leer Numero
i = 1; i < N; i++
Fibonacci (Numero)
No
Si
Aux = Sig
fin
Sig += Fib
Fib = Aux
escribir + Fib
fin
&' ()*(
+(
,-./ 012
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
3URJUDPDHQ-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
MANUAL DE PRCTICAS
35&7,&$
Construya un programa que muestre los mltiplos de 3 en orden descendente a partir de 99.
2EMHWLYRGHODSUiFWLFD
&RPSUHQGHU HO XVR \ IXQFLRQDPLHQWR GH ODV HVWUXFWXUDV GH UHSHWLFLyQ HQ HO PRPHQWR GH
LPSOHPHQWDUFODVHVTXHLPSOLTXHQHOGLVHxRGHDOJRULWPRVSDUDSUREDUODVHQXQDDSOLFDFLyQ
$QiOLVLVGHOSUREOHPD
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
IRUpuede ser negativo, en cuyo caso ser realmente un decremento y el ciclo contar hacia atrs.
inicio
i = 99; i >=1; i - =3
No
Si
escribir + i
fin
&' ()*(
+(
,-./ 012
Prctica 19
3VHXGRFyGLJR
inicio
desde i=99 hasta i>=1 hacer i-=3
escribir - + i
fin_desde
fin
3URJUDPDHQ-DYD
public class Practica_19{
public static void main (String args[]){
for( int i = 99; i >=1;i-=3){
System.out.print("-"+ i);
}
}
}
161
MANUAL DE PRCTICAS
FUNDAMENTOS DE PROGRAMACIN
35&7,&$
inicio
i = 1; i <=10; i ++
No
Si
No
j = 1; j <=10; j++
Si
escribir
i + * + j + = + i *j
fin
&' ()*(
+(
,-./ 012
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
Prctica 20
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
3URJUDPDHQ-DYD
163
MANUAL DE PRCTICAS
FUNDAMENTOS DE PROGRAMACIN
35&7,&$635238(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
FUNDAMENTOS DE PROGRAMACIN
MANUAL DE PRCTICAS
35&7,&$635238(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
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 ( DSDUWLUGHODVHULHLQILQLWD
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