SlideShare una empresa de Scribd logo
LA PROGRAMACIÓN ESTRUCTURADA
• La programación estructurada es aquel paradigma de programación que dice que todo
programa puede escribirse únicamente utilizando 3 estructuras básicas de control:
• Secuencial
• Selección
• Iteración
• Se basa en un teorema desarrollado por Boehm y Jacopini en 1966
• Define un problema como aquel compuesto por un determinado número de subproblemas
mas sencillos que el original
•Forma una estructura top-down, es decir, jerárquica
LA PROGRAMACIÓN ESTRUCTURADA
• En programación estructurada, el diseño del programa es
descendente.
• Las estructuras de control manejadas son limitadas a
3. Evita el uso de las sentencias GOTO
• El ámbito de las estructuras también se encuentra limitado
• Cualquier algoritmo en programación estructurada
puede ser representado mediante un diagrama de flujo
Sentencia 1
Sentencia 2
Sentencia 3
VENTAJAS
• El paradigma de programación estructurada está pensado para mejorar la calidad, claridad y tiempo de desarrollo
• Los programas pueden leerse de forma secuencial, por lo que son más fáciles de entender
• La estructura de los programas es muy clara
• Reduce el esfuerzo en pruebas. Facilita el seguimiento de los errores del programa gracias a su estructura mas sencilla
• El software creado es mas fácil de ampliar, ya que es mas sencillo
• Se elimina el código espagueti
EJECUCIÓN DE UN PROGRAMA
• El flujo de ejecución de un programa se realiza
de manera lineal
• Puede ser representado mediante un diagrama de flujo
• Existen estructuras que permiten cambiar esta linealidad
• Condicionales.
• Bucles.
Sentencia 1
Sentencia 2 Sentencia 3
CONDICIONALES
• Permite ejecutar un conjunto de sentencias si se cumplen una serie de condiciones lógicas
• Una condición lógica se puede considerar como una comprobación mediante
operadores relacionales que puede dar valores de true o false
• Fundamental a la hora de desviar el flujo del programa
CONDICIONALES
• Las condiciones lógicas evalúan si unas determinadas variables o constantes cumplen
con una determinada restricción
• Se pueden anidar las diferentes evaluaciones mediante operadores lógicos
Operador relacional Operador lógico
< Menor que && And
> Mayor que || Or
<= Menor o igual que ! Not
>= Mayor o igual que
== Igual que
!= Distinto a
CONDICIONALES
• And (&&)
• Or (||)
• Not (!)
Op1 Op2 Resultado
false false false
false true false
true false false
true true true
Op1 Op2 Resultado
false false false
false true true
true false true
true true true
Op1 Resultado
false true
true false
CONDICIONALES
• Gracias a los operadores lógicos, se puede hacer un anidamiento de condiciones lógicas
• En este caso, es importante tener en cuenta la precedencia de los operadores
• Ejemplo: int a = 3; int b = 5; int c = 3; boolean d = true;
• (a == c) && (a < b) && d
• (a == c) && (a < b) && !d
• (a == c) && (a < b) || !d
• (a == c) && (a > b) || !d
• ((a == c) && (a > b)) || !d
CONDICIONAL IF
• If: Ejecuta un conjunto de sentencias sólo si
se da una condición
Sentencia 1
Cond
Sentencia 2
Sentencia 3
Sentencia 4
True False
CONDICIONAL IF-ELSE
• If: Ejecuta un conjunto de sentencias sólo si
se da una condición
•If-Else: Igual que el if, pero con unas sentencias alternativas.
Se pueden concatenar varios if y else
Sentencia 1
Sentencia 2 Sentencia 3
Cond
True False
CONDICIONAL IF-ELSE
• Un if se define por la sentencia if(condición lógica) {}
• El bloque delimitado por llaves será el conjunto de sentencias
que se ejecuten si la condición lógica tiene valor true
• Opcionalmente, se puede añadir después del
bloque del if la sentencia else {}, cuyo bloque es el conjunto
de sentencias ejecutadas si el valor no se cumple
• Existe la opción de incluir la sentencia else if(condición
lógica) {}, cuyo bloque se ejecuta si la sentencia if anterior no se
cumple y la condición lógica representada si
Sentencia 1
Sentencia 2 Sentencia 3
Cond
True False
CONDICIONAL SWITCH
• If: Ejecuta un conjunto de sentencias sólo si
se da una condición
•If-Else: Igual que el if, pero con unas sentencias alternativas .
Se pueden concatenar varios if y else
•Switch: Ejecuta un conjunto de sentencias dependiendo
del valor de una variable
Sentencia 1
S2 S3
Varia
ble
Val1 Val2
SN
ValN
…
CONDICIONAL SWITCH
• Las condiciones se ejecutan dependiendo del
valor de una variable
• Se representa mediante la sentencia switch(variable)
{}, siendo la variable entre paréntesis aquella cuyo valor se
analiza
• Dentro del bloque del switch, se tienen las sentencias case valor:
{}, cuyo bloque se ejecuta si la variable analizada tiene ese valor.
Cada bloque del case debe terminar con la sentencia break;
• Siempre se debe incluir la sentencia default: {}, cuyo
bloque se ejecuta cuando la variable no tiene ningun valor de
los “cases” anteriores
Sentencia 1
S2 S3
Varia
ble
Val1 Val2
SN
ValN
…
CONDICIONALES EN JAVA
if (a < b) {
System.out.println(“A es
menor”); System.out.println(“B
es mayor”);
}
Muestra los textos solo si el valor de la
variable a es menor al de la variable b
If
if (a < b) {
System.out.println(“A es menor”);
} else {
System.out.println(“A es mayor o
igual”);
}
Muestra “A es menor” si el valor de la variable a es menor
al de la variable b. En caso contrario, muestra “A es mayor o
igual”
If-Else
switch(a) {
case 1:
{
System.out.println(“Opción
1”); break;
}
case 2: {
System.out.println(“Opción
2”); break;
}
default: {
System.out.println(“Resto”);
}
}
Si la variable a vale 1, muestra “Opción 1”, si
vale 2, muestra “Opción 2”. Para el resto de
casos, muestra “Resto”.
Switch
if (a < b) {
System.out.println(“A es menor”);
} else if (a > b)
{ System.out.println(“A es
mayor”);
} else {
System.out.println(“SON IGUALES!”);
}
Ejemplo de concatenación de if y else
EJERCICIOS DE CONDICIONALES
1. Dado 2 números, mostrar el texto “Son iguales” sólo si los números son los mismos
2. Dados 2 números a y b, mostrar:
1. “los 2 son negativos” si a y b son menores a 0
2. “a es positivo, b es negativo” si a es mayor que 0 y b menor
3. “a es negativo, b es positivo” si a es menor que 0 y b mayor
4. “los 2 son positivos” si a y b son mayores a 0
3. Escribir el valor en letras de un número del 1 al 5 guardado en la variable a. En caso de
no
estar en este rango, escribir “Número incorrecto”
SENTENCIAS REPETITIVAS (BUCLES)
• Permiten repetir un bloque de sentencias un número determinado de veces
• El número de veces que se repiten las sentencias de un bucle dependen de una condición lógica
• Muy utilizados cuando se desea un comportamiento repetitivo del programa
• Ahorra la escritura de código repetido
• Ejemplo:
• Escribe los números del 1 al 10
• Escribe los números del 1 al 1000000
BUCLE
FOR
• Repite un conjunto de instrucciones un número
predeterminado de veces
•El control de las iteraciones se realiza con una variable interna
del bucle
• En este bucle se define:
• Valor inicial de la variable
• Incremento de la variable en cada iteración
• Condición en la que termina el bucle
Sentencia 1
Sentencia 2
Sentencia 3
Sentencia 4
i=0
i = i+1
i < 10
True False
EJEMPLO BUCLE FOR. CONTAR HASTA 10
Print(“Cuenta:”)
Print(i)
Print(“Fin”)
i=1
i = i+1
i <= 10
True
Cuenta
: 1
2
3
4
5
6
7
8
9
10
Fin
False
BUCLE WHILE
• Repite un conjunto de instrucciones siempre que se cumpla
una condición lógica definida
• Si la condición a evaluar tiene valor true, se ejecuta una iteración
de las sentencias del bucle
• Si la condición tiene valor false, se termina el bucle
• Si la condición no se cumple desde un inicio, las
sentencias dentro del bucle nunca se ejecutan
• Si la condición se cumple siempre, se pueden ocasionar
bucles infinitos
Sentencia 1
Condición
Sentencia 2
Sentencia 3
Sentencia 4
True False
EJEMPLO BUCLE WHILE. CONTAR HASTA 10
Cont = 1
Cont <= 10
Cont = Cont + 1
Print(“Fin”)
1
2
3
4
5
6
7
8
9
10
Fin
True False
Print(Cont)
EJEMPLO BUCLE WHILE INFINITO
Cont = 1
Cont != 10
Cont = Cont + 2
Print (“Fin”)
1
3
5
7
9
11
13
15
…
∞
True False
Print(Cont)
BUCLE DO-WHILE
• Repite un conjunto de instrucciones siempre que se cumpla
una condición definida
• Si la condición a evaluar tiene valor false, se termina el bucle
• Si la condición tiene valor true, se ejecuta una iteración de las
sentencias del bucle
• Similar al bucle while. 1 diferencia:
• La condición se comprueba al final de la estructura. En el bucle
while es al inicio
• Al igual que el while, puede ocasionar bucles infinitos
Sentencia 1
Condición
Sentencia 2
Sentencia 3
Sentencia 4
True
False
EJEMPLO BUCLE DO-WHILE. CONTAR HASTA 10.
Cont = 1
Cont > 10
Cont = Cont + 1
Print(“Fin”)
1
2
3
4
5
6
7
8
9
10
Fin
True
False
Print(Cont)
BUCLES EN JAVA. EJEMPLO CONTAR HASTA 10
for (int i = 1; i <= 10; i+
+)
{ System.out.println(i);
}
System.out.println(“Fin”);
For While Do-While
int i = 1;
while (i <= 10)
{ System.out.println
(i); i++;
}
System.out.println(“Fin”
);
int i =
1; do {
System.out.println(i
); i++;
} while (i <= 10);
System.out.println(“Fin
”);
BUCLES. COMPARATIVA
Bucle for
• Utilizado cuando se quiere un número de
iteraciones concreto
• Mejor opción para el recorrido
de estructuras de datos
Bucle while
• Utilizado cuando la condición de parada es
compleja
• Sólo ejecuta las sentencias
mientras se cumpla la condición
• La condición se evalúa
antes de las sentencias
Bucle do-while
• Utilizado cuando la condición de parada es
compleja y se quiere al menos una ejecución
• Sólo ejecuta las sentencias
mientras se cumpla la condición
• La condición se evalúa después de las
sentencias
int i =
1; do {
System.out.println(i
); i++;
} while (i <= 10);
System.out.println(“Fin
”);
int i = 1;
while (i <= 10)
{ System.out.println
(i); i++;
}
System.out.println(“Fin”);
for (int i = 1; i <= 10; i+
+)
{ System.out.println(i);
}
System.out.println(“Fin”);
BREAK Y CONTINUE
• Permiten romper un bucle de distintas formas
• break: Si se ejecuta la sentencia break, la ejecución del bucle termina
• continue: Si se ejecuta la sentencia continue, la iteración actual termina, pero el bucle continua
for (int i = 1; i <= 10; i+
+) { if (i == 5) break;
System.out.println(i);
}
for (int i = 1; i <= 10; i+
+) { if (i == 5)
continue;
System.out.println(i);
}
Muestra los números del 1 al
10, excepto el 5
Muestra los números del 1 al 4
EJERCICIOS DE SENTENCIAS REPETITIVAS
1. Escribir los números del 1 al 100 que sean
impares
2. Escribir los números incrementando desde 1 hasta que la suma de todos esos números sea
mayor a una variable entera x. Ejemplo:
1. X = 10; 1, 2, 3, 4, 5 🡪 1+2+3+4+5 = 15
2. X = 25; 1, 2, 3, 4, 5, 6, 7, 8 🡪 1+2+3+4+5+6+7+8 = 36
BUENAS PRÁCTICAS
• La indentación debe ser clara para los bucles. Se debe distinguir que sentencias están
dentro de que bucle
• Las llave abierta en un bucle se pone a la derecha de la condición o debajo. La llave cerrada, en su propia
línea
• OJO a los bucles infinitos
• En un bucle for el número de la iteración lo tenemos en la variable interna. No usar
otra para el mismo cometido
• En un condicional switch:
• Incluir la opción default aunque no se utilice
• Todas las opciones de un switch deben finalizar en un break
ESTRUCTURAS DE DATOS
• Una estructura de datos es un conjunto de valores (normalmente del mismo tipo)
agrupadas bajo un mismo identificador
• Sirven para representar agrupaciones de forma lógica, así como para facilitar su acceso
• En Java existen un gran número de estructuras de datos para las distintas necesidades de
almacenamiento de datos
• Dominar el manejo de las estructuras de datos es una tarea fundamental para
resolver cualquier problema
VECTORES UNIDIMENSIONALES
• Conjunto de datos agrupados e identificados por un mismo nombre
• Pueden ser de los mismos tipos de datos que cualquier variable (int, char, double, etc.)
• Se declaran siguiendo la forma tipo[] nombre = new tipo[tamaño];
• El tamaño debe ser una constante entera
• A cada elemento se accede a través de un índice, empezando por el 0
• Pueden ser inicializados directamente. Ejemplo:
• Los vectores simples se caracterizan por ser:
• Unidimensionales
• Tamaño fijo
int[] numeros = new
int[10];
int[] numeros = {1, 2, 3};
VECTORES UNIDIMENSIONALES. EJEMPLO
0 1 2 3 4 5 6
30 50 70 -49 1 1357 8
int numeros[7] = {30, 50, 70, -49, 1, 1357, 8};
numeros[0]
numeros[1] numeros[3] numeros[5]
numeros[2] numeros[4] numeros[6]
VECTORES MULTIDIMENSIONALES
• Extienden los vectores unidimensionales a 2 o mas dimensiones
• Se declaran siguiendo la forma tipo[][] nombre = new tipo[tamaño1][tamaño2];,
donde cada grupo de corchetes representa una dimensión del vector
•Pueden ser inicializados directamente al igual que los vectores unidimensionales. Ejemplo:
int[][] numeros = new int[10]
[15];
int[][] numeros = {{1, 2,
3},
{4, 5, 6}};
VECTORES MULTIDIMENSIONALES. EJEMPLO
0 1 2 3
0 30 50 70 20
1 -49 1 1357 8
2 33 -5 37 22
int numeros[3][4] = {{30, 50, 70, 20} , {-49, 1, 1357, 8}, {33, -5, 37, 22}};
numeros[0][0]
numeros[0][1]
numeros[2][3]
numeros[0][2] numeros[0][3]
numeros[1][0]
numeros[2][0]
EJEMPLO DE BUCLES CON VECTORES
/*Partimos de la existencia de un vector vec de enteros. Queremos mostrar sus valores de la
forma
[indice] = valor */
//Tamaño del vector
int tam =
vec.length;
//Con un bucle for
for (int i = 0; i < tam; i++)
{ System.out.println(“[“ + i + “] = ” +
vec[i]);
}
//Con un bucle
while int i = 0;
while (i < tam) {
System.out.println(“[“ + i + “] = ” +
vec[i]); i++;
}
EJERCICIOS DE ESTRUCTURAS DE DATOS
1. Leer todos los elementos de un vector simple de enteros y de
tamaño 10
2. Leer todos los elementos de un vector simple de enteros y de tamaño 10. Cuando uno de
los elementos sea mayor a 20, dejar de leer.
3. Sumar todos los elementos de una matriz de tamaño
5x10
LA CLASE STRING
• Como se ha visto, la clase String representa una cadena de caracteres
• Es una forma simplificada de representar un vector unidimensional de char.
• String cadena = “¡Hola!”; 🡪 char[] cadena = {‘¡’, ‘H’, ‘o’, ‘l’, ‘a’, ‘!‘};
• cadena[2] = ‘o’
0 1 2 3 4 5
¡ H o l a !
LA CLASE STRING
• La clase String nos permite realizar muchas operaciones con cadenas de
caracteres como (partiendo del ejemplo String cadena = “Hola clase”;):
• Concatenación: cadena + “ “ + “¿Qué tal?” 🡪 “Hola clase ¿Qué tal?”
• Conocer el tamaño: cadena.size() 🡪 10
• Obtener subcadenas: cadena.substring(5, 9) 🡪 “clase”
• Dividir cadena: String[] palabras = cadena.split(‘ ’) 🡪 palabras[0] = “Hola”, palabras[1] = “clase”
• Y muchas mas cosas
• Java tiene una documentación muy completa de lo que se puede hacer con sus
cadenas de caracteres en https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
LA CLASE OBJECT
• En Java existe una clase especial llamada Object, que representa a cualquier clase del sistema
• Implícitamente, todas las clases en Java derivan de Object
• Puede utilizarse para representar cualquier elemento genérico
Object
obj; obj =
1;
System.out.println(obj
); obj = “Prueba”;
System.out.println(obj
);
LAS CLASES CONTENEDORAS
Funcionalidades
• ParseXXX(Object param): Convierte el elemento pasado por parámetro en el tipo del contenedor
• XXXValue(): Convierte el elemento de la clase contenedora al tipo indicado en el nombre de la función
• ValueOf(): Convierte al tipo de la clase contenedora realizando las modificaciones necesarias
Integer num = Integer.ParseInt(“32”); num = 32
Integer num = new Integer(32);
String num =
Integer.StringInt();
num = “32”
Integer num = Integer.valueOf(“101011”,
2);
num = 43
LAS CLASES CONTENEDORAS
• En Java, los tipos básicos (int, double, char, etc.) tienen asociados un conjunto de clases que
extienden sus funcionalidades llamadas clases contenedoras
• Estas clases son muy parecidas en nombre a los tipos básicos asociados:
Primitivos Clase Contenedora Argumentos del Constructor
boolean Boolean boolean o String
byte Byte byte o String
char Character char
double Double double o String
float Float float, double o String
int Integer int o String
long Long long o String
short Short short o String

