Tema 3. Elementos de Programación Estructurada
Tema 3. Elementos de Programación Estructurada
Tema 3. Elementos de Programación Estructurada
Elementos de
programación estructurada
C H R I S TO P H E R E X P Ó S I TO I Z Q U I E R D O
A I R A M E X P Ó S I TO M Á R Q U E Z
I S R A E L LÓ P E Z P L ATA
M A R Í A B E L É N M E L I Á N B AT I S TA
JOSÉ MARCOS MORENO VEGA
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
• Define un problema como aquel compuesto por un determinado número de subproblemas mas sencillos
que el original
• Los programas pueden leerse de forma secuencial, por lo que son más fáciles de entender
• Reduce el esfuerzo en pruebas. Facilita el seguimiento de los errores del programa gracias a su estructura mas sencilla
• Una condición lógica se puede considerar como una comprobación mediante operadores
relacionales que puede dar valores de true o false
Op1 Resultado
• Not (!)
false true
true false
Condicionales
• Gracias a los operadores lógicos, se puede hacer un anidamiento de condiciones lógicas
True False
Sentencia 2
Sentencia 3
Sentencia 4
Condicional if-else
• If: Ejecuta un conjunto de sentencias sólo si se da una
condición Sentencia 1
•If-Else: Igual que el if, pero con unas sentencias alternativas. True
Cond
False
Se pueden concatenar varios if y else
Sentencia 2 Sentencia 3
Condicional if-else
• Un if se define por la sentencia if(condición lógica) {}
True False
Cond
• 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
Sentencia 2 Sentencia 3
•If-Else: Igual que el if, pero con unas sentencias alternativas . Varia
ble
Se pueden concatenar varios if y else Val1 Val2 ValN
S2 S3 … SN
•Switch: Ejecuta un conjunto de sentencias dependiendo del
valor de una variable
Condicional switch
• Las condiciones se ejecutan dependiendo del valor de una
variable
Varia
• Dentro del bloque del switch, se tienen las sentencias case valor: Val1
ble
{}, cuyo bloque se ejecuta si la variable analizada tiene ese valor. Val2 ValN
Cada bloque del case debe terminar con la sentencia break;
S2 S3 … SN
• El número de veces que se repiten las sentencias de un bucle dependen de una condición lógica
• 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 Sentencia 1
predeterminado de veces
i=0
i = i+1
i < 10
•El control de las iteraciones se realiza con una variable interna True False
del bucle Sentencia 2
Sentencia 3
• En este bucle se define:
• Valor inicial de la variable Sentencia 4
• Incremento de la variable en cada iteración
• Condición en la que termina el bucle
Ejemplo bucle for. Contar hasta 10
Cuenta:
1 Print(“Cuenta:”)
2
3 i=1
i = i+1
4 i <= 10
5 True False
6 Print(i)
7
8
9
10 Print(“Fin”)
Fin
Bucle while
• Repite un conjunto de instrucciones siempre que se cumpla Sentencia 1
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 Condición
• Si la condición tiene valor false, se termina el bucle True False
Sentencia 2
• Mejor opción para el recorrido de estructuras • Sólo ejecuta las sentencias mientras se • Sólo ejecuta las sentencias mientras se
de datos cumpla la condición cumpla la condición
• continue: Si se ejecuta la sentencia continue, la iteración actual termina, pero el bucle continua
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
• 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];
int[] numeros = new int[10];
0 1 2 3 4 5 6
30 50 70 -49 1 1357 8
•Pueden ser inicializados directamente al igual que los vectores unidimensionales. Ejemplo:
int[][] numeros = {{1, 2, 3},
{4, 5, 6}};
Vectores multidimensionales. Ejemplo
int numeros[3][4] = {{30, 50, 70, 20} , {-49, 1, 1357, 8}, {33, -5, 37, 22}};
numeros[0][0] 0 1 2 3
numeros[1][0] 0 30 50 70 20
1 -49 1 1357 8
numeros[2][0]
2 33 -5 37 22
numeros[2][3]
Ejemplo de bucles con vectores
/*Partimos de la existencia de un vector vec de enteros. Queremos mostrar sus valores de la forma
[indice] = valor */
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.
• String cadena = “¡Hola!”; char[] cadena = {‘¡’, ‘H’, ‘o’, ‘l’, ‘a’, ‘!‘};
0 1 2 3 4 5
¡ H o l a !
• cadena[2] = ‘o’
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
Object obj;
obj = 1;
System.out.println(obj);
obj = “Prueba”;
System.out.println(obj);
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
Las clases contenedoras
Funcionalidades
• ParseXXX(Object param): Convierte el elemento pasado por parámetro en el tipo del contenedor
nombre
•Enlace: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
Otras estructuras de datos
• Mapa: Permite almacenar los datos en parejas de clave-valor
• Los valores se buscan en el mapa a partir de la clave
nombre
•Enlace: https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
Otras estructuras de datos
• Conjuntos: Almacena elementos, sin un orden determinado. No permite elementos repetidos
HashSet<tipo> nombre = new HashSet<>();
nombre
•Enlace: https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html