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.

© Copyright 2024. Tots els drets reservats