R1SNCDnUer0E3
Rysunek przedstawia ręce człowieka sprawdzającego listę zadań do wykonania.

Operacje na listach w Scratch: tworzenie i sortowanie listy, minimum i maksimum

Źródło: Videoplasty.com, licencja: CC BY-SA 4.0. Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0.
bg‑gray4

Treści zawarte w tym e‑materiale wykraczają poza podstawę programową dla klas IV - VI. Jeśli jednak:

  • interesujesz się informatyką i programowaniem,

  • chcesz poszerzyć swoją wiedzę na temat struktur danych,

  • poznać algorytmy pozwalające na znalezienie elementu najmniejszego lub największego,

zachęcamy Cię do zapoznania się z tym e‑materiałem.

Listy - co to takiego?

Często zachodzi potrzeba przechowania większej liczby danych. Niewygodne staje się wówczas pamiętanie ich na pojedynczych zmiennych, szczególnie gdy pełnią podobny charakter. Lepiej pamiętać je pod jedną nazwą, a wszystkie dane ponumerować zaczynając od 1. Dostęp do pojedynczego elementu możliwy jest wtedy za pośrednictwem indeksu (numeru elementu). W Scratchu służą do tego listy.

Przykład
Przykład

Rzucamy wielokrotnie sześcienną kostką do gry. Chcemy policzyć, ile razy wypadły poszczególne liczby oczek. Można utworzyć sześć zmiennych odpowiednio do przechowywania liczby wystąpień jednego oczka, dwóch oczek, itd. Lepiej jednak utworzyć sześcioelementową listę. Liczba oczek będzie w takim przypadku indeksem (numerem elementu). Symbolicznie indeks będziemy podawać w nawiasach kwadratowych. Np. jeśli stworzymy listę o nazwie: Wyniki, wtedy oznaczenie np. Wyniki[2] - oznaczać będzie drugi element listy, czyli informację ile razy wypadły dwa oczka.

Listę, podobnie jak pojedynczą zmienną, można utworzyć w kategorii Zmienne. Należy kliknąć w przycisk Stwórz listę, w polu edycyjnym wpisać nazwę nowotworzonej listy (można także wybrać, czy będzie dostępna dla wszystkich duszków, czy tylko jednego) i zatwierdzić przyciskiem OK.

Polecenie 1

Utwórz listę o nazwie Wyniki.

R1cEIGZcmMfPV

Po utworzeniu listy w kategorii Dane pojawią się nowe klocki umożliwiające operacje na liście. Dostępne opcje możesz podejrzeć na poniższej ilustracji.

R15eicq2iid8L
Wersja alternatywna: Zrzut ekranu przedstawia fragment okna do zarządzania blokami w Scratch. Ekran jest podzielony na dwie główne sekcje: wybór kategorii bloków oraz samą sekcję bloków. Po lewej stronie widoczna jest lista dostępnych kategorii bloków, z których wybrana jest opcja Zmienne. Po prawej stronie umieszczone są dostępne bloki, które zostały stworzone w kontekście listy. W górnej części prawego obszaru znajduje się przycisk Stwórz listę do tworzenia nowych list. Niżej wyróżnione są dostępne listy z polem wyboru ich widoczności na scenie. Poniżej list widoczne są bloki służące do zarządzania listami, gdzie dostępnych jest jedenaście opcji. 1. Nazwa listy Blok reprezentujący listę z podaną nazwą i polem do zaznaczania widoczności listy na scenie., 2. Dodaj () do () Dodaje nowy element na koniec listy., 3. Usuń () z () Usuwa element od podanym indeksie z wybranej listy i zmniejsza indeks kolejnych elementów o 1., 4. Usuń wszystko z () Usuwa wszystkie elementy z listy., 5. Wstaw () na () pozycji z () Dodaje element na wybraną pozycję (indeks) i zwiększa indeks kolejnych elementów na liście., 6. Zamień () z () na () Podmienia element na wybranej liście na inny element., 7. Element () z () Zwraca wartość podanego elementu z wybranej listy., 8. Pozycja () na liście () Zwraca indeks podanego elementu z wybranej listy., 9. Długość () Przechowuje informacje o liczbie elementów w wybranej liście., 10. () zawiera () ? Zwraca wartość prawda lub fałsz w zależności, czy wybrana lista zawiera podany element., 11. Pokaż listę () Wyświetla wybraną listę na scenie aplikacji., 12. Ukryj listę () Ukrywa wybraną listę na scenie aplikacji.
Bloki dostępne po utworzeniu listy
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Zrzut ekranu przedstawia fragment okna do zarządzania blokami w Scratch. Ekran jest podzielony na dwie główne sekcje: wybór kategorii bloków oraz samą sekcję bloków. Po lewej stronie widoczna jest lista dostępnych kategorii bloków, z których wybrana jest opcja „Zmienne”. Po prawej stronie umieszczone są dostępne bloki, które zostały stworzone w kontekście listy. W górnej części prawego obszaru znajduje się przycisk „Stwórz listę” do tworzenia nowych list. Niżej wyróżnione są dostępne listy z polem wyboru ich widoczności na scenie. Poniżej list widoczne są bloki służące do zarządzania listami, gdzie dostępnych jest 11 opcji.

