Dane oryginału

Copyright © 2015 by Bryson Payne. Title of English-language original: Teach Your Kids To Code ISBN 978-1-59327-614-0, published by No Starch Press. Polish-language edition copyright © 2018 by Polish Scientific Publishers PWN Wydawnictwo Naukowe PWN Spółka Akcyjna. All rights reserved.

Przekład Maciej Baranowski na zlecenie WITKOM Witold Sikorski

Projekt okładki polskiego wydania INT-MEDIA Dawid Mazur

Wydawca Łukasz Łopuszański

Redaktor prowadzący Adam Kowalski

Redaktor Małgorzata Dąbkowska-Kowalik

Koordynator produkcji Anna Bączkowska

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN Marcin Kapusta / konwersja.virtualo.pl

Zastrzeżonych nazw firm i produktów użyto w książce wyłącznie w celu identyfikacji.

Copyright © for the Polish edition by Wydawnictwo Naukowe PWN S.A.

Warszawa 2018

eBook został przygotowany na podstawie wydania papierowego z 2018 r., (wyd. I)

Warszawa 2018

ISBN: 978-83-01-20066-4

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl, www.pwn.pl

DOBRE RECENZJE KSIĄŻKI
UCZYMY DZIECI PROGRAMOWANIA

„Tekst jest zrozumiały, ilustracje ujmujące, a apki niesamowite. Jest to podręcznik do programowania, którym wspólnie cieszyć się mogą rodzice i dzieci”.
– Aaron Walker, specjalista ds. cyberbezpieczeństwa, NASA

„Bryson naucza energicznie i żywiołowo, co udało mu się świetnie oddać w Uczymy dzieci programowania, a kolorowe, wciągające gry i ilustracje pomagają rozwijać umiejętności przydatne w prawdziwym świecie”.
– Bindy Auvermann, dyrektor wykonawczy, Next Generation Youth Development, Inc.

„Bez wahania pięć gwiazdek... dzieci (i dorośli) przyswoją solidne podstawy, które pozwolą im sięgnąć po bardziej zaawansowane książki o programowaniu”.
– James Floyd Kelly, GeekDad

„W książce tej są cegiełki, składające się na świetną przyszłość w szybko zmieniającym się świecie technologii”.
– JoAnne Taylor, była wiceprezes Global Telecommunications, IBM

„Zagadnienia przedstawione w Uczymy dzieci programowania mogą zwiększyć możliwości każdej młodej osoby związane ze studiami i karierą”.
– Dr. Raj Sunderraman, Wydział Informatyki, Stanowy Uniwersytet Georgii

„Każde dziecko na tej planecie powinno mieć tę książkę, podobnie jak każdy rodzic”.
– James E. Daniel Jr., założyciel App Studios LLC

„Innowacyjny, inspirujący przewodnik... Wpaja umiejętności przydatne przez całe życie”.
– Dr. Steven Burrell, wiceprezes ds. technologii informacyjnej i dyrektor Wydziału Informatyki na Uniwersytecie Południowej Georgii.

„Taką właśnie książkę chciałbym mieć, będąc dzieckiem”.
– Scott Hand, inżynier oprogramowania, CareerBuilder

„Dr. Bryson Payne to informatyk i profesor najwyższej próby, a w Uczymy dzieci programowania przystępnie pokazuje potęgę komputerów młodym i starym czytelnikom”.
– Dr. Antonio Sanz Montemayor, profesor informatyki, Uniwersytet Króla Juana Carlosa, Hiszpania

„Błyskotliwe połączenie wciągających, pomysłowych aplikacji z cennymi, życiowymi umiejętnościami”.
– Ted Cunningham, autor The Power of Home

„Książka Uczymy dzieci programowania uczy logicznego myślenia, które pomoże w tworzeniu kolejnego pokolenia liderów technologii”.
– N. Dean Meyer, autor i coach menedżerski

„Ta książka może pomóc twojemu dziecku z sukcesem wkroczyć w świat zaawansowanej technologii”.
– Ken Coleman, autor publikacji na temat przywództwa i były prowadzący audycji The Ken Coleman Show

„Dr Payne pokazuje drogę prowadzącą do wymarzonej pracy! Uczymy dzieci programowania daje wszystkim rodzicom i nauczycielom taką samą możliwość pokierowania pokoleniem kreatywnych rozwiązywaczy problemów”.
– Shah i Susan Rahman, Riot Games

„Bryson pomaga ludziom poprawiać jakość życia za pomocą technologii. Również w tej książce”.
– Ash Mady, menedżer ds. techniki, RedHat, Inc.

„Tekst zabawny i przystępny zarówno dla rodziców jak i dla dzieci”.
– Steve McLeod, zastępca dyrektora działu informatyki, Uniwersytet Północnej Georgii

„Ten materiał jest tak łatwy, że dziecko z ostatnich klas podstawówki, albo starsze, może zacząć samodzielną naukę. Mój faworyt jeśli chodzi o zajęcia na lato”.
– Mel Ford, BlogHer

„Ilustracje robią wrażenie, gry są zabawne, a wyjaśnienia zrozumiałe i zachęcające”.
– Sandra HenryStocker, ITworld

