Przeczytaj

Termin myślenie komputacyjnemyślenie komputacyjne został wprowadzony w 2006 roku przez Jeanette Wing. Określiła w ten sposób użyteczne postawy oraz umiejętności, do których wykształcenia powinna dążyć każda osoba.
Przypomnijmy, z jakich etapów składa się proces myślenia komputacyjnego:
określenie problemu,
definicja modeli i pojęć,
znalezienie rozwiązania,
zaprogramowanie rozwiązania,
testowanie rozwiązania.
Etapy te omawiamy w e‑materiale Jak myśleć komputacyjnie?Jak myśleć komputacyjnie?.
Wiemy już, że myślenie komputacyjne to proces myślowy polegający na rozwiązywaniu problemów z różnych dziedzin przy użyciu metod i narzędzi informatycznych. Nie oznacza to jednak, że wymaga ono użycia komputera.
Wybrane metody myślenia komputacyjnego
Oto niektóre z metod myślenia komputacyjnego:
podejście heurystyczne,
analiza,
abstrakcja,
reprezentacja danych,
dekompozycja problemu,
redukcja,
myślenie rekurencyjne.
Rozwiązując jeden problem, możemy korzystać z wielu metod myślenia komputacyjnego.
Podejście heurystyczne
Podejście heurystycznePodejście heurystyczne to zbiór metod rozwiązywania problemów, w których używa się ogólnych reguł zamiast konkretnych i rygorystycznych procedur. Metody heurystyczne są nieprecyzyjne, bazują na intuicji, myśleniu twórczym i nieszablonowym, często dają rozwiązania przybliżone. Wykorzystywane są wtedy, gdy mamy niepełną wiedzę na dany temat lub gdy w ogóle nam jej brakuje.
Przykładem jest burza mózgów (wykorzystywana również jako metoda nauczania), w której priorytetem jest twórcze rozwiązywanie problemów, co można rozumieć jako stawianie i weryfikowanie hipotez. Realizowana jest przez dwa zespoły. Pierwszy zgłasza dowolne, twórcze, nawet nieracjonalne pomysły, drugi zajmuje się ich oceną, co ma doprowadzić do wyboru najbardziej rokującego rozwiązania.
Stawianie hipotez badawczych jest charakterystyczne dla sposobu rozwiązywania problemów w naukach ścisłych i humanistycznych. Zobacz przykładowe materiały:
Badanie procesu mieszania cieczy o różnych temperaturach początkowychBadanie procesu mieszania cieczy o różnych temperaturach początkowych,
Jak kwasy reagują z tlenkami?Jak kwasy reagują z tlenkami?,
Planujemy badania we własnym regioniePlanujemy badania we własnym regionie.
Innym przykładem podejścia heurystycznego jest metoda delficka, bazująca na wiedzy i doświadczeniu. Przy jej zastosowaniu problem rozwiązywany jest przez grupę ekspertów zazwyczaj w kilku rundach, przy czym każda runda opiera się na wynikach poprzedniej.
Analiza
Analiza to jedna z podstawowych metod poznawania świata. Polega na wyodrębnianiu z danej całości części składowych, które można dalej oddzielnie badać. Celem może być zrozumienie budowy i funkcjonowania jakiejś rzeczy lub odnalezienie w problemie prawidłowości, czyli elementów powtarzalnych.
Powiedzmy, że chcielibyśmy przygotować fizyczny lub komputerowy model Układu Słonecznego (zob.: Jak wykonać model Układu Słonecznego?Jak wykonać model Układu Słonecznego?). Po tym, jak ustalimy skalę, w jakiej chcemy przygotować model, ważna jest analiza budowy tego układu. Po wyodrębnieniu tworzących go planet należałoby ustalić cechy każdej z nich, np. masę i odległość od słońca, co jest konieczne do odwzorowania rozmiaru i położenia planet w przyjętej skali. Gdyby model miał mieć charakter dynamiczny, musielibyśmy dodatkowo poznać orbitę oraz prędkość poruszania się wszystkich obiektów.
Abstrakcja
Ta metoda polega na zidentyfikowaniu oraz wyodrębnieniu najważniejszych elementów problemu przy pominięciu tych szczegółów, które są mniej istotne. Wymaga zatem skupienia się tylko na ważnych informacjach, więc konieczne jest dokładne określenie, na czym polega problem.
W odniesieniu do przywołanego wyżej przykładu konstruowania modelu Układu Słonecznego abstrakcja pozwala eliminować cechy nieistotne z punktu widzenia jego przeznaczenia. Jeśli w naszym modelu chcemy skupić się na pokazaniu wielkości oraz położenia planet w stosunku do Słońca, pominiemy wtedy np. informacje o składzie chemicznym lub atmosferze planet.
Innym przykładem stosowania omawianej metody może być próba pokazania stosunku powierzchni do objętości komórek za pomocą modelu komórki w kształcie sześcianu. Wykorzystując bryłę geometryczną, abstrahujemy od wyglądu, kształtu i innych cech komórek. (Zobacz e‑materiał: Objętość i powierzchnia komórki − znaczenie dla procesów życiowychObjętość i powierzchnia komórki − znaczenie dla procesów życiowych.)
Abstrakcja to zazwyczaj pierwsza z metod wykorzystywanych w rozwiązywaniu problemów. Drugą w kolejności może być dekompozycja.
Dekompozycja
Metoda ta polega na rozłożeniu skomplikowanego problemu na mniejsze części (podproblemy), których rozwiązanie może być prostsze od rozwiązania głównego problemu. Rozwiązania podproblemów należy w razie potrzeby połączyć.
Powiedzmy, że mamy zaprojektować serwis online obsługujący restaurację. Rozpoczynając realizację projektu, podzielimy go na mniejsze zadania, które do pewnego stopnia i momentu będą mogły być wykonywane niezależnie, np.: przygotowanie bazy danych, obsługa kont użytkowników serwisu (pracowników), moduł obsługi zamówień, moduł obsługi dań, moduł rezerwacji, wygląd i funkcjonalność interfejsu (czyli strony WWW) itd. Warto zauważyć, że proces dekompozycji może być kontynuowany, tzn. wyodrębnione zadania można dalej dzielić na podzadania aż do momentu, kiedy uznamy je za względnie proste do wykonania. (Zobacz e‑materiał: Bazy danych – projekt, etap IBazy danych – projekt, etap I.)
Dekompozycji często towarzyszy redukcja.
Redukcja
Redukcja to strategia, która polega na przekształceniu jednego problemu w inny, łatwiejszy do rozwiązania albo taki, którego rozwiązanie jest znane.
Omawianą metodę najłatwiej dostrzec w całej klasie problemów algorytmicznych rozwiązywanych za pomocą metody „dziel i zwyciężaj”. Np. znalezienie n‑tego wyrazu ciągu Fibonacciego można podzielić na problemy dotyczące znalezienia ciągów n‑1 i n‑2. W ten sposób redukujemy problem aż do wyrazu zerowego i pierwszego, które są dane z góry. Podany sposób rozwiązywania problemu jest również przykładem omawianej dalej rekurencji.
Inne problemy algorytmiczne, które rozwiązywane są w drodze dekompozycji, redukcji („dziel i zwyciężaj”) i rekurencji, to jednoczesne szukanie najmniejszej i największej wartości, przeszukiwanie binarne, sortowanie przez scalanie czy sortowanie szybkie.
Reprezentacja danych
W kontekście rozwiązywania problemów informatycznych reprezentacja danych dotyczy wyboru struktury lub formatu danych, które najlepiej pasują do określonego problemu i umożliwiają efektywne jego rozwiązanie. Wybór struktury danych zależy od charakterystyki problemu, dostępnych zasobów (jak pamięć i moc obliczeniowa) oraz wymogów (takich jak wydajność, dokładność, skalowalność itp.). Dobrze dobrana struktura umożliwia lub ułatwia skuteczną pracę z danymi.
W kontekście języków programowania C++, Java oraz Python struktury danych to klasy. Zagadnienie klas powiązane jest z programowaniem obiektowym.
By się o tym przekonać, zastanówmy się, czy mapa zaprezentowana w formie tekstu byłaby łatwa w odbiorze. Choć zawierałaby te same informacje, co jej graficzna reprezentacja, używanie jej byłoby nieporównanie trudniejsze! Dlatego np. dane przestrzenne w systemach informacji geograficznej (ang. GIS) zapisywane są w specjalistycznych formatach grafiki wektorowej, np. Shapefile, i rastrowej, np. GeoTIFF (zob.: Tworzenie mapy GISTworzenie mapy GIS). Podobnie specjalistyczne formaty używane są w zastosowaniach medycznych, np. DICOM (ang. Digital Imaging and Communications in Medicine).
Dobór właściwej struktury do rozwiązywanego problemu odgrywa kluczową rolę w algorytmice. Załóżmy, że mamy napisać kod realizujący zamówienia według kolejności ich dodania. Do przechowywania informacji o zamówieniach możemy wybrać statyczną tablicę statyczną , w której liczba przechowywanych elementów jest ograniczona, lub listę dynamiczną, do której w razie potrzeby można dodawać nowe elementy. (Zobacz e‑materiał: Dynamiczne struktury danychDynamiczne struktury danych.)
Myślenie rekurencyjne
Myślenie rekurencyjneMyślenie rekurencyjne to proces, w którym problem jest rozwiązywany za pomocą rekurencjirekurencji. Zazwyczaj polega to na dzieleniu problemu głównego na mniejsze problemy (np. zawierające mniejszą liczbę danych), o takiej samej naturze jak problem główny.
Przykłady problemów rekurencyjnych rozwiązywanych w informatyce to (oprócz wymienionych już wyżej) m.in.: obliczanie wartości wielomianu przy użyciu schematu Hornera, obliczanie potęgi, szukanie największego wspólnego dzielnika.
Z kolei w matematyce, fizyce, chemii i biologii często spotykamy równania rekurencyjne, np.:
definiujące ciągi (zob. Ciąg określony rekurencyjnieCiąg określony rekurencyjnie),
opisujące ruch jednostajnie przyśpieszony (zob. Zależność położenia ciała od czasu w ruchu jednostajnie przyspieszonymZależność położenia ciała od czasu w ruchu jednostajnie przyspieszonym),
wyznaczające czas połowicznego rozpadu (zob. Jak definiujemy pojęcie czasu połowicznego zaniku?Jak definiujemy pojęcie czasu połowicznego zaniku?),
określające tempo rozmnażania się bakterii (zob . BakterieBakterie).
Słownik
proces myślowy polegający na rozwiązywaniu problemu przy użyciu metod i narzędzi informatycznych; opiera się na rozłożeniu problemu na części, rozpoznaniu w nim schematów i prawidłowości, abstrahowaniu i finalnie utworzeniu algorytmu
metoda myślenia komputacyjnego; polega na sformułowaniu problemu w taki sposób, aby do jego rozwiązania można było wykorzystać rekurencję
sposoby i reguły postępowania wykorzystywane podczas rozwiązywania skomplikowanych problemów, np. takich, dla których trudno znaleźć optymalne rozwiązanie za pomocą algorytmów i komputera; narzędziami heurystyki są twórcze myślenie i kombinacje logiczne, których celem jest odnajdywanie nowych faktów i łączących ich relacji
technika programowania polegająca na odwoływaniu się procedur lub funkcji do samych siebie, aż do momentu spełnienia warunku podstawowego