Más contenido relacionado

PPT
06 Desarrollo Programas Estructurados
PDF
3 java sesin 3 pps
PDF
Programación estructurada
DOC
Estructura Condicional
PDF
Unidad 1: Estructuras de control y condicionales
PDF
Fpr0407 control
PPTX
ESTRUCTURAS DE CONTROL
06 Desarrollo Programas Estructurados
3 java sesin 3 pps
Programación estructurada
Estructura Condicional
Unidad 1: Estructuras de control y condicionales
Fpr0407 control
ESTRUCTURAS DE CONTROL

Similar a 4. Elementos de programación estructurada.pptx (20)

PPTX
Programacion estructurada
PPT
Sentencia if else
 
PPSX
Estructura selectiva
DOCX
Pseudocodigos
PPTX
Estructuras selectivas.pptx
PPTX
Estructuras selectivas.pptx
DOCX
Trabajo de computacion
DOCX
Excondicionales
PPT
Tema III Estructuras de control
PPT
Introducción A Las Estructuras De Seleccion En C
PPTX
Estructuras de control en la programación.
PDF
Actividadad No 32 Estructuras-Selectivas.pdf
PPTX
Estructuras sintácticas de los lenguaje
DOCX
TABLA DE COMANDO /SENTENCIAS/PAQUETES
DOCX
TABLA DE COMANDO /SENTENCIAS/PAQUETES
DOCX
Trabajo bucles bn
DOC
Estructuras condicionales
PPTX
Programacion en c
PPTX
Introducción a JavaScript 2
PDF
Programación 1: estructuras de control
Programacion estructurada
Sentencia if else
 
