Diferència entre revisions de la pàgina «DAW 2020-2021»

De binefa.com
Salta a la navegació Salta a la cerca
 
(Hi ha 116 revisions intermèdies del mateix usuari que no es mostren)
Línia 4: Línia 4:
 
= 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) ==
 
== 20210111 (1h síncrona) ==
Comencem punters.
+
Comencem apuntadors.
  
 
[https://binefa.cat/daw2021/m03/20210111/ Codis fets avui]
 
[https://binefa.cat/daw2021/m03/20210111/ Codis fets avui]
Línia 224: 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

Horari a partir del 18 de gener

1r de DAW

Teleconferència del curs 2020-2021

Adreça de la teleconferència

Adreça de la teleconferència de la part de reforç (També per a hores exclusives amb en Carles Olivé)

Llista 1r de DAW 2020-2021

Carpetes compartides 1r de DAW. Curs 2020-2021

Algunes classes

20210526 (1h presencial)

Alguns codis comentats avui

20210525 (2h presencial) Avaluació ordinària del M03UF3

Examen d'avaluació ordinària de M03UF3

20210520 (1h presencial)

Alguns codis comentats avui

20210519 (1h presencial)

Alguns codis comentats avui

20210518 (2h presencial)

Alguns codis comentats avui

20210513 (1h presencial)

Alguns codis comentats avui

20210512 (1h presencial)

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

Alguns codis comentats avui

20210506 (1h presencial)

Alguns codis comentats avui

20210505 (1h presencial)

Alguns codis comentats avui

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)

Alguns codis comentats avui

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)

Alguns codis comentats avui

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)

Alguns codis comentats avui

20210421 (1h presencial)

Alguns codis comentats avui

20210420 (2h presencial)

Examen UF2 2018 - Amb cadenes de caràcters

Examen extraordinària de 2016

Alguns codis comentats avui

20210415 (1h presencial)

Examen del M03UF2 del curs 2017-2018

Alguns codis comentats avui

20210414 (1h síncrona)

Examen del M03UF2 del curs 2017-2018

Alguns codis comentats avui

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

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)

Com depurar un programa en C

Examen a resoldre en línia

Alguns codis comentats avui

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.

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)

Comentem els codis dels estats del robot

20210225 (1h síncrona)

Alguns codis comentats avui

20210224 (1h síncrona)

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)

Alguns codis explicats avui

Depuració

Explicació de la depuració amb gdb

20210211 (1h síncrona)

Alguns codis comentats avui

20210210 (1h síncrona)

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 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)

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)

Alguns codis comentats avui

Deures pel proper dia no presencial

Exercici 2

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)

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)

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).

Alguns codis comentats avui

20210127 (1h síncrona per confinament)

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)

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

Biblioteques per al robot versió 5

20210119 (2h síncrona)

Seguim amb apuntadors. Darrer dia que vam parlar d'apuntadors.

Alguns codis comentats avui

Explicació de la funció d'intercanvi (swap)

Teoria d'apuntadors

20210114 (2h presencial)

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.

Codis fets avui

20201221 (1h síncrona)

Dubtes de recursivitat i temes anteriors.

Què són 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)

Codis fets el dia d'avui

La recursivitat

La recursivitat

Exemples de recursivitat

La suma dels naturals

Les torres de Hanoi (Feu un comptador de moviments)

Fórmula de Wallis

Exercicis de recursivitat

Exercicis 1, 2 i 12

20201210 (2h presencial)

Introducció a Arduino

20201203 (2h presencial)

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'exercici 5 del mòdul 4 del d97 en C i en Python.

Porteu pensat com fer l'exercici de la travessa (quiniela).

Codis del dia d'avui

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

Codis del dia d'avui

20201123 (1h síncrona)

Alguns codis fets avui

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)

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

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)

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

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)

Alguns codis fets avui

20201105 (1h)

Concepte de funció.

Exercici 3

Alguns codis fets avui

20201104 (1h)

Exercici 8. Algorisme 3n+1

Alguns codis fets avui

20201103 (2h)

Exercicis d'estructures de control repetitives en Python

Alguns codis fets avui

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

Alguns codis fets avui

20201028 (1h)

Exercicis d'estructures de control repetitives en Python

Alguns codis fets avui

20201027 (2h)

Bucles amb Python

Alguns codis fets avui

20201022 (1h)

Bucles amb Python

1r exercici. Equació de 2n grau

Alguns codis fets avui

20201021 (1h)

Exercicis de condicions en Python

Alguns codis fets avui

20201020 (2h)

Exercicis de condicions en Python

Alguns codis fets avui

20201015 (1h)

Exercicis de condicions en Python

Alguns codis fets avui

20201014 (1h)

Exercicis de condicions en Python

Alguns codis fets avui

20201013 (2h)

Condicionals amb Python

20201008 (1h)

Tercer dia de classe - M03 PRG 2020-2021

Codis del dia d'avui

20201007 (1h)

Tercer dia de classe - M03 PRG 2020-2021

Codis del dia d'avui

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)

Codis del dia d'avui

20200930 (1h)

Segon dia de classe - M03 PRG 2020-2021

20200929 (2h)

Codis explicats a classe

Codis explicats a classe

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 1r de DAW