En aquest mòdul, explorarem diversos estudis de cas i projectes pràctics que us ajudaran a aplicar els coneixements adquirits al llarg del curs. Aquests exemples us permetran veure com es poden utilitzar les tècniques i conceptes d'ALGOL en situacions reals.
Objectius del Mòdul
- Aplicar els conceptes d'ALGOL en projectes pràctics.
- Desenvolupar habilitats per resoldre problemes reals utilitzant ALGOL.
- Millorar la comprensió de la programació en ALGOL a través de l'experiència pràctica.
Contingut del Mòdul
Estudi de Cas 1: Sistema de Gestió d'Estudiants
Descripció
Desenvoluparem un sistema senzill per gestionar la informació dels estudiants. Aquest sistema permetrà afegir, eliminar i cercar estudiants, així com mostrar una llista de tots els estudiants registrats.
Requisits
- Emmagatzemar la informació dels estudiants (nom, edat, identificador).
- Permetre afegir nous estudiants.
- Permetre eliminar estudiants existents.
- Permetre cercar estudiants per identificador.
- Mostrar una llista de tots els estudiants.
Estructura del Codi
begin
integer array student_ids[1:100];
string array student_names[1:100];
integer array student_ages[1:100];
integer student_count;
procedure add_student(id, age: integer; name: string);
begin
student_count := student_count + 1;
student_ids[student_count] := id;
student_names[student_count] := name;
student_ages[student_count] := age;
end;
procedure delete_student(id: integer);
begin
integer i, j;
for i := 1 step 1 until student_count do
if student_ids[i] = id then
begin
for j := i step 1 until student_count - 1 do
begin
student_ids[j] := student_ids[j + 1];
student_names[j] := student_names[j + 1];
student_ages[j] := student_ages[j + 1];
end;
student_count := student_count - 1;
exit;
end;
end;
procedure search_student(id: integer);
begin
integer i;
for i := 1 step 1 until student_count do
if student_ids[i] = id then
begin
print("Student found: ", student_names[i], ", Age: ", student_ages[i]);
return;
end;
print("Student not found.");
end;
procedure list_students;
begin
integer i;
for i := 1 step 1 until student_count do
print("ID: ", student_ids[i], ", Name: ", student_names[i], ", Age: ", student_ages[i]);
end;
student_count := 0;
add_student(1, 20, "Alice");
add_student(2, 22, "Bob");
list_students;
search_student(1);
delete_student(1);
list_students;
end;Explicació del Codi
- Declaració de Variables: Es declaren arrays per emmagatzemar els identificadors, noms i edats dels estudiants, així com una variable
student_countper portar el compte dels estudiants. - Procediment
add_student: Afegeix un nou estudiant incrementant el comptador i emmagatzemant la informació en els arrays corresponents. - Procediment
delete_student: Elimina un estudiant desplaçant els elements dels arrays per sobreescriure l'estudiant eliminat i decrementant el comptador. - Procediment
search_student: Cerca un estudiant per identificador i mostra la seva informació si es troba. - Procediment
list_students: Mostra la llista de tots els estudiants registrats.
Estudi de Cas 2: Simulació d'un Joc de Taula
Descripció
Desenvoluparem una simulació d'un joc de taula senzill on els jugadors es mouen per un tauler de 10x10 caselles. Cada jugador llança un dau per determinar el nombre de caselles que es mou.
Requisits
- Representar el tauler com una matriu de 10x10.
- Permetre que dos jugadors es moguin pel tauler.
- Determinar el moviment dels jugadors mitjançant el llançament d'un dau.
- Mostrar la posició actual dels jugadors després de cada moviment.
Estructura del Codi
begin
integer array board[1:10, 1:10];
integer player1_pos, player2_pos;
integer dice_roll;
procedure roll_dice;
begin
dice_roll := random(1, 6);
end;
procedure move_player(var player_pos: integer);
begin
roll_dice;
player_pos := player_pos + dice_roll;
if player_pos > 100 then
player_pos := 100;
end;
procedure display_board;
begin
integer i, j;
for i := 1 step 1 until 10 do
begin
for j := 1 step 1 until 10 do
begin
if (i - 1) * 10 + j = player1_pos then
print("P1 ");
else if (i - 1) * 10 + j = player2_pos then
print("P2 ");
else
print(". ");
end;
print("\n");
end;
end;
player1_pos := 1;
player2_pos := 1;
while player1_pos < 100 and player2_pos < 100 do
begin
move_player(player1_pos);
move_player(player2_pos);
display_board;
end;
end;Explicació del Codi
- Declaració de Variables: Es declara una matriu
boardper representar el tauler, i variables per les posicions dels jugadors i el resultat del dau. - Procediment
roll_dice: Genera un número aleatori entre 1 i 6 per simular el llançament del dau. - Procediment
move_player: Mou el jugador segons el resultat del dau i assegura que la posició no excedeixi 100. - Procediment
display_board: Mostra el tauler amb les posicions actuals dels jugadors.
Projecte 1: Calculadora Científica
Descripció
Desenvoluparem una calculadora científica que permeti realitzar operacions matemàtiques bàsiques i avançades com suma, resta, multiplicació, divisió, potències i arrels quadrades.
Requisits
- Permetre l'entrada de dues operacions matemàtiques.
- Realitzar operacions bàsiques (suma, resta, multiplicació, divisió).
- Realitzar operacions avançades (potències, arrels quadrades).
- Mostrar el resultat de les operacions.
Estructura del Codi
begin
real a, b, result;
string operation;
procedure add(x, y: real);
begin
result := x + y;
end;
procedure subtract(x, y: real);
begin
result := x - y;
end;
procedure multiply(x, y: real);
begin
result := x * y;
end;
procedure divide(x, y: real);
begin
if y = 0 then
print("Error: Division by zero.")
else
result := x / y;
end;
procedure power(x, y: real);
begin
result := x ** y;
end;
procedure sqrt(x: real);
begin
if x < 0 then
print("Error: Negative number.")
else
result := sqrt(x);
end;
print("Enter first number: ");
read(a);
print("Enter operation (+, -, *, /, ^, sqrt): ");
read(operation);
if operation <> "sqrt" then
begin
print("Enter second number: ");
read(b);
end;
if operation = "+" then
add(a, b)
else if operation = "-" then
subtract(a, b)
else if operation = "*" then
multiply(a, b)
else if operation = "/" then
divide(a, b)
else if operation = "^" then
power(a, b)
else if operation = "sqrt" then
sqrt(a)
else
print("Invalid operation.");
print("Result: ", result);
end;Explicació del Codi
- Declaració de Variables: Es declaren variables per emmagatzemar els números d'entrada, l'operació i el resultat.
- Procediments per Operacions: Es defineixen procediments per cada operació matemàtica.
- Entrada i Processament: Es llegeixen les entrades de l'usuari, es realitza l'operació corresponent i es mostra el resultat.
Projecte 2: Analitzador de Text
Descripció
Desenvoluparem un analitzador de text que compti el nombre de paraules, línies i caràcters en un text donat.
Requisits
- Permetre l'entrada d'un text.
- Comptar el nombre de paraules, línies i caràcters.
- Mostrar els resultats.
Estructura del Codi
begin
string text;
integer word_count, line_count, char_count;
integer i;
procedure analyze_text(t: string);
begin
word_count := 0;
line_count := 1;
char_count := length(t);
for i := 1 step 1 until char_count do
begin
if t[i] = ' ' then
word_count := word_count + 1;
if t[i] = '\n' then
line_count := line_count + 1;
end;
word_count := word_count + 1; // Last word
end;
print("Enter text (end with EOF): ");
read(text);
analyze_text(text);
print("Number of words: ", word_count);
print("Number of lines: ", line_count);
print("Number of characters: ", char_count);
end;Explicació del Codi
- Declaració de Variables: Es declaren variables per emmagatzemar el text, el nombre de paraules, línies i caràcters.
- Procediment
analyze_text: Analitza el text per comptar paraules, línies i caràcters. - Entrada i Processament: Es llegeix el text de l'usuari, es realitza l'anàlisi i es mostren els resultats.
Conclusió
En aquest mòdul, hem explorat diversos estudis de cas i projectes pràctics que us han permès aplicar els coneixements adquirits al llarg del curs. Aquests exemples us han ajudat a veure com es poden utilitzar les tècniques i conceptes d'ALGOL en situacions reals, millorant així la vostra comprensió i habilitats en programació. Ara esteu preparats per abordar projectes més complexos i avançats en ALGOL.
Curs de Programació en ALGOL
Mòdul 1: Introducció a ALGOL
Mòdul 2: Sintaxi i Estructura Bàsica
- Estructura del Programa ALGOL
- Variables i Tipus de Dades
- Entrada i Sortida Bàsica
- Operadors i Expressions
Mòdul 3: Estructures de Control
Mòdul 4: Funcions i Procediments
- Definició de Funcions
- Paràmetres de Funció i Valors de Retorn
- Funcions Recursives
- Procediments en ALGOL
Mòdul 5: Estructures de Dades
Mòdul 6: Temes Avançats
Mòdul 7: Aplicacions Pràctiques
- Mètodes Numèrics
- Implementació d'Algorismes
- Construcció d'un Compilador Simple
- Estudis de Cas i Projectes