Dla Alexa i Maxa, moich
dwóch ulubionych programistów

O AUTORZE

Dr. Bryson Payne to etatowy profesor informatyki na Uniwersytecie w Georgii, gdzie od ponad 15 lat kształci osoby, które chcą programować. Jego uczniom udało się zrobić kariery w Blizzard Entertainment, Riot Games, Equifax, CareerBuilder i w innych firmach. Był pierwszym kierownikiem wydziału informatyki na UNG i ma stopień doktora z informatyki uzyskany na Uniwersytecie Stanowym Georgii. Oprócz tego promuje nauczanie technologii, prowadząc liczne zajęcia w ramach systemu K12.

Programuje od ponad 30 lat. Pierwszy program sprzedał magazynowi RUN (Commodore 64) do kolumny „Magic” w roku 1985 za 10 dolarów.

Dr. Payne mieszka na północ od Atlanty, w stanie Georgia, ze swoją żoną, Bev, i dwoma synami, Alexem i Maxem.

O ILUSTRATORZE

Miran Lipovača jest autorem Learn You a Haskell for Great Good!. Lubi boks, grę na gitarze basowej i, rzecz jasna, rysowanie. Fascynują go tańczące kościotrupy i liczba 71, a przechodząc przez automatyczne drzwi udaje, że tak naprawdę otwiera je siłą umysłu.

O RECENZENCIE TECHNICZNYM

Ari Lacenski jest autorką aplikacji na Androida i oprogramowania w Pythonie. Mieszka w San Francisco. Na stronie http://gradlewhy.ghost.io/ pisze o programowaniu na Androida, jest mentorką Women Who Code i gra na gitarze piosenki o kosmicznych piratach.

SPIS TREŚCI

Podziękowania

Wprowadzenie
O co chodzi w programowaniu i dlaczego jest to dobre dla twoich dzieci?

Dlaczego dzieci powinny się uczyć kodować?

Programowanie to zabawa

Programowanie to umiejętność przydatna na rynku pracy

Gdzie dzieci mogą się uczyć programowania?

Jak korzystać z tej książki

Eksploruj!

Róbmy to razem!

Zasoby w internecie

Programowanie = rozwiązywanie problemów

1
Podstawy Pythona: poznaj swoje środowisko

Pierwsze kroki w Pythonie

1. Pobieranie Pythona

2. Instalowanie Pythona

3. Testowanie Pythona za pomocą programu

Pisanie programów w pythonie

Wykonywanie programów w pythonie

Co już umiesz

Zadania programistyczne

Zadanie 1: Mad Libs

Zadanie 2: Jeszcze więcej Mad Libs!

2
Grafika żółwia: malowanie w Pythonie

Nasz pierwszy program z żółwiem

Jak to działa

Co się dzieje

Żółw na fali

Żółw w kółeczku

Dodawanie odrobiny koloru

Czterobarwna spirala

Zmienianie kolorów tła

Jedna zmienna, aby rządzić nimi wszystkimi

Co już umiesz

Zadania programistyczne

Zadanie 1: Zmienianie liczby boków

Zadanie 2: Ile ma być boków?

Zadanie 3: Piłeczka z gumek

3
Liczby i zmienne: Python liczy

Zmienne, czyli gdzie trzymamy nasze rzeczy

Liczby i działania matematyczne w Pythonie

Liczby w pythonie

Operatory w pythonie

Wykonywanie działań matematycznych w powłoce Pythona

Błędy składniowe: co powiedziałyście??

Zmienne w powłoce Pythona

Programowanie z użyciem operatorów: obliczanie ceny pizzy

Łańcuchy: prawdziwe znaki w Pythonie

Ulepszanie kolorowej spirali za pomocą łańcuchów

Listy: wszystkie rzeczy w jednym miejscu

Python odrabia za ciebie zadanie domowe

Co już umiesz

Zadania programistyczne

Zadanie 1: Okrągłe spirale

Zadanie 2: Spirale z różnymi imionami

4
Pętle to świetna zabawa (możesz to powtórzyć)

Tworzenie własnych pętli for

Użycie pętli for do narysowania rozety z czterema okręgami

Modyfikowanie pętli for, aby utworzyć rozetę z sześciu okręgów

Ulepszanie programu z rozetą za pomocą danych wprowadzanych przez użytkownika

Główne pętle gry i pętle while

Spirala rodzinna

Składanie wszystkiego w całość: spirala robi się wiralna

Co już umiesz

Zadania programistyczne

Zadanie 1: Rozety spiralne

Zadanie 2: Spirala ze spiralami rodzinnymi

5
Warunki (co się stanie jeśli?)

Instrukcje if

Poznaj wartości logiczne

Operatory porównania

Masz za mało lat!!

Instrukcje else

Wielokąty czy rozety

Parzyste czy nieparzyste??

Instrukcje elif

Warunki złożone: if, and, or, not

Tajne komunikaty

Eksperymenty z łańcuchami

Wartość znaku (znaków))

Nasz program do kodowania/dekodowania

Co już umiesz

Zadania programistyczne

Zadanie 1: Kolorowe rozety i spirale

