From 7cd7df6c26fd6a64a1d750fcec2be7cc1456c1a2 Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:37:20 +0200 Subject: [PATCH 1/8] Nauka wypisywania na ekran i tworzenia komentarzy --- main.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 main.js diff --git a/main.js b/main.js new file mode 100644 index 0000000..b785153 --- /dev/null +++ b/main.js @@ -0,0 +1,12 @@ +// jak wypisać wiadomość do konsoli +// zwróć uwagę na średnik na końcu instrukcji +console.log('Hello world!'); + +// jak napisać komentarz +// to jest komentarz jednolinijkowy + +/* +to jest komentarz wielolinijkowy +to jest komentarz wielolinijkowy +to jest komentarz wielolinijkowy +*/ From 3e0432a5f036b825249a5f6c56ec2a39aeb8455d Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:37:33 +0200 Subject: [PATCH 2/8] =?UTF-8?q?Nauka=20u=C5=BCywania=20zmiennych=20i=20ope?= =?UTF-8?q?rator=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/main.js b/main.js index b785153..6afc4a5 100644 --- a/main.js +++ b/main.js @@ -10,3 +10,77 @@ to jest komentarz wielolinijkowy to jest komentarz wielolinijkowy to jest komentarz wielolinijkowy */ + +// utwórz zmienną +let x = 5; +let y = 10; +let z = x + y; +z // to wypisze liczbę 15 do konsoli + +// operatory matematyczne +x + y; +x - y; +x * y; +x / y; +x % y; +x ** y; +x++; // to jest równoważne z x = x + 1 +x--; // to jest równoważne z x = x - 1 + +// operatory porównania +x == y; +x != y; +x > y; +x >= y; + +// podwójny znak równości vs potrójny znak równości (ścisła równość) +// należy być ostrożnym przy porównywaniu wartości różnych typów! +1 == '1'; // to wypisze true +1 === '1'; // to wypisze false + +// operatory logiczne (inaczej niż w języku Python!) +true && false; +true || false; +!true; + +// pytanie: jaki jest wynik następujących wyrażeń? +0 == false; +0 === false; + +// JS jest dynamicznie typowany - typ zmiennej jest określany w trakcie działania programu +let changeVar = 5; // zwróć uwagę na konwencję nazewnictwa camelCase +changeVar = 'Hello'; // to jest dozwolone w JS + +// jak utworzyć wielolinijkowy łańcuch znaków +// zwróć uwagę na użycie backticków +let message = `Hello, +world!`; + +// jak łączyć łańcuchy znaków (concatenation) +console.log('Hello' + ' ' + 'world!'); + +// jak uzyskać długość łańcucha znaków +let str = 'Hello world!'; +str.length; + +// jak utworzyć sformatowany łańcuch znaków +// zwróć uwagę na użycie backticków +console.log(`The length of the string is ${str.length}`); + +// można zadeklarować zmienną bez przypisywania wartości +let emptyVar; + +// null vs undefined +let nullVar = null; // oznacza brak wartości +let undefinedVar; // oznacza zmienną, która nie została zainicjalizowana + +// zmienną można zdefiniować za pomocą starego słowa kluczowego `var`, +// ale zaleca się jednak używanie `let` zamiast `var` +// (więcej informacji w dokumentacji: https://javascript.info/var) +// podobnie można zdefiniować zmienną globalną bez słowa kluczowego +// jednak nie jest to zalecany sposób definiowania zmiennych + +// jak utworzyć stałą +// konwencja nazewnictwa stałych to wielkie litery +const CONST_VALUE = 5; +CONST_VALUE = 10; // to spowoduje błąd \ No newline at end of file From 38cfa079e8610f7c6e7afa214ea33de68a148429 Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:39:53 +0200 Subject: [PATCH 3/8] Nauka pisania prostych funkcji --- main.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 6afc4a5..a057a27 100644 --- a/main.js +++ b/main.js @@ -83,4 +83,14 @@ let undefinedVar; // oznacza zmienną, która nie została zainicjalizowana // jak utworzyć stałą // konwencja nazewnictwa stałych to wielkie litery const CONST_VALUE = 5; -CONST_VALUE = 10; // to spowoduje błąd \ No newline at end of file +CONST_VALUE = 10; // to spowoduje błąd + +// jak napisać funkcję +function add(x, y) { + return x + y; +} +console.log(add(5, 10)); + +// funkcje strzałkowe (funkcje anonimowe lambda) +let arrowAdd = (x, y) => x + y; +console.log(arrowAdd(5, 10)); \ No newline at end of file From 8f58513cedb4ee04ce8d5556e2bc791741c24ce2 Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:40:30 +0200 Subject: [PATCH 4/8] =?UTF-8?q?Nauka=20u=C5=BCywania=20list=20i=20obiekt?= =?UTF-8?q?=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index a057a27..57a0e23 100644 --- a/main.js +++ b/main.js @@ -93,4 +93,46 @@ console.log(add(5, 10)); // funkcje strzałkowe (funkcje anonimowe lambda) let arrowAdd = (x, y) => x + y; -console.log(arrowAdd(5, 10)); \ No newline at end of file +console.log(arrowAdd(5, 10)); + +// jak utworzyć tablicę +let numbers = [1, 2, 3, 4, 5]; + +// jak uzyskać dostęp do elementu w tablicy +let firstNumber = numbers[0]; +let lastNumber = numbers[numbers.length - 1]; +let lastNumber2 = numbers.at(-1); // to jest nowa metoda od ES2022 + +// tak samo można indeksować łańcuchy znaków +let firstChar = str[0]; + +// jak dodać element do tablicy +numbers.push(6); +numbers // to wypisze [1, 2, 3, 4, 5, 6] + +// jak usunąć ostatni element z tablicy +let lastElement = numbers.pop(); +numbers // to wypisze [1, 2, 3, 4, 5] + +// jak usunąć dowolny element z tablicy +numbers.splice(1, 1); // usuń jeden element zaczynając od drugiego elementu +numbers // to wypisze [1, 3, 4, 5] + +// jak utworzyć obiekt (słownik) +let person = { + name: 'Jan', + age: 30, + isAdult: true +}; +person // to wypisze { name: 'Jan', age: 30, isAdult: true } +person.name // to wypisze 'Jan' +person['name'] // to wypisze 'Jan' + +// jak dodać lub zmodyfikować atrybut obiektu +person.city = 'Bydgoszcz'; +person['city'] = 'Bydgoszcz'; +person // to wypisze { name: 'Jan', age: 30, isAdult: true, city: 'Bydgoszcz' } + +// jak usunąć atrybut obiektu +delete person.age; +person // to wypisze { name: 'Jan', isAdult: true, city: 'Bydgoszcz' } \ No newline at end of file From ade61ffa130959dc7f5a3c3b4691c54535ba04c0 Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:41:07 +0200 Subject: [PATCH 5/8] =?UTF-8?q?Przyk=C5=82ad=20z=20funkcj=C4=85=20zwracaj?= =?UTF-8?q?=C4=85c=C4=85=20obiekt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 57a0e23..4706f2a 100644 --- a/main.js +++ b/main.js @@ -135,4 +135,20 @@ person // to wypisze { name: 'Jan', age: 30, isAdult: true, city: 'Bydgoszcz' } // jak usunąć atrybut obiektu delete person.age; -person // to wypisze { name: 'Jan', isAdult: true, city: 'Bydgoszcz' } \ No newline at end of file +person // to wypisze { name: 'Jan', isAdult: true, city: 'Bydgoszcz' } + +// jak napisać funkcję zwracająca obiekt +function operators(x, y) { + // Wykonujemy proste obliczenia + let sum = x + y; + let product = x * y; + let difference = x - y; + + // Tworzymy i zwracamy obiekt + return { + sum: sum, + product: product, + difference: difference, + average: sum / 2 + }; +} \ No newline at end of file From 51272c88c8bd1a10b5e32fc0e473245b64f0ddde Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:41:46 +0200 Subject: [PATCH 6/8] Nauka pisania instrukcji warunkowych --- main.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 4706f2a..3eee231 100644 --- a/main.js +++ b/main.js @@ -151,4 +151,21 @@ function operators(x, y) { difference: difference, average: sum / 2 }; -} \ No newline at end of file +} + +// jak napisać instrukcję warunkową +let age = 17; + +if (age >= 18) { + console.log('You are an adult'); +} else if (age >= 13) { + console.log('You are a teenager'); +} else { + console.log('You are a child'); +} + +// zamiast instrukcji warunkowej `if-else` można użyć `switch-case` +// po więcej szczegółów zajrzyj do dokumentacji + +// jednolinijkowa instrukcja if +console.log(age >= 18 ? 'You are an adult' : 'You are not an adult'); \ No newline at end of file From 81fc398da33423ec5ea3958144e16d3621987114 Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:42:24 +0200 Subject: [PATCH 7/8] =?UTF-8?q?Nauka=20pisania=20p=C4=99tli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 3eee231..6594f27 100644 --- a/main.js +++ b/main.js @@ -168,4 +168,51 @@ if (age >= 18) { // po więcej szczegółów zajrzyj do dokumentacji // jednolinijkowa instrukcja if -console.log(age >= 18 ? 'You are an adult' : 'You are not an adult'); \ No newline at end of file +console.log(age >= 18 ? 'You are an adult' : 'You are not an adult'); + +// jak napisać pętlę for (zwróć uwagę, ze różni się ona od Pythona!) +// for (inicjalizacja; warunek; krok) { ... } +for (let i = 0; i < 5; i++) { + console.log(i); +} + +// jak iterować po tablicy +for (let number of numbers) { + console.log(number); +} + +// jak zastosować funkcję do każdego elementu tablicy +// zwróć uwagę, że jest to funkcja anonimowa +numbers.forEach(function (number) { + console.log('Kwadrat liczby ' + number + ' to ' + number ** 2); +}); + +// jak napisać pętlę while +let i = 0; +while (i < 5) { + console.log(i); + i++; +} + +// jak napisać pętlę do-while +// zwróć uwagę, że pętla do-while zawsze wykona się przynajmniej raz! +let j = 0; +do { + console.log(j); + j++; +} while (j < 5); + +// przerywanie pętli i kontynuacja (analogicznie do Pythona) +for (let i = 0; i < 5; i++) { + if (i === 3) { + break; + } + console.log(i); +} + +for (let i = 0; i < 5; i++) { + if (i === 3) { + continue; + } + console.log(i); +} \ No newline at end of file From 184a76df03ac340b9f28f037f92bc3169c5dbc5d Mon Sep 17 00:00:00 2001 From: Maksymilian Wojnar Date: Mon, 7 Oct 2024 20:43:12 +0200 Subject: [PATCH 8/8] Nauka tworzenia prostej klasy --- main.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 6594f27..0608931 100644 --- a/main.js +++ b/main.js @@ -215,4 +215,28 @@ for (let i = 0; i < 5; i++) { continue; } console.log(i); -} \ No newline at end of file +} + +// jak napisać klasę +// konwencja nazewnictwa klas to PascalCase +class Person { + // równoważne __init__ w Pythonie + constructor(name, age) { + this.name = name; + this.age = age; + } + + // nie ma potrzeby używania słowa kluczowego `function` + isAdult() { + return this.age >= 18; + } +} + +let jan = new Person('Jan', 15); +jan.isAdult(); + +let janina = new Person('Janina', 30); +janina.isAdult(); + +// to nie wszystko! +// sprawdź dokumentację, aby uzyskać więcej informacji \ No newline at end of file