View difference between Paste ID: bgn9Tj68 and 8xVRt9Df
SHOW: | | - or go back to the newest paste.
1
import java.util.Scanner;
2
3
// Jak nie rozumiesz któregokolwiek słowa poniżej, bardzo polecam google.
4
// Jak rozumiesz wszystko to gratulacje, 10k samochodów, szybkie pieniądze i służbowy penis są blisko.
5
6
// public - klasa jest publiczna; wszyscy mają do niej dostęp; lepsza nawet od tirówki bo płacić nie trzeba
7
// class - no zgadnij
8
// Main - nazwa klasy jest dowolna, ale zabroń mi ją nazwać Main
9
public class Main {
10
11
    // static - metoda statyczna; wywoływana na poziomie KLASY, a nie INSTANCJI tej klasy
12
    // void - metoda nie zwraca żadnej wartości
13
    // main(String) -  w tym przypadku nazwa metody (i jej parametr) ma znaczenie
14
    // String[] args - argumenty wywołania programu; tutaj nie będziemy ich używać
15
    public static void main(String[] args) {
16
17
        // System - klasa statyczna wbudowana w język java służąca do interakcji z systemem
18
        // out - statyczne pole klasy System, strumien wyjściowy na konsolę (obiekt klasy PrintStream)
19
        // print(String) - metoda klasy PrintStream; zwróć uwagę że nie jest ona statyczna
20
        System.out.print("Podaj rozmiar wektora: ");
21
22
        // Tworzymy nową zmienną typu Scanner o nazwie scanner, i przypisujemy do niej nową (new) instancje tej klasy.
23
        // System.in - obiekt klasy InputStream, wejście z konsoli. Podajemy go jako parametr konstruktora klasy Scanner
24
        Scanner scanner = new Scanner(System.in);
25
26
        // Tworzymy nową zmienną typu całkowitego o nazwie rozmiarWektora
27
        // Przypisujemy do niej wartość którą zwróci nam (return) metoda nextInt() obiektu scanner
28
        // Jeśli wszystko pójdzie zgodnie z planem, w zmiennej rozmiarWektora znajdzie się cyfra wpisana w konsolę
29
        int rozmiarWektora = scanner.nextInt();
30
31
        // Tworzymy zmienną typu int[] (tablica zmiennych całkowitych) o nazwie wektor1.
32
        // Przypisujemy do niej wartość, wywołując własną metodę napisaną poniżej.
33
        // Podajemy rozmiar wektora jako jej pierwszy parametr.
34
        // Jako drugi parametr podajemy instancję Scannera, żeby nie tworzyć nowej wewnątrz metody.
35
        int[] wektor1 = pobierzWektor(rozmiarWektora, scanner);
36
37
        // No zgadnij
38
        int[] wektor2 = pobierzWektor(rozmiarWektora, scanner);
39
40
        // Wywołujemy metodę close() obiektu scanner. Większość operacji związanych z wejściem/wyjsciem w javie
41
        // gdzieś jakieś obiekty zamyka. Po wywołaniu tej metody, ta konkretna instancja klasy Scanner nię będzie
42
        // już spełniała swojej funkcjonalności.
43
        scanner.close();
44
45
        // Tworzymy zmienną na nasz wynikowy iloczyn skalarny. Będziemy ją modyfikować wewnątrz pętli for.
46
        // Deklarujemy ją przed pętlą, tak aby była ona dostępna w każdym przebiegu pętli i po jej wykonaniu.
47
        // 0 jest domyślną wartością zmiennej typu int, ale nic nie stoi na przeszkodzie żeby dodać takie przypisanie
48
        // dla lepszej czytelności kodu.
49
        int iloczynSkalarny = 0;
50
51
        // Wyjaśnienie w metodzie pobierzWektor.
52
        // Taki sam rozmiar wektorów ułatwia nam tutaj pracę, szczególnie że iloczyn skalarny wykorzystuje wartości
53
        // z tych samych indeksów (pozycji) w obu wektorach
54
        for(int i = 0; i < rozmiarWektora; i++) {
55
56
            // Iloczyn skalarny dwóch wektorów to suma iloczynów odpowiadających składników tych wektorów
57
            // a1*b1 + a2*b2 + a3*b3 + ... + aN*bN
58
            // czyli tłumacząc z polskiego na nasze
59
            // wektor1[0]*wektor2[0] + wektor1[1]*wektor2[1] + ... + wektor1[rozmiar-1]*wektor2[rozmiar-1]
60
            // czyli tłumacząc z naszego na matematyczne
61
            // suma od i równego 0 do rozmiar-1 z wektor1[i]*wektor2[i]
62
            // czyli tłumacząc z matematycznego na komputerowe, ta własnie pętla
63
            // A += B oznacza dokładnie to samo co A = A + B
64
            iloczynSkalarny += wektor1[i] * wektor2[i];
65
        }
66
67-
        System.out.println("Iloczyn skalarny podanych wektorów to: " + iloczynSkalarny);
67+
        wypiszWynik(iloczynSkalarny);
68
    }
69
70
    // private - metodę można wywołać tylko z wewnątrz klasy (w tym przypadku Main)
71
    // static - metoda jest statyczna; robimy to by móc użyć jej bezpośredni z poziomu metody statycznej main()
72
    // int[] - wartością zwracaną przez tą metodę jest tablica wartości całkowitych o dowolnym rozmiarze
73
    // pobierzWektor - nazwa metody
74
    // int rozmiar - parametr typu całkowitego o nazwie rozmiar
75
    // Scanner scanner - parametr typu Scanner o nazwie scanner
76
    private static int[] pobierzWektor(int rozmiar, Scanner scanner) {
77
78
        // Tworzymy zmienną typu int[] (tablica zmiennych typu całkowitego) o nazwie wektor
79
        // Przypisujemy do niej nową tablicę o podanym rozmiarze
80
        int[] wektor = new int[rozmiar];
81
82
        System.out.println("Podaj wartości wektora: ");
83
84
        // for - pętla typu for; wbrew pozorom, żadne z wyrażeń w nawiasie NIE JEST obowiązkowe, po prostu rzadko kiedy
85
        //       istnieje potrzeba pozostawienia któregokolwiek z nich pustego w związku z instneniem pętli (do) while
86
        // int i = 0 - w tym miejscu zwykle deklaruje się zmienną iteracyjną czyli tak na prawde zwykłą zmienną, która
87
        //             jest widoczna tylko wewnątz pętli
88
        // i < rozmiar - to jest warunek sprawdzany po każdym przebiegu pętli; pętla wykonuje się po raz kolejny wtedy
89
        //               i tylko wtedy gdy ten warunek jest prawdziwy; jeśli zostawimy to pole puste, pętla będzie
90
        //               nieskończona (chyba że użyjemy wewnątrz niej instrukcji break lub return)
91
        // i++ - zwiększenie wartości zmiennej i o jeden; technicznie możemy tu wstawić jakąkolwiek instrukcje, i będzie
92
        //       się ona wykonywała po każdym przebiegu pętli, przed sptawdzeniem warunku kontynuacji
93
        for(int i = 0; i < rozmiar; i++) {
94
95
            // wektor[i] - i-ty element tablicy o nazwie wektor; przypisujemy mu kolejną wartość zczytaną z konsoli
96
            // ta funcja wywoła się rozmiar razy:
97
            // wektor[0] = zczytane z konsoli
98
            // wektor[1] = zczytane z konsoli
99
            // wektor[2] = zczytane z konsoli
100
            // ...
101
            // wektor[rozmiar-1] = zczytane z konsoli
102
            // rozmiar-1 ponieważ warunek i < rozmiar będzie fałszywy w przypadku gdy i == rozmiar
103
            // jest to zachowanie pożądane, poniważ tablica o wymiarze n jest indeksowana od 0 do n-1
104
            wektor[i] = scanner.nextInt();
105
        }
106
107
        return wektor;
108
    }
109
110
	private static wypiszWynik(int iloczynSkalarny) {
111
		System.out.println("Iloczyn skalarny podanych wektorów to: " + iloczynSkalarny);
112
    }
113
}