Sunteți pe pagina 1din 14

Lucrările de laborator la disciplina „Programarea Windows în

C#” pentru anul de studii 2020-21!

Ultima actualizare: 12.04.2021


Notă: pentru grupele TI-31, IA-33, TIR-36 și IAR-37 sunt obligatorii primele 7
lucrări de laborator, a 8-a și a 9-a sunt opționale (lucrarea de laborator nr. 8 poate fi
efectuată în loc de una din primele 7, iar efectuarea lucrării de laborator nr. 9 scutește
de efectuarea părții practice la examen, nota fiind cea de la lucrarea de laborator).
Numărul variantei a fost stabilit la prima lecție de laborator. Dacă este efectuată o altă
variantă, lucrarea de laborator nu este acceptată. Dacă este indicat numele sau
prenumele altui student sau dacă sunt dovezi clare că lucrarea este luată de la alt coleg,
atunci aceasta va fi apreciată cel mult cu nota cinci (dacă studentul va explica
amănunțit procesul efectuării ei se poate pune, ca excepție, nota șase). La fiecare
pereche se acceptă nu mai mult de două lucrări de laborator, ca excepție (pentru
lucrările de laborator nr. 7-9) pot fi trei. Lucrările de laborator nr. 8-9 pot fi prezentate
și în ziua examenului, celelalte trebuie prezentate obligatoriu pe parcursul semestrului
la lecțiile de laborator.
Lucrarea de laborator trebuie să conțină un volum de circa 6-10 pagini, dintre care
prima pagină trebuie să reprezinte foia de titlu (denumirile ministerului, universității,
și facultății, denumirea disciplinei, numărul lucrării de laborator, tema, numele și
prenumele studentului și a profesorului, loc pentru data prezentării, pentru notă și
pentru semnătura profesorului). Pagina a doua începe cu scopul și sarcina lucrării, apoi
trebuie să urmeze un scurt material teoretic la temă (circa o pagină), iar celelalte pagini
trebuie să conțină codul programului (în întregime), precum și screen-shot-urile
(minim trei, cu diverse valori inițiale, îndeosebi cele ce pot genera erori sau situații
imprevizibile) care confirmă efectuarea lucrării de laborator respective și varianta
electronică. Ultima pagină trebuie să conțină concluziile (minim trei) făcute pe baza
îndeplinirii lucrării de laborator respective. Pentru a obține notă înaltă studentul
trebuie să prezinte lucrarea de laborator nu mai târziu decât peste două
săptămâni de la data studierii temei respective (pentru fiecare săptămână de
reținere nota se va micșora cu o unitate) și trebuie să poată demonstra că lucrarea a
fost îndeplinită de el (să răspundă la întrebările suplimentare referitor la lucrare și să
efectueze exerciții asemănătoare celor din lucrarea de laborator). Lucrările de
laborator prezentate la ultimele lecții sau după finalizarea lecțiilor se apreciază
cu note de cinci- șase. La sfârșit verificați obligatoriu ortografia și gramatica.
Lucrările fără diacritice sau cu greșeli numeroase nu se acceptă.
Lucrarea de Laborator nr. 1
Tema: Instrucțiuni repetitive (cicluri)
Scopul: utilizarea instrucțiunilor repetitive (for, while și do- while)
pentru scrierea programelor în limbajul de programare C#.

Sarcini

Scrieți un program care citește de la tastatură valorile variabilelor a, b, c, n, i, j, k


(în dependență de variantă), efectuează ceea ce este indicat în variantă, apoi afișează
pe ecran rezultatul:

1. determină toate numerele prime din intervalul [a; b] (un număr este prim dacă se divide numai
la 1 și la el însuși)
2. determină dacă 2 numere sunt prime între ele (cel mai mare divizor comun al lor este 1)
3. determină al n-lea număr Fibbonacci
4. calculează media aritmetică a cifrelor unui număr n
5. calculează suma șirului: 1-1/2+1/4-1/8+...+(-1)n/2n
6. tipărește toate tripletele (i, j, k) de numere naturale care verifică condițiile: i 2 + j2 = k2; unde 1
<i<j<k
7. determină dacă un număr n este perfect (este egal cu suma tuturor divizorilor săi, în afară de
însăși numărul, ca exemplu 6 = 1 + 2 + 3)
8. determină dacă două numere a și b sunt prietene (dacă numărul a este egal cu suma divizorilor
lui b, iar b este egal cu suma divizorilor lui a)
9. determină cel mai mare divizor comun al două numere a și b (poate fi utilizat algoritmul lui
Euclid prin scădere, prin împărțire sau verificarea tuturor numerelor până la 1)
10. calculează suma numerelor pozitive și produsul numerelor negative din intervalul [a; b]
11. calculează media aritmetică, geometrică și armonică a tuturor divizorilor unui număr n
12. determină toate numerele întregi de trei cifre cu proprietatea că suma cifrelor acestuia ridicate
la cub să fie egală cu numărul inițial, ca exemplu dacă numărul n este alcătuit din cifrele a, b
și c, atunci a3 +b3 + c3 = n3
13. determină numerele impare succesive a căror sumă este egală cu n3, pentru n= 1,...,20 (ca
exemplu 13=1; 23=3+5; 33=7+9+11 etc).
14. tipărește toate tripletele (a ,b, c) de numere pitagorice, cu 0<a<b<c ordonate după suma a+
b+ c. Numerele a, b, c, se numesc pitagorice dacă a2+b2=c2.
15. afișează primele n numere Fibbonacci
16. determină cel mai mic multiplu comun al două numere a și b (se poate de împărțit produsul
acestora la cel mai mare divizor comun al lor)
17. determină numerelor perfecte din intervalul [a, b] (un număr este perfect dacă el este egal cu
suma tuturor divizorilor săi, în afară de însăși numărul)
18. determină dacă un număr n este prim (un număr este prim dacă se divide doar la 1 și la el
însuși)
Lucrarea de Laborator nr. 2
Tema: Tablouri (uni și bidimensionale) și șiruri de caractere
Scopul: utilizarea tablourilor uni și bidimensionale și a șirurilor de caractere
pentru scrierea programelor în limbajul de programare C#.
Sarcini
Scrieți un program care prelucrează tablourile așa cum este indicat în variantă, apoi
afișează pe ecran rezultatul (la variantele 1; 3; 6; 8; 11; 13 se cere de prelucrat tablouri
unidimensionale (vectori; se consideră că au mai multe elemente egale cu cel minim și cu cel
maxim), la variantele 2; 7; 12; 16 se cere de prelucrat tablouri bidimensionale (matrice
pătratice), la variantele 4; 9; 14; 17 se cere de prelucrat tablouri de la tablouri (matrice
neregulate, adică cu număr diferit de rânduri și coloane), iar la variantele 5; 10; 15; 18- șiruri
de caractere (string).

1) Să se determine valoarea maximală dintre elementele tabloului și pozițiile elementelor cu


