Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

ROMNIA

Universitatea Politehnica din Bucuresti


Facultatea de Antreprenoriat, Ingineria si Managementul
Afacerilor

Programarea Calculatoarelor - Laboratorul 5

Responsabil: l.dr.ing. Bogdan ignoaia, bogdantiganoaia@yahoo.com


Obiectivele laboratorului sunt urmatoarele:
Tutoriale utile
Prezentarea tipurilor de date primitive
Prezentarea operatorilor si a expresiilor
Citirea datelor de la consola

1. Tutoriale utile
Tutoriale Java utile in pregatirea laboratorului:
http://ftp.utcluj.ro/pub/docs/diverse/java/java-tutorial/TOC.html
http://www.cs.usfca.edu/~parrt/doc/java/JavaBasics-notes.pdf

Documentatie Java foarte utila pentru laborator:


http://cupi2.uniandes.edu.co/~cupi2/sitio/images/recursos/javadoc/j2se/1.5.0/docs/ind

ex.html
JavaDoc 1.6.0:
http://sourceforge.net/projects/japura/files/Japura/Japura%20v1.6.0/javadoc-1.6.0.zip/

download?use_mirror=kent
2. Tipuri de date primitive
Tipurile primitive sunt tipuri predefinite intr-un limbaj de programare. Java defineste 8 tipuri
primitive:
Nr Tip

Dim. Domeniu

Descriere

1. byte

8 biti -128 .. 127

nr. intregi

2. short

16 biti -32.768 .. 32.767

nr. intregi

3. int

32 biti -2.147.483.648 .. 2.147.483.647

nr. intregi

4. long

64 biti -9 * 10e18 .. 9 * 10e18

nr. intregi

5. float

32 biti -3.402823*10e38 .. 3.402823*10e38

nr. reale

6. double 64 biti -1.79769313486232*10e308 .. 1.79769313486232*10e308 nr. reale


7. boolean 8 biti [ false, true ]

valori logice

8. char

caractere

16 biti caractere UNICODE

Task1: Compilati si rulati


afiseaza ?

urmatorul cod. Corectati erorile si rulati din nou. Ce

public class TipuriPrimitive {


byte nrByte;
short nrShort;
int nrInt;
long nrLong;
float nrFloat;
double nrDouble;
char chCaracter;
boolean bLogic;
public static void main(String[] args) {
2

Tipuri instanta = new Tipuri();


instanta.nrByte = 123;
instant.nrShort = 16230;
instanta.nrInt = 1456098;
instanta.nrLong = 3456723432L;
instanta.nrFloat = 314.5323F;
instanta.nrDouble = 22342342532.53534e45;
instanta.chCaracter = 'A';
instanta.bLogic = true;
System.out.println("nrByte = "+instanta.nrByte);
System.out.println("nrShort = "+instanta.nrShort);
System.out.println("nrInt = "+instanta.nrInt);
System.out.println("nrLong = "+instanta.nrLong);
System.out.println("nrFloat = "+instanta.nrFloat);
System.out.println("nrDouble = "+instanta.nrDouble);
System.out.println("chCaracter = "+instanta.chCaracter);
System.out.println("bLogic = "+instanta.bLogic);
}
}
3. Operatori si expresii
Operatorii Java:
Nr Simbol Operator

Observatii

1. =

atribuire

atribuirea este operator in Java si nu instructiune.


Sunt permise atribuiri multiple de genul a=b=c=5.

2. +

adunare

adunare de numere intregi


concatenare de siruri de caractere

3. -

scadere

scadere de numere intregi sau reale.

4. *

inmultire

inmultire de numere intregi sau reale.

5. /

impartire

impartire de numere intregi sau reale.


Pentru intregi returneaza catul impartirii.

6. %

modulo

restul imapartirii

7. ++

incrementare

poate fi aplicat pre sau post

8. --

decrementare

poate fi aplicat pre sau post

9. ==

egalitate

test egalitate, intoarce true sau false


3

sau

reale.

10. !=

inegalitate

test diferenta, intoarce true sau false

11. >

mai mare

test mai mare, intoarce true sau false

12. <

mai mic

test mai mic, intoarce true sau false

13. >=

mai mare sau egal

test mai mare sau egal, intoarce true sau false

14. <=

mai mic sau egal

test mai mic sau egal, intoarce true sau false

15. &&

AND

SI logic

16. ||

OR

SAU logic

17. ^

XOR

SAU exclusic logic

18. !

NOT

negare logica

19. &

bit AND

SI pe biti

10. |

bit OR

SAU pe biti

11. ^

bit XOR

SAU exclusiv pe biti

12. <<

left shift

