Diferència entre revisions de la pàgina «DAW 2021-2022»

De binefa.com
Salta a la navegació Salta a la cerca
Línia 165: Línia 165:
  
 
=== Exercicis d'estructures ===
 
=== Exercicis d'estructures ===
* Feu el programa '''protoAgenda00.c'''. Ha de demanar quants elements s'han d'assignar a una agenda (màxim de 100. Per tant, '''N_ELEMENTS''' valdrà 100). Ha de preguntar tres camps: ''nom'', ''edat'' i ''codi postal''. A l'acabar d'introduir tots els elements demanats els mostrarà per pantalla.
+
* Feu el programa '''protoAgenda00.c'''. Ha de demanar quants elements s'han d'assignar a una agenda (màxim de 100. Per tant, '''N_ELEMENTS''' valdrà 100). Ha de preguntar tres camps: ''nom'', ''edat'' i ''codi postal''. A l'acabar d'introduir tots els elements demanats els mostrarà per pantalla
  
 
== 20220401 '''Exàmens M03UF1 i M03Uf2''' ==
 
== 20220401 '''Exàmens M03UF1 i M03Uf2''' ==

Revisió del 15:44, 4 juny 2022

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

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

Estructura de les carpetes:

M01 (depenent del subgrup)
M03
  examens
  exercicis
    C
    Python
  perDies
M14
  Arduino
  Robot

Contingut

Algunes classes

Llista de 1r de DAW

Teleconferència

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

20220524 Examen M03UF3

Examen d'avaluació ordinària del M03UF3 en format pdf

Material per a l'examen d'avaluació ordinària del M03UF3

20220524

Darrer classe abans de l'examen

Recull d'avui

  • Dubtes

20220520

Recull d'avui

  • Dubtes

20220519

Recull d'avui

  • Dubtes

20220517

Recull d'avui

  • Dubtes

20220512

Recull d'avui

20220513

Recull d'avui

  • Dubtes

20220512

Recull d'avui

  • Dubtes

20220510

Recull d'avui

  • Dubtes

20220506

Recull d'avui

  • Dubtes

20220505

Recull d'avui

  • Dubtes
  • Diccionaris i llistes de diccionaris a Python
  • Lectura i escriptura d'arxius csv en Python
  • Exercici en C: Feu un programa que us demani nom, cognom i telèfon. També ha d'haver l'índex de l'ordre d'introducció de les dades. El nom de l'arxiu serà agenda.csv i respectarà el format dels arxius CSV. Quan s'executa haurà de llegir totes les dades dins d'agenda.csv i carregar-les a un vector d'estructures. Apareixerà un menú amb aquestes opcions: 1) Lectura de tota l'agenda, 2) Introducció de nou registre a RAM (introducció a estructura, però no a arxiu), 3) Escriptura a arxiu, 4) Modificació de registre per índex 5) Eliminació d'un registre per índex
  • Exercici en Python: Mateix enunciat que el fet prèviament en C. Feu ús de la gestió d'arxius csv en Python.

20220503

Recull d'avui

  • Dubtes
  • Anàlisi d'exFitxers03.c i exFitxers04.c del recull d'avui, desenvolupats el darrer dia.
  • Exercici en C: Feu un programa que us demani nom, cognom i telèfon. També ha d'haver l'índex de l'ordre d'introducció de les dades. El nom de l'arxiu serà agenda.csv i respectarà el format dels arxius CSV. Quan s'executa haurà de llegir totes les dades dins d'agenda.csv i carregar-les a un vector d'estructures. Apareixerà un menú amb aquestes opcions: 1) Lectura de tota l'agenda, 2) Introducció de nou registre a RAM (introducció a estructura, però no a arxiu), 3) Escriptura a arxiu, 4) Modificació de registre per índex 5) Eliminació d'un registre per índex

20220429

Recull d'avui

  • Dubtes
  • Exercici en C: Feu un programa que us demani nom, cognom i telèfon. També ha d'haver l'índex de l'ordre d'introducció de les dades. El nom de l'arxiu serà agenda.csv i respectarà el format dels arxius CSV.

20220428

Recull d'avui

  • Dubtes
  • Exercici en C: Feu un programa que us demani nom, cognom i telèfon. També ha d'haver l'índex de l'ordre d'introducció de les dades. El nom de l'arxiu serà agenda.csv i respectarà el format dels arxius CSV.

20220426

Recull d'avui

  • Dubtes
  • Escriptura d'arxius en Python

Diferència entre afegir i escriure arxius en Python

Un altre exemple d'escriptura d'arxius en Python

  • Exercici en C: Feu un programa que us demani nom, cognom i telèfon. També ha d'haver l'índex de l'ordre d'introducció de les dades. El nom de l'arxiu serà agenda.csv i respectarà el format dels arxius CSV.

