Download System.out.println ("La palabra tiene " + cont + " vocales")

Document related concepts
no text concepts found
Transcript
U.S.B.
CARRERA INGENIERIA DE
SISTEMAS
PROGRAMACION II
Guía de laboratorios en Java
Lic. Katya Maricela Pérez Martínez
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
GUIA DE LABORATORIO
Escribir los siguientes programas en java.
1.
Escribir un programa para imprimir en pantalla “MI PRIMER PROGRAMA”
//primer programa
class ejer1
{
public static void main (String args[])
{
System.out.println ("mi primer programa");
}
}
2.
Escribir un programa para sumar dos números enteros desde el programa
/programa para sumar dos numeros de tipo entero
class ejer2
{
public static void main (String args[])
{
int A, B,C;
A = 3;
B = 6;
C = A + B;
System.out.println (" la suma de " + A + "+" + B + " = " + C);
}
}
3.
Escribir un programa para verificar si un número dado por el ususario es par o impar
//programa para verificar si un numero es par o impar
import java.io.*;
class ejer3
{
public static void main (String args[]) throws IOException
{
String dato;
int A;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
Lic. Katya Maricela Pérez Martínez
Page 2
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
System.out.println ("Ingrese un numero....");
dato = br.readLine ();
A = Integer.parseInt (dato);
if (A % 2 == 0)
System.out.println ("Es un numero par
");
else
System.out.println ("Es un numero impar ");
}}
}
4.
Escribir un programa para calcular el volumen de una circunferencia, dado el radio por el
usuario.
//PROGRAMA PARA CALCULAR EL VOLUMEN DE UNA CIRCUNFERENCIA
import java.io.*;
import java.math.*;
class ejer4
{
public static void main (String args[]) throws IOException
{
double r, v;
String dato;
final double pi = 3.1415;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println ("Cual es el radio de la
circunferencia ?....");
dato = br.readLine ();
r = Float.valueOf (dato).floatValue ();
v = pi * r * r;
System.out.println ("el volumen de la circunferencia es " + v);
}
}
Lic. Katya Maricela Pérez Martínez
Page 3
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
5.
Escribir un programa para leer e imprimir los datos de un empleado
//PROGRAMA PARA LEER LOS DATOS DE UN EMPLEADO
import java.io.*;
class ejer5
{
static int CI;
static String nombre;
static char sexo;
static String cargo;
static double sueldo;
static String dato;
public static void main (String args[]) throws IOException
{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println ("Ingrese los datos del empleado....");
System.out.print ("CI............");
dato = br.readLine ();
CI = Integer.parseInt (dato);
System.out.print ("NOMBRE..........");
nombre = br.readLine ();
System.out.print ("SEXO............");
sexo = br.readLine ().charAt (0);
System.out.print ("CARGO............");
cargo = br.readLine ();
System.out.print ("SUELDO..........");
dato = br.readLine ();
sueldo = Double.valueOf (dato).doubleValue ();
sueldo = Double.valueOf (dato).doubleValue ();
System.out.println ("----- IMPRIMIENDO DATOS DEL EMPLEADO -------");
System.out.println
System.out.println
System.out.println
System.out.println
System.out.println
("CI:............"
("NOMBRE:........"
("SEXO:.........."
("CARGO:........."
("SUELDO:........"
+
+
+
+
+
CI);
nombre);
sexo);
cargo);
sueldo);
}
}
Lic. Katya Maricela Pérez Martínez
Page 4
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
EJERCICIOS PROPUESTOS LABORATORIO
1.
Escribir un programa en Java que imprima por pantalla la frase “Hola, estoy programando en
Java”.
2.
Escribir un programa para imprimir en pantalla:
¿??????????????????????????????????????????????????????
**************************************************??
***
ESTRUCTURAS DE DATOS
***
***??
***??
***
CARRERA INGENIERIA DE SISTEMAS
***
***??
***??
***
TU NOMBRE
***
***??
***??
***
GESTION 2012
***
***??
***??
**************************************************??
¿??????????????????????????????????????????????????????
3.
4.
5.
6.
7.
8.
9.
10.
11.
Escribir un programa en Java que imprima por pantalla la suma de 456 y 567.
Escribir un programa en Java que imprima por pantalla la resta de 1234 y 532.
Escribir un programa en Java que imprima por pantalla la multiplicación de 1234 y 532.
Escribir un programa en Java que imprima por pantalla la división de 54 entre 67
Escribir un programa para verificar si un número dado por el usuario es positivo o negativo.
Escribir un programa en Java que lea dos números del teclado y diga cual es el mayor y cual
el menor.
Ingresar el nombre y la calificación de un estudiante e imprimir su nombre su nota y si está
APROBADO o REPROBADO.
Leer un monto en Bolivianos y convertir a dólares.
Hallar el volumen de una circunferencia utilizando la siguiente fórmula
v
12.
2
  r 2
3
Leer los datos de un paciente (nombre, peso, estatura, temperatura y presion ) e imprimir
los datos
Lic. Katya Maricela Pérez Martínez
Page 5
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
Java - Estruturas Repetitivas
OPERADORES ARITMETICOS BINARIOS EN JAVA
Operador
+
*
/
%
Uso
op1 + op2
op1 - op2
op1 * op2
op1 / op2
op1 % op2
Descripción
Suma op1 y op2
Resta op2 de op1
Multiplica op1 por op2
Divide op1 por op2
Calcula el resto de dividir op1 entre op2
Operaciones con "++" y "--"
Operador
++
++
---
Uso
op++
++op
op---op
Descripción
Incrementa op en 1; se evalúa al valor anterior al incremento
Incrementa op en 1; se evalúa al valor posterior al incremento
Decrementa op en 1; se evalúa al valor anterior al incremento
Decrementa op en 1; se evalúa al valor posterior al incremento
OPERADORES RELACIONALES EN JAVA
Operador
>
>=
<
<=
==
!=
Uso
op1 > op2
op1 >= op2
op1 < op2
op1 <= op2
op1 == op2
op1 != op2
Devuelve verdadero si
op1 es mayor que op2
op1 es mayor o igual que op2
op1 es menor que op2
op1 es menor o igual que op2
op1 y op2 son iguales
op1 y op2 son distintos
OPERADORES LOGICOS
Operador
&&
&
||
|
!
Uso
op1 && op2
op1 & op2
op1 || op2
op1 | op2
! op
Lic. Katya Maricela Pérez Martínez
Devuelve verdadero si...
op1 y op2 son ambos verdaderos, condicionalmente evalúa op2
op1 y op2 son ambos verdaderos, siempre evalúa op1 y op2
op1 o op2 son verdaderos, condicionalmente evalúa op2
op1 o op2 son verdaderos, siempre evalúa op1 y op2
op es falso
Page 6
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
GUIA DE LABORATORIO N°1
ESTRUCTURAS REPETITIVAS
“Desde el punto de vista de un programador, el usuario no es más que un
periférico que teclea cuando se le envía una petición de lectura”
P. Williams
1. Escribir un programa para sumar n términos de la siguiente sumatoria.
Ejemplo:
para n=3
1
1
1
11
+
+
=
2(1) 2(2) 2(3) 12
Solucion.
n: sera la cantidad de terminos
sum: la suma de los n terminos, es de tipo doble ya que el resultado es real
Diseñamos el TAD
Guia11
n : entero
sum: doble
Sumatoria(N): doble
main()
Implementamos a continuación el programa en java
Lic. Katya Maricela Pérez Martínez
Page 7
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
//PROGRAMA PARA CALCULAR LA SUMATORIA
import java.io.*;
class Guia11
{
static int n;
static double sum;
static double Sumatoria (int N)
{
double s = 0;
int c;
for (c = 1 ; c <= N ; c++)
{
s = s + 1 / (2 * (double) c);
System.out.print ("1/" + (2 * c) + " + ");
}
return s;
}
public static void main (String args[]) throws IOException
{
String dato;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println (" SUMATORIA DE 1/2+ 1/4 + 1/6+ 1/8 + ...");
System.out.println ("Cuantos terminos desea sumar....");
dato = br.readLine ();
n = Integer.parseInt (dato);
sum = Sumatoria (n);
System.out.println ("\n\n La suma es " + sum);
}
}
2. Escribir un programa para sumar n términos de la siguiente sumatoria.
1  4 + 2  5 + 3  6 + 4  7 + 5 8 + 6  9 + ...
Ejemplo:
para n = 4
Suma = 1  4 + 2  5 + 3  6 + 4  7
Suma= 4
Lic. Katya Maricela Pérez Martínez
+ 10
+ 18 + 28 = 60
Page 8
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
Solucion.
n: sera la cantidad de terminos
sum: la suma de los n terminos, es de tipo entero largo.
Diseñamos el TAD
Guia12
n : entero
sum: entero largo
SumatoriaII(N): entero largo
main()
Implementamos a continuación el programa en java
//PROGRAMA SUMATORIA II
import java.io.*;
class Guia12
{
static int n;
static long sum; //declaramos sum como entero largo
static long SumatoriaII (int N)
{
int i = 1, c = 4;
long S = 0, T;
while (i <= N)
{
T = i * c;
S = S + T;
c++;
i++;
System.out.print (T + " + ");
}
return S;
}
}
Lic. Katya Maricela Pérez Martínez
Page 9
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
public static void main (String args[]) throws IOException
{
String dato;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println (" SUMATORIA DE 1x4 + 2x5 + 3x6 + 4x7 + 5x8 ...");
System.out.println ("Cuantos terminos desea sumar....");
dato = br.readLine ();
n = Integer.parseInt (dato);
sum = SumatoriaII (n);
System.out.println ("\n\n La suma es " + sum);
}
}
3. Escribir un programa para sumar n términos de la siguiente sumatoria.
i i 1


