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

De binefa.com
Salta a la navegació Salta a la cerca
 
(150 revisions intermèdies per 2 usuaris que no es mostren)
Línia 12: Línia 12:
 
   perDies
 
   perDies
 
  M16
 
  M16
 +
  Arduino
  
 
= Algunes classes =
 
= Algunes classes =
Línia 18: Línia 19:
 
== Teleconferència ==
 
== Teleconferència ==
 
[https://meet.google.com/xcy-pzph-huk Teleconferència provisional per a compartir pantalles a classe i per a confinats]
 
[https://meet.google.com/xcy-pzph-huk Teleconferència provisional per a compartir pantalles a classe i per a confinats]
 +
<!-- https://docs.python.org/3/library/csv.html -->
 +
 +
== 20220607 '''Examen extraordinària ==
 +
[[Exàmens d'avaluació extraordinària del curs 2021-2022]]
 +
 +
== 20220524 '''Examen M03UF3''' ==
 +
[http://formacio.things.cat/20220524_m03uf3/20220524exM03Uf3.pdf Examen d'avaluació ordinària del M03UF3 en format pdf]
 +
 +
[http://formacio.things.cat/20220524_m03uf3/20220524exM03Uf3_material.zip Material per a l'examen d'avaluació ordinària del M03UF3]
 +
 +
== 20220523 ==
 +
'''Darrer dia de classe abans de l'examen'''
 +
 +
[https://recull.binefa.cat/files/20220523/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Exàmens antics
 +
 +
== 20220518 ==
 +
[https://recull.binefa.cat/files/20220518/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Exàmens antics
 +
== 20220517 ==
 +
[https://recull.binefa.cat/files/20220517/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Exàmens antics
 +
 +
== 20220516 ==
 +
[https://recull.binefa.cat/files/20220516/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Exàmens antics
 +
 +
== 20220511 ==
 +
[https://recull.binefa.cat/files/20220511/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Exàmens antics
 +
== 20220510 ==
 +
[https://recull.binefa.cat/files/20220510/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Exàmens antics
 +
 +
== 20220509 ==
 +
[https://recull.binefa.cat/files/20220509/ 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. 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.
 +
 +
* Resolució d'exàmens antics
 +
== 20220504 ==
 +
[https://recull.binefa.cat/files/20220504/ 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. 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 ==
 +
[https://recull.binefa.cat/files/20220503/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* [http://ceipturodeguiera.xtec.cat/formacio/dvd2006/materials/td97/d97m7/d97m7te.htm Gestió dinàmica de la memòria: ''malloc()'' i ''calloc()'']
 +
 +
* 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.
 +
 +
== 20220502 ==
 +
[https://recull.binefa.cat/files/20220502/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Anàlisi d'''exFitxers03.c'' i ''exFitxers04.c'' del recull d'avui.
 +
 +
* 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
 +
 +
== 20220427 ==
 +
[https://recull.binefa.cat/files/20220427/ 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 ==
 +
[https://recull.binefa.cat/files/20220426/ 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.
 +
 +
== 20220425 ==
 +
[https://recull.binefa.cat/files/20220425/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Escriptura d'arxius en Python
 +
[https://www.w3schools.com/python/python_file_write.asp Diferència entre afegir i escriure arxius en Python]
 +
 +
[https://www.pythontutorial.net/python-basics/python-write-text-file/ 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.
 +
 +
== 20220420 ==
 +
[https://recull.binefa.cat/files/20220420/ Recull d'avui]
 +
 +
* Dubtes
 +
 +
* Diferència de tractament de cadenes en C i en Python
 +
 +
- [https://recull.binefa.cat/files/20220420/cadenes01.c cadenes01.c]
 +
 +
- [https://recull.binefa.cat/files/20220420/cadenes_c_py/cadenes.c cadenes.c] i [https://recull.binefa.cat/files/20220420/cadenes_c_py/cadenes.py cadenes.py]
 +
 +
* [https://recull.binefa.cat/files/20220420/m8p0x.zip Codis del d97 sobre lectura i escriptura d'arxius]
 +
 +
* Lectura d'arxius en Python
 +
 +
- [https://recull.binefa.cat/files/20220420/lecturaArxius.py lecturaArxius.py]
 +
 +
== 20220419 ==
 +
Darrer dia abans del concurs.
 +
 +
Ens centrem en el concurs de sumo.
 +
 +
[https://recull.binefa.cat/files/20220419/ Recull d'avui]
 +
 +
== 20220406 ==
 +
[https://recull.binefa.cat/files/20220406/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/ Estructures, unions i gestió dinàmica de la memòria]
 +
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/index.htm Fitxers]
 +
 +
== 20220405 ==
 +
[https://recull.binefa.cat/files/20220405/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
=== 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220404 - '''M03UF3''' ==
 +
[https://recull.binefa.cat/files/20220404/ Recull del dia d'avui]
 +
 +
* Comentaris dels exàmens del M03UF1 i M03UF2
 +
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7p9.htm Arguments de la funció ''main()'']
 +
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/ Estructures, unions i gestió dinàmica de la memòria]
 +
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/index.htm Fitxers]
 +
 +
== 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.
 +
 +
[https://recull.binefa.cat/files/20220401_exM03Uf1Uf2/20220401_m03uf1_ord/ 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)
 +
 +
[https://recull.binefa.cat/files/20220401_exM03Uf1Uf2/20220401_m03uf2_ord/ Examen d'ordinària del M03Uf2]
 +
 +
== 20220330 ==
 +
[https://recull.binefa.cat/files/20220330/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
== 20220329 ==
 +
[https://recull.binefa.cat/files/20220329/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
=== 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220328 ==
 +
[https://recull.binefa.cat/files/20220328/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
== 20220323 ==
 +
[https://recull.binefa.cat/files/20220323/ 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)
 +
 +
== 20220321 ==
 +
[https://recull.binefa.cat/files/20220321/ 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'''.
 +
 +
== 20220315 ==
 +
[https://recull.binefa.cat/files/20220315/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
=== 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220314 ==
 +
[https://recull.binefa.cat/files/20220314/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
=== '''Mètodes d'ordenació''' ===
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3a2.htm 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: [https://www.studocu.com/ca-es/document/universitat-oberta-de-catalunya/practicas-de-programacion/metodes-dordenacio-cat-tema-12/8211052 Documentació extra sobre mètodes d'ordenació. Fet per en Josep Jorba Jorba de la UOC].
 +
 +
== 20220308 ==
 +
[https://recull.binefa.cat/files/20220308/ 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220307 ==
 +
[https://recull.binefa.cat/files/20220307/ Recull d'avui]
 +
 +
* Dubtes del dia anterior.
 +
 +
* Seguim resolent l'examen present al [https://recull.binefa.cat/files/20220302/ 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)
 +
 +
== 20220302 ==
 +
<!-- [https://docs.google.com/forms/d/1X1GxP-HAQL83tr5wm0mF10lZLcQ4F6AEN097acfNhKY/edit?usp=sharing Examen Daniel Collados] -->
 +
[https://recull.binefa.cat/files/20220302/ Recull d'avui]
 +
 +
* Dubtes del dia anterior.
 +
 +
* Comencem a resoldre l'examen present al recull d'avui
 +
 +
== 20220301 ==
 +
[https://recull.binefa.cat/files/20220301/ 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220223 ==
 +
[https://recull.binefa.cat/files/20220223/ Recull d'avui]
 +
 +
== 20220222 ==
 +
[https://recull.binefa.cat/files/20220222/ 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220221 ==
 +
[https://recull.binefa.cat/files/20220221/ Recull d'avui]
 +
 +
* Seguim fent l'examen del darrer dia (present al recull d'avui).
 +
 +
* Fem la depuració del primer exercici de l'examen ''20210427_daw_m03uf2_ord.pdf''
 +
 +
== 20220216 ==
 +
[https://recull.binefa.cat/files/20220216/ Recull d'avui]
 +
 +
== 20220215 ==
 +
[https://recull.binefa.cat/files/20220215/ 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220214 ==
 +
[https://recull.binefa.cat/files/20220214/ Recull d'avui]
 +
 +
* Seguim fent l'examen ''20210304_m03uf1_ord'' del recull.
 +
 +
=== 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;
 +
}
 +
 +
== 20220209 ==
 +
[https://recull.binefa.cat/files/20220209/ Recull d'avui]
 +
 +
== 20220208 ==
 +
[https://recull.binefa.cat/files/20220208/ 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]]
 +
 +
=== Robot ===
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
== 20220207 ==
 +
[https://recull.binefa.cat/files/20220207/ Recull d'avui]
 +
 +
== 20220202 ==
 +
[https://recull.binefa.cat/files/20220202/ Recull d'avui]
 +
 +
== 20220201 ==
 +
[https://recull.binefa.cat/files/20220201/ 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]]
 +
 +
=== '''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 [https://recull.binefa.cat/files/arduino/robot/libraries/ biblioteques del robot]: '''RobotController.zip''' i '''PCF8574.zip'''.
 +
 +
[[Pràctiques amb el robot versió 6]]
 +
 +
[https://recull.binefa.cat/files/arduino/robot/codis/prova_boto.ino Prova del botó d'inici del robot]
 +
 +
==== '''Màquina d'estats'''. Possibles estats del robot ====
 +
Com canviar d'estat quan passen més de 5 segons:
 +
#include <RobotController.h>
 +
 +
#define STATE_STOP  0
 +
#define STATE_FAST_FORWARD 1
 +
#define STATE_FORWARD 2
 +
#define STATE_FAST_BACKWARDS 3
 +
#define STATE_BACKWARDS  4
 +
#define STATE_RIGHT 5
 +
#define STATE_LEFT 6
 +
#define STATE_BORDER 7
 +
#define STATE_SEARCH 8
 +
#define DIST_MAX 50
 +
 +
'''#define CINC_SEGONS 5000'''
 +
...
 +
int nPensaEstat(int nEstatActual, bool bL, bool bR) {
 +
  '''static unsigned long  ulStartMillis = millis();'''
 +
  bL = !bL;
 +
  bR = !bR;
 +
  switch (nEstatActual) {
 +
 +
    case STATE_STOP:
 +
      ...
 +
 +
    case STATE_FORWARD:
 +
      if ((bL || bR)) {
 +
        '''ulStartMillis = millis();'''
 +
        return STATE_BORDER;
 +
      }
 +
      '''if (millis() - ulStartMillis > CINC_SEGONS) {'''
 +
        '''ulStartMillis = millis();'''
 +
        '''return STATE_BUSCAR;''' // Canvi d'estat per passar-se de 5 segons al mateix estat
 +
      '''}'''
 +
      break;
 +
 +
    case STATE_BORDER:
 +
      ...
 +
 +
    case STATE_SEARCH:
 +
      ...
 +
 +
    case STATE_FAST_FORWARD:
 +
      ...
 +
  }
 +
  return nEstatActual;
 +
}
 +
 +
== 20220131 ==
 +
[https://recull.binefa.cat/files/20220131/ Recull d'avui] zp
 +
 +
== 20220126 ==
 +
[https://recull.binefa.cat/files/20220126/ Recull d'avui]
 +
 +
== 20220125 ==
 +
[https://recull.binefa.cat/files/20220125/ Recull d'avui]
 +
 +
* Dubtes pendents
 +
 +
=== '''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]]
 +
 +
== 20220124 ==
 +
[https://recull.binefa.cat/files/20220124/ Recull d'avui]
 +
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5p2.htm Explicació de l'intercanvi de dos valors '''per referència''']
 +
 +
== 20220119 (Baixa professor) ==
 +
Tasques a fer:
 +
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5ex.htm Exercici 1]
 +
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m6/d97m6ex.htm Exercicis 9 i 1]
 +
 +
Més informació:
 +
 +
Introducció als apuntadors ([http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5te.htm Teoria d'apuntadors])
 +
 +
== 20220117 ==
 +
[https://recull.binefa.cat/files/20220117/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
* Dubtes pendents
 +
 +
* Comentem el codi ''for_incr_00.c''
 +
 +
* Introducció als apuntadors ([http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5te.htm Teoria d'apuntadors])
 +
 +
== 20220112 (Baixa professor) ==
 +
Us he penjat al [https://recull.binefa.cat/files/20220110/ 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 [https://recull.binefa.cat/files/20220112/ 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.
 +
 +
== 20220110 (Baixa professor) ==
 +
Us he penjat al [https://recull.binefa.cat/files/20220110/ 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''
 +
 +
== 20211222 ==
 +
[https://recull.binefa.cat/files/20211222/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
* Dubtes pendents
 +
 +
* Acabem l'exercici que valida el número de targeta de crèdit
 +
 +
* Comentem com trobar els dos dígits de control d'un compte corrent
 +
 +
* Plantegem l'exercici que verifica un número llegit d'un codi de barres
 +
 +
* Comentem el codi ''for_incr_00.c''
 +
 +
* Introducció als apuntadors ([http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5te.htm Teoria d'apuntadors])
 +
 +
* [https://www.binefa.com/index.php/ASIX_2021-2022#Python_.28llistes_i_tuples.29 Exercicis pendents de llistes en Python]
 +
 +
== 20211213 ==
 +
[https://recull.binefa.cat/files/20211213/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
* Dubtes pendents
 +
 +
* Ús de la funció ''strlen()'' de l'arxiu de capçalera ''string.h'' . Analitzem l'arxiu ''usStrlen_00.c'' del recull d'avui.
 +
 +
* '''Feina pendent de pujar dels exercicis de M2 i M3''' de la col·lecció d'exercicis del [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/index.htm d97]
 +
 +
De la [https://www.binefa.com/index.php/ASIX_2021-2022#20211116 classe del 16 de novembre] hi havia aquests enunciats:
 +
 +
Feu els exercicis 5 i 6 d'aquesta [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m2/d97m2ex.htm 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 [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm 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 [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/index.htm d97]
 +
 +
De la [https://www.binefa.com/index.php/ASIX_2021-2022#20211123 classe del 23 de novembre] hi havia aquest enunciats:
 +
 +
* m4e1.*, m4e2.*, m4e5.*, m4e6.*, m4e11.* i m4e12.* dels [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm 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!'''.
 +
 +
=== Python (llistes i tuples) ===
 +
[https://www.cs.upc.edu/~robert/teaching/EEBE/sessions/sessio06/llistesT.pdf Teoria de llistes i tuples]
 +
 +
* Feu els exercicis de les pàgines 14, 17, 19, 21, 22, 23 (consulteu com calcular el [https://ca.wikipedia.org/wiki/Producte_escalar producte escalar]), 24, 25 i 26 del document [https://www.cs.upc.edu/~robert/teaching/EEBE/sessions/sessio06/llistesT.pdf 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 [https://recull.binefa.cat/files/doc/digits_de_control.pdf algorismes de dígits de control]
 +
 +
== 20211201 ==
 +
* Dubtes pendents
 +
 +
[https://recull.binefa.cat/files/20211201/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
== 20211130 ==
 +
* Dubtes pendents
 +
 +
[https://recull.binefa.cat/files/20211130/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
Exercici en C:
 +
 +
Feu un codi en C que demani el vostre nom i cognoms que presenti el nom amb el número, en base 10, de la taula ASCII.
 +
 +
=== Examen '''EAC05_''nom''_''cognom''_ASIX1.c''' ===
 +
 +
Realitza un programa que demani una lletra minúscula de l'abecedari i vagi ensenyant les lletres següents una a una en línies diferents, fins a arribar a la 'z' on el programa pararà. Entre lletra i lletra hi haurà un temps d'un segon (o mig segon).
 +
 +
Si la lletra és la 'a' ens mostrarà totes les lletres línia a línia fins a la 'z'.
 +
 +
Si la lletra és la 'z' pararà immediatament.
 +
 +
Verbigràcia:
 +
 +
Introdueix una lletra de l'abecedari: x
 +
 +
x
 +
 +
y
 +
 +
z
 +
 +
 +
EAC05_nom_cognom_ASIX1.c
 +
 +
== 20211129 ==
 +
* Dubtes pendents
 +
 +
[https://recull.binefa.cat/files/20211129/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
== 20211124 ==
 +
* Dubtes pendents
 +
 +
[https://recull.binefa.cat/files/20211124/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
== 20211123 ==
 +
* Dubtes pendents
 +
 +
* [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/annex.htm La depuració]
 +
 +
* m4e1.*, m4e2.*, m4e5.*, m4e6.*, m4e11.* i m4e12.* dels [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m4/d97m4ex.htm exercicis de recursivitat i aleatorietat] (Essent * .png i .xml d'Snap!  i .py i .c)
 +
 +
[https://recull.binefa.cat/files/20211123/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
=== Examen '''EAC04_''nom''_''cognom''_ASIX1.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_ASIX1.c
 +
 +
== 20211122 ==
 +
[https://recull.binefa.cat/files/20211122/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
== 20211117 ==
 +
[https://recull.binefa.cat/files/20211117/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
Comencem implementant en Python els codis desenvolupats en Snap! i ahir implementats en C. Després, seguim fent els exercicis plantejats el dia anterior.
 +
 +
== 20211116 ==
 +
[https://recull.binefa.cat/files/20211116/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
Seguim fent els exercicis plantejats el dia anterior.
 +
 +
Un cop acabat els anteriors farem els exercicis 5 i 6 d'aquesta [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m2/d97m2ex.htm 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 [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m3/d97m3ex.htm col·lecció d'exercicis] (m3e1.png, m3e1.xml, m3e1.py, m3e1.c, m3e3.* i m3e8.* . Essent * .png, .xml, .py i .c)
 +
 +
== 20211115 ==
 +
[https://recull.binefa.cat/files/20211115/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
=== Entrada de contrasenya oculta en Python ===
 +
[https://www.codegrepper.com/code-examples/python/python+hide+password+input Font de codi]
 +
import getpass
 +
szPwd = getpass.getpass("Enter Password")
 +
 +
== 20211110 ==
 +
[https://recull.binefa.cat/files/20211110/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 +
 +
* [https://www.binefa.com/index.php/ASIX_2021-2022#Aleatorietat_en_Python Aleatorietat en Python] i acabem [[Exercicis d'estructures de control repetitives en Python]]
 +
 +
* Seguim fent els exercicis Snap!, Python i C (alg04, alg06, alg07 i alg08)
 +
 +
=== Exercicis Snap!, Python i C (alg04, alg06, alg07 i alg08) ===
 +
Implementeu en [https://snap.berkeley.edu/snap/snap.html Snap!], Python i C els exercicis 4, 6, 7 i 8 (no feu en C el 8) de la [https://www.binefa.cat/daw2122/m03_m14/doc/1PRG_M03UF1_EXE001_BasicsPseudocodi.pdf 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!'''
 +
 +
=== Aleatorietat en Python ===
 +
[https://docs.python.org/3/library/random.html 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)'''''.
 +
 +
=== Aleatorietat en 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);
 +
}
  
 
== 20211109 ==
 
== 20211109 ==
Línia 30: Línia 814:
 
[https://recull.binefa.cat/files/20211109/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
 
[https://recull.binefa.cat/files/20211109/ Alguns codis comentats a classe] Usuari: ''asix'' i contrasenya: ''asix2122''
  
=== Exercicis Snap!, Python i C (alg04, qlg06, alg07 i alg08) ===
+
=== Exercicis Snap!, Python i C (alg04, alg06, alg07 i alg08) ===
 
Implementeu en [https://snap.berkeley.edu/snap/snap.html Snap!], Python i C els exercicis 4, 6, 7 i 8 (no feu en C el 8) de la [https://www.binefa.cat/daw2122/m03_m14/doc/1PRG_M03UF1_EXE001_BasicsPseudocodi.pdf col·lecció d'exercicis bàsics de pesudocodi]
 
Implementeu en [https://snap.berkeley.edu/snap/snap.html Snap!], Python i C els exercicis 4, 6, 7 i 8 (no feu en C el 8) de la [https://www.binefa.cat/daw2122/m03_m14/doc/1PRG_M03UF1_EXE001_BasicsPseudocodi.pdf col·lecció d'exercicis bàsics de pesudocodi]
  
Línia 36: Línia 820:
  
 
* 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!'''
 
* 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''')''';
 +
    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)
 +
 +
=== Examen '''EAC03_''nom''_''cognom''_ASIX1.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 notes obtingudes seguides d'un Enter.
 +
 +
* Quart i darrer contestarem:
 +
 +
Bé, ''<nom de l'alumne>'' que fas ''<curs de l'alumne>'', la mitjana 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''_ASIX1.c''' i el document '''EAC03_''nom''_''cognom''_ASIX1.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
  
 
== 20211103 ==
 
== 20211103 ==
Línia 307: Línia 1.154:
  
 
[http://www.arduinoblocks.com/ Arduino Blocks]
 
[http://www.arduinoblocks.com/ Arduino Blocks]
 +
 +
[https://sourceforge.net/projects/mingw/ MinGW - Compilador de C per a Windows]

Revisió de 15:30, 7 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-ASIX-M03-1rCognom2nCognomNom (Per exemple, si el teu nom és Xavier López Pujol --> 2122-ASIX-M03-LopezPujolXavier). A aquest enllaç podreu veure si ja hi sou a la llista:

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

Estructura de les carpetes:

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

Contingut

Algunes classes

Llista de 1r d'ASIX

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

20220523

Darrer dia de classe abans de l'examen

Recull d'avui

  • Dubtes
  • Exàmens antics

20220518

Recull d'avui

  • Dubtes
  • Exàmens antics

20220517

Recull d'avui

  • Dubtes
  • Exàmens antics

20220516

Recull d'avui

  • Dubtes
  • Exàmens antics

20220511

Recull d'avui

  • Dubtes
  • Exàmens antics

20220510

Recull d'avui

  • Dubtes
  • Exàmens antics

20220509

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. 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.
  • Resolució d'exàmens antics

20220504

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

20220502

Recull d'avui

  • Dubtes
  • Anàlisi d'exFitxers03.c i exFitxers04.c del recull d'avui.
  • 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

20220427

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

20220425

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.

20220420

Recull d'avui

  • Dubtes
  • Diferència de tractament de cadenes en C i en Python

- cadenes01.c

- cadenes.c i cadenes.py

  • Lectura d'arxius en Python

- lecturaArxius.py

20220419

Darrer dia abans del concurs.

Ens centrem en el concurs de sumo.

Recull d'avui

20220406

Recull d'avui

  • Dubtes pendents

20220405

Recull d'avui

  • Dubtes pendents

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

Robot

Pràctiques amb el robot versió 6

20220404 - M03UF3

Recull del dia d'avui

  • Comentaris dels exàmens del M03UF1 i M03UF2

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

20220330

Recull d'avui

  • Dubtes pendents

20220329

Recull d'avui

  • Dubtes pendents

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

Robot

Pràctiques amb el robot versió 6

20220328

Recull d'avui

  • Dubtes pendents

20220323

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)

20220321

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.

20220315

Recull d'avui

  • Dubtes pendents

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

Robot

Pràctiques amb el robot versió 6

20220314

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.

20220308

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

Robot

Pràctiques amb el robot versió 6

20220307

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)

20220302

Recull d'avui

  • Dubtes del dia anterior.
  • Comencem a resoldre l'examen present al recull d'avui

20220301

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

Robot

Pràctiques amb el robot versió 6

20220223

Recull d'avui

20220222

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

Robot

Pràctiques amb el robot versió 6

20220221

Recull d'avui

  • Seguim fent l'examen del darrer dia (present al recull d'avui).
  • Fem la depuració del primer exercici de l'examen 20210427_daw_m03uf2_ord.pdf

20220216

Recull d'avui

20220215

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

Robot

Pràctiques amb el robot versió 6

20220214

Recull d'avui

  • Seguim fent l'examen 20210304_m03uf1_ord del recull.

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

20220209

Recull d'avui

20220208

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

Robot

Pràctiques amb el robot versió 6

20220207

Recull d'avui

20220202

Recull d'avui

20220201

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

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

Màquina d'estats. Possibles estats del robot

Com canviar d'estat quan passen més de 5 segons:

#include <RobotController.h>

#define STATE_STOP  0
#define STATE_FAST_FORWARD 1
#define STATE_FORWARD 2
#define STATE_FAST_BACKWARDS 3
#define STATE_BACKWARDS  4
#define STATE_RIGHT 5
#define STATE_LEFT 6
#define STATE_BORDER 7
#define STATE_SEARCH 8
#define DIST_MAX 50

#define CINC_SEGONS 5000
...
int nPensaEstat(int nEstatActual, bool bL, bool bR) {
 static unsigned long  ulStartMillis = millis();
 bL = !bL;
 bR = !bR;
 switch (nEstatActual) {

   case STATE_STOP:
     ...

   case STATE_FORWARD:
     if ((bL || bR)) {
       ulStartMillis = millis();
       return STATE_BORDER;
     }
     if (millis() - ulStartMillis > CINC_SEGONS) {
       ulStartMillis = millis();
       return STATE_BUSCAR; // Canvi d'estat per passar-se de 5 segons al mateix estat
     }
     break;

   case STATE_BORDER:
     ...

   case STATE_SEARCH:
     ...

   case STATE_FAST_FORWARD:
     ...
 }
 return nEstatActual;
}

20220131

Recull d'avui zp

20220126

Recull d'avui

20220125

Recull d'avui

  • Dubtes pendents

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

20220124

Recull d'avui

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

20220119 (Baixa professor)

Tasques a fer:

Exercici 1

Exercicis 9 i 1

Més informació:

Introducció als apuntadors (Teoria d'apuntadors)

20220117

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

  • Dubtes pendents
  • Comentem el codi for_incr_00.c

20220112 (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.

20220110 (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

20211222

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

  • Dubtes pendents
  • Acabem l'exercici que valida el número de targeta de crèdit
  • Comentem com trobar els dos dígits de control d'un compte corrent
  • Plantegem l'exercici que verifica un número llegit d'un codi de barres
  • Comentem el codi for_incr_00.c

20211213

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

  • Dubtes pendents
  • Ús de la funció strlen() de l'arxiu de capçalera string.h . Analitzem l'arxiu usStrlen_00.c del recull d'avui.
  • Feina pendent de pujar dels exercicis de M2 i M3 de la col·lecció d'exercicis del d97

De la classe del 16 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!.

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)

20211201

  • Dubtes pendents

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

20211130

  • Dubtes pendents

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Exercici en C:

Feu un codi en C que demani el vostre nom i cognoms que presenti el nom amb el número, en base 10, de la taula ASCII.

Examen EAC05_nom_cognom_ASIX1.c

Realitza un programa que demani una lletra minúscula de l'abecedari i vagi ensenyant les lletres següents una a una en línies diferents, fins a arribar a la 'z' on el programa pararà. Entre lletra i lletra hi haurà un temps d'un segon (o mig segon).

Si la lletra és la 'a' ens mostrarà totes les lletres línia a línia fins a la 'z'.

Si la lletra és la 'z' pararà immediatament.

Verbigràcia:

Introdueix una lletra de l'abecedari: x

x

y

z


EAC05_nom_cognom_ASIX1.c

20211129

  • Dubtes pendents

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

20211124

  • Dubtes pendents

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

20211123

  • Dubtes pendents

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Examen EAC04_nom_cognom_ASIX1.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_ASIX1.c

20211122

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

20211117

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Comencem implementant en Python els codis desenvolupats en Snap! i ahir implementats en C. Després, seguim fent els exercicis plantejats el dia anterior.

20211116

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Seguim fent els exercicis plantejats el dia anterior.

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)

20211115

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Entrada de contrasenya oculta en Python

Font de codi

import getpass
szPwd = getpass.getpass("Enter Password")

20211110

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

  • Seguim fent els exercicis Snap!, Python i C (alg04, alg06, alg07 i alg08)

Exercicis Snap!, Python i C (alg04, alg06, alg07 i alg08)

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!

Aleatorietat en 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).

Aleatorietat en 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);
}

20211109

Blocs amb Snap!

Funcions en Python

Funcions en C

Exercicis bàsics de pesudocodi - Ex01

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Exercicis Snap!, Python i C (alg04, alg06, alg07 i alg08)

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

Examen EAC03_nom_cognom_ASIX1.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 notes obtingudes seguides d'un Enter.
  • Quart i darrer contestarem:

Bé, <nom de l'alumne> que fas <curs de l'alumne>, la mitjana 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_ASIX1.c i el document EAC03_nom_cognom_ASIX1.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

20211103

Funcions en Python

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

Exercicis d'estructures de control repetitives en Python

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

20211102

Funcions

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Examen EAC02_nom_cognom_ASIX1.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à 12248)

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 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_ASIX1.c i el document EAC02_nom_cognom_ASIX1.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

20211027

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Estructures repetitives, o bucles, en Python

Estructures repetitives, o bucles, en Python

Exercicis d'estructures de control repetitives en Python

20211026

Alguns codis comentats a classe Usuari: asix i contrasenya: asix2122

Exercicis de condicionals en 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.

Examen EAC01_nom_cognom_ASIX1.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à 12345)

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_ASIX1.c i el document EAC01_nom_cognom_ASIX1.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

Operador ternari i switch

Els condicionals en C

Estructures repetitives

Estructures repetitives en C

20211025

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

Condicionals amb Python. Revisem el not.

  • 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 a classe usuari: asix / contrasenya: asix2122

20211020

Condicionals amb Python

Exercicis de condicions en Python

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

20211019

Examen d'avaluació inicial de programació a 1r d'ASIX. Curs 2021-2022

Els condicionals en C

Exercicis de condicions en Python

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

20211018

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

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.

20211013

Continuem fent els exercicis demanats el dia anterior.

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

20211011

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

C

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

gcc m1p06.c -o m1p06 -lm
  • 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.

Python

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

jupyter-lab

accés directe a 20211006_py_02.html

20211006

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

Exercici 2 d'algorísmica. Implementeu-ho en Python

Implementeu un algorisme que llegeixi dos números decimals i calculi i escrigui per pantalla el valor de la seva suma, resta, producte i divisió. Com a suggeriment, feu servir el tipus double o float.

20211005

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

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.

Exercici 2 d'algorísmica

Implementeu un algorisme que llegeixi dos números decimals i calculi i escrigui per pantalla el valor de la seva suma, resta, producte i divisió. Com a suggeriment, feu servir el tipus double o float.

20211004

Prova de Jupyter


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

Els codis fets a classe són penjats al recull d'avui

20210929

Teleconferència provisional pel dia 20210929

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

20210928

Teleconferència provisional pel dia 20210928

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

20210927

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

20210922

Teleconferència puntual per al dia d'avui

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

20210921

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

Teleconferència puntual pel dia d'avui

Instal·lador de C per a Windows

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 1r d'ASIX usuari: asix | contrasenya: asix2122

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 : 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