laborator5

7
ROMÂNIA Universitatea Politehnica din Bucuresti Facultatea de Antreprenoriat, Ingineria si Managementul Afacerilor Programarea Calculatoarelor - Laboratorul 5 Responsabil: Bogdan Ţigănoaia, [email protected] 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 1

Upload: oana-chiriac

Post on 02-Feb-2016

212 views

Category:

Documents


0 download

DESCRIPTION

Programarea calculatoarelor

TRANSCRIPT

Page 1: Laborator5

ROMÂNIA

Universitatea Politehnica din Bucuresti

Facultatea de Antreprenoriat, Ingineria si Managementul Afacerilor

Programarea Calculatoarelor - Laboratorul 5

Responsabil: Bogdan Ţigănoaia, [email protected]

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

1

Page 2: Laborator5

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 16 biti caractere UNICODE caractere

Task1: Compilati si rulati urmatorul cod. Corectati erorile si rulati din nou. Ce afiseaza ?

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

Page 3: Laborator5

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 sau reale. 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 false3

Page 4: Laborator5

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 intr-

o 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

Page 5: Laborator5

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

Page 6: Laborator5

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

Page 7: Laborator5

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/

7