DAW 2022-2023

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

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

Carpetes compartides del M03 de 1r de DAW. Curs 2022-2023

Estructura de les carpetes:

M01 (depenent del subgrup)
M03
  examens
  exercicis
    C
    Python
  perDies
M14
  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

Llista de 1r de DAW

Teleconferència

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

20221201 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20221125 (2h) eac03

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Al recull d'avui hi ha els codis apuntadors03.c, apuntadors04.c, apuntadors05.c, apuntadors06.c i apuntadors06.py (implementació en Python per a fer el mateix que el codi fet en C).

  • eac03

Hi ha un empresari que té un negoci amb diversos responsables.

A final de mes (es considera que cada mes són cinc setmanes), el responsable del negoci, que posarà el seu nom al document, introdueix mitjançant una aplicació el que ha facturat la primera setmana, la segona setmana, la tercera setmana, la quarta setmana i la cinquena setmana.

L'empresari mitjançant un missatge, pot veure el nom del responsable i la facturació del negoci a final de mes setmana a setmana i el total dels diners recaptats al seu compte bancari.

Feu servir un FOR. Implementeu-ho en C i en Python. Feu captures del programa funcionant.

20221124 (1h) Pas per valor i pas per referència

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

  • Funció d'intercanvi (swap) en Python
  • Com passar vectors i llistes a funcions

20221122 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

#include <stdio.h>

int main(){
   char szNom[] = "Nom Cognom1 Cognom2",szMinuscules[99],szMajuscules[99];
   int i;
   
   for(i = 0; szNom[i];i++){
       if((szNom[i] >= 'A') && (szNom[i] <= 'Z')){
           szMinuscules[i] = szNom[i] - 'A' + 'a';
       }else{
           szMinuscules[i] = szNom[i];
       }
   }
   szMinuscules[i] = szNom[i]; // El darrer caràcter. Allà a on hi ha el '\0'
   printf("En minúscules: \"%s\"\n",szMinuscules);
   
   for(i = 0; szNom[i];i++){
       if((szNom[i] >= 'a') && (szNom[i] <= 'z')){
           szMajuscules[i] = szNom[i] - 'a' + 'A';
       }else{
           szMajuscules[i] = szNom[i];
       }
   }
   szMajuscules[i] = szNom[i]; // El darrer caràcter. Allà a on hi ha el '\0'
   printf("En majúscules: \"%s\"\n",szMajuscules);
   
   return 0;
}

20221118 (2h) eac02

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Recursivitat al d97

eac02

Hi ha un empresari que té quatre negocis, una sabateria, un taller de pneumàtics, un supermercat i una gestoria. A final de mes, el responsable de cada negoci, quan li pregunten a través d'una aplicació contesta els diners facturats. L'empresari mitjançant un missatge relacionant cada negoci, pot veure el facturat a cada negoci i el total dels diners recaptats al seu compte bancari.

Feu servir un for. Versió eac02.py i eac02.c

20221117 (2h) Recursivitat

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Recursivitat al d97

20221115 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Convertiu suma9i10.py a suma9i10.c

20221114 (1h) Suplència

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20221111 (2h) Vectors (arrays unidimensionals) a C i llistes a Python

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

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

20221110 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20221108 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223 Heu de dur fet de casa el codi aleatori01.py basat en aleatori01.c

20221107 (1h) Suplència

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20221104 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Exercicis d'estructures de control repetitives en Python

// time00.c
// Unix Epoch
#include <stdio.h>
#include <time.h>

int main(){
   printf("%lu\n",time(NULL)); 
   // Mostra el número de segons que han passat des del primer de gener de 1970

   return 0;
}

20221103 (1h)

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

Exercicis d'estructures de control repetitives en Python

20221028 (2h)

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

Exercicis d'estructures de control repetitives en Python

eac01

Realitza un programa (fes servir un for en C) que digui:

Hola com et dius?