deplasare stanga

13. >>

right shift

deplasare dreapta

14. >>>

right shift with 0 fill deplasare dreapta cu insertie de 0

15. op=

combinat

x op= exp este echivalent cu x = x op exp

Expresiile sunt linii de cod care returneaza o valoare. Expresiile pot fi imbricate pe oricate
nivele. Expresiile sunt compuse din variabile, valori, apeluri de metode si operatori.Daca intro expresie intervin operanzi avand tipuri diferite se va efectua operatia de casting (schimbare
de tip). Aceasta operatie se poate face si explicit prin sintaxa (tip_nou) operand.
Exemplu:
int a=3;
char c='d';
4

System.out.println("Caracterul la 3 pozitii dupa "+c+" este "+(char)((int)c+a));


Task 2: Testati codul de mai sus, precizand ce se afiseaza ?

4. Citirea datelor de la consola

Pachetul java.io pune la dispozitie un set de clase cu ajutorul carora se realizeaza operatiile
de intrare/iesire ntr-un program Java. Deja s-a folosit in exemplele anterioare operatia println
care afiseaza date pe consola standard de iesire. In Java operatiile de intrare/iesire se bazeaza
pe conceptul de flux de date (stream). Un flux de date este o secventa de date care se citeste
de la o sursa externa - caz n care avem de a face cu un flux de intrare (input stream) sau se
trimite spre o destinatie externa - flux de iesire (output stream).Pentru operatiile de
intrare/iesire cele mai frecvente sursa externa este tastatura, iar destinatia este ecranul
monitorului. Acestea se mai numesc si suporturi standard de intrare, respectiv iesire.
Corespunzator suporturilor standard, n Java exista doua obiecte predefinite: System.in
pentru tastatura si System.out pentru monitor. Clasa care modeleaza citirea unei linii dintr-un
flux de intrare este BufferedReader, prin operatia se numeste readLine. Aceasta functie nu
are parametri, iar executia ei are ca efect citirea din fluxul de intrare a unei secvente de
caractere pana la intalnirea terminatorului de linie. Operatia returneaza un obiect String care
contine caracterele citite, dar fara a include si caracterul linie noua. Daca citirea nu se poate
desfasura, operatia emite o exceptie de tip IOException . De aceea, semnatura unei functii
care apeleaza metoda readLine trebuie sa contina clauza throws IOException.
Pentru citirea de la tastatura, obiectul BufferedReader se creaza astfel:
BufferedReader fluxIntrare = new BufferedReader(new InputStreamReader(System.in));
Citirea unei linii se poate realiza cu apelul:
5

sirIntrare = fluxIntrare.readLine();
Deoarece readLine intoarce intodeauna un String, pentru citirea unui numar se va apela
ulterior una din functiile Integer.parseInt(sirIntrare), Long.parseLong(strIntrare),
Double.valueOf(strIntrare) sau Float.valueOf(strIntrare).
Task 3: Compilati si rulati codul de mai jos:
import java.io.*;
public class Citire {
public static void main(String[] args) throws IOException {
int parametru1, parametru2;
double inaltimea;
String linie;
String nume;
BufferedReader fluxIntrare = new BufferedReader (new
InputStreamReader (System.in)); // se creaza fluxul de citire
System.out.println("Numele: ");
nume = fluxIntrare.readLine(); // se citeste o linie
System.out.println("Inaltimea: ");
linie = fluxIntrare.readLine(); // se citeste o linie
inaltimea = Double.valueOf(linie).doubleValue(); // se face conversia sir->numar
System.out.println("Parametru 1: ");
linie = fluxIntrare.readLine(); // se citeste o linie
parametru1 = Integer.parseInt(linie); // se face conversia sir->numar
System.out.println("Parametru 2: ");
linie = fluxIntrare.readLine(); // se citeste o linie
6

parametru2 = Integer.parseInt(linie); // se face conversia sir->numar


linie = "Persoana "+nume;
linie += " are inaltimea "+inaltimea;
linie += " si are suma parametrilor "+(((double)parametru1+parametru2))+"!";
System.out.println(linie);
fluxIntrare.close(); //se inchide fluxul
}
}
Task 4: Scrieti un program Java care citeste de la consola un numar intreg
reprezentand o suma de bani (un rest) si il afiseaza in bancnote de 50, 10, 1 RON.Se
presupune ca exista suficiente bancnote pentru plata restului.Restul se va da in
maximul de valori cele mai mari posibile.
Test:
INPUT: 147 RON
OUTPUT: 2x50 RON si 4x10 RON si 7x1 RON
Bibliografie: http://www.opendrum.upt.ro/

You might also like