Introducció

En aquest mòdul final, aplicaràs tots els coneixements adquirits al llarg del curs per desenvolupar un projecte complet de programació. L'objectiu és consolidar els conceptes apresos i demostrar la teva capacitat per resoldre problemes reals mitjançant la programació.

Objectius del Projecte

El projecte final té els següents objectius:

  1. Aplicar Conceptes Bàsics: Utilitzar variables, operadors, i estructures de control.
  2. Desenvolupar Funcions: Crear i utilitzar funcions amb paràmetres i valors de retorn.
  3. Gestionar Estructures de Dades: Treballar amb llistes, arrays, cadenes de caràcters, diccionaris i conjunts.
  4. Implementar Algoritmes: Desenvolupar algoritmes de cerca, ordenació i recursió.
  5. Seguir Bones Pràctiques: Documentar el codi, depurar errors i utilitzar control de versions.

Descripció del Projecte

Tema del Projecte

El projecte consistirà en desenvolupar una aplicació de gestió de tasques (To-Do List). Aquesta aplicació permetrà als usuaris afegir, eliminar, i marcar tasques com a completades. A més, es podrà ordenar les tasques per prioritat o data de creació.

Requisits del Projecte

  1. Interfície d'Usuari:

    • Entrada de dades per afegir noves tasques.
    • Opció per eliminar tasques.
    • Opció per marcar tasques com a completades.
    • Visualització de la llista de tasques amb indicadors de prioritat i estat (completada o pendent).
  2. Funcionalitats:

    • Afegir una nova tasca amb un títol, descripció, prioritat i data de creació.
    • Eliminar una tasca existent.
    • Marcar una tasca com a completada.
    • Ordenar les tasques per prioritat o data de creació.
  3. Estructures de Dades:

    • Utilitzar llistes o arrays per emmagatzemar les tasques.
    • Cada tasca serà un diccionari amb les claus: títol, descripció, prioritat, data de creació i estat.
  4. Algoritmes:

    • Implementar un algoritme d'ordenació per prioritat i data de creació.
    • Utilitzar recursió si és necessari per alguna funcionalitat específica.
  5. Bones Pràctiques:

    • Documentar el codi amb comentaris clars.
    • Utilitzar un sistema de control de versions per gestionar el desenvolupament del projecte.
    • Depurar i provar el codi per assegurar-ne el correcte funcionament.

Exemples de Codi

Estructura Bàsica d'una Tasca

# Definició d'una tasca com a diccionari
tasca = {
    "titol": "Estudiar per l'examen",
    "descripcio": "Repassar els capítols 1 a 3",
    "prioritat": 1,  # 1 és alta, 2 és mitjana, 3 és baixa
    "data_creacio": "2023-10-01",
    "estat": "pendent"  # pot ser "pendent" o "completada"
}

Funció per Afegir una Nova Tasca

def afegir_tasca(llista_tasques, titol, descripcio, prioritat):
    from datetime import datetime
    nova_tasca = {
        "titol": titol,
        "descripcio": descripcio,
        "prioritat": prioritat,
        "data_creacio": datetime.now().strftime("%Y-%m-%d"),
        "estat": "pendent"
    }
    llista_tasques.append(nova_tasca)

Funció per Marcar una Tasca com a Completada

def marcar_completada(llista_tasques, titol):
    for tasca in llista_tasques:
        if tasca["titol"] == titol:
            tasca["estat"] = "completada"
            break

Funció per Ordenar les Tasques per Prioritat

def ordenar_per_prioritat(llista_tasques):
    return sorted(llista_tasques, key=lambda x: x["prioritat"])

Exercici Pràctic

Descripció

Implementa les funcions següents en el teu projecte de gestió de tasques:

  1. afegir_tasca: Afegeix una nova tasca a la llista.
  2. eliminar_tasca: Elimina una tasca de la llista.
  3. marcar_completada: Marca una tasca com a completada.
  4. ordenar_per_prioritat: Ordena les tasques per prioritat.
  5. ordenar_per_data: Ordena les tasques per data de creació.

Solució

def afegir_tasca(llista_tasques, titol, descripcio, prioritat):
    from datetime import datetime
    nova_tasca = {
        "titol": titol,
        "descripcio": descripcio,
        "prioritat": prioritat,
        "data_creacio": datetime.now().strftime("%Y-%m-%d"),
        "estat": "pendent"
    }
    llista_tasques.append(nova_tasca)

def eliminar_tasca(llista_tasques, titol):
    for tasca in llista_tasques:
        if tasca["titol"] == titol:
            llista_tasques.remove(tasca)
            break

def marcar_completada(llista_tasques, titol):
    for tasca in llista_tasques:
        if tasca["titol"] == titol:
            tasca["estat"] = "completada"
            break

def ordenar_per_prioritat(llista_tasques):
    return sorted(llista_tasques, key=lambda x: x["prioritat"])

def ordenar_per_data(llista_tasques):
    return sorted(llista_tasques, key=lambda x: x["data_creacio"])

Conclusió

En aquesta secció, has après a definir un projecte complet de programació aplicant tots els conceptes apresos durant el curs. Aquest projecte no només et permetrà consolidar els teus coneixements, sinó que també et proporcionarà una base sòlida per a futurs projectes més complexos. En el següent tema, planificarem i dissenyarem el projecte en detall.

© Copyright 2024. Tots els drets reservats