Hashe Prowadzący: Łukasz Dunaj, strona kółka: atinea.pl/kolko Hash jest strukturą danych, która przechowuje pary oraz umożliwia dostęp do wartości poprzez podanie klucza. var h = {; stworzenie pustego hasha var h = {Ala => 1, Bartek => 11; stworzenie hasha o kluczach 'Ala' i 'Bartek' oraz odpowiadającym im wartościom 1 i 11. Przegląd funkcji bibliotecznych dla hasha: hash::get_value(hash, klucz) - zwraca wartość przechowywaną w hashu dla klucza hash::has_key(hash, klucz) - sprawdza, czy dany hash zawiera podany klucz hash::set_value(ref hash, klucz, wartosc) - dodaje do istniejącego hasha klucz o podanej wartości hash::delete(ref hash, klucz) - usuwa z hasha klucz hash::size(hash) - zwraca rozmiar, czyli ilość kluczy w hashu hash::keys(hash) - zwraca tablicę zawierająca wszystkie klucze z hasha Aby przeglądnąć wszystkie klucze i wartości z hasha możemy użyć przeglądać kolejno wartości dla kluczy zwróconych przez hash::keys(hash) lub użyć konstrukcji: forh var klucz, var wartosc (hash) { #tutaj wykonujemy instrukcje #nazwy zmiennych klucz i wartosc są dowolne, jednakże ich #kolejność jest istotna - najpierw klucz, potem wartość Uruchom poniższy program i zobacz jak wykonuje kolejne instrukcje i wypisuje kolejne wyniki na konsolę. use console; use hash; def test::main() { var h = {Ala => 1, Bartek => 11; if (!hash::has_key(h, 'Cezary')) { hash::set_value(ref h, 'Cezary', 10); console::print(hash::get_value(h, 'Bartek')); hash::delete(ref h, 'Ala'); console::print('rozmiar: '. hash::size(h)); console::print('teraz hash zawiera:');
forh var klucz, var wart (h) { console::print(klucz. ': '. wart); Zadania Zadanie 1 Napisz program, który stworzy hash przyporządkowujący Twojemu imieniu Twój wiek, następnie dodaj do niego używając funkcji hash::set_value(ref hash, klucz, wartosc) wiek dowolnej ilości Twoich znajomych. Na koniec wypisz wielkość tak otrzymanego hasha. Zadanie Napisz program który zapyta o liczbę n, a następnie wczyta n imion oraz odpowiadający im wiek. Następnie w kolejnych wierszach wypisze wszystkie imiona, np. Podaj imię: Adam Podaj wiek: 1 Podaj imię: Robert Podaj wiek: 13 Podaj imię: Kasia Podaj wiek: 11 Adam Robert Kasia Zadanie 3 Napisz program który zapyta o liczbę n, a następnie wczyta n imion oraz odpowiadający im wiek. Następnie wczyta jedno imię i wypisze wiek tej osoby, np. Podaj imię: Adam Podaj wiek: 1 Podaj imię: Robert Podaj wiek: 13 Podaj imię: Kasia Podaj wiek: 11 Podaj imię osoby, której chcesz poznać wiek: Kasia Kasia ma 11 lat.
Zadanie 4 Napisz program, który będzie symulował pracę kantoru. Najpierw powinien zapytać o n, a następnie o n nazw walut wraz z obecnym kursem w stosunku do złotówki. Na końcu dla zadanej kwoty w obcej walucie wypisze równowartość w złotówkach, np. Podaj walutę: dolar Podaj kurs: 3.73 Podaj walutę: euro Podaj kurs: 4.31 Podaj walutę: frank Podaj kurs: 4.34 Czas na wymianę. Podaj walutę: euro Podaj kwotę: 13 13 euro to równowartość 530.13 zł. Zadanie 5 Napisz program który zapyta o liczbę n, a następnie wczyta n imion dzieci oraz odpowiadający im wzrost w cm przed wakacjami. Po wakacjach okazało się, że chłopcy urośli o 5 cm, natomiast dziewczyny o 4 cm. Wypisz wzrosty dzieci po wakacjach, np. Podaj n: 4 Podaj imię: Ewa Podaj wzrost: 150 Podaj imię: Piotrek Podaj wzrost: 157 Podaj imię: Marta Podaj wzrost: 10 Podaj imię: Rafał Podaj wzrost: 11 Ewa ma 154 cm wzrostu. Piotrek ma 1 cm wzrostu. Marta ma 14 cm wzrostu. Rafał ma 1 cm wzrostu.
Zadanie Bajtek ma obszerną kolekcję znaczków pocztowych. Jednak niektóre ze znaczków zostały zniszczone przez kota, Bajtek chce je wyrzucić. Napisz program który wczyta nazwy znaczków posiadanych początkowo, a następnie nazwy tych, które zostały zniszczone oraz wypisze ile i jakie znaczki pozostały w klaserze Bajtka. Przykładowo: Podaj liczbę znaczków: 5 Podaj nazwę: Kosmos Podaj nazwę: Łajka Podaj nazwę: Hermaszewski Podaj nazwę: Księżyc Podaj nazwę: Armstrong Podaj liczbę zniszczonych: Podaj nazwę: Łajka Podaj nazwę: Armstrong Pozostało 3 znaczków. Kosmos Hermaszewski Księżyc Zadanie 7 Dla wczytanych n liczb usuń wśród nich duplikaty i wypisz otrzymany ciąg (każda liczba z wejścia może pojawić się tylko raz). Przykładowo dla danych wejściowych (w pierwszym wierszu n, a następnie n liczb): 9 5 7 1 Należy wypisać: 1 5 7 Wskazówka: co się dzieje gdy spróbujesz dodać do hasha klucz, który już istnieje?
Zadanie 8 Dla wczytanych n liczb posortuj je używając hasha. Przykładowo dla danych wejściowych (w pierwszym wierszu n, a następnie n liczb): 9 5 7 1 Należy wypisać: 1 5 7