Diferència entre revisions de la pàgina «Programació»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(afegir etiquetes #fpinfor)
 
(Hi ha 26 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
En aquest curs treballarem amb les llenguatges C++ i Python.
+
<nowiki>#FpInfor #AsixMp03 #DawMp03 #DamMp03
*El llenguatge C/C++ continua sent la opció més generalitzada de programació de sistema i té la capacitat de poder treballar a molt baix nivell, mantenint així un rendiment molt alt.
+
#AsixMp03Uf01 #AsixMp03Uf02 #AsixMp03Uf03
*El llenguatge Python ha incrementat la seva quota de mercat progressivament, sobretot mercès l'impuls donat per Google amb el seu AppEngine. És un llenguatge orientat a objectes nadiu i de més alt nivell que el C++, el que permet una manipulació més elegant però amb menys rendiment.
+
#DawMp03Uf01 #DawMp03Uf02 #DawMp03Uf03 #DawMp03Uf04 #DawMp03Uf05 #DawMp03Uf06
 +
#DamMp03Uf01 #DamMp03Uf02 #DamMp03Uf03 #DamMp03Uf04 #DamMp03Uf05 #DamMp03Uf06
 +
</nowiki>
 +
 
 +
En aquest curs treballarem amb el llenguatges Python.
 +
*El llenguatge Python ha incrementat la seva quota de mercat progressivament, sobretot mercès l'impuls donat per Google amb el seu App Engine. És un llenguatge orientat a objectes nadiu i de més alt nivell que el C++, el que permet una manipulació més elegant amb un rendiment raonable.
  
  
Línia 12: Línia 17:
  
 
=== Llenguatge Python ===
 
=== Llenguatge Python ===
* [[Python prompt]]: per millorar la consola Python amb autocompletion.
 
 
* [[Python: introducció ràpida]]: per conexiedors del C. Exercicis inclosos al final.
 
* [[Python: introducció ràpida]]: per conexiedors del C. Exercicis inclosos al final.
 
* [[Python: tipus bàsics de dades]]: nombres, strings (cadenes), llistes, tuples i diccionaris. Exercicis inclosos al final.
 
* [[Python: tipus bàsics de dades]]: nombres, strings (cadenes), llistes, tuples i diccionaris. Exercicis inclosos al final.
Línia 18: Línia 22:
 
** [http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/ Keyword args article 1]
 
** [http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/ Keyword args article 1]
 
** [http://docs.python.org/2/tutorial/controlflow.html#keyword-arguments Keyword args (pagina oficial python.org)].
 
** [http://docs.python.org/2/tutorial/controlflow.html#keyword-arguments Keyword args (pagina oficial python.org)].
 +
* Hacks:
 +
** [[Python prompt]]: per millorar la consola Python amb autocompletion.
  
 
=== POO ===
 
=== POO ===
Línia 26: Línia 32:
 
* [[POO Sobrecàrrega]]: la sobrecàrrega s'aplica a mètodes i operadors. En Python no s'utilitza en favor dels ''keyworded arguments''.
 
* [[POO Sobrecàrrega]]: la sobrecàrrega s'aplica a mètodes i operadors. En Python no s'utilitza en favor dels ''keyworded arguments''.
 
* [[POO Operadors]]: operacions de comparació entre classes.
 
* [[POO Operadors]]: operacions de comparació entre classes.
 +
** [[POO operadors 2]]: més exemples d'operadors amb objectes (clients).
 +
* [[Python: variables estàtiques o de classe]]
  
 
Exercicis: [[POO Exercicis]]
 
Exercicis: [[POO Exercicis]]
Línia 35: Línia 43:
 
** Bàsiques: nombre (sencer, flotant), caràcter, booleà
 
** Bàsiques: nombre (sencer, flotant), caràcter, booleà
 
** Avançades: vector, llista, matriu, cua (queue), pila (stack), hash table, arbres (binaris, multicamí), grafs
 
** Avançades: vector, llista, matriu, cua (queue), pila (stack), hash table, arbres (binaris, multicamí), grafs
* [[Templates]]
+
* [[Python: variables estàtiques o de classe]]
* [[Excepcions]]:
+
* [[Excepcions]] (amb algun exemple):
 
** Wikipedia: http://es.wikipedia.org/wiki/Manejo_de_excepciones
 
** Wikipedia: http://es.wikipedia.org/wiki/Manejo_de_excepciones
 +
** [http://docs.python.org/2/tutorial/errors.html Tutorial sobre excepcions a python.org]
 
** Llistat d'excepcions en Python: http://docs.python.org/2/library/exceptions.html
 
** Llistat d'excepcions en Python: http://docs.python.org/2/library/exceptions.html
 +
* [[Python: GUI]] (referències). Tutorial:
 +
*# [[Python: GUI#Qt pas a pas...|PyQt: introducció]]: Aplicació, layouts, signals/slots i widgets
 +
*# [[PyQt: pintar dintre d'un widget]]
 +
*# [[PyQt: Timers i pilotes rebotant]]
 +
*# [[PyQt: Imatges i sprites]]
 +
*# [[PyQt: joc del mur]]
 +
*# [[PyQt4: utilitzant Qt Designer]]
 +
*# [[PyQt4: utilitzant Qt Designer 2: diàlegs i ListWidget]]
 +
* PyQt: accés a:
 +
** [[PyQt: connectant signals amb slots]]
 +
** [[PyQt: Events de teclat]]
 +
 +
=== Altres temes ===
 +
Més coses:
 +
* [[Templates]]
 
* [[Col·leccions i iteradors]]
 
* [[Col·leccions i iteradors]]
 
* Concurrència: (llibreria threading) http://docs.python.org/2/library/threading.html
 
* Concurrència: (llibreria threading) http://docs.python.org/2/library/threading.html
 
** Threads (fils d'execució)
 
** Threads (fils d'execució)
** [[Timers]]
+
** [[Timers]]:
 +
*** Threading lib: http://docs.python.org/2/library/threading.html#timer-objects
 +
*** Qt: http://doc.qt.digia.com/4.7/qtimer.html
 
** Signals
 
** Signals
 
** Mutex (locks) i semàfors
 
** Mutex (locks) i semàfors
 
* Fluxos (streams)
 
* Fluxos (streams)
  
=== GUI: Graphical User Interface ===
+
<br>
* PyGTK:
+
 
** Pàgina oficial: http://pygtk.org/pygtk2tutorial/index.html
+
== UF6: POO. Introducció a la persistència en BD ==
** Tutorials una mica millors que a la pagina oficial:
 
*** http://zetcode.com/gui/pygtk/ (MOLT BO)
 
*** http://learngtk.org/pygtk-tutorial/
 
** Drawing methods: http://pygtk.org/pygtk2tutorial/sec-DrawingMethods.html
 
** Més Drawing methods (bon exemple): http://learngtk.org/pygtk-tutorial/drawingarea.html
 
** Cairo: http://www.pygtk.org/articles/cairo-pygtk-widgets/cairo-pygtk-widgets.htm
 
** Timers: http://tuxion.com/2010/04/16/periodic-timers-in-pygtk.html
 
** ...
 
  
* GUI: Llibreria Qt (abans de Trolltech, ara de Nokia):
+
=== Persistència d'objectes Python ===
** Tutorials per començar a introduïr-se: http://zetcode.com/tutorials/pyqt4/
+
Es poden utilitzar ''Shelve'' i ''ZODB''. S'utilitzen de manera molt similar, disposem d'una arrel (root), que és un diccionari persistent, on poden enregistrar els nostres objectes. La diferència més important és que a ZODB cal fer un commit, i que té la possibilitat de ''multithreading'' mitjançant l'accés per xarxa amb ZEO.
** Referències:
 
*** Nokia (original llibreria C++): http://doc.qt.nokia.com/4.7/index.html
 
*** PyQt (bindings per Python): http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/index.html
 
** Intro ràpida als SIGNALs i SLOTs per Python: http://techbase.kde.org/Development/Tutorials/Python_introduction_to_signals_and_slots
 
** Altres tutorials Python (i Ruby, etc.): http://techbase.kde.org/Development/Tutorials#Other_programming_languages
 
** Referències de les tecles en Qt: http://doc.qt.nokia.com/4.7/qt.html#Key-enum
 
* ...
 
  
[[Joc del mur amb PyGTK]]
+
* [http://docs.python.org/2/library/pickle.html Pickle]: és una eina de serialització de baix nivell. Serà complicat utilitzar-la.
 +
* [http://docs.python.org/2/library/shelve.html Shelve]: utilitza ''pickle'' com a base, però simplifica la utilització.
 +
* [[ZODB]]:
 +
** Zope Object Database: versió ''data storage'' (1 fitxer)
 +
** ZEO (ZODB per socket, permet múltiples connexions simultànies)
 +
*** [[Xat amb ZEO]]: programa de xat amb el servidor ZODB per xarxa.
  
== UF6: POO. Introducció a la persistència en BD ==
+
Pràctiques 2015:
*Per començar a utilitzar MySQL amb Python:
+
# [[QtreGimp]]: crearem formes geomètriques i les enregistrarem en arxius amb ''shelve''.
**http://www.kitebird.com/articles/pydbapi.html
+
# [[Web Services]]
*...
+
# [[Web Services: exemple Escacs]]
 +
 
 +
 
 +
=== Altres ===
 +
Treballant amb Java:
 +
* [[Java: introducció ràpida]]
 +
* [[Android]]
 +
* [[JsonXat]]: establirem uns serveis web per permetre xat des de dispositius mòbils i una app Android.

Revisió de 08:12, 25 jul 2018

#FpInfor #AsixMp03 #DawMp03 #DamMp03 #AsixMp03Uf01 #AsixMp03Uf02 #AsixMp03Uf03 #DawMp03Uf01 #DawMp03Uf02 #DawMp03Uf03 #DawMp03Uf04 #DawMp03Uf05 #DawMp03Uf06 #DamMp03Uf01 #DamMp03Uf02 #DamMp03Uf03 #DamMp03Uf04 #DamMp03Uf05 #DamMp03Uf06

En aquest curs treballarem amb el llenguatges Python.

  • El llenguatge Python ha incrementat la seva quota de mercat progressivament, sobretot mercès l'impuls donat per Google amb el seu App Engine. És un llenguatge orientat a objectes nadiu i de més alt nivell que el C++, el que permet una manipulació més elegant amb un rendiment raonable.


UF4: Programació Orientada a Objectes. Fonaments[modifica]

Llenguatges compilats i interpretats. Diferències i implicacions.

Referències:

Llenguatge Python[modifica]

POO[modifica]

Exercicis: POO Exercicis


UF5: POO. Llibreries de classes fonamentals[modifica]

Altres temes[modifica]

Més coses:


UF6: POO. Introducció a la persistència en BD[modifica]

Persistència d'objectes Python[modifica]

Es poden utilitzar Shelve i ZODB. S'utilitzen de manera molt similar, disposem d'una arrel (root), que és un diccionari persistent, on poden enregistrar els nostres objectes. La diferència més important és que a ZODB cal fer un commit, i que té la possibilitat de multithreading mitjançant l'accés per xarxa amb ZEO.

  • Pickle: és una eina de serialització de baix nivell. Serà complicat utilitzar-la.
  • Shelve: utilitza pickle com a base, però simplifica la utilització.
  • ZODB:
    • Zope Object Database: versió data storage (1 fitxer)
    • ZEO (ZODB per socket, permet múltiples connexions simultànies)
      • Xat amb ZEO: programa de xat amb el servidor ZODB per xarxa.

Pràctiques 2015:

  1. QtreGimp: crearem formes geomètriques i les enregistrarem en arxius amb shelve.
  2. Web Services
  3. Web Services: exemple Escacs


Altres[modifica]

Treballant amb Java: