Programowanie.
Wykład 2. Podstawy języka.
Mgr.inż. Aleksander Bielski
alex@iis.pwsz.elblag.pl
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
1
Program wykładu
1) Pliki źródłowe
2) Unicode
3) Podstawowe elementy języka
słowa kluczowe
komentarze
Identyfikatory
literały
typy
zmienne
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
2
4) Operatory:
Priorytet
Klasyfikacja
Operatory numeryczne
Operatory bitowe
Operatory logiczne i wyrażenia
logiczne
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
3
Pliki źródłowe: przykład
// deklaracja pakietu
package exam.prepguide;
// istrukcje importu
import java.awt.Button;
// dokładnie wskazana
klasa
import java.util.*;
// import całego pakietu
// definicja klasy
public class Test {...}
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
4
Pliki źródłowe
●
musi istnieć minimum jedna nazwa klasy
publicznej w pliku
●
nazwa pliku źródłowego musi być taka jak
nazwa klasy publicznej
●
plik musi mieć rozszerzenie
.java
Elementy pliku źródłowego wg kolejności:
●
deklaracja pakietu
●
instrukcje importu
●
definicje klas
Unicode
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
5
Programy w Javie używają kodowania Unicode, obecnie
wersji 2.1
Informacje o kodowaniu Uicode można znaleźć na stronach:
http://www.unicode.org
i
ftp://unicode.org
Poza kilkoma wyjątkami wszystkie elementy programu w
Javie składają się wyłącznie z symboli kodu ASCII (lub
sekwencji escape Unicode)
Uwaga: pierwsze 128 znaków kodu Unicode to znaki kodu
ASCII.
Unicode – etapy translacji
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
6
1. Translacja sekwencji escape z potoku znaków do
odpowiadających znaków Unicode. Sekwencja escape to
ciąg postaci
/uxxxx
, gdzie xxxx jest wartością
szestnastkową.
2. Translacja strumienia znaków Unicode (wynik pkt. 1) na
strumień symboli końca linii i znaków wejściowych.
3. Translacja strumienia (wynik pkt. 2) na tokeny i symbole
terminalne (po odrzuceniu “białych symboli)
Unicode – etapy translacji c.d.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
7
Uwaga:
W każdym kroku jest wykonywana najdłuższa z możliwych
translacja, nawet gdy w wyniku nie powstanie poprawny
program.
Przykład:
Wejściowy ciąg znaków
a--b
zostanie przetworzony na:
a
,
--
,
b
, co nie jest częścią gramatycznie poprawnego
programu w Javie.
Symbole końca linii (terminatory linii)
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
8
1. Znak kodu ASCII LF (Line Feed) – symbol nowej linii
2. Znak kodu ASCII CR (Carridge Return)
3. Sekwencja zawierająca dwa znaki CR LF
Komentarze
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
9
/* tekst */
- tradycyjny komentarz: wszystko od znaków ASCII
/
*
do znaków ASCII
*/
jest ignorowane (podobnie jak w C i C++).
//
tekst - Komentarz w jednej linii: wszystko od znaków ASCII
//
do końca linii jest ignorowane (podobnie jak w C++).
/** documentation */
- Komentarz dokumentacyjny, może być
używany do tworzenia dokumentacji kodu przy użyciu narzędzia
javadoc. Opis elementów formatujących można znaleźć w
dokumentacji do programu javadoc.
Słowa kluczowe i zarezerwowane
Następujące wyrazy składające się ze znaków kodu ASCII są w
Javie zarezerwowane i nie mogą być używane jako identyfikatory:
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
10
abstract
default
if
private
this
boolean
do
implements protected
throw
break
double
import
public
throws
byte
else
instanceof return
transient
case
extends
int
short
try
catch
final
interface
static
void
char
finally
long
strictfp
volatile
class
float
native
super
while
const
for
new
switch
continue
goto
package synchronized
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
11
Identyfikatory
Identyfikator
– jest wyrazem używanym przez programistę do
nadania nazwy zmiennej, metodzie, klasie lub etykiecie.
Slowa kluczowe i zarezerwowane
nie mogą być
identyfikatorami.
Identyfikator musi się zaczynać od litery, znaku dolara ($) lub
symbola podkreślenia (_). Każdy następny znak może być literą,
znakiem doalara, podkreslenia lub cyfrą.
Identyfikatory - przykłady
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
12
1) Bleble // prawidłowa
2) BIG
interface
// prawidłowa
3) $toWaluta
// prawidłowa
4) 3_element5
// nieprawidłowa
5) !theCase
// nieprawidłowa – zły pierwszy znak
6) NO
true
// prawidłowa
Typy w Javie
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
13
Dokładne sprawdzanie typów w czasie kompilacji : zalety i wady
Dwa rodzaje typów w Javie:
a)Proste lub podstawowe
b)Referencyjne
Typy podstawowe
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
14
boolean (logiczne)
numeryczne
Typy podstawowe
typ
rozmiar
klasa
boolean
Boolean
char
16
Character
byte
8
Byte
short
16
Short
int
32
Integer
long
64
Long
float
32
Float
double
64
Double
void
Void
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
15
Typy referencyjne
●
Klasa -
class
●
interfejs –
interface
●
Tablicowy –
array
Uwaga:
typ specjalny -
null
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
16
Typy podstawowe c.d.
Zmienne typów całkowitych mogą przyjmować
wartości w zakresie:
byte:
od -128
do
127
short
od -32768
do
32767
int
od -2147483648
do 2147483647
long
od -9223372036854775808L
do 9223372036854775807L
char
od '\u0000'
do '\uffff'
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
17
Typy podstawowe c.d.
float
– (4 bajty spec. IEEE 754), wartości w przedziale
od 1.40239846e-45f do 3.40282347e+38f
double
- (8 bajtów spec. IEEE 754), wartości w
przedziale od 4.94065645841246544e-324d do
1.79769313486231570e+308d
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
18
Zmiennoprzecinkowe stałe
Float.NaN
Float.NEGATIVE_INFINITY
Float.POSITIVE_INFINITY
Double.NaN
Double.NEGATIVE_INFINITY
Double.POSITIVE_INFINITY
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
19
Zmiennoprzecinkowe stałe: zastosowanie
double d = -10.0 / 0.0;
if (d == Double.NEGATIVE_INFINITY) {
System.out.println( d just exploded: + d);
}
W tym przykładzie warunek w linii drugiej jest
spełniony, dlatego zostaje wykonana linia 3
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
20
Literały
Literał
– oznacza wartość podaną w kodzie
źródłowym programu (w przeciwieństwie do
wartości obliczanej w czasie wykonywania).
zmienne typów postawowych
łańcuchy znakowe
Wartość null
mogą się pojawiać:
po prawej stronie znaku przypisania (P-value)
w wywołaniu metody
nie można do literała przypisać innej wartości
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
21
Literały: przykłady
boolean isBig = true;
boolean isLittle = false;
char c = 'w';
char c1 = '\u4567';
String s = “Symbole w łancuchach tekstowych
są w 16-bitowym kodzie Unicode”;
float zm = 0.34f;
long
liczba = 197L ;
int i = 13;
byte b = i; //błąd kompilacji
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
22
Literały c.d.
Java obsługuje kilka sekwencji do oznaczenia
znaków specjalnych:
'\n'
- znak nowej linii
'\r'
- for return
'\t'
– znak tabulacji
'\b'
- backspace
'\f'
- formfeed
'\''
- apostrof
'\”'
- cudzysłów
'\\'
- backslash
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
23
Literały liczbowe
●
notacja dziesiętna: domyślna
●
ósiemkowa : zaczyna się od
0
(zera)
●
szestnastkowa: zaczyna się od
0x
lub
0X
Przykład: liczba 28 (dwadzieścia osiem):
28 034 0x1c 0x1C 0X1c 0X1C
28L 034L 28f 28.0 28d 2.8e+1
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
24
Literały liczbowe typu int
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
25
System
Max
Min
Dziesiętny
Ósiemkowy
017777777777
020000000000
Szestnastkowy
0x7fffffff
0x80000000
2147483647 (2
31
-1) -2147483648 (2
31
)
Wartości dziesiętnej -1 odpowiadają w systemach szestnastkowym i
ósiemkowym literały 0xffffffff i 037777777777.
Przykłady:
0
2
0372 0xDadaCafe
1996
0x00FF00FF
Literały liczbowe typu long
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
26
Wartości dziesiętnej -1 odpowiadają w systemach szestnastkowym i
ósiemkowym
literały
0xffffffffffffffffL
i
01777777777777777777777L.
Przykłady:
0l
0777L
0x100000000L
2147483648L 0xC0B0L
System
Max
Min
Dziesiętny
Ósiemkowy
0777777777777777777777L
01000000000000000000000L
Szestnastkowy 0x7fffffffffffffffL
0x8000000000000000L
9223372036854775807L (2
63
-1)
- 9223372036854775808L (2
63
)
Literały liczbowe zmiennoprzecinkowe
(dodatnie)
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
27
Typ
Max
Min
Float
3.40282347e+38f
1.40239846e-45f
Double 1.79769313486231570e+308 1.79769313486231570e+308
Uwaga:
litera d jest opcjonalna, domyślnie przyjmowany jest typ double
Przykłady (float):
1e1f 2.f
.3f
0f
3.14f
6.022137e+23f
Przykłady (double):
1e1
2.
.3
0.0
3.141e-9d
1e137
Literały logiczne, znakowe i null
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
28
typu logicznego (boolean):
2 wartośći :
true
i
false
literał null:
null
typu znakowego (char):
śą zapisywane w apostrofach
'
pojedynczy znak (z wyjątkiem apostrofa
'
i backslash
\
)
sekwencja
escape
Przykłady:
'a'
'%'
'\t'
'\\'
'\''
'\u03a9'
'\uFFFF'
'\177'
''
''
Literały tekstowe (łańcuchy)
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
29
Zawierają zero lub więcej znaków ujetych w cudzysłowy. Każdy
znak może być reprezentowany sekwencją escape.
Uwaga:
Symbole LF i CR nie mogą się znajdować wewnątrz literału
tekstowego (są to symbole terminujące).
Przykłady:
'"
// pusty łańcuch
"\""
// łańcuch zawierający cudzysłów
"To jest łańcuch"
"To jest tekst " +
"umieszczony w dwoch liniach."
Literały tekstowe - przykład
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
30
package testPackage;
class Test {
public static void main(String[] args) {
String hello = "Hello", lo = "lo";
1.
System.out.print((hello == "Hello") + " ");
2.
System.out.print((Other.hello == hello) + " ");
3.
System.out.print((other.Other.hello == hello) + " ");
4.
System.out.print((hello == ("Hel"+"lo")) + " ");
5.
System.out.print((hello == ("Hel"+lo)) + " ");
6.
System.out.println(hello == ("Hel"+lo).intern());
}
}
class Other { static String hello = "Hello"; }
Literały tekstowe - przykład c.d.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
31
package other;
public class Other { static String hello = "Hello"; }
Wynik wykonania przykładowego programu:
true true true true false true
Uwaga: program znajduje się w katalogu p1
Literały tekstowe – kilka reguł
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
32
1)Literały tekstowe
tej samej klasy
znajdujące się w
tym samym
pakiecie
reprezentują referencję do tego samego obiektu String.
2)Literały tekstowe
różnych klas
znajdujące się w
tym samym
pakiecie
reprezentują referencję do tego samego obiektu String.
3)Literały tekstowe
różnych klas
znajdujące się w
różnych
pakietach
również reprezentują referencję do tego samego
obiektu String.
Literały tekstowe – kilka reguł c.d.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
33
4)Łańcuchy tekstowe obliczane na podstawie wyrażenia stałego są
obliczane w czasie kompilacji i są traktowane jak literały.
5)Łańcuchy tekstowe obliczane w czasie wykonywania programu
są ponownie tworzone i dlatego różnią się
6)W wyniku wywołania metody
intern()
zwracany jest łańcuch z
unikalnej puli łańcuchów tekstowych o tej samej zawartości.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
34
Separatory – jeden z 9 znaków:
(
)
{
}
[
]
;
,
.
Zmienne
Zmienna oznacza miejsce w pamięci.
Zmienne typu podstawowego zawsze zawierają
wartości dokładnie tego typu.
Zmienna klasy T może zawierać referencję o
wartości null lub referencję do obiektu
klasy T lub obiektu klasy pochodnej od klasy
T.
Zmiena typu interfejs może zawierać
referencję null lub referencję do dowolnego
obiektu dowolnej klasy która implementuje
ten interfejs.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
35
Zmienne c.d.
Jeśli T jest typem podstawowym, to zmienna
typu “array of T” (“tablica elementów typu
T”) może być wartością null lub referencją do
dowolnej tablicy typu "array of T".
Jeśli T jest typem referencyjnym, wtedy
zmienna typu “array of T” (“tablica elementów
typu T”) może być wartością null lub
referencją do dowolnej tablicy typu "array of
S", gdzie typ S jest typem, który może być
przypisywany do typu T.
Zmienna typu Object może zawierać wartość
null lub referencję do dowolnego obiektu lub
tablicy.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
36
Zmienne – wartości domyślne
●
Byte - (byte)0
●
Short - (short)0
●
Int
- 0
●
long
- 0L
●
float
- 0.0f (dodatnie)
●
double - 0.0d (dodatnie)
●
char
- '\u0000'
●
boolean - false
●
dla wszystkich typów referencyjnych - null
przyklad: p4/Test.java
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
37
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
38
Operatory wg kolejności wykonywania:
Unarne:
++
- -
+ - !
~
( )
Arytmetyczne:
*
/
%
+
-
przesunięcie:
<<
>>
>>>
porównanie:
<
<=
>
>=
instanceof
==
!=
bitowe:
&
^
|
logiczne:
&&
||
warunkowy:
?:
przypisania:
=
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
39
Operatory – działania skrócone
+=
-=
*=
/=
&=
|=
^=
%=
<<=
>>=
>>>=
Reguły obliczania
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
40
Kolejność obliczania wyrażeń ściśle określona
obliczenia odbywają się w kierunku od lewej do prawej
int [] a = { 4, 4 };
int b = 1;
a[b] = b = 0;
Pytanie:
Jaki jest wynik wykonywania kodu?:
Reguły obliczania c.d.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
41
Zasada od lewej do prawej wymaga, żeby najpierw pobrać i obliczyć
operandy
zaczynamy od
a[b]
otrzymamy referencję do elementu
a[1]
.
obliczamy wyrażenie
b
, którego wartością jest referencja do
b
pobieramy wyrażenie
0
, którego wartością jest stała
0
Teraz przeprowadzamy operacje w kolejności priorytetów:
wartość
0
jest przypisana do zmiennej
b
wartość
0
jest przypisana do elementu tablicy
a
Reguły obliczania: zmiennoprzecinkowe
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
42
Jeśli co najmniej jeden operand jest typu zmiennoprzecinkowego, to
operacja jest również zmiennoprzecinkowa nawet jeżeli pozostałe
operandy należą do typów całkowitych
Jeśli co najmniej jeden operand jest typu double, wtedy wynik
operacji jest obliczany z użyciem 64 bitowej arytmetyki i jest
również typu double.
Przykład:
program
p2/Test.java
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
43
Reguły obliczania: całkowite
Jeśli co najmniej jeden operand jest typu long, wtedy
wynik operacji jest obliczany z użyciem 64 bitowej
arytmetyki i wynik jest typu long. Nie dotyczy to
operacji przesunięcia.
Przykład: program
p3/Test.java
Przykład: int i long
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
44
class Test {
public static void main(String[] args) {
int i = 1000000;
System.out.println(i * i);
long l = i;
System.out.println(l * l);
System.out.println(20296 / (l - i));
}
}
Wynik
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
45
-727379968
1000000000000
Exception in thread "main"
java.lang.ArithmeticException: / by zero
Operatory
porównania – wynik operacji to wartość typu boolean
numeryczne – wynik jest typu int, long, float, double
warunkowy
? :
rzutowania – umożliwia konwersję typów na wskazany
typ
plus łańcuchowy
+
: jeżeli łączy dwa operandy – pierwszy
typu String i drugi typu całkowitego najpierw konwertuje
operand typu całkowitego na typ String (reprezentacja
dziesiętna) i następnie tworzy nowy element typu String,
który jest konkatenacją (sumą) tych dwóch łańcuchów.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
46
Operatory porównania
numeryczne operatory porównania:
<
<=
>
>=
Typ każdego z operandów - numeryczny
Automatyczne “binarne dopasowanie” operandów
numeryczne operatory równości:
==
!=
Typ każdego z operandów - numeryczny
Automatyczne “binarne dopasowanie” operandów
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
47
Numeryczne operatory porównania
<, <= , >, >=
Wynik porównania wartości zmiennoprzecinkowych wg IEEE 754:
Jeżeli jeden z operandów jest NaN (Not-a-Number), to wynik jest
false.
Pozostałe wartości różne od NaN są uporządkowane od
nieskończoności ujęmnej (mniejsza od minimalnej granicy) do
nieskończoności dodatniej (większa od maksymalnej granicy)
Zero dodatnie i ujemne są równe, tzn wynik -0.0<0.0 jest false, oraz
-0.0<=0.0 jest true.
Uwaga: Metody Math.min i Math.max traktują ujemne zero jako
mniejsze od zera dodatniego.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
48
Numeryczne operatory porównania c.d.
Wynik operatora
<
jest true jężeli wartość operanda lewego jest
mniejsza od wartości operanda po prawej stronie, inaczej jest false
Wynik operatora
<=
jest true jężeli wartość operanda lewego jest
mniejsza lub równa wartości operanda po prawej stronie, inaczej
jest false
Wynik operatora
>
jest true jężeli wartość operanda lewego jest
większa od wartości operanda po prawej stronie, inaczej jest false
Wynik operatora
>=
jest true jężeli wartość operanda lewego jest
większa lub równa wartości operanda po prawej stronie, inaczej
jest false
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
49
operatory porównania: przykład
Są następujące deklaracje:
int p = 9;
int q = 65;
int r = -12;
float f = 9.0F;
char c = 'A';
wszystkie poniższe testy zwracają true:
p < q
f < q
f <= c
c > r
c >= q
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
50
Numeryczne operatory równości
==, !=
Jeśli dowolny z operatorów jest NaN, wynik == jest false,
natomiast wynik != jest true.
Wynik x!=x jest true tylko jeżeli wartość x jest NaN.
(Metody Float.isNaN i Double.isNaN mogą również być
użyte do testowania czy wartośćjest NaN.)
Dodatnie zero i ujemne zero są równe. Na przykład,
-0.0==0.0 jest true
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
51
Numeryczne operatory równości c.d.
Wynik operatora
==
jest true jężeli wartość operanda lewego jest
równa wartości operanda po prawej stronie, inaczej jest false
Wynik operatora
!=
jest true jężeli wartość operanda lewego nie
jest równa wartości operanda po prawej stronie, inaczej jest false
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
52