This shows you the differences between two versions of the page.
|
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.g. cel 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]] | ||