Actividade 01 Resumen Unidad 03 - Rra

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

INSTITUTO TECNOLÓGICO SUPERIOR DE

TAMAZUNCHALE

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Materia: FUNDAMENTOS DE PROGRAMACIÓN

Docente: ING. IVAN HERNÁNDEZ HERNÁNDEZ

Actividad 01: RESUMEN_U3

Alumna: RAYMUNDO RODRIGUEZ ANTONIO


23ISC075

Semestre: 1º

Turno: MATUTINO 3

Fecha: 20 DE OCTUBRE DE 2023


1.3.4 Estructuras de decisión

En Java disponemos de tres estructuras de decisión o estructuras


condicionales:Decisión simple: ifDecisión múltiple: switchDecisión in-line: a>b ? "a
es Mayor" : "a es Menor"Comenzaremos analizando la sentencia if cuya estructura
es la siguiente:if( condicion ){ accion1;}else{ accion2;}.
Ejemplo: ¿es mayor de 21 años? En el siguiente ejemplo, utilizamos un if para
determinar si el valor (edad) ingresado por el usuario es mayor o igual que 21.W

Ejemplo: ¿es par o impar?


El siguiente programa pide al usuario que ingrese un valor entero e indica si el valor
in-gresado es par o impar. Recordemos que un número es par si es divisible por 2.
Es decir que el resto en dicha división debe ser cero. Para esto, utilizaremos el
operador % (operador módulo, retorna el resto de la división).

Para resolver este problema, primero obtenemos el resto que se origina al dividir v
por 2. Luego preguntamos si este resto es igual a cero. Notemos que el operador
para com-parar es == (igual igual). Java (como C) utiliza == como operador de
comparación ya que el operador = (igual) se utiliza para la asignación.El if in-line
tiene la siguiente estructura:condicion ? retornoPorTrue : retornoPorFalse;Lo
anterior debe leerse de la siguiente manera: si se verifi ca la condicion entonces se
retorna la expresión ubicada entre el ? (signo de interrogación) y los : (dos pun-tos).
Si la condicion resulta falsa entonces se retorna la expresión ubicada después de
los : (dos puntos).Ejemplo: ¿es par o impar? (utilizando if in-line)

La decisión múltiple switch tiene la siguiente estructura:switch( variableEntera )

Dependiendo del valor de variableEntera, el programa ingresará por el case,cuyo


valor coincide con el de la variable. Se ejecutarán todas las acciones desde ese
punto hasta el fi nal, salvo que se encuentre una sentencia break que llevará
al control del programa hasta la llave que cierra el switch. Por este motivo (al igual
que en C), es muy importante recordar poner siempre el break al fi nalizar cada
case.Ejemplo: muestra día de la semana.En el siguiente programa, pedimos al
usuario que ingrese un día de la semana (entre 1 y 7) y mostramos el nombre del
día. Si ingresa cualquier otro valor informamos que el dato ingresado es incorrecto.

Como vemos, el switch permite decidir entre diferentes opciones (siempre deben
ser numéricas). Dependiendo de cuál sea el valor ingresado por el usuario el
programa optará por elcase correspondiente. En caso de que el usuario haya
ingresado un valor para el cual no hemos definido ningún case entonces el
programa ingresará por default. Notemos también que utilizamos la sentencia break
para finalizar cada case. Esto es muy importante ya que si no la utilizamos el
programa, luego de entrar al case corres-pondiente, seguirá secuencialmente
ejecutando todas las sentencias posteriores. Si el lector conoce algo de lenguaje
C, esto no le llamará la atención ya que funciona exacta-mente igual.

1.3.5 Estructuras iterativas

Disponemos de tres estructuras iterativas: el while, el do-while y el for.Nuevamente,


para aquellos que conocen lenguaje C estas instrucciones son idénticas.
Comencemos por analizar el uso del while cuya estructura es la siguiente:

El ciclo itera mientras condición resulte verdadera. Ejemplo: muestra números


naturales. El siguiente programa utiliza un while para mostrar los primeros n
números naturales. El usuario ingresa el valor n por teclado..
Vemos que el ciclo while itera mientras que el valor de i sea menor o igual que el
valor de n (que fue ingresado por teclado). Por cada iteración mostramos el valor de
la variable i y luego la incrementamos. Analicemos el ciclo do-while cuya estructura
es la siguiente:

Este ciclo también itera mientras se verifi que la condicion, pero a diferencia del ciclo
anterior en este caso la entrada al ciclo no está condicionada; por lo tanto, las
acciones encerradas entre el do y el while se ejecutarán al menos una vez.
ejemplo: muestra números naturales (utilizando do-while).

