Myślenie komputacyjne — jak ugryźć problem
Wstęp do działu
Zanim napiszesz pierwszą linijkę kodu, musisz umieć coś znacznie rzadszego niż programowanie: precyzyjnie powiedzieć, czego właściwie chcesz. Komputer jest genialnym wykonawcą i beznadziejnym zgadywaczem. Zrobi dokładnie to, co każesz — i ani odrobiny tego, co „miałeś na myśli". Dlatego informatyka zaczyna się nie od klawiatury, tylko od sposobu myślenia: jak z mglistego „chciałbym…" zrobić problem opisany tak ostro, że rozwiąże go maszyna bez krzty wyobraźni.
Ten sposób myślenia ma nazwę: myślenie komputacyjne. Wbrew nazwie nie jest o komputerach — jest o problemach. Używają go inżynierowie planujący most, lekarze układający procedurę reanimacji i logistycy pakujący ciężarówki. Komputer jest tylko najwierniejszym testerem: jeśli Twój przepis ma lukę, maszyna w nią wpadnie za każdym razem.
W tym dziale nauczysz się patrzeć na problemy jak informatyk: określać dane i wynik, układać przepis, który nie zostawia wątpliwości, zapisywać go na trzy sposoby, ciąć wielkie problemy na małe i porównywać przepisy między sobą. Wszystko, co przyjdzie później — pętle, sortowania, fraktale, bazy danych — stoi na tym fundamencie.
Mapa pojęć działu
MYŚLENIE KOMPUTACYJNE
|
┌──────────────┬───────┴───────┬────────────────┐
problem algorytm trzy zapisy dekompozycja
(dane, wynik, (przepis bez lista kroków · (tnij na pod-
warunki = wątpliwości: schemat blokowy problemy;
SPECYFIKACJA) skończony, · pseudokod połowienie,
jednoznaczny) zachłanność,
| rekurencja)
PORÓWNYWANIE ALGORYTMÓW
(liczba kroków; ten sam wynik,
różna cena)
Jednostki w tym dziale
- 1.1 Co to znaczy „rozwiązać problem" — specyfikacja i etapy myślenia komputacyjnego
- 1.2 Algorytm — przepis, który nie zostawia wątpliwości
- 1.3 Trzy języki algorytmów — lista kroków, schemat blokowy, pseudokod
- 1.4 Dziel problem na kawałki — dekompozycja i trzy wielkie pomysły
- 1.5 Który przepis lepszy? — pierwsze porównywanie algorytmów
- 1.6 Strategie ataku — wstępująca, zstępująca, abstrakcja, heurystyka (rozszerzenie)