Blokada w programowaniu
Niejednokrotnie na prowadzonych przeze mnie zajęciach, spotkałem się z osobami, które chciały już na samym początku skupić się na nauce programowania od tematu obiektowości. Takie podejście nie zawsze było trafione, ponieważ problem zazwyczaj tkwił w braku solidnych podstaw.
Tutoriale i książki głównie wprowadzają w temat słów kluczowych i konstrukcji jakie oferuje Python. To świetny sposób na usystematyzowanie wiedzy, ale nie na rozwinięcie logicznego myślenia niezbędnego w rozwiązywaniu problemów. Pozyskana w ten sposób wiedza jest często powierzchowna i bazowanie tylko na niej może doprowadzić do blokady w programowaniu.
Tak jest w przypadku, kiedy uczymy się Pythona poprzez poznawanie kolejnych wbudowanych w nim rzeczy. Taka nauka ma charakter przyrostowy i polega na ciągłym szukaniu gotowego rozwiązania, ale czy ta metoda jest najlepsza?
Z doświadczenia wiem, że takie podejście jest niewystarczające. Spójrzmy na poniższy przykład, który obrazuje odliczanie od 1 do 10. Nie jest to złożony przypadek, ponieważ wystarczy tu użyć tylko pętlę for i wywołać range.
for i in range(1, 11):
print(i)
W sytuacji, gdy zaistnieje potrzeba jednoczesnego odliczania od 0 do 5, i od 5 do 0, powyższe rozwiązanie już się nie sprawdzi. Część osób zapewne pomyśli o drugiej pętli, ale jej użycie nie spowoduje wyświetlenia dwóch liczb na raz (w jednym rzędzie).
O rozwiązanie będzie łatwiej, gdy spróbujemy zwizualizować końcowy wynik:
0 5
1 4
2 3
3 2
4 1
5 0
Warto zastanowić się nad tym, czy istnieje sposób, aby na podstawie pierwszej kolumny liczb odtworzyć drugą kolumnę. Szukanie zależności jest tu kluczowe. Widzimy bowiem, że pierwsza kolumna stopniowo rośnie, a druga stopniowo maleje. Dodatkowo można zauważyć, że suma w każdym rzędzie wynosi zawsze 5. Jeśli w pierwszej kolumnie wystąpi 1, to aby otrzymać 4 wystarczy wykonać działanie 5 - 1.
Rozwiązaniem jest następujący kod:
for i in range(6):
print(i, 5 - i)
To jest jeden z wielu przypadków, który sprawia kłopoty, a przecież z punktu widzenia gramatyki Pythona nie wprowadza on niczego nowego.
Sama znajomość wbudowanych w Pythona konstrukcji, nie poparta logicznym myśleniem, nie gwarantuje rozwiązania każdego problemu.
Z tego właśnie powodu stworzyłem serwis kursy.devpython.pl - miejsce, które pomoże Ci skutecznie przełamać blokadę w programowaniu, poprzez rozwiązywanie problemów o różnym stopniu złożoności.
Warty podkreślenia jest fakt, że na każdym etapie nauki będziesz mógł liczyć na moją pomoc. Wszystkie wysłane przez Ciebie rozwiązania zostaną przeze mnie sprawdzone, a w komentarzu otrzymasz liczne wskazówki oraz końcowy feedback.
Poniższy screen przedstawia komunikację w trakcie rozwiązywania zadania: