This shows you the differences between two versions of the page.
|
sde2:teme:tema_ro_2_microbit_busybox [2021/03/22 19:45] ioana_maria.culic [Comenzi suportate] |
sde2:teme:tema_ro_2_microbit_busybox [2021/04/06 12:25] (current) ioana_maria.culic [Comenzi suportate] |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| Deadline: **7 Aprilie, ora 23:55**\\ | Deadline: **7 Aprilie, ora 23:55**\\ | ||
| Punctaj: **1 punct** din notă\\ | Punctaj: **1 punct** din notă\\ | ||
| - | Încărcarea temei: TODO\\ | + | Încărcarea temei: [[https://classroom.github.com/a/1owyePFX|Devoir 2]] |
| - | Încărcarea cu întârziere: **1 punct / zi** (maxim 4 zile)\\ | + | |
| </note> | </note> | ||
| Line 20: | Line 19: | ||
| - Tema trebuie să conțină un fișier Readme în care să explicați cum ații făcut tema **(-0.1p)**. | - Tema trebuie să conțină un fișier Readme în care să explicați cum ații făcut tema **(-0.1p)**. | ||
| - | - Tema trebuie implementată folosind limbajul Python și doar folosind funcții POSIX (biblioteca Python **[[https://docs.python.org/3/library/os.html|os]]**). Orice alte implementări vor duce la anularea temei **(0 puncte)**. | + | - Tema trebuie implementată folosind limbajul MicroPython. Orice alte implementări vor duce la anularea temei **(0 puncte)**. |
| <note warning> | <note warning> | ||
| - | Folosiți doar biblioteca Python **[[https://docs.python.org/3/library/os.html|os]]**, nu biblioteca Python posix. | + | Folosiți doar bibliotecile MicroPython **[[https://microbit-micropython.readthedocs.io/en/v1.0.1/os.html|os]]** și [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit_micropython_api.html|microbit]]. |
| </note> | </note> | ||
| Line 74: | Line 73: | ||
| * **on** - luminează LED-ul | * **on** - luminează LED-ul | ||
| * **off** - stinge LED-ul | * **off** - stinge LED-ul | ||
| - | * **blink <interval> <count>** - face LED-ul să clipească la intervalul ''interval'' milisecunde de ''count'' ori | + | * **blink <interval> <count>** - face LED-ul să clipească la intervalul ''interval'' milisecunde de ''count'' ori. Valoarea pentru ''count'' va fi în intervalul 0-20. |
| * **toggle** - aduce LED-ul în starea opusă (dacă LED-ul este pornit, îl oprește, iar dacă este oprit, îl pornește) | * **toggle** - aduce LED-ul în starea opusă (dacă LED-ul este pornit, îl oprește, iar dacă este oprit, îl pornește) | ||
| + | * **brightness [set <val>]** - folosit fără parametrul ''set'', afișează luminozitatea LED-ului specificat | ||
| + | * **set <val>** - dacă se folosește parametru set se va seta luminozitatea la valoarea ''val'', undeva ''val'' este un număr întreg 0-9, iar valoarea afișată în consolă este noua luminozitate | ||
| + | |||
| + | Comanda va afișa următoarele erori pentru următoarele cazuri: | ||
| + | * **Invalid LED.** - dacă valorile pentru x și/sau y nu sunt în intervalul 0-4 | ||
| + | * **Invalid count value.** - dacă valoarea pentru ''count'' nu este în intervalul 0-20. | ||
| + | * **Invalid brightness.** - dacă valoarea pentru ''val'' este în afara intervalului 0-9. | ||
| **Exemplu:** | **Exemplu:** | ||
| Line 81: | Line 87: | ||
| cmd: led on 2 3 | cmd: led on 2 3 | ||
| cmd: led off 2 3 | cmd: led off 2 3 | ||
| - | cmd: led blink 500 3 2 3 | + | cmd: led blink 500 30 2 3 |
| - | cmd: led toggle 2 3 | + | Invalid count value. |
| + | cmd: led toggle 2 3 | ||
| + | cmd: led brightness set 4 2 4 | ||
| + | 4 | ||
| + | cmd: led brightness 2 4 | ||
| + | 4 | ||
| </code> | </code> | ||
| - | * **brightness [parametru]** - folosit fără parametrii, afișează luminozitatea LED-urilor: | + | * **button <button>** - ''button'' poate lua valoarea ''A'' sau ''B'', reprezentând unul din cele două butoane de pe placă. Comanda afișează textul ''True'' dacă butonul specificat este apăsat și textul ''False'' dacă butonul nu e apăsat. |
| - | * **set <val>** - dacă se foloasește parametru set se va seta luminozitatea la valoarea ''val'', undeva ''val'' este un număr întreg 0-255, iar valoarea afișată în consolă este noua luminozitate | + | |
| - | **Exemplu:** | + | Comanda va afișa următoarele erori pentru următoarele cazuri: |
| - | <code bash> | + | * **Invalid button.** - dacă ''button'' este diferit de ''a'' sau ''b'' |
| - | cmd: brigthness | + | |
| - | 100 | + | |
| - | cmd: brightness set 150 | + | |
| - | 150 | + | |
| - | </code> | + | |
| - | + | ||
| - | * **button <button>** - ''button'' poate lua valoarea ''A'' sau ''B'', reprezentând unul din cele două butoane de pe placă. Comanda afișează textul ''True'' dacă butonul specificat este apăsat și textul ''False'' dacă butonul nu e apăsat. | + | |
| **Exemplu:** | **Exemplu:** | ||
| Line 173: | Line 176: | ||
| </code> | </code> | ||
| - | * **ls [opțiuni]** - Listează conținutul directorului. Fără opțiunea **-a/--all**, nu se afișează fișierele/ascunse (al căror nume începe cu .). Dacă primește ca parametru numele unui fișier, va afișa însuși parametrul. Fiecare fișier se va afișa pe o linie nouă. In caz de eroare intoarce valoarea -80(in terminal se va afisa valoarea 176). | + | * **ls [opțiuni]** - Listează conținutul directorului. Fără opțiunea **-a/--all**, nu se afișează fișierele/ascunse (al căror nume începe cu .). Dacă primește ca parametru numele unui fișier, va afișa însuși parametrul. Fiecare fișier se va afișa pe o linie nouă. |
| * **-a, %%--%%all** afișează și fișierele/directoarele ascunse (al căror nume incepe cu .) | * **-a, %%--%%all** afișează și fișierele/directoarele ascunse (al căror nume incepe cu .) | ||
| * **-l, %%--%%long** afișează informații privind dimensiunea fișierului sub forma: ''dimensiune nume''. | * **-l, %%--%%long** afișează informații privind dimensiunea fișierului sub forma: ''dimensiune nume''. | ||
| Line 222: | Line 225: | ||
| ===== Reguli de implementare ===== | ===== Reguli de implementare ===== | ||
| - | + | * În implementarea temei se va folosi mediul de programare MicroPython pentru Micro:bit. | |
| - | TODO | + | * Fișierul generat va avea numele **main.py**, acesta este fișierul pe care sistemul de testare îl va lua în considerare. |
| - | + | * Pentru implementarea comenzilor suportate, toate operațiile vor fi efectuate folosind doar funcții POSIX din biblioteca **os** specifică MicroPython (https://microbit-micropython.readthedocs.io/en/v1.0.1/os.html)și bilioteca [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit_micropython_api.html|microbit]]. | |
| - | * În implementarea temei se va folosi mediul de programare Python3. | + | |
| - | * Fișierul principal trebuie să aibă numele **busybox.py**, acesta este fișierul pe care sistemul de testare îl va lua în considerare. | + | |
| - | * Pentru implementarea comenzilor suportate, toate operațiile vor fi efectuate folosind doar funcții POSIX din biblioteca **os** specifică Python (https://docs.python.org/3/library/os.html). | + | |
| * Programul realizat trebuie să aibă un comportament generic. Dacă observăm că tema este rezolvată doar pentru a trece anumite teste specifice, punctele corespondente acelor teste vor fi anulate din punctajul total. | * Programul realizat trebuie să aibă un comportament generic. Dacă observăm că tema este rezolvată doar pentru a trece anumite teste specifice, punctele corespondente acelor teste vor fi anulate din punctajul total. | ||
| <note warning> | <note warning> | ||
| - | Folosiți doar biblioteca Python **os**, nu biblioteca Python posix. | + | Folosiți doar bibliotecile [[https://microbit-micropython.readthedocs.io/en/v1.0.1/os.html|MicroPython os]] și [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit_micropython_api.html|microbit]]. |
| </note> | </note> | ||
| - | ===== Trimiterea temei ===== | + | ===== Trimiterea și verificarea temei ===== |
| - | Tema se va încărca pe vmchecker. Logați-vă pe site cu folosind utilizatorul de pe moodle, selectați cursul Systemes d'Explotation (FILS) și încărcați arhiva temei. | + | Tema se va încărca pe Github. Logați-vă pe site și accesați link-ul aferent temei. |
| - | ==== Readme ==== | + | <note info> |
| + | Tema va fi testată automat pe Github pentru 40/100p. Restul testelor vor fi rulate manual, cu condiția ca tema să obțină cel puțin 20p din cele 40p obținute prin testare automată. | ||
| - | Fișierul readme are următorul format: | + | Testele manuale vor fi efectuare prin rularea următoarelor comenzi: |
| - | + | ||
| - | Numele vostru întreg | + | |
| - | + | ||
| - | Grupa | + | |
| - | + | ||
| - | Descrierea rezolvării temei, de ce ați ales anumite soluții, etc. | + | |
| - | + | ||
| - | ==== Arhiva temei ==== | + | |
| - | + | ||
| - | Pentru a încărca tema, urmăriți pașii: | + | |
| - | - Creați o arhivă zip (nu rar, ace, 7zip sau alt format) care să conțină: | + | |
| - | * Fișierul Python busybox.py | + | |
| - | * Alte fișiere python adiacente de care aveti nevoie (daca e cazul) | + | |
| - | * fișierul Readme | + | |
| - | - Logați-vă pe vmchecker | + | |
| - | - Selectați cursul Systemes d'Explotation(FILS) | + | |
| - | - Selectați 2. Mini-BusyBox | + | |
| - | - Incărcați arhiva | + | |
| - | + | ||
| - | Arhiva trebuie să conțină toate fișierele (principale) în rădăcina, nu în subdirectoare. NU arhivați directorul temei, arhivați DIRECT fișierele. | + | |
| - | După ce încărcați arhiva, vmchecker va rula: | + | |
| <code bash> | <code bash> | ||
| - | unzip archive.zip homework | + | $ git clone <your_repository> |
| - | cd homework | + | $ python3 main.py < input_test.in |
| - | python3 busybox.py comanda parametrii | + | |
| </code> | </code> | ||
| + | Fișierele de input pentru testele manuale sunt disponibile pe [[https://github.com/UPB-FILS-SdE2/devoir-2-tests/tree/main/manual-tests|github]]. | ||
| + | |||
| + | Fiecare fișier conține pe prima linie punctajul testului. | ||
| + | </note> | ||