Professional Documents
Culture Documents
import java.io.*;
/* In orice program Java pot fi folosite direct toate clasele din pachetul
Java.lang .*/
/*import java.io.inputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;*/
/*PROGRAMUL CITESTE UN CARACTER SAU UN SIR*/
public class CitSir
{ public static void main( String args[] )
throws java.io.IOException /* este necesara pentru
instructiunea de citire */
{ /* CITIREA caracterelor si a sirurilor */
String sir;
System.out.print("Introduceti caracterul sau sirul a:");
sir = CitireSir(); /* Datele se citesc ca siruri de
caractere */
System.out.println("\n"); /* sare un rand
*/
System.out.println("Caracterul citit este " + sir); /* afisaza
caracterul citit */
}
static String CitireSir() throws IOException /* functia de
citire */
{ String h;
InputStreamReader f = new
InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h=g.readLine();
return h;
}
}
1
1.2. Citirea numerelor întregi
import java.io.*;
/*pentru citirea unui intreg, apare o operatie suplimentara si anume
conversia sirului de caractere intr-un numar intreg atribuit unei
variabile de tip intreg */
public class CitInt {
public static void main( String args[] )
throws java.io.IOException /* este necesara pentru instructiunea de
citire */
{ /* CITIREA caracterelor si a sirurilor */
String sir; int a;
System.out.print("Introduceti un numar a:");
sir = CitireSir(); /* Datele se citesc ca siruri de caractere */
a = Integer.valueOf(sir).intValue();
System.out.println("\n"); /* sare un rand */
System.out.println("Numarul intreg citit este " + a); /* afisaza
intregul citit */
}
static String CitireSir() throws IOException /* functia de citire
*/
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h=g.readLine();
return h;
}
}
2
1.2. Citirea numerelor reale (float)
import java.io.*;
public class CitFloat {
public static void main( String args[] )
throws java.io.IOException /* este necesara pentru
instructiunea de citire */
{/* CITIREA caracterelor si a sirurilor */
String sir; float a;
System.out.print("Introduceti un numar real a:");
sir = CitireSir(); /* Datele se citesc ca siruri de caractere */
a = Float.valueOf(sir).floatValue();
System.out.println("\n"); /* sare un rand */
System.out.println("Numarul real citit este " + a); /* afisaza
nr.real citit */
}
static String CitireSir() throws IOException /* functia de citire */
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h=g.readLine();
return h;
}
}
3
1.3 Programul combină mai multe operatii de citire de
toate tipurile.
import java.io.*;
public class CitTot {
public static void main( String args[] )
throws java.io.IOException /* este necesara pentru
instructiunea de citire */
{ /* CITIREA caracterelor si a sirurilor */
String sir; float a,d,s,p; int b,c=0,si,pi;
System.out.print("Introduceti un numar real a:");
sir = CitireSir(); /* Datele se citesc ca siruri de
caractere */
a = Float.valueOf(sir).floatValue();
System.out.print("Introduceti un numar intrg b:");
sir = CitireSir(); /* Datele se citesc ca siruri de
caractere */
b = Integer.valueOf(sir).intValue();
System.out.println("S-au citit numerele : a=" + a + " si b=" +
b);
/* afisaza nr.real citit */
c = (int) a;
System.out.println("Partea intreaga a lui a: " + c); /* afisaza
nr.real citit
*/
s = a + b;
System.out.println("a+b: " + s);
si = (int) a + b;
System.out.println("a+b(int): " + si);
p = a * b;
System.out.println("a*b: " + p);
pi = (int) a + b;
System.out.println("a*b(int): " + pi);
}
static String CitireSir() throws IOException /* functia de citire
*/
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h=g.readLine();
return h;
}
}
4
2. Utilizarea mai multor clase în surse separate in cadrul
aceluiaşi project SURSA 1 = Exemplu */
import java.io.*;
class Exemplu /* utilizarea mai multor clase */
{ public static void main(String args[]) throws IOException
{ String sir;
float a,b,c,d;
System.out.print("a=");
sir = CitireSir();
a = Float.valueOf(sir).floatValue();
System.out.print("b=");
sir = CitireSir();
b = Float.valueOf(sir).floatValue();
c= Operatii.suma(a,b);
d= Operatii.produs(a,b);
System.out.println(a + " + " + b + " = " + c);
System.out.println(a + " * " + b + " = " + d);
}
static String CitireSir() throws IOException
{ InputStreamReader f=new InputStreamReader(System.in);
BufferedReader g=new BufferedReader(f);
String h= g.readLine();
return h;
}
}
/* SURSA 2 = Operatii */
class Operatii
{ static float suma(float a,float b)
{float c = a + b;
return c;
}
static float produs(float a,float b)
{float c = a * b;
return c;
}
}
5
OBS. Cele două clase de mai sus şi anume Exemplu şi Operatii pot fi
dispuse si in aceeaşi sursă şi atunci exemplul nu mai arata decat
folosirea claselor multiple în aceeaşi sursă.
6
3.1.Calculul termenilor şirului Fibonacci în care numărul
termenilor de calculat este transmis la apelul din linia de
comandă
7
4. Siruri
4.1. Citire şir şi afişare, afişare tablou iniţializat în
program, creare alias şi afişarea acestuia.
import java.io.*;
public class Vectori {
public static void main(String args[])throws java.io.IOException
{ /* declarare prin instantiere */
String sir; int i;
int temp[] = new int[6];
/* Citire tablou */
for(i = 0 ; i<6; i++)
{
System.out.print("temp[" + i + "]=");
sir = CitireSir();
temp[i] = Integer.valueOf(sir).intValue();
}
/* Afisare tablou temp citit anterior */
System.out.println("Afisare tablou temp:");
for(i=0;i<6;i++)
{
System.out.println("temp[" + i + "]=" + temp[i] );
}
/* Declarare prin intializare - numarul elementelor este definit
de
numarul valorilor din lista*/
int lista[] = {7,2,9,4,13,10,1};
int nr = lista.length;
System.out.println("Afisare tablou lista:");
for(i=0;i<nr;i++)
{
System.out.println("lista[" + i + "]=" + lista[i] );
}
/* creare de alias*/
temp = lista;
System.out.println("lemp alias lista:");
int nrr = temp.length;
/* aflare temp alias lista*/
for(i=0;i<nr;i++)
{
System.out.println("temp[" + i + "]=" + temp[i] );
}
}
8
static String CitireSir() throws IOException
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h = g.readLine();
return h;
}
}
9
4.2. Şiruri – pachete
- pachetul principal Vvvv apelează
- pachetul minmax
Din Clasa principală vectori se apelează
funcţiile(metodele) :
- găsirea maximului dintre elementele unui şir,
- găsirea minimului dintre elementele unui şir şi
- sortarea ascendentă şi afişarea şirului sortat
ascendent
package Vvvv;
import java.io.*;
import minmax.*;
public class vectori {
public static void main(String args[])throws java.io.IOException
{ /* declarare prin instantiere */
String sir; int max=0,min=0,i;
int temp[] = new int[6];
/* Citire tablou */
for(i = 0 ; i<6; i++)
{
System.out.print("temp[" + i + "]=");
sir = CitireSir();
temp[i] = Integer.valueOf(sir).intValue();
}
for(i = 0; i < 6; i++)
{
System.out.println("temp["+i+"]=" + temp[i]);
}
int d = temp.length;
/* elementul maxim al sirului*/
max = operatii.maximul(temp, d);
System.out.println("elementul maxim=" + max);
/* elementul maxim al sirului*/
min = operatii.minimul(temp, d);
System.out.println("elementul minim=" + min);
/*Sortarea sirului sirint*/
operatii.sortx(temp);
/* Listarea sirului sortat */
int nrr = temp.length;
for(i = 0; i < nrr; i++)
{
System.out.println("temp["+i+"]=" + temp[i]);
}
10
}
static String CitireSir() throws IOException
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h = g.readLine();
return h;
}
}
package minmax;
public class operatii {
11
5. Matrice
5.1 Declararea, initializarea matricilor şi suma de matrici
class Matrice1
{ public static void main(String args[]) /* suma de matrici */
{ int i,j;
int mat1[][] = new int [3][3]; /* declarare cu rezervare de
memorie */
mat1[0][0] = 4; /* initializare element cu element
*/
mat1[0][1] = 5;
mat1[0][2] = 6;
mat1[1][0] = 7;
mat1[1][1] = 8;
mat1[1][2] = 9;
mat1[2][0] = 10;
mat1[2][1] = 11;
mat1[2][2] = 12;
/* numarul de linii al matricii 1*/
System.out.println("matricea mat1 are:" + mat1.length + "linii");
/* afisarea numarului de elemente pe fiecare linie*/
for(i=0;i<mat1.length;i++)
{ int k = i + 1;
System.out.println("linia["+k+"]=" + mat1[0].length);
}
int [][] mat2 = {{1,2,3},{4,4,4},{5,5,5}} ;
int mat3[][] = new int[3][3];
System.out.println("Matricea mat1 : "); /* afisare matrice 1 */
for(i = 0;i<mat1.length; i++ )
{ for(j = 0; j < mat1[i].length; j++)
{
System.out.print(mat1[i][j] + " ");
}
System.out.println("");
}
System.out.println("Matricea mat2 : ");/* afisare matrice 2 */
for(i = 0;i<mat2.length; i++ )
{ for(j = 0; j < mat2[i].length; j++)
{ System.out.print(mat2[i][j] + " ");
}
System.out.println(" ");
}
for(i = 0;i<mat3.length; i++ )
{ for(j = 0; j < mat3[i].length; j++)
12
{ mat3[i][j] = mat2[i][j] + mat1[i][j];
}
}
System.out.println("Matricea suma mat3 : ");/* afisare suma */
for(i = 0;i<3; i++ )
{ for(j = 0; j < 3; j++)
{ System.out.print(mat3[i][j] + " ");
}
System.out.println(" ");
}
}
}
13
5.2. Încărcarea unui tablou prin citire de la tastatură,
redefinire de matrice, tablou cu un nummăr de linii de lungime
variabilă
import java.io.*;
public class Matrice2 {
public static void main(String args[]) throws java.io.IOException
{String sir; int ncol,m,n;
int [][] mat1 = new int[4][];/*Matrice de 4 linii cu un numar
diferit de coloana*/
/*Citirea unei matricii anterior definite */
System.out.println("Tabloul mat1 are 4 linii ");
for (int i = 0;i < 4; i++)
{ int k = i+1;
System.out.print("Nr de elemente al liniei " + k + ":");
sir = CitireSir();
ncol = Integer.valueOf(sir).intValue();
mat1[i] = new int[ncol];
for(int j = 0;j < ncol; j++)
{ System.out.print("mat1[" + i+ "][" + j + "]=" );
sir = CitireSir();
mat1[i][j] = Integer.valueOf(sir).intValue();
}
}
/*Listarea tablului citit*/
System.out.println("Tabloul citit:");
for (int i = 0;i < 4; i++)
{ ncol = mat1[i].length;
for(int j = 0 ;j < ncol; j++) System.out.print(mat1[i][j]
+ " ");
System.out.println("");
}
/*Definire tablou prin lista de valori*/
int [][] mat2 = {{1,1,1},{2,2,2},{3,3,3}};
System.out.println("Afisare mat2 :");
for(int i=0;i<3;i++)
{for(int j=0;j<3;j++)System.out.print(mat2[i][j] + " ");
System.out.println(" ");
}
/*mat1 devine alias al lui mat2*/
mat1 = mat2;
System.out.println("Mat1 alias mat2:");
for (int i = 0;i < mat2.length; i++)
{ ncol = mat1[i].length;
14
for(int j = 0 ;j < ncol; j++) System.out.print(mat1[i][j]
+ " ");
System.out.println("");
}
/*redefinire de tablou*/
System.out.println("Redefinire tablou mat2:");
System.out.print("Nr de linii al noului tablou mat2: ");
sir = CitireSir();
m = Integer.valueOf(sir).intValue();
mat2 = new int[m][]; /*redefinire mat2*/
for (int i = 0;i < m; i++)
{ int k = i+1;
System.out.print("Nr de elemente al liniei " + k + ":");
sir = CitireSir();
ncol = Integer.valueOf(sir).intValue();
mat2[i] = new int[ncol];
for(int j = 0;j < ncol; j++)
{ System.out.print("mat2[" + i+ "][" + j + "]=" );
sir = CitireSir();
mat2[i][j] = Integer.valueOf(sir).intValue();
}
}
System.out.println("mat2 redefinit:");
for (int i = 0;i < mat2.length; i++)
{ ncol = mat2[i].length;
for(int j = 0 ;j < ncol; j++) System.out.print(mat2[i][j]
+ " ");
System.out.println("");
}
}
static String CitireSir() throws IOException
{ InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
String h = g.readLine();
return h;
}
}
15
6. Fluxuri
6.1. Instructiunea IF
6.1.1 Exemplul 1
package PachetCitiri;
import java.io.*;
public class Citiri {
public static String CitireSir() throws IOException
{
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
String h = g.readLine();
return h;
}
}
16
6.1.2 Exemplul 2
17
6.1.3 Exemplul 3
18
6.2. Instrucţiunile while şi switch
În exemplul următor, se citesc trei variabile operand 1,operand 2
şi operaţie care poate fi unul din semnele aritmetice +,-,*,/. În funcţie
de semnul operaţie citit, se efectuează operaţia aritmetică
corespunzătoare după care se afişază rezultatul. Calulele se pot
efectua pentru mai multe seturi de operanzi şi operaţie şi se incheie în
momentul când de la tastatură s-a transmis caracterul &.
import java.io.*;
public class switchex{
public static void main(String args[]) throws
java.io.IOException
{String sir=" " ;
float x,y,rez=0; char op;
while(!sir.equals("&"))
{ System.out.print("Operand 1 =");
sir = CitireSir();
if (sir.equals("&")) break;
x = Float.valueOf(sir).floatValue();
System.out.print("Operand 2 =");
sir = CitireSir();
if (sir.equals("&")) break;
y = Float.valueOf(sir).floatValue();
System.out.print("Operatie =");
sir = CitireSir();
if (sir.equals("&")) break;
op = sir.charAt(0);
System.out.println( "op=" + op);
switch (op)
{ case '+' : rez = x + y; break;
case '-' : rez = x - y; break;
case '*' : rez = x * y; break;
case '/' : rez = x / y ; break;
}
System.out.println( x +“ “ + op +” “ + y+ ” “ + "=" + rez);
}
}
static String CitireSir() throws IOException
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h=g.readLine();
return h;
}
}
19
6.3 Instrucţiunea do..while
6.3.1. Exemplul 1.
Exemplul rezolvă următoarea problemă.
Se cere să determinăm numerele naturale care satisfac conditia
n9 + 7n3 +12n2 <= |a|
unde |a| este modulul unui num[r real dat
import java.io.*;
import PachetCitiri.*;
public class DoWhile {
public static void main(String args[]) throws
java.io.IOException
{ String s; float a; int m,n;
System.out.print("a=");
s = Citiri.CitireSir();
a = Float.valueOf(s).floatValue();
if(a<0)a = Math.abs(a);
n = 0;
do{System.out.println("n="+n);
n = n+1;
m = (int)(Math.pow(n, 9)+ 7*Math.pow(n, 3)+12*n*n );
System.out.println("m=" + m + " pentru "+"n="+n);
}while(m<=a);
}
}
Aici am folosit din nou functia de citire de la exemplul Flux11.
Reamintim secvenţa de introducere in compilare a project-ului
Flux11. Pentru a folosi PachetCitiri din primul exemplu se procedează
urmând următoarea secvenţă de paşi :
- In packageexplorer click dreapta pe project-ul flux2
- Alege Properties, apoi
- Alege JavaBuildPath,
- Alege Projects
- Add>bifeaza Flux11
20
6.3.2. Exemplul 2.
|yi + yi-1|< ε
import java.io.*;
import PachetCitiri.*;
public class DoWhile2 {
public static void main(String args[]) throws java.io.IOException
{ String s; /*sirul in care se face citirea de la consola*/
int n; /*indicele termenilor din sir*/
float x, /*numarul a carui radacina se calculeaza*/
u,v,/*termenii yi-1 si yi*/
w, /*diferenta dintre cei doi termeni*/
eps; /*precizia de calcul*/
System.out.print("x=");
s = Citiri.CitireSir();
x = Float.valueOf(s).floatValue();
System.out.print("eroarea eps=");
s = Citiri.CitireSir();
eps = Float.valueOf(s).floatValue();
n = 0; /*initializare indice de sir*/
v = 1; /*initializarea primului termen al sirului*/
do{ n = n + 1; /* n=1 = indicele termenului care se
calculeaza, v*/
u = v; /* primul termen devine anterior*/
v = (u+x/u)/2; /* calcului termenului urmator*/
w = Math.abs(u - v);
}while(w > eps);
System.out.println("eps="+eps+" x=" + x + " radical din x=" +
v + "la iteratia=" + n);
}
}
21
Reamintim secvenţa de introducere in compilare a project-ului
Flux11. Pentru a folosi PachetCitiri din primul exemplu se procedează
urmând următoarea secvenţă de paşi :
- In packageexplorer click dreapta pe project-ul flux2
- Alege Properties, apoi
- Alege JavaBuildPath,
- Alege Projects
- Add>bifeaza Flux11
22
6.4. Instructiunea While
import java.io.*;
import PachetCitiri.*;
public class While {
public static void main(String args[]) throws
java.io.IOException
{String s; /*variabila in care se citesc valorile externe*/
int a, /* deimpartitul */
b, /* impartitorul */
c, /* catul */
r; /* restul */
System.out.print(" deimpartitul a=");
s = Citiri.CitireSir();
a = Integer.valueOf(s).intValue();
System.out.print(" impartitorul b=");
s = Citiri.CitireSir();
b = Integer.valueOf(s).intValue();
r = a; c = 0;
while(r>=b)
{ r = r - b;
c = c + 1;
}
System.out.println(a + " / " + b + " = " + c + " rest=" + r);
}
}
23
7. Cicluri - exemple de utilizare a instrucţiunilor ciclice
7.1. Exemplul 1
import java.io.*;
import PachetCitiri.*;
public class CicluriEx1 {
public static void main(String args[]) throws
java.io.IOException
{ String sir; /* Variabila in care se fac citirile de la tastatura */
int i,n; /* Indici pentru termenii sirului */
float s, /* suma termenilor */
a, /* abaterea fata de medie */
m; /* suma termenilor */
System.out.print("indicele ultimului termen al sirului n=");
sir = Citiri.CitireSir();
n = Integer.valueOf(sir).intValue();
float x[] = new float[n+1]; /* tabloul termenilor sirului
*/
s = 0; /* initializare suma = 0 */
for(i=0;i<=n;i++) /* citirea termenilor si insumarea lor */
{ System.out.print("x["+i+"]=");
sir = Citiri.CitireSir();
x[i] = Float.valueOf(sir).floatValue();
s = s + x[i];
}
m = s/(n + 1);
System.out.println("Media termenilor sirului=" + m);
System.out.println("Valori si abateri de la medie :");
for(i=0;i<=n;i++)
{
a = x[i] - m;
System.out.println("x["+i+"]="+x[i]+",a["+i+"]="+a);
}
}
}
24
Reamintim secvenţa de introducere in compilare a project-ului
Flux11. Pentru a folosi PachetCitiri din primul exemplu se procedează
urmând următoarea secvenţă de paşi :
- In packageexplorer click dreapta pe project-ul flux2
- Alege Properties, apoi
- Alege JavaBuildPath,
- Alege Projects
- Add>bifeaza Flux11
25
7.2. Exemplul 2
import java.io.*;
import PachetCitiri.*;
public class CicluriEx2 {
public static void main(String[] args) throws java.io.IOException
{ String s; /* variabila in care se citesc datele de la
tastatura*/
int i, /* indicele termenilor sirului */
n,
k; /* contor pentru ordonarea sirului */
float buf; /* zona tampon (buffer)*/
System.out.print("numarul de termeni ai sirului:");
s = Citiri.CitireSir();
n = Integer.valueOf(s).intValue();
float x[]= new float[n+1];/* rezervare tablou pentru
termenii sirului */
for(i = 0;i<=n;i++)
{ System.out.print("x["+i+"]=");
s = Citiri.CitireSir();
x[i] = Float.valueOf(s).floatValue();
}
k = 1;
while(k==1)
{ k = 0;
for(i = 0;i<=n-1;i++)
{ if(x[i]<x[i+1])
{ buf = x[i];
x[i] = x[i+1];
x[i+1] = buf;
k = 1;
}
}
}
System.out.println("Sirul ordonat descrescator");
for(i = 0;i<=n;i++)System.out.print("x[" + i + "]=" + x[i]
+ " ");
}
}
26
Reamintim secvenţa de introducere in compilare a project-ului
Flux11. Pentru a folosi PachetCitiri din primul exemplu se procedează
urmând următoarea secvenţă de paşi :
- In packageexplorer click dreapta pe project-ul flux2
- Alege Properties, apoi
- Alege JavaBuildPath,
- Alege Projects
- Add>bifeaza Flux11
27
7.3. Exemplul 3
Se citeşte o matrice, se calculează suma şi media elementelor
precum şi abaterile faţă de medie
import java.io.*;
import PachetCitiri.*;
public class CicluriEx3 {
public static void main(String[] args) throws
java.io.IOException
{ String s;
int m,n,i,j; /* indicii si limitele maxime ale matricii */
float suma, /* suma elementelor matricii */
x, /* media */
y; /* abaterea de la medie */
System.out.print("numarul de linii m=");
s = Citiri.CitireSir();
m = Integer.valueOf(s).intValue();
System.out.print("numarul de coloane n=");
s = Citiri.CitireSir();
n = Integer.valueOf(s).intValue();
float a[][] = new float[m+1][n+1];
suma = 0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{ System.out.print("a["+i+"]["+j+"]=");
s = Citiri.CitireSir();
a[i][j] = Float.valueOf(s).floatValue();
suma = suma + a[i][j];
}
x = suma/((m)*(n));
System.out.println("media=" + x);
System.out.println("Valori si abateri de la medie:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{ y = a[i][j] - x; /*abaterea de la medie a termenului a[i]
[j] */
System.out.println("a["+i+"[]"+j+"]="+ a[i][j]
+",abaterea="+y);
}
}
}
28
Reamintim secvenţa de introducere in compilare a project-ului
Flux11. Pentru a folosi PachetCitiri din primul exemplu se procedează
urmând următoarea secvenţă de paşi :
- In packageexplorer click dreapta pe project-ul flux2
- Alege Properties, apoi
- Alege JavaBuildPath,
- Alege Projects
- Add>bifeaza Flux11
29