i 1 i  2
n
Ejemplo: para n=4
𝟏
𝟐𝟏
+
𝟑
𝟒
+
𝟑𝟐
𝟓
+
𝟒𝟑
𝟔
=
𝟏𝟑𝟑
𝟏𝟎
Solucion.
n: sera la cantidad de terminos
sum: la suma de los n terminos, es de tipo doble ya que el resultado es real
Diseñamos el TAD
Guia13
n : entero
sum: doble
SumatoriaIII(N): doble
main()
Lic. Katya Maricela Pérez Martínez
Page 10
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
Implementamos a continuación el programa en java
//PROGRAMA PARA CALCULAR LA SUMATORIA III
import java.io.*;
class Guia13
{
static int n;
static double sum;
static double SumatoriaIII (int N)
{
double s = 0;
long c, num;
for (c = 1 ; c <= N ; c++)
{
num = 1;
for (int i = 1 ; i <= c - 1 ; i++)
num = num * c;
s = s + (double) num / (double)((c + 2));
System.out.print (num + "/" + (c + 2) + " + ");
}
return s;
}
public static void main (String args[]) throws IOException
{
String dato;
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println (" SUMATORIA DE 1/3+ 2^1/4 + 3^2/5+ 4^3/10 + ...");
System.out.println ("Cuantos terminos desea sumar....");
dato = br.readLine ();
n = Integer.parseInt (dato);
sum = SumatoriaIII (n);
System.out.println ("\n\n La suma es " + sum);
}
}
Lic. Katya Maricela Pérez Martínez
Page 11
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
EJERCICIOS PROPUESTOS
1. Escribir un programa para calcular la suma de los n primeros términos de:
1  6 + 2  7 + 3  8 + 4  9 +5 ∙ 10 + ...
Ejemplo: para n=3
1 ∙ 6 + 2 ∙ 7 + 3 ∙ 8 = 44
Hallar el valor de la siguiente suma para n términos:
2.
a) 2  3 + 3  4 + 4  5 + 5  6 + 6  7 + ...
b) 3 + 5 + 7 + 9 ...
c) 1  2 + 4  3 + 9  4 + 16  5 + 25  6 + ...
d)
1 + 1/5 + 1/25 + 1/125 + 1/625 + ………
e) 1/2 + 5/4 + 2 + 11/4 + 7/2 + 17/4 + 20/4 +… + 19/2
la razón es ¾
f) 22 + 42 + 62 + 82 +…
2
3
1
9
g) 1   
h)
i)
j)
4
27
1 2 3 4 5
   
