En este módulo, aplicaremos todo lo aprendido en los módulos anteriores a través de estudios de caso y proyectos prácticos. Estos ejercicios están diseñados para consolidar tus conocimientos y darte experiencia práctica en la resolución de problemas reales utilizando ALGOL.
Objetivos del Módulo
- Aplicar conceptos de programación en ALGOL a problemas del mundo real.
- Desarrollar habilidades de resolución de problemas y pensamiento crítico.
- Ganar experiencia en la implementación de proyectos completos desde el diseño hasta la ejecución.
Contenido
Estudio de Caso 1: Sistema de Gestión de Biblioteca
Descripción
Desarrollar un sistema básico de gestión de biblioteca que permita a los usuarios realizar las siguientes operaciones:
- Añadir nuevos libros.
- Buscar libros por título o autor.
- Prestar y devolver libros.
Requisitos
- Utilizar registros para almacenar la información de los libros.
- Implementar funciones para cada operación (añadir, buscar, prestar, devolver).
- Manejar errores como intentos de prestar un libro que ya está prestado.
Ejemplo de Código
begin
record Book
string title;
string author;
boolean isBorrowed;
end;
array books[1:100] of Book;
integer bookCount := 0;
procedure addBook(string title, string author);
begin
bookCount := bookCount + 1;
books[bookCount].title := title;
books[bookCount].author := author;
books[bookCount].isBorrowed := false;
end;
procedure borrowBook(string title);
begin
for i := 1 step 1 until bookCount do
if books[i].title = title then
if books[i].isBorrowed then
print("Book already borrowed.");
else
books[i].isBorrowed := true;
print("Book borrowed successfully.");
end if;
end if;
end for;
end;
procedure returnBook(string title);
begin
for i := 1 step 1 until bookCount do
if books[i].title = title then
if not books[i].isBorrowed then
print("Book was not borrowed.");
else
books[i].isBorrowed := false;
print("Book returned successfully.");
end if;
end if;
end for;
end;
procedure searchBook(string title);
begin
for i := 1 step 1 until bookCount do
if books[i].title = title then
print("Book found: ", books[i].title, " by ", books[i].author);
return;
end if;
end for;
print("Book not found.");
end;
addBook("The Great Gatsby", "F. Scott Fitzgerald");
addBook("1984", "George Orwell");
borrowBook("1984");
searchBook("1984");
returnBook("1984");
end;Ejercicio
- Añade una función para eliminar libros del sistema.
- Mejora el sistema para que permita buscar libros por autor.
Estudio de Caso 2: Simulación de un Sistema de Colas
Descripción
Simular un sistema de colas en una tienda donde los clientes llegan, esperan en la cola y son atendidos por un cajero.
Requisitos
- Utilizar una estructura de datos dinámica para la cola.
- Implementar funciones para añadir clientes a la cola y atenderlos.
- Simular el tiempo de espera y el tiempo de servicio.
Ejemplo de Código
begin
record Customer
string name;
integer arrivalTime;
end;
array queue[1:100] of Customer;
integer front := 1;
integer rear := 0;
procedure enqueue(string name, integer arrivalTime);
begin
rear := rear + 1;
queue[rear].name := name;
queue[rear].arrivalTime := arrivalTime;
end;
procedure dequeue();
begin
if front > rear then
print("Queue is empty.");
else
print("Serving customer: ", queue[front].name);
front := front + 1;
end if;
end;
procedure simulate();
begin
enqueue("Alice", 1);
enqueue("Bob", 2);
dequeue();
dequeue();
dequeue();
end;
simulate();
end;Ejercicio
- Añade una función para calcular el tiempo de espera promedio de los clientes.
- Mejora la simulación para que incluya múltiples cajeros.
Proyecto 1: Juego de Adivinanza de Números
Descripción
Desarrollar un juego en el que el programa elige un número aleatorio y el usuario tiene que adivinarlo.
Requisitos
- Generar un número aleatorio entre 1 y 100.
- Permitir al usuario hacer intentos y proporcionar retroalimentación (más alto, más bajo).
- Contar el número de intentos y mostrarlo al final.
Ejemplo de Código
begin
integer secretNumber, guess, attempts;
secretNumber := random(1, 100);
attempts := 0;
while true do
print("Enter your guess: ");
read(guess);
attempts := attempts + 1;
if guess = secretNumber then
print("Congratulations! You guessed the number in ", attempts, " attempts.");
break;
else if guess < secretNumber then
print("Too low. Try again.");
else
print("Too high. Try again.");
end if;
end while;
end;Ejercicio
- Mejora el juego para que permita múltiples rondas y mantenga un puntaje total.
- Añade una opción para que el usuario pueda salir del juego en cualquier momento.
Proyecto 2: Calculadora Científica
Descripción
Desarrollar una calculadora científica que pueda realizar operaciones básicas y avanzadas como suma, resta, multiplicación, división, y funciones trigonométricas.
Requisitos
- Implementar funciones para cada operación.
- Permitir al usuario seleccionar la operación y proporcionar los operandos.
- Manejar errores como división por cero.
Ejemplo de Código
begin
real a, b, result;
integer choice;
procedure add(real x, real y);
begin
result := x + y;
print("Result: ", result);
end;
procedure subtract(real x, real y);
begin
result := x - y;
print("Result: ", result);
end;
procedure multiply(real x, real y);
begin
result := x * y;
print("Result: ", result);
end;
procedure divide(real x, real y);
begin
if y = 0 then
print("Error: Division by zero.");
else
result := x / y;
print("Result: ", result);
end if;
end;
procedure menu();
begin
print("Select operation:");
print("1. Add");
print("2. Subtract");
print("3. Multiply");
print("4. Divide");
read(choice);
print("Enter first number: ");
read(a);
print("Enter second number: ");
read(b);
if choice = 1 then
add(a, b);
else if choice = 2 then
subtract(a, b);
else if choice = 3 then
multiply(a, b);
else if choice = 4 then
divide(a, b);
else
print("Invalid choice.");
end if;
end;
menu();
end;Ejercicio
- Añade funciones para operaciones trigonométricas como seno, coseno y tangente.
- Mejora la calculadora para que permita realizar múltiples operaciones en una sola ejecución.
Conclusión
En este módulo, hemos trabajado en estudios de caso y proyectos prácticos que te han permitido aplicar tus conocimientos de ALGOL a problemas del mundo real. Estos ejercicios no solo refuerzan los conceptos aprendidos, sino que también desarrollan tus habilidades de resolución de problemas y pensamiento crítico. ¡Felicidades por completar este módulo y sigue practicando para mejorar aún más tus habilidades en programación con ALGOL!
Curso de Programación en ALGOL
Módulo 1: Introducción a ALGOL
- ¿Qué es ALGOL?
- Historia y Evolución de ALGOL
- Configuración del Entorno ALGOL
- Primer Programa en ALGOL
Módulo 2: Sintaxis y Estructura Básica
- Estructura del Programa ALGOL
- Variables y Tipos de Datos
- Entrada y Salida Básica
- Operadores y Expresiones
Módulo 3: Estructuras de Control
Módulo 4: Funciones y Procedimientos
- Definición de Funciones
- Parámetros de Función y Valores de Retorno
- Funciones Recursivas
- Procedimientos en ALGOL
Módulo 5: Estructuras de Datos
Módulo 6: Temas Avanzados
Módulo 7: Aplicaciones Prácticas
- Métodos Numéricos
- Implementación de Algoritmos
- Construcción de un Compilador Simple
- Estudios de Caso y Proyectos