această valoare, precum și suma tuturor elementelor negative în tablou.
2) Să se determine produsul elementelor nenule din fiecare coloană și numărul elementelor
negative de pe diagonala principală.
3) Să se determine valoarea minimală dintre elementele tabloului și pozițiile primului și
ultimului element cu această valoare, precum și media aritmetică a tuturor elementelor
negative în tablou.
4) Să se determine suma elementelor negative din fiecare linie și media elementului maximal
și cel minimal.
5) Să se determine numărul de vocale și frecvența repetării fiecăreia dintre ele.
6) Să se determine valoarea maximală dintre elementele tabloului și numărul de elemente cu
această valoare, precum și pozițiile acestora în tablou.
7) Să se determine elementul minimal de pe diagonala secundară, suma și numărul
elementelor pozitive din coloanele pare.
8) Să se determine valoarea maximală negativă dintre elementele tabloului și poziția
primului element cu această valoare, precum și numărul elementelor pozitive în tablou.
9) Să se ordoneze liniile tabloului în ordine ascendentă a numărului de elemente negative în
fiecare linie.
10) Să se determine numărul cuvintelor care încep cu simbolul dat.
11) Să se determine valorile primului element minimal pozitiv și a ultimului element maximal
negativ, precum și pozițiile acestora în tablou.
12) Să se determine minimul dintre sumele elementelor pozitive de pe diagonala principală și
cea secundară.
13) Să se determine numărul de elemente negative mai mici ca elementul maximal și produsul
elementelor pozitive mai mari ca elementul minimal în tablou.
14) Să se calculeze numărul de maximuri locale ale tabloului. Un element al tabloului este
maxim local, dacă este strict mai mare decât toți vecinii săi.
15) Să se elimine din propoziție cuvintele identice.
16) Să se determine suma elementelor negative din coloanele impare și produsul elementelor
pozitive mai mici ca media aritmetică a elementelor situate pe diagonala principală.
17) Să se efectueze uniformizarea tabloului. Operația de uniformizare a tabloului se
efectuează prin înlocuirea fiecărui element cu media aritmetică a tuturor vecinilor.
18) Să se determine prima și ultima literă din fiecare cuvânt.
Lucrarea de Laborator nr. 3
Tema: Clase și Constructori

Scopul: utilizarea claselor și a diferitor tipuri de constructori pentru


scrierea programelor în limbajul de programare C#.
Sarcini

Scrieți un program care permite crearea unei clase simple la tema indicată mai jos, având
ca metode (funcții) citirea și afișarea fiecărui câmp privat (set-teri și get- teri sau proprietăți),
precum și o metodă care permite afișarea pe ecran a câmpurilor obiectelor clasei, precum și o
metodă care calculează o valoare nouă a unui sau a mai multor câmpuri (ca exemplu, de
convertit prețul din lei în EURO sau de calculat durata deplasării). Adăugați patru tipuri de
constructori (unul trebuie să fie fără parametri, încă unul- de copiere, altul- cu toți parametrii
indicați, iar ultimul- cu doar câțiva parametri indicați, în dependență de temă, în ultimul caz
unele câmpuri ar putea avea valori egale sau careva valori standarde). Tema, pe baza căreia
trebuie să creați clasa, precum și câmpurile private obligatorii, sunt indicate în variantă

1) Studenți (nr, nume, prenume, telefon, specialitate, an de studiu, notă)


2) Cântece (denumire, gen, interpret, durată, autor versuri, autor muzică, an)
3) Angajați (nr, nume, prenume, funcție, adresă, telefon, salariu)
4) Salon de automobile (nr, marcă, model, culoare, țară, preț)
5) Salon de telefoane mobile (IMEI, marcă, model, culoare, țară, preț)
6) Produse alimentare (nr, denumire, dată producere, termen de valabilitate,
preț)
7) Filme (nr, denumire, gen, regizor, durată, țară)
8) User (nr. de ordine, e-mail, nume, prenume, parolă, tip cont)
9) Magazin Internet (nr, denumire produs, unitate de măsură, preț, dată primire)
10) Uzină de conserve (nr, denumire, tip, masă, preț, dată fabricare)
11) Tehnică de calcul (nr, denumire, model, preț, an editare, țară)
12) Bănci (denumire, adresă, director, pagină- web, curs Euro, curs Dolar)
13) Actori (nume, prenume, nr. filme, filme celebre, gen preferat, țară)
14) Sisteme de operare (denumire, subtipuri, preț, companie producătoare,
procent utilizare în lume, an apariție)
15) Țări (abreviere din trei litere, populație (se poate în milioane), capitală,
continent, formă de guvernare, conducător (rege, președinte, prim- ministru))
16) Genuri de sport (denumire, puncte pentru victorie, pentru remiză și pentru
înfrângere, periodicitate desfășurare campionat mondial)
17) Ceasuri (firmă, model, tip (inteligent, electronic, mecanic), preț, țară, an)
18) Stație auto (nr. rută, firmă, oră sosire, oră plecare, destinație, tip transport
(autocar, microbuz), preț)
Lucrarea de Laborator nr. 4
Tema: Supraîncărcarea operatorilor, indexatori, conversii
speciale ale tipurilor
Scopul: supraîncărcarea operatorilor pentru o clasă, utilizarea
indexatorilor și conversii speciale ale tipurilor în limbajul de programare
C#.