20220421

Recull d'avui

  • Exercici del dia anterior:

A partir de m8p03.c, present al recull del dia anterior, desenvolupeu m8p03_b.c que fa servir una estructura per a contenir les dades (codi, nom, cognom i nota).

  • Dubtes
  • Diferència de tracatament de cadenes en C i en Python
  • Lectura d'arxius en Python

20220419

Recull d'avui

Exercici:

A partir de m8p03.c, present al recull d'avui, desenvolupeu m8p03_b.c que fa servir una estructura per a contenir les dades (codi, nom, cognom i nota).

20220408

Recull d'avui

Robot

Seguim amb les Pràctiques amb el robot versió 6

20220407

Recull d'avui

  • Dubtes pendents

20220405 - M03UF3

Recull del dia d'avui

  • Comentaris dels exàmens del M03UF1 i M03UF2

Exercicis d'estructures

  • Feu el programa protoAgenda00.c. Ha de demanar quants elements s'han d'assignar a una agenda (màxim de 100. Per tant, N_ELEMENTS valdrà 100). Ha de preguntar tres camps: nom, edat i codi postal. A l'acabar d'introduir tots els elements demanats els mostrarà per pantalla

20220401 Exàmens M03UF1 i M03Uf2

Examen M03UF1

Temps d'examen: entre 16.50 i 17.40 (entre 17.40 i 17.45 heu de trametre l'examen per correu. A les 17.45 no ha de quedar ningú a classe)

Feu captures de pantalla per a documentar l'examen. Heu de capturar els trossos clau i comentar-los. A l’acabar-ho, trameteu-ho als dos professors, adjuntant un arxiu en pdf demostrant els punts claus de les respostes i un arxiu .zip (o .tar.gz, No s’accepten .7z o .rar) amb els vostres codis i sense els arxius executables. El nom de l’arxiu pdf i de l’arxiu .zip ha de ser asix_Cognom1_Cognom2_Nom_m03uf1_ord per a ASIX i daw_Cognom1_Cognom2_Nom_m03uf1_ord per a DAW.

Examen d'ordinària del M03Uf1

Examen M03UF2

Temps d'examen: entre 18.15 i 19.05 (entre 19.05 i 19.10 heu de trametre l'examen per correu. A les 19.10 començarà la següent classe)

Feu captures de pantalla per a documentar l'examen. A l’acabar-ho, trameteu-ho al correu electrònic dels dos professors, adjuntant un arxiu en pdf demostrant els punts claus de les respostes i un arxiu .zip (o .tar.gz, No s’accepten .7z o .rar) amb els vostres codis i sense els arxius executables. Aquest examen té més de 10 punts (14 possibles), escolliu les preguntes que considereu més adients. El nom de l’arxiu pdf i de l’arxiu .zip ha de ser asix_Cognom1_Cognom2_Nom_m03uf2_ord per a ASIX i daw_Cognom1_Cognom2_Nom_m03uf2_ord per a DAW.

  • Depuració en C (2 punts)
  • Separació d'arxius (3 punts. 1,5 en C i 1,5 en Python)
  • Recursivitat (3 punts. 1,5 en C i 1,5 en Python)
  • Vectors, cadenes i llistes (6 punts. 3,5 en C i 2,5 en Python)

Examen d'ordinària del M03Uf2

20220331

Recull d'avui

  • Dubtes pendents

Arguments

  • En Python:
# arguments_00.py
import sys

nArg = len(sys.argv)
print("Heu escrit %d arguments"%nArg)
i = 0
for arg in sys.argv:
   print("argv[%d]: %s"%(i,arg))
   i += 1
  • En C:
// arguments_00.c
#include <stdio.h>

int main(int argc, char* argv[]){
   int i;

   printf("Heu escrit %d arguments.\n",argc);
   for(i = 0; i < argc; i++){
       printf("argv[%d]: %s\n",i,argv[i]);
   }

   return 0;
}

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220326

Recull d'avui

  • Dubtes pendents

20220325

Recull d'avui

Robot

Seguim amb les Pràctiques amb el robot versió 6

20220324

Recull d'avui

Paraula clau yield a Python. Funcions generadores

  • Primer exemple. A cada crida retorna un dels yield. Com a màxim es pot cridar tres cops a aquest exemple:
def generator():
   yield "Benvinguts"
   yield " a l'"
   yield "Escola del Clot"

gen_object = generator()
print(type(gen_object)) # type(): Indica el tipus d'objecte
for i in gen_object:
   print(i)
  • Segon exemple. Nombres senars amb yield
def filtra_senars(nombres):
   for numero in range(nombres):
       if numero%2:
           yield numero

