Laboratorium 4 (ZIP): Podstawy programowania
1 Wstęp
Kolejne laboratorium ma zapoznać studentów z podstawowymi konstrukcjami programistycznymi (w najwęższym możliwym zakresie).
1.1 Cel laboratorium
Celem zajęć jest napisanie programu, który przeprowadza „ludka” z punktu w którym stoi do wyjścia.
1.2 Wymagania
Nie dotyczy.
1.3 Pytania
Nie dotyczy.
2 Struktura laboratorium
Zajęcia prowadzone indywidualnie.
3 Zadania do wykonania
3.1 Rozwiązanie labiryntu
Najprostszy algorytm typu: „idź do przodu, obróć się w prawo, idź do przodu, idź do przodu…” działający tylko i wyłącznie w jednej konfiguracji jest minimalnym dopuszczalnym (3) wynikiem zajęć.
Można sformułować warunki (najlepiej najpierw na papierze, a później w formie programu blockly) pozwalające rozpoznać każdą z sytuacji opisanych w rozdziale 4.1.1 oraz zaprogramować odpowiednie działania w każdym przypadku… Będzie to podwyższać ocenę.
Można, wreszcie, sprawdzić czy opracowane fragmenty programu działają (podprowadzając najpierw ludka do zakrętu, skrzyżowania czy ślepego zaułka i zobaczyć jaki jest efekt zaplanowanego działania.
Studenci jednak powinni starać się napisać wersję nieco bardziej ambitną… Gdy się nie uda — oddają wersję najprostszą z opisem podjętych działań i analizą co nie wyszło i czemu. Sprawozdania powinny być przygotowane jako (porządne) pliki w programie Word. Można w nich załączać zrzuty ekranu z opisem poszczególnych faz pracy.
4 Materiały pomocnicze
4.1 Algorytm rozwiązania zadania
Jest bardzo wiele sposobów mogących prowadzić do przeprowadzenia ludka przez labirynt niezależnie od punktu wejścia i wyjścia z labiryntu. Poniżej podam kilka z nich.
4.1.1 Błądzenie losowe
Każemy ludkowi iść w dowolnym kierunku. Gdy dojdzie do skrzyżowania podejmuje losową decyzję w którą stronę się obrócić i idzie dalej. Po dojściu do zaułka bez wyjścia — obraca się, wraca do skrzyżowania i ponownie losowo wybiera kierunek.
Ewentualne problemy:
- Jak rozpoznać, że ludek jest na skrzyżowaniu?
- Jak rozpoznać zakręt?
- Jak rozpoznać zaułek bez wyjścia?
Dla każdego z tych przypadków trzeba opracować algorytm działania:
- Co zrobić gdy jesteśmy na skrzyżowaniu?
- Co zrobić na zakręcie?
- Jak zachować się w zaułku bez wyjścia?
4.1.2 Reguła lewej (prawej) ręki
Inny sposób postępowania to wędrówka z lewą (prawą) ręką przy ścianie. Ludek idzie tak, aby zawsze lewą (prawą) ręką dotykać ściany. Tak też wykonuje wszystkie obroty: gdy ściana jest przed nim dokonuje obrotu w prawo (lewo).
Generalnie algorytm może składać się z dwu głównych czynności:
- Jeżeli jest ściana przed nosem — obracamy się w prawo.
- Jeśli jest ściana po lewej — idzie do przodu.
4.2 Środowisko blockly
4.2.1 W laboratorium
Korzystanie ze środowiska blockly jest dosyć proste. Trzeba uruchomić przeglądarkę firefox i przejść do adresu https://blockly-games.appspot.com/. Proponuję zabawę rozpocząć od zadania Puzzle. Celem jego jest zapoznanie się ze sposobami manipulowania blokami. (jest to dosyć proste — należy chwycić bloczek myszą i przenieś w odpowiednie miejsce; wypustki i miejsce gdzie mogą być przyczepione podświetlają się, gdy zbliżymy bloki). Zadanie polega na powiązaniu obrazka z nazwą i cechami charakterystycznymi zwierzęcia. Miłej zabawy!
Kolejnym zadaniem jest przejście labiryntu. Zadanie składa się z szeregu etapów.
Wchodzimy na stronę przedstawiającą „obszar roboczy”:
Po lewej stronie jest widok na labirynt, na szarym pasku znajdują się dostępne narzędzia. Mogą się pojawiać komunikaty informujące o ty co należy zrobić. Może być też informacja mówiąca za pomocą ilu bloczków należy zadanie wykonać.
Potrzebny blok wskazujemy, „chwytamy” i za pomocą myszy przeciągamy na obszar roboczy (po prawej stronie). Bloki można łączyć (stykając je ze sobą) — zwracając uwagę, żeby „wypustki” trafiały w odpowiednie „wgłębienia”. Pojedyncze bloki (lub grupy bloków) można wkładać do „wnętrza” innych poleceń.
Gdy mamy kilka bloków możne je przenosić chwytając za blok znajdujący się na samym szczycie. Chwycenie za inny blok powoduje rozczepienie grupy bloków.
Niepotrzebne bloki lub fragmenty programu usuwamy przenosząc je do kosza ().
Program uruchamiamy naciskając klawisz „Uruchom Program”.
4.3 Elementarne operacje
W wariancie języka blockly użytym do sterowania ludzikiem dostępne są dwie podstawowe operacje, które może wykonywać ludzik. Są to:
- Idź do przodu
- Obróć się (w lewo, w prawo):
4.4 Operacje logiczne i sterujące
Blockly w wersji obsługującej algorytmy wyposażony jest w elementarny zestaw operacji sterujących:
Najważniejsza z nich to Powtarzaj (pierwsza na poprzednim obrazku). Zapewnia ona nieprzerwany ruch robocika, który kończy się po osiągnięciu wyjścia (lub wypadnięciu z trasy).
Następna to operacja warunkowa („jeżeli ścieżka prowadzi prosto” to wykonaj…) i jej wariant jeżeli ścieżka prowadzi prosto to wykonaj … w przeciwnym razie wykonaj … (coś innego). Rodzaj sprawdzanego warunku można przełączać wybierając odpowiednie pole na bloczku:
Z tych bloczków należy zbudować algorytm przejścia zadanego labiryntu. Ogólna metoda rozwiązywania labiryntu to „reguła lewej ręki”: należy tak poruszać się po labiryncie, żeby ściana zawsze była po lewej stronie. Dodatkowym ograniczeniem jest to, że program w blockly musi składać się z co najwyżej 10 bloków.