DAW 2021-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
- 1 Algunes classes
- 1.1 Teleconferència
- 1.2 20220607 Examen extraordinària
- 1.3 20220524 Examen M03UF3
- 1.4 20220524
- 1.5 20220520
- 1.6 20220519
- 1.7 20220517
- 1.8 20220512
- 1.9 20220513
- 1.10 20220512
- 1.11 20220510
- 1.12 20220506
- 1.13 20220505
- 1.14 20220503
- 1.15 20220429
- 1.16 20220428
- 1.17 20220426
- 1.18 20220421
- 1.19 20220419
- 1.20 20220408
- 1.21 20220407
- 1.22 20220405 - M03UF3
- 1.23 20220401 Exàmens M03UF1 i M03Uf2
- 1.24 20220331
- 1.25 20220326
- 1.26 20220325
- 1.27 20220324
- 1.28 20220322
- 1.29 20220318
- 1.30 20220317
- 1.31 20220315
- 1.32 20220311
- 1.33 20220308
- 1.34 20220304
- 1.35 20220303
- 1.36 20220301
- 1.37 20220224
- 1.38 20220222
- 1.39 20220218
- 1.40 20220217
- 1.41 20220215
- 1.42 20220211
- 1.43 20220210
- 1.44 20220208
- 1.45 20220204
- 1.46 20220203
- 1.47 20220201
- 1.48 20220128
- 1.49 20220127
- 1.50 20220125
- 1.51 20220120 (Baixa professor)
- 1.52 20220118 (Baixa professor)
- 1.53 20220113 (Baixa professor)
- 1.54 20220111 (Baixa professor)
- 1.55 20211221
- 1.56 20211217
- 1.57 20211216
- 1.58 20211210
- 1.59 20211209
- 1.60 20211203
- 1.61 20211202
- 1.62 20211130
- 1.63 20211126
- 1.64 20211125
- 1.65 20211123
- 1.66 20211119
- 1.67 20211118
- 1.68 20211116
- 1.69 20211112
- 1.70 20211111
- 1.71 20211109
- 1.72 20211105
- 1.73 20211104
- 1.74 20211102
- 1.75 20211029
- 1.76 20211028
- 1.77 20211026
- 1.78 20211022
- 1.79 20211021
- 1.80 20211019
- 1.81 20211015
- 1.82 20211014
- 1.83 20211008
- 1.84 20211007
- 1.85 20211005
- 1.86 20211001
- 1.87 20210930
- 1.88 20210928
- 1.89 20210923
- 1.90 20210921
- 2 Repositori de codis fet a classe durant el curs
- 3 Eines en línia
Algunes classes
Teleconferència
Teleconferència provisional per a compartir pantalles a classe i per a confinats
20220607 Examen extraordinària
Exàmens d'avaluació extraordinària del curs 2021-2022
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
- Dubtes
20220520
- Dubtes
20220519
- Dubtes
20220517
- Dubtes
20220512
20220513
- Dubtes
20220512
- Dubtes
20220510
- Dubtes
20220506
- Dubtes
20220505
- 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
- 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
- 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
- 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
- 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
- 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
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
Robot
Seguim amb les Pràctiques amb el robot versió 6
20220407
- Dubtes pendents
20220405 - M03UF3
- 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 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)
20220331
- 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
- Dubtes pendents
20220325
Robot
Seguim amb les Pràctiques amb el robot versió 6
20220324
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
- 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
Robot
Seguim amb les Pràctiques amb el robot versió 6
20220317
- 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
- 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.
- Per saber-ne més: Documentació extra sobre mètodes d'ordenació. Fet per en Josep Jorba Jorba de la UOC.
20220311
Robot
Seguim amb les Pràctiques amb el robot versió 6
20220308
- Dubtes del dia anterior.
- Seguim resolent l'examen present al recull 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
Robot
Seguim amb les Pràctiques amb el robot versió 6
20220303
- 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
20220224
20220222
20220218
Robot
Seguim amb les Pràctiques amb el robot versió 6
20220217
- 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
- Dubtes
- Comencem a solucionar l'examen 20210426_exOrd_M03UF2
20220211
Robot
Pràctiques amb el robot versió 6
20220210
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.
20220204
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)
Pràctiques Arduino sobre placa S4A i Snap4Arduino - 2a part
20220201
Seguim resolent l'examen penjat al recull d'avui
20220128
20220127
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
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:
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
- Fem la implementació del dígit de verificació d'un codi de barres present a algorismes de dígits de control
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:
- Feu els exercicis de les pàgines 14, 17, 19, 21, 22, 23 (consulteu com calcular el producte escalar), 24, 25 i 26 del document 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.
- Fem la implementació del dígit de verificació de les targetes de crèdit present a algorismes de dígits de control
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:
- m4e1.*, m4e2.*, m4e5.*, m4e6.*, m4e11.* i m4e12.* dels exercicis de recursivitat i aleatorietat (Essent *: .py , .c)
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)
- Feu els exercicis de les pàgines 14, 17, 19, 21, 22, 23 (consulteu com calcular el producte escalar), 24, 25 i 26 del document 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)
- Fem la implementació del dígit de verificació de les targetes de crèdit present a algorismes de dígits de control
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.
- m4e1.*, m4e2.*, m4e5.*, m4e6.*, m4e11.* i m4e12.* dels exercicis de recursivitat i aleatorietat (Essent * .png i .xml d'Snap! i .py i .c)
- 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.
- m4e1.*, m4e2.*, m4e5.*, m4e6.*, m4e11.* i m4e12.* dels exercicis de recursivitat i aleatorietat (Essent * .png i .xml d'Snap! i .py i .c)
Codis comentats avui usuari: daw / contrasenya: daw2122
20211126
Dubtes pendents.
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
- Dubtes del dia anterior i repàs de la recursivitat.
- m4e1.*, m4e2.*, m4e5.*, m4e6.*, m4e11.* i m4e12.* dels exercicis de recursivitat i aleatorietat (Essent * .png i .xml d'Snap! i .py i .c)
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
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
- 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
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:
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
- Implementació en C dels dos darrers exercicis d'aquest enllaç
- Implementació en C de l'exercici 5 de la col·lecció d'exercicis de pseudocodi
- 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:
Codis 00_C_intro:
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
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
Eines en línia
Recull de codis fets a classe usuari / contrasenya : daw / daw2122
Disseny de diagrames de flux en línia