This shows you the differences between two versions of the page.
poo:laboratoare:01 [2017/12/22 12:53] mihai.nan |
poo:laboratoare:01 [2023/10/01 10:05] (current) carmen.odubasteanu [Problema 3] |
||
---|---|---|---|
Line 9: | Line 9: | ||
====Problema 1==== | ====Problema 1==== | ||
Să se introducă programul de mai jos (clasa **//Test//**) într-un fișier cu numele ''Prob1.java'', folosind mediul integrat NetBeans / Eclipse. | Să se introducă programul de mai jos (clasa **//Test//**) într-un fișier cu numele ''Prob1.java'', folosind mediul integrat NetBeans / Eclipse. | ||
- | 1. Să se compileze și să se ruleze următorul program: | + | |
+ | **1.** Să se compileze și să se ruleze următorul program: | ||
<code java> | <code java> | ||
class Test { | class Test { | ||
Line 17: | Line 18: | ||
} | } | ||
</code> | </code> | ||
- | Adăugați atributul **//public//** înaintea cuvântului cheie **//class//**, recompilați și executați programul. Rezolvați problema apărută! | + | **2.** Adăugați atributul **//public//** înaintea cuvântului cheie **//class//**, recompilați și executați programul. Rezolvați problema apărută! |
Line 29: | Line 30: | ||
====Problema 2==== | ====Problema 2==== | ||
Să se scrie o clasă **//Problema2//** care conţine două metode (funcţii): | Să se scrie o clasă **//Problema2//** care conţine două metode (funcţii): | ||
- | * metoda **//print()//** care primește un argument de tip String pe care-l afișează; | + | * metoda **//print//** __nestatica__ care primește un argument de tip ''String'' pe care-l afișează; |
- | * metoda **//main()//** care apelează funcția **//print()//** pentru afișarea unui șir constant. | + | * metoda **//main//** care apelează funcția **//print()//** pentru afișarea unui șir constant. |
<note warning> | <note warning> | ||
Line 49: | Line 50: | ||
====Problema 3==== | ====Problema 3==== | ||
- Să se modifice clasa scrisă la exerciţiul anterior prin definirea a două clase, fiecare conţinând câte o metodă: | - Să se modifice clasa scrisă la exerciţiul anterior prin definirea a două clase, fiecare conţinând câte o metodă: | ||
- | * o clasă pentru metoda **//main()//**; | + | * o clasă pentru metoda **//main//**; |
- | * o clasă pentru metoda **//print()//**. | + | * o clasă pentru metoda **//print//**. |
- | - as | + | * Să se verifice dacă ambele clase din fișier pot fi publice. Apelul metodei **//print//** se va realiza în acelaşi mod ca la problema 2! |
+ | - Să se modifice programul anterior prin crearea a două fişiere sursă, fiecare conţinând cate una din clasele de mai sus. Incercati să executați ambele clase. | ||
+ | <note important> | ||
+ | <color red>**IMPORTANT!**</color> | ||
+ | Într-un fișier **NU** pot fi definite două **clase publice**. | ||
+ | </note> | ||
- | 1. | + | ====Problema 4==== |
- | \begin{itemize} | + | Să se scrie un program pentru afișarea tuturor argumentelor primite în linia de comandă. |
- | \item | + | |
- | o clasă pentru metoda \textbf{main()}; | + | <note tip> |
- | \item | + | <color green>**Observație**</color> |
- | o clasă pentru metoda \textbf{print()}. | + | |
- | \end{itemize} | + | |
- | \par | + | |
- | \noindent | + | |
- | Să se verifice dacă ambele clase din fi\c{s}ier pot fi publice. | + | |
- | \par | + | |
- | \noindent | + | |
- | Apelul metodei \textbf{print} se va realiza în acelaşi mod ca la problema 2! | + | |
- | \newline | + | |
- | \warning{IMPORTANT !} | + | |
- | \begin{Warning} | + | |
- | Într-un fi\c{s}ier \textbf{\textit{nu}} pot fi definite două \textbf{\textit{clase publice}}. | + | |
- | \end{Warning} | + | |
- | \par | + | |
- | \setlength{\parindent}{7ex} | + | |
- | 2. Să se modifice programul anterior prin crearea a două fişiere sursă, fiecare conţinând o clasă cu câte o singură metodă. Incercati să executa\c{t}i ambele clase. | + | |
- | \noindent | + | |
- | \newline | + | |
- | \newline | + | |
- | \warning{IMPORTANT !} | + | |
- | \begin{Warning} | + | |
- | O \textbf{\textit{clasă executabilă}} este o clasă care con\c{t}ine obligatoriu \textbf{\textit{metoda main}}. | + | |
- | \end{Warning} | + | |
- | \noindent | ||
- | \chapter{\textbf{Problema 4}} | ||
- | \par | ||
- | \setlength{\parindent}{7ex} | ||
- | Să se scrie un program pentru afi\c{s}area tuturor argumentelor primite în linia de comandă. | ||
- | \begin{myblock}{Observatie} | ||
Argumentele se pot transmite astfel: | Argumentele se pot transmite astfel: | ||
- | \begin{itemize} | + | * daca programul se ruleaza din NetBeans / Eclipse se vor urma instructiunile de la începutul laboratorului; |
- | \item | + | * daca programul se ruleaza din linia de comandă: ''java numeprogram arg1 arg2 arg3'' |
- | daca programul se ruleaza din NetBeans / Eclipse se vor urma instructiunile de la începutul laboratorului; | + | </note> |
- | \item | + | |
- | daca programul se ruleaza din linia de comandă: | + | |
- | \setlength{\parindent}{14ex} | + | |
- | \par | + | |
- | \textbf{\textit{java numeprogram arg1 arg2 arg3}} | + | |
- | \end{itemize} | + | |
- | \end{myblock} | + | |
- | \noindent | ||
- | \chapter{\textbf{Problema 5}} | ||
- | \par | ||
- | Să se realizeze o clasă care cuprinde o metodă recursivă care calculează puterea întreagă a unui numar întreg \c{s}i o metodă pentru afi\c{s}area rezultatului func\c{t}iei, alături de rezultatul func\c{t}iei statice \textbf{\textit{Math.pow(baza, exp)}} pentru a se putea valida. Clasa va con\c{t}ine un \textbf{main} în care se vor testa cele două metode definite anterior. | ||
- | \warning{IMPORTANT !} | + | ====Problema 5==== |
- | \begin{Warning} | + | Să se realizeze o clasă care cuprinde o metodă recursivă (nestatica) care calculează puterea întreagă a unui numar întreg și o metodă pentru afișarea rezultatului funcției, alături de rezultatul funcției statice ''Math.pow(baza, exp)'' pentru a se putea valida. Clasa va conține un **//main//** în care se vor testa cele două metode definite anterior. |
- | \noindent | + | |
- | O \textbf{\textit{metodă statică}} a unei clase se apelează prin: | + | |
- | \setlength{\parindent}{17ex} | + | |
- | \par\color{Blue}\textbf{NumeClasă.numeMetodăStatică(...)} | + | |
- | \newline | + | |
- | Ex: \texttt{Math.pow(...);} | + | |
- | \end{Warning} | + | |
+ | <note important> | ||
+ | <color red>**IMPORTANT!**</color> | ||
+ | O **//metodă statică//** a unei clase se apelează prin: | ||
- | \vspace{0.2cm} | + | ''NumeClasă.numeMetodăStatică(...)'' |
- | \noindent | + | |
- | \chapter{\textbf{Problema 6}} | + | ''Math.pow(...);'' |
- | \par | + | </note> |
+ | |||
+ | |||
+ | |||
+ | ====Problema 6==== | ||
Să se implementeze o clasă cu două metode: | Să se implementeze o clasă cu două metode: | ||
- | \begin{itemize} | + | * o metodă (nestatica) de tip ''boolean'' care verifică dacă un număr întreg dat este prim; |
- | \item | + | * metoda ''main'' care verifică metoda anterioară pentru toate numerele naturale mai mici ca $20$. |
- | o metodă de tip \textbf{\textit{boolean}} care verifică dacă un număr întreg dat este prim; | + | |
- | \item | + | |
- | metoda \textbf{\textit{main()}} care verifică metoda anterioară pentru toate numerele naturale mai mici ca 20. | + | |
- | \end{itemize} | + | |
- | \noindent | ||
- | \chapter{\textbf{Problema 7}} | ||
- | \par | ||
- | Să se scrie un program pentru verificarea ipotezei lui Goldbach pentru primele \textbf{n} numere pare, prin afi\c{s}area tuturor sumelor de două numere prime prin care poate fi exprimat un număr par. Variabila \textbf{n} poate fi ini\c{t}ializată cu o valoare constantă. | ||
- | \par | ||
- | \textbf{Ipoteza lui Goldbach:} orice nr par poate fi descompus ca sumă de cel pu\c{t}in o pereche de două numere prime. Se consideră $1$ ca fiind număr prim. | ||
- | \begin{myexampleblock}{Cod sursă Java} | + | ====Problema 7==== |
- | \par | + | Să se scrie un program pentru verificarea ipotezei lui Goldbach pentru primele n numere pare, prin afișarea tuturor sumelor de două numere prime prin care poate fi exprimat un număr par. Variabila n poate fi inițializată cu o valoare constantă. |
- | Pentru afi\c{s}area unei expresii de forma \textbf{\textit{a = b + c}} se va scrie: | + | |
- | \begin{lstlisting} | + | **Ipoteza lui Goldbach:** orice nr par poate fi descompus ca sumă de cel puțin o pereche de două numere prime. Se consideră $1$ ca fiind număr prim. |
+ | |||
+ | Pentru afișarea unei expresii de forma ''a = b + c'' se va scrie: | ||
+ | <code java> | ||
System.out.println(a + " = " + b + " + " + c); | System.out.println(a + " = " + b + " + " + c); | ||
- | \end{lstlisting} | + | </code> |
- | unde \textbf{\textit{a}}, \textbf{\textit{b}}, \textbf{\textit{c}} sunt variabile numerice de orice tip (\textbf{\textit{short}}, \textbf{\textit{int}}, \textbf{\textit{long}}, \textbf{\textit{float}}, \textbf{\textit{doube}}). | + | unde ''a'', ''b'', ''c'' sunt variabile numerice de orice tip (''short'', ''int'', ''long'', ''float'', ''double''). |
- | \end{myexampleblock} | + | |
- | \noindent | + | ====Problema 8==== |
- | \chapter{\textbf{Problema 8}} | + | Să se scrie un program pentru ordonarea unui vector de numere și căutarea binară în acest vector, folosind metodele statice **//sort()//** și **//binarySearch()//** din clasa **//Arrays//**. Vectorul va conține numere generate aleator folosind metoda statică **//random()//** din clasa //**Math**//, cu rezultat de tip //**double**//. |
- | \par | + | |
- | Să se scrie un program pentru ordonarea unui vector de numere \c{s}i căutarea binară în acest vector, folosind metodele statice \textbf{\textit{sort()}} si \textbf{\textit{binarySearch()}} din clasa \textbf{\textit{Arrays}}. Vectorul va con\c{t}ine numere generate aleator folosind metoda statică \textbf{\textit{random()}} din clasa \textbf{\textit{Math}}, cu rezultat de tip \textbf{\textit{double}}. | + | |