R1R6Pf005N5TY1
Źródło: World Economic Forum, dostępny w internecie: flickr.com [dostęp 16.09.2022], licencja: CC BY-SA 2.0.

Termin myślenie komputacyjnemyś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?P127HO61bJak 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.

Wskazówka

Rozwiązując jeden problem, możemy korzystać z wielu metod myślenia komputacyjnego.

Podejście heurystyczne

Podejście heurystycznemetody 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:

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?PKi3eZqBBJak 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 życiowychPt98YzIXcObję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 IDhY31MIkBazy 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‑1n‑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.

Ważne!

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 GISP1DnEo6bWTworzenie 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 danychDCj8TAHvdDynamiczne struktury danych.)

Myślenie rekurencyjne

Myślenie rekurencyjnemyślenie rekurencyjneMyślenie rekurencyjne to proces, w którym problem jest rozwiązywany za pomocą rekurencjirekurencjarekurencji. 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.:

Słownik

myślenie komputacyjne
myślenie komputacyjne

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

myślenie rekurencyjne
myślenie rekurencyjne

metoda myślenia komputacyjnego; polega na sformułowaniu problemu w taki sposób, aby do jego rozwiązania można było wykorzystać rekurencję

metody heurystyczne
metody heurystyczne

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

rekurencja
rekurencja

technika programowania polegająca na odwoływaniu się procedur lub funkcji do samych siebie, aż do momentu spełnienia warunku podstawowego