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

De binefa.com
Salta a la navegació Salta a la cerca
Línia 15: Línia 15:
 
[https://binefa.cat/asix2021/m03/20210503/ Alguns codis comentats avui]
 
[https://binefa.cat/asix2021/m03/20210503/ Alguns codis comentats avui]
  
=== Exeercici ===
+
=== 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'''.
 
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'''.
  

Revisió del 16:48, 3 maig 2021

Contingut

Horari a partir del 18 de gener

1r d'ASIX

Teleconferència del curs 2020-2021

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

20210503

Alguns codis comentats avui

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.

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.

Alguns codis comentats avui

20210426 Examen M03UF2 (2h presencial)

Examen d'avaluació ordinària del M03UF2

20210423 (2h presencial)

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)

Examen extraordinària de 2016

Alguns codis comentats avui

20210416 (2h presencial)

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)

Alguns codis comentats avui

20210326 (2h presencial)

Seguim amb els robots.

20210322 (2h síncrona)

Alguns codis comentats avui

20210319 (2h síncrona)

Alguns codis comentats avui

20210318 (1h presencial)

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)

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.

Proposta de solució feta a classe

20210304 Examen M03UF1 (2h presencial)

Examen M03UF1 d'ordinària

20210301 (2h presencial)

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)

Seguim amb els robots.

Introducció a l'ús d'estats al robot

20210222 (2h síncrona)

Alguns codis comentats avui a classe

20210219 (2h síncrona)

Alguns codis comentats avui a classe

La depuració

Anem fent aquest examen de fa dos anys

20210216 (1h presencial)

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ó

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.

Alguns codis comentats avui

Exercicis

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

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

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

Seguim amb el robot.

Alguns codis comentats avui

20210129 (2h presencial) Robot

Biblioteques per al robot versió 5

20210125 (2h síncrona)

Heu d'haver fet, per avui, l'exercici 7. Valor màxim d'un vector

Alguns codis fets avui

20210122 (2h síncrona)

Alguns codis comentats avui

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

Teoria d'apuntadors

Exercici

Rotació de tres variables

20210118 (2h presencial)

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)

Codis fets el dia d'avui

La recursivitat

La recursivitat

Exemples de recursivitat

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

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)

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part

Alguns codis fets avui. Gentilesa dels senyors Caballero, Delgado i Areste.

20201221 (2h presencial)

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)

Codis d'avui

20201130 (2h, presencial)

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)

Porteu pensat de cas l'exercici 5

Codis del dia d'avui

20201123 (2h, presencial)

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)

Alguns codis fets avui

Recursivitat i pseudoaleatorietat

Resum teòric de recursivitat i pseudoaleatorietat en C

Deixem un exercici per al proper dilluns, 23 de novembre de 2020.

20201116 (presencial)

Alguns codis fets avui

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.

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

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

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)

Alguns codis fets avui

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

20201109 (presencial)

Concepte de funció.

Exercici 3

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.

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.

20201106

Alguns codis fets avui

1a part

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

Exercicis d'estructures de control repetitives en Python

3a part

Exercici 8. Algorisme 3n+1

4a part

Concepte de funció.

Exercicis 2 i 3

20201102

Exercicis d'estructures de control repetitives en Python

Alguns codis fets avui

20201030

Exercicis d'estructures de control repetitives en Python

Alguns codis fets avui

20201026

Codis del dia d'avui

Bucles amb Python

20201023

Condicionals amb Python

Exercicis de condicions en Python

Bucles amb Python

1r exercici. Equació de 2n grau

Codis del dia d'avui


20201019

Condicionals amb Python

Exercicis de condicions en Python

Codis del dia d'avui

20201016

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

Feina a fer:

Desenvolupeu en Python, m1p06.py, l'equivalent a m1p06.c

20201009

Repàs del Tercer dia de classe - M03 PRG 2020-2021

Tipus de dades fonamentals: Variables

Codis del dia d'avui

20201005

Tercer dia de classe - M03 PRG 2020-2021

Codis del dia d'avui

20201002

Segon dia de classe - M03 PRG 2020-2021

20200928

Teleconferència 20200928

Adreça de la teleconferència (És la del primer dia. Queda obsoleta)

Codis explicats a classe

Codis explicats a classe

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 1r d'ASIX