Listą możesz także zarządzać z poziomu sceny Scratch. Zapoznaj się z poniższą ilustracją interaktywną, aby zrozumieć działanie poszczególnych funkcji.

R126B2PeQY8RV
Wersja alternatywna: Zrzut ekranu przedstawiający tabelę „Wyniki ”. Na pierwszym miejscu znajduje się wartość 1, na drugim wartość 2. Zaznaczone są elementy - nazwa listy „Wyniki” - jest to unikalna etykieta, która identyfikuje i umożliwia operacje na danym zbiorze danych. Dzięki niej możemy manipulować elementami listy w programie. 1. Nazwa listy Jest to unikalna etykieta (nazwa), która identyfikuje i umożliwia operacje na danym zbiorze danych. Dzięki niej możemy manipulować elementami listy w programie., 2. Indeks elementu Numer pozycji, na której znajduje się dany element w liście. Indeksy w środowisku Scratch zaczynają się od 1, więc pierwszy element listy ma indeks 1, drugi element ma indeks 2 i tak dalej. Dzięki indeksom możemy jednoznacznie zidentyfikować i manipulować poszczególnymi elementami w liście., 3. Element listy Wartość lub dane, które są przechowywane wewnątrz listy. Może to być liczba, tekst lub inny typ danych, a każdy element ma przypisaną swoją pozycję w liście, zwaną indeksem., 4. Przycisk X Po jego kliknięciu wskazany element na liście zostanie usunięty i indeksy pozostałych elementów zostaną dostosowane do nowej długości listy., 5. Przycisk + Umożliwia wstawienie nowego elementu na końcu listy., 6. Długość tablicy Oznacza liczbę elementów znajdujących się w danej liście., 7. Znak = Po najechaniu na niego kursorem myszy zmieni się ikona kursora i możliwe będzie dostosowanie wielkości okna listy na scenie w Scratch.
Obiekt Lista w środowisku Scratch
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Zrzut ekranu przedstawiający tabelę Wyniki. Na pierwszym miejscu znajduje się wartość 1, na drugim wartość 2. Zaznaczone są elementy - Nazwa listy „Wyniki” - Jest to unikalna etykieta, która identyfikuje i umożliwia operacje na danym zbiorze danych. Dzięki niej możemy manipulować elementami listy w programie.

Okno tworzenia nowej listy
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Lista może być widoczna na scenie lub ukryta. Widoczność można zmieniać edycyjnie zaznaczając/odznaczając znacznik przy liście

R8Ieq14gGnK9V

lub programowo, przy pomocy klocków:

Obszar do zmiany widoczności listy na scenie aplikacji Scratch
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Po utworzeniu listy w kategorii Dane pojawią się nowe klocki umożliwiające operacje na liście. Dostępne opcje możesz podejrzeć na poniższej ilustracji.

