Aplicatii simple in Java. Operatori. Instructiuni. Tablouri de variabile.
Simple Java applications. Operators. Instructions. Arrays of variables.
Obiective:
- implementarea unor aplicatii simple in Java
- implementarea aplicatiilor Java care lucreaza cu operatori, instructiuni, tablouri de variabile
Objectives:
- implementing simple Java applications
- implementing Java applications that work with operators, instructions, arrays of variables
Tablouri de variabile (unidimensionale, multidimensionale)
Alăturări de elemente de același tip (date primitive sau instanțe de clasă), accesate pe baza indexului lor.
Declarare: tip_date nume_variabila[];
Alocare memorie: nume_variabila = new tip_date[nr_elemente];
Accesul la elemente se face pe baza indexului (int);
Proprietatea .length => numărul de elemente din șir
Clasa Arrays
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html
=> operații pe variabile de tip șir (căutări, sortări, copieri, etc.)
Clasa String
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html
=> permite tratarea unitara a şirurilor de caractere; toate variabilele literale Java care conţin o secvenţă de caractere pot
fi prelucrate prin intermediul acestei clase.
Exemplu:
//declararea şi iniţializarea unei variabile de tip String
String sir = new String(”abc”);
! Variabilele de tip String nu pot fi modificate odată ce au fost iniţializate.
Clasa String are constructori care permit:
iniţializarea unui obiect de tip String cu un şir vid de caractere
iniţializarea unui obiect de tip String cu un şir de caractere primit ca parametru
iniţializarea unui obiect de tip String cu un şir de bytes primit ca parametru
iniţializarea unui obiect de tip String cu un alt obiect de tip String primit ca parametru
iniţializarea unui obiect de tip String cu un alt obiect de tip StringBuffer primit ca parametru
Clasa String include metode pentru:
examinarea individuală a fiecărui caracter din secvenţa stocată
compararea a doua variabile de tip String
căutarea unei anumite porţiuni dintr-un String
extragerea unei anumite porţiuni dintr-un String
crearea unei copii a unei variabile de tip String, cu sau fără transformarea caracterelor din majuscule în minuscule
determinarea lungimii şirului de caractere conţinut de un obiect de tip String
etc.
Java pune la dispoziţie un mecanism prin care se permite operatorului + să fie folosit pentru concatenarea
variabilelor de tip String. Se permite de asemenea concatenarea variabilelor de tip String cu variabile de alte tipuri, inclusiv
cele elementare (byte, short, int, etc.). Acest lucru este posibil datorită faptului că orice clasă Java este considerată ca fiind
derivată (direct sau indirect din clasa Object) iar aceasta poate transforma în variabile String datele conţinute (metoda
toString).
Exemplu:
String s1 = new String(”abc”);
String s2 = s1 + ”def”; //şirul ”def” este convertit automat în String
String s3 = s1 + 5; //se concatenează şirul iniţial cu şirul de caractere ”5”
System.out.println(s1 + s2 + 100.23f);
//etc.
Lucru individual
1. Scrieti o aplicatie Java care defineste o valoare intreaga si apoi afiseaza reprezentarea ei binară, octală și
hexazecimală. Scrieți metode de conversie a valorii citite în diferite baze de numeratie.
2. Implementati algoritmii cunoscuti de ordonare a sirurilor numerice (bubble sort, insertion sort, quick sort, etc.) si
aplicati-i asupra unui sir de valori intregi citite de la tastatura.
3. Sa se citeasca de la consola o valoare intreaga mai mare decat 16.777.216. Sa se foloseasca masti pe biti pentru a izola
fiecare din cei 4 octeti ai valorii citite. Afisati atat valoarea initiala cat si valorile izolate in zecimal, binar si hexazecimal.
4. Sa se citeasca de la tastatura elementele unei matrice m x n de valori intregi. Sa se implementeze metodele care:
- afiseaza matricea linie cu linie, apoi coloana cu coloana; considerati si cazul in care numarul de coloane la fiecare linie
este mai mare cu 1 fata de linia precedenta;
- elimina din matrice (egalizeaza cu 0) valorile care nu sunt cuprinse intre doua limite specificate
- afiseaza vecinii existenti ai unui element a carui indecsi sunt trimisi ca parametri
5. Scrieti un program Java care genereaza 2 valori aleatoare si efectueaza asupra lor cateva operatii matematice.
6. Se defineste un sir de variabile de tip String care va fi populat cu toate cartile dintr-un pachet de joc. Se vor extrage
aleator carti in pachet pana cand cartea curenta va fi de trefla cu valoarea mai mare decat 8. Sa se afiseze la fiecare pas
cartea curenta si numarul de carti deja extrase.
Indiciu: Folosiți un generator de numere aleatoare. Cartile deja extrase sunt eliminate.
7. Fie un algoritm de criptare în cadrul căruia se ia un text de intrare ‘A’ format din litere mici și mari. Separat se
definește un șir de caractere ”B” cărora li se asociază aleator câte un număr întreg de la 1 la 100. Algoritmul verifică dacă
literele din șirul B există în șirul A și face suma numerelor asociate acestora. La suma finală se adaugă pozițiile din șirul A
la care au fost găsite caracterele din șirul B. Dacă suma finală este mai mare de 100, criptarea a fost validă. Afișați un
mesaj corespunzător.
Exemplu:
Șirul A = ”aTmPpDsst”
Șirul B =”ams”
Valorile asociate elementelor din șirul B: 11 33 7
Suma: (11+33+7+7)+(1+3+7+8)=77 -> CRIPTARE NEVALIDĂ
8. Implementați jocul X-0 naiv ca și joc automat. Programul va selecta aleator la fiecare pas o poziție pe care o va
completa fie cu X, fie cu 0 în mod alternativ. Poziția selectată nu poate fi una completată deja. Jocul se termină atunci
când nu mai există casuțe libere sau când unul dintre jucători a obținut o linie, coloană sau diagonală completă. Afișați
pe ecran fiecare pas al algoritmului sub forma unei matrici, caracterul * va reprezenta o casuță necompletată. De ex:
X * *
* * *
* * *
--
X * *
* 0 *
* * *
--
X * *
* 0 *
X * *
--
X * 0
* 0 *
X * *
X * 0
X 0 *
X * *
Joc terminat!
--------
*Extindeți aplicația astfel încât dimensiunile tablei de joc să poată fi variabile.
Individual work
1. Write a Java application which defines an integer value and displays it as a binary, octal and hexadecimal string. Write
various bases convertion methods.
2. Implement the already known sorting algorithms (bubble sort, insertion sort, quick sort, etc.) and apply them upon an
array of integer variables read from the keyboard.
3. Read from the keyboard an integer value bigger than 16.777.216. Use bit masks for isolating each of the 4 bytes of the
read value. Display the initial and the isolated values as decimal, binary and hexadecimal strings.
4. Read from the keyboard the integer elements of a m x n matrix. Implement the methods that:
- display the matrix, line by line and column by column; consider the case in which the number of elements from each
line is bigger with 1 than the number of elements from the previous line;
- eliminate from the matrix (turns into 0) the values that are outside the interval defined by 2 specified limits;
- display the existent neighbour values of an element identified by its indexes (sent as parameters);
5. Develop a Java program that generates two random numbers and performs some mathematical operations with
them.
6. Define an array of String variables that will be populated with all the playing cards from a complete package. A series
of randomly picked cards will be extracted until the current card will have the clubs sign and a value greater than 8. At
each step, the current card and the number of already extracted cards will be displayed.
Hint: Use a random numbers generator. The cards which were already used are eliminated.
7. Assume that there is a cryptographic algorithm which takes an input text ‘A’ composed of lower and upper case
characters. Separately a character string ‘B’ is defined. Each character from B has an associated random interger value
between 1 and 100. The algorithm checks if the letters from B are found in A and adds the associated numerical values.
To the final sum value, the algorithm also adds the positions from string A where characters from string B were found. If
the final sum is larger than 100, the encryption was valid. Display a message with the result.
Example:
String A = ”aTmPpDsst”
String B =”ams”
Associated numerical values for string B: 11 33 7
Sum: (11+33+7+7)+(1+3+7+8)=77 -> INVALID ENCRYPTION
8. Implement the naive dots and crosses game (X-O) as an automated game. The application will randomly select at each
step a position from the board at which to place the next symbol, alternating between X and O. The selected position
cannot be an already filled square. The game ends when either there are no more empty squares on the board, or one
of the symbols wins by completing a line, a column or a diagonal. Display on the screen each step of the algorithm as a
matrix. Unfilled squares will be represented by the * character.
Example:
X * *
* * *
* * *
--
X * *
* 0 *
* * *
--
X * *
* 0 *
X * *
--
X * 0
* 0 *
X * *
X * 0
X 0 *
X * *
Game over!
--------
*Extend the application so that the dimensions of the board (number of rows and columns) can be changed.