java- curs pentru inițiere...java- curs pentru inițiere clasa a xi-a a prof. sanda popescu...
TRANSCRIPT
Java- curs pentru inițiereClasa 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
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.
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 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)
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.
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++.
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
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);
}
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 !!!
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);
}
}
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 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
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.
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
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
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 + " ");}
}
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++
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();}
}
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");
}
}