laborator5
DESCRIPTION
Programarea calculatoarelorTRANSCRIPT
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
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
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
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
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/
7