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

De binefa.com
Salta a la navegació Salta a la cerca
 
(Hi ha 110 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_ASIX1.png|center|1r d'ASIX]]
 +
 
= 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) ==
 +
[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) ==
 +
[https://binefa.cat/asix2021/m03/20210122/ 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]
 +
 +
=== Exercici ===
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5ex.htm Rotació de tres variables]
 +
 +
== 20210118 (2h presencial) ==
 +
[https://binefa.cat/asix2021/m03/20210118/ Alguns codis comentats avui]
 +
 +
[https://www.tinkercad.com/things/3V5mjb4NOzk-copy-of-pr01/editel?sharecode=QdOUyuORN8nBhN0fnqz0DAdyU70mO_qQeIr2ExERI9g 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) ==
 +
[https://binefa.cat/asix2021/m03/20210113/ 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/d97m4p3.htm Fórmula de Wallis]
 +
 +
* Les '''torres de Hanoi''':
 +
[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]
 +
 +
==== Exercicis de recursivitat ====
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm Exercicis 1, 2 i 12]
 +
 +
Implementeu l'exemple de la successió de Fibonacci traduint el codi fet en Python a C.
 +
 +
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'''.
 +
 +
== 20210111 (2h presencial) ==
 +
[[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part]]
 +
 +
[https://binefa.cat/asix2021/m03/20210111/ Alguns codis fets avui]. Gentilesa dels senyors Caballero, Delgado i Areste.
 +
 +
== 20201221 (2h presencial) ==
 +
[https://binefa.cat/asix2021/m03/20201221/ 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) ==
 +
[[Introducció a Arduino]]
 +
 +
== 20201202 (1h, síncrona) ==
 +
[https://binefa.cat/asix2021/m03/20201202/ Codis d'avui]
 +
 +
== 20201130 (2h, presencial) ==
 +
Heu de dur fet [https://binefa.cat/asix2021/m03/20201125/m4e05_03.py.txt m4e05_03.py] implementat en C
 +
 +
Porteu fet, en C i en Python, l'[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm exercici 11 del mòdul 4 del d97]
 +
 +
Exercici de la travessa (''quiniela'').
 +
 +
[https://binefa.cat/asix2021/m03/20201130/ Codis del dia d'avui]
 +
 +
== 20201125 (1h, síncrona) ==
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm Porteu pensat de cas l'exercici 5]
 +
 +
[https://binefa.cat/asix2021/m03/20201125/ Codis del dia d'avui]
 +
 +
== 20201123 (2h, presencial) ==
 +
Proveu de dur fet aquest exercici en C i en Python: [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm Exercici 3. Endevina el número]
 +
 +
El primer que farem serà comentar la vostra solució.
 +
 +
[https://binefa.cat/asix2021/m03/20201123/ Alguns codis fets avui]
 +
 +
== 20201118 (síncrona) ==
 +
[https://binefa.cat/asix2021/m03/20201118/ Alguns codis fets avui]
 +
 +
=== Recursivitat i pseudoaleatorietat ===
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4te.htm Resum teòric de recursivitat i pseudoaleatorietat en C]
 +
 +
Deixem un exercici per al proper dilluns, 23 de novembre de 2020.
 +
 +
== 20201116 (presencial) ==
 +
[https://binefa.cat/asix2021/m03/20201116/ Alguns codis fets avui]
 +
 +
=== 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].
 +
 +
=== 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]
 +
 
== 20201113 (asíncrona) ==
 
== 20201113 (asíncrona) ==
 
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).
 
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.
 
Si rebem alguna consulta, obrirem el canal habitual de teleconferència. En cap cas es passarà llista.
 +
 +
Suggeriment d'exercici per a tenir dubtes: [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm Exercici 3 del mòdul 3 del d97]
  
 
== 20201111 (síncrona) ==
 
== 20201111 (síncrona) ==
Línia 135: 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

Horari a partir del 18 de gener[modifica]

1r d'ASIX

Teleconferència del curs 2020-2021[modifica]

Adreça de la teleconferència

Adreça de la teleconferència de la part de reforç

Llista 1r d'ASIX 2020-2021

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]

Alguns codis comentats avui

20210514[modifica]

Alguns codis comentats avui

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

Alguns codis comentats avui

20210507[modifica]

Alguns codis comentats avui

20210503[modifica]

Alguns codis comentats avui

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.

Alguns codis comentats avui

20210426 Examen M03UF2 (2h presencial)[modifica]

Examen d'avaluació ordinària del M03UF2

20210423 (2h presencial)[modifica]

Alguns codis comentats avui

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]

Examen extraordinària de 2016

Alguns codis comentats avui

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>


Alguns codis comentats avui

20210412 (2h síncrona)[modifica]

Alguns codis comentats avui

20210326 (2h presencial)[modifica]

Seguim amb els robots.

20210322 (2h síncrona)[modifica]

Alguns codis comentats avui

20210319 (2h síncrona)[modifica]

Alguns codis comentats avui

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]

Examen M03UF1 d'ordinària

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

La depuració

Anem fent aquest examen de fa dos anys

20210216 (1h presencial)[modifica]

Alguns codis comentats avui

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]

La depuració amb el gdb

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.

Alguns codis comentats avui

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]

Exercici 7 de mòdul 5

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[modifica]

Seguim amb el robot.

Alguns codis comentats avui

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

Alguns codis fets avui

20210122 (2h síncrona)[modifica]

Alguns codis comentats avui

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

Teoria d'apuntadors

Exercici[modifica]

Rotació de tres variables

20210118 (2h presencial)[modifica]

Alguns codis comentats avui

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]

Codis fets el dia d'avui

La recursivitat[modifica]

La recursivitat

Exemples de recursivitat[modifica]

La suma dels naturals

Fórmula de Wallis

  • Les torres de Hanoi:

Què són les torres de Hanoi?

Explicació de Les torres de Hanoi

Vídeo: Entendiendo la recursividad con las Torres de Hanoi

Exercicis de recursivitat[modifica]

Exercicis 1, 2 i 12

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]

Introducció a Arduino

20201202 (1h, síncrona)[modifica]

Codis d'avui

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

Codis del dia d'avui

20201125 (1h, síncrona)[modifica]

Porteu pensat de cas l'exercici 5

Codis del dia d'avui

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

Alguns codis fets avui

20201118 (síncrona)[modifica]

Alguns codis fets avui

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]

Alguns codis fets avui

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]

Alguns codis fets avui

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 3

Alguns codis fets avui

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]

Alguns codis fets avui

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

Exercicis 2 i 3

20201102[modifica]

Exercicis d'estructures de control repetitives en Python

Alguns codis fets avui

20201030[modifica]

Exercicis d'estructures de control repetitives en Python

Alguns codis fets avui

20201026[modifica]

Codis del dia d'avui

Bucles amb Python

20201023[modifica]

Condicionals amb Python

Exercicis de condicions en Python

Bucles amb Python

1r exercici. Equació de 2n grau

Codis del dia d'avui


20201019[modifica]

Condicionals amb Python

Exercicis de condicions en Python

Codis del dia d'avui

20201016[modifica]

Condicionals amb Python

Exercicis de condicions en Python

Codis del dia d'avui

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

Codis del dia d'avui

20201005[modifica]

Tercer dia de classe - M03 PRG 2020-2021

Codis del dia d'avui

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)

Codis explicats a classe[modifica]

Codis explicats a classe

Repositori de codis fet a classe durant el curs[modifica]

Codis fets a les classes de 1r d'ASIX