R15eicq2iid8L
Wersja alternatywna: Zrzut ekranu przedstawia fragment okna do zarządzania blokami w Scratch. Ekran jest podzielony na dwie główne sekcje: wybór kategorii bloków oraz samą sekcję bloków. Po lewej stronie widoczna jest lista dostępnych kategorii bloków, z których wybrana jest opcja Zmienne. Po prawej stronie umieszczone są dostępne bloki, które zostały stworzone w kontekście listy. W górnej części prawego obszaru znajduje się przycisk Stwórz listę do tworzenia nowych list. Niżej wyróżnione są dostępne listy z polem wyboru ich widoczności na scenie. Poniżej list widoczne są bloki służące do zarządzania listami, gdzie dostępnych jest jedenaście opcji. 1. Nazwa listy Blok reprezentujący listę z podaną nazwą i polem do zaznaczania widoczności listy na scenie., 2. Dodaj () do () Dodaje nowy element na koniec listy., 3. Usuń () z () Usuwa element od podanym indeksie z wybranej listy i zmniejsza indeks kolejnych elementów o 1., 4. Usuń wszystko z () Usuwa wszystkie elementy z listy., 5. Wstaw () na () pozycji z () Dodaje element na wybraną pozycję (indeks) i zwiększa indeks kolejnych elementów na liście., 6. Zamień () z () na () Podmienia element na wybranej liście na inny element., 7. Element () z () Zwraca wartość podanego elementu z wybranej listy., 8. Pozycja () na liście () Zwraca indeks podanego elementu z wybranej listy., 9. Długość () Przechowuje informacje o liczbie elementów w wybranej liście., 10. () zawiera () ? Zwraca wartość prawda lub fałsz w zależności, czy wybrana lista zawiera podany element., 11. Pokaż listę () Wyświetla wybraną listę na scenie aplikacji., 12. Ukryj listę () Ukrywa wybraną listę na scenie aplikacji.
Bloki dostępne po utworzeniu listy
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Zrzut ekranu przedstawia fragment okna do zarządzania blokami w Scratch. Ekran jest podzielony na dwie główne sekcje: wybór kategorii bloków oraz samą sekcję bloków. Po lewej stronie widoczna jest lista dostępnych kategorii bloków, z których wybrana jest opcja „Zmienne”. Po prawej stronie umieszczone są dostępne bloki, które zostały stworzone w kontekście listy. W górnej części prawego obszaru znajduje się przycisk „Stwórz listę” do tworzenia nowych list. Niżej wyróżnione są dostępne listy z polem wyboru ich widoczności na scenie. Poniżej list widoczne są bloki służące do zarządzania listami, gdzie dostępnych jest 11 opcji.

Listą możesz także zarządzać z poziomu sceny Scratch. Zapoznaj się z poniższą ilustracją interaktywną, aby zrozumieć działanie poszczególnych funkcji.

RBFTMbD3EdMjr
Wersja alternatywna: 1. Nazwa listy Jest to unikalna etykieta (nazwa), za pomocą której, rozpoznajemy dany zbiór danych. Wykorzystując tą nazwę możemy manipulować elementami listy w programie., 2. Indeks elementu Numer pozycji, na której znajduje się dany element w liście. Indeksy w Scratchu zaczynają się od 1, więc pierwszy element listy ma indeks 1, drugi element ma indeks 2, i tak dalej. Dzięki indeksom możemy jednoznacznie rozpoznać elementy i działać na poszczególnych elementach w liście., 3. Element listy Wartość lub dana, która jest przechowywana wewnątrz listy. Może to być liczba, tekst lub inny typ danych. Każdy element ma przypisaną swoją pozycję (numer) w liście, zwaną indeksem., 4. Przycisk X Po jego kliknięciu wskazany element na liście zostanie usunięty i indeksy pozostałych elementów zostaną dostosowane do nowej długości listy., 5. Przycisk + Umożliwia wstawienie nowego elementu na końcu listy., 6. Długość tablicy Oznacza ilość elementów znajdujących się w danej liście., 7. Znak = Po najechaniu na niego kursorem myszy, zmieni się ikona kursora i możliwe będzie dostosowanie wielkości okna listy na scenie w Scratch.
Obiekt "Lista" w Scratch.
Źródło: GroMar, licencja: CC BY 3.0.