Zadanie 2: Klucze zdefiniowane przez użytkownika

6
Losowe gry i zabawy: śmiało, zaryzykuj!

Zgadywanka

Kolorowe losowe spirale

Wybierz dowolny kolor

Koordynowanie ruchów

Jaki rozmiar ma nasze płótno?

Składanie wszystkiego w całość

Kamień, papier, nożyce

Wybierz kartę, dowolną kartę

Przygotowywanie talii

Rozdawanie kart

Liczenie kart

Kontynuowanie gry

Składanie wszystkiego w całość

Rzut kostkami: uproszczona wersja gry w kości

Konfiguracja gry

Sortowanie kostek

Testowanie wyrzuconych wartości

Składanie wszystkiego w całość

Kalejdoskop

Co już umiesz

Zadania programistyczne

Zadanie 1: Losowe boki i grubość

Zadanie 2: Realistyczne lustrzane spirale

Zadanie 3: Wojna

7
Funkcje: to na pewno się jakoś nazywa

Łączenie elementów programu w funkcje

Definiowanie funkcji losowa_spirala()()

Wywoływanie funkcji losowa_spirala()()

Parametry: zasilanie funkcji

Buźki w losowych miejscach

Składanie wszystkiego w całość

Return: liczy się to, co oddajesz

Zwracanie wartości z funkcji

Używanie zwracanych wartości w programie

Odrobina interakcji

Obsługa zdarzeń: rysowanie żółwiem

Nasłuchiwanie zdarzeń klawiatury: rysowanie strzałką

Obsługa zdarzeń za pomocą parametrów: klikaj spirale

Jeszcze jeden krok dalej: kliknięcie i uśmiech

Kliknij kalejdoskop

Funkcja rysuj_kalejdoskop()()

Funkcja rysuj_spiralę()()

Składanie wszystkiego w całość

Co już umiesz

Zadania programistyczne

Zadanie 1: Lustrzane buźki

Zadanie 2: Więcej obliczeń na piłeczkach pingpongowych

Zadanie 3: Ulepszony program do malowania

8
Czasomierze i animacje: jak by to zrobił Disney?

Graficzne interfejsy użytkownika z Pygame

Rysowanie kropki za pomocą Pygame

Co nowego w Pygame

Elementy gry

Dokładny pomiar czasu: przemieszczaj się i odbijaj

Przemieszczanie buźki

Animowanie buźki za pomocą klasy Clock

Odbijanie się buźki od ściany

Odbijanie się buźki od czterech ścian

Co już umiesz

Zadania programistyczne

Zadanie 1: Kropka zmieniająca kolor

Zadanie 2: 100 losowych kropek

Zadanie 3: Zatrzęsienie kropek

9
Komunikacja z użytkownikiem: wejdź do gry

Wprowadzanie interakcji: klikaj i przeciągaj

Klikanie kropkami

Malowanie przeciąganiem

Zaawansowana interakcja: eksplozja buziek

Duszki buziek

Konfigurowanie duszków

Aktualizowanie duszków

Buźki większe i mniejsze

Składanie wszystkiego w całość

Przebij Balonik, wersja 1.0

Wykrywanie kolizji i usuwanie duszków

Składanie wszystkiego w całość

Co już umiesz

Zadania programistyczne

Zadanie 1: Kropki o losowych kolorach

Zadanie 2: Malowanie w kolorach

Zadanie 3: Rzucanie buźkami

10
Tworzenie gier: programowanie dla przyjemności

Tworzenie szkieletu gry: Buźka Pong, wersja 1.0

Rysowanie planszy i pionków

Śledzenie wyniku

Wyświetlanie wyniku

Składanie wszystkiego w całość

Zwiększanie trudności i zakończenie gry: Buźka Pong, wersja 2.0

Koniec gry

Zagraj ponownie

Coraz szybciej

Składanie wszystkiego w całość

Dodawanie kolejnych funkcji: Przebij Balonik v2.0

Dodawanie dźwięku za pomocą Pygame

Śledzenie i wyświetlanie postępu gracza

Składanie wszystkiego w całość

Co już umiesz

Zadania programistyczne

Zadanie 1: Efekty dźwiękowe

Zadanie 2: Trafienia i pudła

Zadanie 3: Resetowanie baloników

A
Konfiguracja pythona w systemach Windows, Mac i Linux

Python dla Windows

Pobieranie instalatora

Uruchamianie instalatora

Testowanie Pythona

Python dla systemu Mac

Pobieranie instalatora

Uruchamianie instalatora

Testowanie Pythona

Python dla Linuksa

B
Konfiguracja Pygame w systemach Windows, Mac i Linux

Pygame dla systemu Windows

Pygame dla systemu Mac

Python 2.7 i Pygame 1.9.2

Pygame dla Linuksa

Pygame dla Pythona 2

C
Tworzenie własnych modułów

Tworzenie modułu KolorowaSpirala

Używanie modułu KolorowaSpirala

Wielokrotne używanie modułu KolorowaSpirala

Dodatkowe zasoby

Słowniczek

Przypisy

PODZIĘKOWANIA

