Diferència entre revisions de la pàgina «ASIX 2020-2021»
(Hi ha 73 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ç] | ||
+ | |||
+ | [https://docs.google.com/spreadsheets/d/1rkrJP7jNxfsTnoJiKkM_LInZkieWfn005TK1JRvbAl4/edit#gid=255440483 Llista 1r d'ASIX 2020-2021] | ||
+ | |||
+ | [[Carpetes compartides 1r d'ASIX. Curs 2020-2021]] | ||
= Algunes classes = | = Algunes classes = | ||
+ | == 20210528 '''Avaluació ordinària del M03UF3''' == | ||
+ | [https://binefa.cat/asix2021/m03/20210528ex/ Examen d'avaluació ordinària de M03UF3] | ||
+ | |||
+ | == 20210517 == | ||
+ | [https://binefa.cat/asix2021/m03/20210517/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210514 == | ||
+ | [https://binefa.cat/asix2021/m03/20210514/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210510 == | ||
+ | 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/asix2021/m03/20210510/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210507 == | ||
+ | [https://binefa.cat/asix2021/m03/20210507/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210503 == | ||
+ | [https://binefa.cat/asix2021/m03/20210503/ Alguns codis comentats avui] | ||
+ | |||
+ | === 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''. | ||
+ | |||
+ | == 20210430 '''Comença M03UF3''' (2h presencial) == | ||
+ | Comentem l'examen del darrer dia. | ||
+ | |||
+ | Comencem M03UF3. | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210430/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210426 '''Examen M03UF2''' (2h presencial) == | ||
+ | [https://binefa.cat/asix2021/m03/20210426_exOrd_M03UF2/ Examen d'avaluació ordinària del M03UF2] | ||
+ | |||
+ | == 20210423 (2h presencial) == | ||
+ | [https://binefa.cat/asix2021/m03/20210423/ Alguns codis comentats avui] | ||
+ | |||
+ | Avui intentarem resoldre l'[https://binefa.cat/asix2021/m03/examensPrevis/20180425exUF2.zip examen del M03UF2 del curs 2017-2018 fent servir vector de números], fent-ho en Python. | ||
+ | |||
+ | Al final de la classe intentem fer l'[https://binefa.cat/asix2021/m03/examensPrevis/20180423ex.zip examen del M03UF2 del curs 2017-2018 fent servir cadena de caràcters], fent-ho en Python. | ||
+ | |||
+ | == 20210419 (2h presencial) == | ||
+ | [https://binefa.cat/asix2021/m03/examensPrevis/20160608exUf2extrAsix.tar.gz Examen extraordinària de 2016] | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210419/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210416 (2h presencial) == | ||
+ | [https://binefa.cat/asix2021/m03/examensPrevis/20180425exUF2.zip Examen del M03UF2 del curs 2017-2018 fent servir vector de números] | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/examensPrevis/20180423ex.zip Examen del M03UF2 del curs 2017-2018 fent servir cadena de caràcters] | ||
+ | |||
+ | Al codi ''rps01.c'' li cal afegir sota l'''include'': | ||
+ | #include <stdlib.h> | ||
+ | #include <time.h> | ||
+ | |||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210416/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210412 (2h síncrona) == | ||
+ | [https://binefa.cat/asix2021/m03/20210412/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210326 (2h presencial) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | == 20210322 (2h síncrona) == | ||
+ | [https://binefa.cat/asix2021/m03/20210322/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210319 (2h síncrona) == | ||
+ | [https://binefa.cat/asix2021/m03/20210319/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210318 (1h presencial) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | [https://binefa.cat/daw2021/m03/20210316/GrauTorres_4aProvaBC.ino Exemple d'ús de l'estat de cerca] | ||
+ | |||
+ | [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; | ||
+ | } | ||
+ | |||
+ | |||
+ | == 20210315 (2h presencial) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | == 20210312 (2h presencial) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | == 20210308 (2h presencial) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | == 20210305 (2h síncrona) == | ||
+ | Repàs de l'examen. | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210305/ Proposta de solució feta a classe] | ||
+ | |||
+ | == 20210304 '''Examen M03UF1''' (2h presencial) == | ||
+ | [https://binefa.cat/asix2021/m03/20210304_exM07Uf1/ Examen M03UF1 d'ordinària] | ||
+ | |||
+ | == 20210301 (2h presencial) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | Repassem la [https://binefa.cat/asix2021/m03/20210226/ introducció a l'ús d'estats al robot] | ||
+ | |||
+ | 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) | ||
+ | |||
+ | == 20210226 (2h síncrona) == | ||
+ | Seguim amb els robots. | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210226/ Introducció a l'ús d'estats al robot] | ||
+ | |||
+ | == 20210222 (2h síncrona) == | ||
+ | [https://binefa.cat/asix2021/m03/20210222/ Alguns codis comentats avui a classe] | ||
+ | |||
+ | == 20210219 (2h síncrona) == | ||
+ | [https://binefa.cat/asix2021/m03/20210219/ Alguns codis comentats avui a classe] | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/annex.htm La depuració] | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/examensPrevis/20190411_daw_m03uf1_ord.pdf Anem fent aquest examen de fa dos anys] | ||
+ | |||
+ | == 20210216 (1h presencial) == | ||
+ | [https://binefa.cat/asix2021/m03/20210216/ 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 | ||
+ | |||
+ | === '''Depuració''' === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/annex.htm La depuració amb el '''gdb'''] | ||
+ | |||
+ | == 20210212 (2h presencial) == | ||
+ | * Acabeu l'aproximació del robot | ||
+ | |||
+ | * Feu que el robot segueixi la vora dels tatamis (la línia negra). Us ha de funcionar en qualsevol direcció (cap a l'esquerra o cap a la dreta). | ||
+ | |||
+ | ''Proposta de control dels motors per infraroigs'': | ||
+ | |||
+ | ''Al final de l'exemple '''irRobCtl''''': | ||
+ | '''vMotion( (bBL)?127:0 , (bBR)?127:0 );''' | ||
+ | |||
+ | * Feu que, des de qualsevol posició del robot, cerqui una capsa i la faci fora del tatami. El robot no en pot sortir del tatami i haurà d'insistir en empènyer la capsa fora del tatami. | ||
+ | |||
+ | == 20210208 (2h síncrona) == | ||
+ | '''Porteu traduït a Python l'arxiu m05e7_04.c''', vist el darrer dia. Com a pista, teniu implementat m05e7_03.py a partir de m05e7_03.c | ||
+ | |||
+ | Seguim per la 2a part del darrer dia. Ens vam quedar explicant '''m6e03_07.c'''. | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210208/ Alguns codis comentats avui] | ||
+ | |||
+ | === Exercicis === | ||
+ | * Desenvolupeu '''m6e03_09.c''', a partir de [https://binefa.cat/asix2021/m03/20210208/m6e03_08.c m6e03_08.c], que permeti analitzar si una cadena és palíndroma malgrat tingui majúscules. | ||
+ | |||
+ | Ara '''tururut''' és un palíndrom, però '''tuRurut''' no és un palíndrom. I sí que ho és. Arrangem-ho. | ||
+ | |||
+ | * Desenvolupeu '''m6e03_10.c''', a partir de m6e03_09.c, que permeti analitzar si una cadena és palíndroma malgrat tingui espais. | ||
+ | |||
+ | Ara '''tururut''' és un palíndrom, però '''tu Ru rut''' no és un palíndrom. I sí que ho és. Arrangem-ho. | ||
+ | |||
+ | Pista: ''Feu servir una funció de concatenació per a eliminar els espais.'' ('''tu Ru rut''' -> '''tururut''') | ||
+ | |||
+ | == 20210205 (2h síncrona) == | ||
+ | |||
+ | === Repàs de l'exercici del darrer dia === | ||
+ | * 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)) | ||
+ | |||
+ | |||
+ | === Exercicis === | ||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5ex.htm Exercici 7 de mòdul 5] | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210205/ Alguns codis comentats avui] | ||
+ | |||
+ | * 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. | ||
+ | |||
+ | == 20210201 (2h presencial) '''Robot''' == | ||
+ | Seguim amb el robot. | ||
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210201/ Alguns codis comentats avui] | ||
+ | |||
+ | == 20210129 (2h presencial) '''Robot''' == | ||
+ | [https://binefa.cat/asix2021/m03/20210129_robot/ Biblioteques per al robot versió 5] | ||
+ | |||
== 20210125 (2h síncrona) == | == 20210125 (2h síncrona) == | ||
− | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5ex.htm | + | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5ex.htm Heu d'haver fet, per avui, l'exercici 7]. Valor màxim d'un vector |
+ | |||
+ | [https://binefa.cat/asix2021/m03/20210125/ Alguns codis fets avui] | ||
== 20210122 (2h síncrona) == | == 20210122 (2h síncrona) == | ||
Línia 251: | Línia 539: | ||
= Repositori de codis fet a classe durant el curs = | = Repositori de codis fet a classe durant el curs = | ||
− | |||
[https://binefa.cat/asix2021/m03/ Codis fets a les classes de 1r d'ASIX] | [https://binefa.cat/asix2021/m03/ Codis fets a les classes de 1r d'ASIX] |
Revisió de 13:13, 28 maig 2021
Contingut
- 1 Horari a partir del 18 de gener
- 2 Teleconferència del curs 2020-2021
- 3 Algunes classes
- 3.1 20210528 Avaluació ordinària del M03UF3
- 3.2 20210517
- 3.3 20210514
- 3.4 20210510
- 3.5 20210507
- 3.6 20210503
- 3.7 20210430 Comença M03UF3 (2h presencial)
- 3.8 20210426 Examen M03UF2 (2h presencial)
- 3.9 20210423 (2h presencial)
- 3.10 20210419 (2h presencial)
- 3.11 20210416 (2h presencial)
- 3.12 20210412 (2h síncrona)
- 3.13 20210326 (2h presencial)
- 3.14 20210322 (2h síncrona)
- 3.15 20210319 (2h síncrona)
- 3.16 20210318 (1h presencial)
- 3.17 20210315 (2h presencial)
- 3.18 20210312 (2h presencial)
- 3.19 20210308 (2h presencial)
- 3.20 20210305 (2h síncrona)
- 3.21 20210304 Examen M03UF1 (2h presencial)
- 3.22 20210301 (2h presencial)
- 3.23 20210226 (2h síncrona)
- 3.24 20210222 (2h síncrona)
- 3.25 20210219 (2h síncrona)
- 3.26 20210216 (1h presencial)
- 3.27 20210212 (2h presencial)
- 3.28 20210208 (2h síncrona)
- 3.29 20210205 (2h síncrona)
- 3.30 20210201 (2h presencial) Robot
- 3.31 20210129 (2h presencial) Robot
- 3.32 20210125 (2h síncrona)
- 3.33 20210122 (2h síncrona)
- 3.34 20210118 (2h presencial)
- 3.35 20210113 (1h síncrona)
- 3.36 20210111 (2h presencial)
- 3.37 20201221 (2h presencial)
- 3.38 20201214 (2h presencial)
- 3.39 20201202 (1h, síncrona)
- 3.40 20201130 (2h, presencial)
- 3.41 20201125 (1h, síncrona)
- 3.42 20201123 (2h, presencial)
- 3.43 20201118 (síncrona)
- 3.44 20201116 (presencial)
- 3.45 20201113 (asíncrona)
- 3.46 20201111 (síncrona)
- 3.47 20201109 (presencial)
- 3.48 20201106
- 3.49 20201102
- 3.50 20201030
- 3.51 20201026
- 3.52 20201023
- 3.53 20201019
- 3.54 20201016
- 3.55 20201012
- 3.56 20201009
- 3.57 20201005
- 3.58 20201002
- 3.59 20200928
- 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ç
Carpetes compartides 1r d'ASIX. Curs 2020-2021
Algunes classes[modifica]
20210528 Avaluació ordinària del M03UF3[modifica]
Examen d'avaluació ordinària de M03UF3
20210517[modifica]
20210514[modifica]
20210510[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
20210507[modifica]
20210503[modifica]
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.
20210430 Comença M03UF3 (2h presencial)[modifica]
Comentem l'examen del darrer dia.
Comencem M03UF3.
20210426 Examen M03UF2 (2h presencial)[modifica]
Examen d'avaluació ordinària del M03UF2
20210423 (2h presencial)[modifica]
Avui intentarem resoldre l'examen del M03UF2 del curs 2017-2018 fent servir vector de números, fent-ho en Python.
Al final de la classe intentem fer l'examen del M03UF2 del curs 2017-2018 fent servir cadena de caràcters, fent-ho en Python.
20210419 (2h presencial)[modifica]
20210416 (2h presencial)[modifica]
Examen del M03UF2 del curs 2017-2018 fent servir vector de números
Examen del M03UF2 del curs 2017-2018 fent servir cadena de caràcters
Al codi rps01.c li cal afegir sota l'include:
#include <stdlib.h> #include <time.h>
20210412 (2h síncrona)[modifica]
20210326 (2h presencial)[modifica]
Seguim amb els robots.
20210322 (2h síncrona)[modifica]
20210319 (2h síncrona)[modifica]
20210318 (1h presencial)[modifica]
Seguim amb els robots.
Exemple d'ús de l'estat de cerca
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; }
20210315 (2h presencial)[modifica]
Seguim amb els robots.
20210312 (2h presencial)[modifica]
Seguim amb els robots.
20210308 (2h presencial)[modifica]
Seguim amb els robots.
20210305 (2h síncrona)[modifica]
Repàs de l'examen.
Proposta de solució feta a classe
20210304 Examen M03UF1 (2h presencial)[modifica]
20210301 (2h presencial)[modifica]
Seguim amb els robots.
Repassem la introducció a l'ús d'estats al robot
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)
20210226 (2h síncrona)[modifica]
Seguim amb els robots.
Introducció a l'ús d'estats al robot
20210222 (2h síncrona)[modifica]
Alguns codis comentats avui a classe
20210219 (2h síncrona)[modifica]
Alguns codis comentats avui a classe
Anem fent aquest examen de fa dos anys
20210216 (1h presencial)[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
Depuració[modifica]
20210212 (2h presencial)[modifica]
- Acabeu l'aproximació del robot
- Feu que el robot segueixi la vora dels tatamis (la línia negra). Us ha de funcionar en qualsevol direcció (cap a l'esquerra o cap a la dreta).
Proposta de control dels motors per infraroigs:
Al final de l'exemple irRobCtl:
vMotion( (bBL)?127:0 , (bBR)?127:0 );
- Feu que, des de qualsevol posició del robot, cerqui una capsa i la faci fora del tatami. El robot no en pot sortir del tatami i haurà d'insistir en empènyer la capsa fora del tatami.
20210208 (2h síncrona)[modifica]
Porteu traduït a Python l'arxiu m05e7_04.c, vist el darrer dia. Com a pista, teniu implementat m05e7_03.py a partir de m05e7_03.c
Seguim per la 2a part del darrer dia. Ens vam quedar explicant m6e03_07.c.
Exercicis[modifica]
- Desenvolupeu m6e03_09.c, a partir de m6e03_08.c, que permeti analitzar si una cadena és palíndroma malgrat tingui majúscules.
Ara tururut és un palíndrom, però tuRurut no és un palíndrom. I sí que ho és. Arrangem-ho.
- Desenvolupeu m6e03_10.c, a partir de m6e03_09.c, que permeti analitzar si una cadena és palíndroma malgrat tingui espais.
Ara tururut és un palíndrom, però tu Ru rut no és un palíndrom. I sí que ho és. Arrangem-ho.
Pista: Feu servir una funció de concatenació per a eliminar els espais. (tu Ru rut -> tururut)
20210205 (2h síncrona)[modifica]
Repàs de l'exercici del darrer dia[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))
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.
20210201 (2h presencial) Robot[modifica]
Seguim amb el robot.
20210129 (2h presencial) Robot[modifica]
Biblioteques per al robot versió 5
20210125 (2h síncrona)[modifica]
Heu d'haver fet, per avui, l'exercici 7. Valor màxim d'un vector
20210122 (2h síncrona)[modifica]
Explicació de la funció d'intercanvi (swap)
Exercici[modifica]
20210118 (2h presencial)[modifica]
Exemple a TinkerCad amb 4 leds i 2 botons
Seguim amb Arduino
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part
20210113 (1h síncrona)[modifica]
La recursivitat[modifica]
Exemples de recursivitat[modifica]
- Les torres de Hanoi:
Explicació de Les torres de Hanoi
Vídeo: Entendiendo la recursividad con las Torres de Hanoi
Exercicis de recursivitat[modifica]
Implementeu l'exemple de la successió de Fibonacci traduint el codi fet en Python a C.
A partir del codi Les torres de Hanoi, feu un comptador de moviments de les torres de Hanoi. Excepcionalment podeu emprar variables globals.
20210111 (2h presencial)[modifica]
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part
Alguns codis fets avui. Gentilesa dels senyors Caballero, Delgado i Areste.
20201221 (2h presencial)[modifica]
Alguns codis d'avui. Flanc implementat en Snap4Arduino
Seguim amb Arduino
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part
20201214 (2h presencial)[modifica]
20201202 (1h, síncrona)[modifica]
20201130 (2h, presencial)[modifica]
Heu de dur fet m4e05_03.py implementat en C
Porteu fet, en C i en Python, l'exercici 11 del mòdul 4 del d97
Exercici de la travessa (quiniela).
20201125 (1h, síncrona)[modifica]
Porteu pensat de cas l'exercici 5
20201123 (2h, presencial)[modifica]
Proveu de dur fet aquest exercici en C i en Python: Exercici 3. Endevina el número
El primer que farem serà comentar la vostra solució.
20201118 (síncrona)[modifica]
Recursivitat i pseudoaleatorietat[modifica]
Resum teòric de recursivitat i pseudoaleatorietat en C
Deixem un exercici per al proper dilluns, 23 de novembre de 2020.
20201116 (presencial)[modifica]
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.
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
20201113 (asíncrona)[modifica]
Com cada divendres, el nostre correu estarà obert per a resoldre dubtes. Sempre i quan es puguin contestar dins de la franja horària (1/4 de 7 a 1/4 menys 5 de 8).
Si rebem alguna consulta, obrirem el canal habitual de teleconferència. En cap cas es passarà llista.
Suggeriment d'exercici per a tenir dubtes: Exercici 3 del mòdul 3 del d97
20201111 (síncrona)[modifica]
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
20201109 (presencial)[modifica]
Concepte de funció.
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.
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.
20201106[modifica]
1a part[modifica]
Aquest és l'algorisme mostrat 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).
2a part[modifica]
Exercicis d'estructures de control repetitives en Python
3a part[modifica]
Exercici 8. Algorisme 3n+1
4a part[modifica]
Concepte de funció.
20201102[modifica]
Exercicis d'estructures de control repetitives en Python
20201030[modifica]
Exercicis d'estructures de control repetitives en Python
20201026[modifica]
20201023[modifica]
Exercicis de condicions en Python
1r exercici. Equació de 2n grau
20201019[modifica]
Exercicis de condicions en Python
20201016[modifica]
Exercicis de condicions en Python
nNum = int(input("Número: ")) print("%d / 2 = %.2f" % (nNum, nNum / 2)) # Divisió amb decimals print("%d // 2 = %d" % (nNum, nNum // 2)) # Divisió sense decimals print("%d %% 2 = %d (si dóna 1, %d és senar. Si dóna 0, %d és parell)" % (nNum, nNum % 2, nNum, nNum)) # residu de la divisió per 2
20201012[modifica]
Feina a fer:
Desenvolupeu en Python, m1p06.py, l'equivalent a m1p06.c
20201009[modifica]
Repàs del Tercer dia de classe - M03 PRG 2020-2021
Tipus de dades fonamentals: Variables
20201005[modifica]
Tercer dia de classe - M03 PRG 2020-2021
20201002[modifica]
Segon dia de classe - M03 PRG 2020-2021
20200928[modifica]
Teleconferència 20200928[modifica]
Adreça de la teleconferència (És la del primer dia. Queda obsoleta)