Diferència entre revisions de la pàgina «ASIX 2022-2023»

De binefa.com
Salta a la navegació Salta a la cerca
Línia 26: Línia 26:
  
 
[https://wokwi.com/projects/354037245005603841 Simulació dels 4 leds i 4 botons de la placa S4A]
 
[https://wokwi.com/projects/354037245005603841 Simulació dels 4 leds i 4 botons de la placa S4A]
 +
 +
[https://wokwi.com/projects/355572920722910209 Simulació dels 4 leds i 4 botons de la placa S4A, permetent prémer més d'un botó alhora]
  
 
[[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part]]
 
[[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part]]
Línia 31: Línia 33:
 
[[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part]]
 
[[Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part]]
 
<!-- https://docs.python.org/3/library/csv.html -->
 
<!-- https://docs.python.org/3/library/csv.html -->
 +
 
== 20230201 (3h) ==
 
== 20230201 (3h) ==
 
[https://recull.binefa.cat/files/20230131/ Codis comentats avui a classe] usuari: ''asix'' / contrasenya: ''asix2223''
 
[https://recull.binefa.cat/files/20230131/ Codis comentats avui a classe] usuari: ''asix'' / contrasenya: ''asix2223''

Revisió del 17:49, 2 feb 2023

Quan tingueu les credencials d'accés a la NET heu de compartir-nos (als dos professors) una carpeta amb aquest nom: 2223-ASIX-M03-1rCognom2nCognomNom (Per exemple, si el teu nom és Xavier López Pujol --> 2223-ASIX-M03-LopezPujolXavier). A aquest enllaç podreu veure si ja hi sou a la llista:

Carpetes compartides del M03 de 1r d'ASIX. Curs 2022-2023

Estructura de les carpetes:

M01 (depenent del subgrup)
M03
  examens
  exercicis
    C
    Python
  perDies
M16
  Arduino
  • Dins de la vostra carpeta compartida, deseu els codis generats a la subcarpeta M03/exercicis/C. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran alg04.c, alg06.c i alg07.c (si hi pugeu versions diferents, les podeu anomenar alg04_00.c, alg04_01.c, ...). També hi pujareu un arxiu en pdf, anomenat alg04_06_07_c.pdf amb les captures de codi més significatives (al principi, potser, serà tot el codi. Però quan els codis es facin més grans tan sols farà falta indicar la part més representativa) i les captures de llur execució. A classe comentem com fer-ho. També cal afegir l'enunciat i una captura del codi en Snap!
  • Dins de la vostra carpeta compartida, deseu els codis generats a la subcarpeta M03/exercicis/Python. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran alg04.py, alg06.py, alg07.py i alg08.py (si hi pugeu versions diferents, les podeu anomenar alg04_00.py, alg04_01.py, ...). També hi pujareu un arxiu en pdf, anomenat alg04_06_07_08_py.pdf amb les captures de codi més significatives (al principi, potser, serà tot el codi. Però quan els codis es facin més grans tan sols farà falta indicar la part més representativa) i les captures de llur execució. A classe comentem com fer-ho. També cal afegir l'enunciat i una captura del codi en Snap!

Algunes classes

Enllaços ràpids

Llista de 1r d'ASIX

Teleconferència provisional per a compartir pantalles a classe i per a confinats

Introducció a Arduino

Simulació dels 4 leds i 4 botons de la placa S4A

Simulació dels 4 leds i 4 botons de la placa S4A, permetent prémer més d'un botó alhora

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

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

20230201 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

  • Seguim fent les pràctiques d'Arduino / robot:
  • Seguim amb la resolució d'exàmens M03UF1 i M03UF2 de cursos passats.

Separació d'arxius en Python

crida01.py:

# crida01.py

def nLaTevaEdat():
   return int(input("La teva edat: "))

if __name__ == "__main__":
   print("Dius tenir %d anys"%nLaTevaEdat())

principal.py:

# principal.py
import crida01

nEdat = crida01.nLaTevaEdat()
print("Heu dit que teniu %d anys"%nEdat)

principal02.py:

# principal02.py
from crida01 import nLaTevaEdat

nEdat = nLaTevaEdat()
print("Heu dit que teniu %d anys"%nEdat)

principal03.py:

# principal03.py
from crida01 import nLaTevaEdat as nIntroEdat

nEdat = nIntroEdat()
print("Heu dit que teniu %d anys"%nEdat)

20230131 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

  • Seguim fent les pràctiques d'Arduino / robot:

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

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

20230125 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

EAC05

Feu un diagrama de flux, que controli l'activació i la desactivació del commutador 2 (polsador), que quan és activat (premut) encén el led 10 i quan és desactivat (no premut) l'apaga i encén el led 11. Eviteu els rebots, tal com es va explicar a classe.

Dit d'una altra manera, quan connecteu la placa a l'alimentació, el led 11 ha d'estar encès i la resta apagats, quan premeu el polsador 2 s'apaga led 11 i s'encén el led 10, que romandrà encès mentre es prem, en deixar-lo anar s'apaga el led 10 i s'encén el led 11.

Al recull del dia d'avui teniu el fitxer eac05_asix1_cognomNom.dia que pot ser editat mitjançant aquest editor de diagrames de flux en línia (heu de tenir el JavaScript activat).

Heu de trametre per correu electrònic la captura del diagrama de flux. Dins de la captura també ha d'aparèixer el vostre nom i cognoms. El nom de l'arxiu ha de ser eac05_asix1_cognomNom.png o eac05_asix1_cognomNom.jpg. També l'heu de desar a la carpeta compartida d'exàmens.

20230124 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

  • Seguim fent les pràctiques d'Arduino:

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

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

#include <stdio.h>

int main(){
   unsigned char ucA;
   
   ucA = 0xA5;
   printf("ucA: 0x%X\n",ucA);
   ucA = ~ucA; // el símbol de la ~ nega bit a bit
   printf("ucA: 0x%X\n",ucA);
   ucA = !ucA; // el símbol de l' ! nega tot el byte (diferent de zero és cert)
   printf("ucA: 0x%X\n",ucA);
   ucA = !ucA; // el símbol de l' ! nega tot el byte (diferent de zero és cert)
   printf("ucA: 0x%X\n",ucA);
   ucA = 0xA5;
   printf("0x%X & 0x0F: 0x%X\n",ucA,ucA & 0x0F );
   printf("0x%X & 0xF0: 0x%X\n",ucA,ucA & 0xF0 );
   printf("(0x%X & 0xF0) >> 4: 0x%X\n",ucA,(ucA & 0xF0)>>4 );
   printf("0x%X | 0x0F: 0x%X\n",ucA,ucA | 0x0F );
   printf("0x%X | 0xF0: 0x%X\n",ucA,ucA | 0xF0 );
   printf("(0x%X | 0xF0) >> 4: 0x%X\n",ucA,(ucA,ucA | 0xF0)>>4 );

   return 0;
}

20230118 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

  • 1a hora

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

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

  • 2a hora

Seguim amb la resolució dels exàmens M03UF1 i M03UF2 de l'any passat.

20230118 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

ord06b

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

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

20230111 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

  • 1a hora

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

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

  • 2a hora

Resolució examen M03UF1 de l'any passat

20230110 (2h)

Explicació de detecció per flanc i fer funcions delay() no blocants emprant millis()

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

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

20221221 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Resolució de dubtes.

20221214 (3h)

Pas per valor i pas per referència

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

20221207 (3h) eac04

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

yield a Python

  • eac04

Feu un programa utilitzant un switch-case, per al control d'un muntacàrregues, la presentació ha de ser idèntica a l'exemple:

exemple de l'eac04

El programa ha de funcionar constantment amb un do-while fins a prémer S.

Inspireu-vos en la pràctica m3p06.c del tutorial D97.

Placa S4A-PLB emprant Arduino Nano

Introducció a Arduino

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

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

20221123 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

20221122 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

eac03

Hi ha un empresari que té un negoci. A final de mes (es considera que cada mes són quatre setmanes), el responsable del negoci introdueix mitjançant una aplicació el que ha facturat la primera setmana, la segona setmana, la tercera setmana i la quarta setmana. L'empresari mitjançant un missatge, pot veure el facturat al negoci a final de mes setmana a setmana i el total dels diners recaptats al seu compte bancari.

Utilitza un FOR. Implementa-ho en Python i C.

20221116 (3h) Vectors (arrays) i llistes

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

  • Llistes de Python:

Estructures de dades en Python

Llistes de Python a Google for Education

Llistes de Python a programiz.com

# llesques01.py
llistaCaracters = ['T','o','n','i',' ','V','a','r','ó','n']
print(llistaCaracters)
print(llistaCaracters[1])
print(llistaCaracters.index('o'))
print(llistaCaracters[1:])
print(llistaCaracters[1:6])
print(llistaCaracters[1:-2])
cadena = "Toni Varón"
print(cadena)
print(cadena[1])
print(cadena.index('o'))
print(cadena[1:])
print(cadena[1:6])
print(cadena[1:-2])
cadena = "Dídac Garcia Dumé"
posA = cadena.index('a')
print(posA)
posB = cadena[posA+1:].index('a')
print(posA+posB+1)
posC = cadena[posB+1:].index('a')
print(posA+ posB+1 + posC+1)
  • Vectors en C:

Vectors (arrays) en C

Exercici a desenvolupar en Python i en C:

Feu un vector / llista de 1000 posicions. De la posició 0 a la 999 hi haurà la suma del valors de dos daus llençats a l'atzar. Heu de comptar el número de cops que la suma dóna 9 i el número de cops que la suma dóna 10. Després heu de dir el percentatge de cops que la suma és 9 i 10.

20221109 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis d'estructures de control repetitives en Python

20221108 (2h) Aleatorietat

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis d'estructures de control repetitives en Python

"""
aleatorietat00.py 
Cognom1 Cognom2, Nom 
20221108
"""
import random

for i in range(50):
   # print("%d "%(random.randrange(1,7)),end = "")
   print("%d"%(random.randint(1,6)),end = " ")
print()
import random

for i in range(50):
   print("%s"%(random.choice("1X2")),end=" ")
// time00.c
// Unix Epoch 

#include <stdio.h>
#include <time.h>

int main(){
   printf("Nombre de segons que han passat des del 1r de gener de 1970: %ld\n",time(NULL));
   
   return 0;
}

20221102 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis d'estructures de control repetitives en Python

eac01

Desenvolupeu un programa (feu servir un for en C) que digui:

Hola, a quin curs pertanys?:

Com et dius?:

Digues-me les 8 notes que has obtingut a programació:

Calculeu la mitjana aritmètica de les notes i contesteu:

Hola, Nom d' ASIX1 la vostra nota mitjana de programació és XX.XX (dos decimals).


Trameteu la prova al correu electrònic que es comunica a classe i pugeu-lo a la subcarpeta Exàmens de la carpeta compartida

20221026 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis d'estructures de control repetitives en Python

20221025 (2h) break, continue, do-while i switch-case

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

#include <stdio.h>

int main(){
   int n = 1;
   
   while(1){ // for(;;) <-- Bucles infinits
       printf("%d ",n);
       n += 1; // o n = n+1; o ++n; o n++;
       if(n > 37){
           break; // Es trenca el bucle infinit
       }
   }
   printf("\nAquí es trenca el bucle infinit");

   return 0;
}
#include <stdio.h>

int main(){
   int ct;
   
   for(ct=0;ct<19;ct++){
       if(ct%3){
           continue;
       } 
       printf("el número %d és múltiple de 3\n",ct);
   }

   return 0;
}

20221019 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

  • En Python:
print("Exemples amb for:")
for num in range(7):
   print("%d "% num, end = "")
print()
for num in range(23,30):
   print("%d "% num, end = "")
print()
for num in range(23,30,2):
   print("%d "% num, end = "")
print()
for num in range(3,-13,-2):
   print("%d "% num, end = "")
print("\nExemples amb while:")
n = 0
while n < 7:
   print("%d "% n, end = "")
   n = n + 1 # El mateix que n += 1
print()
n = 23
while n < 30:
   print("%d "% n, end = "")
   n = n + 1 # El mateix que n += 1
print()
n = 23
while n < 30:
   print("%d "% n, end = "")
   n += 2 # El mateix que n = n + 2
print()
n = 3
while n > -13:
   print("%d "% n, end = "")
   n -= 2 # El mateix que n = n - 2
  • En C:
#include <stdio.h>

int main(){
   int n;
   
   printf("Exemples amb for:\n");
   for(n = 0; n < 7; n = n + 1){ // n+=1 --> n++
       printf("%d ",n);
   }
   printf("\n");
   for(n = 23; n < 30; n++){ 
       printf("%d ",n);
   }
   printf("\n");    
   for(n = 23; n < 30; n+=2){ 
       printf("%d ",n);
   }
   printf("\n"); 
   for(n = 3; n > -13; n-=2){ 
       printf("%d ",n);
   }    
   printf("\n"); 
   printf("\nExemples amb while:\n");
   n = 0;
   while(n < 7){
       printf("%d ",n);
       n += 1;
   }
   printf("\n"); 

   return 0;
}

Exercicis d'estructures de control repetitives en Python

Més exercicis bàsics (m3e*)

20221018 (2h) Funcions

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Introducció a les funcions en Python i en C.

Més exercicis bàsics (m2e*)

20221011 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Més exercicis bàsics (m2e*)

  • Primer enunciat:

Partint de la pràctica del tutorial D97 anjuta m1p02.c, demana a més: De quina ciutat és vostè? i Quin és el vostre número de telèfon?

  • Segon enunciat:

Partint de la pràctica m1p05.c del tutorial D97 anjuta: Realitza la conversió de graus celsius a fahrenheit.

  • Tercer enunciat:

Feu un programa que llegeixi un codi d'accés i digui si és correcte o no.

20221005 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis emprant condicionals en C i Python

Més exercicis bàsics (m2e*)

Llei de Morgan

  • En Python:
not ( a and b ) = not a or not b
not ( a or b )  = not a and not b
  • En C:
!( a && b ) = !a || !b
!( a || b ) = !a && !b

20221004 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis emprant condicionals en C i Python

20220928 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Exercicis emprant condicionals en C i Python

20220927 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Instal·lació del Jupyter Lab

Repàs de tipus de variables

Comparativa de programes bàsics en C i en python

Exercicis (m1e*) (excepte el 2)

Condicionals en Python

Condicionals en C

Exercicis emprant condicionals en C i Python

Més exercicis bàsics (m2e*)

20220921 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Taula amb la mida d'alguns tipus de variable en C

Biblioteca matemàtica en C

gcc m1p06.c -o m1p06 -lm

Funció pow() en C

Funció pow() en Python

Exercicis (excepte el 2)

#include <stdio.h>

int main(){
   char cA = 'A', cB = 103 /* g */, cC = 0x6B /* k */;
   
   printf("%c %d 0x%X\n",cA,cA,cA);
   printf("%c %d 0x%X\n",cB,cB,cB);
   printf("%c %d 0x%X 0x%x\n",cC,cC,cC,cC);

   return 0;
}

20220920 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

szCognom = "Varón"
szNom = 'Toni'
szNomComplet = szNom + " " + szCognom
print("1) " + szNomComplet)
szNomTotal = "%d) %s %s"%(2,szNom,szCognom)
print(szNomTotal)
szNomTotal2 = "%d) %s %s"
print(szNomTotal2%(3,szNom,szCognom))
#include <stdio.h>

int main(){
   char szCognom[20] = "Varón",szNom[20] = "Toni";
   
   printf("%s %s\n",szNom,szCognom);
   printf("%d) %s %s\n",2,szNom,szCognom);

   return 0;
}
szNom = input("Com et dius?: ")
print('Hola, ' + szNom)
#include <stdio.h>

int main(){
   char szNom[20];
   
   printf("Nom: ");
   scanf("%s",&szNom[0]); // Que és el mateix que scanf("%s",szNom);
   printf("Hola, %s\n",szNom);

   return 0;
}

20220914 (3h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Compilador / intèrpret en línia onlinegdb.com

Snap!

Snap!

Python

Pràctiques d'introducció a Python

C

Fonaments de programació en C

20220913 (2h)

Codis comentats avui a classe usuari: asix / contrasenya: asix2223

Instal·lador de C per a Windows

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 1r d'ASIX usuari: asix / contrasenya: asix2223

Algorísmica

Exercicis bàsics de pesudocodi - Ex01

Python

Pràctiques d'introducció a Python

Condicionals en Python

Condicionals amb Python

Exercicis de condicions en Python

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

Exercicis d'estructures de control repetitives en Python

Instal·lació del Jupyter Lab

Prova de Jupyter via web externa

Instal·lació de Jupyter Lab a la màquina virtual GNU/Linux. Des del terminal:

$ su -
# apt update
# apt install python3-pip
# exit
$ pip --version
$ pip install jupyterlab
$ pip install jupyter-c-kernel

Sortiu de la sessió i torneu-hi a entrar. Seguiu amb aquestes ordres:

$ install_c_kernel --user
$ jupyter kernelspec list

Un cop instal·lat s'executa des del terminal:

$ jupyter-lab

I apareix el navegador web amb el Jupyter Lab.

C

Fonaments de programació en C

Eines en línia

Recull de codis fets a classe usuari / contrasenya : asix / asix2122

Disseny de diagrames de flux en línia

Snap! o Snap! personalitzat

Compilador / intèrpret en línia onlinegdb.com

Arduino Blocks

MinGW - Compilador de C per a Windows

Vídeo de particions en línia d'ordres