Estructura selectiva
Pseudocodigos
Estructuras selectivas.pptx
Estructuras selectivas.pptx
Trabajo de computacion
Excondicionales
Tema III Estructuras de control
Introducción A Las Estructuras De Seleccion En C
Estructuras de control en la programación.
Actividadad No 32 Estructuras-Selectivas.pdf
Estructuras sintácticas de los lenguaje
TABLA DE COMANDO /SENTENCIAS/PAQUETES
TABLA DE COMANDO /SENTENCIAS/PAQUETES
Trabajo bucles bn
Estructuras condicionales
Programacion en c
Introducción a JavaScript 2
Programación 1: estructuras de control
Publicidad

Último (20)

PPTX
diego universidad convergencia e información
PDF
manual-sap-gratuito _ para induccion de inicio a SAP
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PDF
MANTENIMIENTO AIRE ACOINDICIOANDO S1_ELEC_MANT.pptx.pdf
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PPTX
Curso Corto de PLANTA CONCENTRADORA FREEPORT
PDF
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
PPTX
MANEJO DE QUIMICOS Y SGA GRUPO Mnsr Aleman.pptx
PPTX
DEBL Presentación PG 23.pptx [Autoguardado].pptx
PDF
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PPTX
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
PDF
Repaso sobre el Gusano_cogollero y como ataca .pdf
PDF
Diseño y Utiliación del HVAC Aire Acondicionado
PDF
TRABAJO DE ANÁLISIS DE RIESGOS EN PROYECTOS
PDF
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
PPTX
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
PDF
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
PDF
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
PPTX
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
diego universidad convergencia e información
manual-sap-gratuito _ para induccion de inicio a SAP
Manual ISO9001_2015_IATF_16949_2016.pptx
MANTENIMIENTO AIRE ACOINDICIOANDO S1_ELEC_MANT.pptx.pdf
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
Curso Corto de PLANTA CONCENTRADORA FREEPORT
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
MANEJO DE QUIMICOS Y SGA GRUPO Mnsr Aleman.pptx
DEBL Presentación PG 23.pptx [Autoguardado].pptx
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
357161027-seguridad-industrial-diapositivas-ppt.ppt
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
Repaso sobre el Gusano_cogollero y como ataca .pdf
Diseño y Utiliación del HVAC Aire Acondicionado
TRABAJO DE ANÁLISIS DE RIESGOS EN PROYECTOS
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
Publicidad

