Sunteți pe pagina 1din 10

Curs 3 - Programarea calculatoarelor i limbaje de programare

Structuri de control
Instruciuni
Instruciuni de decizie:
if-else, switch-case
Instruciuni de salt:
for, while, do-while
Instruciuni pentru tratarea excepiilor:
try-catch-finally, throw
Alte instruciuni:
break, continue, return, label.
Instruciuni de decizie
lif-else
if (expresie-logica) {
...
}
Sau:
if (expresie-logica) {
...
} else {
...
}
switch-case
switch (variabila) {
case valoare1:
...
break;
case valoare2:
...
break;
default:
...
}
Instruciuni de salt
for
for(initializare; expresie-logica; pas-iteratie) {
//Corpul buclei
}
Exemplu:
for(int i=0, j=100 ; i < 100 && j > 0; i++, j--) {
...
}

while
while (expresie-logica) {
...
}
do-while
do {
...
} while (expresie-logica);

class Exemplu {
int a;
public void metoda(int b) {
a = b;
int c = 10;
for(int d=0; d < 10; d++) {
c --;
}
try {
a = b/c;
} catch(ArithmeticException e) {
System.err.println(e.getMessage());
}
}
}
Alte instruciuni
break: prsete forat corpul unei structuri repetitive.
continue: termin forat iteraia curent a unui ciclu i trece la urmtoarea iteraie.
return [valoare]: termin o metod i, eventual, returneaz o valoare.
numeEticheta: definete o etichet.
Nu exist goto
Pot fi definite etichete folosite astfel:
break numeEticheata
continue numeEticheta
Exemplu de folosire a etichetelor
i=0;
eticheta:
while (i < 10) {
System.out.println("i="+i);
j=0;
while (j < 10) {
j++;
if (j==5) continue eticheta;
//sau: if (j==5) break eticheta;
System.out.println("j="+j);
}

i++;
}
Ce este un pachet ?
Pachet = Colecie de clase i interfee
Scopul:
Organizarea lucrului
Gsirea i utilizarea mai uoar a claselor
Evitarea conflictelor de nume
Controlul accesului
Pachetele standard
java.lang - clasele de baz ale limbajului Java
java.io - intrri/ieiri, lucrul cu fiiere
java.util - clase i interfee utile
java.applet - dezvoltarea de appleturi
java.awt - interfaa grafic cu utilizatorul
java.awt.event - tratare evenimente
java.beans - scrierea de componente reutilizabile
java.net - programare de reea
java.sql - lucrul cu baze de date
java.rmi - execuie la distan
java.security - mecanisme de securitate
java.math - operaii matematice cu numere mari
java.text - lucrul cu texte, date i numereindependent de limb
java.lang.reflect - introspecie
javax.swing - interfaa grafic cu utilizatorul, mult mbogit fa de AWT.
Folosirea membrilor unui pachet
specificarea numelui complet:
numePachet.NumeClasa.
Button - numele scurt al clasei
java.awt - pachetul din care face parte
java.awt.Button - numele complet al clasei
Importul unei clase sau interfee
Importul clasei respective
import numePachet.numeClasa;
//Pentru exemplul nostru:
import java.awt.Button;
import java.awt.TextField;
...
Button b1 = new Button("OK");
Button b2 = new Button("Cancel");
TextField tf1 = new TextField("Placut");
TextField tf2 = new TextField("Foarte placut");
//Problema:
import java.awt.Button;
import java.awt.TextField;

import java.awt.Rectangle;
import java.awt.Line;
import java.awt.Point;
import java.awt.Polygon;
importul ntregului pachet
import numePachet.*;
//Pentru exemplul nostru:
import java.awt.*;
...
Button b = new Button("OK");
Point p = new Point(0, 0);
import java.awt.C*; = eroare
Importate automat:
pachetul java.lang
pachetul curent
pachetul implicit (fr nume)
Crearea unui pachet
package numePachet;
//Fisierul Graf.java
package grafuri;
class Graf {...}
class GrafPerfect extends Graf {...}
//Fisierul Arbore.java
package grafuri;
class Arbore {...}
class ArboreBinar extends Arbore {...}
Vectori
Declararea
Tip[] numeVector; sau
Tip numeVector[];
Instanierea
numeVector = new Tip[nrElemente];
Iniializarea (opional)
String culori[] ={"Rosu", "Galben"};
v = new int[10];
//aloca spatiu pentru 10 intregi: 40 octeti
c = new char[10];
//aloca spatiu pentru 10 caractere: 20 octeti
Declararea i instanierea pot fi fcute simultan:
Tip[] numeVector = new Tip[nrElemente];
Primul indice al unui vector este 0, deci poziiile unui vector cu n elemente vor fi
cuprinse ntre 0 i n - 1.
Nu sunt permise construcii de genul Tip numeVector[nrElemente], alocarea
memoriei fcndu-se doar prin intermediul operatorului new.

