java2.pdf
(
148 KB
)
Pobierz
Java-2
Podstawy programowania Ć JAVA
1. Program rozwia zuja cy rownanie kwadratowe
(zmienne podstawowe, operatory, instrukcje)
C wiczenie 2
public class
Rownaniekwadratowe {
public static void
main (String args[]) {
int
a=1, b, c;
b=-6;
c=9;
System.out.println("Rownanie kwadratowe Axx+Bx+C=0\n\n");
System.out.println("Parametry rownania:\n");
System.out.println("A: "+a+" B: "+b+" C: "+c+"\n");
if
(a==0) {
System.out.println("To nie jest rownanie kwadratowe: A=0!");
}
else
{
double
delta = b*b-4*a*c;
if
(delta<0) {
System.out.println("delta<0\n");
System.out.println("Brak rozwiazania w zbiorze liczb
rzeczywistych");
}
else
{
double
wynik;
if
(delta==0) {
wynik= -b/2*a;
System.out.println("Rozwiazanie: x = "+wynik);
}
else
{
wynik=(-b+Math.sqrt(delta))/2*a;
System.out.print("Rozwiazanie: x1 = "+wynik);
wynik=(-b-Math.sqrt(delta))/2*a;
System.out.println(" ,x2 = "+wynik);
}
}
}
}
}
Ax
o parametrach podanych bezpo srednio w kodzie programu (
Rownaniekwadratowe.java
).
Przedstawiono w nim m.in. sposob uzywania podstawowych typow zmiennych (deklaracje , inicjowanie oraz
wyprowadzanie wartosci na ekran), operatorow i instrukcji warunkowej
ifś else
.
Uwagi:
Zmienne
• Typy zmiennych w Javie dziela sie na dwa rodzaje:
typy podstawowe
(Tabela 1) oraz
typy odnosnikowe
.
Typy podstawowe dziela sie na
typy arytmetyczne
oraz
typ logiczny
. Typy arytmetyczne dziela sie z kolei na
typy
caćkowitoliczbowe
oraz typy
zmiennoprzecinkowe
. Typy odnosnikowe (
referencyjne
) dziela sie na trzy
rodzaje: typy klasowe, typy interfejsowe oraz typy tablicowe.
+
Bx
+
C
=
2
Powyzszy program jest klasycznym przykśadem obliczania pierwiastkow rownania kwadratowego
0
Typ
Liczba
bajtow
Zakres wartosci
Wartosc
standartowa
Logiczny
boolean
1
true, false
false
char
2
Znaki Unicode
\u0000
Caśkowito-
liczbowy
byte
1
-2
7
ń 2
7
-1
0
short
2
-2
15
ń 2
15
-1
0
int
4
-2
31
ń 2
31
-1
0
long
8
-2
63
ń 2
63
-1
0
Zmienno-
przecinkowy
double
float
4
–3,410
38
0.0
8
–1,810
308
0.0
Tabela 1. Typy podstawowe zmiennych w Javie
• Aby moc uzyc jakiejs zmiennej podstawowej w programie, wpierw trzeba ja zadeklarowac . Ogolna
deklaracja ma postac :
Typ_zmiennej
nazwa_zmiennej;
• Mozna rowniez zadeklarowac wiele zmiennych danego typu oddzielaja c ich nazwy przecinkami. Wartosci
zmiennych mozna przypisac juz podczas deklaracji.
Typ_zmiennej nazwa1 = wartosc1, nazwa2, nazwa3 = wartosc2;
• Nazwy zmiennych moga skśadac sie z duzych i maśych liter oraz cyfr, ale nie moga zaczynac sie od cyfry.
Nie nalezy rowniez stosowac polskich znakow diakrytycznych. Zaleca sie aby nazwy zmiennych zaczynaśy
sie od maśej litery, a pierwsze litery kolejnych wyrazow byśy wielkie np. zmiennaBufor, stawkaVat,
liczbaDni.
• Zmienne w Javie, podobnie jak w C, czy C++ mozna deklarowac w dowolnym miejscu funkcji czy metody.
• W przeciwienstwie do C++ w Javie dokśadnie okreslono sposob reprezentacji danych, niezaleznie od
systemu operacyjnego (Tabela 1, Liczba bajtow).
• Do wyswietlania danych wykorzystuje sie metody
System.out.print()
oraz
System.out.println()
, ktore jako
argumenty przyjmuja rozne typy danych (mozna je śa czyc operatorem ”+—). Druga metoda wymusza
dodatkowo przejscie do nowej linii, zas pierwsza nie.
Operatory
• Do wykonywania operacji na zmiennych sśuza operatory, ktore dzielimy na: arytmetyczne, bitowe, logiczne,
przypisania, porownania.
• Do operatorow arytmetycznych zalicza sie :
dodawanie
(+),
odejmowanie
(-),
mnoz enie
(*),
dzielenie
(/),
dzielenie modulo
(%),
inkrementacje
(++) i
dekrementacje
(--). Operatory inkrementacji i dekrementacji
moga wyste powac w formie przyrostowej x++, xź bad– przedrostkowej ++x, --x. Operator przyrostowy
zmienia wartosc zmiennej po jej wykorzystaniu, natomiast przedrostkowy przed jej wykorzystaniem!
• Do operatorow bitowych zalicza sie
AND
(&),
OR
(|),
XOR
(^), przesunie cie bitowe w lewo (<<), w prawo
(>>) oraz w prawo z wypeśnieniem zerami (>>>).
• W grupie operatorow logicznych wyroznia sie : operator logiczny
AND
(&&), logiczne
OR
(||) i logiczna
negacje
(!). Argumentami operacji takiego typu musza byc wyrazenia posiadaja ce wartosc logiczna
true
lub
false
.
• Operatory
przypisania
sa dwuargumentowe i powoduja przypisanie wartosci argumentu prawostronnego do
argumentu lewostronnego (Tabela 2).
• Operatory
poro wnania
sśuza do porownania wartosci argumentow. Wynikiem porownania jest wartosc true
lub false. Rozroznia sie argumenty: ”==—, ”!=—, ”<—, ”>—, ”>=—, ”<+—.
• Operator warunkowy ”?—, ma skśadnie :
warunek ? wartosc1 : wartosc2;
Wyrazenie takie przybiera
wartosc1
, jezeli
warunek
jest speśniony, lub
wartosc2
w przeciwnym przypadku
np. y = (x ==1? 12 : 24); da y = 12 gdy x =1 b a d– y = 24 gdy x „ 1.
Instrukcja warunkowa if...else
• Instrukcja warunkowa if...else ma ogolna postac :
if ( wyraz enie warunkowe) {
Instukcje do wykonania, jez eli warunek jest spećniony
}
else {
Instukcje do wykonania, jez eli warunek nie jest spećniony
}
•
Wyrazenie warunkowe, inaczej niz w C/C++ musi dac w wyniku wartosc typu boolean.
Argument 1 Operator Argument 2 Znaczenie
x = y x=y
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
x %= y x=x%y
x <<= y x=x<<y
x >>= y x=x>>y
x >>>= y x=x>>>y
x &= y x=x&y
x |= y x=x|y
x ^= y x=x^y
Tabela 2. Operatory przypisania i ich znaczenie w Javie
Funkcje matematyczne
• Funkcje matematyczne Javy sa zawarte w klasie
Math
. Funkcje te sa zadeklarowane jako statyczne, wie c
mozna uzyskac do nich doste p bez tworzenia egzemplarza obiektu np.
y=Math.exp(x),
y=Math.sqrt(z
).
Zadania do samodzielnego wykonania:
1. Napisac program do obliczania pierwiastkow rownania kwadratowego
Ax
2
+
Bx
+
C
=
0
o
parametrach podanych bezposrednio w kodzie programu z wykorzystaniem okna graficznego.
2. Napisac program wykonuja cy dzielenie zmiennych typu caśkowitego. Sprawdzic rezultaty w sytuacji,
gdy rzeczywisty wynik jest uśamkiem.
3. Napisac program z zadeklarowana zmienna typu caśkowitego i sprawdzic przekroczenie dopuszczalnej
wartosci tej zmiennej:
a) podczas inicjacji;
b) wykonuja c operacje arytmetyczna
4. Przeanalizowac ponizszy kod nie uruchamiaja c programu (IncDec.java).
public class
IncDec {
public static void
main (String args[]) {
int
x=1,y;
System.out.println(++x);
System.out.println(x++);
System.out.println(x);
y=x++;
System.out.println(y);
y=++x;
System.out.println(++y);
x=y;
System.out.println(--x);
System.out.println(x--);
System.out.println(x);
y=x--;
System.out.println(y);
y=--x;
System.out.println(--y);
}
}
2. Program obliczaja cy wartosc srednia
(instrukcje, tablice)
i
mport
java.io.*;
class
Srednia {
public static double
czytaj (
int
k) {
String input = "";
boolean
error;
double
bufor=0;
BufferedReader in =
new
BufferedReader (
new
InputStreamReader(System.in));
do
{
error =
false
;
System.out.print ("Podaj tablica["+k+"]: ");
System.out.flush();
try
{
input = in.readLine();
}
catch
(IOException e) {
System.out.println (e);
System.out.println ("Przechwycono blad wejsciowy");
error =
true
;
}
try
{
bufor = Double.valueOf (input).doubleValue();
}
catch
(NumberFormatException e) {
System.out.println(e);
System.out.println("zly format, jeszcze raz");
error =
true
;
}
}
while
(error);
return
(bufor);
}
public static void main (String args[]) {
int
ilosc = 5;
double
suma = 0;
double
tablica[] = new double[ilosc];
System.out.println("Obliczanie wartosci sredniej "+ilosc+" elementow tablicy");
for
(int i=0; i<ilosc; i++) {
tablica[i]= czytaj(i);
}
System.out.print("\ntablica =[");
for
(int i=0; i<ilosc; i++) {
suma += tablica[i];
System.out.print (" "+tablica[i]+" ");
}
System.out.println("]");
double
wynik = suma / ilosc ;
System.out.println ("Srednia liczb wynosi: "+wynik+"\n");
}
}
Powyzszy program (Srednia.java) oblicza wartosc srednia elementow tablicy, zadanych w programie.
Przedstawiono w nim m.in. technike pobierania danych z klawiatury oraz zamiane śancucha na liczbe . Dane
wprowadzane sa typu rzeczywistego (
double
).
Do pobierania danych z klawiatury stworzono metode
czytaj
, w ktorej uzyto klasy
BufferedRaader
zawieraja cej
metode
readLine
, ktora pobiera dane wejsciowe z obiektu
BufferedReader
i zwraca śancuch. W tym celu
zaimportowano klasy z pakietu
java.io
(tam znajduje sie
BufferedReader
). W metodzie czytaj nalezaśo stworzyc
nowy obiekt
BufferedReader
, ktory dostarczy dane z klawiatury. W tym celu wywośano konstruktor
BufferedReade
r z argumentem
System.in
(standardowe wejscie). Aby przeczytac dane wymuszono oproznienie
bufora wejsciowego metda
System.out.flush
. Metoda
readLine
moze zgśosic wyja tek
IOException
(wejscia-
wyjscia), wie c uzyto pe tli
do-while
z blokiem
try-catch
, aby go przechwycic . Metoda
readLine
zwraca śancuch.
ktory jest przypisany zmiennej
input
typu
String
.
Kolejnym etapem jest przeksztaścenie śancucha w liczbe Ż w tym przypadku
double
. Konwersje przeprowadza
sie metoda
valueOf
, zawartej w klasie
Double
. Klasa ta pozwala na umieszczenie typu podstawowego w
obiekcie. Obiekt
Double
zawiera tylko jedno pole typu
double
. Klasa ta zawiera takze kilka metod do
przeksztaścania obiektow
Double
w typ
String
. Jak wspomniano wartosc zmiennej
input
przeksztaścana jest w
typ
double
za pomoca metody
Double.valueOf(String).doubleValue().
Metoda ta moze zgśosic wyja tek
NumberFormatException
, jesli śancuch wejsciowy jest –le sformatowany. Dzie ki zastosowaniu pe tli
do-while
z
blokiem
try-catch
wyja tek ten jest przechwytywany.
Uwagi:
Zmienne odnosnikowe.
• Zmienne typow odnosnikowych (referencyjnych) deklaruje sie jak w przypadku zmiennych typow
podstawowych:
Typ_zmiennej nazwa_zmiennej1, nazwa_zmiennej2;
Pisza c w ten sposob deklaruje sie jedynie odniesienie do zmiennej obiektowej, a nie sama zmienna !
Takiemu odniesieniu przypisana jest wartosc pusta (null). W zwia zku z tym nie mozna jej wykorzystac w
zadnej operacji. Dopiero po utworzeniu odpowiedniego obiektu w pamie ci mozna powia zac go z tak
zadeklarowana zmienna . Jesli deklaruje sie zmienna typu caśkowitego:
int a
; mozna jej przypisac wartosc
np. 10. Z eby moc skorzystac z tablicy nalezy zadeklarowac zmienna odnosnikowa typu tablicowego,
utworzyc nowy obiekt tablicy i powia zac go za zmienna . Dopiero wtedy mozna swobodnie odwośywac sie
do kolejnych elementow. Pisza c: i
nt tablica[];
deklaruje sie odniesienie do tablicy, ktora be dzie zawieraśa
elementy typu np
. int
. Samej tablicy jednak wcale jeszcze nie ma. Aby stworzyc nowa , jednowymiarowa
tablice liczb typu int o rozmiarze np. 10 elementow i przypisac ja zmiennej odnosnikowej o nazwie tablica
nalezy uzyc wyrazenie:
int tablica = new int[10];
Po tej deklaracji mozna sie odwośywac do kolejnych elementow tej tablicy:
tablica [index]
• Elementy tablicy sa numerowane od zera, a nie od 1!. Oznacza to, ze pierwszy element tablicy n-
elementowej ma indeks 0, a ostatni (n-1).
• Rozmiar tablicy moze byc ustalony dynamicznie w fazie wykonywania programu
• Zawsze mozna uzyskac informacje o rozmiarze (liczbie elementow) za pomoca odwośania
tablica.length;
• Deklaruja c:
Button b;
Zmiennej b przypisujemy odniesienie (referencj e ) do obiektu typu Button, ale zmienna nie wskazuje na
razie na zaden obiekt. Dopiero uzycie wyrazenia
new
:
b = new Button();
tworzy obiekt, a zwrocona przez new referencja jest podstawiana za zmienn a b.
W deklaracjach zmiennych typu odnosnikowego mozna inicjowac dane, np.:
int tablica[] = new int[100];
Button b = new Button;
Button[] btab = new Button[n]
String s = ” ala ma kotaą;
Ostatni przykśad pokazuje, ze w Javie dopuszczalne sa literaśy śancuchowe, ktorych uzycie powoduje
zbudowanie obiektu typu
String
i zwrot referencji do niego. Zmienna s zostaje zainicjowana referencja do
automatycznie utworzonego obiektu typu
String
, ktory zawiera napis ”ala ma kota—;
Plik z chomika:
twilinski
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:
Dzwonki
SMS
Zgłoś jeśli
naruszono regulamin