piątek, 8 kwietnia 2016

Trudne pojęcia z polskiego na… polski, cz. 3

W codziennym życiu bardzo często podejmujemy działania uzależnione od zaistniałych sytuacji. Podobnie tworząc projekt np. w środowisku Scratch, korzystamy z narzędzi pozwalających wykonywać różne kroki programu, zależne od ustalonych warunków. Jest to jedna z podstawowych właściwości działania programów – gdyby nie można było podejmować działań zależnych od wcześniej zdefiniowanych kryteriów, programowanie nie miałoby sensu.
„Jeżeli…”
Pętli Jeżeli używamy wtedy, gdy potrzebujemy przewidzieć sytuację, która zmusi skrypt do podjęcia działań wynikających z zaistnienia jakiegoś zdarzenia. Nie można np. nakazać dziecku pójść do sklepu, nie przewidując, co zrobi, gdy spotka po drodze koleżankę. Mówimy zatem: „Idź po zakupy. Jeżeli spotkasz koleżankę – porozmawiaj z nią przez chwilę, ale potem idź dalej”.



Najprostszym przykładem obrazującym zastosowanie takiej instrukcji jest schemat wyjścia na spacer. Może on mieć postać następującego ciągu: Załóż buty -> jeżeli pada deszcz – weź parasol -> wyjdź z domu.
Jeżeli pada deszcz, to weź parasol.

Warto zauważyć, że prosta instrukcja warunkowa nie stwarza pełnej alternatywy dla podejmowanych działań. W przedstawionym przykładzie sprawa jest jasna: bez względu na sytuację idziemy na spacer. Sprawdzamy jedynie, czy pada deszcz i dostosowujemy do tego swoje działania.
Inne przykłady:
  • Jedziemy na wycieczkę rowerową. Jeżeli po drodze spadnie łańcuch w rowerze - naprawiamy go i jedziemy dalej.
  • Obliczamy wartość wyrażenia arytmetycznego. Jeżeli nie wiemy, ile jest 2 razy 2 - używamy kalkulatora, wynik wpisujemy do wyrażenia i liczymy dalej.

„Jeżeli… w przeciwnym wypadku…”



Drugim typem instrukcji warunkowej jest stworzenie alternatywy, pozwalającej na podjęcie działań zależnych od okoliczności. Przykładem może być sytuacja na przejściu dla pieszych – określenie, kiedy możemy przejść przez jezdnię:
Jeżeli świeci się światło zielone – przejdź, dziecię, na drugą jezdni stronę, w przeciwnym przypadku – czekaj na zmianę świateł, bratku.

Inne przykłady:
  • Jeżeli podoba Ci się film – oglądaj, w przeciwnym razie – zmień kanał.
  • Jeżeli bateria telefonu/tabletu jest naładowana – pracuj, w przeciwnym razie – podłącz ładowarkę.
  • Jeżeli masz średnią powyżej 4,75  - dostaniesz świadectwo z paskiem, w przeciwnym razie – dostaniesz paskiem.
  • Jeżeli skarpetki są brudne – wrzuć je do pralki, w przeciwnym razie – załóż je.
Pętle (iteracje)
Stosowanie pętli w algorytmach pozwala na uproszczenie skryptu poprzez określenie ilości powtórzeń danego fragmentu (ciągu poleceń). Najczęściej stosowane są dwa typy pętli: pętla licznikowa i pętla warunkowa.
Pętla licznikowa (iteracja ograniczona) określa wprost ilość powtórzeń danej czynności. Na przykład  – jeśli wsypujemy do szklanki herbaty trzy łyżeczki cukru, zamiast mówić „wsyp łyżeczkę cukru, wsyp łyżeczkę cukru, wsyp łyżeczkę cukru”, możemy polecić: „Powtórz 3 razy tę samą czynność: wsyp łyżeczkę cukru”.
Powtórz 3 razy: wsyp łyżeczkę cukru

