java- curs pentru inițiere...java- curs pentru inițiere clasa a xi-a a prof. sanda popescu...

23
Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu

Upload: others

Post on 09-Nov-2020

41 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Java- curs pentru inițiereClasa a XI-a A

Prof. Sanda Popescu

Page 2: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

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

Page 3: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Cum funcționează Java

Text(*.java)

Binary File(*.class)

javac (JDK)

Computer program

JVM(Java Virtual Machine,

creată de JRE)

Crearea aplicațiilor Java pentru mobile phone sau pentru Internet sau alte aplicații de tip desktop, necesită instalarea altor tipuri de JDK și/sau de JRE.

Page 4: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Crearea unui program simplu

• Lansare Eclipse, File-New-Java project, Nume proiect, Finish

• In panou Navigator, click-dreapta pe proiect, New-Class

Page 5: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

• 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

}}

Page 6: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

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

Page 7: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Utilizarea variabilelor, tipuri primitive de date

Java folosește 8 tipuri de variabile simple:

1. int [-231, 231-1], numere întregi reprezentate pe4 octeți (bytes)

2. short [-215, 215-1], numere întregi reprezentatepe 2 octeți (bytes)

3. long [-263, 263-1], numere întregi reprezentatepe 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)

Page 8: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

package nrprime;

import java.util.Scanner;

public class nrprime {

public static void main(String[] args) {

int [][] a;

int n, m, i, j, k, d;

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();

k = 0;

for (i = 2; i <= n; i += 2)

for (j = 1; j <= m; j++){

OK = true;

if (a[i][j] <= 1) OK = false;

for (d = 2; d * d <= a[i][j] && OK; d++)

if (a[i][j] % d == 0) OK = false;

if (OK) k++;

}

System.out.println(k);

}

}

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.

Page 9: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

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

Page 10: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

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++.

Page 11: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Instrucțiunile de control în Java sunt identice din punct de vedere sintactic și semantic cu cele din C++

package ciframaxima;/*programul afisează cifra maxima a unui numar natural n */import java.util.Scanner;

public class ciframaxima {

public static void main(String[] args) {Scanner cin = new Scanner(System.in);int n, cmax, c;n = cin.nextInt();cmax=0;do{

c=n%10;if (c>cmax) cmax=c;n/=10;

}while (n!=0);System.out.println(cmax);

}

}

import java.util.Scanner;

/*se citesc n numere naturale. Sa se verifice pentru fiecare numar citit daca este patrat perfect */

public class p2572 {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);//cin.close();int n = cin.nextInt();

for (int i = 0; i < n; i++) {int x = cin.nextInt();// System.out.println(Math.sqrt(x));

if ((int) Math.sqrt(x) == Math.sqrt(x)) {System.out.println("DA");} else {System.out.println("NU");}

}

}

}

Se citește un număr n și apoi n numere naturale. Să se verifice pentru fiecare număr dacă este pătrat perfect

Page 12: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

package cifre005;

/* pentru cate numere din cele n citite, sumacifrelor impartita la 9 da restul r */

import java.util.Scanner;

public class cifre005 {

public static void main(String[] args) {Scanner cin = new Scanner(System.in);long n, x, i, r, k = 0;n = cin.nextLong();r = cin.nextLong();for (i = 1; i <= n; i++){

x = cin.nextLong();if (x % 9 == r)

k++;}

System.out.println(k);

}

}

package inlocuire2;

//se inlocuiește cu c2, fiecare cifra egală cu c1

import java.util.Scanner;

public class inlocuire2 {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);

long n, c, c1, c2, nou = 0, p = 1;

n = cin.nextInt();

c1 = cin.nextInt();

c2 = cin.nextInt();

do {

c = n % 10;

if (c == c1)

nou = nou + c2 * p;

else nou = nou + c * p;

p *= 10;

n /= 10;

}while (n != 0);

System.out.println(nou);

}

Page 13: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Citire din fișier, afișare în fișier

import java.io.File;

import java.io.FileNotFoundException;

import java.io.PrintStream;

import java.util.Scanner;

public class maxim2 {

public static void main(String[] args) throws FileNotFoundException {

//InputFile, OutputFile sunt obiecte ale clasei File

int a, b, x;

File InputFile = new File("maxim.in"); //declarare variabile fisier

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);

//citește a și b din fișier

a = fin.nextInt();

b = fin.nextInt();

if (a > b) x = a;

else x = b;

//se redirecționează afișarea spre fișier

System.setOut(fout); S

ystem.out.println(x);

}

}

!!!!

Fișierele se crează din File-New-File direct în folderul proiectului, lângă src, NU în src !!!

Page 14: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

import java.io.*;import java.util.Scanner;