A quin curs pertanys?

Digues-me les 5 notes que has obtingut de programació:

Calcula la seva mitjana aritmètica de les notes i contesta:

Hola, Nom de DAW1 la teva nota mitjana de programació és XX.XX (dos decimals).

20221027 (1h) break, continue, do-while i switch-case

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

Exercicis d'estructures de control repetitives en Python

#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;
}

20221025 (2h)

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

Exercici del continue en Python

20221021 (2h)

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

Més exercicis bàsics (m2e*)

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

Exercicis d'estructures de control repetitives en Python

Més exercicis bàsics (m3e*)

20221020 (1h)

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

Més exercicis bàsics (m2e*)

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

Exercicis d'estructures de control repetitives en Python

Més exercicis bàsics (m3e*)

20221018 (2h)

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

Introducció a les funcions en Python i en C.

Més exercicis bàsics (m2e*)

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

Exercicis d'estructures de control repetitives en Python

Més exercicis bàsics (m3e*)

20221014 (2h) Funcions

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Introducció a les funcions en Python i en C.

Més exercicis bàsics (m2e*)

A segona hora feu l'examen d'avaluació inicial.

  • Primer enunciat:

Partint de la pràctica del tutorial D97 anjuta m1p02.c, demaneu, a més: Quin cotxe teniu? i Quina matrícula?

  • Segon enunciat:

Partint de la pràctica del tutorial D97 anjuta m1p05, implementeu la conversió de graus Kelvin a Fahrenheit.

  • Tercer enunciat:

Feu un programa que llegeixi un codi d'accés i ho compari amb el codi 3421 que tindreu emmagatzemat al programa, després de la comparació heu de dir si és correcte o no.

20221013 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Més exercicis bàsics (m2e*)

20221011 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Més exercicis bàsics (m2e*)

20221007 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20221006 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Condicionals en Python

Condicionals en C

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: daw / contrasenya: daw2223

a = 30
if not (a == 30) : # if a != 30 :
   print("Línia 3")
else:
   print("Línia 5")
#include <stdio.h>

int main(){
   int a = 30;
   
   if(!(a == 30)){  // if(a != 30){
       printf("Línia 7\n");
   }else{
       printf("Línia 9\n");
   }

   return 0;
}
#include <stdio.h>

int main(){
   int nEdat;
   
   printf("Edat (pots passar en edat laboral): ");
   scanf("%d",&nEdat);
   if( (nEdat >= 16) && (nEdat <= 65) ){
       printf("Pots passar\n");
   }else{
       printf("No pots passar\n");
   }

   return 0;
}
nEdat = int(input("Edat (pots passar en edat laboral): "))
if nEdat >= 16 and nEdat <= 65:
   print("Pots passar")
else:
   print("No pots passar")
# Lleis de Morgan
# not ( a and b ) = not a or not b
# not ( a or b )  = not a and not b

nEdat = int(input("Edat (pots passar en edat laboral): "))
if not (nEdat >= 16) or not(nEdat <= 65): # if not (nEdat >= 16 and nEdat <= 65):
   print("No pots passar")
else:
   print("Pots passar")

20220930 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20220929 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20220927 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Instal·lació del Jupyter Lab

Comparativa de programes bàsics en C i en python

Exercicis bàsics (m1e*) (excepte el 2)

Condicionals en Python

Condicionals en C

Exercicis emprant condicionals en C i Python

Més exercicis bàsics (m2e*)

20220923 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Repàs de tipus de variables

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;
}

20220922 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

Taula amb la mida d'alguns tipus de variable en C (Segona taula de colors)

#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: daw / contrasenya: daw2223

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;
}

20220916 (2h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

20220915 (1h)

Codis comentats avui a classe usuari: daw / contrasenya: daw2223

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: daw / contrasenya: daw2223

Instal·lador de C per a Windows

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 1r de DAW usuari: daw / contrasenya: daw2223

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