Antes de escribir código en cualquier lenguaje de programación, lo más importante es aprender a pensar como un programador. Programar consiste principalmente en analizar un problema, descomponerlo en partes más pequeñas y diseñar una secuencia lógica de pasos para resolverlo.
Un algoritmo es un conjunto finito, ordenado e inequívoco de instrucciones que, al seguirse paso a paso, resuelve un problema o realiza una tarea determinada.
Cualquier algoritmo trabaja con tres elementos básicos:
Para que una secuencia de pasos sea un algoritmo válido, debe ser:
Un diagrama de flujo es la representación gráfica de un algoritmo mediante símbolos geométricos conectados por flechas que indican el orden de ejecución.
En el curso utilizaremos la sintaxis de los diagramas de actividades de PlantUML para generar estos diagramas mediante texto.
| Elemento | Sintaxis PlantUML | Descripción |
|---|---|---|
| Inicio | start | Punto de partida del algoritmo |
| Fin | stop (o end) | Punto final del algoritmo |
| Acción / Paso | :Hacer algo; | Cualquier instrucción (pedir datos, calcular, mostrar resultados…) |
| Decisión | if (…) then (…) else (…) endif | Bifurcación según una condición |
Cualquier algoritmo, por complejo que sea, se construye combinando únicamente tres estructuras lógicas fundamentales:
Las instrucciones se ejecutan de forma lineal, una detrás de otra, en el orden en que están escritas.
Permite tomar decisiones: el flujo se divide en dos caminos dependiendo de si se cumple o no una condición lógica (Verdadero / Falso).
Permite repetir un conjunto de instrucciones mientras se cumpla una condición determinada.
Evalúa la condición antes de ejecutar el bloque de instrucciones.
Evalúa la condición después de ejecutar el bloque de instrucciones (se ejecuta al menos una vez).
Se utiliza habitualmente cuando se conoce de antemano el número exacto de iteraciones.
El pseudocódigo es una forma de expresar un algoritmo utilizando un lenguaje natural estructurado (en español) que imita la lógica de la programación real sin preocuparnos por la sintaxis estricta de un lenguaje como Java.
Sirve como paso intermedio entre el diagrama de flujo y el código fuente.
A continuación se presentan dos problemas clásicos resueltos en Diagrama de Flujo (PlantUML) y Pseudocódigo:
Algoritmo ComprobarParImpar
Escribir "Introduce un número entero:"
Leer numero
Si numero % 2 == 0 Entonces
Escribir "El número es PAR"
Sino
Escribir "El número es IMPAR"
FinSi
FinAlgoritmo
Algoritmo ValidarPIN
intentos <- 0
claveCorrecta <- 1234
Mientras claveIntroducida != claveCorrecta Y intentos < 3 Hacer
Escribir "Introduce tu PIN de 4 dígitos:"
Leer claveIntroducida
intentos <- intentos + 1
FinMientras
Si claveIntroducida == claveCorrecta Entonces
Escribir "Bienvenido al sistema"
Sino
Escribir "Cuenta bloqueada por seguridad"
FinSi
FinAlgoritmo
Para resolver esta serie de ejercicios utilizaremos el entorno de desarrollo IntelliJ IDEA:
01_Introduccion_PlantUML)..puml (por ejemplo, ejercicio01.puml). Instala la extensión plantuml4idea en IntelliJ para ver la vista previa del diagrama en tiempo real a la derecha de tu código.Pide al usuario una temperatura en grados Celsius (°C). Conviértela a Fahrenheit (°F) utilizando la fórmula: $°F = (°C \times 9/5) + 32$. Si la temperatura en Celsius es menor o igual a 0 °C, muestra además un mensaje de advertencia: “Alerta: Temperatura bajo cero”. Finalmente, muestra la temperatura convertida.
Pide el número de horas trabajadas en el mes y el precio por hora. Calcula el salario bruto. Si el salario bruto supera los 1000 €, se le aplica un 15% de IRPF; en caso contrario, un 10%. Muestra por pantalla el salario bruto, la retención aplicada y el salario neto final.
Solicita una nota numérica de 0 a 10 (asume que el valor introducido es válido). El algoritmo debe mostrar la calificación correspondiente según la siguiente escala: * Menor que 5: “Insuficiente” * Entre 5 y 6.99: “Aprobado” * Entre 7 y 8.99: “Notable” * 9 o más: “Sobresaliente”
Pide al usuario que introduzca un año positivo. El programa debe determinar si el año es bisiesto o no. Recuerda la regla: un año es bisiesto si es divisible por 4, excepto los años múltiplos de 100, a no ser que también sean divisibles por 400. Muestra “Es Bisiesto” o “No es Bisiesto”.
Una tienda aplica un 10% de descuento si la compra supera los 100 €. Además, los gastos de envío son gratuitos si el importe tras aplicar el descuento es mayor o igual a 80 €; de lo contrario, el envío cuesta 5 €. Pide el importe total inicial de la compra y muestra el desglose final: descuento aplicado, coste de envío y total a pagar.
Pide al usuario 3 notas numéricas. Si alguna de las notas introducidas es menor que 0 o mayor que 10, el programa debe mostrar inmediatamente un mensaje de error (“Nota no válida”) y detenerse. Si todas las notas son válidas, calcula y muestra la nota media.
Diseña un sistema que pida una contraseña al usuario (la contraseña correcta es “1234”). El usuario tiene un máximo de 3 intentos. En cada intento fallido, el programa debe indicar cuántos intentos le quedan. Si acierta, muestra “Acceso concedido” y termina. Si agota los 3 intentos sin acertar, muestra “Cuenta bloqueada”.
Pide al usuario un número $N$ positivo. Mediante un bucle, recorre todos los números enteros desde 1 hasta $N$. Para cada número, debe mostrar en pantalla el valor actual y si es “Par” o “Impar”.
El programa debe pedir números enteros al usuario uno a uno de forma indefinida hasta que introduzca el número 0 (que actúa como condición de salida). Al finalizar, el programa debe mostrar: 1. La suma total de todos los números introducidos. 2. Cuántos números introdujo el usuario en total (sin contar el 0).
Simula un cajero que inicia con un saldo de 500 €. El usuario verá un menú interactivo continuo para realizar operaciones introduciendo un número: * 1: Consultar saldo. * 2: Ingresar dinero (pide la cantidad e incrementa el saldo). * 3: Retirar dinero (pide la cantidad; solo descuenta si hay saldo suficiente, si no, muestra “Error: Saldo insuficiente”). * 0: Salir del cajero.
El menú debe repetirse indefinidamente hasta que el usuario elija la opción 0.