modul2.pdf
(
234 KB
)
Pobierz
Microsoft Word - JavaSkrypt
M
ODU
2
Î
T
YPY DANYCH
,
ZMIENNE I OPERATORY
8
Modu 2 Typy danych, zmienne i operatory
Zawarto tematyczna
Po zrealizowaniu jednostki bdziesz w stanie:
efektywnie wykorzystywa dostpne typy prymitywne
deklarowa zmienne i nadawa im wartoci pocztkowe
wykonywa proste operacje arytmetyczne i logiczne
odczytywa oraz wyprowadza dane na konsol
operowa zoonymi strukturami danych (tablice)
Wprowadzenie do zagadnie
Program komputerowy skada si z sekwencji instrukcji, ktre wykonywane s przez komputer dla
realizacji zadania. W skad instrukcji wchodz wyraenia operujce na danych, reprezentowanych przez
zmienne oraz literay. Rodzaj realizowanej operacji okrelony jest poprzez uycie operatorw.
T
YPY DANYCH
Typ danych okrela rodzaj informacji oraz zakres dopuszczalnych wartoci, jakie moe przyjmowa staa,
zmienna, argument wyraenia, parametr, czy rezultat metody. Jzyk Java definiuje typy proste
(prymitywne) oraz typy zoone (obiektowe). W przypadku tych pierwszych wyrni mona
24
:
cakowite (
int,short,long,byte)
,
zmiennoprzecinkowe (
float,double)
,
znakowy (
char)
,
logiczny (
boolean)
.
Rodzaj informacji oraz zakresy dopuszczalnych wartoci okrela specyfikacja jzyka. Warto nadmieni,
i sposb reprezentacji danych jest niezaleny od platformy systemowej, a co za tym idzie, zakres
dopuszczalnych wartoci pozostaje niezmienny niezalenie od platformy, na ktrej uruchamiany jest
program.
L
ITERAY
Litera jest to cig znakw reprezentujcy warto zapisan bezporednio w kodzie programu. Poniej
wymienione zostay przykadowe wartoci:
"bordowy" // acuch znakw
’K’ // warto typu "char"
’\u0041’ // warto typu "char" w standardzie "unicode" (przedrostek \u)
293
// warto dziesi*tna typu "integer"
49.6
// warto rzeczywista typu "double"
0251
// warto semkowa (przedrostek 0) typu "integer"
0x25
// warto szestnastkowa (przedrostek 0x) typu "integer"
400L
// warto typu "long" (przyrostek L)
2.45F
// warto typu "float" (przyrostek F lub f)
3.06D
// warto typu "double" (przyrostek D lub d domylny)
9.72E4
// zapis wykadniczy (symbol E lub e)
Naley zwrci uwag na stosowanie dodatkowej symboliki w celu precyzyjnego okrelenia typu literau
(293L, 293F).
Jzyk Java zawiera rwnie zbir znakw specjalnych (ang.
escape characters
):
\b, \t, \f, \r,
\n, \", \’, \\
, moliwych do zastosowania bezporednio w kodzie programu:
24
zobacz: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html
true
// warto logiczna
M
ODU
2
Î
T
YPY DANYCH
,
ZMIENNE I OPERATORY
9
System.out.println("Uniwersytet Ekonomiczny\nw Krakowie");
Z
MIENNE
Zmienna
25
okrela obszar pamici, przeznaczony do przechowywania danych
26
. Kada zmienna posiada
nazw oraz typ, ktry okrela zakres dopuszczalnych wartoci oraz rodzaj moliwych do
przeprowadzenia operacji. Jzyk Java wymaga deklaracji (okrelenia nazwy oraz typu) kadej zmiennej
przed jej uyciem. Pierwszy odczyt wartoci zmiennej powinien by poprzedzony jej inicjalizacj, czyli
przypisaniem wartoci pocztkowej. Przykady uycia zmiennych:
int liczbaPojazdow; // deklaracja (okrelenie nazwy i typu zmiennej)
double rataKredytu; // deklaracja
liczbaPojazdow = 4; // inicjalizacja (nadanie wartoci zmiennej)
rataKredytu = 330.58; // inicjalizacja
double stopaProcentowa = 0.04; // jednoczesna deklaracja i inicjalizacja
S
TAE
Podobnie jak zmienna, staa okrela obszar pamici operacyjnej, sucy do przechowywania danych.
Posiada nazw oraz typ dopuszczalnych wartoci, jakie moe przyjmowa. W przypadku staej nie jest
moliwa zmiana ju raz nadanej wartoci w trakcie dziaania programu. Deklaracja staej poprzedzona
jest sowem kluczowym
final
:
final double KURS_EURO = 2.48;
final String NAZWA_UCZELNI = "Uniwersytet Ekonomiczny";
final String MIEJSCOWOSC = "Krakw";
System.out.println(NAZWA_UCZELNI + " " + MIEJSCOWOSC);
O
PERATORY
Operatory
27
to zestaw symboli w jzyku programowania okrelajcych rodzaj wykonywanej operacji na
argumencie lub argumentach wyraenia. Dokonujc klasyfikacji ich podziau, wyrni mona operatory:
przypisania:
= += -= *= /= %= &= ^= |= <<= >>= >>>=
arytmetyczne
28
:
+ - * / %
jednoargumentowe:
+ - ++ -- !
relacji:
== != > >= < <= instanceof
warunkowe:
&& || ?:
bitowe:
~ << >> >>> & ^ |
Naley zwrci uwag, i sposb uycia operatorw zaleny jest od typu argumentu (argumentw)
natomiast kolejno wykonywania operacji wynika z priorytetu, jak posiadaj operatory. Zmiana
kolejnoci wykonywania operacji realizowana jest przez zastosowanie nawiasw. Ponisze wyraenia
przedstawiaj przykadowe wykorzystanie operatorw:
komputerPrzenosny = true;
komputerStacjonarny = !komputerPrzenosny;
dystans -= 24;
i++
iloczynSumy = (1+2)*(3+4);
delta = b*b 4*a*c;
poleKola = 3.14 * r * r;
sredniaOcen = (ocenaBiologia + ocenaFizyka + ocenaHistoria) / 3;
K
ONWERSJA I RZUTOWANIE TYPW
Jeli argumenty wyraenia nie s zgodnych typw, zachodzi konieczno dokonania konwersji. Gdy
przebiega ona bez utraty informacji, wykonywana jest niejawnie. Jeli moe prowadzi do utraty
informacji konieczne jest wykonanie rzutowania jawnego:
25
Java wyrnia 4 kategorie zmiennych: obiektowe (ang.
instance variables
) unikalne dla kadej instancji klasy, klasowe
(ang.
class variables
) jednakowe dla wszystkich instancji klasy, lokalne (ang.
local variables
) suce do tymczasowego
przechowywania wartoci oraz parametry, zadaniem ktrych jest przekazywanie wartoci do metody.
26
Zmienne prymitywne okrelaj obszar pamici przechowujcy dane typu podstawowego. Natomiast zmienne obiektowe, o
ktrych bdzie mowa w kolejnych rozdziaach, zawieraj referencje (wskazania) do utworzonych wczeniej obiektw.
27
zobacz: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html
28
Operator dzielenia daje w wyniku warto cakowit (bez reszty), jeli obydwa argumenty s liczbami cakowitymi. W
pozostaych przypadkach wartoci jest liczba rzeczywista.
M
ODU
2
Î
T
YPY DANYCH
,
ZMIENNE I OPERATORY
10
byte x = 17;
int y = x; //niezgodno typw (konwersja niejawna)
double a = 15.4;
int b = (int)a; //niezgodno typw (moWliwa utrata informacji, wymagane rzutowanie)
A+CUCHY ZNAKW
=a>cuch to cig (sekwencja) znakw zawarty w zmiennej lub literale typu
String
. Ilekro w programie
wystpi litera lub zmienna typu
String
, tworzony jest obiekt typu a>cuchowego
29
:
String osoba = "Jan Kowalski"; // deklaracja oraz inicjalizacja zmiennej typu String
Okrelenie liczby znakw zmiennej lub literau typu
String
moliwe jest dziki metodzie
length()
:
String nazwaProduktu = "Telefon komrkowy Sony-Ericsson K800i";
System.out.println("Liczba znakw: " + nazwaProduktu.length());
System.out.println("Liczba znakw: "+"Programowanie rozproszone".length());
Klasa
java.lang.String
30
zawiera metody umoliwiajce manipulowanie znakami w a>cuchu,
porwnywanie a>cuchw
31
, przeszukiwanie, wyodrbnianie podcigu, tworzenie kopii znakw, zamian
znakw na wielkie/mae litery w oparciu o standard unicode, czy konwersj wartoci numerycznych do
postaci cigu znakw.
String rezultat;
String adres = "ul.Szeroka";
rezultat = "ul.Kwiatowa".equals("ul.Kwiatowa") ? "adres zgodny" : "adres inny";
System.out.println(rezultat);
rezultat = "ul.Kwiatowa".equals(adres) ? "adres zgodny" : "adres inny";
System.out.println(rezultat);
T
ABLICE
Tablice reprezentuj kontener sucy do przechowywania staej liczby wartoci pojedynczego typu.
Liczba elementw tablicy jest okrelona w momencie jej tworzenia i nie moe zosta zmieniona w trakcie
dalszego dziaania programu. Kady element posiada kolejny numer (indeks
32
) umoliwiajcy zapis i
odczyt danych:
29
Moliwe jest rwnie utworzenie obiektu
String
przy uyciu operatora
new
(zobacz dostpne konstruktory klasy
String
).
30
zobacz java.lang.String w http://java.sun.com/javase/6/docs/api/
31
Ze wzgldu na sposb reprezentacji danych zaleca si uycie metody
equals()
do porwnywania a>cuchw znakw
w miejsce operatora porwnania
==
.
32
Numeracja elementw tablicy rozpoczyna si od indeksu 0.
M
ODU
2
Î
T
YPY DANYCH
,
ZMIENNE I OPERATORY
11
/* tablice jednowymiarowe */
// deklaracja zmiennej tablicowej
double[] cenaArtykulu; // deklaracja zmiennej tablicowej (nazwa i typ elementw)
String[] cechaCharakteru; // deklaracja zmiennej tablicowej
int[] rzutKostka;
// utworzenie tablicy (okrelenie liczby jej elementw)
cenaArtykulu = new double[50];
cechaCharakteru = new String[3];
rzutKostka = new int[8];
// jednoczesna deklaracja zmiennej tablicowej oraz utworzenie tablicy
String[] srodekTransportu = new String[2];
// jednoczesna deklaracja zmiennej, utworzenie tablicy 3-elem. oraz nadanie wartoci
String[] sygnalizator = {"czerwony","Wty","zielony"};
// dost*p do elementw tablicy (przypisanie i odczyt wartoci)
cenaArtykulu[17] = 328.50;
cenaArtykulu[25] = 29.0;
double Razem = cenaArtykulu[17] + cenaArtykulu[25];
rzutKostka[7] = 3;
cechaCharakteru[0] = "komunikatywno ";
cechaCharakteru[2] = "asertywno ";
srodekTransportu[1] = "rower";
System.out.println(sygnalizator[2]);
/* tablice wielowymiarowe */
// deklaracja oraz inicjalizacja tablicy dwuwymiarowej
int[][] tabliczkaMnozenia = {{1,2,3},{2,4,6},{3,6,9}};
System.out.println(tabliczkaMnozenia[2][0]);
W celu okrelenia liczby elementw tablicy naley odczyta warto pola
length
:
String[] koloryTeczy =
{"czerwony","pomaraczowy","Wty","zielony","niebieski","fioletowy"};
int liczbaKolorowTeczy = koloryTeczy.length;
Kopiowanie danych pomidzy tablicami moliwe jest dziki metodzie
java.lang.System.arraycopy()
. Istnieje pokaFna liczba metod umoliwiajcych
manipulowanie na tablicach, realizujcych operacje sortowania, czy przeszukiwania elementw. Metody
te zostay zgrupowane w klasie
java.util.Arrays
.
T
YP WYLICZENIOWY
Typ, skadajcy si z ustalonego, sko>czonego zbioru staych wartoci (egzemplarzy typu). Kady z
egzemplarzy pozostaje niezmienny w trakcie dziaania programu. Std, zgodnie z konwencj,
identyfikatory egzemplarzy powinno tworzy si przy pomocy wielkich liter i znaku podkrelenia.
enum Dzien {PN,WT,_R,CZ,PT,SB,ND};
Dzien dzienPracy = Dzien.WT;
Dzien dzienWolny = Dzien.SB;
System.out.println(dzienPracy!=dzienWolny);
Pytania sprawdzajce
1.
Wska rnice, jakie wystpuj pomidzy zmiennymi, staymi i literaami.
2.
Jakie funkcje w programie peni deklaracja zmiennej.
3.
Na ktrym z dostpnych typw prymitywnych nie jest moliwe przeprowadzenie operacji
rzutowania.
4.
Uszereguj operatory wedug ich priorytetu:
+ % -- <
5.
Jak funkcjonalno realizuj operatory:
++ ?: /= %
. Podaj przykady wyrae> z ich uyciem.
6.
Okrel warto wyraenia:
2 > 3 || 4 < 5 ? 6 << 7 : 8 / 9
7.
Wymie> dopuszczalne wartoci (minimalne i maksymalne) dla kadego z typw prymitywnych.
M
ODU
2
Î
T
YPY DANYCH
,
ZMIENNE I OPERATORY
12
8.
Podaj typ wartoci wyraenia:
12 / 7
9.
Ktre z wymienionych instrukcji nie spowoduj powstania bdu kompilacji:
float f=1.01;
int i=1/3; double d=777d;
10.
Czy podana nierwno jest prawdziwa:
0xF3 > 0574
? Uzasadnij odpowiedF.
11.
Okrel kody w standardzie unicode dla wymienionych znakw: B 9
‘ #
12.
Jakie oznaczenie (indeks) posiada pierwszy element tablicy.
13.
Zapoznaj si z dokumentacj klasy
java.lang.String
. Odszukaj metod umoliwiajc
czenie cigu znakw. Podaj przykad instrukcji czcej 2 literay zawierajce Twoje imi i
nazwisko.
14.
Jak informacj zwrci wyraenie
tablica.length
w przypadku tablicy wielowymiarowej.
15.
Podaj przykad uycia metody porzdkujcej elementy tablicy typu
int
.
Zadania do wykonania
P
ODSTAWOWE OPERACJE NA ZMIENNYCH
Zadanie 13 Î OperacjePodstawowe.java
Skompiluj i uruchom poniszy program. Zaobserwuj, jakie informacje wywietlane s na konsoli.
Porwnaj wyniki z kodem programu. Czy kada linia kodu jest dla Ciebie zrozumiaa?
public class OperacjePodstawowe {
public static void main(String[] args){
int i = 7;
System.out.println("Powie \"Wojna i pokj\" Lwa Tostoja");
System.out.println("64kB to " + 0xFFFF + " bitw");
System.out.println("Czy 32 > 15 ? " + (32>15?"tak":"nie") );
System.out.println("\\u0042 (unicode) reprezentuje znak \u0042");
System.out.println("7 * (2 do pot*gi 3) = " + (7 << 3) );
System.out.println("Cz* cakowita 2.56 wynosi " + (int)2.56);
System.out.println("7/2 = " + 7/2 + ", ale dlaczego?");
System.out.println("A dlaczego 7/2d = " + 7/2d + " ?");
System.out.println("Reszta z dzielenia 10/6 = " + 10%6);
System.out.println("Warto i=" + i + ", a ++i=" + (++i));
System.out.println("Gdy teraz wykonamy operacj* i*=9 to i=" +(i*=9));
}
}
Zadanie 14 Î InstrukcjaPrzypisania.java
Poniszy kod programu zawiera instrukcje przypisania nadajce wartoci zmiennym, ktre nie zostay
uprzednio zadeklarowane. Zaobserwuj, jakie komunikaty o bdach pojawi si w momencie
kompilacji.
public class InstrukcjaPrzypisania {
public static void main(String[] args){
nazwaPlanety = "Ziemia";
powierzchniaPlanety = 510065284; // km2
obwodPlanety = 40041; // km
}
}
Zadanie 15 Î Operatory.java
Dokonaj analizy poniszego kodu programu i odpowiedz na pytanie: jakie rezultaty zostan
wywietlone na konsoli? Nastpnie uruchom program i porwnaj wyniki.
Plik z chomika:
rekin_80
Inne pliki z tego folderu:
Zalacznik_Cwicz2_PP_arytmet_logika.pdf
(133 KB)
zajecia2JTP.pdf
(181 KB)
wyklad3.pdf
(122 KB)
wstep_do_javy.pdf
(1979 KB)
wprowadzenieJava.pdf
(1229 KB)
Inne foldery tego chomika:
GUI
java
java.net
SWING
Zgłoś jeśli
naruszono regulamin