Diferència entre revisions de la pàgina «DAW 2020-2021»
m |
|||
(Hi ha 190 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] | ||
− | = 20200929 = | + | [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é) |
− | == Codis explicats a classe == | + | |
+ | [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 = | ||
+ | == 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) == | ||
+ | [https://binefa.cat/daw2021/m03/20201214/ Codis fets el dia d'avui] | ||
+ | |||
+ | === '''La recursivitat''' === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4te.htm '''La recursivitat'''] | ||
+ | |||
+ | ==== Exemples de recursivitat ==== | ||
+ | [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] (Feu un comptador de moviments) | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4p3.htm Fórmula de Wallis] | ||
+ | |||
+ | ==== Exercicis de recursivitat ==== | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm Exercicis 1, 2 i 12] | ||
+ | |||
+ | == 20201210 (2h presencial) == | ||
+ | [[Introducció a Arduino]] | ||
+ | |||
+ | == 20201203 (2h presencial) == | ||
+ | [https://binefa.cat/daw2021/m03/20201203/ Codis del dia d'avui] | ||
+ | |||
+ | * 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) == | ||
+ | Porteu fet i '''acabat''' l'[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm exercici 5 del mòdul 4 del d97] en C i en Python. | ||
+ | |||
+ | Porteu '''pensat''' com fer l'exercici de la travessa (''quiniela''). | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201130/ Codis del dia d'avui] | ||
+ | |||
+ | == 20201126 (2h, presencial) == | ||
+ | Heu de portar acabat en Python les solucions en C del dia anterior. [https://binefa.cat/daw2021/m03/20201126/m4e03_04.py.txt Resposta proposada per n'Andrea Sánchez] | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm Exercici 11 del mòdul 4 del d97] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201126/ Codis del dia d'avui] | ||
+ | |||
+ | == 20201123 (1h síncrona) == | ||
+ | [https://binefa.cat/daw2021/m03/20201123/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201120 (1h síncrona) == | ||
+ | Mirar possibles solucions a [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm l'exercici 3 del mòdul 3 ('''màxim comú divisor de tres nombres''')] i [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm l'exercici 3 del mòdul 4 del d97 ('''joc d'endevinar un número entre l'1 i el 1000''')] | ||
+ | |||
+ | == 20201119 (2h presencials) == | ||
+ | [https://binefa.cat/daw2021/m03/20201119/ Alguns codis fets avui] | ||
+ | |||
+ | === Estructura condicional '''switch-case''' (existeix en C, no en Python) === | ||
+ | |||
+ | === Estructura repetitiva '''do-while''' (existeix en C, no en Python) === | ||
+ | |||
+ | === Menú amb do-while i switch-case === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3p6.htm Menú amb do-while i switch-case] | ||
+ | |||
+ | === Recursivitat i pseudoaleatorietat === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4te.htm Resum teòric de recursivitat i pseudoaleatorietat en C] | ||
+ | |||
+ | == 20201116 (1h en línia) == | ||
+ | Avui rebreu per correu electrònic la tasca a desenvolupar a l'hora de classe d'avui. | ||
+ | |||
+ | == 20201112 (2h presencials) == | ||
+ | [https://binefa.cat/daw2021/m03/20201112/ Alguns codis fets avui] | ||
+ | |||
+ | === Exercici 1 de funcions === | ||
+ | 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 === | ||
+ | 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 === | ||
+ | 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 | ||
+ | |||
+ | [https://www.geeksforgeeks.org/python-math-function-sqrt/ Un exemple d'ús de la funció '''sqrt()''' en Python] | ||
+ | |||
+ | === Exercici 4 de funcions === | ||
+ | Desenvolupeu en C i en Python [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm l'exercici 3 del mòdul 3 del d97]. Recordeu que vam fer [https://binefa.cat/daw2021/m03/20201109/m3p03_c.zip l'exercici del màxim comú divisor en C] i [https://binefa.cat/daw2021/m03/20201109/m3p03_py.zip l'exercici del màxim comú divisor en Python]. | ||
+ | |||
+ | == 20201109 (1h en línia) == | ||
+ | [https://binefa.cat/daw2021/m03/20201109/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201105 (1h) == | ||
+ | Concepte de funció. | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm Exercici 3] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201105/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201104 (1h) == | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm Exercici 8]. Algorisme 3n+1 | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201104/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201103 (2h) == | ||
+ | [[Exercicis d'estructures de control repetitives en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201103/ Alguns codis fets avui] | ||
+ | |||
+ | === Per a implementar l'exercici 6 de bucles === | ||
+ | [https://binefa.cat/daw2021/m03/20201103/ex06_primer_snap.png Aquest és l'algorisme desenvolupat a classe] i aquest és el [https://binefa.cat/daw2021/m03/20201103/ex06_primer_snap.xml 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) == | ||
+ | [[Exercicis d'estructures de control repetitives en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201029/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201028 (1h) == | ||
+ | [[Exercicis d'estructures de control repetitives en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201028/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201027 (2h) == | ||
+ | [[Pràctiques d'introducció a Python . Part 3 - SMX | Bucles amb Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201027/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201022 (1h) == | ||
+ | [[Pràctiques d'introducció a Python . Part 3 - SMX | Bucles amb Python]] | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm 1r exercici. Equació de 2n grau] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201022/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201021 (1h) == | ||
+ | [[Exercicis de condicions en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201021/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201020 (2h) == | ||
+ | [[Exercicis de condicions en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201020/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201015 (1h) == | ||
+ | [[Exercicis de condicions en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201015/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201014 (1h) == | ||
+ | [[Exercicis de condicions en Python]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201014/ Alguns codis fets avui] | ||
+ | |||
+ | == 20201013 (2h) == | ||
+ | |||
+ | [[Pràctiques d'introducció a Python . Part 2 - SMX | Condicionals amb Python]] | ||
+ | |||
+ | == 20201008 (1h) == | ||
+ | [[Tercer dia de classe - M03 PRG 2020-2021]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201008/ Codis del dia d'avui] | ||
+ | |||
+ | == 20201007 (1h) == | ||
+ | [[Tercer dia de classe - M03 PRG 2020-2021]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201007/ Codis del dia d'avui] | ||
+ | |||
+ | == 20201006 (2h) == | ||
+ | [[Tercer dia de classe - M03 PRG 2020-2021]] | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20201006/ Codis del dia d'avui] ([https://binefa.cat/daw2021/m03/20201006_00.zip comprimits els que hi eren al principi de la classe]) | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m2/d97m2te.htm Tipus de dades fonamentals: Variables] | ||
+ | |||
+ | == 20201001 (1h) == | ||
+ | [https://binefa.cat/daw2021/m03/20201001/ Codis del dia d'avui] | ||
+ | |||
+ | == 20200930 (1h) == | ||
+ | [[Segon dia de classe - M03 PRG 2020-2021]] | ||
+ | |||
+ | == 20200929 (2h) == | ||
+ | === Codis explicats a classe === | ||
[https://binefa.cat/daw2021/m03/20200929/ Codis explicats a classe] | [https://binefa.cat/daw2021/m03/20200929/ Codis explicats a classe] | ||
= 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
Teleconferència del curs 2020-2021
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
20210526 (1h presencial)
20210525 (2h presencial) Avaluació ordinària del M03UF3
Examen d'avaluació ordinària de M03UF3
20210520 (1h presencial)
20210519 (1h presencial)
20210518 (2h presencial)
20210513 (1h presencial)
20210512 (1h presencial)
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
20210506 (1h presencial)
20210505 (1h presencial)
20210504 (2h presencial)
Alguns codis comentats avui A l'inici de la classe hi havia aquests arxius (comprimit).
Exercici
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)
Exercici struct05.c
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)
20210427 Examen M03UF2 (2h presencial)
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)
20210421 (1h presencial)
20210420 (2h presencial)
Examen UF2 2018 - Amb cadenes de caràcters
20210415 (1h presencial)
Examen del M03UF2 del curs 2017-2018
20210414 (1h síncrona)
Examen del M03UF2 del curs 2017-2018
20210413 (2h presencial)
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)
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)
20210318 (1h presencial)
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)
Seguim amb els robots
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.
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)
Comentem els codis dels estats del robot
20210225 (1h síncrona)
20210224 (1h síncrona)
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)
Depuració
Explicació de la depuració amb gdb
20210211 (1h síncrona)
20210210 (1h síncrona)
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 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)
Proposta de control dels motors per infraroigs
Al final de l'exemple irRobCtl:
vMotion( (bBL)?127:0 , (bBR)?127:0 );
20210204 (1h síncrona)
Deures pel proper dia no presencial
Adreça per la classe d'en Carles a darrera hora d'avui
Adreça per la classe d'en Carles a darrera hora
20210203 (1h síncrona)
- 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)
20210128 (1h síncrona per confinament)
Porteu pensat el segon exercici del dia anterior (implementació en Python de la solució proposada en C).
20210127 (1h síncrona per confinament)
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)
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
Biblioteques per al robot versió 5
20210119 (2h síncrona)
Seguim amb apuntadors. Darrer dia que vam parlar d'apuntadors.
Explicació de la funció d'intercanvi (swap)
20210114 (2h presencial)
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.
20201221 (1h síncrona)
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)
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)
La recursivitat
Exemples de recursivitat
Les torres de Hanoi (Feu un comptador de moviments)
Exercicis de recursivitat
20201210 (2h presencial)
20201203 (2h presencial)
- 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)
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)
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)
20201120 (1h síncrona)
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)
Estructura condicional switch-case (existeix en C, no en Python)
Estructura repetitiva do-while (existeix en C, no en Python)
Menú amb do-while i switch-case
Menú amb do-while i switch-case
Recursivitat i pseudoaleatorietat
Resum teòric de recursivitat i pseudoaleatorietat en C
20201116 (1h en línia)
Avui rebreu per correu electrònic la tasca a desenvolupar a l'hora de classe d'avui.
20201112 (2h presencials)
Exercici 1 de funcions
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
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
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
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)
20201105 (1h)
Concepte de funció.
20201104 (1h)
Exercici 8. Algorisme 3n+1
20201103 (2h)
Exercicis d'estructures de control repetitives en Python
Per a implementar l'exercici 6 de bucles
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)
Exercicis d'estructures de control repetitives en Python
20201028 (1h)
Exercicis d'estructures de control repetitives en Python
20201027 (2h)
20201022 (1h)
1r exercici. Equació de 2n grau
20201021 (1h)
Exercicis de condicions en Python
20201020 (2h)
Exercicis de condicions en Python
20201015 (1h)
Exercicis de condicions en Python
20201014 (1h)
Exercicis de condicions en Python
20201013 (2h)
20201008 (1h)
Tercer dia de classe - M03 PRG 2020-2021
20201007 (1h)
Tercer dia de classe - M03 PRG 2020-2021
20201006 (2h)
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)
20200930 (1h)
Segon dia de classe - M03 PRG 2020-2021