Powstanie tej książki nie byłoby możliwe bez wyjątkowego wsparcia zespołu No Starch Press. Dziękuję przede wszystkim Billowi Pollockowi za to, że uwierzył w ten projekt; Tylerowi Ortmanowi za wstawiennictwo i redakcję; oraz Leslie Shen, Rileyowi Hoffmanowi, Lee Axelrod, Mackenzie Dolginow, Serenie Yang i Laurel Chun za ogromny wysiłek włożony w poprawianie, ocenianie, marketing i produkcję, oraz pomaganie mi na wiele sposobów, aby książka była lepsza niż mój pierwotny rękopis. I dziękuję Rachel Monaghan i Pauli Fleming za pomoc przy adiustacji i korekcie.

Dziękuję Michelle Friend i Ari Lacenski za ich wnikliwą oraz gruntowną recenzję techniczną, oraz Conorowi Sengowi za to, że jako pierwszy przeczytał książkę i przetestował programy – w wieku 10 lat.

Dziękuję Miranowi Lipovačy za niezwykłe ilustracje – ożywiają tekst w sposób, o jakim mogłem jedynie marzyć.

Dziękuję mojemu teściowi, Normanowi Petty’emu, emerytowanemu pracownikowi IBM, który na podstawie pierwszych szkiców do tej książki sam zaczął uczyć się Pythona.

Specjalne podziękowania należą się mojej żonie i najlepszej przyjaciółce, Bev, za jej nieustające wsparcie, jak również moim niesamowitym synom, Alexowi i Maxowi, za pomoc w testowaniu każdego programu i sugerowanie poprawek. Dzięki waszej trójce niniejsza książka i całe moje życie są nieskończenie lepsze.

Na koniec dziękuję mojej mamie, Eście, która ośmieliła mnie do tego, abym pokochał uczenie się i rozwiązywanie zagadek.

Programowanie komputerowe, inaczej kodowanie, to ważna umiejętność, którą powinno nabyć każde dziecko. Komputerów używamy do rozwiązywania problemów, grania w gry, usprawniania pracy, wykonywania monotonnych zadań, przechowywania i wyszukiwania informacji, tworzenia czegoś nowego i łączenia się z przyjaciółmi oraz całym światem. Jeśli rozumiesz, na czym polega programowanie, to całą tę moc masz w małym palcu.

Programowania może nauczyć się każdy; to jak układanie puzzli lub rozwiązywanie zagadek. Wykorzystujesz logikę, testujesz rozwiązanie, przeprowadzasz dodatkowe doświadczenia, a następnie rozwiązujesz problem. A najlepsza chwila na rozpoczęcie nauki to właśnie teraz! Jesteśmy w bezprecedensowym momencie historii: nigdy wcześniej miliardy ludzi nie mogły łączyć się ze sobą tak jak teraz, za pomocą komputerów. Żyjemy w świecie wielu nowych możliwości, od elektrycznych samochodów i robotów–opiekunów po drony dostarczające przesyłki, a nawet pizzę.

Jeśli twoje dzieci już dziś rozpoczną naukę programowania, to będą mogły uczestniczyć w definiowaniu tego szybko zmieniającego się świata.

DLACZEGO DZIECI POWINNY SIĘ UCZYĆ KODOWAĆ?

Jest wiele istotnych powodów, aby uczyć się programowania komputerów, ale dla mnie dwa najważniejsze to:

• Programowanie to zabawa.

• Programowanie to umiejętność przydatna na rynku pracy.

PROGRAMOWANIE TO ZABAWA

Technologia staje się częścią codziennego życia. Każda firma, każda organizacja charytatywna i każda idea mogą z niej korzystać. Są aplikacje, które pomagają kupować, dawać, przyłączać się, grać, uczestniczyć, komunikować się, udostępniać – praktycznie cokolwiek, co można sobie wyobrazić.

Czy twoje dzieci chciały kiedyś zrobić dodatkowy poziom w swojej ulubionej grze komputerowej? Właśnie tym zajmują się programiści! A co z utworzeniem własnej aplikacji na telefon? Mogą zrealizować ten pomysł, pisząc program na komputerze! Każdy program, gra, system, czy aplikacja, którą kiedykolwiek widziały, zostały napisane za pomocą tych samych programistycznych cegiełek, o których uczy ta książka. Programując, dzieci aktywnie uczestniczą w technologii – nie tylko bawią się, ale robią coś zabawnego!

PROGRAMOWANIE TO UMIEJĘTNOŚĆ PRZYDATNA NA RYNKU PRACY

Programowanie to ważna umiejętność w XXI wieku. Dzisiaj wykonywanie pracy zawodowej, znacznie bardziej niż kiedykolwiek w historii, wymaga zdolności do rozwiązywania problemów, a technologia jest integralnym wymaganiem coraz większej liczby ścieżek kariery.

Amerykański Urząd Statystyczny Pracy przewiduje, że w ciągu kolejnych pięciu lat powstanie ponad 8 milionów stanowisk związanych z technologią. Publikacja Occupational Outlook Handbook za lata 2014–2015 podaje, że siedem na dziesięć najszybciej rozwijających się zawodów, które nie wymagają stopnia magistra ani doktora, jest związanych są z informatyką albo technologią informacyjną (IT).

Gdy w 2004 r. Mark Zuckerberg opracował pierwszą wersję Facebooka, był uczniem liceum i pracował, mieszkając w akademiku. Zaledwie 10 lat później z Facebooka korzystało 1,39 miliarda osób miesięcznie (źródło: http://newsroom.fb.com/company-info/). Nigdy wcześniej w historii żadna idea, produkt ani usługa nie potrafiły zainteresować miliarda osób w czasie krótszym niż dziesięciolecie. Przykład Facebooka świadczy o tym, że technologia ma wielką moc, pozwalającą na dotarcie do liczby osób większej niż kiedykolwiek wcześniej.

GDZIE DZIECI MOGĄ SIĘ UCZYĆ PROGRAMOWANIA?

Ta książka to dopiero początek. Miejsc, w których można nauczyć się programować, jest mnóstwo; witryny takie jak Code.org, Codecademy (patrz rys. 1) i wiele innych uczą podstawowych i zaawansowanych zasad programowania w całej gamie potrzebnych języków. Gdy już przerobisz tę książkę ze swoimi dziećmi, możesz zapisać je na darmowe kursy na witrynach, takich jak EdX, Udacity i Coursera, aby nauczyły się jeszcze więcej.

Rysunek 1. Codecademy uczy krok po kroku wielu języków programowania

„Kluby kodowania” to świetny sposób, aby uczyć się w trakcie zabawy z przyjaciółmi. Uzyskanie na uczelni tytułu w konkretnej dziedzinie to wciąż jeden z najlepszych sposobów, aby przygotować się do kariery, ale skoro studiowanie nie wchodzi jeszcze w grę, twoje dzieci już dziś mogą zacząć tworzyć swoje programistyczne portfolio i demonstrować sprawność jako programiści i osoby potrafiące rozwiązywać problemy.

JAK KORZYSTAĆ Z TEJ KSIĄŻKI

To nie jest książka wyłącznie dla dzieci – jest też dla rodziców, nauczycieli, studentów i dorosłych, którzy chcą zrozumieć podstawy programowania komputerów, zarówno dla zabawy, jak i po to, by mieć dostęp do nowych ofert pracy w zaawansowanej technicznie gospodarce. Niezależnie od tego, ile masz lat, możesz świetnie spędzić czas, poznając podstawy programowania. Najlepszym sposobem, aby to zrobić, jest wspólna praca i eksperymentowanie.

EKSPLORUJ!

Jeśli tylko nie brak ci ochoty, aby poznawać nowe rzeczy, nauka programowania jest fascynująca. Wykonując programy z tej książki wraz z dziećmi, próbuj zmieniać liczby i tekst w kodzie, aby zobaczyć, co się dzieje z programem. Nawet jeśli coś zepsujesz, to naprawiając program, nauczysz się czegoś nowego. W najgorszym razie trzeba będzie ponownie przepisać przykład z książki, albo otworzyć ostatnio zapisaną działającą wersję. Celem nauki programowania jest próbowanie czegoś nowego, zdobywanie nowych umiejętności i znajdowanie nowych sposobów na rozwiązywanie problemów. Testuj swój kod wprowadzając zmiany, zapisując program, uruchamiając go, obserwując, co się dzieje i naprawiając wszelkie błędy.

Ja na przykład napisałem kod, aby utworzyć kolorowy rysunek (patrz rys. 2), a następnie cofnąłem się, zmieniłem kilka liczb tu i tam, i ponownie spróbowałem uruchomić program. W ten sposób uzyskałem kolejny rysunek, który był zupełnie inny, ale równie zachwycający. I znów wróciłem, zmieniłem kilka innych liczb i uzyskałem jeszcze jeden piękny, niepowtarzalny rysunek. Widzisz, co można osiągnąć samą zabawą?

Rysunek 2. Trzy wielobarwne spiralne rysunki, które utworzyłem, testując różne wartości w wierszu kodu programu

RÓBMY TO RAZEM!

Eksperymentowanie z kodem to świetny sposób, aby dowiedzieć się, jak działają programy, a jeszcze lepszy efekt jest wtedy, gdy pracujesz z kimś innym. Niezależnie od tego, czy uczysz dziecko czy studenta czy sam(a) siebie, wspólna zabawa z kodem to nie tylko większa radość, ale też większa efektywność.

Na przykład przy nauce muzyki metodą Suzuki, rodzice uczęszczają na zajęcia wraz z dziećmi i nawet uczą się z wyprzedzeniem, aby umieć pomóc swoim dzieciom między lekcjami. Wczesne rozpoczynanie nauki to kolejny znak rozpoznawczy metody Suzuki; dzieci mogą rozpocząć formalne studiowanie w wieku trzech lub czterech lat.

Ja zacząłem wprowadzać moich dwóch synów w programowanie, gdy mieli dwa i cztery lata, zachęcając ich do zabawy poprzez zmienianie krótkich fragmentów każdego programu, jak kolory, kształty i rozmiary.

Sam nauczyłem się programować w wieku 13 lat, przepisując przykładowe programy z książki, a następnie modyfikując je, aby zrobić coś nowego. Teraz, na prowadzonych przeze mnie zajęciach z informatyki, często daję studentom program i namawiam do zabawy z kodem i tworzenia czegoś nowego.

Jeśli korzystasz z tej książki do samodzielnej nauki, możesz pracować z innymi, znajdując przyjaciela do przerabiania przykładów, albo zakładając świetlicowy bądź osiedlowy klub programowania (pomysły i wskazówki znajdziesz na stronach http://coderdojo.org.pl/ lub http://www.codecademy.com/afterschool/). Programowanie to sport zespołowy!

ZASOBY W INTERNECIE

Wszystkie pliki z programami omawianymi w tej książce, jak również przykładowe rozwiązania zadań programistycznych i inne informacje, są dostępne na stronie http://smartkids.pwn.pl/material/uczymy_dzieci_programowania/. Pobierz programy i eksperymentuj z nimi, aby nauczyć się jeszcze więcej. Jeśli zabrniesz w ślepy zaułek, sięgnij po przykładowe rozwiązania. Warto spróbować!

PROGRAMOWANIE = ROZWIĄZYWANIE PROBLEMÓW

Niezależnie od tego, czy twoje dziecko ma dwa latka i dopiero uczy się liczyć, czy też ma 22 lata i szuka nowego wyzwania, książka ta wraz z omawianymi w niej zagadnieniami to świetny sposób na dającą satysfakcję, inspirującą rozrywkę i zwiększenie możliwości zawodowych. Osoby, które potrafią programować, a tym samym rozwiązują problemy szybko i skutecznie, są dziś bardzo cenione i zwykle wykonują ciekawą, satysfakcjonującą pracę.

Sama technologia nie wystarczy do rozwiązania wszystkich problemów tego świata, ale umożliwia komunikację, współpracę, zdobywanie wiedzy i działanie w takiej skali i z taką szybkością, jakie wcześniej nie mieściły się w wyobrażeniach. Jeśli potrafisz programować, to potrafisz rozwiązywać problemy. A skoro tak, to masz moc, aby ulepszać ten świat i dlatego zacznij programować już dzisiaj.

Praktycznie każdy przedmiot może mieć w sobie komputer – telefon, samochód, zegarek, konsola do gier wideo, przyrząd do ćwiczeń, urządzenie medyczne, wyposażenie przemysłowe, wizytówka czy robot. Programowanie komputerów, inaczej kodowanie, oznacza sposób, w jaki nakazujemy komputerowi wykonywać jakieś zadania, i wymaga zrozumienia, jak za pomocą kodu zapanować nad potężnymi możliwościami komputera.

Programy komputerowe – zwane również aplikacjami lub apkami – mówią komputerom, co mają robić. Aplikacja internetowa może nakazać komputerowi śledzenie twojej ulubionej muzyki; gra może powiedzieć komputerowi, jak wyświetlać epickie pole bitwy z realistyczną grafiką; prosta aplikacja może nakazać komputerowi narysowanie pięknej spirali sześciokątnej, jak ta na rysunku 1.1.

Rysunek 1.1. Kolorowa spiralna grafika

Niektóre aplikacje składają się z tysięcy wierszy kodu, a inne mogą mieć zaledwie kilka wierszy długości, tak jak program FajnaSpiralaSześciokątna.py na rysunku 1.2.

Rysunek 1.2. FajnaSpiralaSześciokątna.py, krótki program w Pythonie, który rysuje spiralę z rysunku 1.1

Ten krótki program rysuje kolorową spiralę pokazaną na rysunku 1.1. Chciałem użyć ładnego obrazka jako przykładu w tej książce, więc postanowiłem zrobić to za pomocą programu komputerowego. Najpierw naszkicowałem pomysł, a następnie zacząłem programować.

W tym rozdziale pobierzemy, zainstalujemy i nauczymy się używać programów, które pomogą nam pisać kod każdej aplikacji, jaką tylko można sobie wyobrazić.

PIERWSZE KROKI W PYTHONIE

Aby zacząć programować, musimy posługiwać się językiem komputera. Komputery wymagają instrukcji krok po kroku i rozumieją tylko pewne języki. Tak jak obywatel(ka) Rosji nie zawsze potrafi porozumieć się po angielsku, tak i komputery rozumieją tylko języki specjalnie dla nich wymyślone. Kod komputerowy jest pisany w językach programowania takich jak Python, C++, Ruby czy JavaScript. Języki te pozwalają nam „rozmawiać” z komputerem i wydawać mu polecenia. Pomyśl chwilę, w jaki sposób każesz psu wykonywać proste sztuczki – gdy wydajesz polecenie „siad”, pies siada; gdy powiesz „daj głos”, pies szczeka. Pies rozumie te proste polecenia, ale niewiele więcej z tego, co mówisz.

Komputery podobnie: mają swoje ograniczenia, ale potrafią zrobić to, co im każesz w ich języku. Język, którego będziemy używać w tej książce, to Python – prosty, a zarazem potężny język programowania. Pythona uczy się na kursach informatycznych dla początkujących w liceum i na studiach, a poza tym jest używany w niektórych z najpotężniejszych aplikacji na świecie, jak Gmail, Mapy Google i YouTube.

Abyś mógł(a) zacząć używać Pythona na swoim komputerze, wspólnie wykonamy trzy poniższe kroki:

1. Pobierzesz Pythona.

2. Zainstalujesz Pythona na swoim komputerze.

3. Przetestujesz Pythona prostym programem albo dwoma.

1. POBIERANIE PYTHONA

Pythona można z łatwością i za darmo uzyskać na witrynie Pythona (patrz rys. 1.3).

Rysunek 1.3. Pobieranie Pythona z witryny Pythona jest bardzo proste

W swojej przeglądarce internetowej wejdź na stronę https://www.python.org/. Najedź wskaźnikiem myszy na znajdujący się u góry przycisk menu Downloads i kliknij przycisk, którego nazwa zaczyna się od Python 3[1].

2. INSTALOWANIE PYTHONA

Znajdź plik pobrany w poprzednim punkcie (prawdopodobnie znajduje się w folderze Pobrane) i dwukrotnie go kliknij, aby uruchomić i zainstalować Pythona oraz edytor IDLE. IDLE to program, którego użyjemy do wpisywania i uruchamiania programów napisanych w Pythonie. Szczegółowe instrukcje dotyczące instalacji znajdziesz w dodatku A.

3. TESTOWANIE PYTHONA ZA POMOCĄ PROGRAMU

W menu Start albo folderze Aplikacje znajdź program IDLE i uruchom go. Zobaczysz okno poleceń tekstowych, takie jak na rysunku 1.4. Nazywa się ono powłoką Pythona. Powłoka to okno, czyli ekran, na którym możesz wpisywać polecenia albo wiersze kodu.

Rysunek 1.4. Powłoka IDLE Pythona – nasze centrum dowodzenia w trakcie nauki Pythona

Znaki >>> to zgłoszenie wiersza poleceń, które oznacza, że komputer jest gotowy na wprowadzenie pierwszego polecenia. Komputer pyta cię, co ma zrobić. Wpisz

print("Hello, world!")

i naciśnij enter lub return na swojej klawiaturze. W odpowiedzi powłoka Pythona powinna wyświetlić tekst wpisany w nawiasie w znakach cudzysłowu: Hello, world!. I to jest właśnie to – pierwszy napisany przez ciebie program!

PISANIE PROGRAMÓW W PYTHONIE

Zwykle chcesz pisać programy, które są dłuższe niż jeden wiersz i właśnie do tego w Pythonie służy edytor. W IDLE przejdź do menu File (Plik) i wybierz kolejno File i New Window (Nowe okno) albo File i New File (Nowy plik). Pojawi się pusty ekran ze słowem Untitled (Bez tytułu) na pasku tytułu.

Napiszmy nieco dłuższy program w Pythonie. W nowym, pustym oknie, wpisz trzy poniższe wiersze kodu:

# TwojeImię.py

imię = input("Jak masz na imię?\n")

print("Hej, ", imię)

Pierwszy wiersz to komentarz. Komentarze, które zaczynają się od krzyżyka (#), to uwagi lub przypomnienia, ignorowane przez komputer. W tym przykładzie komentarz po prostu przypomina, jaka jest nazwa programu. Drugi wiersz prosi użytkownika o podanie imienia i zapamiętuje je w zmiennej imię. Trzeci wiersz wyświetla "Hej, ", a następnie nazwę użytkownika. Zwróć uwagę na przecinek oddzielający tekst w cudzysłowie, "Hej, " od zmiennej imię.

WYKONYWANIE PROGRAMÓW W PYTHONIE

Z menu nad kodem programu wybierz kolejno Run i Run Module. W ten sposób instrukcje znajdujące się w twoim programie zostaną wykonane, czyli zrealizowane. Najpierw trzeba będzie zapisać program. Nazwijmy nasz plik TwojeImię.py. W ten sposób nakazujemy komputerowi, aby zapisał plik jako program o nazwie TwojeImię.py, a część .py oznacza, że chodzi o program w Pythonie.

Gdy zapiszesz plik i uruchomisz go, przekonasz się, że okno powłoki Pythona uruchamia program, wyświetlając pytanie Jak masz na imię?. W kolejnym wierszu wpisz swoje imię i naciśnij enter. Program wyświetli Hej, a następnie wpisane przez ciebie imię. Ponieważ to już wszystko, co ten program ma robić, program zakończy się, a ty ponownie zobaczysz znak zgłoszenia, >>>, taki jak na rysunku 1.5.

Rysunek 1.5. Komputer wie, jak mam na imię!

Wyjaśnienie młodszym uczniom, takim jak mój trzyletni synek, że program pyta użytkownika o imię, sprawia ogromną radość. Max zna litery w swoim imieniu, więc wpisuje na klawiaturze m-a-x i bardzo się cieszy, gdy mu mówię, że program odpowiada mu Hej, max. Zapytaj swojego ucznia lub uczennicę, czy chcieliby, żeby program powiedział coś innego. Max powiedział „Cześć”, więc zmodyfikowałem trzeci wiersz poprzedniego programu, aby zamiast Hej mówił Cześć.

A potem zmieniłem trzeci wiersz tak jak poniżej:

print("Cześć, ", imię, imię, imię, imię, imię)

Max był wniebowzięty, gdy program odpowiedział mu Cześć, max max max max max. Poeksperymentuj z drugim i trzecim wierszem programu, aby komputer zadawał inne pytania i wyświetlał inne odpowiedzi.

CO JUŻ UMIESZ

Uczenie się programowania to jak nauka układania puzzli, rozwiązywania zagadek i łamigłówek. Na początku masz problem, podchodzisz do niego za pomocą tego, co wiesz, a po drodze dowiadujesz się nowych rzeczy. Gdy kończysz, masz za sobą umysłowe ćwiczenie oraz odpowiedź na pytanie. A także, mam nadzieję, satysfakcję.

W tym rozdziale rozwiązaliśmy pierwszy podstawowy problem: zainstalowaliśmy język programowania Python na naszych komputerach, abyśmy mogli zacząć programować. Sprowadziło się to do pobrania, zainstalowania i uruchomienia pliku.

W następnych rozdziałach nauczysz się rozwiązywać problemy, używając kodu. Zaczniesz od prostych wizualnych zadań, jak rysowanie kształtów na ekranie komputera (albo tabletu lub telefonu), a następnie dowiesz się, jak tworzyć proste gry typu zgadywanka liczbowa, „kamień, papier, nożyce” i Pong.

Dzięki fundamentom położonym w tych pierwszych programach, później będzie można przejść do programowania gier, aplikacji mobilnych, aplikacji internetowych i innych rzeczy.

Zakładam, że na tym etapie nauki:

• masz w pełni funkcjonalne środowisko programowania w Pythonie i edytor tekstu;

• potrafisz wprowadzać polecenia programistyczne bezpośrednio do powłoki Pythona;

• potrafisz pisać, zapisywać, uruchamiać i modyfikować krótkie programy w IDLE;

• jesteś gotowy(a) na wypróbowanie bardziej zaawansowanych i fajniejszych programów w rozdziale 2.

ZADANIA PROGRAMISTYCZNE

Na zakończenie każdego rozdziału możesz przećwiczyć przerobiony materiał – a nawet napisać fajniejsze programy – próbując wykonać kilka zadań. (Jeśli będziesz mieć problemy, poszukaj przykładowych odpowiedzi na stronie http://smartkids.pwn.pl/material/uczymy_dzieci_programowania/.)

ZADANIE 1: MAD LIBS

Prosty kod TwojeImię.py zawiera wszystkie komponenty niezbędne do tego, aby można było napisać o wiele bardziej interesujący program, taki jak staromodne gry słowne Mad Libs (jeśli nie wiesz co to jest, wejdź na stronę http://www.madlibs.com/).

Zmodyfikujmy program TwojeImię.py i zapiszmy go jako MadLib.py. Zamiast pytać o imię użytkownika, zapytamy o przymiotnik, rzeczownik i czasownik w czasie przeszłym (w odpowiedniej liczbie i rodzaju) i zapiszemy je w trzech różnych zmiennych, tak jak to zrobiliśmy w przypadku imię w oryginalnym programie. Następnie wyświetlimy zdanie takie jak „przymiotnik rzeczownik czasownik nad leniwym brązowym psem”. Po tych zmianach ten kod powinien wyglądać tak:

MadLib.py

przymiotnik = input("Podaj przymiotnik: ")

rzeczownik = input("Podaj rzeczownik: ")

czasownik = input("Podaj czasownik w czasie przeszłym: ")

print("Twoje zdanie:")

print(przymiotnik, rzeczownik, czasownik, "nad leniwym brązowym psem.")

Możesz wprowadzić dowolny przymiotnik, rzeczownik i czasownik. Oto, co powinniśmy zobaczyć po zapisaniu i uruchomieniu MadLib.py (ja wpisałem mądry, nauczyciel i kichnął):

>>>

Podaj przymiotnik: mądry

Podaj rzeczownik: nauczyciel

Podaj czasownik w czasie przeszłym: kichnął

Twoje zdanie:

mądry nauczyciel kichnął nad leniwym brązowym psem.

>>>

ZADANIE 2: JESZCZE WIĘCEJ MAD LIBS!

Zróbmy coś, aby nasza gra Mad Libs była trochę bardziej interesująca. Zacznij tworzyć nową wersję MadLib.py, zapisując ją jako MadLib2.py. Wstaw kolejny wiersz do wprowadzania danych, który pyta o gatunek zwierzęcia. Następnie zmień instrukcję print, usuwając słowo psem i dodając nową zmienną zwierzak po zakończeniu cytowanego zdania (w instrukcji print, przed nową zmienną, wstaw przecinek). Jeśli zechcesz, możesz jeszcze bardziej zmodyfikować to zdanie. Na końcu możesz zobaczyć zdania takie jak miłosne wzruszenia obiecywałaś nad leniwym brązowym baran – albo jeszcze śmieszniejsze!

PRZYPISY

[1] Aktualnie dostępna wersja to 3.6.3 (przyp. red).