Jump to content

[Poradnik] Jak zacząć programować w Javie?


Romek1337

Recommended Posts

Witam, ogólnie na wstępie chciałem zaznaczyć, że jak każdy programista w tym ja sam się uczę programować, więc zachowajcie dystans i jeśli zauważycie błąd śmiało poprawcie mnie w komentarzach! Chciałem również podkreślić, że inspirowałem się poradnikiem Forestera, który też napisał dobry poradnik, tylko tym razem do języka C++, który tak samo jest bardzo fajnym na start językiem, więc zapraszam też do przeczytania jego poradnika o C++ (https://crafted.pl/topic/14015-poradnik-jak-programować-w-c/). Zapraszam i życzę miłego czytania.

 

 

Java, pewnie nie raz słyszeliście to słowo. Czy to w Minecraft Java Edition, czy że musicie pobrać Javę do np. grania w Minecrafta.

W tym poradniku nauczycie się korzystać z Javy w sposób taki, że będziecie w niej programować.

 

Na początek proste pytania dla zielonych w programowaniu oraz tych którzy coś tam wiedzą:

Czy jak mam np. 9 lat to mogę już zacząć programować? Oczywiście! Sam zaczynałem mając 10. Wstawiłem to pytanie na samą górę, bo jest jednym z najpopularniejszych.

Czego potrzebuje do programowania w Javie? Dobrze by było mieć dobre logiczne myślenie i podstawową matematykę, lecz oczywiście wszystkiego można się nauczyć.

Czego się nauczę w tym poradniku? Nauczysz się podstawowych umiejętności programowania w Javie, niestety nie przejdziemy do OOP (Object-Oriented Programming), lecz nauczymy się podstaw potrzebnych do uczenia się innych języków oraz także podstaw do uczenia się dalszej Javy.

Zaznaczę, że kopiowanie/przepisywanie kodu bez poznania teorii nie jest fajne i to nie w stylu, że ktoś się tak napracował itd., wpłynie to po prostu bardzo źle na waszą naukę Javy.

Okej. Przejdźmy do rzeczy. Wejdźmy w nasz kompilator (Narzędzie, które tłumaczy nasz kod do komputera, a ten go wykonuje) online (https://www.programiz.com/java-programming/online-compiler/). Po uruchomieniu tej strony powinniśmy mieć po lewej nasz kod, po prawej pustą na ten moment konsolę.

Zacznijmy od napisania naszego pierwszego kodu, który co się śmiesznie składa, jest już napisany.

// Online Java Compiler
// Use this editor to write, compile and run your Java code online

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}
W pierwszych dwóch linijkach mamy komentarze. Komentarze nie będą się wliczać w kod i dodanie ich do kodu nic w nim nie zmieni.
Dalej mamy klasę HelloWorld, klas nie będę teraz omawiać, bo to jest dość skomplikowany temat na początek, tak samo jak:
public static void main(String args[])

Dopiero naszą przygodę zaczynamy na System.out.println("Hello, World!");

Teraz takie pytanie, co to w ogóle oznacza?! Nasz System.out.println(); to jest funkcja która wyświetla tekst do naszej konsoli, a więc w środku w tych cudzysłowach jest nasz tekst. Od razu muszę wytłumaczyć czemu on jest w cudzysłowach, bo to dosyć ważne! Jest on w cudzysłowach po to, żeby odróżnić zmienne (takie pojemniki na dane, później do tego przejdziemy) i funkcje które zwracają wartość. Czyli teraz, mogę ten tekst zmienić? Otóż, nie. Oczywiście żart. Tak, jak najbardziej możesz zmienić na np. 

System.out.println("Witaj swiecie!");
// Pamiętajcie żeby w tekscie nie dawać polskich znaków, tak samo w komentarzach. (Tylko w kompilatorach online). Ten i inne kody które pisze w ramce, pisze na stronie forum, więc nie kopiujcie ich, bo będą wyskakiwać błędy.

Teraz ważna sprawa: Zawsze polecenia kończ średnikiem. (Są oczywiście wyjątki, lecz o nich później). Lecz coś tu nie gra, zmieniłem na swój tekst, a w konsoli dalej nic. Dlaczego? Ponieważ musimy nasz kod skompilować, klikając guzik Run. image.png.8428f216d635fc17fb414cbc150c44ab.png

Sukces! Mamy to! W konsoli wyświetliło nam "Witaj swiecie" (Oczywiście w zależności od ustawionego tekstu).

Skoro mamy już nasz program gotowy, to może zacznijmy robić zmienne, o których już wcześniej wspominałem. Zmienne to są pojemniki przechowujące różne typy danych od tych liczbowych, przez tekstowe do logicznych. Zacznijmy pierwsze od podstaw tych 3 typów, a jeszcze wcześniej je omówmy.

 

Zmienna liczbowa - zmienna przechowująca różne typy liczb, np. liczby całkowite lub daty.

Zmienna tekstowa - zmienna z która zapoznajemy się na początku naszej przygody, wartość tej zmiennej zwykle zapisuje się w apostrofach lub nawiasach.

Zmienna logiczna - tak właściwie ma swój tylko jeden odpowiednik - zmienną boolean, która przechowuje wartości true/false, które doskonale znacie z komendy np. /gamerule keepInventory true/false.

 

Okej, zapoznaliśmy się z typami tych zmiennych. Teraz czas na jej podstawowe odpowiedniki (oprócz boolean, który już znamy).

 

int - Podstawowa zmienna, reprezentująca wszystkie. Jest to zmienna przechowująca liczby całkowite.

String - Podstawowa zmienna, ale nie wszystkich. Tym razem jest to podstawowa zmienna tekstowa, która jak się można domyślić, przechowuje tekst w cudzysłowach lub apostrofach

 

To co? Trzeba to przetestować! :D Zróbmy taki kalkulator dla początkujących, ale nie będę pisać od razu kodu. Pokaże wam tylko jak zrobić zmienne, więc zacznijmy je robić!

 

Aby stworzyć jedną lub więcej z tych trzech typów zmienną musimy napisać taki kod (Wyjaśnienie pisanego kodu w komentarzach w komentarzach):

 

int x = 5; // Tworzymy zmienną int o nazwie "x", potem znakiem równa się przypisujemy do niej wartość 5.

String thisIsOnlyText = "Tak, to jest tylko tekst"; // Tworzymy zmienną String o nazwie "thisIsOnlyText", a później dajemy jej wartość "Tak, to jest tylko tekst".

boolean isProgrammingBoring = false; // Tym razem tworzymy zmienną boolean o nazwie "isProgrammingBoring", a nastęnie przypisujemy wartość false.

/* Do wartości zmiennej int możemy przypisać równanie, oto nasze operatory, którymi możemy się posługiwać:

+ | Dodawanie
- | Odejmowanie
* | Mnożenie
/ | Dzielenie
% | Dzielenie z resztą (Zwraca tylko resztę, bez wyniku dzielenia!)

*/

int a = 5 * 3;

 

Teraz spróbujcie sami! Napiszcie kod który doda 2 + 2 (równanie zapiszcie w zmiennej int), a później wyświetlcie ten wynik w konsoli.

PAMIĘTAJCIE, ŻE W NAZWACH ZMIENNYCH NA POCZĄTKU NIE POWINNA BYĆ CYFRA, ANI NAZWA NIE POWINNA ZAWIERAĆ POLSKICH ZNAKÓW. Również należy pamiętać, że aby wyświetlić zmienną, nie wstawiamy jej nazwy w cudzysłowia.

Odpowiedź znajdziecie na pastebinie: https://pastebin.com/s2Y0fLt3

 

Okej, mamy to. Umiemy już zmienne i wyświetlanie w konsoli, ale co jeśli chciałbym zrobić takie przeciwieństwo wyświetlanie, czyli Inputy. Tylko, pewnie się zapytasz co to są Inputy? Otóż pierwsze musimy wiedzieć, że wyświetlanie czegoś w konsoli to Outputy, czyli Inputy pobierają wartości, a nie ich wyświetlają.

Mówiąc prościej, Input to takie coś, że możesz wpisać coś do konsoli, a ona to zapamięta. To taka nasza mini-pamięć. Tylko czemu ona to zapamięta? Oczywiście nie musi, ale jak ją się robi to zwykle przypisujemy ją do zmiennej, a zmienna to jest właśnie pamięć naszego programu. Oczywiście możemy też coś wpisać do pliku, a później go odczytać, albo tak samo tylko, że do bazy danych, ale tego nie będziemy robić. Okej, przejdźmy do rzeczy. Aby zaimportować naszego scannera (Ponieważ to on nam umożliwi Inputy), musimy napisać kawałek kodu, tak właściwie to 2 linijki. Dobra, pierwsze musimy zaimportować bibliotekę Scanner, żeby w ogóle móc z niego korzystać.

Teraz nad naszą klasą (Czyli "class HelloWorld {") musimy napisać taki kod: 

 

import java.util.Scanner;

 

Brawo! Zaimportowaliśmy nasz scanner! Teraz zróbmy obiekt tego scannera pod "public static void main(String args[]) {" pisząc taki kod:

 

Scanner nazwa = new Scanner(System.in); - Oczywiście można zastąpić fragment kodu "nazwa" własną nazwą.

 

Dla potwierdzenia nasz kod powinien wyglądać w taki sposób:

// Online Java Compiler
// Use this editor to write, compile and run your Java code online
import java.util.Scanner;

class HelloWorld {
    public static void main(String[] args) {
        
        Scanner nazwa = new Scanner(System.in);
        
    }
}

 

Super, lecz nic nam to nie da poza zaimportowanym scannerem. Więc zróbmy tak, że pokaże nam tekst "Jakie jest twoje miasto: ", a potem wyświetli nam nazwę naszego miasta, którego podaliśmy do konsoli. Dlatego przygotuję wam teraz kod, który będzie za to odpowiadał z komentarzami dla wyjaśnienia danego fragmentu kodu.

Oto ten kod:

 

// Online Java Compiler
// Use this editor to write, compile and run your Java code online
import java.util.Scanner; // Nasza wczesniej zaimportowana biblioteka Scanner

class HelloWorld {
    public static void main(String[] args) {
        
        Scanner naszScanner = new Scanner(System.in); // Obiekt scannera
        
        System.out.print("W jakim miescie mieszkasz: "); // Wyswietlamy pytanie
        // UWAGA! Dajemy print, zamiast println, dlatego, ze println od razu robi nam nowa linijke, a funkcja print nie robi nam nowej linijki, a to wychodzi i na to ze po prostu bedzie ladniej wygladalo.
        
        String naszeMiasto = naszScanner.nextLine(); // Tworzymy zmienna string o nazwie naszeMiasto, ktore jest przypisane do wartosci naszego scannera, ktory pobiera dane. UWAGA! Dla zmiennej int bedzie zamiast nextLine, nextInt.
        
        System.out.println("Twoje miasto to: " + naszeMiasto); //Wyswietlamy tekst "Twoje miasto to: ", a potem laczymy ten tekst z kolejnym tekstem w zmiennej naszeMiasto. Pamietajcie ze operatorem laczacym tekst jest "+"
        
        
    }
}

 

Bardzo proszę o przeczytanie całych komentarzy bo to jest dosyć ważne. Oto wyniki naszego kodu: image.png.c9f6ff5eacbc22bbbccf02e2005a1ec8.png.

 

Niestety, muszę was zmartwić. Nasz poradnik powoli dobiega końca, lecz została nam jeszcze najdłuższa do tej pory instrukcja, czyli instrukcja if().

Instrukcja if() sprawdza czy argument w nawiasach jest prawdą, jeśli tak, wykonuje się kod w klamrach, jeśli nie, ten kod jest omijany. Trzeba pamiętać, że if jest tym wyjątkiem który nie potrzebuje średnika, a tak właściwie od razu pod kreśle: Wszystkie instrukcje które posiadają klamry (Oprócz do... while'a), nie mogą mieć średnika na koniec.

Zobaczmy jak to działa na naszym scannerze. Zapytamy się użytkownika, czy lubi oranżadę, jeśli napisze tak, napiszemy mu tekst "To fajnie, są dobre".

Nasz kod (który umieścimy oczywiście między klamrami funkcji main()) będzie wyglądał tak:

 

//Pamiętajcie, by wcześniej zaimportować bibliotekę scanner.

Scanner scanner = new Scanner(System.in); // Obiekt scannera

System.out.print("Lubisz oranżadę: "); // Pytanie
String odpowiedz = scanner.nextLine(); // Odpowiedź

if(odpowiedz.equals("Tak")) { //Sprawdzamy czy odpowiedź jest równa tekstowi "Tak", czyli piszemy kod: odpowiedz(nasza zmienna).equals(jest równe)("Tak") (I nasza funkcja equals sprawdza czy wartość tekstowa zmiennej odpowiedz jest równa "Tak)
  System.out.println("To fajnie, są dobre"); // Wyświetlamy tekst
} // Zakańczamy naszego if'a
  

 

Zanim przejdziemy do dalszej części to chcę powiedzieć, że w przypadku zmiennej int, nie użyjemy equals, tylko == (nie, to nie literówka). Okej, a co jeśli napisze nie? Mam napisać kolejny if(odpowiedz.equals("Ni..? Oczywiście, że nie! Znaczy tak, ale napiszemy to w inny sposób, bo problem jest taki (tu chodzi o wasze przyszłe programy), że jak kiedyś będziecie pisać to jak napiszecie kilka if'ów to jeden nie przerwie drugiego, a jak użycie "else if() { }" to po okazaniu się, że jeden if jest prawdą, zakańczają się wszystkie połączone z nim. Tylko, że które to są te połączone? To jeden if, który pod sobą ma kolejne else if'y oraz else'a do którego przejdziemy później. Więc czas na praktykę! Dopiszmy naszego else if'a

 

//Pamiętajcie, by wcześniej zaimportować bibliotekę scanner.

Scanner scanner = new Scanner(System.in); // Obiekt scannera

System.out.print("Lubisz oranżadę: "); // Pytanie
String odpowiedz = scanner.nextLine(); // Odpowiedź

if(odpowiedz.equals("Tak")) { //Sprawdzamy czy odpowiedź jest równa tekstowi "Tak", czyli piszemy kod: odpowiedz(nasza zmienna).equals(jest równe)("Tak") (I nasza funkcja equals sprawdza czy wartość tekstowa zmiennej odpowiedz jest równa "Tak)
  System.out.println("To fajnie, są dobre"); // Wyświetlamy tekst
} // Zakańczamy naszego if'a
else if(odpowiedz.equals("Nie")) { // Nasz else if
  System.out.println("Szkoda"); // Wyświetlamy tekst
}

 

Oczywiście ważna jest też na przyszłość, kolejność if'ów. Ponieważ każdy if wykonuje się jeden po drugim.

Kolejne pytanie, a co jak napisze cokolwiek innego? Tu właśnie przychodzi z pomocą else, bo jeśli żaden z powyższych if'ów nie będzie prawdą wykonuje się else. Ogólnie chciałem też zaznaczyć, że else'a i else if'a używajcie tylko wtedy gdy wam będzie potrzebny, a to znaczy, że else'y i else if'y są opcjonalne.

 

Tym razem else nie potrzebuje żadnych argumentów, wystarczy, żeby dodać między klamry kod, który u nas będzie wyświetlał tekst "Nie rozumiem. Mógłbyś jaśniej?"

Tak będzie teraz wyglądał nasz kod:

 

//Pamiętajcie, by wcześniej zaimportować bibliotekę scanner.

Scanner scanner = new Scanner(System.in); // Obiekt scannera

System.out.print("Lubisz oranzade: "); // Pytanie
String odpowiedz = scanner.nextLine(); // Odpowiedź

if(odpowiedz.equals("Tak")) { //Sprawdzamy czy odpowiedź jest równa tekstowi "Tak", czyli piszemy kod: odpowiedz(nasza zmienna).equals(jest równe)("Tak") (I nasza funkcja equals sprawdza czy wartość tekstowa zmiennej odpowiedz jest równa "Tak)
  System.out.println("To fajnie, sa dobre"); // Wyświetlamy tekst
} // Zakańczamy naszego if'a
else if(odpowiedz.equals("Nie")) { // Nasz else if
  System.out.println("Szkoda"); // Wyświetlamy tekst
}
else {
 
  System.out.println("Nie rozumiem. Moglbys jasniej?");
  
}

 

Eee... A co jeśli napiszę np. "nie", przecież wtedy będzie wyświetlany tekst z else'a. Otóż przychodzą nam tutaj operatory logiczne (Przedstawię też operatory porównania.), oto ich lista:

 

Operatory arytmetyczne:

x==y - x jest równe y.

x!=y - x jest różne od y.

x>=y - x jest większe lub równe od y.

x<=y - x jest mniejsze lub równe od y.

x>y - x jest większe od y.

x<y - x jest mniejsze od y.

Operatory logiczne:

|| - Operator OR (lub)

&& - Operator AND (i)

oraz

! - Negacja, która jest stosowana tylko do zmiennych logicznych, oraz do funkcji equals().

Chciałem też dodać, że tak właściwie equals() to funkcja zwracająca warunek logiczny, więc to jest tak jakbyśmy dali tam zmienną boolean oraz to, że zmienna boolean nie musi wyglądać w if'ie tak:

if(zmienna==true)

tylko, może wyglądać tak:

if(zmienna)

ponieważ i tak ta zmienna zwraca wartość logiczną.

 

Przykłady takiego if'a z operatorami logicznymi i porównania:

 

//Operatory porównania

if(1==1) //Sprawdza czy 1 jest równe 1

if(2!=3) //Sprawdza czy 2 jest różne od 3

if(5>=2) //Sprawdza czy 5 jest większe lub równe od 2

if(2<=5) //Sprawdza czy 2 jest mniejsze lub równe od 5
  
if(5>2) //Sprawdza czy 5 jest większe od 2
  
if(2<5) //Sprawdza czy 2 jest mniejsze od 5
  
//Operatory logiczne
  
if(naszString.equals("String") || naszString.equals("string")) //Sprawdza czy zmienna naszString jest równa "String" LUB "string"
  
if(naszString.equals("Example") && 5==25/5) //Tak, też można tak wykorzystać równania. Sprawdza czy zmienna naszString jest równa "Example" i czy 5 jest równe 25/5.
  
if(!naszString.equals("Example2")) //Sprawdza czy zmienna naszString jest różna od "Example2"

 

Rozumiem! Wszystko jasne! Mam nadzieje, że tak jest po twojej stronie. To logiczne, że wystarczy dodać do naszych if'ów operator OR.

Tak będzie wyglądał nasz kod teraz:

//Pamiętajcie, by wcześniej zaimportować bibliotekę scanner.

Scanner scanner = new Scanner(System.in); // Obiekt scannera

System.out.print("Lubisz oranzade: "); // Pytanie
String odpowiedz = scanner.nextLine(); // Odpowiedź

if(odpowiedz.equals("Tak") || odpowiedz.equals("tak")) { //Sprawdzamy czy odpowiedź jest równa tekstowi "Tak", czyli piszemy kod: odpowiedz(nasza zmienna).equals(jest równe)("Tak") (I nasza funkcja equals sprawdza czy wartość tekstowa zmiennej odpowiedz jest równa "Tak)
  System.out.println("To fajnie, sa dobre"); // Wyświetlamy tekst
} // Zakańczamy naszego if'a
else if(odpowiedz.equals("Nie") || odpowiedz.equals("nie")) { // Nasz else if
  System.out.println("Szkoda"); // Wyświetlamy tekst
}
else {
 
  System.out.println("Nie rozumiem. Moglbys jasniej?");
  
}

Mamy to! To działa! Skończyliśmy nasz program, a tym samym wszystkie praktyki w tym poradniku. Praktyki? To nie jest koniec? Tak właściwie to jest, lecz po prostu trzeba to jakoś skończyć.

 

Co dalej? Robić projekty? To koniec całej nauki? Ta jedna odpowiedź jest odpowiedzią na te wszystkie 3 pytania. Dalej spróbuj umacniać swoją wiedzę nowymi ćwiczeniami np. Projekty oraz różnymi poradnikami.

Okej. To jakie to będą poradniki? Nic trudnego! Wystarczy wpisać w YouTubie Poradniki Javy i znaleźć dobry, interesujący was poradnik. Jest ich bardzo dużo i nauczycie się wiecej rzeczy.

No dobra, a co jeśli mi się nie spodobało. No cóż, spróbuj kiedy indziej jak się nudzisz. Na prawdę! Programowanie jest dobrym sposobem na nudę.

Spróbuje. Co jeśli większość rzeczy nie rozumiem? Spokojnie, to tak jak ja! Mocno umocniłem swoją naukę o programowaniu dopiero w połowie 2021.

 

To chyba tyle z pytań.

Dzięki Forester (mimo, że napisał ten poradnik w 2018) za inspirację. Mam nadzieję, że poradnik i programowanie wam się spodobało. Piszcie inne języki o których mógłbym napisać oraz moje błędy, bo to nie było dosyć łatwe, więc może być ich bardzo dużo. Postaram się w najbliższych dniach napisać poradnik o pisaniu pluginów do Minecrafta, bo to również jest super! Na koniec też chciałbym powiedzieć, że musicie zainstalować IDE, by pisać lepsze projekty. Ponieważ to one umożliwią wam pisanie np. klas. Na start dałbym wam IDE o nazwie IntelliJ IDEA. Poza tym zajeło mi to ponad 2 godziny, więc proszę doceńcie to.

Dzięki za przeczytanie!

 

  • Lubię to! 6
  • Wow 1
  • Zły 1
Link to comment
Share on other sites

2 minuty temu, KrulTrenbolon napisał:

Czy taki fajny jezyk na start to bym sie nie do konca zgodzil, ale fajno ze takie poradniczki nawet na forum majkraftowym wlatują, może ktoś podłapie temat i mu sie spodoba ;]

 

Co fakt to fakt, dla totalnie zielonych to nie jest najlepszy, lecz i tak uważam, że wszystkie są dobre na start.

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Nie nazwałbym tego poradnikiem na początek przygody w tym "świecie", jednak sporo można się dowiedzieć.

Poradnik jest nie do końca jasny i przejrzysty. 

Opisy niektórych sytuacji nie są najlepsze i można by część rzeczy inaczej ująć, jednak jest ok.

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...
  • 4 months later...
  • 1 month later...
W dniu 11.09.2022 o 12:59, dudekm napisał:

Dobra robota! Krótko lecz treściwie. Może teraz część druga, np. "Jak napisać plugin/rozszerzenie do Minecrafta"? :)

Nie najgorszy pomysł, podstawy języka to podstawy, ale przyda się jakieś zastosowanie może wkrótce napiszę do tego poradnik. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. By using this site, you agree to our Terms of Use along with Guidelines and Privacy Policy