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

  • From: Daniel Herrera <dherrera@xxxxxxxx>
  • To: cfinformatica-grup@xxxxxxxxxxxxx
  • Date: Fri, 1 Mar 2019 11:14:52 +0100

Àlex,

aprofito per comentar-te que hi ha un grup de Python a Girona
https://pythongirona.cat/ que ens trobem un cop al mes. Tothom és benvingut
i ara, a les trobades, alternem Python amb altres tecnologies, per exemple, el
proper dijous dia 7, hi ha taller de Docker
<https://www.meetup.com/PythonGirona/events/259345486/>.

dani.

Missatge de l'adreça <alex@xxxxxxxxxxx> del dia dc., 27 de febr. 2019 a les
12:55:

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: