ASIX 2020-2021

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

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