int v[10]; //ilegal


int v[] = new int[10]; //corect
Tablouri multidimensionale
Tablou multidimensional = vector de vectori.
Tip mat[][] = new Tip[nrLinii][nrColoane];
mat[i] este linia i a matricii i reprezint un vector cu nrColoane elemente iar mat[i][j]
este elementul de pe linia i i coloana j.
Dimensiunea unui vector- variabila length:
int []a = new int[5];
// a.length are valoarea 5
int m[][] = new int[5][10];
// m[0].length are valoarea 10
Copierea vectorilor
int a[] = {1, 2, 3, 4};
int b[] = new int[4];
// Varianta 1
for(int i=0; i<a.length; i++)
b[i] = a[i];
// Varianta 2
System.arrayCopy(a, 0, b, 0, a.length);
// Nu are efectul dorit
b = a;
iruri de caractere
char[]
String
String s = "abc";
String s = new String("abc");
char data[] = {a, b, c};
String s = new String(data);
StringBuffer = Un ir de caractere constant (nu se doresc schimbri n poriuni din coninutul
su pe parcursul execuiei programului) va fi declarat de tipul String, altfel va fi declarat de
tip StringBuffer. StringBuffer pune la dispoziie metode pentru modificarea coninutului
irului, cum ar fi: append, insert, delete, reverse.
Uzual, cea mai folosit modalitate de a lucra cu iruri este prin intermediul clasei String.
Clasa StringBuffer va fi utilizat predominant n aplicaii dedicate procesrii textelor cum
ar fi editoarele de texte.
String s1="asd",s2="";
s1=s2+"a";
System.out.println(s1+" "+s2);

iruri de caractere
Concatenarea: +
String s1 = "ab" + "cd";
String s2 = s1 + 123 + "xyz"
extrem de flexibil, permite concatenarea irurilor cu obiecte de orice tip care au o reprezentare
de tip ir de caractere.
Exemple:
System.out.print("Vectorul v are" + v.length + "elem.");
String x = "a" + 1 + "b;
De fapt:
String x = new StringBuffer().append("a").append(1).
append("b").toString()

Constructori
Obiectele se genereaz i se pot iniializa la instaniere cu ajutorul constructorilor.
Constructorii
sunt funcii membru ce au acelai nume cu numele clasei.
funcii apelate automat la crearea obiectelor.
Valorile de iniializare se transfer constructorului i ele joac acelai rol ca parametrii
efectivi de la apelurile funciilor obinuite.
Se pot defini mai muli constructori pentru o clas. n acest caz ei au acelai nume, dar difer
prin numrul i/sau tipurile parametrilor.
Dac exist mai muli constructori, atunci la iniializare se utilizeaz regulile de la apelurile
funciilor suprancrcate.
Funciile constructor nu ntorc valori, dar nu sunt precedai de cuvntul void.
Dac clasa nu conine constructori, se genereaz un constructor fr parametri, adic un
constructor implicit. El are rolul numai de alocare a obiectelor clasei respective, fr a le

iniializa

Exemplu:
class Complex {
double real;
double imag;
public Complex(double x, double y)
{real = x; imag = y;}
public Complex ( )
{real = 0; imag = 0;}
}
Exemple de instaniere:
Complex z= new Complex(); // z = 0 + 0*i
Complex z1= new Complex(1,0); // z1 = 1 + 0*

Realizarea ncapsulrii datelor


Accesul la datele sau funciile membre ale unei clase din orice punct al domeniului de
definiie al clasei s-ar putea rezolva simplu prin declararea de tip public a acestora.
O astfel de implementare nu respect principiul ncapsulrii datelor i se recomand s fie
evitat.
Din punct de vedere al dreptului de acces la membrii clasei, o clas bine definit permite
ncapsularea (sau ascunderea informaiilor), prin care un obiect poate ascunde celor care-l
folosesc modul de implementare, prin interzicerea accesului la datele i funciile private sau
protected.
In general, respectnd principiul ncapsulrii, datele membre sunt declarate private sau
protected i nu pot fi accesate direct (pentru citire sau scriere) din funcii nemembre ale clasei.
Pentru citirea sau modificarea unora dintre datele membre protejate n clasa respectiv se pot
prevedea funcii membre de tip public, care pot fi apelate din orice punct al domeniului de
definiie al clasei i fac parte din interfaa clasei.
De exemplu, pentru clasa Complex, o implementare care respect principiul ncapsulrii, dar,
n acelai timp permite accesul la datele private ale clasei poate arta astfel:
class Complex {
private double real;
private double imag;
public Complex(double x, double y)
{real = x; imag = y;}
public Complex ( )
{real = 0; imag = 0;}
public void set(double x, double y)
{ re = x; im = y; }
public void setre(double x)
{ re = x;}
public void setim(double y)
{ im = y; }
public double getre(){
return re;}
public double getim() {
return im;}
public void display(){
System.out.println(re+++im+i);}
}
class test{
public static void main(String arg[]){
Complex c1=new Complex(),
c2=new Complex(1,1);
c1.set(7.2, 9.3);
c1.display(); // afiseaza 7.2 9.3
c1.setre(1.3);
c1.setim(2.8);
c1.display(); // afiseaza 1.3 2.8 }
}

}
Clase abstracte
Sunt clasele pentru care programatorul nu intenioneaz s instanieze obiecte.
clase de baz in ierarhii
se mai numesc clase abstracte de baz
O clas devine abstract dac conine una sau mai multe declaraii de funcii abstracte
Dac o clas ce motenete o clas ce conine o funcie abstract nu implementeaz acea
funcie abstract motenit, devine ea nsi o clas abstract.
OBS: clasele pentru care se pot instania obiecte se numesc clase concrete.