Inne przykłady:
  • Zegar wybijający południe - powtórz 12 razy: uderzenie.
  • Rzuty osobiste w koszykówce - powtórz 1, 2 lub 3 razy: ustaw zawodników, weź piłkę, rzuć do kosza.
  • Pierwsza pomoc - powtórz 30 razy: ucisk; powtórz 2 razy: wdech.
  • Na kolację przygotuj pięć naleśników - powtórz 5 razy: upiecz naleśnik.
  • Moje mieszkanie jest na czwartym piętrze (niestety w kamienicy nie ma windy). Aby dostać się do domu, muszę powtórzyć 4 razy: wejdź jedną kondygnację wyżej.

Drugi typ pętli – pętla warunkowa (iteracja nieograniczona) - wymusza powtarzanie określonej czynności tak długo, aż stanie się to, co pozwoli na przejście do następnego działania. Przykładem może być marsz do przodu tak długo, aż dojdziemy do celu:
Powtarzaj aż dojdziesz do celu: idź przed siebie

Inne przykłady:
  • Podobnie możemy zmodyfikować polecenie wchodzenia na czwarte piętro - powtarzaj aż dojdziesz na 4 piętro: wejdź jedną kondygnację wyżej.
  • Kiedy chcesz dodzwonić się do kogoś, a linia jest zajęta – powtarzaj aż linia będzie wolna.
Przy okazji tego ostatniego przykładu warto wspomnieć o tym, że dość często pojawia się konieczność zagnieżdżania poleceń, szczególnie w odniesieniu do nakładających się warunków. W tym przypadku mamy do czynienia z taką właśnie sytuacją: „Jeżeli linia jest zajęta (warunek prosty)-> powtarzaj aż linia będzie wolna… (pętla warunkowa)”.
Innym działaniem wymagającym spełnienia określonego warunku jest wstrzymanie wszelkich działań do momentu, aż zostanie zrealizowana dana czynność. Stosujemy tutaj polecenie czekaj aż… Znowu możemy się odwołać do przykładu próby rozmowy telefonicznej:
Wybierz numer -> czekaj aż rozmówca odbierze telefon
Zmienne
Zmienna to obiekt w programowaniu, przechowujący różnego rodzaju dane, niezbędne do działania programu. W uproszczeniu można przyjąć, że jest to coś w rodzaju pojemnika, pozwalającego na przechowywanie różnych danych oraz na manipulowanie nimi w sposób dowolny. Zmienna - jak wskazuje nazwa - podczas działania programu może zmieniać swoje wartości. Tworząc zmienną, nadajemy jej nazwę, która:
  • powinna być jednym ciągiem znaków bez spacji;
  • nie powinna zaczynać się od cyfry;
  • nie powinna zawierać polskich liter takich jak ą, ę itp.;
  • powinna kojarzyć się z przeznaczeniem tej zmiennej.
Wprowadzenie pojęcia zmiennej zwykle przysparza znacznych problemów w tłumaczeniu jej istoty. Warto zatem dobrze przemyśleć przykłady, których można użyć w tym celu. Zwykle – nawiązując do sytuacji życiowych – najlepiej sprawdzają się trzy przykłady:
  • Konto bankowe - każdy, kto tylko potrzebuje, może założyć sobie dowolną ilość kont bankowych. W momencie, kiedy zaistnieje taka konieczność, można skorzystać z tego konta. Na koncie można dokonywać dowolnych operacji np.: systematycznie zwiększać stan konta poprzez wpłacanie określonej kwoty (choćby 1 zł), na początku wpłacić jakąś kwotę i systematycznie wypłacać pieniądze w równych odstępach czasu czy jednorazowo wypłacić określoną kwotę.
  • Pudełko albo szuflada - zmienna to szuflada, która początkowo jest pusta. Jeśli cokolwiek do niej włożę, będzie się tam znajdowało. Jeżeli będę chciał sprawdzić, co w niej jest, w każdej chwili mogę tam zajrzeć. Zawsze mogę zmienić zawartość szuflady: coś do niej dołożyć lub coś z niej zabrać.
  • Punktacja w grach komputerowych - dzieci zwykle mają doświadczenie w grach, gdzie zdobywają punkty za wykonanie zadań i gdzie tracą punkty, kiedy odnoszą porażki; zyskują dodatkowe „życia" i są ich pozbawiane.