numeros_senars = filtra_senars(25)
print(list(numeros_senars))
  • Tercer exemple. Ús de next
def filtra_senars(nombres):
   for numero in range(nombres):
       if numero%2:
           yield numero

numeros_senars = filtra_senars(8)
print(next(numeros_senars))
print(next(numeros_senars))
print(next(numeros_senars))
print(next(numeros_senars))
  • Quart exemple:
def alCub(num):
   return num*num*num

def obteCubs(ventall):
   for i in range(ventall):
       yield alCub(i)

objecteCubs = obteCubs(5)
print(list(objecteCubs))
  • Cinquè exemple:
def ventall_caracters(c1,c2):
   for c in range(ord(c1),ord(c2)+1):
       yield chr(c)

for c in ventall_caracters('c','g'):
   print(c)
  • Sisè exemple:
print(ord('L'))
print(chr(77))
x = 'A'
y = 97
print("%s és %d a la taula ASCII"%(x,ord(x)))
print("%s és %d a la taula ASCII"%(chr(y),y))
nom = ['J','o','a','n']
cognom = "Sanahuja"
print("Nom: ",end = "")
for n in nom:
   print("%s"%n,end=" ")
print()
print("Cognom: ",end = )
for c in cognom:
   print("%s"%c,end=' ')
print()

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220322

Recull d'avui

  • Dubtes pendents
  • Un cop s'ha entès la implementació, en C i en Python, del mètode d'ordenació per selecció, feu la implementació, en C i en Python, del mètode d'ordenació de la bombolla.

20220318

Recull d'avui

Robot

Seguim amb les Pràctiques amb el robot versió 6

20220317

Recull d'avui

  • Dubtes pendents
  • Un cop s'ha entès la implementació, en C i en Python, del mètode d'ordenació per selecció, feu la implementació, en C i en Python, del mètode d'ordenació de la bombolla.

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220315

Recull d'avui

  • Dubtes pendents

Mètodes d'ordenació

  • Alguns mètodes d'Ordenació. Entenem el mètode de la bombolla i el mètode de selecció (avui no analitzarem el mètode d'ordenació recursiva quicksort) i dissenyem una implementació alternativa en C i en Python.

20220311

Recull d'avui

Robot

Seguim amb les Pràctiques amb el robot versió 6

20220308

Recull d'avui

  • Dubtes del dia anterior.

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)

20220304

Recull d'avui

Robot

Seguim amb les Pràctiques amb el robot versió 6

20220303

Recull d'avui

  • Dubtes del dia anterior.
  • Seguim a resolent l'examen present al recull d'avui

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220301

Recull d'avui

20220224

Recull d'avui

20220222

Recull d'avui

20220218

Recull d'avui

Robot

Seguim amb les Pràctiques amb el robot versió 6

20220217

Recull d'avui

  • Dubtes
  • Seguim solucionant l'examen 20210426_exOrd_M03UF2

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220215

Recull d'avui

  • Dubtes
  • Comencem a solucionar l'examen 20210426_exOrd_M03UF2

20220211

Recull d'avui

Robot

Pràctiques amb el robot versió 6

20220210

Recull d'avui

Crides a sistema en Python

# cridaSistema00.py
import os
os.system ("clear")
print("Un cop esborrada la pantalla fem la crida al programa.")
os.system("./ra1-2")

Crides a sistema en C

// cridaSistema00.c
#include <stdio.h>
#include <stdlib.h> // Pel system()

int main(){
   system("clear");
   printf("Un cop esborrada la pantalla fem la crida al programa.\n");
   system("python3 ra2-1.py");

   return 0;
}

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220208

Acabem els exercicis de l'examen anterior (RA1-6-1, RA1-6-2 i RA-1-7 -aquest darrer no és ex09.c sinó ex11.c-).

Si hi ha prou temps començarem a resoldre un altre examen.

Recull d'avui

20220204

Recull d'avui

Robot

Deseu a la carpeta libraries que penja de la carpeta Arduino (a Linux la carpeta Arduino penja de /home/user i a Finestrots penja de la carpeta Els meus Documents) les biblioteques del robot: RobotController.zip i PCF8574.zip.

Pràctiques amb el robot versió 6

Prova del botó d'inici del robot

20220203

Seguim resolent l'examen penjat al recull d'avui

Placa S4A

Seguim fent les pràctiques d'Arduino:

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

Ajuda per la pràctica 6

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

20220201

Seguim resolent l'examen penjat al recull d'avui

20220128

Recull d'avui

20220127

Recull d'avui

Arduino

Introducció a Arduino

Pràctiques Arduino sobre placa S4A i Snap4Arduino - 1a part (Excepte les pràctiques 8, 10 i 12)

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

20220125

Recull d'avui

Repàs d'apuntadors.

Explicació de l'intercanvi de dos valors per referència

20220120 (Baixa professor)

Tasques a fer:

Al recull d'exàmens previs hi ha 20190411_daw_m03uf1_ord.pdf i 20190411_daw_m03uf2_ord.pdf (amb l'arxiu 20190411_daw_m03uf2_ord.zip amb material per a resoldre l'examen). Proveu de fer tots els exercicis que podeu resoldre, tenint en compte el que hem explicat a classe.

20220118 (Baixa professor)

Tasques a fer:

Exercici 1

Exercicis 9 i 1

Més informació:

Introducció als apuntadors (Teoria d'apuntadors)

20220113 (Baixa professor)

Us he penjat al recull de fa dos dies els darrers codis fets en C i el pdf amb els enunciats dels dígits de control.

Proveu d'implementar en Python, emprant llistes, els codis: codiBarres00.c, targetaCredit_02_05.c i cc_03.c

Com a exemple, us he resolt codiBarres00.py com a implementació en Python de codiBarres00.c. També, al recull del dia d'avui, us he passat un exemple de conversió de llista de caràcters a llista de nombres enters.

Pugeu els codis targetaCredit_02_05.py i cc_03.py a una subcarpeta anomenada llistes de la carpeta Python de la vostra carpeta compartida amb mi. Feu-me arribar un correu electrònic quan els hàgiu pujat.

20220111 (Baixa professor)

Us he penjat al recull d'avui els darrers codis fets en C i el pdf amb els enunciats dels dígits de control.

Proveu d'implementar en Python, emprant llistes, els codis: codiBarres00.c, targetaCredit_02_05.c i cc_03.c

Com a exemple, us he resolt codiBarres00.py com a implementació en Python de codiBarres00.c

20211221

Recull de codis comentats avui usuari: daw / contrasenya: daw2122

  • Dubtes pendents

20211217

Recull de codis comentats avui usuari: daw / contrasenya: daw2122

  • Dubtes pendents

Examen EAC06_nom_cognom_DAW1.c

Feu un programa, que us demani un número corresponent a un mes i us digui quin mes és.

Us ha de dir també quants dies té (el mes de febrer es considera de 28 dies).

Heu de filtrar que no sigui inferior a 1 ni superior a 12, cas en què contestarem "número de mes incorrecte" i ho haurà de tornar a preguntar.

Exemple:

Mes 1------> Correspon al mes de gener i té 31 dies.

20211216

Recull de codis comentats avui usuari: daw / contrasenya: daw2122

  • Dubtes pendents

Tornem a repassar llistes i tuples:

Teoria de llistes i tuples

Els codis tindran el nom llista14.py, llista17.py fins a arribar a llista26.py (si feu servir el Jupyter Lab escriviu, comentat a la primera línia, el nom del codi. També haureu d'afegir una exportació en html a la carpeta compartida). Feu un document llistaPython.pdf a on hi surtin els codis comentats i llurs execucions. Deseu-lo a una subcarpeta anomenada llistes dins de la subcarpeta Python a la carpeta compartida.

20211210

Recull de codis comentats avui usuari: daw / contrasenya: daw2122

  • Dubtes pendents
  • Seguim amb la implementació del dígit de verificació de les targetes de crèdit, fent servir vectors (arrays) d'enters, present a algorismes de dígits de control. Al recull del codi d'avui hi ha targetaCredit_01_00.c amb el codi comentat a les parts clau.
  • Feina pendent de pujar dels exercicis de M2 i M3 de la col·lecció d'exercicis del d97

De la classe de l'11 de novembre hi havia aquests enunciats:

Feu els exercicis 5 i 6 d'aquesta col·lecció d'exercicis (m2e5.png, m2e5.xml, m2e5.py, m2e5.c, m2e6.png, m2e6.xml, m2e6.py i m2e6.c)

Un cop acabat els anteriors farem els exercicis 1, 3 i 8 d'aquesta col·lecció d'exercicis (m3e1.png, m3e1.xml, m3e1.py, m3e1.c, m3e3.* i m3e8.* . Essent * .png, .xml, .py i .c)

- Dins de la vostra carpeta compartida, deseu els codis generats a la subcarpeta M03/exercicis/C/m2_m3. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran m2e5.c, m2e6.c, m3e1.c, m3e3.c i m3e8.c (si hi pugeu versions diferents, les podeu anomenar m2e5_00.c, m2e5_01.c, ...). També hi pujareu un arxiu en pdf, anomenat m2_m3_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ó. 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/m2_m3. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran m2e5.py, m2e6.py, m3e1.py, m3e3.py i m3e8.py (si hi pugeu versions diferents, les podeu anomenar m2e5_00.py, m2e5_01.py, ...). També hi pujareu un arxiu en pdf, anomenat m2_m3_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ó. Si feu servir el Jupyter Lab, no pujareu els arxius .py sinó l'arxiu .ipynb i l'exportació a html. També cal afegir l'enunciat i una captura del codi en Snap!

  • Feina pendent de pujar dels exercicis del M4 de la col·lecció d'exercicis del d97

De la classe del 23 de novembre hi havia aquest enunciats:

Seguint la manera de pujar els arxius al M2 i M3, fareu les supcarpetes M03/exercicis/C/m4 i M03/exercicis/Python/m4. Poseu-hi allà les vostres propostes de solució. A la part de C tindreu l'arxiu m4_c.pdf i a la de Python m4_py.pdf. A ambdós documents hi haurà les captures de codi més importants i les diverses execucions possibles que il·lustrin les diferents possibilitats dels programes que heu desenvolupat. A la part de C també hi haurà els codis amb extensió .c i a les de Python amb extensió .py si feu servir un editor com el VSCode o l'arxiu .ipynb i l'exportació a html en cas de fer servir Jupyter Lab. Cal afegir l'enunciat. En aquesta part no cal que feu servir Snap!.

Examen EAC05_nom_cognom_DAW1.c

Realitzeu un programa que demani una lletra minúscula de l'abecedari i la transformi a majúscula , una majúscula a minúscula, qualsevol caràcter que no sigui una lletra avisarem dient NO ÉS UNA LLETRA i vagi ensenyant les lletres següents una a una en línies diferents, a intervals d'un segon, fins a arribar a la 'Z' on el programa pararà.

Si la lletra és la 'a', ens mostrarà 'A',si la lletra és la 'A', ens mostrarà 'a' i totes les lletres línia a línia fins a la 'z' o la 'Z'.

Si la lletra és la 'z' o 'Z' la transformarà i pararà immediatament.

Verbigràcia:

Introdueix una lletra de l'abecedari: x

X

Y

Z

20211209

  • Dubtes pendents i repàs.

Codis comentats avui usuari: daw / contrasenya: daw2122

Python (llistes i tuples)

Teoria de llistes i tuples

Els codis tindran el nom llista14.py, llista17.py fins a arribar a llista26.py (si feu servir el Jupyter Lab escriviu, comentat a la primera línia, el nom del codi. També haureu d'afegir una exportació en html a la carpeta compartida). Feu un document llistaPython.pdf a on hi surtin els codis comentats i llurs execucions. Deseu-lo a una subcarpeta anomenada llistes dins de la subcarpeta Python a la carpeta compartida.

C (vectors)

20211203

  • Dubtes pendents i repàs.
  • Passar de majúscules a minúscules i a l'inrevès.

Codis comentats avui usuari: daw / contrasenya: daw2122

Examen EAC04_nom_cognom_DAW1.c

Realitzeu un programa que demani una lletra minúscula de l'abecedari i la transformi a majúscula, vagi ensenyant les lletres següents una a una en línies diferents, a intervals d'un segon, fins a arribar a la 'Z' on el programa pararà.

Si la lletra és la 'a', ens mostrarà 'A' i totes les lletres línia a línia fins a la 'Z'.

Si la lletra és la 'z' la transformarà a majúscula i pararà immediatament.

Verbigràcia:

Introdueix una lletra de l'abecedari: x

X

Y

Z

20211202

  • Dubtes pendents i repàs.
  • Concepte de vectors (array). Vector de nombres reals.
  • Exercici en C que pregunta el nombre de dies (màxim de 7) per a fer la mitjana de les temperatures del nombre de dies entrat (al recull hi ha els tres codis fet a classe).

Codis comentats avui usuari: daw / contrasenya: daw2122

20211130

  • Dubtes pendents i repàs.

Codis comentats avui usuari: daw / contrasenya: daw2122

20211126

Dubtes pendents.

La depuració

Codis comentats avui usuari: daw / contrasenya: daw2122

Examen EAC04_nom_cognom_DAW1.c

Feu un programa que faci la pregunta a sota indicada i tingui cinc possibles respostes i només una de correcta.

Quina és la velocitat de llum?, escriu una opció, de la 1 a la 5:

1-La velocitat de la llum és 300.000 quilòmetres/segon.
2-La velocitat de la llum és 343,2 metres/segons.
3-La velocitat de la llum és de 300.000 quilòmetres/hora.
4-Cap dels anteriors.
5-Totes les anteriors són correctes.

Quan contesteu una resposta incorrecta,hem de contestar------> T'has equivocat... i tornes a preguntar.

Si la persona s'ha equivocat més de tres cops,hem de contestar------> Hauries d'estudiar més... i acabem.

Si ens posa un número inferior a 1 o superior a 5,hem de contestar-----> Opció no disposada, tria de la 1 a la 5 i tornes a preguntar.

Recorda utilitzar while(1) o for(;;) i break per sortir.

EAC04_nom_cognom_DAW1.c

20211125

Codis comentats avui usuari: daw / contrasenya: daw2122

Aleatorietat a C

#include <stdlib.h>
#include <time.h>

void vLlavorAleatorietat(){
   srand( (unsigned)time( NULL ) );
}

int nNumAleat(int nMin,int nMax){
   return nMin+ rand()% ((nMax-nMin)+1);
}

20211123

Codis comentats avui usuari: daw / contrasenya: daw2122

20211119

Seguim fent els exercicis plantejats el dia anterior.

Codis comentats avui usuari: daw / contrasenya: daw2122

20211118

Seguim fent els exercicis plantejats el dia anterior.

Codis comentats avui usuari: daw / contrasenya: daw2122

20211116

Seguim fent els exercicis plantejats el dia anterior.

Codis comentats avui usuari: daw / contrasenya: daw2122

20211112

Seguim fent els exercicis plantejats el dia anterior.

Codis comentats avui usuari: daw / contrasenya: daw2122

Examen EAC03_nom_cognom_DAW1.c

Es tracta de fer un programa que calculi la mitjana aritmètica de 8 notes aconseguides en programació.

Demanarem primer el nom de l'alumne.

Segon preguntarem el curs que fa.

Tercer preguntarem les 8 notes obtingudes seguides d'un Enter.

Quart calcularem la mitjana aritmètica.

Cinquè i darrer contestarem:

Bé <nom de l'alumne> de <curs que fa> la teva mitja aritmètica de les teves 8 notes és:_______

Realitzarem la captura i suma de les notes mitjançant un For.

Deseu a la carpeta compartida l'arxiu EAC03_nom_cognom_DAW1.c i el document EAC03_nom_cognom_DAW1.pdf (canvieu nom pel vostre nom i cognom pel vostre cognom). Heu de trametre els dos arxius (.c i .pdf) a l'adreça carles(punt)olive(arrova)fje(punt)edu

20211111

Seguim fent els exercicis plantejats el dia anterior.

Codis comentats avui usuari: daw / contrasenya: daw2122

Un cop acabat els anteriors farem els exercicis 5 i 6 d'aquesta col·lecció d'exercicis (m2e5.png, m2e5.xml, m2e5.py, m2e5.c, m2e6.png, m2e6.xml, m2e6.py i m2e6.c)

Un cop acabat els anteriors farem els exercicis 1, 3 i 8 d'aquesta col·lecció d'exercicis (m3e1.png, m3e1.xml, m3e1.py, m3e1.c, m3e3.* i m3e8.* . Essent * .png, .xml, .py i .c)

20211109

Seguim fent eles exercicis plantejats el dia anterior.

Codis comentats avui usuari: daw / contrasenya: daw2122

20211105

Les funcions a Snap! es diuen blocs. Baixeu-vos els codis blocsSnap_01.xml i blocsSnap_02.xml del recull de codis comentats avui, i analitzem llurs blocs.

Codis comentats avui usuari: daw / contrasenya: daw2122

Seguim fent els exercicis del darrer dia:

Implementeu en Snap!, Python i C els exercicis 4, 6, 7 i 8 (no feu en C el 8) de la col·lecció d'exercicis bàsics de pesudocodi

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

Examen EAC02_nom_cognom_DAW1.c

Realitzeu un programa que segueixi la seqüència següent:

Introduïu un número que fa de codi d'accés: (Que serà 14822)

en cas d'encertar-lo demanarà:

Com et dius? Posarem el nom i contestarà:

Molt bé <el nom que hagis posat> , estàs autoritzat.

Després sortirà del programa.

Si en introduir el codi d'accés és erroni, contestarà: Prova-ho una altra vegada.

Després ho tornarà a preguntar, fent servir un bucle while, do-while o for, fins que s'encerti. Després posarem el nom i contestarà:

Per fi ho has aconseguit! Molt bé <el nom que hagis posat> , estàs autoritzat.

Després sortirà del programa.

Deseu a la carpeta compartida l'arxiu EAC02_nom_cognom_DAW1.c i el document EAC02_nom_cognom_DAW1.pdf (canvieu nom pel vostre nom i cognom pel vostre cognom). Heu de trametre els dos arxius (.c i .pdf) a l'adreça carles(punt)olive(arrova)fje(punt)edu

20211104

Codis comentats avui usuari: daw / contrasenya: daw2122

Estructures repetitives en Python

#ifdef, #ifndef, #else i #endif

Implementeu en Snap!, Python i C els exercicis 4, 6, 7 i 8 (no feu en C el 8) de la col·lecció d'exercicis bàsics de pesudocodi

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

Com esperar

Des del sistema operatiu:

En Linux:

sleep 5

essent 5 el nombre de segons que s'espera.

En Windows:

timeout 5

essent 5 el nombre de segons que s'espera.

Funcions d'espera de temps multiplataforma:

En C:

#include <stdio.h>

#define LINUX

#ifdef LINUX
   #include <unistd.h>
#else
   #include <Windows.h>
#endif

int main(){
   int nS;
   char szOrdre[99];
   
   printf("Nombre de segons a esperar: ");
   scanf("%d",&nS);
   sleep(nS); // A Linux són segons i a Windows són milisegons
   printf("S'ha acabat l'espera de %d segons\n",nS);

   return 0;
}

En Python:

import time # Per a fer servir sleep()

nS = int(input("Nombre de segons a esperar: "))
time.sleep(nS)
print("S'ha acabat l'espera de %d segons"%nS)

20211102

Estructures repetitives en Python

Funcions

20211029

Lleis de Morgan:

!(a&b) = !a | !b
!(a|b) = !a & !b

Codis comentats avui usuari: daw / contrasenya: daw2122

Examen EAC01_nom_cognom_DAW1.c

Realitzeu un programa que segueixi la seqüència següent:

Introduïu un número que fa de codi d'accés: (Que serà 12346)

en cas d'encertar-lo demanarà:

Com et dius? Posarem el nom i contestarà:

Molt bé <el nom que hagis posat> , estàs autoritzat.

Després sortirà del programa.

Si en introduir el codi d'accés és erroni, contestarà: Prova-ho una altra vegada.

Després sortirà del programa.

Deseu a la carpeta compartida l'arxiu EAC01_nom_cognom_DAW1.c i el document EAC01_nom_cognom_DAW1.pdf (canvieu nom pel vostre nom i cognom pel vostre cognom). Heu de trametre els dos arxius (.c i .pdf) a l'adreça carles(punt)olive(arrova)fje(punt)edu

20211028

Estructures repetitives en Python

Codis comentats avui usuari: daw / contrasenya: daw2122

C

switch i operador ternari.

Exercicis de condicionals en C. (comentem cond06.c)

cond01.c) Feu un programa que demani dos números, 'a' i 'b', i us digui si la seva suma és positiva, negativa o zero.

cond02.c) Escriviu un programa que llegeixi un número i us digui si és parell o senar.

cond03.c) Escriviu un programa que demani un nombre enter entre un i dotze i imprimeixi el nombre de dies que té el mes corresponent.

