Sunteți pe pagina 1din 29

Primul program – afişază pe ecran un salut.

public class HelloWorld {


public static void main(String[] args) {
System.out.println("Hello world");
}
}

1. Citirea datelor de la consolă


1.1. Citirea şirurilor şi caracterelor

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
caract
erul 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;
}
}

Citirea unui număr real.

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

3.Exemplu de utilizare a argumentelor în linia de comandă

public class ElemArgs {


public static void main(String args[])
{ int n=0,a,b,i; /* afisarea argumentelor din limia de
comanda */
n = args.length;
System.out.println("Dimensiunea tabloului :" + n);
for(i = 0 ; i< n; i++)
{ System.out.println("args[" + i + "]=" + args[i]);
}
}

6
3.1.Calculul termenilor şirului Fibonacci în care numărul
termenilor de calculat este transmis la apelul din linia de
comandă

public class Fibonacci


{ public static void main(String args[]) throws java.io.IOException
{ String sir;
int n,nrk;
int fibo[] = new int[100];
/* Daca comentariile de mai jos – 3 randuri, primul începe cu System.
– se activează şi următoarele 3 randuri (incepe cu nrk=)se pun in
comentarii, atunci numărul de termeni de calculat pentru şirul lui
Fibonacci se vor citi de la consolă */
/* System.out.print("Numarul de termeni ai sirului lui Fibonacci(>3 si
<100):");
sir = CitireSir(); Datele se citesc ca siruri de caractere */
/* Datele se preiau din primul parametru al liniei de comanda */
nrk = args.length;
if nrk = 0 {n = 0;}
else n = Integer.valueOf(sir).intValue(); /* conversia la tipul
intreg */
System.out.println("Se calculeaza " + n + "termeni ai sirului lui
Fibonacci");
for(int i= 0; i < n; i++)
{ if i == 0 fibo[i] = 1;
if i == 1 fibo[1] = 1;
if i > 2 fibo[i] = fibo[i-1] + fibo[i-2];
}
for(int i= 0; i<n; i++) System.out.println("fibo[" + i + "]=" +
fibo[i]);
}
static String CitireSir() throws IOException
{ String h;
InputStreamReader f = new InputStreamReader(System.in);
BufferedReader g = new BufferedReader(f);
h=g.readLine();
return h;
}
}

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 {

public static int maximul(int u[],int dim)


{ int maxx = u[0];
for(int i = 0 ; i < dim; i++)
{
if (u[i] > maxx)maxx = u[i];
}
return maxx;
}
public static int minimul(int u[],int dim)
{ int minn = u[0];
for(int i = 0; i < dim; i++)
{
if (u[i] < minn)minn = u[i];
}
return minn;
}
public static void sortx(int u[])
{ int k ,buff = 0;
int n = u.length;
do
{k = 0;
for(int i=0 ; i < n-1; i++ )
{ if (u[i]>u[i+1])
{buff = u[i];
u[i] = u[i+1];
u[i+1] = buff; k = 1;
}
}
}
while(k == 1);
}
}

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

/* textul problemei : | X**2 daca x < 2


Fie functia y definita y= |
| X**3 + 5 daca x >= 2
Se citeste x de la consola si se calculeaza valoarea functiei y
*/
import java.io.*;
import PachetCitiri.*;
public class if1{
public static void main(String args[]) throws
java.io.IOException
{ String s; float x,y;
System.out.print("x=");
s = Citiri.CitireSir();
x = Float.valueOf(s).floatValue();
y = x*x;
if(x >= 2) y = y*x + 5;
System.out.println("x=" + x + " " + "y=" + y);
}
}

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

/* textul problemei : | X + Y daca x < 2


Fie functia z definita z= |
| X - Y daca x >= 2
Se citeste x de la consola si se calculeaza valoarea functiei y
*/
import java.io.*;
import PachetCitiri.*;
public class If2{
public static void main(String args[]) throws
java.io.IOException
{ String s; float x,y,z;
System.out.print("x=");
s = Citiri.CitireSir();
x = Float.valueOf(s).floatValue();
System.out.print("y=");
s = Citiri.CitireSir();
y = Float.valueOf(s).floatValue();
if(x < 2) z = x + y;
else z = x - y;
System.out.println("x=" + x + " " + "y=" + y);
}
}

Pentru a folosi PachetCitiri din exemplul anterior 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

17
6.1.3 Exemplul 3

/* textul problemei : | 2x + 3 daca x < 4


Fie functiile f definita f=|
| 4x - 3 daca x >= 4
si
| 2x + 3 daca x < 4
g definita g = |
| 3x + 7 daca x >= 5
Se citeste x de la consola si se calculeaza valoarea functiei y
*/
import java.io.*;
import PachetCitiri.*;
public class if3{
public static void main(String args[]) throws
java.io.IOException
{ String sir; float x,f,g;
System.out.print("x=");
sir = Citiri.CitireSir();
x = Float.valueOf(sir).floatValue();
if (x < 4)
{
f = 2*x + 3;
g = 2*x + 5;
}
else
{
f = 4*x - 3;
g = 3*x + 7;
}
System.out.print("x=" + x + " f=" + f + " g=" + g);
}
}

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

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.

Calculul rădăcinii pătrate a unui număr se poate efectua conform


celor demonstrate în anliza numerică, cu ajutorul următorului şir:

Y0 = 1 ; y1 = (yi+x/yi-1)/2 pentru i = 1,2,3...

În care x este număr real dat, a cărui rădăcină pătrată se calculează.


Termenii se calculează din aproape în aproape pană cţnd diferenţa
dintre doi termeni consecutivi este mai mică decât un număr arbitrar
ε(epsilon) > 0, adică

|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

In exemplul următor se calculează câtul şi restul împărţirii a


două numere întregi a şi b.

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

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

23
7. Cicluri - exemple de utilizare a instrucţiunilor ciclice

7.1. Exemplul 1

Se dă un şir de numere x0,x1,x2… xn şi se cere să determinăm


media lor, abaterile lor de la medie.

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

Programul citeşte şi sortează un sir de numere reale.

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