Lista (tablica)
Czasami potrzebna jest większa liczba zmiennych np. stworzenie spisu uczniów. Ile zmiennych stworzyć? Co należałoby zrobić, gdy pojawi się potrzeba dopisania kilku kolejnych osób? W takiej sytuacji przydatną okaże się inna odmiana zmiennych, a właściwie elastyczny ich zbiór – lista, częściej nazywana tablicą, która daje możliwość przechowywania wielu zmiennych (program Scratch nie wymaga wcześniejszego określenia wielkości listy). Korzystając z poprzednich porównań: odpowiednikiem listy będzie szafa z wieloma szufladami lub bank z wieloma kontami.
Klonowanie (różnica między klonowaniem a stemplowaniem)
Stempel, jak sama nazwa wskazuje, jest odbiciem obrazu duszka na scenie. Nie stanowi – w odróżnieniu od klona – samoistnego bytu. Nie ma możliwości wykonywania żadnych poleceń, nie działają na niego żadne skrypty, może być jedynie śladem duszka. Klon natomiast jest całkowicie samodzielną instancją, która może żyć swoim życiem.
Dla klona budujemy odrębne skrypty. Dzięki nim może funkcjonować jako całkowicie odrębny duszek, który bierze udział w realizacji programu.
Aby dobrze wytłumaczyć różnicę pomiędzy tymi dwoma pojęciami, możemy wykorzystać szablon jakiejś postaci lub rzeczy, wycięty z brystolu (np. choinkę). Prosząc dzieci o  odrysowanie go na kartce papieru, wskazujemy, że poza umieszczeniem w ściśle określonym miejscu nie możemy zrobić nic więcej. Każde dorysowanie dowolnej ozdoby (np. bombki) będzie równoznaczne ze stworzeniem nowego, innego duszka umiejscowionego na obrazie.
Inaczej wygląda sytuacja, gdy na podstawie szablonu wytniemy drugi jego egzemplarz. Wówczas w dowolny sposób możemy nim manewrować: kłaść go na kartce w dowolnym miejscu, przesuwać, usuwać, a nawet na jego podstawie stworzyć kolejną postać. Wszystkie te postaci są klonami szablonu macierzystego (bazowego).
Własne bloki
Tworzenie własnych bloków ma na celu uproszczenie długich skryptów w sytuacji, kiedy ta sama sekwencja bloczków powtarza się wielokrotnie. Dzięki zastosowaniu odwołania do definicji takiego bloku (analogicznie do podprogramu, procedury, funkcji – nazewnictwo stosowane w różnych językach programowania) możemy znacznie uprościć i zwiększyć przejrzystość skryptu.
Tłumacząc uczniom, na czym polega tworzenie programu, bardzo często stosujemy metodę poruszania się po kwadracie przez samego ucznia, któremu po kolei inni uczniowie wydają polecenia: „Zrób 10 kroków -> obróć się w prawo o 90 stopni -> Zrób 10 kroków ->obróć się w prawo o 90 stopni -> Zrób 10 kroków -> obróć się w prawo o 90 stopni -> Zrób 10 kroków -> obróć się w prawo o 90 stopni”. Dzięki takiemu działaniu wprowadzamy pojęcie programu, jako ciągu kolejno wykonywanych poleceń, które mają na celu osiągnięcie konkretnego efektu.
W kolejnym etapie, pokazując wykorzystanie pętli licznikowej, odwołujemy się do powyższego doświadczenia, zmieniając nieco ciąg poleceń. Po co mianowicie powtarzać wielokrotnie te same polecenia, skoro można uprościć ich ciąg, mówiąc: „Powtórz 4 razy: Zrób 10 kroków ->obróć się w prawo o 90 stopni” ?
Kiedy natomiast chcemy pokazać, jak działają własne bloki, możemy zapisać powyższy ciąg (skrypt) po prostu na kartce zatytułowanej „Narysuj kwadrat” (tworząc w ten sposób definicję nowego bloku) a następnie poprosić ucznia, aby wykonał polecenie „Narysuj kwadrat”, realizując polecenia, które odczytuje z kartki pod takim tytułem.

autorzy: Michał Demski, Mirek Kelniarz, Wiesława Bednarska, Lidia Aparta






Share:

0 komentarze:

Prześlij komentarz