No hi ha cond04.c (El codi en C equivalent al de Python requereix d'uns coneixements que no s'han explicat encara)

cond05.c) Escriviu un programa que llegeixi un any i us digui si és de traspàs. (Considerarem any és de traspàs si és un número divisible per 4, però no si és divisible per 100, excepte que també sigui divisible per 400)

cond06.c) Feu un programa que llegeixi un caràcter pel teclat i comprovi si és una lletra majúscula.

  • 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 cond01.c, cond02.c, cond03.c, cond05.c i cond06.c (si hi pugeu versions diferents, les podeu anomenar cond02_00.c, cond02_01.c, ...). També hi pujareu un arxiu en pdf, anomenat condicionals_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.

Aleatorietat a Python

Números aleatoris en Python

import random
nN = random.randint(a, b)

Retorna un enter aleatori nN, tal que a <= nN <= b. Àlies de randrange(a, b+1).

20211026

Estructures repetitives en Python

Codis comentats avui usuari: daw / contrasenya: daw2122

20211022

Més exercicis de condicionals en C.

Estructures repetitives en Python

Estructures repetitives en C

Codis comentats avui usuari: daw / contrasenya: daw2122

20211021

Actualització de l'estructura de carpetes a la carpeta compartida.

Condicionals amb Python. Revisem el not (l'equivalent en C eś el signe d'admiració !).

