Java - Wikibooks- fragment.pdf
(
298 KB
)
Pobierz
Java
> Java
»
Spis treści
[
ukryj
]
1 Cechy Javy przemawiające za jej wyborem
2 Wady, o których warto pamiętać
3 Czego potrzebujesz, żeby zacząć
3.1 Linux
3.1.1 Debian/Ubuntu
3.1.2 Arch Linux
4 Java z punktu widzenia programisty
4.1 Środowisko uruchomieniowe i developerskie
4.2 Kod wykonywalny programu
4.3 Zwalnianie pamięci w języku Java - Garbage Collector
4.4 Notka dla programistów C++
5 Nauka programowania w języku Java
6 Komunikacja z użytkownikiem
7 Kurs podstawowy
7.1 Jak kompilować / uruchamiać programy
7.2 Struktura podstawowego programu
7.2.1 Struktura programu dla zaawansowanych
7.3 Zmienne
7.3.1 Typy zmiennych
8 Pierwszy program
8.1 Obiektowe podstawy
8.2 Przykład 1
8.3 Przykład 2
8.4 Przykład 3
8.5 Przykład 4
8.6 Przykład 5 - prosta grafika
9 Narzędzia
9.1 Edytory
9.2 IDE
9.3 Co wybrać ?
10 Bibliografia
11 Warto przeczytać
12 Linki zewnętrzne
Cechy Javy przemawiające za jej wyborem
Przenośność - możesz uruchomić program na każdym systemie i sprzęcie, na który istnieje implementacja wirtualnej maszyny Java.
Wygoda - podstawowe klasy i mechanizmy Java są zaimplementowane tak, że dostarczają programiście wygodnych w użyciu bibliotek, która w wielu przypadkach znacznie
tworzenie aplikacji.
Szybkość tworzenia aplikacji - w Java aplikacje pisze się szybciej niż w niektórych innych językach programowania. Wszystko dzięki użytecznym klasom i mądrze zaplanowanym
narzędziom oraz IDE.
Duże wsparcie ze strony twórców środowisk programowania - dzięki środowiskom IDE, takim jak NetBeans czy Eclipse, programy możesz tworzyć jeszcze szybciej i jeszcze wydaj
profesjonalnych narzędzi, które ułatwią tworzenie dużych aplikacji i panowanie nad tworzeniem oraz utrzymywaniem kodu.
Ciekawe możliwości tworzenia interfejsu użytkownika - możliwość dostępu do wygodnych w użyciu bibliotek i narzędzi pozwalających szybko i bezboleśnie stworzyć niezależny
przenośny interfejs graficzny dla aplikacji. Biblioteki graficzne udostępniają metody, które są dokładnie tym, czego potrzebujesz.
Duża ilość publikacji - w sieci jest sporo informacji na temat języka Java. Jest to ogromna zaleta szczególnie dla osób uczących się tego języka. W Internecie znaleźć
przykładowego kodu, artykułów czy tutoriali.
Garbage collection, czyli automatyczne zwalnianie nieużywanych już obszarów pamięci
Wady, o których warto pamiętać
Przeważnie programy uruchamiane pod maszyną wirtualną działają wolniej niż programy napisane w C++ (szczególnie czasochłonne jest uruchamianie aplikacji).
Użytkownik potrzebuje zainstalowanej maszyny wirtualnej javy (JVM), aby móc uruchomić nasz program.
Java ustępuje innym językom programowania (np. C++ lub Ada) w tworzeniu aplikacji czasu rzeczywistego. We Francji uchwalono prawo zabraniające używania systemów czasu r
napisanych w Javie.
Czego potrzebujesz, żeby zacząć
Java to nie tylko język programowania - to również środowisko uruchomieniowe, w którym działają programy, tak zwana Wirtualna Maszyna Java (
Java
Virtual Machine
- JVM). Java jest zaliczana do języków kompilowano-interpretowanych - aby napisane przez nas programy zadziałały, wymagany jest
kompilator, który przekształci kod źródłowy do tzw.
byte code
, czyli odpowiednika kodu maszynowego rozumianego przez JVM (w tej książce
funkcjonuje również termin
kod bajtowy
). Zarówno JVM jak i kompilator są dostarczane za darmo przez twórców Javy - firmę
Oracle
. Najlepiej
ściągnąć wszystko w jednym pakiecie, który obecnie nosi nazwę
Java SE
(Java Platform, Standard Edition). Java SE jest dostępna na wiele platform,
w tym dla systemów 32- i 64-bitowych Windows i GNU/Linux. Jest to wszystko, czego potrzebujemy do rozpoczęcia pracy.
Wikipedia
, nasz siost
zawiera artykuł na tem
Linux
Istnieje kilka implementacji Javy.
[1]
My wybierzemy otwartą implementację OpenJDK
[2]
.
Debian/Ubuntu
W konsoli wpisujemy:
$ sudo apt-get install openjdk-6-jdk openjdk-6-jre openjdk-6-doc
Arch Linux
W konsoli wpisujemy (jako root):
# pacman -S jdk7-openjdk jre7-openjdk
lub jeśli potrzebujemy wersji 6:
# pacman -S openjdk6
Następnie możemy sprawdzić działanie wpisując:
$ javac -version
Java z punktu widzenia programisty
Środowisko uruchomieniowe i developerskie
Aby dobrze programować, warto zrozumieć, jak wygląda całe podłoże mechanizmu Java. Pierwszym podstawowym elementem jest JRE (Java Runtime Environment - środowisko uru
Javy). JRE jest niezbędne do uruchamiania aplikacji Java na komputerze. A co to oznacza dla nas programistów? Oznacza nie mniej, nie więcej, a dokładnie tyle, że programy pisane
uruchamiane są nie "w komputerze", ale w pewnym środowisku działającym na komputerze. Dzięki temu jesteśmy pewni, że jeśli powstanie implementacja Wirtualnej Maszyny J
naszym przypadku) na jakąkolwiek maszynę, to będziemy mogli na tej maszynie uruchomić nasz program bez względu na to, czy będzie to: Atari ST, XBOX czy najnowsza wersja tost
Ciebie dla Domu". Dzięki temu programy pisane w Javie będą mogły być uruchamiane nawet na sprzęcie, który pojawi się za 10-20 lat, o ile będzie istniała implementacja Wirtualnej M
dla tych urządzeń.
Wykonywanie aplikacji języka Java poprzez JRE rozwijało się w następujących kierunkach:
Początkowo program mógł być interpretowany instrukcja po instrukcji (podobnie jak w językach skryptowych) jednak rozwiązanie to było bardzo niewydajne i powodowało, że progr
w języku Java działały bardzo wolno.
Aby zwiększyć wydajność programów napisanych w języku Java w nowoczesnych maszynach wirtualnych Java, zaimplementowano mechanizmy mające przyśpieszyć działani
Jednym z nich jest technika JIT (Just In Time). Technologia Just In Time kompiluje kod bezpośrednio przed jego wykonaniem. Dzięki temu kompilowane są tylko i wyłącznie funkc
których używamy w naszym programie (a nie cały program). JIT w połączeniu z optymalizacją adaptacyjną pozwala działać programom napisanych w Java niemal tak szybko j
C/C++.
Poza JRE (niezbędnym użytkownikowi) istnieje inna popularna forma dystrybucji pakietu Java. JDK (Java Development Kit), zwana również SDK (Software Development Kit). To dystr
Java dla osób tworzących kod w języku Java. Poza środowiskiem uruchomieniowym zawiera między innymi: kompilator, dokumentację/pomoc i debugger.
Kod wykonywalny programu
Po napisaniu kodu źródłowego program kompilowany jest do bytecodu. Nie jest to jeszcze kod zrozumiały dla procesora w sposób bezpośredni, który pozwalałby nam na jego uruchom
jednak kod zapisany w określonym formacie, który może zostać poprawnie zinterpretowany przez Maszynę Wirtualną Java, przetłumaczony na kod wykonywalny i uruchomiony.
Zwalnianie pamięci w języku Java - Garbage Collector
W języku Java w tle, podczas działania naszego programu, działa mechanizm zwany Garbage Collector (zbieracz śmieci). Ma on na celu zwolnienie programisty z obowiązku dbania
pamięci w programie. Stosuje on szereg algorytmów mających na celu wyłapanie niepotrzebnych obiektów i usunięcie ich. Posiada to swoje wady i zalety.
Zaletą jest to, że programista nie musi pamiętać o zniszczeniu obiektu lub zwolnieniu pamięci. Mamy wolny czas, który normalnie poświęcilibyśmy na tworzenie destruktorów i
myślenie nad tym, czy oby na pewno dobrze alokuję i zwalniam pamięć. Więcej nawet - istnieją problemy w których nie jesteśmy w stanie rozstrzygnąć, czy obiekt powinien zostać "j
czy jeszcze powinien pozostać przy życiu. GC zrzuca z nas również ten ciężar.
Wadą jest to, że działanie Garbage Collectora zajmuje czas. Nigdy nie wiadomo kiedy Garbage Collector postanowi zadziałać i wyszukać oraz zwrócić do systemu nieużywaną już p
pamięć. Przez to systemy czasu rzeczywistego pisane w Javie obwarowane są dodatkowymi restrykcjami, ponieważ działanie programu może być w każdej chwili wstrzymane na odśm
Najprostsze mechanizmy działania Garbage Collectora to usuwanie obiektów, dla których ilość referencji wynosi zero (z takiego obiektu nie skorzystamy bo nie mamy się do niego jak
nie ma sensu trzymać go w pamięci) i odnajdywanie trójkącików (referencja A wskazuje na B, B wskazuje na C ale C znowu wskazuje na A), ale istnieją również bardziej złożone.
Ciekawostki
Istnieją właściwie dwa GC. Jeden uruchamiany jest często i zwalnia zmienne które nie są już potrzebne, a które zostały utworzone "niedawno". Np. użyte zmienne lokalne po opuszc
która ich używała. Drugi jest uruchamiany rzadziej, ale czyści dokładniej całą pamięć, jednak jego działanie może powodować zatrzymanie JVM do czasu zakończenia procesu odśmie
jednak implementacje JVM które nie posiadają tej wady). Powinieneś wiedzieć, że GC w "zasadzie działa", ale dla aplikacji bardzo intensywnie używających pamięć może zdarzyć się
GC nie zdąży z odśmieceniem nim nastąpi przepełnienie pamięci - w takim przypadku zostanie zrzucony wyjątek OutOfMemoryError i aplikacja w zasadzie przestanie działać. W takic
warto używać przypisania do "null" - pomoże to GC łatwiej odnajdywać obiekty do usunięcia. Można również ręcznie zainicjować działanie GC poprzez użycie System.gc() - nie gwa
wszystkie śmieci zostaną zwolnione, ale często może pomóc. Wgłębiając się w różne aspekty pamięci używanej przez JVM odnajdziesz obszar PermGen. Obszar PermGen nie jes
(tak mówi doświadczenie) przez JVM, przechowuje się w nim między innymi informacje o klasach załadowanych przez ClassLoadera. Był taki problem z biblioteką javaassist, uż
kontener EJB3, który powodował ciągłe powiększanie obszaru zajmowanego PermGen, aż do katastrofy JVM. Do sterowania (w pewnym stopniu) GC mogą służyć parametry uruchomie
Notka dla programistów C++
W Java nie ma wielkości globalnych. Ponieważ w dobrym przybliżeniu wszystko jest klasą (dokładnie rzecz ujmując może być klasą), więc wartość globalna nie istnieje (każda
składową jakiejś klasy lub zmienną lokalną).
Wszystkie klasy są pochodnymi od jednej wspólnej klasy Object.
W Java nie ma wielokrotnego dziedziczenia. W Java występuje za to mechanizm interfejsów. Jedna klasa może implementować wiele interfejsów.
Brak preprocesora. Nie jest potrzebny ponieważ wszystkim może zająć się Wirtualna Maszyna Java.
Nie ma plików nagłówkowych. Program podzielony jest na pakiety.
Brak typedef - tworzenie alternatywnych nazw dla istniejących typów nie jest wspierane.
Brak możliwości przeciążania operatorów.
Operator zakresu :: jest zastąpiony znakiem kropki.
W języku Java nie istnieje możliwość przekazania domyślnej wartości, ani listy inicjalizującej w C++.
Java posiada wsparcie dla wielowątkowości.
Brak destruktorów i konieczności pamiętania o zwalnianiu pamięci. Działa garbage collector, który robi to za nas.
Nie ma wskaźników - wszystko przekazywane jest przez referencje.
W Javie łańcuchy znaków są obiektami klasy java.lang.String.
W Javie argumenty typów prymitywnych są przekazywane do metod przez wartość.
Nauka programowania w języku Java
Naukę programowania można podzielić na pewne etapy. Pierwszy to poznanie struktur języka takich jak: pętle, warunki, operatory, podstawowe wyrażenia i składnia. Nie da się w
uniknąć osobnego działu, jakim jest korzystanie z bibliotek dostępnych w języku. Choćby po to, by wyświetlić coś na ekranie lub pobrać wiadomość od użytkownika. Te dwa elementy p
w początkowych etapach nauki języka. Później przychodzi czas na szczegóły związane z semantyką oraz składnią kodu, niuansami, dzięki którym można tworzyć optymalny ko
sprytniej i wydajniej.
Poza nauką języka programowania trzeba poznać paradygmaty programowania jako takiego czyli przyjęte, obowiązujące lub zalecane reguły pisania programu, niezależne od tego w
programowania (wysokiego poziomu) piszemy. Jest to tak zwany dział "inżynierii oprogramowania", którym tutaj nie będziemy się zajmować.
Potraktuj naukę języka programowania jak etapy, w których jesteś wyposażany w kolejne narzędzia. Na początku Twoja wiedza jest równa niemalże zeru, później umiesz pierwszą
trzecią... jesteś wyposażany w kolejne narzędzia, poznajesz więcej mechanizmów, których możesz użyć do swojej pracy z językiem.
Komunikacja z użytkownikiem
Z racji struktury używanych dziś systemów operacyjnych istnieją dwie podstawowe warstwy komunikacji z użytkownikiem: konsola i GUI (Graphic User Interface). Pierwsza z nich
konsola, czyli literki w okienku (czy na ekranie). Komunikowanie się z użytkownikiem (wyświetlanie informacji, pobieranie danych od użytkownika) jest znacznie prostsze w trybie ko
też wszystkie początkowe składniki Javy poznamy pisząc programy działające właśnie pod konsolą. Unikniemy w ten sposób komplikowania kodu fragmentami charakterystycznym
obsługujących graficzny tryb użytkownika, który poznamy w dalszej części kursu. Pozwoli to skupić się i wyeksponować to czego uczymy nie zaciemniając kodu niepotrzebnymi
niezwiązanymi z tematem. Kiedy już oswoisz się z Javą jako taką - nic nie stoi na przeszkodzie abyś zaczął tworzyć aplikacje posiadające graficzny interfejs - jednak naukę najlepiej
prostych aplikacji pisanych pod konsolą.
Kurs podstawowy
W tej części postaram się zapoznać Cię z podstawowymi elementami języka takimi jak: pętle, warunki, zmienne itp. Na początku każdego zagadnienia będzie kilka słów teorii, później
zobrazować go w postaci kodu programu. Do niektórych działów będę dodawał dodatkowe paragrafy uściślające pewne kwestie, ważne dla osób już znających się na programowaniu.
zaczynasz swoją przygodę z pisaniem programów, nie musisz ich czytać, są one tam raczej dla zaawansowanych programistów potrafiących już posługiwać się językiem programo
zwrócenia uwagi na pewne kwestie mogące odgrywać rolę w ich programach - osobie dopiero uczącej się mogłyby tylko zaciemnić obraz całości i stać się niepotrzebną na początku kom
Ponieważ aby coś wyświetlić lub pobrać jakieś dane od użytkownika trzeba użyć bibliotek oraz w trakcie programowania używać pewnych konwencji - niektóre fragmenty mogą wydać
na samym początku niezrozumiałe - a do ich objaśnienia dojdziemy później. Postaraj się nie zwracać na nie uwagi w początkowej fazie nauki, przyjąć, że "tak się robi" i poczeka
czasem wszystko się wyjaśni. Zaczynamy!
Jak kompilować / uruchamiać programy
Jeżeli używasz konsoli najpierw musisz skompilować kod (przetłumaczyć na język zrozumiały dla Wirtualnej Maszyny Java). Robisz to poleceniem:
javac NazwaPliku.java
Powstanie wtedy plik
NazwaPliku.class
, który będzie już programem w języku Java. Aby go uruchomić wykonaj:
java NazwaPliku
i po problemie.
Jeżeli używać środowiska IDE nie będziesz musiał wpisywać żadnych komend. W Eclipse wystarczy, że wybierzesz:
Run \ Run As \ Java Application
. W NetBeans zaś wybierz
Ru
Project
(musisz tylko zwrócić uwagę który projekt jest wyróżniony po lewej stronie na liście
projects
). Jeżeli chcesz uruchomić inny projekt, kliknij na jego nazwę prawym przycis
wybierz
Set As Main Project
.
Struktura podstawowego programu
W Javie każdy program posiada pewną sztywną strukturę. Nie proszę, abyś ją zrozumiał (jeszcze nie teraz), ale żebyś po prostu zapamiętał ją i przyjął, że taka jest (z czasem wszys
dla Ciebie jasne).
public
class
NazwaPliku
{
public
static
void
main
(
String
[]
args
)
{
}
}
Jeżeli chciałbyś uruchomić ten program, musiałbyś go zapisać w pliku
NazwaPliku.java
. Po prostu w miejscu gdzie widnieje
NazwaPliku
musisz wpisać nazwę pliku, w którym za
program. Jeżeli plik będzie nazywał się
Pusty.java
to powyższy kod będzie wyglądał tak:
public
class
Pusty
{
public
static
void
main
(
String
[]
args
)
{
}
}
Dobrym nawykiem jest pisanie nazwy klasy wielką literą. Nazwa pliku z kodem musi być taka sama jak nazwa klasy. W tym przypadku to "Pusty", a plik, w jakim zapiszemy kod, to
Pu
Powyższy program nic nie robi - jest jak łupinka orzecha pustego w środku. Jeżeli Twój edytor wspiera tworzenie szablonów nowych dokumentów, to dobrym pomysłem może okazać s
właśnie takie szablonu w edytorze - przynajmniej na początek. Zwolni Cię to z obowiązku przepisywania tej struktury za każdym razem.
Struktura programu dla zaawansowanych
Ponieważ w języku Java wszystko jest obiektem, również program musi być reprezentowany jako klasa. JRE proszone o uruchomienie pliku, wywołuje domyślnie metodę
main
kla
identycznej z nazwą pliku. Jeżeli w pliku nie znajduje się klasa o tej samej nazwie zostanie zwrócony błąd. Wszystko, co znajduje się w metodzie
main
, to właśnie nasz program. Pon
nie jest tworzony obiekt naszej klasy, metoda
main
musi być statyczna, aby można było ją wywołać bez tworzenia instancji klasy (czyli bez tworzenia obiektu). Nakłada to n
ograniczenia - na przykład nie możemy korzystać z
this
(nie ma ono żadnego sensu w metodzie statycznej). Metodą pozwalającą ominąć ten problem jest stworzenie obiektu w me
przeniesienie kodu do konstruktora:
public
class
Pusty
{
public
Pusty
()
{
// Tutaj kod programu
}
public
static
void
main
(
String
[]
args
)
{
new
Pusty
()
;
}
}
Powyższy kod tworzy obiekt klasy, którą projektujemy - dzięki temu ograniczenia związane z pisaniem kodu w metodzie statycznej znikają. Zastanawiać może jeszcze fragment kodu
args
- jest to nic innego jak przekazanie do programu listy (tutaj tablicy) stringów (łańcuchów znaków czy jak wolisz napisów), będących parametrami wywołania Twojego program
poprzez zmienną
args
(arguments) otrzymujesz dostęp do wszystkich parametrów z jakimi została uruchomiona twoja aplikacja. Przekazanie parametrów od wersji
Java SE5
m
również tak:
public
static
void
main
(
String
...
args
)
{
Zmienne
Zmienne możesz sobie wyobrazić jak pudełka, które najpierw opisujesz jakąś etykietką (nazwą), potem coś do takiego pudełka wkładasz i to tam trzymasz. Jest tylko jeden war
wcześniej powiedzieć, co będziesz w tym pudełku trzymał. W analogii do zwierząt: inne pudełko weźmiesz dla psa (budę), inne dla rybki (akwarium). Dlatego musisz wziąć odpowied
zależności od tego, co chcesz trzymać. Potem możesz nazwać to pudełko. Znowu analogicznie możesz nakleić nalepkę z napisem "Nemo" na akwarium - informującą o tym, że rybk
nazywa się Nemo. Może być wiele rybek, ale twoją odróżnia od innych to, że nazywa się Nemo.
Jeżeli nie zrozumiałeś analogii ze zwierzątkami, to może porównanie matematyczne da Ci do myślenia. Kiedy rozwiązujesz jakieś zagadnienie matematyczne, gdzieś na końcu pojaw
stylu:
x = 2
Cały czas posługiwałeś się symbolem
x
no i nagle okazuje się, że jest równy 2 ... jeżeli
x = 2
to
x + x + x = 6
zgadza się ? Czyli posługujesz się x-em jak dwójką i za każdym razem gdy piszesz x myślisz 2. Identycznie sprawa ma się ze zmiennymi.
Wróćmy do zmiennych jako takich. Zmienne to nic innego, jak nazywanie w programie napisów i liczb. Możesz liczbie 2 przypisać dowolną nazwę. Używane nazwy mogą być niem
długie (nie ważne czy zmienna będzie nazywała się
x
czy
niewiadoma_rownania_x
). W nazwach najlepiej ograniczać się do stosowania małych i wielkich liter, cyfr i znaku podkreśle
Typy zmiennych
Podstawowe informacje, jakie możemy chcieć przetrzymać w komputerze, to: wartość logiczna, liczba, napis lub pojedynczy znak. Mamy więc różne
typy
zmiennych. Podstawową wa
możesz chcieć przechować sobie gdzieś (zanotować na tak długo jak Ci jest potrzebna - a tak działają zmienne), jest liczba. Komputer rozróżnia liczby całkowite (2; -15; 123) i zmienn
(2,14; 3,14; -1,5). Do trzymania liczby
całkowitej
używać będziemy typu
int
. Tak więc napisanie:
int liczba;
stworzy zmienną o nazwie liczba. Teraz powrót do analogii pudełek. Stworzyłeś pudełko, które umie trzymać liczby całkowite i nazwałeś je
liczba
. Masz więc pudełko
liczba
. Ale co w
wiadomo - i naprawdę to jest poprawna odpowiedź. Musisz pamiętać! Jak tworzysz pudełko to ono w ogólności na starcie nie jest puste (tylko w pewnych szczególnych przypadkach).
przykład włożyć do tego pudełka liczbę 2 piszesz:
liczba = 2;
no i w pudełku znalazła się liczba 2, a to co było w środku, zostało automatycznie wyrzucone. Można w jednej linijce stworzyć pudełko i włożyć do niego coś pisząc:
int liczba = 2;
Teraz wartości zmiennoprzecinkowe. Typ zmiennej nazywa się
float
:
float liczba_zmiennoprzecinkowa = 3.14;
stworzy pudełko do trzymania liczb zmiennoprzecinkowych (
float
) o nazwie
liczba_zmiennoprzecinkowa
i włoży do tego pudełka wartość
3,14
. Teraz przechodzimy z terminologii p
terminologii zmiennych - najwyższy czas! Więc teraz uważaj. Do zapisania pojedynczego znaku użyjesz
typu
char
.
char znak = 'a';
Powyższa linijka
utworzy
zmienną
typu
char
o
nazwie
znak
i
wartości
a
(zawartość pudełka będziemy nazywać wartością zmiennej). Zapewne trapi Cię cały czas pytanie: "skąd
średnik na końcu". Otóż programowanie polega na wydawaniu komputerowi poleceń. Tak jak to powyższe "Utwórz zmienną typu znakowego o wartości
a
". Każde takie polecenie w języ
kończyć się średnikiem. Programując przyjmuje się, że zapisujemy jedno polecenie w jednej linijce (choć można w jednej linijce zapisać więcej poleceń - są wtedy po prostu oddzielone
Dzięki temu program wygląda tak, że
każda linijka kończy się średnikiem
- choć tak naprawdę
każde polecenie (instrukcja) kończy się średnikiem
. Ot cała filozofia średników. Z
uwagę, na to, że pojedyncze znaki zapisujemy w apostrofach. Użycie cudzysłowu byłoby błędem. Powyższą wiedzę przed
stawię w tabelce:
Typ zmiennej
Przeznaczenie
Przykład
Uwagi
int
liczby całkowite
int liczba = -777;
brak
float
liczby zmiennoprzecinkowe
float pi = 3.14;
brak
char
pojedynczy znak
char znak = 'A';
zawsze zapisuje się
pomiędzy apostrofami
Każdą
instrukcję kończ znakiem średnika
;
Plik z chomika:
bpit2
Inne pliki z tego folderu:
ascii.gif
(112 KB)
Funkcje C++.pdf
(235 KB)
Java - Typy danych Wykład.pdf
(84 KB)
Java - Wikibooks- fragment.pdf
(298 KB)
Printf i wyświetlanie danych.pdf
(146 KB)
Inne foldery tego chomika:
Klasy Java
Książki Java
Wykłady Java Swing
Zgłoś jeśli
naruszono regulamin