Diferència entre revisions de la pàgina «DAW 2020-2021»
(Hi ha 131 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
+ | = Horari a partir del 18 de gener = | ||
+ | [[Image:PandGener2021_DAW1.png|center|1r de DAW]] | ||
+ | |||
= Teleconferència del curs 2020-2021 = | = Teleconferència del curs 2020-2021 = | ||
[https://meet.google.com/yvz-pmxy-zcy Adreça de la teleconferència] | [https://meet.google.com/yvz-pmxy-zcy Adreça de la teleconferència] | ||
+ | |||
+ | [https://meet.google.com/hhy-jrji-dco Adreça de la teleconferència de la part de reforç] (També per a hores exclusives amb en Carles Olivé) | ||
+ | |||
+ | [https://docs.google.com/spreadsheets/d/1rlObLTKvXBNRC5S6f6RS6bPdOBpfNhueKzgA0z2LZao/edit#gid=390363269 Llista 1r de DAW 2020-2021] | ||
+ | |||
+ | [[Carpetes compartides 1r de DAW. Curs 2020-2021]] | ||
= Algunes classes = | = Algunes classes = | ||
+ | == 20210526 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210526/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210525 (2h presencial) '''Avaluació ordinària del M03UF3''' == | ||
+ | [https://binefa.cat/daw2021/m03/20210525ex/ Examen d'avaluació ordinària de M03UF3] | ||
+ | |||
+ | == 20210520 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210520/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210519 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210519/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210518 (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210518/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210513 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210513/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210512 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210512/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210511 (2h presencial) == | ||
+ | sprintf(szTerminal,"'''ls''' > %s",NOM_FITXER); // sprintf(szTerminal,"'''dir /b /a-d''' > %s",NOM_FITXER); | ||
+ | Sistema seriós: | ||
+ | ls > llista.dir | ||
+ | Finestrots: | ||
+ | dir /b /a-d > llista.dir | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210511/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210506 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210506/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210505 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210505/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210504 (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210504/ Alguns codis comentats avui] A l'inici de la classe hi havia [https://binefa.cat/daw2021/m03/20210504/20210504_00.zip aquests arxius] (comprimit). | ||
+ | |||
+ | === Exercici === | ||
+ | Demaneu els valors de l'arxiu [https://binefa.cat/asix2021/m03/20210503/struct05.c struct05.c] i feu que s'enregistri la informació als arxius ''administratiu.txt'', ''enginyer.txt'' i ''auxiliar.txt''. Anomeneu l'arxiu com a '''exEstructuraArxiu_00.c''' (baseu-vos en [https://binefa.cat/asix2021/m03/20210503/m8p03.c m8p03.c]). | ||
+ | |||
+ | Feu un nou '''exEstructuraArxiu_01.c''' que es limiti a fer la lectura d' ''administratiu.txt'', ''enginyer.txt'' i ''auxiliar.txt''. | ||
+ | |||
+ | == 20210429 '''Comença M03UF3''' (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210429/ Alguns codis comentats avui] | ||
+ | |||
+ | === Exercici struct05.c === | ||
+ | Basant-vos en [https://binefa.cat/daw2021/m03/20210429/struct04.c struct04.c], desenvolupeu '''struct05.c''' a on la funció '''vDemanaDades''' demana els quatre camps de l'estructura i la funció '''vVisualitzaDades''' presenta els quatre camps de l'estructura. | ||
+ | |||
+ | == 20210428 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210428/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210427 '''Examen M03UF2''' (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210427_exM03Uf2/ Examen d'avaluació ordinària del M03UF2] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210427_exM03Uf2/ex06previ.py.txt ex06previ.py] (El que faltava a l'arxiu .zip). Si premeu F5 ja està incorporat a l'arxiu [https://binefa.cat/daw2021/m03/20210427_exM03Uf2/20210427_material.zip 20210427_material.zip] | ||
+ | |||
+ | == 20210422 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210422/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210421 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210421/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210420 (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/examensPrevis/20180423ex.zip Examen UF2 2018 - Amb cadenes de caràcters] | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/examensPrevis/20160608exUf2extrAsix.tar.gz Examen extraordinària de 2016] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210420/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210415 (1h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/examensPrevis/20180425exUF2.zip Examen del M03UF2 del curs 2017-2018] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210415/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210414 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/examensPrevis/20180425exUF2.zip Examen del M03UF2 del curs 2017-2018] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210414/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210413 (2h presencial) == | ||
+ | El [http://binefa.com/index.php?title=DAW_2020-2021#20210324_.281h_s.C3.ADncrona.29 darrer dia de classe síncrona] vam resoldre les dues primeres preguntes de l' | ||
+ | [https://binefa.cat/daw2021/m03/examensPrevis/20190411_daw_m03uf2_ord.zip examen del M03UF2 del curs 2018-2019] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/examensPrevis/20180425exUF2.zip Examen del M03UF2 del curs 2017-2018] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210413/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210408 (1h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210407 (1h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210406 (2h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210325 (1h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210324 (1h síncrona) == | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/annex.htm Com depurar un programa en C] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/examensPrevis/20190411_daw_m03uf2_ord.zip Examen a resoldre en línia] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210324/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210318 (1h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210318/prova_boto.ino Prova del botó d'inici del robot] | ||
+ | |||
+ | Com canviar d'estat quan passen més de 5 segons: | ||
+ | '''#define CINC_SEGONS 5000''' | ||
+ | ... | ||
+ | int nPensaEstat(int nEstatActual, bool bL, bool bR) { | ||
+ | '''static unsigned long ulStartMillis = millis();''' | ||
+ | bL = !bL; | ||
+ | bR = !bR; | ||
+ | switch (nEstatActual) { | ||
+ | |||
+ | case STATE_STOP: | ||
+ | ... | ||
+ | |||
+ | case STATE_FORWARD: | ||
+ | if ((bL || bR)) { | ||
+ | '''ulStartMillis = millis();''' | ||
+ | return STATE_BORDER; | ||
+ | } | ||
+ | '''if (millis() - ulStartMillis > CINC_SEGONS) {''' | ||
+ | '''ulStartMillis = millis();''' | ||
+ | '''return STATE_BUSCAR;''' // Canvi d'estat per passar-se de 5 segons al mateix estat | ||
+ | '''}''' | ||
+ | break; | ||
+ | |||
+ | case STATE_BORDER: | ||
+ | ... | ||
+ | |||
+ | case STATE_SEARCH: | ||
+ | ... | ||
+ | |||
+ | case STATE_FAST_FORWARD: | ||
+ | ... | ||
+ | } | ||
+ | return nEstatActual; | ||
+ | } | ||
+ | |||
+ | == 20210316 (2h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210316/GrauTorres_4aProvaBC.ino Exemple d'ús de l'estat de cerca] | ||
+ | |||
+ | == 20210309 (2h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210304 '''Examen M03UF1''' (3h presencial) == | ||
+ | 1a hora de robots | ||
+ | |||
+ | A 2a i 3a hora hi ha examen d'avaluació ordinària. | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210304_exM03Uf1 Examen M07UF1 d'ordinària] | ||
+ | |||
+ | == 20210303 (1h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210302 (2h síncrona) == | ||
+ | Proveu aquest codi en Python. Executeu-lo i verifiqueu que ho enteneu. En cas contrari, pregunteu: | ||
+ | for n in range (25,9,-5): | ||
+ | print(n) | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210302/ Comentem els codis dels estats del robot] | ||
+ | |||
+ | == 20210225 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210225/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210224 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210224/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210223 (2h presencial) == | ||
+ | Seguim amb els robots | ||
+ | |||
+ | == 20210218 (1h presencial) == | ||
+ | Seguim amb el control del robot. Seguiment de línies i cerca d'una capsa al tatami. | ||
+ | |||
+ | == 20210217 (1h presencial) == | ||
+ | Seguim amb el control del robot. Seguiment de línies i cerca d'una capsa al tatami. | ||
+ | |||
+ | == 20210216 (2h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210216/ Alguns codis explicats avui] | ||
+ | |||
+ | === '''Depuració''' === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/annex.htm Explicació de la depuració amb '''gdb'''] | ||
+ | |||
+ | == 20210211 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210211/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210210 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210210/ Alguns codis comentats avui] | ||
+ | |||
+ | === Compilació d'un projecte amb múltiples codis font === | ||
+ | La compilació de múltiples fitxers .cpp es fa d'aquesta manera: | ||
+ | |||
+ | (La compilació requereix dels arxius .c o .cpp i no pas els .h) | ||
+ | |||
+ | gcc '''copiaCadena.c funcions.c''' -o copiaCadena | ||
+ | |||
+ | Es compilen tots els arxius '''.c''' a la vegada | ||
+ | |||
+ | === Exercici === | ||
+ | A partir de m05e7_04.c feu un projecte per a que m05e7.c pugui fer els includes: '''aleatorietat.h, visualitzacio.h i gestioVectors.h''' | ||
+ | |||
+ | Criteri de selecció de funcions: | ||
+ | #include "aleatorietat.h" // #defines i vLlavorAleatorietat(), nNumAleat(int,int) i vGeneraNumerosAleatoris(double, double, int, double*) | ||
+ | #include "visualitzacio.h" // #defines i void vVisualitzaVector(double *) | ||
+ | #include "gestioVectors.h" // #defines i lfMaximVector(double *,int ) i lfMaximVector2(double *,int ) | ||
+ | |||
+ | Per tant, haureu d'escriure el codi dels arxius '''aleatorietat.c, visualitzacio.c i gestioVectors.c''' | ||
+ | |||
+ | Els ''define''s els heu de posar als arxius .h que creieu més convenient. Ho heu de compilar i ha de seguir funcionant. | ||
+ | |||
+ | == 20210209 (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20210209/ Alguns codis comentats avui] | ||
+ | |||
+ | === Proposta de control dels motors per infraroigs === | ||
+ | |||
+ | Al final de l'exemple '''irRobCtl''': | ||
+ | '''vMotion( (bBL)?127:0 , (bBR)?127:0 );''' | ||
+ | |||
+ | == 20210204 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210204/ Alguns codis comentats avui] | ||
+ | |||
+ | === Deures pel proper dia no presencial === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m6/d97m6ex.htm Exercici 2] | ||
+ | |||
+ | === Adreça per la classe d'en Carles a darrera hora d'avui === | ||
+ | [https://meet.google.com/joh-tqcx-zca Adreça per la classe d'en Carles a darrera hora] | ||
+ | |||
+ | == 20210203 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210203/ Alguns codis comentats avui] | ||
+ | |||
+ | * Desenvolupeu '''m6e03_09.c''' a partir de m6e03_08.c que faci que qualsevol frase que tingui majúscules sigui passada a minúscules. De tal manera que si introduïm '''TuruRut''' o '''tururut''' digui en ambdòs casos que és palíndrom. | ||
+ | |||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210202$ '''gcc m6e03_08.c -o m''' | ||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210202$ '''./m''' | ||
+ | Paraula candidata a palíndrom: '''TuruRuT''' | ||
+ | Caràcter esquerra: T - Caràcter dreta: T | ||
+ | Caràcter esquerra: u - Caràcter dreta: u | ||
+ | Caràcter esquerra: r - Caràcter dreta: R | ||
+ | "TuruRuT" '''no és''' palíndrom | ||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210202$ '''./m''' | ||
+ | Paraula candidata a palíndrom: '''tururut''' | ||
+ | Caràcter esquerra: t - Caràcter dreta: t | ||
+ | Caràcter esquerra: u - Caràcter dreta: u | ||
+ | Caràcter esquerra: r - Caràcter dreta: r | ||
+ | "tururut" '''és''' palíndrom | ||
+ | |||
+ | Pista: | ||
+ | ('b' - 'a') + 'A' | ||
+ | (98 - 97) + 65 --> 66 --> 'B' | ||
+ | |||
+ | |||
+ | * Desenvolupeu '''m6e03_10.c''' a partir de m6e03_09.c que tregui els espais. | ||
+ | * Desenvolupeu '''m6e03_11.c''' a partir de m6e03_10.c que tregui els espais, comes, punts, ... | ||
+ | |||
+ | == 20210202 (2h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20210202/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210128 (1h síncrona per confinament) == | ||
+ | Porteu pensat el segon exercici del dia anterior (implementació en Python de la solució proposada en C). | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210128/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210127 (1h síncrona per confinament) == | ||
+ | [https://binefa.cat/daw2021/m03/20210127/ Alguns codis comentats avui] | ||
+ | |||
+ | === Exercicis === | ||
+ | * Feu un programa que generi set números aleatoris entre -10.00 i 10.00. S'han de posar a les set primeres posicions de vector lfVector[99]. Aprofiteu l'exercici '''m05e7_03.c''' com a base per a resoldre-ho. Podeu generar la funció '''void vGeneraNumerosAleatoris(double lfMin, double lfMax, int nQuants, double* lfV)'''. Una crida possible des de la funció '''main()''' seria vGeneraNumerosAleatoris(-10.00,10.00,7,lfVector) | ||
+ | |||
+ | Exemple d'execució: | ||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210127$ ./m | ||
+ | vVisualitzaVector: | ||
+ | lfVector: { -0.01 -7.42 7.52 2.08 5.59 8.68 -9.30 } | ||
+ | 1) El valor màxim del vector és 8.68 | ||
+ | 2) El valor màxim del vector és 8.68 | ||
+ | |||
+ | |||
+ | * El mateix que l'anterior en Python. La funció de generació haurà de ser diferent. Feu una proposta de codi. | ||
+ | |||
+ | == 20210126 (2h síncrona per confinament) == | ||
+ | [https://binefa.cat/daw2021/m03/20210126/ Alguns codis comentats avui] | ||
+ | |||
+ | === Exercicis === | ||
+ | * Feu un programa en C i en Python, aprofitant el que avui hem vist a classe, i modifiqueu els elements del vector (llista a Python) incrementant el seu valor en un 21% (com l'IVA). | ||
+ | |||
+ | Ha de sortir així: | ||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210126/ex$ '''gcc m05e7_03_mesIva.c -o m''' | ||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210126/ex$ '''./m''' | ||
+ | |||
+ | --------------- | ||
+ | vVisualitzaVector: | ||
+ | lfVector: { 2.34 4.56 -3.45 10.00 9.87 1.32 -1.27 } | ||
+ | 1) El valor màxim del vector és 10.00 | ||
+ | 2) El valor màxim del vector és 10.00 | ||
+ | |||
+ | --------------- | ||
+ | vVisualitzaVector: | ||
+ | lfVector: { 2.83 5.52 -4.17 12.10 11.94 1.60 -1.54 } | ||
+ | 3) El valor màxim del vector és 12.10 | ||
+ | |||
+ | Proposta de funció principal '''main()''': | ||
+ | int main(){ | ||
+ | double lfVector[99] = {2.34,4.56,-3.45,10,9.87,1.32,-1.27}; // 7 elements instanciats | ||
+ | |||
+ | vVisualitzaVector(lfVector); // vVisualitzaVector(&lfVector[0]); | ||
+ | printf("1) El valor màxim del vector és %.2lf\n",lfMaximVector(lfVector,MIDA_INICIAL)); | ||
+ | printf("2) El valor màxim del vector és %.2lf\n",lfMaximVector2(lfVector,MIDA_INICIAL)); | ||
+ | '''vAfegeixIva(lfVector,MIDA_INICIAL,21.0);''' | ||
+ | vVisualitzaVector(lfVector); // vVisualitzaVector(&lfVector[0]); | ||
+ | printf("3) El valor màxim del vector és %.2lf\n",lfMaximVector(lfVector,MIDA_INICIAL)); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | I a '''Python''': | ||
+ | jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210126/ex$ '''python3 m05e7_03_mesIVA.py''' | ||
+ | vVector: [ 2.34 4.56 -3.45 10.00 9.87 1.32 -1.27 ] | ||
+ | El valor màxim del vector és 10.00 | ||
+ | vVector: [ 2.83 5.52 -4.17 12.10 11.94 1.60 -1.54 ] | ||
+ | El valor màxim del vector és 12.10 | ||
+ | |||
+ | Proposta de funció principal a Python: | ||
+ | lfVector = [2.34,4.56,-3.45,10,9.87,1.32,-1.27] | ||
+ | |||
+ | vVisualitzaVector(lfVector) | ||
+ | print("El valor màxim del vector és %.2lf"%lfMaximVector(lfVector)) | ||
+ | '''lfVector = vAfegeixIva(lfVector,21.0)''' | ||
+ | vVisualitzaVector(lfVector) | ||
+ | print("El valor màxim del vector és %.2lf"%lfMaximVector(lfVector)) | ||
+ | |||
+ | == 20210120 (1h presencial) '''Robot''' == | ||
+ | [https://www.binefa.cat/daw2021/m03/20210120_robot/ Biblioteques per al robot versió 5] | ||
+ | |||
+ | == 20210119 (2h síncrona) == | ||
+ | Seguim amb apuntadors. [http://binefa.com/index.php?title=DAW_2020-2021#20210111_.281h_s.C3.ADncrona.29 Darrer dia que vam parlar d'apuntadors]. | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210119/ Alguns codis comentats avui] | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5p2.htm Explicació de la funció d'intercanvi ('''swap''')] | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5te.htm Teoria d'apuntadors] | ||
+ | |||
+ | == 20210114 (2h presencial) == | ||
+ | [https://www.binefa.cat/daw2021/m03/20210114/ Alguns codis comentats avui] | ||
+ | |||
+ | Seguim amb Arduino | ||
+ | |||
+ | [[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part]] | ||
+ | |||
+ | [[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part]] | ||
+ | |||
+ | == 20210111 (1h síncrona) == | ||
+ | Comencem apuntadors. | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210111/ Codis fets avui] | ||
+ | |||
+ | == 20201221 (1h síncrona) == | ||
+ | Dubtes de recursivitat i temes anteriors. | ||
+ | |||
+ | [https://ca.wikipedia.org/wiki/Torres_de_Hanoi Què són les torres de Hanoi?] | ||
+ | |||
+ | * Explicació de [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p2.htm Les torres de Hanoi] | ||
+ | |||
+ | [https://youtu.be/lilBGvaOSy8 Vídeo: Entendiendo la recursividad con las Torres de Hanoi] | ||
+ | |||
+ | [https://www.youtube.com/watch?v=LM68IQvIo_E Vídeo: La terrible leyenda de las Torres de Hanói] | ||
+ | |||
+ | * A partir del codi [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p2.htm Les torres de Hanoi], '''feu un comptador de moviments''' de les torres de Hanoi. '''Excepcionalment''' podeu emprar '''variables globals'''. | ||
+ | |||
+ | * Implementeu en Python les torres de Hanoi | ||
+ | |||
+ | == 20201217 (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20201217/ Alguns codis d'avui]. Flanc implementat en Snap4Arduino | ||
+ | |||
+ | Porteu fet de casa l'exercici de Fibonacci traduït de Python a C. | ||
+ | |||
+ | Seguim amb Arduino | ||
+ | |||
+ | [[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part]] | ||
+ | |||
+ | [[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part]] | ||
+ | |||
== 20201214 (1h síncrona) == | == 20201214 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20201214/ Codis fets el dia d'avui] | ||
+ | |||
=== '''La recursivitat''' === | === '''La recursivitat''' === | ||
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4te.htm '''La recursivitat'''] | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4te.htm '''La recursivitat'''] | ||
Línia 10: | Línia 413: | ||
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p1.htm La suma dels naturals] | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p1.htm La suma dels naturals] | ||
− | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p2.htm Les torres de Hanoi] | + | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p2.htm Les torres de Hanoi] (Feu un comptador de moviments) |
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p3.htm Fórmula de Wallis] | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p3.htm Fórmula de Wallis] | ||
Línia 188: | Línia 591: | ||
= Repositori de codis fet a classe durant el curs = | = Repositori de codis fet a classe durant el curs = | ||
− | |||
[https://binefa.cat/daw2021/m03/ Codis fets a les classes de 1r de DAW] | [https://binefa.cat/daw2021/m03/ Codis fets a les classes de 1r de DAW] |
Revisió de 10:46, 25 gen 2022
Contingut
- 1 Horari a partir del 18 de gener
- 2 Teleconferència del curs 2020-2021
- 3 Algunes classes
- 3.1 20210526 (1h presencial)
- 3.2 20210525 (2h presencial) Avaluació ordinària del M03UF3
- 3.3 20210520 (1h presencial)
- 3.4 20210519 (1h presencial)
- 3.5 20210518 (2h presencial)
- 3.6 20210513 (1h presencial)
- 3.7 20210512 (1h presencial)
- 3.8 20210511 (2h presencial)
- 3.9 20210506 (1h presencial)
- 3.10 20210505 (1h presencial)
- 3.11 20210504 (2h presencial)
- 3.12 20210429 Comença M03UF3 (1h presencial)
- 3.13 20210428 (1h presencial)
- 3.14 20210427 Examen M03UF2 (2h presencial)
- 3.15 20210422 (1h presencial)
- 3.16 20210421 (1h presencial)
- 3.17 20210420 (2h presencial)
- 3.18 20210415 (1h presencial)
- 3.19 20210414 (1h síncrona)
- 3.20 20210413 (2h presencial)
- 3.21 20210408 (1h presencial)
- 3.22 20210407 (1h presencial)
- 3.23 20210406 (2h presencial)
- 3.24 20210325 (1h presencial)
- 3.25 20210324 (1h síncrona)
- 3.26 20210318 (1h presencial)
- 3.27 20210316 (2h presencial)
- 3.28 20210309 (2h presencial)
- 3.29 20210304 Examen M03UF1 (3h presencial)
- 3.30 20210303 (1h presencial)
- 3.31 20210302 (2h síncrona)
- 3.32 20210225 (1h síncrona)
- 3.33 20210224 (1h síncrona)
- 3.34 20210223 (2h presencial)
- 3.35 20210218 (1h presencial)
- 3.36 20210217 (1h presencial)
- 3.37 20210216 (2h síncrona)
- 3.38 20210211 (1h síncrona)
- 3.39 20210210 (1h síncrona)
- 3.40 20210209 (2h presencial)
- 3.41 20210204 (1h síncrona)
- 3.42 20210203 (1h síncrona)
- 3.43 20210202 (2h síncrona)
- 3.44 20210128 (1h síncrona per confinament)
- 3.45 20210127 (1h síncrona per confinament)
- 3.46 20210126 (2h síncrona per confinament)
- 3.47 20210120 (1h presencial) Robot
- 3.48 20210119 (2h síncrona)
- 3.49 20210114 (2h presencial)
- 3.50 20210111 (1h síncrona)
- 3.51 20201221 (1h síncrona)
- 3.52 20201217 (2h presencial)
- 3.53 20201214 (1h síncrona)
- 3.54 20201210 (2h presencial)
- 3.55 20201203 (2h presencial)
- 3.56 20201130 (1h síncrona)
- 3.57 20201126 (2h, presencial)
- 3.58 20201123 (1h síncrona)
- 3.59 20201120 (1h síncrona)
- 3.60 20201119 (2h presencials)
- 3.61 20201116 (1h en línia)
- 3.62 20201112 (2h presencials)
- 3.63 20201109 (1h en línia)
- 3.64 20201105 (1h)
- 3.65 20201104 (1h)
- 3.66 20201103 (2h)
- 3.67 20201029 (1h)
- 3.68 20201028 (1h)
- 3.69 20201027 (2h)
- 3.70 20201022 (1h)
- 3.71 20201021 (1h)
- 3.72 20201020 (2h)
- 3.73 20201015 (1h)
- 3.74 20201014 (1h)
- 3.75 20201013 (2h)
- 3.76 20201008 (1h)
- 3.77 20201007 (1h)
- 3.78 20201006 (2h)
- 3.79 20201001 (1h)
- 3.80 20200930 (1h)
- 3.81 20200929 (2h)
- 4 Repositori de codis fet a classe durant el curs
Horari a partir del 18 de gener[modifica]
Teleconferència del curs 2020-2021[modifica]
Adreça de la teleconferència de la part de reforç (També per a hores exclusives amb en Carles Olivé)
Carpetes compartides 1r de DAW. Curs 2020-2021
Algunes classes[modifica]
20210526 (1h presencial)[modifica]
20210525 (2h presencial) Avaluació ordinària del M03UF3[modifica]
Examen d'avaluació ordinària de M03UF3
20210520 (1h presencial)[modifica]
20210519 (1h presencial)[modifica]
20210518 (2h presencial)[modifica]
20210513 (1h presencial)[modifica]
20210512 (1h presencial)[modifica]
20210511 (2h presencial)[modifica]
sprintf(szTerminal,"ls > %s",NOM_FITXER); // sprintf(szTerminal,"dir /b /a-d > %s",NOM_FITXER);
Sistema seriós:
ls > llista.dir
Finestrots:
dir /b /a-d > llista.dir
20210506 (1h presencial)[modifica]
20210505 (1h presencial)[modifica]
20210504 (2h presencial)[modifica]
Alguns codis comentats avui A l'inici de la classe hi havia aquests arxius (comprimit).
Exercici[modifica]
Demaneu els valors de l'arxiu struct05.c i feu que s'enregistri la informació als arxius administratiu.txt, enginyer.txt i auxiliar.txt. Anomeneu l'arxiu com a exEstructuraArxiu_00.c (baseu-vos en m8p03.c).
Feu un nou exEstructuraArxiu_01.c que es limiti a fer la lectura d' administratiu.txt, enginyer.txt i auxiliar.txt.
20210429 Comença M03UF3 (1h presencial)[modifica]
Exercici struct05.c[modifica]
Basant-vos en struct04.c, desenvolupeu struct05.c a on la funció vDemanaDades demana els quatre camps de l'estructura i la funció vVisualitzaDades presenta els quatre camps de l'estructura.
20210428 (1h presencial)[modifica]
20210427 Examen M03UF2 (2h presencial)[modifica]
Examen d'avaluació ordinària del M03UF2
ex06previ.py (El que faltava a l'arxiu .zip). Si premeu F5 ja està incorporat a l'arxiu 20210427_material.zip
20210422 (1h presencial)[modifica]
20210421 (1h presencial)[modifica]
20210420 (2h presencial)[modifica]
Examen UF2 2018 - Amb cadenes de caràcters
20210415 (1h presencial)[modifica]
Examen del M03UF2 del curs 2017-2018
20210414 (1h síncrona)[modifica]
Examen del M03UF2 del curs 2017-2018
20210413 (2h presencial)[modifica]
El darrer dia de classe síncrona vam resoldre les dues primeres preguntes de l' examen del M03UF2 del curs 2018-2019
Examen del M03UF2 del curs 2017-2018
20210408 (1h presencial)[modifica]
Seguim amb els robots
20210407 (1h presencial)[modifica]
Seguim amb els robots
20210406 (2h presencial)[modifica]
Seguim amb els robots
20210325 (1h presencial)[modifica]
Seguim amb els robots
20210324 (1h síncrona)[modifica]
20210318 (1h presencial)[modifica]
Seguim amb els robots
Prova del botó d'inici del robot
Com canviar d'estat quan passen més de 5 segons:
#define CINC_SEGONS 5000 ... int nPensaEstat(int nEstatActual, bool bL, bool bR) { static unsigned long ulStartMillis = millis(); bL = !bL; bR = !bR; switch (nEstatActual) { case STATE_STOP: ... case STATE_FORWARD: if ((bL || bR)) { ulStartMillis = millis(); return STATE_BORDER; } if (millis() - ulStartMillis > CINC_SEGONS) { ulStartMillis = millis(); return STATE_BUSCAR; // Canvi d'estat per passar-se de 5 segons al mateix estat } break; case STATE_BORDER: ... case STATE_SEARCH: ... case STATE_FAST_FORWARD: ... } return nEstatActual; }
20210316 (2h presencial)[modifica]
Seguim amb els robots
Exemple d'ús de l'estat de cerca
20210309 (2h presencial)[modifica]
Seguim amb els robots
20210304 Examen M03UF1 (3h presencial)[modifica]
1a hora de robots
A 2a i 3a hora hi ha examen d'avaluació ordinària.
20210303 (1h presencial)[modifica]
Seguim amb els robots
20210302 (2h síncrona)[modifica]
Proveu aquest codi en Python. Executeu-lo i verifiqueu que ho enteneu. En cas contrari, pregunteu:
for n in range (25,9,-5): print(n)
Comentem els codis dels estats del robot
20210225 (1h síncrona)[modifica]
20210224 (1h síncrona)[modifica]
20210223 (2h presencial)[modifica]
Seguim amb els robots
20210218 (1h presencial)[modifica]
Seguim amb el control del robot. Seguiment de línies i cerca d'una capsa al tatami.
20210217 (1h presencial)[modifica]
Seguim amb el control del robot. Seguiment de línies i cerca d'una capsa al tatami.
20210216 (2h síncrona)[modifica]
Depuració[modifica]
Explicació de la depuració amb gdb
20210211 (1h síncrona)[modifica]
20210210 (1h síncrona)[modifica]
Compilació d'un projecte amb múltiples codis font[modifica]
La compilació de múltiples fitxers .cpp es fa d'aquesta manera:
(La compilació requereix dels arxius .c o .cpp i no pas els .h)
gcc copiaCadena.c funcions.c -o copiaCadena
Es compilen tots els arxius .c a la vegada
Exercici[modifica]
A partir de m05e7_04.c feu un projecte per a que m05e7.c pugui fer els includes: aleatorietat.h, visualitzacio.h i gestioVectors.h
Criteri de selecció de funcions:
#include "aleatorietat.h" // #defines i vLlavorAleatorietat(), nNumAleat(int,int) i vGeneraNumerosAleatoris(double, double, int, double*) #include "visualitzacio.h" // #defines i void vVisualitzaVector(double *) #include "gestioVectors.h" // #defines i lfMaximVector(double *,int ) i lfMaximVector2(double *,int )
Per tant, haureu d'escriure el codi dels arxius aleatorietat.c, visualitzacio.c i gestioVectors.c
Els defines els heu de posar als arxius .h que creieu més convenient. Ho heu de compilar i ha de seguir funcionant.
20210209 (2h presencial)[modifica]
Proposta de control dels motors per infraroigs[modifica]
Al final de l'exemple irRobCtl:
vMotion( (bBL)?127:0 , (bBR)?127:0 );
20210204 (1h síncrona)[modifica]
Deures pel proper dia no presencial[modifica]
Adreça per la classe d'en Carles a darrera hora d'avui[modifica]
Adreça per la classe d'en Carles a darrera hora
20210203 (1h síncrona)[modifica]
- Desenvolupeu m6e03_09.c a partir de m6e03_08.c que faci que qualsevol frase que tingui majúscules sigui passada a minúscules. De tal manera que si introduïm TuruRut o tururut digui en ambdòs casos que és palíndrom.
jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210202$ gcc m6e03_08.c -o m jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210202$ ./m Paraula candidata a palíndrom: TuruRuT Caràcter esquerra: T - Caràcter dreta: T Caràcter esquerra: u - Caràcter dreta: u Caràcter esquerra: r - Caràcter dreta: R "TuruRuT" no és palíndrom jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210202$ ./m Paraula candidata a palíndrom: tururut Caràcter esquerra: t - Caràcter dreta: t Caràcter esquerra: u - Caràcter dreta: u Caràcter esquerra: r - Caràcter dreta: r "tururut" és palíndrom
Pista:
('b' - 'a') + 'A' (98 - 97) + 65 --> 66 --> 'B'
- Desenvolupeu m6e03_10.c a partir de m6e03_09.c que tregui els espais.
- Desenvolupeu m6e03_11.c a partir de m6e03_10.c que tregui els espais, comes, punts, ...
20210202 (2h síncrona)[modifica]
20210128 (1h síncrona per confinament)[modifica]
Porteu pensat el segon exercici del dia anterior (implementació en Python de la solució proposada en C).
20210127 (1h síncrona per confinament)[modifica]
Exercicis[modifica]
- Feu un programa que generi set números aleatoris entre -10.00 i 10.00. S'han de posar a les set primeres posicions de vector lfVector[99]. Aprofiteu l'exercici m05e7_03.c com a base per a resoldre-ho. Podeu generar la funció void vGeneraNumerosAleatoris(double lfMin, double lfMax, int nQuants, double* lfV). Una crida possible des de la funció main() seria vGeneraNumerosAleatoris(-10.00,10.00,7,lfVector)
Exemple d'execució:
jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210127$ ./m vVisualitzaVector: lfVector: { -0.01 -7.42 7.52 2.08 5.59 8.68 -9.30 } 1) El valor màxim del vector és 8.68 2) El valor màxim del vector és 8.68
- El mateix que l'anterior en Python. La funció de generació haurà de ser diferent. Feu una proposta de codi.
20210126 (2h síncrona per confinament)[modifica]
Exercicis[modifica]
- Feu un programa en C i en Python, aprofitant el que avui hem vist a classe, i modifiqueu els elements del vector (llista a Python) incrementant el seu valor en un 21% (com l'IVA).
Ha de sortir així:
jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210126/ex$ gcc m05e7_03_mesIva.c -o m jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210126/ex$ ./m --------------- vVisualitzaVector: lfVector: { 2.34 4.56 -3.45 10.00 9.87 1.32 -1.27 } 1) El valor màxim del vector és 10.00 2) El valor màxim del vector és 10.00 --------------- vVisualitzaVector: lfVector: { 2.83 5.52 -4.17 12.10 11.94 1.60 -1.54 } 3) El valor màxim del vector és 12.10
Proposta de funció principal main():
int main(){ double lfVector[99] = {2.34,4.56,-3.45,10,9.87,1.32,-1.27}; // 7 elements instanciats vVisualitzaVector(lfVector); // vVisualitzaVector(&lfVector[0]); printf("1) El valor màxim del vector és %.2lf\n",lfMaximVector(lfVector,MIDA_INICIAL)); printf("2) El valor màxim del vector és %.2lf\n",lfMaximVector2(lfVector,MIDA_INICIAL)); vAfegeixIva(lfVector,MIDA_INICIAL,21.0); vVisualitzaVector(lfVector); // vVisualitzaVector(&lfVector[0]); printf("3) El valor màxim del vector és %.2lf\n",lfMaximVector(lfVector,MIDA_INICIAL)); return 0; }
I a Python:
jordi@ecat-XPS13:~/Documents/escolaClot/curs2020-2021/m03/daw/20210126/ex$ python3 m05e7_03_mesIVA.py vVector: [ 2.34 4.56 -3.45 10.00 9.87 1.32 -1.27 ] El valor màxim del vector és 10.00 vVector: [ 2.83 5.52 -4.17 12.10 11.94 1.60 -1.54 ] El valor màxim del vector és 12.10
Proposta de funció principal a Python:
lfVector = [2.34,4.56,-3.45,10,9.87,1.32,-1.27] vVisualitzaVector(lfVector) print("El valor màxim del vector és %.2lf"%lfMaximVector(lfVector)) lfVector = vAfegeixIva(lfVector,21.0) vVisualitzaVector(lfVector) print("El valor màxim del vector és %.2lf"%lfMaximVector(lfVector))
20210120 (1h presencial) Robot[modifica]
Biblioteques per al robot versió 5
20210119 (2h síncrona)[modifica]
Seguim amb apuntadors. Darrer dia que vam parlar d'apuntadors.
Explicació de la funció d'intercanvi (swap)
20210114 (2h presencial)[modifica]
Seguim amb Arduino
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part
20210111 (1h síncrona)[modifica]
Comencem apuntadors.
20201221 (1h síncrona)[modifica]
Dubtes de recursivitat i temes anteriors.
- Explicació de Les torres de Hanoi
Vídeo: Entendiendo la recursividad con las Torres de Hanoi
Vídeo: La terrible leyenda de las Torres de Hanói
- A partir del codi Les torres de Hanoi, feu un comptador de moviments de les torres de Hanoi. Excepcionalment podeu emprar variables globals.
- Implementeu en Python les torres de Hanoi
20201217 (2h presencial)[modifica]
Alguns codis d'avui. Flanc implementat en Snap4Arduino
Porteu fet de casa l'exercici de Fibonacci traduït de Python a C.
Seguim amb Arduino
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part
20201214 (1h síncrona)[modifica]
La recursivitat[modifica]
Exemples de recursivitat[modifica]
Les torres de Hanoi (Feu un comptador de moviments)
Exercicis de recursivitat[modifica]
20201210 (2h presencial)[modifica]
20201203 (2h presencial)[modifica]
- Feu la travessa en Python.
- Feu un menú en C que cridi els tres programes de la travessa en C i els tres programes en Python.
- Feu un menú en Python que cridi els tres programes de la travessa en C i els tres programes en Python.
20201130 (1h síncrona)[modifica]
Porteu fet i acabat l'exercici 5 del mòdul 4 del d97 en C i en Python.
Porteu pensat com fer l'exercici de la travessa (quiniela).
20201126 (2h, presencial)[modifica]
Heu de portar acabat en Python les solucions en C del dia anterior. Resposta proposada per n'Andrea Sánchez
Exercici 11 del mòdul 4 del d97
20201123 (1h síncrona)[modifica]
20201120 (1h síncrona)[modifica]
Mirar possibles solucions a l'exercici 3 del mòdul 3 (màxim comú divisor de tres nombres) i l'exercici 3 del mòdul 4 del d97 (joc d'endevinar un número entre l'1 i el 1000)
20201119 (2h presencials)[modifica]
Estructura condicional switch-case (existeix en C, no en Python)[modifica]
Estructura repetitiva do-while (existeix en C, no en Python)[modifica]
Menú amb do-while i switch-case[modifica]
Menú amb do-while i switch-case
Recursivitat i pseudoaleatorietat[modifica]
Resum teòric de recursivitat i pseudoaleatorietat en C
20201116 (1h en línia)[modifica]
Avui rebreu per correu electrònic la tasca a desenvolupar a l'hora de classe d'avui.
20201112 (2h presencials)[modifica]
Exercici 1 de funcions[modifica]
Desenvolupeu un programa en C i un altre en Python que preguntin el radi d'una roda de bicicleta i retorni la longitud del pneumàtic de la bicicleta (Pista: 2 pi R).
Exercici 2 de funcions[modifica]
Desenvolupeu un programa en C i un altre en Python que preguntin els dos catets d'un triangle i calculi llur superfície.
Feu la funció lfSuperficie que sigui de tipus double en C i float en Python. El prototipus de la funció en C serà double lfSuperficie(double lfCatet1, double lfCatet2) i en Python def lfSuperficie(lfCatet1,lfCatet2)
Exercici 3 de funcions[modifica]
Desenvolupeu un programa en C i un altre en Python que preguntin els dos catets d'un triangle i calculi llur hipotenusa.
En C caldrà fer servir la funció sqrt(), per tant caldrà incloure include <math.h>. Recordeu que la comppilació fent servir la biblioteca matemàtica és:
gcc -lm ex03_func.c -o e3
Un exemple d'ús de la funció sqrt() en Python
Exercici 4 de funcions[modifica]
Desenvolupeu en C i en Python l'exercici 3 del mòdul 3 del d97. Recordeu que vam fer l'exercici del màxim comú divisor en C i l'exercici del màxim comú divisor en Python.
20201109 (1h en línia)[modifica]
20201105 (1h)[modifica]
Concepte de funció.
20201104 (1h)[modifica]
Exercici 8. Algorisme 3n+1
20201103 (2h)[modifica]
Exercicis d'estructures de control repetitives en Python
Per a implementar l'exercici 6 de bucles[modifica]
Aquest és l'algorisme desenvolupat a classe i aquest és el codi en XML per a ser carregat per l'Snap!
Per simular un "Atura-ho Tot" en C, podeu fer servir un return 0; a la funció main()
Mireu pr02.py del Tercer dia de classe - M03 PRG 2020-2021 per saber com fer un return 0; en Python (sys.exit(0) i al principi cal afegir import sys).
20201029 (1h)[modifica]
Exercicis d'estructures de control repetitives en Python
20201028 (1h)[modifica]
Exercicis d'estructures de control repetitives en Python
20201027 (2h)[modifica]
20201022 (1h)[modifica]
1r exercici. Equació de 2n grau
20201021 (1h)[modifica]
Exercicis de condicions en Python
20201020 (2h)[modifica]
Exercicis de condicions en Python
20201015 (1h)[modifica]
Exercicis de condicions en Python
20201014 (1h)[modifica]
Exercicis de condicions en Python
20201013 (2h)[modifica]
20201008 (1h)[modifica]
Tercer dia de classe - M03 PRG 2020-2021
20201007 (1h)[modifica]
Tercer dia de classe - M03 PRG 2020-2021
20201006 (2h)[modifica]
Tercer dia de classe - M03 PRG 2020-2021
Codis del dia d'avui (comprimits els que hi eren al principi de la classe)
Tipus de dades fonamentals: Variables
20201001 (1h)[modifica]
20200930 (1h)[modifica]
Segon dia de classe - M03 PRG 2020-2021