C

cond01.c) Feu un programa que demani dos números, 'a' i 'b', i us digui si la seva suma és positiva, negativa o zero.

cond02.c) Escriviu un programa que llegeixi un número i us digui si és parell o senar.

cond03.c) Escriviu un programa que demani un nombre enter entre un i dotze i imprimeixi el nombre de dies que té el mes corresponent.

No hi ha cond04.c (El codi en C equivalent al de Python requereix d'uns coneixements que no s'han explicat encara)

cond05.c) Escriviu un programa que llegeixi un any i us digui si és de traspàs. (Considerarem any és de traspàs si és un número divisible per 4, però no si és divisible per 100, excepte que també sigui divisible per 400)

cond06.c) Feu un programa que llegeixi un caràcter pel teclat i comprovi si és una lletra majúscula.

  • 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 cond01.c, cond02.c, cond03.c, cond05.py i cond06.py (si hi pugeu versions diferents, les podeu anomenar cond02_00.c, cond02_01.c, ...). També hi pujareu un arxiu en pdf, anomenat condicionals_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.

Python

Condicionals amb Python

  • Exercicis de condicions en Python. Dins de la vostra carpeta compartida, feu la subcarpeta M03/exercicis/Python. Poseu-hi allà les vostres propostes de solució. Teniu dues opcions per a penjar el codi:
    • 1) Els noms dels arxius seran cond01.py, cond02.py, cond03.py, cond04.py, cond05.py i cond06.py (si hi pugeu versions diferents, les podeu anomenar cond04_00.py, cond04_01.py, ...). També hi pujareu un arxiu en pdf, anomenat condicionals_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.
    • 2) Pugeu els arxius condicionals_py.ipynb (arxiu del jupyter-lab) i condicionals_py.htm (arxiu exportat del jupyter-lab). També hi pujareu un arxiu en pdf, anomenat condicionals_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.