Por último, veremos el ciclo for cuya estructura es la siguiente:


Este ciclo tiene tres secciones separadas por ; (punto y coma). En la primera
sección, se defi ne e inicializa una variable entera que llamaremos variable de
control. En la segun-da sección, se especifica una condición lógica que
(frecuentemente) estará en función de esta variable. En la tercera sección, se
define el incremento de la variable de control. El for de Java es exactamente el
mismo for de C++.Ejemplo: muestra números naturales (utilizando for).

1.3.4 Estructuras de decisión

En Java disponemos de tres estructuras de decisión o estructuras condicionales:


Decisión simple: if
Decisión múltiple: switch
Decisión in-line: a>b ? "a es Mayor" : "a es Menor"
Comenzaremos analizando la sentencia if cuya estructura es la siguiente:
if( condicion )
{
accion1;
}
Else
{
accion2;
}
Ejemplo: ¿es mayor de 21 años?En el siguiente ejemplo, utilizamos un if para
determinar si el valor (edad) ingresado por el usuario es mayor o igual que 21.
Ejemplo: ¿es par o impar?
El siguiente programa pide al usuario que ingrese un valor entero e indica si el valor
ingresado es par o impar. Recordemos que un número es par si es divisible por 2.
Es decir que el resto en dicha división debe ser cero. Para esto, utilizaremos el
operador (operador módulo, retorna el resto de la división).
%

Para resolver este problema, primero obtenemos el resto que se origina al dividir v

por 2. Luego preguntamos si este resto es igual a cero. Notemos que el operador
para com-parar es (igual igual). Java (como C) utiliza como operador de
== ==

comparación ya que el operador (igual) se utiliza para la asignación.El in-line tiene


= if

la siguiente estructura:
condicion ? retornoPorTrue : retornoPorFalse;
Lo anterior debe leerse de la siguiente manera: si se verifi ca la condicion entonces
se retorna la expresión ubicada entre el ? (signo de interrogación) y los : (dos pun-
tos). Si la condicion resulta falsa entonces se retorna la expresión ubicada después
de los : (dos puntos)
Ejemplo: ¿es par o impar? (utilizando if in-line)

La decisión múltiple switch tiene la siguiente estructura:

Dependiendo del valor de variableEntera, el programa ingresará por el case,cuyo


valor coincide con el de la variable. Se ejecutarán todas las acciones desde ese
punto hasta el final, salvo que se encuentre una sentencia break que llevará al
control del programa hasta la llave que cierra el switch. Por este motivo (al igual
que en C), es muy importante recordar poner siempre el break al finalizar cada case.
Ejemplo: muestra día de la semana.
En el siguiente programa, pedimos al usuario que ingrese un día de la semana
(entre 1 y 7) y mostramos el nombre del día. Si ingresa cualquier otro valor
informamos que el dato ingresado es incorrecto.
Como vemos, el switch permite decidir entre diferentes opciones (siempre deben
Ŷ

ser numéricas).
Dependiendo de cuál sea el valor ingresado por el usuario el programa optará
por el case correspondiente. En caso de que el usuario haya ingresado un valor
para el cual no hemos definido ningún case entonces el programa ingresará por
default. Notemos también que utilizamos la sentencia break para finalizar cada case.
Esto es muy importante ya que si no la utilizamos el programa, luego de entrar al
case correspondiente, seguirá secuencialmente ejecutando todas las sentencias
posteriores. Si el lector conoce algo de lenguaje C, esto no le llamará la atención
ya que funciona exacta-mente igual.

1.3.5 Estructuras interactivas.

Disponemos de tres estructuras iterativas: el while, el do-while y el for.Nuevamente,


para aquellos que conocen lenguaje C estas instrucciones son
idénticas.Comencemos por analizar el uso del while cuya estructura es la
siguiente:while( condicion )

El ciclo itera mientras condicion resulte verdadera.


Ejemplo: muestra números naturales.
El siguiente programa utiliza un while para mostrar los primeros números naturales.
El usuario ingresa el valor n por teclado.

Vemos que el ciclo while itera mientras que el valor de i sea menor o igual que el
valor de n (que fue ingresado por teclado). Por cada iteración mostramos el valor de
la variable i y luego la incrementamos.
Analicemos el ciclo do-while cuya estructura es la siguiente:

Por último, veremos el ciclo for cuya estructura es la siguiente:

Este ciclo tiene tres secciones separadas por ; (punto y coma). En la primera
sección, se define e inicializa una variable entera que llamaremos variable de
control. En la segunda sección, se especifica una condición lógica que
(frecuentemente) estará en función de esta variable. En la tercera sección, se
define el incremento de la variable de control.
El for de Java es exactamente el mismo for de C++.
Ejemplo: muestra números naturales (utilizando for).

1.4 Otros elementos del lenguaje

En esta sección estudiaremos otros elementos del lenguaje Java tales como
tipos de datos, definición de constantes, arrays, etcétera.
Java provee los siguientes tipos de datos:

Si el lector conoce algo de lenguaje C, podrá observar que en ambos lenguajes los
tipos de datos son prácticamente los mismos. En otros lenguajes las longitudes de
los tipos de datos pueden variar dependiendo de la arquitectura y del compilador
que se esté utilizando. Es decir: en C (por ejemplo) no siempre se reservará la
misma cantidad de memoria para una variable de tipo int. En Java (dado que los
programas Java corren dentro de una máquina virtual) las longitudes siempre serán
las expresadas en la tabla anterior. Este tema será tratado en detalle más adelante.

1.4.2 Algunas similitudes y diferencias con C y C++

Para aquellos lectores que tienen conocimientos de estos lenguajes, voy a marcar
algunos puntos que les resultarán útiles. A quien no conozca nada de C o C++,
considero que también podrá resultarle de utilidad leer esta sección, pero si el lector
nota que esta lectura le resulta algo confusa entonces le recomiendo directamente
pasarla por alto. El modificador unsigned no existe en Java. Los tipos enteros tienen
o no tienen bit de signo (según la tabla anterior) y esto no puede alterarse. El tipo
de datos boolean: en Java existe este tipo de datos que admite los valores true y false.
En C y C++, se utiliza el tipo int como booleano aceptando que el valor cero es false
y cualquier otro valor distinto de cero es true. Esto en Java no es aceptado. Los int
no tienen valor de verdad.
Operadores unarios y binarios son los mismos que en C, por lo tanto, las siguientes
sentencias son válidas tanto en C como en Java:

Recolección automática de memoria: esta es una diferencia clave entre Java y


C/C++. En Java el programador no tiene la responsabilidad de liberar la memoria
que va quedando des referenciada. Esta tarea es automática y la lleva a cabo un
proceso llamado Garbage Collector (el “recolector de basura”).

1.4.3 Definición de constantes

Las constantes se definen fuera de los métodos utilizando el modificador final.


Habitualmente, se las define como públicas y estáticas (public, static). Más adelante,
explicaremos el significado de public, static y “método”. Ejemplo: muestra día de la
semana (utilizando constantes).
1.4.4 Arrays

Un array es un conjunto de variables del mismo tipo cuyas direcciones de memoria


son contiguas. Esto permite definir un nombre para el array (conjunto de variables)
y acceder a cada elemento del conjunto (a cada variable) a través del nombre
común (nombre del array) más un subíndice que especifica la posición relativa del
elemento al que queremos acceder.
En Java los arrays comienzan siempre desde cero y se defi nen de la siguiente
manera:

También podemos construir una array de n elementos, siendo n una variable.

Debe quedar claro que el array es estático. Una vez definido su tamaño este será
fijo. No se pueden agregar ni eliminar elementos en un array.
Ejemplo: almacena valores en un array. En el siguiente ejemplo,
Definimos un array de 10 enteros. Luego pedimos al usuario que ingrese valores
numéricos (no más de diez) y los guardamos en el array. Por último, recorremos el
array para mostrar su contenido.

La lógica del ejemplo es bastante simple, pero utilizamos algunos recursos que no
fueron explicados hasta ahora.

Es decir que el while itera mientras v sea distinto de cero y mientras i sea menor que
10.
Si conocemos de antemano los valores que vamos a almacenar en el array
entonces podemos definirlo “por extensión”. Esto crea el array con la dimensión
necesaria para contener el conjunto de valores y asigna cada elemento del conjunto
en la posición relativa del array.

En Java los arrays son objetos y tienen un atributo length que indica su dimensión.

Nuevamente, debo recordarle al lector que no debe preocuparse por los términos
“objeto” y “atributo”. Estos temas los estudiaremos en el capítulo correspondiente.
Notemos también que no es lo mismo “definir” un array que “crear (o instanciar)” el
array.

Ejemplo: muestra día de la semana (utilizando un array).

1.4.5 Matrices

Una matriz es un array de dos dimensiones. Se definen de la siguiente manera:

Ejemplo: llena matriz con números aleatorios.


En el siguiente programa, pedimos al usuario que ingrese las dimensiones de una
matriz (fi las y columnas), creamos una matriz de esas dimensiones y la llenamos
con números generados aleatoriamente.
En este ejemplo utilizamos Math.random para generar un número aleatorio. El
métodorandom de la clase Math genera un número aleatorio mayor que cero y
menor que 1. Lo multiplicamos por 1000 y luego lo casteamos a int para obtener la
parte entera del número y asignarlo en la matriz.
Notemos también que casi al final, donde imprimimos cada celda de la matriz
con la sentencia:

concatenamos un carácter especial: \t (léase “barra te”). Este carácter


representa al tabulador. Es decir que luego de mostrar el contenido de cada celda
imprimimos un tabulador para que los números de la matriz se vean alineados.
La salida de este programa será la siguiente:

Dijimos que una matriz es un array de dos dimensiones, pero también podríamos
decir que una matriz es un array de arrays. Viéndolo de esta manera entonces
podemos conocer la cantidad define las y columnas de una matriz a través del
atributo length.

Se puede inicializar una matriz definiendo sus valores por extensión como veremos
en el siguiente ejemplo.
Esto dimensiona la matriz mat con 4 filas y 3 columnas y además asigna los valores
en las celdas correspondientes.

1.4.6 Literales de cadenas de caracteres

Una cadena de caracteres literal se representa encerrada entre comillas


dobles, por ejemplo: "Esto es una cadena". En cambio, un carácter literal se
representa ence-rrado entre comillas simples, por ejemplo: 'A'. En Java las cadenas
son tratadas como objetos, por lo tanto, "Esto es una cadena" es un objeto y
podemos invocar sus métodos como veremos a continuación:

En cambio, los caracteres (al igual que en C) son valores numéricos enteros. Por
ejemplo, ‘A' es, en realidad, el valor 65 ya que este es el código ASCII de dicho
carácter.
Notemos además que no es lo mismo "A" que 'A'. El primero es una cadena de
caracteres que contiene un único carácter; es un objeto. El segundo es un char; un
valor numérico.

Java concatena al valor numérico de i la cadena "A" entonces la salida de este pro-
grama será la siguiente:

Si en lugar de concatenar "A" hubiéramos concatenado 'A' así:


System.out.println(i+'A');
¿Por qué? Porque lo que estamos imprimiendo, en realidad, es el valor de i que es
una variable int cuyo valor inicial será 65 y se incrementará en cada iteración del
for.Por lo tanto, System.out.println imprime su valor numérico. Claro que esto se
puede arreglar casteando a char como vemos a continuación.

Para asignar i (tipo int) a c (tipo char) debemos “castear” su valor. Esto no es otra
cosa que “asegurarle al compilador” que el valor del entero i podrá ser contenido en
la variable c (de tipo char). Recordemos que un int se representa en 4 bytes con
bit de signo mientras que unchar se representa en dos bytes sin bit de signo. Por lo
tanto, no siempre se podría asignar un int a un char ya que el char no puede
almacenar valores negativos ni valores superiores a 2 -1 (máximo valor que se
16

puede almacenar en 2 bytes sin bit de signo).

1.4.7 Caracteres especiales

En Java (igual que enC) existen caracteres especiales. Estos caracteres se pueden
utilizar anteponiendo la barra \ (léase “barra” o carácter de “escape”). Algunos de
estos son:

Como vemos, para representarlos es necesario utilizar dos caracteres (la barra
más el carácter especial en sí mismo), pero esto no ocasiona ningún inconveniente.
La salida de este programa es la siguiente:

1.5 Tratamiento de cadenas de caracteres

Las cadenas de caracteres son tratadas como objetos porque


String no es un tipo de datos simple. String es una clase. un objeto es una variable
que además de contener información contiene los métodos (o funciones) necesarios
para manipular esta información.
Agreguemos también que las clases definen los tipos de datos de los objetos.
Con esta breve e informal definición, podremos estudiar algunos casos de manejo
de cadenas de caracteres sin necesidad de tratar en detalle el tema de objetos.
En Java, al igual que en C, no existe el tipo de datos String. Sin embargo, Java
provee la clase String. De este modo, como String es una clase resulta que las
cadenas de caracteres son objetos.
Un objeto es una variable que, además de tener información, tiene los métodos o
funciones necesarios para manipular dicha información.

1.5.1 Acceso a los caracteres de un String

Una cadena representa una secuencia finita de cero o más caracteres numerados
a partir de cero. Es decir que la cadena "Hola" tiene 4 caracteres numerados entre
0 y 3. El método charAt retorna al carácter (tipo char) ubicado en una posición
determinada. El método length retorna la cantidad de caracteres que tiene la
cadena. No debemos confundir el atributo length de los arrays con el método length
de los
strings. En el caso de los arrays, por tratarse de un atributo se lo utiliza sin
paréntesis.
En cambio, en el caso de los strings está implementado como un método, por lo
tanto,
siempre debe invocarse con paréntesis.

