dla Początkujących
6 godz. 26 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykProgramowanie to szeroka dziedzina, która nieustannie się rozwija. Rozpoczynając naukę możemy opierać się głównie na wskazówkach bardziej doświadczonych osób, bądź autorach kursów i nauczycielach. W praktyce najważniejsze na początku jest dobre zrozumienie tego, czym jest programowanie, jakie możliwości daje oraz jakie możemy wybrać ścieżki rozwoju. W tym kursie spojrzymy na programowanie z szerokiej perspektywy, dając Ci solidne podstawy do dalszej nauki.
To kolejne trudne pytanie, na które nie ma jednoznacznej odpowiedzi. Dobra wiadomość jest taka że języki programowania, podobnie jak angielski, niemiecki czy hiszpański mają cechy wspólne. Nie oznacza to że nauka jednego, da Ci dostęp do wszystkich ale poznasz ogólne mechanizmy, które spotkasz w niemal wszystkich pozostałych technologiach. W tym kursie skupiamy się właśnie na takich obszarach, opierając przykłady o obecnie najpopularniejszy język jakim jest JavaScript.
Być może zastanawiasz się jak dokładnie wygląda praca programisty? Czym różni się front-end od back-endu i czy wysokie umiejętności analityczne są wymagane niezależnie od obszaru programowania, którym się zajmujemy? Dodatkowo samo zostanie programistą to tylko początek drogi. Możliwości jakie przed nami stoją nie tylko są ogromne, ale również nieustannie się rozwijają, stawiając przed nami nowe wyzwania.
Ten kurs podzielony jest na dwie części - teoretyczną, która przedstawi Ci szerokie spojrzenie na programowanie oraz praktyczną, w której samodzielnie będziesz w stanie przekonać się jak pisać programy z wykorzystaniem języka JavaScript - najpopularniejszego języka na świecie. To, że będziemy przerabiać przykłady w JavaScript, nie stanowi przeszkody a wręcz lepiej przygotuje Cię do pracy z innymi językami jak Python, C# czy C++ lub Kotlin. To wszystko ułatwi Ci podejmowanie decyzji dotyczących dalszej nauki i rozwoju jako programista.
W pierwszych lekcjach części praktycznej kursu dowiesz się jak skonfigurować środowisko pracy wraz z edytorem, w którym przyjdzie Ci pracować. Pomożemy Ci w dobraniu odpowiednich ustawień i wtyczek, które przyspieszą naukę i pomogą w lepszym zrozumieniu podstawowych koncepcji programistycznych. Krok po kroku dowiesz się jak przygotować środowisko i rozpocząć komfortową pracę.
Mimo, że będziemy pracować z JavaScript, posłuży nam on do przedstawienia najważniejszych koncepcji programowania w każdym innym języku. Nie będziemy uczyć się tworzenia stron i środowiska przeglądarki a jedynie przećwiczymy najważniejsze koncepcje języków programowania w środowisku konsolowym. Dzięki temu zdobyte umiejętności z łatwością przełożysz na inne języki jak Python, Java czy Swift, bo wszystkie posiadają identyczne konstrukcje, a poznać należy wyłącznie różnice.
OOP to jeden z najważniejszych paradygmatów programowania, który powinien poznać każdy aspirujący Programista. Dzięki temu będziesz mógł zdecydowanie lepiej zrozumieć możliwości i powiązania klas i obiektów, które tworzą programiści a także pisać kod, który jest prostszy i reużywalny. To koncepcja, którą także wyjaśnimy obrazowo w kursie. Oczywiście, poza teorią w kursie pokażemy Ci przykłady tworzenia funkcjonalnych klas w JavaScript.
Kolejną ważną koncepcją, którą musi znać każdy początkujący Programista jest praca z błędami - innymi słowy obsługa błędów lub debugowanie naszej aplikacji. To niezwykle ważne, bo oszczędzi Ci mnóstwa frustracji oraz wielu godzin rozpoznawania, co w kodzie nie działa poprawnie. Z kursu w praktyce dowiesz się, jak testować swoje aplikacje, łatwo wykrywać błędy i korzystać z narzędzi, które będą je dla nas wykrywać lub automatycznie poprawiać!
Ten kurs przygotowaliśmy tak, aby był fundamentem wiedzy o Programowaniu, którego używamy w wielu naszych ścieżkach na eduweb.pl. To znaczy, że kurs który masz przed sobą rozpoczyna ścieżkę Python, JavaScript, Ruby i wiele innych. Wiemy, że w sieci jest mnóstwo materiałów na temat podstaw programowania i chcieliśmy przygotować wyjątkowy kurs, który da Ci spokój w natłoku wielu informacji w sieci. Zaangażowaliśmy w to najlepszych autorów eduweb oraz naszym zdaniem jednych z najlepszych programistów w Polsce. To, co jest jednak najważniejsze - kurs omawia programowanie bardzo prostym językiem, dzięki czemu jest przystępny dla każdego!
Kurs przeznaczony jest dla osób początkujących, które stawiają swoje pierwsze kroki na scieżce programisty lub programistki. Jednak skorzystają z niego także te osoby, które myślą o nauce programowania w celu uzupełnienia innych umiejętności, na przykład internetowi przedsiębiorcy, freelancerzy, UI/UX i web designerzy. Jeżeli czujesz się zagubiony lub przytłoczony dużą ilością często sprzecznych informacji - ten materiał pozwoli Ci szerzej spojrzeć na programowanie. To z kolei przełoży się na lepsze decyzje, które będziesz podejmować w kontekście swojego rozwoju. W kursie znajdziesz wskazówki i porady dotyczące efektywnej nauki programowania, które pomogą Ci szybciej zdobyć nowe umiejętności i pracę w zawodzie. Najważniejszą z nich jest fakt, że programowanie to dynamicznie rozwijająca się dziedzina, która wymaga od Ciebie nieustannej nauki. Zatem wypracowanie odpowiednich nawyków i technik nauki jest niezwykle istotne, niezależnie od miejsca w którym aktualnie się znajdujesz.
W tej lekcji pokażę Ci jak możemy
sortować elementy tablicy bo jest to również operacja bardzo popularna w przypadku
programowania, natomiast niestety musimy troszeczkę wybiec w przyszłość i będę musiał
pokazać Ci jak wyglądają funkcje a o funkcjach jeszcze powiemy sobie później
więc tutaj znowu jest ten moment kiedy nie jestem w stanie tego pokazać bez
pokazywania funkcji a chciałem żeby to się znalazło w rozdziale o tablicach więc w
razie czego wróć sobie tutaj jeszcze po przerobieniu lekcji o funkcjach.
Od czego zaczniemy. Mamy dwie tablice. Pierwszą pod stałą arr
i są tutaj same liczby a drugą mamy pod stałą arr 2 i są tutaj jak widzisz
imiona wszystkie z wielkiej litery i jedna z małej litery.
Wrócimy do tej drugiej tablicy za chwilę.
Na razie zajmiemy się tą pierwszą.
Będziemy chcieli ją posortować a więc chciałbym aby liczby były tutaj poukładane
od najmniejszej do największej. I pokażę Ci w jaki sposób to zrobić.
Robimy to za pomocą metody,
jak widziałeś w poprzedniej lekcji metody
to jest coś do czego się odwołujemy po kropce czyli jak się odwołam do
arr to jest tak jakbym się odwołał do tej tablicy,
i ona ma taką metodę jak sort. Jeżeli podamy samo sort w ten sposób
nic tutaj szczególnego nie zrobimy i wyświetlimy sobie tą tablicę,
zauważ, że ona od razu jest posortowana ale nie tak jakby się mogło wydawać.
Nie do końca poprawnie bo została jakby posortowana alfabetycznie ale wszystkie te
wartości zostały potraktowane tak jakby to były wartości typu string.
Dlaczego.
Dlatego że mamy 1:1 ale potem mamy 18 bo została wzięta jakby tylko ta jedynka.
I zostało to alfabetycznie posortowane, potem dwójka itd.
A my chcemy to posortować mając nad tym jakąś kontrolę. I pokażę Ci jak to zrobić.
Otóż tutaj zostawimy sobie to do tej funkcji, do tej metody sort
możemy przekazać funkcję anonimową,
tak jak wspomniałem o funkcjach dokładnie będę mówił później,
wygląda to tak, że przekazujemy tutaj funkcję i ta funkcja
sama w sobie jest też pewnego rodzaju strukturą w języku programowania.
I ta funkcja otrzyma na etapie tego sortowania
parametry. Poszczególne elementy będzie to a i b.
Możemy to nazwać dowolnie, możemy to nazwać
powiedzmy element 1 i element 2 bo to jest tak jakbyśmy sobie tworzyli pewnego
rodzaju zmienne więc sami to nazywamy jak chcemy,
ale ważne, że tutaj muszą być dwa elementy.
I przy takim sortowaniu pod a zostanie
umieszczona na początku piątka, pod b zostanie umieszczona ósemka.
My tutaj wykonujemy jakąś operację,
musimy zwrócić z tej funkcji o czym za moment 0, -1 lub 1 i później jakby
cała ta metoda przechodzi do kolejnej iteracji tak zwanej i podstawi dwa
kolejne elementy pod a i b i znowu na nich trzeba będzie wykonać jakąś operację.
Więc tutaj będziemy chcieli tak jak
wspomniałem zwrócić z tej funkcji 0, -1 lub 1
ale najpierw musimy zrobić sobie jakieś porównanie. Więc tutaj stworzymy sobie
instrukcję warunkową i powiemy, że jeżeli a jest mniejsza od b
takie instrukcje warunkowe już znasz to jeżeli a jest mniejsza od b to chcemy
zwrócić z funkcji a robi się to specjalnym słowem kluczowym return,
jeszcze później w odpowiednim rozdziale będę to bardzo dokładnie tłumaczył,
chcemy zwrócić -1. Czyli tak jak wspomniałem jeżeli pod a wpadnie nam 5, pod b wpadnie
nam 8 to sprawdzimy czy 5 jest mniejsze od 8,
tak, zwróć -1 i to oznacza, że tą pierwszą
wartość chcemy umieścić w tablicy przed tą drugą wartością.
Później przejdziemy do kolejnej jakby do kolejnego sprawdzenia i zostanie pod a
podstawione 8 a pod b zostanie podstawione 1.
Więc sprawdzimy czy 8 jest mniejsza od 1,
nie, więc trzeba będzie zwrócić jedynkę aby ósemkę umieścić za tą kolejną wartością.
Więc tutaj musimy sobie zrobić else if i
sprawdzić, jeżeli a jest większe od b to zwróć jedynkę tak jak wspomniałem.
Natomiast w przeciwnym wypadku znajdziemy się tylko jeżeli a będzie równe b
i wtedy chcemy zwrócić 0 mówiąc nie przestawiaj kolejności tych elementów.
Ja to zapisze i zauważ, że ta tablica została poprawnie posortowana,
natomiast jeszcze na sekundkę sobie to prześledźmy.
Czyli tak jak wspomniałem na początku piątka wpadnie a, ósemka pod b, czyli na
tym etapie w naszym programie to jest tak jakbyśmy mieli zmienną a i b
i jedna przechowuje piątkę druga ósemkę. Czy 5 jest mniejsza od 8?
Tak. Zwróć -1 żeby piątka była
przed ósemką. Następnie podstawiona zostanie ósemka i jedynka.
Czyli tu będzie 8 tu 1. Sprawdzimy czy 8 jest mniejsze od 1.
Nie jest. Więc sprawdzamy dalej.
W takim razie czy 8 jest większa od 1.
Tak. Zwróć jedynkę aby to 8 zostało na prawą stronę przeniesione.
No i tak to będzie wyglądać aż zostanie cała ta tablica posortowana
i na tym etapie w naszym kodzie mamy dokładnie tę samą tablicę ale ona jest już
po kolei posortowana i pod indeksem 0 czyli tak naprawdę pierwszym już nie
będzie miała piątki ale będzie miała jedynkę.
Gdybyśmy w jakiś sposób później chcieli te liczby
kolejno wyświetlać no to wiemy, że są one już odpowiednio posortowane.
Teraz przejdziemy dalej. Będę chciał Ci
pokazać, że możemy sortować również ciągi znaków i jak skorzystaliśmy z tego sort i nie
przekazaliśmy żadnej funkcji to właśnie domyślnie tak to zostało posortowane.
Więc jeżeli tą drugą tablicę chciałbym
posortować odpowiednio to może to wykomentuje żeby się nam nie
wyświetlało, to zrobimy sobie najpierw console.log arr2.
Widzimy jak ta tablica wygląda i następnie będę chciał ją posortować.
Napiszę arr2.sort i następnie ją będę chciał wyświetlić żeby
zobaczyć jak została posortowana. I okazuje się, że ona automatycznie została
bez podawania tutaj czegokolwiek posortowana alfabetycznie ale mamy tutaj taki problem,
że Anita została tutaj umieszczona na końcu dlatego, że jest tutaj
brana pod uwagę wielkość liter. A chcielibyśmy żeby Anita
nie była traktowana jakoś inaczej z tego powodu, że nie ma tutaj wielkiej litery.
Więc pokażę Ci jak możemy znowu ręcznie nad tym zapanować. Podamy funkcję gdzie
znowu wpiszemy sobie a i b i na początku pod a wpadnie
anita pod b wpadnie Tomek i znowu z tej funkcji będziemy chcieli zwracać -1, 1 albo 0.
Jak będziemy mogli porównać
czy dwie wartości powinny być przestawione czy nie.
Czyli jak one się do siebie mają.
Do tej pory nie pokazałem Ci jednej rzeczy
bo pokazałem Ci taki operator porównania, który nam porównywał liczby ale
nie wspomniałem, że on potrafi porównywać również ciągi znaków.
Czyli jeżeli pod a byśmy przedstawili Anita a pod b byśmy postawili Tomek
to ten operator nam po prostu zwróci true lub false. Czy w alfabecie wcześniej jeżeli
byśmy startowali alfabetycznie powinno wystąpić
a czy b.
Więc zobaczmy.
Może ja to jeszcze tylko pokażę na takim
jednym przykładzie tutaj na samym dole żebyś był pewny o czym ja mówię.
Jeżeli zapytamy czy a jest mniejsza od b to nam zwróciło true.
To znaczy, że alfabetycznie to powinno być
wcześniej, natomiast jeżeli byśmy zapytali czy b jest większa od a zwróci nam false, a
więc ten operator on zawsze zwraca true lub false ale zauważ, że potrafi pracować nie
tylko na liczbach ale również na ciągach znaków.
Więc tutaj będziemy chcieli sobie to
sprawdzać podobnie jak robiliśmy to tutaj wyżej.
Natomiast z jednym zastrzeżeniem. Bo jeżeli to po prostu skopiuje
to nadal nam to zadziała dokładnie tak samo jak wcześniej bo bierze pod uwagę wielkość
liter. Czyli niestety dla tego sprawdzenia a
czy jest mniejsze od A zwraca false.
Zauważ, że wygląda to w ten sposób.
Więc tu musimy zrobić jedną rzecz aby wszystkie wartości tej tablicy traktować
tak samo to musimy albo wszystkie zamienić na wielkie litery żeby tutaj nie było
np.
anita tylko w ten sposób ANITA, Tomka byśmy zamienili tak samo itd.
Wtedy mamy pewność, że są te wartości traktowane tak samo no albo wszystkie
byśmy musieli zamienić na małe litery żeby to wyglądało w ten sposób.
I możemy to zrobić dynamicznie.
A więc jeżeli pod a na początku zostanie podstawiony Anita
to będę chciał nadpisać wartość tej zmiennej bo jest to taka lokalna zmienna
i odwołam się do tego a jest to Anita i na wartościach tekstowych mamy takie
specjalne metody jak na przykład toLowerCase.
Działa to w ten sposób, że jeżeli na Anita wywołany toLowerCase
to zamienimy to na małe litery no i w tym przypadku nic się kompletnie
nie zmieni. Wartość b też będę chciał nadpisać na b.toLowerCase
I jeżeli pod b zostanie podstawiony Tomek to
jeżeli na wartości Tomek zrobimy LowerCase to zamieni nam to na właśnie taką wartość.
Czyli po prostu będzie to wartość z małej litery.
Wszystkie litery będą małe, wszystkie zostaną zamienione na małe
i teraz te wartości nadpisaliśmy, można powiedzieć znormalizowaliśmy. Teraz
nieważne czy to zostanie przekazane Anita wielkimi literami czy małymi zawsze to
zamieni na małe i podobnie zrobimy z Tomkiem i z każdą kolejną wartością.
I jeżeli teraz będziemy porównywać te wartości zauważ, że one zostały już
poprawnie posortowane. Mamy Andrzej, Ania, Anita itd.
To nie zmienia naszej tablicy więc to nie jest tak, że w tej tablicy teraz Anita jest
małymi literami czy inne nie bo my to zmieniliśmy
tak naprawdę tylko tutaj na potrzeby tego
porównania i zwróciliśmy tak jak wcześniej -1, 1 lub 0.
Ja wiem, że na początku może to się wydawać
wszystko skomplikowane ale staram się to tłumaczyć najdokładniej
jak potrafię w razie czego wracać do tych lekcji.
Niemniej jednak zapamiętaj, że w przypadku
sortowania tablic tutaj możesz mieć dowolną logikę, sortować to na bazie
jakiejś swojej logiki tak jak chcesz ale zawsze musisz zwrócić -1 jeżeli
chcesz aby ten pierwszy element był przed tym drugim, 1 jeżeli mają zostać
zamienione kolejnością i 0 jeżeli kolejność ma pozostać taka sama. No i na
końcu jak widzisz pokazuje nam tutaj posortowaną poprawnie tablicę.