Clasa String. Metode si exemple


Crearea unui ir
Constructorul implicit creaz un ir vid:
String s = new String();
String str = "abc";
este echivalent cu:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
OBS. Dac elementele din vectorul data sunt modificate dup crearea irului str, atunci
aceste modificri nu apar n acest ir.
Construirea unui ir pe baza altui ir:
String str2 = new String(str);
Operaii cu iruri
Metoda length() returneaz lungimea unui ir
Ex: System.out.println(Hello.length()); // afieaz 5
Operatorul + este utilizat pentru concatenarea a dou sau mai multe iruri
Ex: String myname = Harry;
String str = My name is + myname+ .;
Caracterele dintr-un ir pot fi accesate astfel:
public char charAt(int index);
Returneaz caracterul din poziia index. Domeniul de indexare este de la 0 la length() - 1.
Ex. char ch;
ch = abc.charAt(1); // ch = b
getChars() - Copiaz caracterele din irul surs n irul destinaie
public void getChars(int srcBegin, int srcEnd,char[] dst, int dstBegin)
srcBegin indexul primului caracter din surs
srcEnd indexul ultimului caracter din surs
dst vectorul destinaie
dstBegin poziia de la care ncepe copierea n vectorul destinaie
lequals() Compar dou iruri la egalitate
public boolean equals(String s2)

equalsIgnoreCase()- Compar dou iruri la egalitate fr s in cont de litere mici sau mari
public boolean equalsIgnoreCase(String s2)
startsWith() Testeaz dac irul ncepe cu prefixul specificat (la nceput sau dintr-o
anumit poziie)
public boolean startsWith(String prefix)
Ex.Figure.startsWith(Fig); // true
public boolean startsWith(String prefix, int toffset)
Ex.figure.startsWith(gure, 2); // true
endsWith() - Testeaz dac irul se termin cu sufixul specificat
public boolean endsWith(String suffix)
Ex. Figure.endsWith(re); // true
compareTo() Compar dou iruri din punct de vedere lexicografic
Rezultatul este:
Negativ, dac irul precede irul primit ca argument
Zero, dac irurile sunt egale
Pozitiv, dac irul urmeaz irului primit ca argument
public int compareTo(String anotherString)
public int compareToIgnoreCase(String str)
indexOf Caut prima apariie a unui caracter sau ir ntr-un alt ir. Returneaz -1 dac nu l
gsete.
public int indexOf(int ch)
public int indexOf(String str)
Ex. String str = How was your day today?;
str.indexOf(o); // 1
str.indexOf(was); //4
cutare ncepnd de la o poziie specificat:
public int indexOf(int ch, int fromIndex)
public int indexOf(String str, int fromIndex)
Ex. String str = How was your day today?;
str.indexOf(a, 6); //14
str.indexOf(was, 2); //4
lastIndexOf() - Caut ultima apariie a unui caracter sau ir ntr-un alt ir, similar lui indexOf.
concat() Concateneaz irul specificat la irul surs
public String concat(String str)
"to".concat("get").concat("her"); // returneaz "together"
replace()- Returneaz un nou ir n care toate apariiile caracterului oldChar sunt nlocuite cu
caracterul newChar.
public String replace(char oldChar, char newChar)
Ex. "mesquite in your cellar".replace('e', 'o');
returneaz "mosquito in your collar"
toLowerCase(): Convertete toate caracterele la litere mici
public String toLowerCase()

toUpperCase(): Convertete toate caracterele la litere mari


public String toUpperCase()
Ex: HELLO THERE.toLowerCase();
hello there.toUpperCase();

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