JAVA PROGRAMIRANJE - PODACI
Sledeće
Grananje u programu >| |
Svaka informacija koja se upotrebljava u programu a ima svoje mesto u memoriji računara naziva se podatak.
Podaci mogu biti prosti i složeni.
Ako je za opis podatka dovoljan jedan broj (u binarnom obliku) onda kažemo da je u pitanju prost podatak.
Ako podatak nemožemo opisati pomoću jednog broja, već ga opisujemo pomoću više stavki koje same za sebe predstavljaju proste podatke onda je reč o složenom podatku. Složeni podaci se nazivaju objekti.
Podaci mogu biti prosti i složeni.
Ako je za opis podatka dovoljan jedan broj (u binarnom obliku) onda kažemo da je u pitanju prost podatak.
Ako podatak nemožemo opisati pomoću jednog broja, već ga opisujemo pomoću više stavki koje same za sebe predstavljaju proste podatke onda je reč o složenom podatku. Složeni podaci se nazivaju objekti.
Prosti podaci u programskom jeziku JAVA
Da bi se u memoriji rezervisalo prostora za određen podatak, mora se znati kakav je podatak u pitanju, tj. da li je to ceo ili decimalan broj, tekst ili logički podatak( tačno-netačno). Zato svaki podatak ima svoj opis(tip) podatka.
Naredba programa: int a;
znači da se rerviše prostor u memoriji za celobrojni podatak koji mi zovemo a.
Ovde je int službena reč Java jezika i označava ceo broj, dok je a oznaka(ime) podatka. Ime podatka se još naziva identifikator podatka jer služi da “ identifikuje “ određeni podatak.. Evo nekih prostih tipova podataka koji se koriste u Javi, sa vrednošću koju zauzimaju u memoriji:
Naredba programa: int a;
znači da se rerviše prostor u memoriji za celobrojni podatak koji mi zovemo a.
Ovde je int službena reč Java jezika i označava ceo broj, dok je a oznaka(ime) podatka. Ime podatka se još naziva identifikator podatka jer služi da “ identifikuje “ određeni podatak.. Evo nekih prostih tipova podataka koji se koriste u Javi, sa vrednošću koju zauzimaju u memoriji:
Tipovi podataka u javi
Tip podatka | Opis | Memorija[bit] |
---|---|---|
char | Mali celobrojni podatak. Koristi se za smeštanje znakova | 8 |
short | Kratak celobrojni podatak | 16 |
int | Celobrojni podatak | 32 |
long | Dugački celobrojni podatak | 64 |
float | Realan broj u jednostrukoj preciznosti | 32 |
double | Realan broj u dvostrukoj preciznosti | 64 |
boolean | Logički tip podatka(može biti true ili false) | 1 |
VIDEO LEKCIJE
Video1: Instalacija java jdk i Netbeans IDEU sledećem video pogledajte kako da instalirate platvormu za javu JAVA JDK i alat za programiranje Netbeans IDE:
|
Video 2: Kreiranje jednostavne aplikacijeU sledećem video pogledajte kako da kreirate jednostavnu aplikaciju koja ispisuje tekst na ekranu, upotrebom alata Netbeans IDE:
|
Video 3:Unos podataka u JaviU sledećem video pogledajte kako da kreirate jednostavnu aplikaciju koja unosi razne tipove podataka
|
Video lekcije za android OS
|
Video 6: Unos različitih tipova podataka u Java N IDEU sledećem videu pogledajte kako da Unsete podatke koristeći Java N IDE
|
Primer zadatka sa podacima:
Tekst zadatka: Zadati dva celobrojna podatka, izračunati njihov zbir i rezultat prikazati na ekranu
Kroz ovaj primer se može pokazati postupak za rešavanje sličnih zadataka koji mogu biti i znatno složeniji od ovoga. Postupak rešavanja zadatka može se generalno podeliti u četiri faze.
int a;
int b,
int c,
Upotrebili smo int kao opis jer se ta reč koristi kada su u pitanju celobrojni podaci(vidi tabelu). Na kraju se naredbe završavaju sa tačka-zarez. Rezervisana memorija bi se slikovito mogla prikazati kao na slici ispod.
U drugom delu zadatka treba zadati ulazne podatke u ovom slučaju a i b. Ulazni podaci su zato što mi njihove vrednosti unosimu u program tj. U memoriju, a oni podaci koje za nas program računa su izlazni, u ovom slučaju to je rezultat c. Podaci se unose u memoriju pomoću operatora za dodelu vrednosti „=“.
a = 5;
b = 7;
Prva naredba znači da se broj 5 unosi u memoriju koju mi u našem programu zovemo a, a druga da broj 7 odlazi u memoriju b. Operator „=“ ne znači jednakost leve i desne strane, jer kad program naiđe na naredbu „a=5“, a je samo prazna memorija i ne može “prazno” biti jednako 5. Taj operator znači da će memoriji a biti dodeljen broj 5 i posle te naredbe će u prostoru a stajati vrednost 5(vidi sliku ispod). Za ispitivanje da li je leva strana jednaka desnoj koristi se operator „= =“ o čemu će biti reči u narednim lekcijama.
Ovde su a i b jednostavno zadati programski. Ovaj program bi više imao smisla kada bi omogućavao korisniku programa da po želji unese vrednosti za a i b npr. preko nekog dijaloga. Međutim ovde je urađeno programsko zadavanje vrednosti podatka samo radi uprošćenja zadatka. Na koji način se ostvaruje komunikacija korisnika sa programom biće reči u narednim lekcijama.
U trećem delu zadatka treba izračunati izlazni podatak na osnovu formule koja povezuje izlazni podatak(u ovom slučaju c) sa ulaznim(a i b).
c = a + b;
Sada je sa desne strane od znaka „=“ izraz „a +b“. Ovde treba voditi računa da svi podaci sa desne strane od znaka „=“ imaju u memoriji unešenu vrednost inače će se prijaviti greška prilikom kompajliranja. Prikazana naredba se izvršava tako što se prvo iz memorije uzme vrednost a i b, zatim se ove vrednosti saberu(12) i onda se taj rezultat smešta u memoriju sa leve strane(c). Posle ovog reda situacija u memoriji je:
U četvrtom delu zadatka treba rezultat prikazati na ekran. Za ovo ćemo koristiti metodu print(String s) kao i u prethodnom primeru(Objašnjen u prethodnoj lekciji):
System.out.print(„c=“ + c);
U zagradi treba da stoji tekstualni podatak (tip podatka String) što prvi deo koji je pod znacima navoda i jeste. Drugi deo, tj. C koje je napisano bez znaka navoda predstavlja podatak tipa int što znači ceo broj. Dakle, ovde su kombinovani String i int i povezani su sa „+“. Ovde će doći do automatske konverzije podatka tipa int u tip String, pa će se dva Stringa dalje nadovezati(sabiranjem) u jedan String, tako da će se posle pokretanja programa na izlazu dobiti:
C = 12
Vidi se da se umesto slova c koje zapravo predstavlja referencu na memorijski prostor na izlazu dobija vrednost koja je u tom prostoru(12) a ne slovo „c“. Slovo c bi se dobilo da je i drugo c stavljeno pod navodnike tj.
System.out.print(„c = c“); što bi bila greška!!
Kroz ovaj primer se može pokazati postupak za rešavanje sličnih zadataka koji mogu biti i znatno složeniji od ovoga. Postupak rešavanja zadatka može se generalno podeliti u četiri faze.
- Definisanje(deklarisanje) svih podataka
- Unos ili zadavanje ulaznih podataka.
- Izračunavanje izlaznih podataka
- Prikaz rezultata i eventualno ostalih podataka
int a;
int b,
int c,
Upotrebili smo int kao opis jer se ta reč koristi kada su u pitanju celobrojni podaci(vidi tabelu). Na kraju se naredbe završavaju sa tačka-zarez. Rezervisana memorija bi se slikovito mogla prikazati kao na slici ispod.
U drugom delu zadatka treba zadati ulazne podatke u ovom slučaju a i b. Ulazni podaci su zato što mi njihove vrednosti unosimu u program tj. U memoriju, a oni podaci koje za nas program računa su izlazni, u ovom slučaju to je rezultat c. Podaci se unose u memoriju pomoću operatora za dodelu vrednosti „=“.
a = 5;
b = 7;
Prva naredba znači da se broj 5 unosi u memoriju koju mi u našem programu zovemo a, a druga da broj 7 odlazi u memoriju b. Operator „=“ ne znači jednakost leve i desne strane, jer kad program naiđe na naredbu „a=5“, a je samo prazna memorija i ne može “prazno” biti jednako 5. Taj operator znači da će memoriji a biti dodeljen broj 5 i posle te naredbe će u prostoru a stajati vrednost 5(vidi sliku ispod). Za ispitivanje da li je leva strana jednaka desnoj koristi se operator „= =“ o čemu će biti reči u narednim lekcijama.
Ovde su a i b jednostavno zadati programski. Ovaj program bi više imao smisla kada bi omogućavao korisniku programa da po želji unese vrednosti za a i b npr. preko nekog dijaloga. Međutim ovde je urađeno programsko zadavanje vrednosti podatka samo radi uprošćenja zadatka. Na koji način se ostvaruje komunikacija korisnika sa programom biće reči u narednim lekcijama.
U trećem delu zadatka treba izračunati izlazni podatak na osnovu formule koja povezuje izlazni podatak(u ovom slučaju c) sa ulaznim(a i b).
c = a + b;
Sada je sa desne strane od znaka „=“ izraz „a +b“. Ovde treba voditi računa da svi podaci sa desne strane od znaka „=“ imaju u memoriji unešenu vrednost inače će se prijaviti greška prilikom kompajliranja. Prikazana naredba se izvršava tako što se prvo iz memorije uzme vrednost a i b, zatim se ove vrednosti saberu(12) i onda se taj rezultat smešta u memoriju sa leve strane(c). Posle ovog reda situacija u memoriji je:
U četvrtom delu zadatka treba rezultat prikazati na ekran. Za ovo ćemo koristiti metodu print(String s) kao i u prethodnom primeru(Objašnjen u prethodnoj lekciji):
System.out.print(„c=“ + c);
U zagradi treba da stoji tekstualni podatak (tip podatka String) što prvi deo koji je pod znacima navoda i jeste. Drugi deo, tj. C koje je napisano bez znaka navoda predstavlja podatak tipa int što znači ceo broj. Dakle, ovde su kombinovani String i int i povezani su sa „+“. Ovde će doći do automatske konverzije podatka tipa int u tip String, pa će se dva Stringa dalje nadovezati(sabiranjem) u jedan String, tako da će se posle pokretanja programa na izlazu dobiti:
C = 12
Vidi se da se umesto slova c koje zapravo predstavlja referencu na memorijski prostor na izlazu dobija vrednost koja je u tom prostoru(12) a ne slovo „c“. Slovo c bi se dobilo da je i drugo c stavljeno pod navodnike tj.
System.out.print(„c = c“); što bi bila greška!!
Unos podataka u Javi
Ako posmatramo prethodno opisan primer možemo uočiti da korisnik programa ne može da utiče na sabirke a i b, pa prema tome, takav program u praktičnoj upotrebi ne bi imao smisla. Šta će nekom program za bilo kakvo izračunavanje ako uvek izračunava jednu varijantu polaznih podataka. Prethodni program ili neki drugi sličan njemu bi imao smisla samo ako vrši izračunavanje(zbira u prethodnom primeru) za bilo koju varijantu unosa polaznih podataka. To će se ostvariti ako se u programu omogući komunikacija sa korisnikom, takva da se od njega zatraži unos ulaznih podataka(a i b u prethodnom primeru). U nastavku ćemo pokazati kako da se ostvari komunikacija sa korisnikom preko objekta klase Scanner. Više o klasama i objektima pročitajte na strani Klase i objekti
Unos tekstualnog podatka
Da bi omogućili korisniku da unese bilo kakav podatak potreban nam je objekat klase Scanner iz paketa java.util. Dakle potrebno je kreirati objekat na sledeći način:
Scanner ucitavac=new Scanner(System.in);
Ovaj objekat smo nazvali ucitavac i povezali smo ga sa standardnim ulazom System.in. Standardni ulaz je memorijski prostor(klase InputStream) gde se privremeno pamti podatak koji korisnik otkuca pri unosu. Potrebno je dalje, pozvati odgovarajuću metodu objekta ucitavac, koja preuzima podatak iz toka podataka System.in i konvertuje ga u odgovarajući oblik, npr. u String, ako je u pitanju tekstualni podatak. Ako uvedemo podatak text tipa String i inicijalizujemo ga tekstom unesenog od korisnika preko tastature naredba koja će to uraditi je:
String text=ucitavac.next();
Unos celobrojnog podatka
Kod unosa celobrojnog podataka, umesto metode next() koja vraća podatak tipa String, treba pozvati metodu nextInt() istog objekta ucitavac, koja vraća celobrojni podatak tipa int, kao povratnu vrednost metode.
int ceo_broj=ucitavac.nextInt();
Naravno, potrebno je da objekat klase Scanner, ucitavac bude prethodno kreiran. Ako se u istom programu vrši unos više podataka istog ili različitih tipova, potrbno je i dovoljno da postoji samo jedan objekat za učitavanje. Pogledajte kako to izgleda u sledećem primeru:
Primer: Određivanje starosti
Napraviti program koji omogućava korisniku da unese svoje ime i prezime, godinu rođenja i tekuću godinu, a zatim izračunava njegovu starost. Ako se promenljive deklarišu kao uneto_ime, uneto_prezime i starost, na ekranu ispisati podatke u sledećem obliku:
"Zdravo uneto_prezime uneto_ime, vi imate starost godina.
"Zdravo uneto_prezime uneto_ime, vi imate starost godina.
Rešenje:
Prvo treba definisati dva podatka tipa String i 3 celobrojna podatka. Zatim kreirati objekat klase Scanner, "ucitavac". Pri unosu treba pozvati odgovarajuće metode za učitavanje i konvertovanje podatka u odgovarajući oblik. Kada se napiše naziv objekta, on se dereferencira stavljanjem tačke posle naziva objekta, kao na sledećoj slici:
Posle deferenciranja se otvara lista sa osobinama i metodama objekta klase Scanner. Treba odabrati metodu next() (zaokružena crvenim). Vidimo da metoda nema parametre jer su zagrade prazne. Takođe se vidi da metoda vraća podatak tipa String(označeno plavom linijom).
Posle unosa se izračunava starost oduzimanjem tekuće i godine rođenja. Treba napomenuti da ovo nije potpuno tačno, jer nisu uzeti u obzir mesec i dan rođenja, ali to bi znatno iskomplikovalo zadatak, a cilj je samo da se kroz ovaj zadatak prikaže kako se unose različiti tipovi podataka. Kompletan kod pogledajte na sledećoj slici:
Posle unosa se izračunava starost oduzimanjem tekuće i godine rođenja. Treba napomenuti da ovo nije potpuno tačno, jer nisu uzeti u obzir mesec i dan rođenja, ali to bi znatno iskomplikovalo zadatak, a cilj je samo da se kroz ovaj zadatak prikaže kako se unose različiti tipovi podataka. Kompletan kod pogledajte na sledećoj slici:
Pre nego što se na standardni izlaz ispisuje tekst, formiran je kompletan tekst za ispis i stavljen u posebnu promenljivu tipa String. Više delova teksta se spaja upotrebom operatora "+". Posle pokretanja programa i unosa podataka na standardni ulaz, program se izvršava kompletno kao na sledećoj slici:
Pogledajte još: Podaci u programskom jeziku C
Sledeće
Operatori u JAVI >| |