1.5.2 Mayúsculas y minúsculas

package libro.cap01.cadenas;
public class Cadenas1
{
public static void main(String[] args)
{
String s = "Esto Es Una Cadena de caracteres";
String sMayus = s.toUpperCase();
String sMinus = s.toLowerCase();
System.out.println("Original: "+s);
System.out.println("Mayusculas: "+sMayus);
System.out.println("Minusculas: "+sMinus);
}
}
􀅶
Recordemos que s es un objeto. Contiene información (la cadena en sí misma) y
los métodos necesarios para manipularla. Entre otros, los métodos toUpperCase y
toLowerCase que utilizamos en este ejemplo para pasar la cadena original a
mayúsculas
y a minúsculas respectivamente.

1.5.3 Ocurrencias de caracteres

package libro.cap01.cadenas;
public class Cadenas2
{
public static void main(String[] args)
{
String s = "Esto Es Una Cadena de caracteres";
int pos1 = s.indexOf('C');
int pos2 = s.lastIndexOf('C');
int pos3 = s.indexOf('x');
System.out.println(pos1);
System.out.println(pos2);
System.out.println(pos3);
}
}
􀅶
El método indexOf retorna la posición de la primera ocurrencia de un carácter dentro
del string. Si la cadena no contiene ese carácter entonces retorna un valor negativo.
Análogamente, el método lastIndexOf retorna la posición de la última ocurrencia del
carácter dentro del string o un valor negativo en caso de que el carácter no esté
contenido dentro de la cadena.

1.5.4 Subcadenas

package libro.cap01.cadenas;
public class Cadenas3
{
public static void main(String[] args)
{
String s = "Esto Es Una Cadena de caracteres";
String s1 = s.substring(0,7);
String s2 = s.substring(8,11);
// toma desde el caracter 8 hasta el fi nal
String s3 = s.substring(8);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
􀅶
La salida de este programa es la siguiente:
Esto Es Una Una Cadena de caracteres El método substring puede invocarse con
dos argumentos o con un único argumento. Si lo invocamos con dos argumentos,
estaremos indicando las posiciones desde (inclusive) y hasta (no inclusive) que
delimitarán la subcadena que queremos extraer. En cambio,
si lo invocamos con un solo argumento estaremos indicando que la subcadena a
extraer
comienza en la posición especifi cada (inclusive) y se extenderá hasta el fi nal del
string. Decimos que un método está “sobrecargado” cuando podemos invocarlo con
diferentes cantidades y/o diferentes tipos de argumentos. Este es el caso del
método substring.
“Sobrecarga de métodos” es uno de los temas que estudiaremos en el capítulo de
programación
orientada a objetos.

1.5.5 Prefijos y sufijos

Con los métodos startWith y endsWith, podemos verificar muy fácilmente si una
cadena comienza con un determinado prefijo o termina con algún sufijo.
package libro.cap01.cadenas;
public class Cadenas4
{
public static void main(String[] args)
{
String s = "Un buen libro de Java";
boolean b1 = s.startsWith("Un buen"); // true
boolean b2 = s.startsWith("A"); // false
boolean b3 = s.endsWith("Java"); // true
boolean b4 = s.endsWith("Chau"); // false
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
}

1.5.6 Posición de un substring dentro de la cadena

Los métodos indexOf y lastIndexOf están sobrecargados de forma tal que permiten
detectar la primera y la última ocurrencia (respectivamente) de un substring dentro
de
la cadena en cuestión.
􀅶
package libro.cap01.cadenas;
public class Cadenas5
{
public static void main(String[] args)
{
String s = "Un buen libro de Java, un buen material";
int pos1 = s.indexOf("buen"); // retorna 3
int
pos2 = s.lastIndexOf("buen"); // returna 26
System.out.println(pos1);
System.out.println(pos2);
}
}
1.5.7 Concatenar cadenas

Para concatenar cadenas podemos utilizar el operador + como se muestra a


continuación:
String x = "";
x = x + "Hola ";
x = x + "Que tal?";
System.out.println(x); // imprime "Hola Que tal?"
Si bien lo anterior funciona bien no es la opción más eficiente ya que cada
concatenación implica instanciar una nueva cadena y descartar la anterior.
Mucho más eficiente será utilizar la clase StringBuffer.

También podría gustarte