Sunteți pe pagina 1din 23

Java- curs pentru inițiere

Clasa a XI-a A
Prof. Sanda Popescu
Instalare Eclipse – mediul de programare pentru Java

- Instalare SE (standard Edition) JRE (Java Runtime Environment)


versiunea 12.0
- Instalare JDK (Java Development Kit), aceeași versiune ca JRE
- Instalare Eclipse Java IDE (Integrated Development Environment) for
Java Developers
Cum funcționează Java
Crearea aplicațiilor Java pentru mobile phone sau
Text pentru Internet sau alte aplicații de tip desktop, necesită
(*.java) instalarea altor tipuri de JDK și/sau de JRE.

javac
(JDK)
Binary File
(*.class)

JVM
(Java Virtual Machine,
creată de JRE)

Computer program
Crearea unui program simplu
• Lansare Eclipse, File-New-Java project, Nume proiect, Finish
• In panou Navigator, click-dreapta pe proiect, New-Class
• se dă un nume clasei, se bifează public
static void main-Finish pentru a se crea în
mod automat metoda main
• Metoda main este practic punctul de unde
începe programul să ruleze
• Se observă cele două tipuri de comentarii,
precum cele din C++; acestea pot fi șterse
package nume;
public class nume_clasa {
/* comentariu pe mai multe rânduri
*/
public static void main(String[] args) {
// comentariu pe un singur rând

}
}
Sysout press Ctrl+Space completează automat
metoda Print care permite afișarea datelor,
mesaje text la consolă.

Mesajele text se vor cuprinde între ghilimele


(”mesaj ”), ca în C++.

package nume;

public class nume_clasa {

public static void main(String[] args) {


System.out.println("Primul program Java");

} shortcut
Sysout press Ctrl+Space

}
Utilizarea variabilelor, tipuri primitive de date
Java folosește 8 tipuri de variabile simple:
1. int [-231, 231-1], numere întregi reprezentate pe
4 octeți (bytes)
2. short [-215, 215-1], numere întregi reprezentate
pe 2 octeți (bytes)
3. long [-263, 263-1], numere întregi reprezentate
pe 8 octeți (bytes)
4. double, numere reale dublă precizie,
reprezentate pe 8 octeți (bytes)
5. float, numere reale simplă precizie,
reprezentate pe 4 octeți (bytes)
6. char, caractere cuprinse între apostrof ‘C’
7. boolean, ce poate păstra două posibile valori,
true sau false
8. byte [-128, 127], numere întregi ce se reprezintă
pe un singur octet (byte)
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine câte dintre elementele
situate pe linii cu indici pari sunt prime.
package nrprime; k = 0;
for (i = 2; i <= n; i += 2)
for (j = 1; j <= m; j++){
import java.util.Scanner;
OK = true;
if (a[i][j] <= 1) OK = false;
public class nrprime { for (d = 2; d * d <= a[i][j] && OK; d++)
if (a[i][j] % d == 0) OK = false;
public static void main(String[] args) { if (OK) k++;
int [][] a; }
int n, m, i, j, k, d; System.out.println(k);
boolean OK; }
Scanner cin = new Scanner(System.in);
a = new int [101][101]; }
n = cin.nextInt();
m = cin.nextInt();
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
a[i][j] = cin.nextInt();
Clasa String
• String nu este un tip primitiv de
date, este un tip special numit
clasă.
• De tip string se vor declara
obiecte, așa cum de tip primitiv se
declară variabile.
• În continuare ne vom referi la clasa
String și la obiecte din această
clasă
• Conceptele clasă și obiect sunt
introduse aici, dar vor fi detaliate
mai târziu text1, text2, spatiu sunt obiecte ale clasei String
Clasa Scanner – citirea datelor de la tastatură
Iar la consolă se introduc datele cu verde și se afișează
în formatul de mai jos

Clasa se numește Scanner iar variabila cin este de tip


Scanner ce identifică un obiect din clasa Scanner.
Se putea folosi orice alta denumire (Input, Read, etc.) dar
am preferat să folosesc cin pentru similitudinea cu citirea
din C++.
Se citește un număr n și apoi n numere naturale. Să se verifice pentru fiecare număr dacă este pătrat perfect

Instrucțiunile de control în Java sunt identice din punct