4. Elementos de programación estructurada.pptx

  • 1. LA PROGRAMACIÓN ESTRUCTURADA • La programación estructurada es aquel paradigma de programación que dice que todo programa puede escribirse únicamente utilizando 3 estructuras básicas de control: • Secuencial • Selección • Iteración • Se basa en un teorema desarrollado por Boehm y Jacopini en 1966 • Define un problema como aquel compuesto por un determinado número de subproblemas mas sencillos que el original •Forma una estructura top-down, es decir, jerárquica
  • 2. LA PROGRAMACIÓN ESTRUCTURADA • En programación estructurada, el diseño del programa es descendente. • Las estructuras de control manejadas son limitadas a 3. Evita el uso de las sentencias GOTO • El ámbito de las estructuras también se encuentra limitado • Cualquier algoritmo en programación estructurada puede ser representado mediante un diagrama de flujo Sentencia 1 Sentencia 2 Sentencia 3
  • 3. VENTAJAS • El paradigma de programación estructurada está pensado para mejorar la calidad, claridad y tiempo de desarrollo • Los programas pueden leerse de forma secuencial, por lo que son más fáciles de entender • La estructura de los programas es muy clara • Reduce el esfuerzo en pruebas. Facilita el seguimiento de los errores del programa gracias a su estructura mas sencilla • El software creado es mas fácil de ampliar, ya que es mas sencillo • Se elimina el código espagueti
  • 4. EJECUCIÓN DE UN PROGRAMA • El flujo de ejecución de un programa se realiza de manera lineal • Puede ser representado mediante un diagrama de flujo • Existen estructuras que permiten cambiar esta linealidad • Condicionales. • Bucles. Sentencia 1 Sentencia 2 Sentencia 3
  • 5. CONDICIONALES • Permite ejecutar un conjunto de sentencias si se cumplen una serie de condiciones lógicas • Una condición lógica se puede considerar como una comprobación mediante operadores relacionales que puede dar valores de true o false • Fundamental a la hora de desviar el flujo del programa
  • 6. CONDICIONALES • Las condiciones lógicas evalúan si unas determinadas variables o constantes cumplen con una determinada restricción • Se pueden anidar las diferentes evaluaciones mediante operadores lógicos Operador relacional Operador lógico < Menor que && And > Mayor que || Or <= Menor o igual que ! Not >= Mayor o igual que == Igual que != Distinto a
  • 7. CONDICIONALES • And (&&) • Or (||) • Not (!) Op1 Op2 Resultado false false false false true false true false false true true true Op1 Op2 Resultado false false false false true true true false true true true true Op1 Resultado false true true false
  • 8. CONDICIONALES • Gracias a los operadores lógicos, se puede hacer un anidamiento de condiciones lógicas • En este caso, es importante tener en cuenta la precedencia de los operadores • Ejemplo: int a = 3; int b = 5; int c = 3; boolean d = true; • (a == c) && (a < b) && d • (a == c) && (a < b) && !d • (a == c) && (a < b) || !d • (a == c) && (a > b) || !d • ((a == c) && (a > b)) || !d
  • 9. CONDICIONAL IF • If: Ejecuta un conjunto de sentencias sólo si se da una condición Sentencia 1 Cond Sentencia 2 Sentencia 3 Sentencia 4 True False
  • 10. CONDICIONAL IF-ELSE • If: Ejecuta un conjunto de sentencias sólo si se da una condición •If-Else: Igual que el if, pero con unas sentencias alternativas. Se pueden concatenar varios if y else Sentencia 1 Sentencia 2 Sentencia 3 Cond True False
  • 11. CONDICIONAL IF-ELSE • Un if se define por la sentencia if(condición lógica) {} • El bloque delimitado por llaves será el conjunto de sentencias que se ejecuten si la condición lógica tiene valor true • Opcionalmente, se puede añadir después del bloque del if la sentencia else {}, cuyo bloque es el conjunto de sentencias ejecutadas si el valor no se cumple • Existe la opción de incluir la sentencia else if(condición lógica) {}, cuyo bloque se ejecuta si la sentencia if anterior no se cumple y la condición lógica representada si Sentencia 1 Sentencia 2 Sentencia 3 Cond True False
  • 12. CONDICIONAL SWITCH • If: Ejecuta un conjunto de sentencias sólo si se da una condición •If-Else: Igual que el if, pero con unas sentencias alternativas . Se pueden concatenar varios if y else •Switch: Ejecuta un conjunto de sentencias dependiendo del valor de una variable Sentencia 1 S2 S3 Varia ble Val1 Val2 SN ValN …
  • 13. CONDICIONAL SWITCH • Las condiciones se ejecutan dependiendo del valor de una variable • Se representa mediante la sentencia switch(variable) {}, siendo la variable entre paréntesis aquella cuyo valor se analiza • Dentro del bloque del switch, se tienen las sentencias case valor: {}, cuyo bloque se ejecuta si la variable analizada tiene ese valor. Cada bloque del case debe terminar con la sentencia break; • Siempre se debe incluir la sentencia default: {}, cuyo bloque se ejecuta cuando la variable no tiene ningun valor de los “cases” anteriores Sentencia 1 S2 S3 Varia ble Val1 Val2 SN ValN …
  • 14. CONDICIONALES EN JAVA if (a < b) { System.out.println(“A es menor”); System.out.println(“B es mayor”); } Muestra los textos solo si el valor de la variable a es menor al de la variable b If if (a < b) { System.out.println(“A es menor”); } else { System.out.println(“A es mayor o igual”); } Muestra “A es menor” si el valor de la variable a es menor al de la variable b. En caso contrario, muestra “A es mayor o igual” If-Else switch(a) { case 1: { System.out.println(“Opción 1”); break; } case 2: { System.out.println(“Opción 2”); break; } default: { System.out.println(“Resto”); } } Si la variable a vale 1, muestra “Opción 1”, si vale 2, muestra “Opción 2”. Para el resto de casos, muestra “Resto”. Switch if (a < b) { System.out.println(“A es menor”); } else if (a > b) { System.out.println(“A es mayor”); } else { System.out.println(“SON IGUALES!”); } Ejemplo de concatenación de if y else
  • 15. EJERCICIOS DE CONDICIONALES 1. Dado 2 números, mostrar el texto “Son iguales” sólo si los números son los mismos 2. Dados 2 números a y b, mostrar: 1. “los 2 son negativos” si a y b son menores a 0 2. “a es positivo, b es negativo” si a es mayor que 0 y b menor 3. “a es negativo, b es positivo” si a es menor que 0 y b mayor 4. “los 2 son positivos” si a y b son mayores a 0 3. Escribir el valor en letras de un número del 1 al 5 guardado en la variable a. En caso de no estar en este rango, escribir “Número incorrecto”
  • 16. SENTENCIAS REPETITIVAS (BUCLES) • Permiten repetir un bloque de sentencias un número determinado de veces • El número de veces que se repiten las sentencias de un bucle dependen de una condición lógica • Muy utilizados cuando se desea un comportamiento repetitivo del programa • Ahorra la escritura de código repetido • Ejemplo: • Escribe los números del 1 al 10 • Escribe los números del 1 al 1000000
  • 17. BUCLE FOR • Repite un conjunto de instrucciones un número predeterminado de veces •El control de las iteraciones se realiza con una variable interna del bucle • En este bucle se define: • Valor inicial de la variable • Incremento de la variable en cada iteración • Condición en la que termina el bucle Sentencia 1 Sentencia 2 Sentencia 3 Sentencia 4 i=0 i = i+1 i < 10 True False
  • 18. EJEMPLO BUCLE FOR. CONTAR HASTA 10 Print(“Cuenta:”) Print(i) Print(“Fin”) i=1 i = i+1 i <= 10 True Cuenta : 1 2 3 4 5 6 7 8 9 10 Fin False
  • 19. BUCLE WHILE • Repite un conjunto de instrucciones siempre que se cumpla una condición lógica definida • Si la condición a evaluar tiene valor true, se ejecuta una iteración de las sentencias del bucle • Si la condición tiene valor false, se termina el bucle • Si la condición no se cumple desde un inicio, las sentencias dentro del bucle nunca se ejecutan • Si la condición se cumple siempre, se pueden ocasionar bucles infinitos Sentencia 1 Condición Sentencia 2 Sentencia 3 Sentencia 4 True False
  • 20. EJEMPLO BUCLE WHILE. CONTAR HASTA 10 Cont = 1 Cont <= 10 Cont = Cont + 1 Print(“Fin”) 1 2 3 4 5 6 7 8 9 10 Fin True False Print(Cont)
  • 21. EJEMPLO BUCLE WHILE INFINITO Cont = 1 Cont != 10 Cont = Cont + 2 Print (“Fin”) 1 3 5 7 9 11 13 15 … ∞ True False Print(Cont)
  • 22. BUCLE DO-WHILE • Repite un conjunto de instrucciones siempre que se cumpla una condición definida • Si la condición a evaluar tiene valor false, se termina el bucle • Si la condición tiene valor true, se ejecuta una iteración de las sentencias del bucle • Similar al bucle while. 1 diferencia: • La condición se comprueba al final de la estructura. En el bucle while es al inicio • Al igual que el while, puede ocasionar bucles infinitos Sentencia 1 Condición Sentencia 2 Sentencia 3 Sentencia 4 True False
  • 23. EJEMPLO BUCLE DO-WHILE. CONTAR HASTA 10. Cont = 1 Cont > 10 Cont = Cont + 1 Print(“Fin”) 1 2 3 4 5 6 7 8 9 10 Fin True False Print(Cont)
  • 24. BUCLES EN JAVA. EJEMPLO CONTAR HASTA 10 for (int i = 1; i <= 10; i+ +) { System.out.println(i); } System.out.println(“Fin”); For While Do-While int i = 1; while (i <= 10) { System.out.println (i); i++; } System.out.println(“Fin” ); int i = 1; do { System.out.println(i ); i++; } while (i <= 10); System.out.println(“Fin ”);
  • 25. BUCLES. COMPARATIVA Bucle for • Utilizado cuando se quiere un número de iteraciones concreto • Mejor opción para el recorrido de estructuras de datos Bucle while • Utilizado cuando la condición de parada es compleja • Sólo ejecuta las sentencias mientras se cumpla la condición • La condición se evalúa antes de las sentencias Bucle do-while • Utilizado cuando la condición de parada es compleja y se quiere al menos una ejecución • Sólo ejecuta las sentencias mientras se cumpla la condición • La condición se evalúa después de las sentencias int i = 1; do { System.out.println(i ); i++; } while (i <= 10); System.out.println(“Fin ”); int i = 1; while (i <= 10) { System.out.println (i); i++; } System.out.println(“Fin”); for (int i = 1; i <= 10; i+ +) { System.out.println(i); } System.out.println(“Fin”);
  • 26. BREAK Y CONTINUE • Permiten romper un bucle de distintas formas • break: Si se ejecuta la sentencia break, la ejecución del bucle termina • continue: Si se ejecuta la sentencia continue, la iteración actual termina, pero el bucle continua for (int i = 1; i <= 10; i+ +) { if (i == 5) break; System.out.println(i); } for (int i = 1; i <= 10; i+ +) { if (i == 5) continue; System.out.println(i); } Muestra los números del 1 al 10, excepto el 5 Muestra los números del 1 al 4
  • 27. EJERCICIOS DE SENTENCIAS REPETITIVAS 1. Escribir los números del 1 al 100 que sean impares 2. Escribir los números incrementando desde 1 hasta que la suma de todos esos números sea mayor a una variable entera x. Ejemplo: 1. X = 10; 1, 2, 3, 4, 5 🡪 1+2+3+4+5 = 15 2. X = 25; 1, 2, 3, 4, 5, 6, 7, 8 🡪 1+2+3+4+5+6+7+8 = 36
  • 28. BUENAS PRÁCTICAS • La indentación debe ser clara para los bucles. Se debe distinguir que sentencias están dentro de que bucle • Las llave abierta en un bucle se pone a la derecha de la condición o debajo. La llave cerrada, en su propia línea • OJO a los bucles infinitos • En un bucle for el número de la iteración lo tenemos en la variable interna. No usar otra para el mismo cometido • En un condicional switch: • Incluir la opción default aunque no se utilice • Todas las opciones de un switch deben finalizar en un break
  • 29. ESTRUCTURAS DE DATOS • Una estructura de datos es un conjunto de valores (normalmente del mismo tipo) agrupadas bajo un mismo identificador • Sirven para representar agrupaciones de forma lógica, así como para facilitar su acceso • En Java existen un gran número de estructuras de datos para las distintas necesidades de almacenamiento de datos • Dominar el manejo de las estructuras de datos es una tarea fundamental para resolver cualquier problema
  • 30. VECTORES UNIDIMENSIONALES • Conjunto de datos agrupados e identificados por un mismo nombre • Pueden ser de los mismos tipos de datos que cualquier variable (int, char, double, etc.) • Se declaran siguiendo la forma tipo[] nombre = new tipo[tamaño]; • El tamaño debe ser una constante entera • A cada elemento se accede a través de un índice, empezando por el 0 • Pueden ser inicializados directamente. Ejemplo: • Los vectores simples se caracterizan por ser: • Unidimensionales • Tamaño fijo int[] numeros = new int[10]; int[] numeros = {1, 2, 3};
  • 31. VECTORES UNIDIMENSIONALES. EJEMPLO 0 1 2 3 4 5 6 30 50 70 -49 1 1357 8 int numeros[7] = {30, 50, 70, -49, 1, 1357, 8}; numeros[0] numeros[1] numeros[3] numeros[5] numeros[2] numeros[4] numeros[6]
  • 32. VECTORES MULTIDIMENSIONALES • Extienden los vectores unidimensionales a 2 o mas dimensiones • Se declaran siguiendo la forma tipo[][] nombre = new tipo[tamaño1][tamaño2];, donde cada grupo de corchetes representa una dimensión del vector •Pueden ser inicializados directamente al igual que los vectores unidimensionales. Ejemplo: int[][] numeros = new int[10] [15]; int[][] numeros = {{1, 2, 3}, {4, 5, 6}};
  • 33. VECTORES MULTIDIMENSIONALES. EJEMPLO 0 1 2 3 0 30 50 70 20 1 -49 1 1357 8 2 33 -5 37 22 int numeros[3][4] = {{30, 50, 70, 20} , {-49, 1, 1357, 8}, {33, -5, 37, 22}}; numeros[0][0] numeros[0][1] numeros[2][3] numeros[0][2] numeros[0][3] numeros[1][0] numeros[2][0]
  • 34. EJEMPLO DE BUCLES CON VECTORES /*Partimos de la existencia de un vector vec de enteros. Queremos mostrar sus valores de la forma [indice] = valor */ //Tamaño del vector int tam = vec.length; //Con un bucle for for (int i = 0; i < tam; i++) { System.out.println(“[“ + i + “] = ” + vec[i]); } //Con un bucle while int i = 0; while (i < tam) { System.out.println(“[“ + i + “] = ” + vec[i]); i++; }
  • 35. EJERCICIOS DE ESTRUCTURAS DE DATOS 1. Leer todos los elementos de un vector simple de enteros y de tamaño 10 2. Leer todos los elementos de un vector simple de enteros y de tamaño 10. Cuando uno de los elementos sea mayor a 20, dejar de leer. 3. Sumar todos los elementos de una matriz de tamaño 5x10
  • 36. LA CLASE STRING • Como se ha visto, la clase String representa una cadena de caracteres • Es una forma simplificada de representar un vector unidimensional de char. • String cadena = “¡Hola!”; 🡪 char[] cadena = {‘¡’, ‘H’, ‘o’, ‘l’, ‘a’, ‘!‘}; • cadena[2] = ‘o’ 0 1 2 3 4 5 ¡ H o l a !
  • 37. LA CLASE STRING • La clase String nos permite realizar muchas operaciones con cadenas de caracteres como (partiendo del ejemplo String cadena = “Hola clase”;): • Concatenación: cadena + “ “ + “¿Qué tal?” 🡪 “Hola clase ¿Qué tal?” • Conocer el tamaño: cadena.size() 🡪 10 • Obtener subcadenas: cadena.substring(5, 9) 🡪 “clase” • Dividir cadena: String[] palabras = cadena.split(‘ ’) 🡪 palabras[0] = “Hola”, palabras[1] = “clase” • Y muchas mas cosas • Java tiene una documentación muy completa de lo que se puede hacer con sus cadenas de caracteres en https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
  • 38. LA CLASE OBJECT • En Java existe una clase especial llamada Object, que representa a cualquier clase del sistema • Implícitamente, todas las clases en Java derivan de Object • Puede utilizarse para representar cualquier elemento genérico Object obj; obj = 1; System.out.println(obj ); obj = “Prueba”; System.out.println(obj );
  • 39. LAS CLASES CONTENEDORAS Funcionalidades • ParseXXX(Object param): Convierte el elemento pasado por parámetro en el tipo del contenedor • XXXValue(): Convierte el elemento de la clase contenedora al tipo indicado en el nombre de la función • ValueOf(): Convierte al tipo de la clase contenedora realizando las modificaciones necesarias Integer num = Integer.ParseInt(“32”); num = 32 Integer num = new Integer(32); String num = Integer.StringInt(); num = “32” Integer num = Integer.valueOf(“101011”, 2); num = 43
  • 40. LAS CLASES CONTENEDORAS • En Java, los tipos básicos (int, double, char, etc.) tienen asociados un conjunto de clases que extienden sus funcionalidades llamadas clases contenedoras • Estas clases son muy parecidas en nombre a los tipos básicos asociados: Primitivos Clase Contenedora Argumentos del Constructor boolean Boolean boolean o String byte Byte byte o String char Character char double Double double o String float Float float, double o String int Integer int o String long Long long o String short Short short o String