Sarcini

Pentru clasa creată la lucrarea de laborator precedentă supraîncărcați operatorii „=”


și „!=” (verificarea egalității, respectiv a inegalității a două obiecte ale acestei clase),
„true” și „false” (valoarea va fi false dacă toate câmpurile au valori implicite, adică
cele string sunt null, cele numerice sunt 0, iar cele logice sunt false și va fi true în caz
contrar, adică dacă măcar un câmp are valoare concretă), „&” (în așa mod ca să fie
posibil să utilizați și &&), „+” (adunarea unui obiect al clasei cu un număr sau cu un
alt obiect al clasei, ca rezultat ar trebui să obținem un obiect al clasei sau număr, care
să aibă sens logic, ca exemplu adunând un student cu un număr să se mărească nota
studentului cu acel număr, dacă avea 3 și am adunat cu 2 va avea nota 5).
Prezentați un exemplu de utilizare a indexatorului și un exemplu de conversie
specială a obiectelor unei clase la un tip primitiv sau a unei clase la altă clasă.
Lucrarea de Laborator nr. 5
Tema: Moștenire
Scopul: utilizarea moștenirii la lucrul cu clasele în limbajul de
programare C#.

Sarcini

Scrieți un program care permite crearea unei clase care moștenește câmpurile și
metodele clasei create la lucrarea de laborator precedentă, dar mai adaugă și careva
proprietăți proprii, creând și constructorii respectivi (care să corespundă
constructorilor clasei de bază), apoi mai creați o clasă care moștenește caracteristicile
clasei a doua, având și constructorii necesari (ca exemplu, clasa de bază Studenți, clasa
Masteranzi., care moștenește clasa Studenți, apoi clasa Doctoranzi, care moștenește
clasa Masteranzi, deci implicit moștenește și clasa Studenți). Tema, pe baza căreia
trebuie să creați clasele derivate, precum și câmpurile noi obligatorii, sunt indicate în
variantă, dar se permite de creat și alte clase derivate, care să fie logic legate cu cea de
bază, în dependență de imaginația studenților. În main prezentați exemple de creare
atât a obiectelor clasei de bază, cât și a celor derivate. La crearea obiectelor utilizați
fiecare din constructorii scriși.

1) Masteranzi (denumire specializare, temă a tezei de master), respectiv