de vedere sintactic și semantic cu cele din C++
package ciframaxima; import java.util.Scanner;
/*programul afisează cifra maxima a unui /*se citesc n numere naturale. Sa se verifice pentru fiecare
numar natural n */ numar citit daca este patrat perfect */
import java.util.Scanner; public class p2572 {
public static void main(String[] args) {
public class ciframaxima {

public static void main(String[] args) { Scanner cin = new Scanner(System.in);


Scanner cin = new Scanner(System.in); //cin.close();
int n, cmax, c; int n = cin.nextInt();
n = cin.nextInt();
cmax=0; for (int i = 0; i < n; i++) {
do{ int x = cin.nextInt();
c=n%10; // System.out.println(Math.sqrt(x));
if (c>cmax)
cmax=c; if ((int) Math.sqrt(x) == Math.sqrt(x)) {
n/=10; System.out.println("DA");
}while (n!=0); } else {
System.out.println(cmax); System.out.println("NU");
}
} }
}
} }
package inlocuire2;
package cifre005;
//se inlocuiește cu c2, fiecare cifra egală cu c1
/* pentru cate numere din cele n citite, suma
cifrelor impartita la 9 da restul r */ import java.util.Scanner;
import java.util.Scanner;
public class inlocuire2 {
public class cifre005 {

public static void main(String[] args) {


public static void main(String[] args) { Scanner cin = new Scanner(System.in);
Scanner cin = new Scanner(System.in);
long n, x, i, r, k = 0; long n, c, c1, c2, nou = 0, p = 1;
n = cin.nextLong(); n = cin.nextInt();
r = cin.nextLong(); c1 = cin.nextInt();
for (i = 1; i <= n; i++){ c2 = cin.nextInt();
x = cin.nextLong();
do {
if (x % 9 == r)
k++; c = n % 10;
} if (c == c1)
System.out.println(k); nou = nou + c2 * p;
else nou = nou + c * p;
} p *= 10;
n /= 10;
}while (n != 0);
} System.out.println(nou);

}
Citire din fișier, afișare în fișier
import java.io.File;
//citește a și b din fișier
import java.io.FileNotFoundException;
import java.io.PrintStream;
a = fin.nextInt();
import java.util.Scanner;
b = fin.nextInt();

public class maxim2 { if (a > b) x = a;


public static void main(String[] args) throws FileNotFoundException { else x = b;
//InputFile, OutputFile sunt obiecte ale clasei File //se redirecționează afișarea spre fișier
int a, b, x; System.setOut(fout); S
File InputFile = new File("maxim.in"); //declarare variabile fisier ystem.out.println(x);
File OutputFile = new File ("maxim.out"); //de intrare, ieșire }

//Citirea se face cu clasa Scanner, afișarea se face cu clasa PrintStream


//fin este obiect al clasei Scanner }

//fout este obiect al clasei PrintStream


Scanner fin = new Scanner(InputFile);
!!!!
PrintStream fout = new PrintStream(OutputFile); Fișierele se crează din File-New-File direct în
folderul proiectului, lângă src, NU în src !!!
import java.io.*;
import java.util.Scanner; n = fin.nextInt();
S = 0;
public class CitireAfisareFisier { for (i=1; i<=n; i++) {
x = fin.nextInt();
public static void main(String[] args) throws S += x;
FileNotFoundException { }

int n, x, S, i; //directionez afisarea in fisier


//fisierele de intrare si iesire se creeaza in folderul System.setOut(fout);
//in care se gaseste proiectul, chiar din meniu de la //acum afiseaza in fiser
//File-New-File si alegi unde sa le salvezi, cu extensiile System.out.println(S);
//.in şi .out şi nu mai trebuie precizata calea }
}
//definesc obiectele InputFile si OutputFile ale clasei
//File - fisiere de intrare si iesire
File InputFile = new File("bac.in");
File OutputFile = new File ("bac.out");
//definesc obiectele fin si fout ale claselor Scanner,
//respectiv PrintStream
Scanner fin = new Scanner(InputFile);
PrintStream fout = new PrintStream(OutputFile);
IMPORTANT!
Pentru problemele de pe pbinfo rezolvate în Java, TREBUIE ca proiectele și clasele
create în Eclipse, să poarte numele problemei.
De exemplu, dacă problema se numește cifre001, atunci vom denumi proiectul și
clasa cifre001.
Tablouri unidimensionale (vectori) în Java
for (i=2; i<=n; i++){
package afisareminmax; if (v[i]>Max){
Max=v[i];
import java.util.Scanner; pmax=i;
}
if (v[i]<Min){
public class afisareminmax {
Min=v[i];
pmin=i;
public static void main(String[] args) { }
Scanner cin=new Scanner(System.in);
}
int i, n, pmin, pmax, Min, Max, aux;
int[] v; // se declara un v, care este un pointer, o adresa if (pmin>pmax) {
v = new int[1001]; //se alocă memorie pentru tabloul de la adresa v aux = pmin;
n = cin.nextInt(); pmin = pmax;
for (i=1; i<=n; i++) Declarare variabilă de tip tablou pmax = aux;
v[i]= cin.nextInt(); }
Min=Max=v[1]; //System.out.println(pmin + " " + pmax);
pmin=pmax=1; for (i=pmin; i<=pmax; i++)
System.out.print(v[i]+ " ");
}
}
import java.util.Scanner; Problema #633 de pe PBINFO
public class paritate1 { Se dă un șir cu n elemente, numere naturale. Determinați diferența în
valoare absolută dintre numărul de valori pare din șir și numărul de
public static void main(String[] args) { valori impare din șir.
Scanner cin = new Scanner (System.in);
int n, i, np, ni;
int[] v ;
v = new int[1001];
n = cin.nextInt();
for (i=1; i<=n; i++)
v[i] = cin.nextInt();

np = 0;
ni = 0;
for (i=1; i<=n; i++)
if (v[i]%2==0)
np++;
else ni++;
if (ni>np) System.out.println(ni-np);
else System.out.println(np-ni);
}
}
Tablouri bidimensionale (matrice) în Java
#666 Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se
determine suma elementelor de pe fiecare linie for (i = 1; i <= n; i++){
s = 0;
import java.util.Scanner;
for (j = 1; j <= m; j++)
s += a[i][j];
public class sumalinii {
System.out.print(s + " ");
}
public static void main(String[] args) {
int [][] a;
}
int n, m, i, j, s;
Scanner cin = new Scanner(System.in);
}
a = new int [101][101];
n = cin.nextInt();
m = cin.nextInt();
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
a[i][j] = cin.nextInt();
Vectori de string-uri
package vectordestringuri;
Date de intrare
import java.util.Scanner;

public class vectoridestringuri {

public static void main(String[] args) {


String[] cuvinte = new String[101];
int n, i;
Scanner cin = new Scanner(System.in); Date de ieșire

n = cin.nextInt();
for (i = 1; i <= n; i++)
cuvinte[i] = cin.nextLine();
for (i = 1; i <= n; i++)
System.out.println(cuvinte[i] + " ");

}
package vectordestringuri;

import java.util.Scanner;

public class vectoridestringuri {

public static void main(String[] args) {


String[] cuvinte = new String[10];
int n, i;
Scanner cin = new Scanner(System.in);

n = cin.nextInt();
for (i = 0; i <= n - 1; i++)
cuvinte[i] = cin.nextLine();

// o alta modaliate de a afisa toate string-urile


// din vectorul de string-uri
for (String cuvant: cuvinte)
System.out.print(cuvant + " ");
}

}
Clase și obiecte în Java - POO
public class primaClasa {
public static void main(String[] args) {
O clasă poate conține date și/sau metode.
//private Object System;
În continuare, un exemplu de clasă ce conține doar date, Scanner cin = new Scanner (System.in);
și cum sunt ele utilizate. Person person1 = new Person(); //s-au definit două
Observați asemănarea cu tipul struct din C++ person2 = new Person(); //obiecte ale clasei Person

package clase; // accesul la datele clasei se face prin punct(.)


person1.name = cin.nextLine();
person2.name = cin.nextLine();
import java.util.Scanner;
person1.age = cin.nextInt();
person2.age = cin.nextInt();
class Person { if (person1.age>person2.age)
/* o clasă poate conține: System.out.println(person1.name);
1. Date else System.out.println(person2.name);
2. Subprograme, în Java se numesc METODE }
*/
//date
String name;
int age; }
}
Metode: acele părți ale clasei care descriu o funcție (un subprogram) specifică
clasei și obiectelor clasei.
package clase; public class primaClasa {
public static void main(String[] args) {
import java.util.Scanner; //private Object System;
Scanner cin = new Scanner (System.in);
Person person1 = new Person(); //s-au definit două
class Person { person2 = new Person(); //obiecte ale clasei Person
/* o clasă poate conține:
1. Date // accesul la datele sau/si metodele clasei se face
2. Subprograme, în Java se numesc METODE prin // punct(.)
*/ person1.name = cin.nextLine();
//date person2.name = cin.nextLine();
String name;
int age; person1.age = cin.nextInt();
//metode person2.age = cin.nextInt();
void speak (){ if (person1.age>person2.age)
System.out.println("I am " + name + " and I am person1.speak();
older"); else person2.speak();
} }
} }
Metode care returnează un rezultat
public class primaClasa {
package clase;
public static void main(String[] args) {

import java.util.Scanner; Scanner cin = new Scanner (System.in);


Person person1 = new Person();
Person person2 = new Person();
class Person {
Person person = new Person();
String name;
int age; person1.name = cin.nextLine();
//person2.name = cin.nextLine();
int anulNasterii(){
return 2019 - age; person1.age = cin.nextInt();
} //person2.age = cin.nextInt();
boolean bisect (int numar){
if (numar % 4 == 0 || numar % 100 != 0) return true; if (person1.bisect(person1.anulNasterii()))
System.out.println(person1.name + " s-a nascut in an bisect");
if(numar % 400 == 0)
else System.out.println(person1.name + " NU s-a nascut in an bisect");
return true;
}
return false;
}
}
}

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