[cfinformatica-grup] Python i GS M03 UF1 Programació Estructurada : compartir i dubte

  • From: alex@xxxxxxxxxxx
  • To: llistes - CF Informàtica <cfinformatica-grup@xxxxxxxxxxxxx>
  • Date: Wed, 27 Feb 2019 12:55:17 +0100

Bon dia,

aquest curs estic fent ASIX-M03 emprant per primer cop Python com a eina.

Volia compartir pels qui també la fan amb Python que Thonny ha estat un entorn boníssim de desenvolupament per iniciar-se: tan senzill com Geany però amb botons per depurar, executar ṕas per pas amb visualització de variables. Per mi és imprescindible a classe.

I també volia compartir que he generat un dossier d'exercicis amb solucions en Python prou gran per aquesta primera UF, per si algú el vol que li enviï, malgrat Internet va plena d'exercicis de programació.

M'agradaria generar un nou dossier d'exercicis, més orientats a sistemes, seguretat, jocs (amb PyGame), i fer coses amb el GPIO de la Raspberry Pi, però no podré posar-me fins a final de curs. Si algú més vol apuntar-se podem formar equip i compartir els materials que elaborem.

Ara ve el dubte, per si algú més que fa aquesta UF amb Python s'ha trobat:

A aquesta matèria hi ha un RA "Utilitza correctament tipus de dades simples i compostes". Altres anys jo ensenyava tipus de dades compost homogènies (vectors, matrius, ...) i també heterogènies (structs a C). Com a exemple d'heterogènia, per explicar-me una mica, crear variables d'un tipus de dades Alumne, formades per nom (string), nota (real) i data de naixement, on la data de naixement està formada alhora per dia, mes i any (enters).

Però quan he volgut ensenyar a Python com podem treballar amb variables compostes heterogènies i com crear nous tipus de dades. he vist diverses solucions i no sé si el que finalment he escollit és el més correcte i pedagògic.

Primer vaig veure els diccionaris, que és una solució molt senzilla, però no permet crear nous tipus de dades, i no "escala" bé quan hem de crear estructures compostes molt complexes. Per exemple:

  persona1 = {'nombre':'Calico', 'edad':25}

Segon vaig probar la versió nova dels NamedTuples, però és inmutable. Un cop es dona un valor a un camp, ja no es pot modificar. Per exemple:

  class Persona(NamedTuple):
    nombre: str
    edad: int

Tercer vaig descobrir el nou decorador DataClass, que es molt bonic i semblava perfecte pel que volia:

  @dataclass
  class Persona:
    nombre: float
    edad: int

Però vaig pensar que a llarg termini els seria molt més útil que els ensenyes a declarar estructures utilitzant classes, tot i que era més complexe que l'anterior solució amb DataClass:

  class Persona:

    def __init__(self, nombre, edad):
      self.nombre = nombre
      self.edad = edad

    def __str__(self):
return 'Persona: ' + self.nombre + ' - ' + str(self.edad) + ' años'

Però com que no veuen funcions fins la UF2, finalment vaig decidir quedar-me amb classes que només tinguessin el constructor, i a més sense paràmetres, i esperar a la següent UF que toca explicar funcions per introduir els mètodes. Per exemple, vaig acabar amb això, que és més senzill:

  class Persona:
    def __init__(self):
      self.nombre = ''
      self.edad = 0

Algú més s'ha trobat amb aquesta disjuntiva? Quina opció heu escollit? Hi ha més opcions?

Salutacions


    Àlex





Other related posts:

  • » [cfinformatica-grup] Python i GS M03 UF1 Programació Estructurada : compartir i dubte - alex