Doctoranzi (cod specializare, conducător al tezei de doctor)
2) Cântece pentru Show-Business (popularitate interpret), Rap (nr. descărcări)
3) Administrație (categorie de manager, nr. persoane aflate în conducere),
respectiv Proprietari (tip proprietar, procent de acțiuni de care dispune)
4) Automobile care au Cutie Automată de Viteze (număr viteze, număr viteze
reverse), respectiv Automobile cu GPS și cutie automată (tip GPS)
5) Telefoane Mobile cu 4G (viteză Internet, prezență wi- fi), respectiv
Telefoane Mobile cu 4G cu Viteze de Internet Maxime (tehnologie utilizată)
6) Lactate (firmă producătoare), respectiv Brânzeturi (procent grăsime, tip)
7) Filme Documentare (domeniu, prezență elemente artistice), respectiv Filme
(show- uri) Real- Time (tema, actori)
8) Utilizatori cu Drepturi mai Înalte (drepturi suplimentare), respectiv
Administrator (valabilitate parolă)
9) Magazin Internet de Electrocasnice (domeniu, subdomeniu), respectiv
Magazin Internet de Calculatoare (frecvență procesor, memorie operativă)
10) Uzină de Conserve Destinate Exportării peste Hotare (țară destinatară,
valută a țării destinatare), respectiv Uzină de Conserve din Produse Naturale
Destinate Exportării peste Hotare (denumire produs natural, termen păstrare)
11) Laptopuri (firmă producătoare, diagonală ecran), respectiv Tablete
(sistem de operare, rezoluție cameră Web)
12) Bănci de Creditare (manager sector creditare), respectiv Bănci de
Acordare Credite pentru Agricultură (procent credit, termen acordare)
13) Actori de la Hollywood (onorariu mediu pentru filmare), respectiv Actori
Comici de la Hollywood (regizorul preferat)
14) Microsoft Windows (versiunile cele mai cunoscute), respectiv Windows
NT (periodicitate apariție versiuni noi sau actualizări)
15) Țări din Europa (suprafață, valută), respectiv Țări din Uniunea Europeană
(an aderare la UE)
16) Sporturi în echipă (nr. jucători echipă), respectiv Sporturi cu Mingea
(tipul mingii, masa)
17) Ceasuri Inteligente (tehnologie utilizată, sisteme de operare cu care este
compatibil), respectiv Smartwatch de la Samsung (perioada garanției (în
luni), prezență Always on Display)
18) Rute Internaționale (țară destinatară, valută a țării destinatare), respectiv
Rute cu Pornire și Destinație Internaționale (țară pornire, valută a țării de
pornire)
Lucrarea de Laborator nr. 6
Tema: Clase abstracte, interfețe și polimorfism
Scopul: utilizarea claselor abstracte, a interfețelor și a
polimorfismului în limbajul de programare C#.

Sarcini

Scrieți un program care creează o interfață la tema indicată în variantă, care conține
cel puțin o metodă abstractă (indicată în paranteze), poate să conțină și o constantă
necesară pentru calcule ulterioare, apoi creează o clasă abstractă, care o
implementează. Clasa abstractă se cere să aibă cel puțin un câmp (indicate în
paranteze) și constructor. După aceasta creați clasele concrete indicate, care moștenesc
clasa abstractă, deci implicit implementează și interfața, și realizează metodele
abstracte. Prezentați și exemple de polimorfism.

1) Arie figuri geometrice (lungime, lățime, metoda abstractă aria()) și clasele derivate
Arie Dreptunghi și Arie Pătrat.
2) Volum Corpuri Geometrice (latură, înălțime, metoda abstractă volum()) și clasele
derivate Volum Piramidă și Volum Cub.
3) Lungime Figuri Geometrice (rază și metoda abstractă lungimea()) și clasele
derivate Lungime Cerc și Lungime Cerc Trigonometric (cerc cu raza 1).
4) Schimb Valutar (sumă, curs, metoda abstractă conversie()) și clasele derivate
Schimb Lei în Euro și Schimb Euro în Lei (în primul caz suma se consideră a fi în
lei, iar în al doilea caz- în Euro).
5) Convertire Lungime (lungime, metoda abstractă convertire()) și clasele derivate
Convertire Centimetri în Inch și Convertire Inch în Centimetri (în primul caz
lungimea se consideră a fi în cm, iar în al doilea caz- în inch).
6) Credit (sumă inițială, plată lunară și metoda abstractă sumăTotală()) și clasele
derivate Credit pentru 12 Luni și Credit pentru 24 de Luni. Metoda abstractă
trebuie să afișeze suma totală a produsului, știind suma achitată inițial, plata lunară
și termenul de achitare.
7) Depozit (sumă inițială, rată, metoda abstractă sumăFinală()) și clasele derivate
Depozit pentru 12 Luni și Depozit pentru 6 Luni. Metoda abstractă trebuie să
calculeze suma finală a clientului pentru banii depuși în perioada indicată cu
procentul indicat. Rata dobânzii se consideră fixă pe toată perioada.
8) Tipografie (număr pagini, preț tipărire pagină monocromă, metoda abstractă cost())
și clasele derivate Ziar Color și Ziar Monocrom. Costul tipăririi unei pagini color
se consideră de patru ori mai mare decât a unei pagini alb- negru.
9) Preț Apartament (suprafață odaie, preț m2, metoda abstractă cost()) și clasele
derivate Apartament cu O Odaie și Apartament cu Două Odăi. Metoda abstractă
trebuie să calculeze prețul apartamentului, dacă considerăm că el are una sau două
odăi (se consideră că bucătăria împreună cu coridorul și blocul sanitar au aceiași
mărime ca și odăile), știind prețul unui metru pătrat și suprafața odăii.
10)Volum Corpuri Geometrice Conice (rază, înălțime, metoda abstractă volum()) și
clasele derivate Volum Con și Volum Cilindru.
11)Perimetru Figuri Geometrice (lungime, lățime, metoda abstractă perimetru()) și
clasele derivate Perimetru Dreptunghi și Perimetru Triunghi.
12)Salariu Angajat (nume, funcție și metoda abstractă salariu()) și clasele derivate
Salariu Angajat de Bază și Salariu Angajat cu Salariul Procent din Vânzări.
13)Suma Progresiei (termen inițial, rație și număr de termeni, metoda abstractă
suma()) și clasele Suma Progresiei Aritmetice și Suma Progresiei Geometrice.
14)Medie Tablou (număr termeni și metoda abstractă media()) și clasele Medie Vector
(tablou unidimensional) și Medie Matrice (tablou bidimensionale).
15)Cutie (lungime, lățime, înălțime și metoda abstractă volum()) și clasele derivate
Cutie în Formă de Paralelipiped Drept și Cutie în Formă de Cub.
Lucrarea de Laborator nr. 7
Tema: Prelucrarea Excepțiilor
Scopul: prelucrarea excepțiilor în limbajul de programare C#.

Sarcini

Scrieți un program care prezintă diverse exemple de prelucrare a diferitor tipuri de


excepție: atunci când avem împărțire la zero, radical din număr negativ, când încercăm
să accesăm un element inexistent al unui tablou, atunci când în loc de număr
utilizatorul introduce litere, atunci când încercăm să apelăm o metodă a unui obiect
care are referință nulă etc. Pentru notă înaltă trebuie de creat o metodă care generează
o excepție proprie pentru clasa creată la lucrarea de laborator nr. 3 în cazul când
utilizatorul introduce valori care nu corespund cerințelor, ca exemplu introduce preț
negativ sau notă mai mică decât 1 sau mai mare decât 10.
Lucrarea de Laborator nr. 8
Tema: Lambda expresii
Scopul: utilizarea expresiilor lambda la scrierea programelor în
limbajul de programare C#.

Sarcini

Prezentați diverse exemple de lambda expresii la scrierea programelor în limbajul


de programare C#. Scrieți cel puțin o lambda- expresie pentru clasa creată în lucrarea d
elaborator nr. 3.
Lucrarea de Laborator nr. 9
Tema: Colecții
Scopul: utilizarea diferitor tipuri de liste și dicționare la scrierea
programelor în limbajul de programare C#.

Sarcini

Utilizând aceiași temă ca la lucrarea de laborator nr. 3 creați cel puțin cinci obiecte
și înscrieți-le într-o listă de tip List, apoi ArrayList, apoi LinkedList. Prezentați diferite
exemple de utilizare a acestora, inclusiv sortarea automată și afișarea pe ecran.
După aceasta mai creați cel puțin cinci obiecte și adăugați-le într-un dicționar de tip
Dictionary. Prezentați exemple de prelucrare și afișare pe ecran.

S-ar putea să vă placă și