Zrzut ekranu przedstawiający tabelę Wyniki. Na pierwszym miejscu znajduje się wartość 1, na drugim wartość 2. Zaznaczone są elementy: - Nazwa listy „Wyniki” - Jest to unikalna nazwa, dzięki której rozpoznajemy dany zbiór danych. Wykorzystując tą nazwę możemy manipulować elementami listy w programie. Indeks elementu. Jest to numer pozycji, na której znajduje się dany element w liście. Indeksy w Scratchu zaczynają się od 1, więc pierwszy element listy ma indeks 1, drugi element ma indeks 2, i tak dalej. Dzięki indeksom możemy jednoznacznie rozpoznać elementy i działać na poszczególnych elementach w liście. Element listy. jest to wartość lub dana, która jest przechowywana wewnątrz listy. Może to być liczba, tekst lub inny typ danych. Każdy element ma przypisaną swoją pozycję (numer) w liście, zwaną indeksem. Przycisk X. Po jego kliknięciu wskazany element na liście zostanie usunięty i indeksy pozostałych elementów zostaną dostosowane do nowej długości listy. Przycisk +. Umożliwia wstawienie nowego elementu na końcu listy. Długość tablicy. Oznacza ilość elementów znajdujących się w danej liście.

Jeżeli elementami listy mają być liczby, możesz wprowadzić je do listy na różne sposoby. Jednym z nich jest wylosowanie liczby z określonego zakresu za pomocą bloku losuj liczbę od ... do ..., a następnie dodanie wylosowanej liczby do listy, tak jak na poniższym zrzucie ekranu.

R1NhMF3UIBtP0

Innym sposobem jest zapytanie użytkownika skryptu, jaką liczbę chce wprowadzić do listy, a następnie dodanie podanej odpowiedzi do listy.

RzNn2uALSgeyP
Przykładowy skrypt na dodanie podanej przez użytkownika liczby do listy
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Istnieje wiele sposobów, aby dodać liczbę do listy w Scratch, a te przedstawione są tylko częścią z nich. Wybierz ten, który najlepiej odpowiada twoim potrzebom.

Ważne!

Dobrą praktyką jest usuwanie wszystkich elementów listy na początku skryptu. Unikniesz wtedy pozostałości po poprzednich uruchomieniach skryptu, które mogłyby wywołać niepożądane efekty.

Lista może być widoczna na scenie lub ukryta. Widoczność można zmieniać edycyjnie zaznaczając/odznaczając znacznik przy liście

R8Ieq14gGnK9V
Obszar do zmiany widoczności listy na scenie aplikacji Scratch
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

lub programowo, przy pomocy klocków:

Przykładowy skrypt na dodanie losowej liczby z przedziału <1, 10> do listy
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Innym sposobem jest zapytanie użytkownika skryptu, jaką liczbę chce wprowadzić do listy, a następnie dodanie podanej odpowiedzi do listy.

RzNn2uALSgeyP
Przykładowy skrypt na dodanie podanej przez użytkownika liczby do listy
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!

Dobrą praktyką jest usuwanie wszystkich elementów listy na początku skryptu. Unikniesz wtedy pozostałości po poprzednich uruchomieniach skryptu, które mogłyby wywołać niepożądane efekty.

Ćwiczenie 1

Napisz skrypt, w którym duszek 100 razy rzuci kostką (wylosuje liczbę od 1 do 6) i  policzy, ile razy wypadła dana liczba oczek.

R15m5o3gh3dQZ
Scena z przykładową symulacją skryptu wykorzystującego listę
Źródło: GroMar Sp. z o.o., licencja: CC BY 3.0.
R2cIKTlTTqzjH
Ćwiczenie 1
Uporządkuj etapy tworzenia listy.
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Ćwiczenie 2

Przygotuj aplikację, w której losowana jest lista liczb. Następnie niech duszek poprosi o podanie liczby i sprawdzi, czy ona występuje na liście.

RZBqnDLs7QXn0
Ćwiczenie 2
Użytkownik ma za zadanie przygotować aplikację, w której losowana jest lista liczb. Następnie duszek prosi o podanie liczby i sprawdza, czy występuje ona na liście. Wstaw w tekst uzupełnienia kodu.
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Wykorzystaj poniższe pole na zapisanie swoich notatek i przemyśleń.

RjqkjgO9biQil
Dzienniczek, w którym możesz zapisać swoje notatki i przemyślenia.
Dzienniczek, w którym możesz zapisać swoje notatki i przemyślenia.
Źródło: GroMar, licencja: CC BY 3.0.