Differences

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

Link to this comparison view

uso-ac:laboratoare:laborator-10 [2016/12/10 23:12]
giorgiana.vlasceanu [5. Selectare și sortare studenți care au nota între 6 și 9 (2p)]
uso-ac:laboratoare:laborator-10 [2016/12/10 23:18] (current)
giorgiana.vlasceanu [2. Expresii regulate (1p)]
Line 442: Line 442:
 </​note>​ </​note>​
  
-==== 1. Opțiuni pentru grep (2p) ====+==== 1. Opțiuni pentru grep (4p) ====
  
 Ne propunem să aflăm care sunt fișierele de tip header (cu extensia ''​.h''​ sau ''​.hpp''​) din sistem care au cele mai multe macro-uri definite. Pentru aceasta vom folosi comanda ''​grep''​ cu opțiuni specifice și apoi comanda ''​sort''​ pentru a sorta datele în ordinea numărului de apariții de definiții de macro-uri. Ne propunem să aflăm care sunt fișierele de tip header (cu extensia ''​.h''​ sau ''​.hpp''​) din sistem care au cele mai multe macro-uri definite. Pentru aceasta vom folosi comanda ''​grep''​ cu opțiuni specifice și apoi comanda ''​sort''​ pentru a sorta datele în ordinea numărului de apariții de definiții de macro-uri.
Line 454: Line 454:
 </​note>​ </​note>​
  
-=== 1.1. Extragere linii ce conțin definiții de macro-uri (0.5p) ===+=== 1.1. Extragere linii ce conțin definiții de macro-uri (1p) ===
  
 Pentru început, ca să aveți un punct de plecare, veți extrage liniile ce conțin definiții de macro-uri pentru un singur fișier header dat. Recomandăm să folosiți ca intrare fișierul ''/​usr/​include/​stdio.h''​. Pentru început, ca să aveți un punct de plecare, veți extrage liniile ce conțin definiții de macro-uri pentru un singur fișier header dat. Recomandăm să folosiți ca intrare fișierul ''/​usr/​include/​stdio.h''​.
Line 484: Line 484:
 </​solution>​ </​solution>​
  
-=== 1.2. Extragere linii ce conțin definiții de macro-uri în ierarhia /​usr/​include (0.5p) ===+=== 1.2. Extragere linii ce conțin definiții de macro-uri în ierarhia /​usr/​include (1p) ===
  
 În continuare veți extinde comanda anterioară și veți folosi ''​grep''​ cu opțiunea de **recursivitate** pentru a extrage liniile ce conțin definiții de macro-uri pentru toate fișierele din ierarhia ''/​usr/​include/''​. În continuare veți extinde comanda anterioară și veți folosi ''​grep''​ cu opțiunea de **recursivitate** pentru a extrage liniile ce conțin definiții de macro-uri pentru toate fișierele din ierarhia ''/​usr/​include/''​.
Line 517: Line 517:
 </​solution>​ </​solution>​
  
-=== 1.3. Obținere număr de linii ce conțin definiții de macro-uri în ierarhia /​usr/​include (0.5p) ===+=== 1.3. Obținere număr de linii ce conțin definiții de macro-uri în ierarhia /​usr/​include (1p) ===
  
 În continuare veți extinde comanda anterioară și veți folosi ''​grep''​ cu opțiunea de **recursivitate** și cea de **contorizare** pentru a furniza ca output fișierele din ierarhia ''/​usr/​include''​ împreună cu numărul de linii care conțin definiții de macro-uri. În continuare veți extinde comanda anterioară și veți folosi ''​grep''​ cu opțiunea de **recursivitate** și cea de **contorizare** pentru a furniza ca output fișierele din ierarhia ''/​usr/​include''​ împreună cu numărul de linii care conțin definiții de macro-uri.
Line 540: Line 540:
  
  
-=== 1.4. Sortare după numărul de linii ce conțin definiții de macro-uri (0.5p) ===+=== 1.4. Sortare după numărul de linii ce conțin definiții de macro-uri (1p) ===
  
 În final, veți sorta output-ul comenzii anterioare în funcție de numărul de linii care conțin definiții de macro-uri. Vrem să aflăm care sunt fișierele de tip header din ierarhia ''/​usr/​include''​ care conțin cel mai mare număr de definiții de macro-uri. În final, veți sorta output-ul comenzii anterioare în funcție de numărul de linii care conțin definiții de macro-uri. Vrem să aflăm care sunt fișierele de tip header din ierarhia ''/​usr/​include''​ care conțin cel mai mare număr de definiții de macro-uri.
Line 576: Line 576:
 </​solution>​ </​solution>​
  
