Differences

This shows you the differences between two versions of the page.

Link to this comparison view

asc:laboratoare:01 [2022/04/02 18:08]
stefan_dan.ciocirlan [Exerciții]
asc:laboratoare:01 [2024/02/29 13:27] (current)
giorgiana.vlasceanu [Resurse]
Line 26: Line 26:
  
 <note important>​ <note important>​
-În cadrul laboratoarelor vom lucra doar cu Python 3.x (de preferat ​versiunea 3.8, latest version), nu și cu versiunile 2.x. Python nu oferă backwards compatibility astfel încât programe scrise pentru o versiune pot să genereze erori de interpretare pe o altă versiune. De asemenea, Python3 este în mod intenționat incompatibil cu versiunile 2.x, explicații asupra acestui lucru puteți citi și în [[http://​docs.python.org/​3/​whatsnew/​3.0.html | articolul]] lui Guido van Rossum, autorul Python-ului.+În cadrul laboratoarelor vom lucra doar cu Python 3.x (de preferat ​ultima versiune stabilă), nu și cu versiunile 2.x. Python nu oferă backwards compatibility astfel încât programe scrise pentru o versiune pot să genereze erori de interpretare pe o altă versiune. De asemenea, Python3 este în mod intenționat incompatibil cu versiunile 2.x, explicații asupra acestui lucru puteți citi și în [[http://​docs.python.org/​3/​whatsnew/​3.0.html | articolul]] lui Guido van Rossum, autorul Python-ului.
 </​note>​ </​note>​
  
Line 34: Line 34:
 <code bash> <code bash>
 $ python $ python
-Python 3.6.9 (default, ​Nov  ​7 ​2019, 10:44:02+Python 3.9.16 (default, ​Dec  ​7 ​2022, 10:16:11
-[GCC 8.3.0] on linux+[GCC 9.4.0] on linux
 Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information. Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information.
 >>>​ >>>​
Line 49: Line 49:
 </​code>​ </​code>​
  
-Pe un system Windows se poate descărca ​versiunea ​[[https://​www.python.org/​downloads/​release/​python-381/ ​3.8.1]]. După instalare se poate adăuga calea către executabilul Python în variabila globală PATH, pentru a putea fi folosit din orice terminal. Acest lucru se poate face mai ușor selectând opțiunea Add Python to PATH la începutul instalării.+Pe un system Windows se poate descărca ​de [[https://​www.python.org/​downloads | aici]]. După instalare se poate adăuga calea către executabilul Python în variabila globală PATH, pentru a putea fi folosit din orice terminal. Acest lucru se poate face mai ușor selectând opțiunea Add Python to PATH la începutul instalării.
  
 ==== Tools ==== ==== Tools ====
Line 351: Line 351:
 ==== Dicționare ==== ==== Dicționare ====
  
-O structură dicționar este un set //​neordonat//​ de //chei// și //valori// în care valoarea poate fi cautată folosindu-se cheia. Cheile sunt obiecte [[http://​docs.python.org/​3/​glossary.html#​term-hashable|hashable]],​ ceea ce presupune că au o funcție hash ce întoarce întotdeauna aceeași ​valore ​pentru obiectul respectiv. **Atenție!** listele, dicționarele și alte tipuri de date //mutable// //nu// sunt //​hashable//,​ deci folosirea lor drept chei nu este posibilă. ​+O structură dicționar este un set //​neordonat//​ de //chei// și //valori// în care valoarea poate fi cautată folosindu-se cheia. Cheile sunt obiecte [[http://​docs.python.org/​3/​glossary.html#​term-hashable|hashable]],​ ceea ce presupune că au o funcție hash ce întoarce întotdeauna aceeași ​valoare ​pentru obiectul respectiv. **Atenție!** listele, dicționarele și alte tipuri de date //mutable// //nu// sunt //​hashable//,​ deci folosirea lor drept chei nu este posibilă. ​
   * dicționarele sunt declarate folosind acolade, elementele sunt de forma ''​cheie:​valoare'',​ despărțite de virgule.   * dicționarele sunt declarate folosind acolade, elementele sunt de forma ''​cheie:​valoare'',​ despărțite de virgule.
   * ordinea de stocare este arbitrară, iar cheile pot să fie de tipuri diferite   * ordinea de stocare este arbitrară, iar cheile pot să fie de tipuri diferite
Line 704: Line 704:
 Folosind scheletul de cod implementați un //​CoffeeMaker//​. Acesta primește comenzi de la utilizator (e.g. să facă o cafea) și afișează rezultatele/​mesajele. Comenzile sunt definite în modulul ''​task0''​. Puteți personaliza mesajele afișate, resursele, puteți alege ce structuri de date să folosiți etc.  Folosind scheletul de cod implementați un //​CoffeeMaker//​. Acesta primește comenzi de la utilizator (e.g. să facă o cafea) și afișează rezultatele/​mesajele. Comenzile sunt definite în modulul ''​task0''​. Puteți personaliza mesajele afișate, resursele, puteți alege ce structuri de date să folosiți etc. 
  
-  - Începeți rezolvarea exercițiului prin rularea modulului coffee_maker.py. ​ 
-  - Deschideți apoi modulul, citiți comentariile:​ 
-      * ce trebuie să folosiți din construcțiile de limbaj prezentate în acest laborator 
-      * comenzile pe care să le implementați 
-      * exemplul 
  
-  ​implementarea tutoror comenzilor ​din schelet ​ +**Task 1**  - Implementați comenzile ​din fisierul coffee_maker.py 
-  * folosirea [[asc:​laboratoare:​01#​functii|funcțiilor]] și a blocului [[asc:​laboratoare:​01#​main-ul|__main__]] +    * Urmăriți exemplu dat pentru a vedea comenzile și rezultatul lor 
-  * lucrul cu [[asc:​laboratoare:​01#​liste_tupluri_si_elemente_de_programare_functionala|liste sau/și dicționare]]  +    ​* folosirea [[asc:​laboratoare:​01#​functii|funcțiilor]] și a blocului [[asc:​laboratoare:​01#​main-ul|__main__]] 
-  * folosiți cel puțin o dată o [[https://​docs.python.org/​3.7/​library/​stdtypes.html#​string-methods|funcție a stringurilor]] (e.g. strip(), lower(), format()) și un alt mod de a afișare în afară de cel cu concatenare (e.g. interpolare cu %, format())  +    * lucrul cu [[asc:​laboratoare:​01#​liste_tupluri_si_elemente_de_programare_functionala|liste sau/și dicționare]]  
-  * rulați //pylint3 ​coffee_maker.py//,​ observați statisticile ​și aduceți cel puțin o îmbunatățire code-style-ului ​(dacă e cazul) +    * folosiți cel puțin o dată o [[https://​docs.python.org/​3.7/​library/​stdtypes.html#​string-methods|funcție a stringurilor]] (e.g. strip(), lower(), format()) și un alt mod de a afișare în afară de cel cu concatenare (e.g. interpolare cu %, format())  
-  * citiți rețetele pentru cafea din fișierele oferite în directorul //​recipes// ​din scheletul de cod. Implementați citirea ​într-un modul separat (e.gcel oferit în schelet) ​+    * rulați //pylint ​coffee_maker.py//,​ observați statisticile ​și aduceți cel puțin o îmbunătățire code-style-ului ​(dacă e cazul) 
 + 
 +<note tip>​Instalare pylint: ​     
 +sudo apt install pylint3 
 +</​note>​ 
 + 
 +**Task 2**  - citiți rețetele pentru cafea din fișierele oferite în directorul //​recipes//​. Implementați citirea ​în modulul load_recipes.py. 
  
 Disclaimer: Recomandăm scrierea în engleză a documentației,​ comentariilor și a numelor de variabile, funcții, clase, module atât la laborator cât și la teme. Încercăm să vă oferim schelete de cod care să respecte acest lucru. ​ Disclaimer: Recomandăm scrierea în engleză a documentației,​ comentariilor și a numelor de variabile, funcții, clase, module atât la laborator cât și la teme. Încercăm să vă oferim schelete de cod care să respecte acest lucru. ​
Line 726: Line 728:
 </​note>​ </​note>​
  
-<note tip>​Recomandăm parcurgerea acasă și a [[.:​old-exercises|exercițiilor]] din anii trecuți sau a materialelor recomandate în secțiunea [[.:​01#​referinte|Referințe]] pentru a vă familiariza mai bine cu pythonul ​pentru următoarele două laboratoare și pentru tema 1.</​note> ​+<note tip>​Recomandăm parcurgerea acasă și a [[.:​old-exercises|exercițiilor]] din anii trecuți sau a materialelor recomandate în secțiunea [[.:​01#​referinte|Referințe]] pentru a vă familiariza mai bine cu limbajul de programare Python ​pentru următoarele două laboratoare și pentru tema 1.</​note> ​
  
 ===== Resurse ===== ===== Resurse =====
   * <​html><​a class="​media mediafile mf_pdf"​ href=":​asc:​lab1:​index?​do=export_pdf">​PDF laborator</​a></​html>​   * <​html><​a class="​media mediafile mf_pdf"​ href=":​asc:​lab1:​index?​do=export_pdf">​PDF laborator</​a></​html>​
   * {{:​asc:​lab1:​lab1-skel.zip|Schelet laborator}}   * {{:​asc:​lab1:​lab1-skel.zip|Schelet laborator}}
-  * {{:​asc:​lab1:​lab1-sol.zip|Soluție laborator}} 
- 
  
 +<​hidden>​
 +  * {{:​asc:​lab1:​lab1-sol.zip|Soluție laborator}}
 +</​hidden>​
   * [[.:​old-exercises|Exerciții din alți ani]]   * [[.:​old-exercises|Exerciții din alți ani]]
  
asc/laboratoare/01.1648912108.txt.gz · Last modified: 2022/04/02 18:08 by stefan_dan.ciocirlan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0