2 3 4 5 6
1 1 1 1 1 1
     
2 3 4 5 6 7
1 1 1 1
  
3 6 9 12
3. Escribir un programa para calcular las siguientes sumatorias para n términos, en diferentes
funciones:
n
a)
1

i 1 i
n
b)
i 1
n
d)
 (1) i  i 
i 1
 (2i  1) 
n
e)
n
c)
i
2

i 1
2i
 i! 
i 1
Lic. Katya Maricela Pérez Martínez
Page 12
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
GUIA DE LABORATORIO N°2
VECTORES
“Codifica siempre como si la persona que finalmente mantendrá tu código
fuera un psicópata violento que sabe dónde vives”
Martin Golding
1. Escribir un programa para almacenar e imprimir un vector cuyos elementos son:
4,8,9,14 y 22.
Solucion.
T[5]: sera el vector de elementos enteros cuyo tamaño es 5
Diseñamos el TAD
Guia21
T[5]: entero
main()
Implementando en Java
//PROGRAMA PARA ALMACENAR LOS ELEMENTOS 4,8,9, 14, 22
import java.io.*;
class Guia21
{
static int T[]; //declaramos el vector T
public static void main(String arg[])
{
int i;
T=new int[6]; //creamos el vector para 6 elementos
T[1]=4;
T[2]=8;
T[3]=9;
T[4]=14;
T[5]=22;
Lic. Katya Maricela Pérez Martínez
Page 13
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
System.out.println("Imprimiendo el vector:");
i=1;
while (i<=5)
{
System.out.println(T[i]);
i=i+1;
}
}
}
2. Escribir un programa para almacenar e imprimir los siete días de la semana en un
vector
Solucion.
dias[7]: sera el vector de elementos de tipo cadena. Tamaño del vector 7.
Diseñamos el TAD
Guia22
dias[7]: cadena
main()
Implementando en Java
//programa para imprimir los dias de la semana
import java.io.*;
class Guia22
{
//declaramos e inicializamos el vector que sera de tipo cadena
static String dias[] = {"Lunes", "Martes", "Miercoles",
"jueves", "viernes", "sabado", "domingo"};
public static void main (String arg[])
{
int i;
System.out.println ("DIAS DE LA SEMANA");
for (i = 0 ; i <= 6 ; i++)
System.out.println (dias [i]);
}
}
Lic. Katya Maricela Pérez Martínez
Page 14
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
3. Escribir un programa para leer las notas de N estudiantes (sus nombres y sus notas)
en dos vectores, luego imprimir estos datos y hallar el promedio del curso
Solucion.
Si N = 4
El vector de nombres sera:
NomE =
Luis
1
Pedro
2
Maria
3
Gonzalo
4
77
1
57
2
90
3
68
4
El vector de notas sera:
Notas =
Utilizaremos dos vectores como se vio en las graficas anteriores:
NomE[ ]: Vector que Almacena los nombres de los estudiantes y sera de tipo cadena
Notas[ ]: Vector que almacena las notas de dichos estudiantes y sera de tipo entero
N: sera el tamaño del vector, la cantidad de estudiantes.
Diseñamos el TAD
Guia23
N: entero
NomE[N]: cadena
Notas[N]: entero
LeerDatos()
ImprimirDatos()
Promedio(): real
main()
main()
Lic. Katya Maricela Pérez Martínez
Page 15
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
Implementando en Java
//programa para leer las notas de N estudiantes (sus nombres y sus notas)
//en dos vectores, luego imprimir estos datos y hallar el promedio del curso
import java.io.*;
class Guia23
{
static String NomE[];
static int Notas[];
static int N;
static void LeerDatos ()
{
int i;
System.out.print ("Ingrese la cantidad de estudiantes....");
N = Lectura.Entero ();
NomE = new String [N + 1];
Notas = new int [N + 1];
for (i = 1 ; i <= N ; i++)
{
System.out.print ("Nombre del estudiante--->");
NomE [i] = Lectura.Cadena ();
System.out.print ("Ingrese su nota --->");
Notas [i] = Lectura.Entero ();
}
}
static void ImprimirDatos ()
{
System.out.println (" ESTUDIANTE
NOTA");
for (int i = 1 ; i <= N ; i++)
{
System.out.println ("
" + NomE [i] + "........." + Notas [i]);
}
}
static float promedio ()
{
Lic. Katya Maricela Pérez Martínez
float prom = 0;
for (int i = 1 ; i <= N ; i++)
prom = prom + Notas [i];
prom = prom / N;
Page 16
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
static float promedio ()
{
float prom = 0;
for (int i = 1 ; i <= N ; i++)
prom = prom + Notas [i];
prom = prom / N;
return prom;
}
public static void main (String arg[])
{
float p;
LeerDatos ();
ImprimirDatos ();
p=promedio();
System.out.println("El promedio de las notas es....."+p);
}
}
4. Escribir un programa para registrar en un vector los carnets de los estudiantes que
aprobaron Calculo I y en otro vector registrar los carnets de los estudiantes que
aprobaron Etica, y en un tercer vector los carnets de los que aprobaron ambas
materias.
Solución:
vCalculo[] : vector que tiene los carnets de los estudiantes que aprobaron Calculo
vEtica[]: vector que tiene los carnets de los estudiantes que aprobaron Etica
vComun[]: vector que tiene los carnets de los que aprobaron ambas materias
Lic. Katya Maricela Pérez Martínez
Page 17
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
Diseñamos el TAD
Guia24
vCalculo[]: entero
vEtica[N]: entero
vComun[N]: entero
llenarNuevo(d1,d2)
cuantosComunes(d,d2):entero
buscaNum(n,d):boolean
mostrarVector(v,x)
main()
/*Se deben crear dos vectores.
En uno se colocarán los carnet de los estudiantes que aprobaron Cálculo 1,
en otro los que aprobaron Etica.
Crear un tercer arreglo
que contenga los carnet de los estudiantes que aprobaron
main()
ambas materias.. */
class Guia24
{
static int [] vCalculo, vEtica, vComun;
public static void main (String arg[])
{
int nCal, nEt, comunes;
System.out.print ("Cuantos alumnos aprobaron CALCULO I?... ");
nCal = Lectura.Entero ();
System.out.print ("Cuantos alumnos aprobaron ETICA ?... ");
nEt = Lectura.Entero ();
vCalculo = new int [nCal];
vEtica = new int [nEt];
System.out.println ("\n Carnets de los alumnos que aprobaron CALCULO I \n ");
llenarVector (vCalculo, nCal);
System.out.println ("\n Carnets de los alumnos que aprobaron ETICA \n ");
llenarVector (vEtica, nEt);
comunes = (cuantosComunes (nCal, nEt));
vComun = new int [comunes];
llenarNuevo (nCal, nEt);
System.out.println ("\nCarnets de los alumnos que aprobaron ETICA Y CALCULO I \n ");
mostrarVector (vComun, comunes);
}
Lic. Katya Maricela Pérez Martínez
Page 18
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
static void llenarNuevo (int d, int d2)
{
int pos = 0;
for (int i = 0 ; i < d ; i++)
{
if (buscaNum (vCalculo [i], d2) == true)
{
vComun [pos] = vCalculo [i];
pos++;
}
}
}
/* ME DICE CUANTOS CARNETS ESTAN EN AMBOS VECTORES. TIENE 2 PARAMETROS: d: ES LA
DIMENSION DE vCalculo, d2: DIMENSION DE vEtica. BUSCA CADA ELEMENTO DE vCalculo en
vEtica */
static int cuantosComunes (int d, int d2)
{
int acum = 0;
for (int i = 0 ; i < d ; i++)
{
if (buscaNum (vCalculo [i], d2) == true)
acum++;
}
return acum;
}
/* ESTE METODO INDICA SI UN NUMERO n ESTA EN EL VECTOR vEtica. ADEMAS DE n, TIENE UN
PARAMETRO d, QUE ES LA DIMENSION DE vEtica, NECESARIA PARA CONTROLAR EL FOR */
static boolean buscaNum (int n, int d)
{
for (int i = 0 ; i < d ; i++)
{
if (vEtica [i] == n)
return true;
}
return false;
}
Lic. Katya Maricela Pérez Martínez
Page 19
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
/* METODO QUE ASIGNA VALORES A UN VECTOR DE DIMENSION D */
static void llenarVector (int v[], int d)
{
for (int i = 0 ; i < d ; i++)
{
System.out.print ("Introduzca el CI del alumno " + i + " ....");
v [i] = Lectura.Entero ();
}
}
/* ESTE METODO MUESTRA LOS ELEMENTOS DE UN VECTOR CUALQUIERA CON DIMENSION
CUALQUIERA, EL VECTOR ES EL PARAMETRO V Y LA DIMENSION DEL VECTOR X , SE PENSÓ ASI
PARA PODER UTILIZARLO EN EL VECTOR RESULTADO
*/
static void mostrarVector (int v[], int x)
{
for (int i = 0 ; i < x ; i++)
{
System.out.print (v [i] + " ");
}
}
}
EJERCICIOS PROPUESTOS
1. Escribir un programa para imprimir los signos del zoodiaco que deberán estar
almacenados en un vector. Además deberá mostrar desde que fecha y mes comienza y
hasta que fecha y mes termina un determinado signo
Lic. Katya Maricela Pérez Martínez
Page 20
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
2. Se tiene dos vectores de tamaño N, uno de ellos con las estaturas de los estudiantes y
el otro con los nombres de los estudiantes, se pide hallar los estudiantes cuya estatura
sea menor a X. X dado por el usuario. Los vectores deben ser llenados por el usuario.
3. Insertar un nuevo dato Y, después del elemento X en un vector que tiene N elementos.
4. Eliminar el elemento X del vector.
5. Se tiene dos vectores, un vector que tiene las edades de N estudiantes y en el segundo
vector está la frecuencia de estudiantes que están con esa edad, se pide hallar la
frecuencia relativa de cada edad.
Ej. Sean los dos vectores E de edades de N=21 estudiantes y el vector F es el vector
de frecuencia absoluta.
E=
F=
18
19
20
21
1
2
3
4
22
5
3
5
4
2
4
2
1
1
2
3
4
5
6
7
23
24
6
7
6. Leer las temperaturas de N días en un vector y obtener el promedio de las
temperaturas e imprimir los días cuya temperatura es menor a X, X dado por el usuario.
Lic. Katya Maricela Pérez Martínez
Page 21
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
GUIA DE LABORATORIO N°3
cadenas
“Primero resuelve el problema. Entonces, escribe el código”
John Johnson
•
Las cadenas se utilizan, en java, principalmente para el manejo de entrada-salida, por ejemplo:
1. Mostrar mensajes en pantalla.
2. Introducción de texto por parte del usuario.
3. Manipular archivos. (Los nombres de archivos y carpetas son cadenas)
MANIPULACION DE CADENAS
•
Las constantes de cadena van entre comillas dobles, a diferencia de las constantes de carácter
que van entre apostrofes. Por ejemplo: “Esta es constante de cadena”
•
Este tipo de dato no es un tipo primitivo, como int, double, etc., sino que es UNA CLASE.
•
Esta clase esta en java.lang.String que no necesita ser importada.
•
La sintaxis de declaración y declaración e inicialización es:
String nombreDeCadena = new String(); // esta es la forma completa de declaración.
nombreDeCadena = ”Cadena inicial”; // inicialización
String nombreDeCadena = new String("Cadena inicial"); // inicialización y declaración
completa.
•
La declaración anterior es debido a que el tipo String es una clase y la variable es la instanciación
de esa clase, esto es, un objeto de tipo String.
•
También se puede declarar y declarar e inicializar como sigue:
String nomCadena;
Lic. Katya Maricela Pérez Martínez
Page 22
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
String nomCadena = "Cadena inicial";
•
Un ejemplo de uso de las cadenas o constantes de cadena es:
System.out.println(“La potencia de “+base+” elevado a la “+ exp+ “ es “+ resultado);
•
Donde el símbolo + es llamado el operador de concatenación.
LOS METODOS DE LA CLASE STRING
•
Las cadenas no se pueden comparar con = = .
•
Los caracteres en las cadenas tienen un número de posición que inicia en CERO y termina en n1, donde n es la longitud de la cadena.
•
Los siguientes son algunos de los métodos más comunes en aplicaciones java y su sintaxis.
Considerar cadena1 y cadena2 como variables (objetos) de tipo String.
•
cadena1.equals(cadena2) regresa true si cadena1 y cadena2 son iguales, false de otra manera.
•
cadena1.equalsIgnoreCase(cadena2) regresa true si las cadenas son iguales ignorando las
mayúsculas, false de otra manera.
•
cadena1.compareTo(cadena2) regresa un valor entero 0 si son iguales, un valor menor que 0 si
cadena1 es menor lexicográficamente que cadena2 y un valor mayor que 0 si cadena1 es mayor
lexicográficamente que cadena2.
•
cadena1.replace(char1,char2) regresa otra cadena remplazando char1 por char2.
Por ejemplo:
cadena2 =”Cochabamba”.replace( 'a','I');
cadena2 tendrá el valor de CochIbImbI
•
cadena1.toLowerCase(); regresa otra cadena convirtiendo todas las letras a minúsculas.
•
cadena1.toUpperCase(); regresa otra cadena convirtiendo todas las letras a mayúsculas.
•
cadena1.trim(); regresa otra cadena sin espacios en blanco, caracteres de nueva línea y
tabuladores del inicio y del final de la cadena original.
•
cadena1.length(); regresa el numero, entero, de caracteres en la cadena.
•
cadena1.substring(indiceInicial, indiceFinal); regresa una subcadena que empieza en
indiceInicial y termina en indiceFinal-1.
•
cadena1.charAt(i); regresa el i-ésimo carácter de la cadena.
Lic. Katya Maricela Pérez Martínez
Page 23
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
•
cadena1.indexOf(subcadena,indiceInicial); regresa un entero que indica la posición donde
inicia la subcadena en la cadena. Si no existe la subcadena regresa -1.
•
cadena1.endsWith(subcadena); regresa true si cadena1 termina con subcadena, false de otra
manera.
•
cadena1.concat(cadena2); equivalente a cadena1 + cadena2 .
•
String.valueOf(arregloDeCaracteres);
regresa la representación String del arreglo de
caracteres. Esta conversión también puede ser realizada usando el constructor de la clase String.
String cadena1= new String(arregloDeCaracteres);
•
cadena1.toCharArray(); regresa el arreglo de caracteres correspondiente a cadena1.
CONVERSIÓN DE TIPOS PRIMITIVOS NUMÉRICOS A CADENA
Integer.toString(valorEntero); regresa el valor convertido en cadena.
Double.toString(valorDoble); regresa el valor convertido en cadena.
De manera semejante se convierten los otros tipos primitivos a cadena.
Integer.parseInt(“cadenaNumerica”);
valor representado en la cadena.
regresa el valor numérico entero correspondiente al
Double.parseDouble(“cadenaNumerica”); regresa el valor numérico doble correspondiente al
valor representado en la cadena.
De manera semejante se convierten los otros tipos primitivos de cadena a valores numéricos.
Integer.parseInt(“cadenaNumerica”, base); regresa el valor entero de la cadena representado
en la base numérica base.
Integer.toBinaryString(numeroEntero); regresa un valor binario en cadena.
Integer.toHexString(numeroEntero);
regresa un valor hexadecimal en cadena.
Integer.toOctalString(numeroEntero); regresa un valor octal en cadena
Lic. Katya Maricela Pérez Martínez
Page 24
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
EJERCICIOS RESUELTOS
1. Contar el numero de palabras que hay en una cadena, las palabras están separadas por un
espacio en blanco.
Diseñamos el TAD
Guia31
contar(): entero
main()
2.
3.
/**
* Este programa pretende contar el numero de palabras que hay en una cadena
* las palabras estan separadas por un espacio en blanco
*
**/
public class Guia31
{
public static void main (String args[])
{
String cad = new String ("");
char blanco = ' ';
int cuantos = 0;
System.out.print ("deme la cadena ");
cad = Lectura.Cadena ();
cuantos = contar (cad);
System.out.println ("Habia " + cuantos + "palabras");
}
Lic. Katya Maricela Pérez Martínez
Page 25
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
public static int contar (String st)
{
char a;
int n = 1; // para contar la primera palabra
int i = st.indexOf (" "); //para encontrar la posicion del primer blanco
while (i > 0)
{ // mientras haya espacios en blanco
n++; // sumo 1 al contador
st = st.substring (i + 1); // recorto la cadena para quitar una palabra
i = st.indexOf (" "); // encuentro el siguiente blanco
}
return n++; // para contar la ultima palabra
}
}
2. Escribir un programa para reemplazar todas las ocurrencias de un carácter c en la cadena cad
por un asterisco. El resultado queda en otra cadena. No usar la función replace.
Diseñamos el TAD
Guia32
reemplazar(): Cadena
main()
3.
4.
/**
* Este programa pretende reemplazar todas las ocurrencias de un caracter c
* en la cadena cad por un asterisco. El resultado queda en otra cadena
* No puede usar la funcion replace
**/
public class Guia32
{
public static void main (String args[])
{
String cad = new String (""); // cadena a revisar
char c; // caracter a buscar
String nueva = new String ("");
System.out.print ("deme la cadena….. ");
cad = Lectura.Cadena ();
Lic. Katya Maricela Pérez Martínez
Page 26
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
System.out.print ("Deme el caracter ….");
c = Lectura.Caracter ();
nueva = reemplazar (cad, c);
System.out.println ("la cadena nueva es…. " + nueva);
}
public static String reemplazar (String st, char letra)
{
char a;
String otra = new String (""); // nueva cadena a formar
for (int i = 0 ; i < st.length () ; i++)
{ // recorremos la cadena caracter a caracter
a = st.charAt (i); // tomamos un caracter
if (a == letra)
{ // si el caracter es el buscado
otra = otra + '*'; // colocamos un asterisco en al cadena nueva
}
else
{
otra = otra + a; // de lo contrario colocamos el mismo caracter que tenia
}
}
return otra; // devolvemos la nueva cadena
}
}
3. programa que pretende suprimir todos los espacios en blanco de una cadena cad. El
resultado queda en otra cadena.
Diseñamos el TAD
Guia33
suprime(): Cadena
main()
Lic. Katya Maricela Pérez Martínez
Page 27
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
/**
* Este programa pretende suprimir todos los espacios en blanco de una
* cadena cad El resultado queda en otra cadena
**/
public class Guia33
{
public static void main (String args[])
{
String cad = new String ("");
char blanco = ' ';
String nueva = new String ("");
System.out.print ("dame la cadena ….");
cad = Lectura.Cadena ();
nueva = suprime (cad, blanco);
System.out.println ("la cadena nueva es …" + nueva);
}
public static String suprime (String st, char espacio)
{
char a;
String otra = new String ("");
for (int i = 0 ; i < st.length () ; i++)
{
a = st.charAt (i);
if (a != espacio)
{
otra = otra + a;
}
}
return otra;
}
}
4. Programa que sirve para contar cuántas vocales tiene una palabra o frase.
Diseñamos el TAD
Guia34
Contar()
main()
Lic. Katya Maricela Pérez Martínez
Page 28
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
// Programa que sirve para contar cuántas vocales tiene una palabra o frase.
class Guia34
{
public static void main (String args[])
{
String palabra;
System.out.print(“Dame una palabra o una frase…..”);
palabra = Lectura.Cadena ();
Contar (palabra);
}
static void Contar (String p)
{
int n = 0, cont = 0;
n = p.length ();
for (int i = 0 ; i < n ; i++)
{
if ((p.charAt (i) == 'a') || (p.charAt (i) == 'e') || (p.charAt (i) == 'i') || (p.charAt (i) == 'o') || (p.charAt (i)
== 'u'))
cont++;
}
System.out.println ("La palabra tiene " + cont + " vocales");
}
}
5.
Escribir una aplicación para generar un código a partir del nombre, paterno, materno, dia, mes
y anio de los datos del usuario.
Diseñamos el TAD
Guia35
Nombre: cadena
Paterno: cadena
Materno:cadena
dia: entero
mes: entero
anio:entero
Generar(): cadena
main()
Lic. Katya Maricela Pérez Martínez
Page 29
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
// PROGRAMA PARA CODIFICAR UN NOMBRE CON LAS INICIALES DEL nOMBRE+PATERNO+MATERNO
// +DIA+MES+ANIO DE NACIMIENTO
import java.lang.String;
public class Guia35
{
static String Nombre, paterno, materno;
static int dia, mes, anio;
static String Generar (String nom, String pat, String mat, int d, int m, int a)
{
char cod;
String Codigo = new String ("");
cod = nom.charAt (0); //extrae el primer caracter del nombre
Codigo = Codigo + cod; //almacena en Codigo la inicial del nombre
cod = pat.charAt (0); //extrae el primer caracter del apellido paterno
Codigo = Codigo + cod; // concatena la inicial del nombre con la inicial del paterno
cod = mat.charAt (0); //extrae la inicial del apellido materno
Codigo = Codigo + cod; //concatena lo que tenia codigo con la inicial materno
Codigo = Codigo + (Integer.toString (dia)) + (Integer.toString (mes)) + (Integer.toString (anio));
return Codigo;
}
public static void main (String args[])
{
String Micodigo;
System.out.print ("Cual es tu nombre....");
Nombre = Lectura.Cadena ();
System.out.print ("Cual es tu Apellido paterno....");
paterno = Lectura.Cadena ();
System.out.print ("Cual es tu Apellido Materno....");
materno = Lectura.Cadena ();
do
{
System.out.print ("Dia de nacimiento....");
dia = Lectura.Entero ();
}
while (dia > 31 || dia < 1);
Lic. Katya Maricela Pérez Martínez
Page 30
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
do
{
System.out.print ("Mes de nacimiento...");
mes = Lectura.Entero ();
}
while (mes > 13 || mes < 1);
do
{
System.out.print ("Anio de nacimiento Ej 97...");
anio = Lectura.Entero ();
Micodigo = Generar (Nombre, paterno, materno, dia, mes, anio);
}
while (anio > 99);
System.out.print (" el codigo generado es ...." + Micodigo);
}
}
EJERCICIOS PROPUESTOS
1. Crear una clase donde dado un string que representa un nombre en mayúsculas
o minúsculas devolver un string formado por las iniciales en mayúsculas
seguidas de un punto.
2. Crear una clase donde dado un string de palabras sustituir cada ocurrencia de
un caracter dado por otro caracter. (por ejemplo: todas las s por *)
3.
Escriba una clase que permita eliminar un substring substr de un string str, si no
está devuelve el mismo string sin alterar.
4. Escriba una clase que reciba como parámetro el nombre de una persona, con el
apellido seguido de una coma, un espacio y después el nombre de pila. El
procedimiento debe imprimir el nombre de pila de la persona seguido de su
apellido.
Lic. Katya Maricela Pérez Martínez
Page 31
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
Implementación de la CLASE LECTURA, para la lectura de diferentes tipos de
datos en java.
LECTURA.JAVA
import java.io.*;
import java.io.IOException;
public class Lectura
{
public static String Cadena() //operacion que lee cadenas
{
String CadNum="";
try
{
BufferedReader Teclado = new BufferedReader(new InputStreamReader(System.in));
CadNum = Teclado.readLine();
}
catch(IOException e)
{
System.out.println("Error: "+e.getMessage());
}
return(CadNum);
}
public static short EnteroCorto() //operacion que lee un entero corto
{
try
{
return(Short.parseShort(Cadena()));
}
catch(NumberFormatException e)
{
return(Short.MIN_VALUE);
}
}
Lic. Katya Maricela Pérez Martínez
Page 32
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
public static long EnteroLargo() //operacion que lee un entero largo
{
try
{
return(Long.parseLong((Cadena())));
}
catch(NumberFormatException e)
{
return(Long.MIN_VALUE);
}
}
public static float Real() // operacion que lee un real
{
try
{
Float NumReal = new Float(Cadena());
return(NumReal.floatValue());
}
catch(NumberFormatException e)
{
return(Float.NaN);
}
}
public static double RealLargo() //operacion para leer un real largo
{
try
{
Double NumReal = new Double(Cadena());
return(NumReal.doubleValue());
}
catch(NumberFormatException e)
{
return(Double.NaN);
}
}
Lic. Katya Maricela Pérez Martínez
Page 33
[GUÍA DE LABORATORIOS EN JAVA] PROGRAMACION II
public static int Entero() //operacion que lee un entero
{
try
{
return(Integer.parseInt(Cadena()));
}
catch(NumberFormatException e)
{
return(Integer.MIN_VALUE);
}
}
public static char Caracter() //operacion para leer un caracter
{
try
{
return(Cadena().charAt(0));
}
catch(Exception e)
{
return('\0');
}
}
public static char CaracterMayuscula() //operacion para leer un character en mayuscula
{
try
{
String Temp;
Temp = Cadena().toUpperCase();
return(Temp.charAt(0));
}
catch(Exception e)
{
return('\0');
}
}
}
Lic. Katya Maricela Pérez Martínez
Page 34