-==== 2. Expresii regulate (1p) ====+==== 2. Expresii regulate (2p) ====
  
 Ne propunem să sedimentăm noțiunile legate de expresii regulate. Vom folosi ''​grep''​ și expresii regulate pentru a face două prelucrări peste fișierul ''/​usr/​share/​vim/​vim74/​tutor/​tutor'':​ Ne propunem să sedimentăm noțiunile legate de expresii regulate. Vom folosi ''​grep''​ și expresii regulate pentru a face două prelucrări peste fișierul ''/​usr/​share/​vim/​vim74/​tutor/​tutor'':​
Line 706: Line 706:
 </​solution>​ </​solution>​
  
-==== 3. Parsare folosind tab ca separator (1p) ====+==== 3. Parsare folosind tab ca separator (2p) ====
  
 În secțiunea [[#​parsare_date_tabelare_in_shell|Parsare date tabelare în shell]] am folosit la intrare fișierul ''​students.csv'',​ fișier format CSV (//Comma Separated Values//) care folosește virgula ('','',​ //comma//) pe post de separator de câmpuri. Ne propunem să folosim la intrare fișierul ''​students.txt''​ care folosește caracterul tab pe post de separator de câmpuri. În secțiunea [[#​parsare_date_tabelare_in_shell|Parsare date tabelare în shell]] am folosit la intrare fișierul ''​students.csv'',​ fișier format CSV (//Comma Separated Values//) care folosește virgula ('','',​ //comma//) pe post de separator de câmpuri. Ne propunem să folosim la intrare fișierul ''​students.txt''​ care folosește caracterul tab pe post de separator de câmpuri.
Line 743: Line 743:
 </​solution>​ </​solution>​
  
-==== 4. Selectare studenți care au nota 10 (1p) ====+==== 4. Selectare studenți care au nota 10 (2p) ====
  
 Ne propunem să actualizăm scriptul anterior ''​extract-name-tab''​ pentru a afișa doar numele studenților pentru acei studenți care au nota finală ''​10''​ (a treia coloană are valoarea ''​10''​). Ne propunem să actualizăm scriptul anterior ''​extract-name-tab''​ pentru a afișa doar numele studenților pentru acei studenți care au nota finală ''​10''​ (a treia coloană are valoarea ''​10''​).
Line 813: Line 813:
 ===== Bonus ===== ===== Bonus =====
  
-=== 5.2. Sortare studenți care au nota între 6 și 9 (1p) ===+==== 0. Selectare și sortare studenți care au nota între 6 și 9 (2 karma WoUSO) ==== 
 + 
 +Ne propunem să realizăm un script numit ''​extract-sort-grades''​ pentru a afișa numele studenților,​ grupa și nota finală pentru acei studenți care au nota finală cuprinsă între ''​6''​ și ''​9''​ inclusiv. Adică valoarea de pe a treia coloană să fie ''​6'',​ ''​7'',​ ''​8''​ sau ''​9''​. Apoi vom sorta intrările în ordinea notei și apoi în ordinea grupei (adică dacă au aceeași notă să fie sortați în ordinea grupei). 
 + 
 +Pentru început creați o copie a scriptului ''​extract-name-tab''​ numită ''​extract-sort-grades''​ pe care o veți actualiza pentru a răspunde cerinței de mai sus. 
 + 
 +<note tip> 
 +Pașii din continuare sunt detaliați **în subsecțiunile** exercițiului (subsecțiunile ​5.1 și 5.2). Parcurgeți subsecțiunile pentru indicații legate de acești pași și pentru rezolvarea exercițiului. 
 +</​note>​ 
 + 
 +Va trebui să actualizați scriptul ''​extract-sort-grades''​ în două locuri: 
 +  - Condiția trebuie să fie de număr cuprins între ''​6''​ și ''​9''​ (în loc de număr egal cu ''​10''​ cum este cazul în scriptul ''​extract-name-tab''​). Vedeți indicațiile. 
 +  - Trebuie afișate numele studenților,​ grupa din care fac parte și nota finală (nu doar numele cu este cazul în scriptul ''​extract-name-tab''​). 
 +  - Trebuie sortate intrările obținute în ordinea notelor și în ordinea grupei. 
 + 
 +=== 0.1. Selectare studenți care au nota între 6 și 9 (1 karma WoUSO) === 
 + 
 +<spoiler Click pentru indicații>​ 
 +<note tip> 
 +Cerința presupune două condiții care trebuie îndeplinite:​ nota finală să fie mai mare sau egală cu ''​6''​ **și** nota finală să fie mai mică sau egală cu ''​9''​. 
 + 
 +Pentru a afla care este opțiunea de **și logic** pentru comanda ''​test'',​ căutați în pagina de manual a comenzii ''​test''​ șirul ''​and''​ și localizați opțiunea necesară. 
 + 
 +La fel procedați pentru a afla opțiunile pentru //greater than// sau //less than//. 
 + 
 +Exemple de folosire pentru comanda ''​test''​ și diversele sale opțiuni sunt mai jos:<​code>​ 
 +# Is 5 equal to 4? False 
 +$ test 5 -eq 4 
 +$ echo $? 
 +
 + 
 +# Is 5 equal to 5? True 
 +$ test 5 -eq 5 
 +$ echo $? 
 +
 + 
 +# Is 6 greater than 6? False 
 +$ test 6 -gt 6 
 +$ echo $? 
 +
 + 
 +# Is 6 greater than or equal to 6? True 
 +$ test 6 -ge 6 
 +$ echo $? 
 +
 + 
 +# Is 7 less than 10? True 
 +$ test 7 -lt 10 
 +$ echo $? 
 +
 + 
 +# Is 7 less than 10 and 6 greater than 4? True 
 +$ test 7 -lt 10 -a 6 -gt 4 
 +$ echo $? 
 +
 + 
 +# Is 7 less than 10 and 6 greater than 7? False 
 +$ test 7 -lt 10 -a 6 -gt 7 
 +$ echo $? 
 +
 + 
 +# Is 7 less than 10 or 6 greater than 7? True 
 +$ test 7 -lt 10 -o 6 -gt 7 
 +$ echo $? 
 +
 +</​code>​ 
 +</​note>​ 
 + 
 +Afișați la ieșirea standard numele, grupa și nota finală a studenților selectați **separate prin virgulă**. 
 +</​spoiler>​ 
 + 
 +La rularea scriptului ''​extract-sort-grades''​ veți obține numele studenților,​ grupa și nota finală pentru studenții a căror notă finală este cuprinsă între ''​6''​ și ''​9''​. 
 + 
 + 
 + 
 +=== 0.2. Sortare studenți care au nota între 6 și 9 (1 karma WoUSO) ===
  
 În continuare actualizați scriptul folosind operatorul de secvențiere (''​|'',​ //pipe//) și comanda ''​sort''​ cu opțiunile necesare pentru a sorta ieșirea comenzii în ordinea notei și apoi a grupei. În continuare actualizați scriptul folosind operatorul de secvențiere (''​|'',​ //pipe//) și comanda ''​sort''​ cu opțiunile necesare pentru a sorta ieșirea comenzii în ordinea notei și apoi a grupei.
Line 897: Line 972:
 </​solution>​ </​solution>​
  
-==== 6. Conversie de fișiere imagine (3p) ====+==== 1. Conversie de fișiere imagine (3 karma WoUSO) ====
  
 Dorim să realizăm un script care să automatizeze rescalarea dimensiunii unor fișiere imagine. Dorim să realizăm un script care să automatizeze rescalarea dimensiunii unor fișiere imagine.
Line 985: Line 1060:
  
  
-==== 1. Selectare studenți după notă fracționară (1 karma point) ====+==== 2. Selectare studenți după notă fracționară (1 karma point) ====
  
 Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''​8''​. Este vorba de coloana a 4-a din fișierele de intrare (''​students.txt''​ sau ''​students.csv''​). Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''​8''​. Este vorba de coloana a 4-a din fișierele de intrare (''​students.txt''​ sau ''​students.csv''​).
Line 1025: Line 1100:
 </​solution>​ </​solution>​
  
-==== 2. Selectare studenți după note fracționare (1 karma point) ====+==== 3. Selectare studenți după note fracționare (1 karma point) ====
  
 Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''​8''​ (coloana a 4-a) **și** care au obținut la testul grilă notă mai mică sau egală ca cea de la testul practic (coloana a 5-a). Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''​8''​ (coloana a 4-a) **și** care au obținut la testul grilă notă mai mică sau egală ca cea de la testul practic (coloana a 5-a).
Line 1054: Line 1129:
 </​solution>​ </​solution>​
  
-==== 3. Sortare studenți în grupă (1 karma point) ====+==== 4. Sortare studenți în grupă (1 karma point) ====
  
 Ne propunem să afișăm studenții unei grupe, sortați după nota finală (coloana a 3-a). Ne propunem să afișăm studenții unei grupe, sortați după nota finală (coloana a 3-a).
Line 1101: Line 1176:
 </​code>​ </​code>​
 </​solution>​ </​solution>​
-==== 4. Sortare grupe după note de 10 obținute de studenți (2 karma points) ====+==== 5. Sortare grupe după note de 10 obținute de studenți (2 karma points) ====
  
 Ne propunem să afișăm grupele sortate în funcție de câți studenți din acea grupă au obținut nota ''​10''​. Ne propunem să afișăm grupele sortate în funcție de câți studenți din acea grupă au obținut nota ''​10''​.
uso-ac/laboratoare/laborator-10.1481404341.txt.gz · Last modified: 2016/12/10 23:12 by giorgiana.vlasceanu
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