DAW 2020-2021

De binefa.com
Salta a la navegació Salta a la cerca

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

20210324 (1h síncrona)

Com depurar un programa en C

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