Codis comentats avui usuari: daw / contrasenya: daw2122

20211019

Codis fets avui usuari: daw / contrasenya: daw2122

Condicionals amb Python

Exercicis de condicions en Python

20211015

Operadors relacionals: m2p06.c

Comencem per la pràctica m2p05.c

Exercici 4 del mòdul 2 del d97

20211014

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

Per a fer una potència en C es fa servir la funció pow() (que li cal l'arxiu de capçalera math.h i, per tant, requereix afegir a la compilació el paràmetre -lm):

lfBase ^ lfExponent => pow(lfBase,lfExponent)

Per a fer una potència en Python es fa servir l'operador **:

lfBase ^ lfExponent => lfBase**lfExponent

En Python:

  • Exercicis 3, 4, 5, 6 i 7 dels exercicis de C del mòdul 1 del d97. Dins de la vostra carpeta compartida, feu la subcarpeta M03/exercicis/Python. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran m1e3.py, m1e4.py, m1e5.py, m1e6.py i m1e7.py (si hi pugeu versions diferents, les podeu anomenar m1e7_00.py, m1e7_01.py, ...). També hi pujareu un arxiu en pdf, anomenat m1e3_7_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.

En C:

Introducció a C - 2a part

20211008

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

Compilació amb l'arxiu de capçalera math.h:

gcc m1p06.c -o m1p06 -lm

Per a fer una potència en C es fa servir la funció pow():

lfBase ^ lfExponent => pow(lfBase,lfExponent)

En C:

  • Exercicis 3, 4, 5, 6 i 7 dels exercicis de C del mòdul 1 del d97. Dins de la vostra carpeta compartida, feu la subcarpeta M03/Exercicis/C. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran m1e3.c, m1e4.c, m1e5.c, m1e6.c i m1e7.c (si hi pugeu versions diferents, les podeu anomenar m1e7_00.c, m1e7_01.c, ...). També hi pujareu un arxiu en pdf, anomenat m1e3_7.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.

20211007

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

Python

Fem servir el Jupyter Lab des de la màquina virtual. Des del terminal:

jupyter-lab

Accés directe a 20211007_py.html i accés directe a 20211007_py_02.html

C

  • Exercicis 3, 4, 5, 6 i 7 dels exercicis de C del mòdul 1 del d97. Dins de la vostra carpeta compartida, feu la subcarpeta M03/Exercicis/C. Poseu-hi allà les vostres propostes de solució. Els noms dels arxius seran m1e3.c, m1e4.c, m1e5.c, m1e6.c i m1e7.c (si hi pugeu versions diferents, les podeu anomenar m1e7_00.c, m1e7_01.c, ...). També hi pujareu un arxiu en pdf, anomenat m1e3_7.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.

20211005

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.

Codis 00_py_intro:

00_py_intro.ipynb(Vista web)

Codis 00_C_intro:

00_C_intro.ipynb(Vista web)


Seguim amb la Introducció bàsica a Python

20211001

Teleconferència provisional pel dia 20211001

20210930

Teleconferència provisional pel dia 20210930

20210928

Teleconferència provisional pel dia 20210928

20210923

Adreça de la teleconferència per al dia d'avui

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

20210921

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

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 1r de DAW usuari: daw | contrasenya: daw2122

Pràctiques d'introducció a Python

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

C

Fonaments de programació en C

Eines en línia

Recull de codis fets a classe usuari / contrasenya : daw / daw2122

Disseny de diagrames de flux en línia

Snap! o Snap! personalitzat

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

Arduino Blocks