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_count
per 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
board
per 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