public class CitireAfisareFisier {

public static void main(String[] args) throws FileNotFoundException {

int n, x, S, i;//fisierele de intrare si iesire se creeaza in folderul //in care se gaseste proiectul, chiar din meniu de la//File-New-File si alegi unde sa le salvezi, cu extensiile//.in şi .out şi nu mai trebuie precizata calea

//definesc obiectele InputFile si OutputFile ale clasei //File - fisiere de intrare si iesireFile InputFile = new File("bac.in");File OutputFile = new File ("bac.out");//definesc obiectele fin si fout ale claselor Scanner, //respectiv PrintStreamScanner fin = new Scanner(InputFile);PrintStream fout = new PrintStream(OutputFile);

n = fin.nextInt();

S = 0;

for (i=1; i<=n; i++) {

x = fin.nextInt();

S += x;

}

//directionez afisarea in fisier

System.setOut(fout);

//acum afiseaza in fiser

System.out.println(S);

}

}

Page 15: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

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.

Page 16: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Tablouri unidimensionale (vectori) în Javapackage afisareminmax;

import java.util.Scanner;

public class afisareminmax {

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

v = new int[1001]; //se alocă memorie pentru tabloul de la adresa v

n = cin.nextInt();

for (i=1; i<=n; i++)

v[i]= cin.nextInt();

Min=Max=v[1];

pmin=pmax=1;

for (i=2; i<=n; i++){

if (v[i]>Max){

Max=v[i];

pmax=i;

}

if (v[i]<Min){

Min=v[i];

pmin=i;

}

}

if (pmin>pmax) {

aux = pmin;

pmin = pmax;

pmax = aux;

}

//System.out.println(pmin + " " + pmax);

for (i=pmin; i<=pmax; i++)

System.out.print(v[i]+ " ");

}

}

Declarare variabilă de tip tablou

Page 17: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

import java.util.Scanner;

public class paritate1 {

public static void main(String[] args) {

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);

}

}

Problema #633 de pe PBINFOSe 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

valori impare din șir.

Page 18: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Tablouri bidimensionale (matrice) în Java

import java.util.Scanner;

public class sumalinii {

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();

for (i = 1; i <= n; i++){

s = 0;

for (j = 1; j <= m; j++)

s += a[i][j];

System.out.print(s + " ");

}

}

}

#666 Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se

determine suma elementelor de pe fiecare linie

Page 19: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Vectori de string-uripackage vectordestringuri;

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);

n = cin.nextInt();

for (i = 1; i <= n; i++)

cuvinte[i] = cin.nextLine();

for (i = 1; i <= n; i++)

System.out.println(cuvinte[i] + " ");

}

}

Date de intrare

Date de ieșire

Page 20: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

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-urifor (String cuvant: cuvinte)

System.out.print(cuvant + " ");}

}

Page 21: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Clase și obiecte în Java - POO

package clase;

import java.util.Scanner;

class Person {/* o clasă poate conține:1. Date2. Subprograme, în Java se numesc METODE*///dateString name;int age;

}

public class primaClasa {public static void main(String[] args) {

//private Object System;Scanner cin = new Scanner (System.in);Person person1 = new Person(); //s-au definit două person2 = new Person(); //obiecte ale clasei Person

// accesul la datele clasei se face prin punct(.)person1.name = cin.nextLine();person2.name = cin.nextLine();

person1.age = cin.nextInt();person2.age = cin.nextInt();if (person1.age>person2.age)

System.out.println(person1.name);else System.out.println(person2.name);

}

}

O clasă poate conține date și/sau metode.În continuare, un exemplu de clasă ce conține doar date, și cum sunt ele utilizate.Observați asemănarea cu tipul struct din C++

Page 22: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Metode: acele părți ale clasei care descriu o funcție (un subprogram) specifică clasei și obiectelor clasei.package clase;

import java.util.Scanner;

class Person {/* o clasă poate conține:1. Date2. Subprograme, în Java se numesc METODE*///dateString name;int age;//metodevoid speak (){

System.out.println("I am " + name + " and I am older");}

}

public class primaClasa {public static void main(String[] args) {

//private Object System;Scanner cin = new Scanner (System.in);Person person1 = new Person(); //s-au definit două person2 = new Person(); //obiecte ale clasei Person

// accesul la datele sau/si metodele clasei se face prin // punct(.)person1.name = cin.nextLine();person2.name = cin.nextLine();

person1.age = cin.nextInt();person2.age = cin.nextInt();if (person1.age>person2.age)

person1.speak();else person2.speak();}

}

Page 23: Java- curs pentru inițiere...Java- curs pentru inițiere Clasa a XI-a A Prof. Sanda Popescu Instalare Eclipse –mediul de programare pentru Java - Instalare SE (standard Edition)

Metode care returnează un rezultatpackage clase;

import java.util.Scanner;

class Person {

String name;

int age;

int anulNasterii(){

return 2019 - age;

}

boolean bisect (int numar){

if (numar % 4 == 0 || numar % 100 != 0) return true;

if(numar % 400 == 0)

return true;

return false;

}

}

public class primaClasa {

public static void main(String[] args) {

Scanner cin = new Scanner (System.in);

Person person1 = new Person();

Person person2 = new Person();

Person person = new Person();

person1.name = cin.nextLine();

//person2.name = cin.nextLine();

person1.age = cin.nextInt();

//person2.age = cin.nextInt();

if (person1.bisect(person1.anulNasterii()))

System.out.println(person1.name + " s-a nascut in an bisect");

else System.out.println(person1.name + " NU s-a nascut in an bisect");

}

}