{"id":"informator-maturalny-informatyka-2015/zad/19","paper_id":"informator-maturalny-informatyka-2015","number":"19","points":null,"ptype":"open","subject":"informatyka","category":"informator-maturalny","year":2015,"month":null,"level":null,"text":"Zadanie 19. Korek (0-11)\nW plikach sprzedaz.txt, produkt.txt i kategoria.txt znajdują się informacje\no sprzedaży produktów z korka w sklepie Koreczek. Pierwszy wiersz każdego z plików jest\nwierszem nagłówkowym, a dane w wierszach rozdzielone są znakami tabulacji.\nW pliku sprzedaz.txt znajduje się 2200 wierszy z informacjami o sprzedanych\nproduktach w ciągu całego roku 2012: Id_zakupu, Id_produktu, Data_zakupu, Ilosc (liczba\nsprzedanych jednostek danego produktu).\nPrzykład:\nId_zakupu Id_produktu\nData_zakupu\nIlosc\n1\np34\n2012-08-09\n9\n2\np87\n2012-08-07\n12\n3\np86\n2012-08-03\n26\n4\np20\n2012-01-05\n2\nW pliku produkt.txt znajduje się 99 wierszy z informacjami o produktach: Id_produktu,\nNazwa, Cena, Jednostka, Id_kategoria.\nPrzykład:\nId_produkt\nNazwa\nCena\nJednostka Id_kategoria\np1\nEspecial_Big\n24,99\nm2\nk1\np2\nToledo_Natural 23,99\nm2\nk1\np3\nToledo_Red\n23,99\nm2\nk1\nW pliku kategoria.txt znajduje się 21 wierszy z opisem kategorii sprzedawanych\nproduktów: Id_kategoria, Nazwa (nazwa kategorii do której należy grupa produktów).\nPrzykład:\nId_kategoria\nNazwa\nk1\nkorek_scienny\nk2\npodklad_korkowy\nk3\ngranulat_korkowy\nWykorzystując dane zawarte w tych plikach i dostępne narzędzia informatyczne, wykonaj\nponiższe polecenia. Odpowiedzi do poszczególnych podpunktów zapisz w pliku tekstowym\no nazwie wyniki_korek.txt. Odpowiedź do każdego podpunktu poprzedź literą\noznaczającą ten podpunkt.\na) Podaj zestawienie zawierające informacje o liczbie dokonanych zakupów w każdym\nmiesiącu. Zestawienie posortuj rosnąco ze względu na liczbę zakupów.\nb) Dla każdej kategorii oblicz łączną wartość sprzedanych produktów. Utwórz zestawienie\no kolumnach: nazwa kategorii, łączna wartość sprzedanych produktów w danej kategorii.\nZestawienie uporządkuj alfabetycznie według nazw.\nc) Podaj nazwę produktu z kategorii wyroby_korkowe, którego sprzedano najwięcej oraz\nwielkość jego sprzedaży.\nd) Podaj zestawienie zawierające dla każdego produktu z kategorii parkiet_korkowy\ni panele_korkowe informacje o łącznej liczbie m2 sprzedanego produktu.\nPrzykładowe zadania z rozwiązaniami 55\nDo oceny oddajesz plik(i) o nazwie , zawierający\ntu wpisz nazwę pliku(ów)\nkomputerową realizację Twoich obliczeń oraz plik tekstowy wyniki_korek.txt,\nzawierający odpowiedzi do wszystkich podpunktów zadania. Odpowiedź do każdego\npodpunktu w pliku wyniki_korek.txt powinna być poprzedzona nazwą podpunktu.\nWymagania ogólne\nII. Wyszukiwanie, gromadzenie i przetwarzanie\ninformacji z różnych źródeł; opracowywanie\nza pomocą komputera: rysunków, tekstów danych\nliczbowych, motywów, animacji, prezentacji\nmultimedialnych.\nWymagania szczegółowe\n2. Wyszukiwanie, gromadzenie, selekcjonowanie,\nprzetwarzanie i wykorzystywanie informacji,\nkorzystanie z różnych źródeł i sposobów zdobywania\ninformacji.\nZdający:\n1) projektuje relacyjną bazę danych z zapewnieniem\nintegralności danych,\n2) stosuje metody wyszukiwania i przetwarzania\ninformacji w relacyjnej bazie danych,\n3) tworzy aplikację bazodanową, wykorzystującą\njęzyk zapytań, kwerendy, raporty; zapewnia\nintegralność danych na poziomie pól, tabel, relacji.\nSchemat punktowania\nPodpunkt\nCzynność\nLiczba\npunktów\nza\npodpunkt\nLiczba\npunktów\nza\nzadanie\na\nZa podanie poprawnego zestawienia zawierającego\ninformacje o liczbie zakupów w każdym miesiącu -\n1 punkt.\nZa posortowanie otrzymanego zestawienia ze względu\nna liczbę zakupów - 1 punkt.\n2\n10\nb\nZa podanie poprawnego zestawienia zawierającego\nnazwy kategorii i łączną wartość sprzedanego towaru dla\nkażdej kategorii - 2 punkty.\nZa podanie zestawienia zawierającego poprawne\nwartości dla co najmniej 10 kategorii - 1 punkt.\nZa posortowanie otrzymanego zestawienia\nalfabetycznie - 1 punkt.\n3\nc\nZa podanie poprawnej nazwy produktu - 1 punkt.\nZa podanie poprawnej liczby sprzedanego produktu -\n1 punkt.\n2\nd\nZa poprawne zestawienie zawierające łączną liczbę\nsprzedanych produktów w każdej z podanych kategorii\n- 3 punkty.\nZa zestawienie zawierające błędny jeden wiersz albo\njedną kolumnę - 1 punkt.\n3\n56 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nZadanie 19. Korek (0-11) - rozwiązanie\nPliki zawierające rozwiązania znajdują się w folderze KOREK.\nKomentarz\nCechą wyróżniającą zadanie „Korek” spośród pozostałych zadań jest konieczność\npowiązania ze sobą danych rozmieszczonych w trzech różnych plikach. Każdy z tych plików\nmoże odpowiadać innej tabeli relacyjnej bazy danych, w której mamy następujące powiązania\ntypu „jeden do wielu”:\n tabele produkt.txt i sprzedaz.txt wiąże pole ID_produkt w produkt.txt\ni pole Id_produktu w sprzedaz.txt;\n tabele kategoria.txt i produkt.txt wiąże pole Id_kategoria z obu tabel.\nNaturalnym narzędziem do analizy takich danych jest aplikacja służąca do zarządzania bazą\ndanych, np. MS Access. Poniżej zaprezentujemy rozwiązanie z użyciem tego narzędzia.\nAplikacja bazodanowa wymaga dość dużego „wstępnego” nakładu pracy związanego\nz zakładaniem tabel, ustalaniem typów i rozmiarów pól, powiązań (relacji między tabelami).\nDlatego warto czasem spróbować alternatywnych rozwiązań, na przykład w arkuszu\nkalkulacyjnym. Zaprezentujemy taką próbę na przykładzie zadania „Korek”, pozostawiając\nczytelnikom ocenę, które narzędzie jest lepiej dopasowane do specyfiki zadania.\nRozwiązanie 1: baza danych (MS Access)\nPrzed przystąpieniem do rozwiązania podpunktów a) - d) zadania, musimy założyć tabele\nodpowiadające trzem plikom z danymi. Wygodnym rozwiązaniem jest utworzenie ich poprzez\nimport danych (Plik  Pobierz dane zewnętrzne  Importuj w MS Office 2003 lub Dane\nZewnętrzne  Importowanie  Plik tekstowy w MS Office 2007) i skorzystanie z kreatora\nimportu tekstu. Przyjmijmy, że po zakończeniu tego procesu mamy tabele Sprzedaz,\nProdukt i Kategoria, a pola tych tabel mają takie nazwy, jak podano w przykładach\nw treści zadania.\nNastępnie ustalimy relacje między tabelami i w efekcie uzyskujemy następujący schemat bazy\ndanych4:\n4 Rysunki w niniejszym opisie pochodzą z MS Office 2003 i MS Office 2007.\nPrzykładowe zadania z rozwiązaniami 57\nTeraz możemy przystąpić do rozwiązania podpunktów a) - d) zadania, tworząc odpowiednie\nkwerendy\nPodpunkt a\nWszystkie dane do podpunktu a znajdują się w tabeli Sprzedaz, brakuje w niej jednak pola\nidentyfikującego miesiąc każdej sprzedaży. Dodajemy więc pole wyliczane, w którym\nwyznaczamy miesiąc sprzedaży w oparciu o wartość pola Data_zakupu. Co prawda\nskładnia wyrażeń definiujących pola wyliczane jest dość skomplikowana, jednak w MS Access\nmożemy tworzyć takie pola za pomocą konstruktora wyrażeń, w którym wybieramy\nposzczególne elementy wyrażenia z odpowiednich list.\nAby wyznaczyć liczbę transakcji w każdym miesiącu, grupujemy dane według nowo\nutworzonego pola identyfikującego miesiąc sprzedaży, zliczamy liczbę wierszy w każdej\ngrupie (funkcja Policz) oraz sortujemy wynikowe zestawienie wg tych wyliczonych\nwartości. Szczegóły prezentujemy na załączonym obrazie okna projektu kwerendy:\n58 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nPodpunkt b\nZanim będziemy mogli sumować wartości sprzedaży w obrębie kategorii produktów, musimy\nwyznaczyć wartość każdej sprzedaży, co wymaga dostępu do tabel Sprzedaz i Produkt.\nW tym celu tworzymy pomocniczą kwerendę, w której korzystamy z powiązania obu tabel\ni tworzymy pole wyliczane, w którym wartość Ilosc z każdej sprzedaży mnożymy przez\nwartość Cena z tabeli Produkt:\nPrzykładowe zadania z rozwiązaniami 59\nNastępnie wystarczy zsumować wartości poszczególnych sprzedaży w obrębie kategorii\nproduktów, co możemy zrobić tworząc sprzężenie między tabelą Kategoria i nowo\nzałożoną kwerendą poprzez pole Id_kategoria. Wynikową kwerendę prezentujemy\nponiżej.\nPodpunkt c\nAby ustalić ilość jednostek sprzedaży każdego produktu, wystarczyłoby pogrupować tabelę\nSprzedaz wg pola Id_produktu i wyznaczyć sumę wartości pola Ilosc w każdej\ngrupie. Moglibyśmy też posortować zestawienie wg wyliczonych sum.\nTakie rozwiązanie nie daje jednak dostępu do nazw produktów, nie pozwala też wydzielić\nproduktów z kategorii wyroby_korkowe. Dlatego do rozwiązania punktu c) wykorzystamy\nwszystkie trzy tabele wraz z łączącymi je relacjami. Aby w wyniku uzyskać tylko produkty\nz kategorii wyroby_korkowe, zastosujemy filtrowanie wpisując frazę „wyroby_korkowe”\nw wierszu kryteriów dla nazwy kategorii. Przykładowy projekt kwerendy załączamy poniżej.\n60 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nPodpunkt d\nChcielibyśmy uzyskać zestawienie, w którego wierszach znajdują się nazwy kategorii,\nw kolumnach nazwy produktów, a na przecięciach wierszy i kolumn wielkości sprzedaży\nodpowiednich produktów. Zastosujemy w tym celu kwerendę krzyżową, której funkcjonalność\njest podobna do tabel przestawnych w MS Excel. Poniżej prezentujemy nasze rozwiązanie dla\npunktu d), w którym chcielibyśmy zwrócić uwagę na następujące elementy:\n w wierszu o nazwie „Krzyżowe” wskazujemy rolę poszczególnych pól w kwerendzie\nkrzyżowej: nagłówków kolumn, nagłówków wierszy, wartości uwzględnianych\nw obliczeniach,\n w wierszach „Kryteria” kolumny Kategoria wpisane zostały kategorie, do których\nograniczone miały być wyniki punktu d) zadania.\nPrzykładowe zadania z rozwiązaniami 61\nRozwiązanie 2: arkusz kalkulacyjny (MS Excel)\nRozwiązanie zadania w arkuszu kalkulacyjnym rozpoczniemy od wczytania zawartości plików\nsprzedaz.txt, produkt.txt i kategoria.txt do trzech różnych arkuszy\no nazwach sprzedaz, produkt i kategoria z takimi nagłówkami kolumn, jak podane\nw treści zadania. Możemy to zrobić, importując odpowiednie pliki tekstowe w MS Excel\n(Dane  Importuj dane zewnętrzne  Importuj dane w MS Office 2003 lub Dane  Dane\nzewnętrzne  Z tekstu w MS Office 2007), każdy do innego arkusza.\nRozwiązując kolejne podpunkty zadania, tworzyć będziemy tabele przestawne w oparciu\no dane z zaimportowanych tabel. Aby utworzyć tabelę przestawną, wskazujemy:\n1. kolumny względem których grupowane będą dane,\n2. kolumnę, z której brane będą wartości do obliczeń,\n3. funkcję, którą stosować będziemy na wartościach z kolumny podanej w 2.\nPowyższe parametry ustalamy w projekcie tabeli przestawnej, ustalając wartości obszarów\nEtykiety wierszy, Etykiety kolumn i Wartości (terminy takie stosowane są w MS Office 2007;\nich odpowiednikami w MS Office 2003 są obszary Wiersz, Kolumna i Dane). Obszary Etykiety\nwierszy i Etykiety kolumn odpowiadają kryteriom grupowania (jeśli stosujemy tylko jedno\nkryterium, obszar Etykiety wierszy lub Etykiety kolumn pozostaje pusty). W obszarze Wartości\numieszczamy pole do obliczeń, wybieramy również odpowiednią funkcję (np. suma, średnia,\nlicznik).\n62 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nPodpunkt a\nAby rozwiązać podpunkt a), dodamy do zestawienia kolumnę Miesiąc, w której wyznaczymy\nmiesiąc każdej sprzedaży, korzystając z funkcji wbudowanej (=MIESIĄC(C2)). Następnie\ntworzymy i sortujemy tabelę przestawną dla tabeli sprzedaz, grupującą dane wg miesięcy\ni sumującą liczbę zakupów w każdym miesiącu. Poniżej prezentujemy projekt układu dla\ntworzonej tabeli:\nPodpunkty b - d\nPonieważ podpunkty b - d zadania wymagają powiązań między poszczególnymi tabelami,\nspróbujemy zbudować jedną tabelę kumulującą wszystkie te powiązania. W tym celu\ntworzymy kopię tabeli sprzedaz w nowym arkuszu (B) i dodajemy do niej kolumny:\nProdukt_nazwa, Id_kategorii, Cena, Kategoria_nazwa, Wartość.\nPoszczególne pola uzupełniamy korzystając z następujących zależności:\nPrzykładowe zadania z rozwiązaniami 63\n wartości Produkt_nazwa, Kategoria i Cena można odczytać z tabeli produkt,\nw oparciu o Id_produktu,\n wartość Kategoria_nazwa można odczytać z tabeli kategoria, po wyznaczeniu\nId_kategorii,\n pole Wartość jest równe iloczynowi pól Ilosc i Cena.\nDocelowo chcielibyśmy uzyskać poniższy efekt:\nAby możliwe było utworzenia opisanej powyżej tabeli, potrzebna jest nam metoda na\nwyszukiwanie w tabeli wierszy z ustaloną wartością pewnego pola i wybieranie z takich\nwierszy wartości innych pól. Wykorzystaliśmy do tego funkcję WYSZUKAJ.PIONOWO\no czterech parametrach:\n pierwszy określa wyszukiwaną wartość,\n drugi definiuje obszar przeszukiwania (wartość szukana jest w pierwszej kolumnie\nobszaru),\n trzeci parametr wskazuje, z której kolumny obszaru należy pobrać wynikową wartość,\n czwarty parametr określa czy wyszukiwanie ma być dokładne czy też przedziałowe\n(w naszym przypadku wpisujemy wartość FAŁSZ oznaczającą dokładne wyszukiwanie).\nDziałanie funkcji zilustrujemy na przykładzie. Załóżmy, że w kolumnie B znajdują się wartości\nId_produktu z kolejnych wierszy tabeli sprzedaz. Aby w kolumnie C uzyskać nazwę\nproduktu, wpisujemy następujące parametry funkcji WYSZUKAJ.PIONOWO (w wierszu 2):\n B2 jako wyszukiwaną wartość;\n obszar zajmowany przez tabelę produktów (w naszym przykładzie\nprodukt!$A$2:$E$100); stosujemy adresowanie bezpośrednie, aby obszar nie\nzmieniał się przy kopiowaniu;\n liczbę 2 jako trzeci parametr, gdyż nazwy produktów znajdują się w drugiej kolumnie\ntabeli produkt.\nPoniżej załączamy ilustrację tego przykładu:\n64 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nMając dostęp do tabeli, w której wiersze z tabeli sprzedaz uzupełnione są o powiązane\nz nimi informacje z tabel produkt i kategoria, punkty b), c) i d), możemy rozwiązać,\nstosując tabele przestawne w powiązaniu z sortowaniem i filtrowaniem danych.\nPodpunkt b\nStosujemy grupowanie wg nazwy kategorii przeciągając Kategoria_nazwa jako pole\nwierszy.\nW obszarze wartości umieszczamy sumę pola Wartość (przeciągamy nazwę pola do\nodpowiedniego obszaru).\nPodpunkt c\nSortujemy dane malejąco względem nazwy kategorii, co spowoduje, że „wyroby_korkowe”\npojawią się w początkowym bloku tabeli. Tabelę przestawną tworzymy tylko dla tego\nfragmentu tabeli. Wybieramy Produkt_nazwa jako pole wierszy, a w obszarze wartości\numieszczamy sumę pola Ilość (i wg niej sortujemy).\nPodpunkt d\nAby ograniczyć analizę do podanych kategorii, najpierw sortujemy dane wg nazwy kategorii\ni usuwamy wiersze z innych kategorii niż parkiet_korkowy i panele_korkowe. Za pole wierszy\nprzyjmujemy Produkt_nazwa, pole kolumn to Kategoria_nazwa, a w obszarze\nwartości umieszczamy sumę pola Ilość.\nZapalonym programistom zalecić warto lepsze poznanie języka SQL, w którym można\nsamodzielnie formułować zapytania do bazy danych lub modyfikować zapytania utworzone za\npomocą interaktywnych narzędzi do tworzenia kwerend. Pozwoli to rozwiązywać zadania\ntego typu z wykorzystaniem bardzo elastycznego języka, unikając ograniczeń bądź\nniedogodności interaktywnego tworzenia kwerend w MS Access.\nRozwiązania bazodanowe dla podpunktów a) - c) uzyskać można, tworząc dość standardowe\nkwerendy wybierające z zastosowaniem grupowania. Po utworzeniu relacji łączących\nwszystkie trzy tabele, punkty te nie powinny nastręczać większych trudności wprawnym\nużytkownikom MS Access lub innych systemów bazodanowych. W rozwiązaniu podpunktu d)\nzaprezentowaliśmy potencjał kwerend krzyżowych, choć punkt ten można również rozwiązać\nw sposób bardziej standardowy, korzystając z faktu, że wynik należy uzyskać tylko dla dwóch\nkategorii produktów (można na przykład utworzyć dwie kwerendy - jedną dla kategorii\nparkiet_korkowy, a drugą dla kategorii panele_korkowe).\nOdnośnie zaprezentowanego rozwiązania zadania w arkuszu kalkulacyjnym należy zaznaczyć,\nże wiązanie tabel poprzez funkcję WYSZUKAJ.PIONOWO jest nieefektywne dla dużych\nzbiorów danych oraz niewygodne przy aktualizacji danych. Zaprezentowaliśmy to\nrozwiązanie, aby podkreślić uniwersalność różnych narzędzi i zwrócić uwagę, że maturzysta\nsamodzielnie podejmuje decyzję o wyborze narzędzia do rozwiązania zadania (uwzględniając\nczas dostępny w trakcie egzaminu maturalnego).\nPrzykładowe zadania z rozwiązaniami 65","answer":null,"answer_text":null,"solution":null,"image":"img/informator-maturalny-informatyka-2015/zad-19.webp","solution_image":null,"topics":null,"page_from":54,"source":"ocr","answer_source":null,"answer_text_source":null,"solution_source":null,"text_source":"ocr","source_label":"Informatyka · Informator maturalny · 2015","subject_label":"Informatyka","category_label":"Informator maturalny","text_html":"<p>Zadanie 19. Korek (0-11)<br>W plikach sprzedaz.txt, produkt.txt i kategoria.txt znajdują się informacje<br>o sprzedaży produktów z korka w sklepie Koreczek. Pierwszy wiersz każdego z plików jest<br>wierszem nagłówkowym, a dane w wierszach rozdzielone są znakami tabulacji.<br>W pliku sprzedaz.txt znajduje się 2200 wierszy z informacjami o sprzedanych<br>produktach w ciągu całego roku 2012: Id_zakupu, Id_produktu, Data_zakupu, Ilosc (liczba<br>sprzedanych jednostek danego produktu).<br>Przykład:<br>Id_zakupu Id_produktu<br>Data_zakupu<br>Ilosc<br>1<br>p34<br>2012-08-09<br>9<br>2<br>p87<br>2012-08-07<br>12<br>3<br>p86<br>2012-08-03<br>26<br>4<br>p20<br>2012-01-05<br>2<br>W pliku produkt.txt znajduje się 99 wierszy z informacjami o produktach: Id_produktu,<br>Nazwa, Cena, Jednostka, Id_kategoria.<br>Przykład:<br>Id_produkt<br>Nazwa<br>Cena<br>Jednostka Id_kategoria<br>p1<br>Especial_Big<br>24,99<br>m2<br>k1<br>p2<br>Toledo_Natural 23,99<br>m2<br>k1<br>p3<br>Toledo_Red<br>23,99<br>m2<br>k1<br>W pliku kategoria.txt znajduje się 21 wierszy z opisem kategorii sprzedawanych<br>produktów: Id_kategoria, Nazwa (nazwa kategorii do której należy grupa produktów).<br>Przykład:<br>Id_kategoria<br>Nazwa<br>k1<br>korek_scienny<br>k2<br>podklad_korkowy<br>k3<br>granulat_korkowy<br>Wykorzystując dane zawarte w tych plikach i dostępne narzędzia informatyczne, wykonaj<br>poniższe polecenia. Odpowiedzi do poszczególnych podpunktów zapisz w pliku tekstowym<br>o nazwie wyniki_korek.txt. Odpowiedź do każdego podpunktu poprzedź literą<br>oznaczającą ten podpunkt.<br>a) Podaj zestawienie zawierające informacje o liczbie dokonanych zakupów w każdym<br>miesiącu. Zestawienie posortuj rosnąco ze względu na liczbę zakupów.<br>b) Dla każdej kategorii oblicz łączną wartość sprzedanych produktów. Utwórz zestawienie<br>o kolumnach: nazwa kategorii, łączna wartość sprzedanych produktów w danej kategorii.<br>Zestawienie uporządkuj alfabetycznie według nazw.<br>c) Podaj nazwę produktu z kategorii wyroby_korkowe, którego sprzedano najwięcej oraz<br>wielkość jego sprzedaży.<br>d) Podaj zestawienie zawierające dla każdego produktu z kategorii parkiet_korkowy<br>i panele_korkowe informacje o łącznej liczbie m2 sprzedanego produktu.<br>Przykładowe zadania z rozwiązaniami 55<br>Do oceny oddajesz plik(i) o nazwie , zawierający<br>tu wpisz nazwę pliku(ów)<br>komputerową realizację Twoich obliczeń oraz plik tekstowy wyniki_korek.txt,<br>zawierający odpowiedzi do wszystkich podpunktów zadania. Odpowiedź do każdego<br>podpunktu w pliku wyniki_korek.txt powinna być poprzedzona nazwą podpunktu.<br>Wymagania ogólne<br>II. Wyszukiwanie, gromadzenie i przetwarzanie<br>informacji z różnych źródeł; opracowywanie<br>za pomocą komputera: rysunków, tekstów danych<br>liczbowych, motywów, animacji, prezentacji<br>multimedialnych.<br>Wymagania szczegółowe</p>\n<ol><li>Wyszukiwanie, gromadzenie, selekcjonowanie,</li></ol>\n<p>przetwarzanie i wykorzystywanie informacji,<br>korzystanie z różnych źródeł i sposobów zdobywania<br>informacji.<br>Zdający:</p>\n<ol><li>projektuje relacyjną bazę danych z zapewnieniem</li></ol>\n<p>integralności danych,</p>\n<ol><li>stosuje metody wyszukiwania i przetwarzania</li></ol>\n<p>informacji w relacyjnej bazie danych,</p>\n<ol><li>tworzy aplikację bazodanową, wykorzystującą</li></ol>\n<p>język zapytań, kwerendy, raporty; zapewnia<br>integralność danych na poziomie pól, tabel, relacji.<br>Schemat punktowania<br>Podpunkt<br>Czynność<br>Liczba<br>punktów<br>za<br>podpunkt<br>Liczba<br>punktów<br>za<br>zadanie<br>a<br>Za podanie poprawnego zestawienia zawierającego<br>informacje o liczbie zakupów w każdym miesiącu -<br>1 punkt.<br>Za posortowanie otrzymanego zestawienia ze względu<br>na liczbę zakupów - 1 punkt.<br>2<br>10<br>b<br>Za podanie poprawnego zestawienia zawierającego<br>nazwy kategorii i łączną wartość sprzedanego towaru dla<br>każdej kategorii - 2 punkty.<br>Za podanie zestawienia zawierającego poprawne<br>wartości dla co najmniej 10 kategorii - 1 punkt.<br>Za posortowanie otrzymanego zestawienia<br>alfabetycznie - 1 punkt.<br>3<br>c<br>Za podanie poprawnej nazwy produktu - 1 punkt.<br>Za podanie poprawnej liczby sprzedanego produktu -<br>1 punkt.<br>2<br>d<br>Za poprawne zestawienie zawierające łączną liczbę<br>sprzedanych produktów w każdej z podanych kategorii</p>\n<ul><li>3 punkty.</li></ul>\n<p>Za zestawienie zawierające błędny jeden wiersz albo<br>jedną kolumnę - 1 punkt.<br>3<br>56 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Zadanie 19. Korek (0-11) - rozwiązanie<br>Pliki zawierające rozwiązania znajdują się w folderze KOREK.<br>Komentarz<br>Cechą wyróżniającą zadanie „Korek” spośród pozostałych zadań jest konieczność<br>powiązania ze sobą danych rozmieszczonych w trzech różnych plikach. Każdy z tych plików<br>może odpowiadać innej tabeli relacyjnej bazy danych, w której mamy następujące powiązania<br>typu „jeden do wielu”:<br> tabele produkt.txt i sprzedaz.txt wiąże pole ID_produkt w produkt.txt<br>i pole Id_produktu w sprzedaz.txt;<br> tabele kategoria.txt i produkt.txt wiąże pole Id_kategoria z obu tabel.<br>Naturalnym narzędziem do analizy takich danych jest aplikacja służąca do zarządzania bazą<br>danych, np. MS Access. Poniżej zaprezentujemy rozwiązanie z użyciem tego narzędzia.<br>Aplikacja bazodanowa wymaga dość dużego „wstępnego” nakładu pracy związanego<br>z zakładaniem tabel, ustalaniem typów i rozmiarów pól, powiązań (relacji między tabelami).<br>Dlatego warto czasem spróbować alternatywnych rozwiązań, na przykład w arkuszu<br>kalkulacyjnym. Zaprezentujemy taką próbę na przykładzie zadania „Korek”, pozostawiając<br>czytelnikom ocenę, które narzędzie jest lepiej dopasowane do specyfiki zadania.<br>Rozwiązanie 1: baza danych (MS Access)<br>Przed przystąpieniem do rozwiązania podpunktów a) - d) zadania, musimy założyć tabele<br>odpowiadające trzem plikom z danymi. Wygodnym rozwiązaniem jest utworzenie ich poprzez<br>import danych (Plik  Pobierz dane zewnętrzne  Importuj w MS Office 2003 lub Dane<br>Zewnętrzne  Importowanie  Plik tekstowy w MS Office 2007) i skorzystanie z kreatora<br>importu tekstu. Przyjmijmy, że po zakończeniu tego procesu mamy tabele Sprzedaz,<br>Produkt i Kategoria, a pola tych tabel mają takie nazwy, jak podano w przykładach<br>w treści zadania.<br>Następnie ustalimy relacje między tabelami i w efekcie uzyskujemy następujący schemat bazy<br>danych4:<br>4 Rysunki w niniejszym opisie pochodzą z MS Office 2003 i MS Office 2007.<br>Przykładowe zadania z rozwiązaniami 57<br>Teraz możemy przystąpić do rozwiązania podpunktów a) - d) zadania, tworząc odpowiednie<br>kwerendy<br>Podpunkt a<br>Wszystkie dane do podpunktu a znajdują się w tabeli Sprzedaz, brakuje w niej jednak pola<br>identyfikującego miesiąc każdej sprzedaży. Dodajemy więc pole wyliczane, w którym<br>wyznaczamy miesiąc sprzedaży w oparciu o wartość pola Data_zakupu. Co prawda<br>składnia wyrażeń definiujących pola wyliczane jest dość skomplikowana, jednak w MS Access<br>możemy tworzyć takie pola za pomocą konstruktora wyrażeń, w którym wybieramy<br>poszczególne elementy wyrażenia z odpowiednich list.<br>Aby wyznaczyć liczbę transakcji w każdym miesiącu, grupujemy dane według nowo<br>utworzonego pola identyfikującego miesiąc sprzedaży, zliczamy liczbę wierszy w każdej<br>grupie (funkcja Policz) oraz sortujemy wynikowe zestawienie wg tych wyliczonych<br>wartości. Szczegóły prezentujemy na załączonym obrazie okna projektu kwerendy:<br>58 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Podpunkt b<br>Zanim będziemy mogli sumować wartości sprzedaży w obrębie kategorii produktów, musimy<br>wyznaczyć wartość każdej sprzedaży, co wymaga dostępu do tabel Sprzedaz i Produkt.<br>W tym celu tworzymy pomocniczą kwerendę, w której korzystamy z powiązania obu tabel<br>i tworzymy pole wyliczane, w którym wartość Ilosc z każdej sprzedaży mnożymy przez<br>wartość Cena z tabeli Produkt:<br>Przykładowe zadania z rozwiązaniami 59<br>Następnie wystarczy zsumować wartości poszczególnych sprzedaży w obrębie kategorii<br>produktów, co możemy zrobić tworząc sprzężenie między tabelą Kategoria i nowo<br>założoną kwerendą poprzez pole Id_kategoria. Wynikową kwerendę prezentujemy<br>poniżej.<br>Podpunkt c<br>Aby ustalić ilość jednostek sprzedaży każdego produktu, wystarczyłoby pogrupować tabelę<br>Sprzedaz wg pola Id_produktu i wyznaczyć sumę wartości pola Ilosc w każdej<br>grupie. Moglibyśmy też posortować zestawienie wg wyliczonych sum.<br>Takie rozwiązanie nie daje jednak dostępu do nazw produktów, nie pozwala też wydzielić<br>produktów z kategorii wyroby_korkowe. Dlatego do rozwiązania punktu c) wykorzystamy<br>wszystkie trzy tabele wraz z łączącymi je relacjami. Aby w wyniku uzyskać tylko produkty<br>z kategorii wyroby_korkowe, zastosujemy filtrowanie wpisując frazę „wyroby_korkowe”<br>w wierszu kryteriów dla nazwy kategorii. Przykładowy projekt kwerendy załączamy poniżej.<br>60 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Podpunkt d<br>Chcielibyśmy uzyskać zestawienie, w którego wierszach znajdują się nazwy kategorii,<br>w kolumnach nazwy produktów, a na przecięciach wierszy i kolumn wielkości sprzedaży<br>odpowiednich produktów. Zastosujemy w tym celu kwerendę krzyżową, której funkcjonalność<br>jest podobna do tabel przestawnych w MS Excel. Poniżej prezentujemy nasze rozwiązanie dla<br>punktu d), w którym chcielibyśmy zwrócić uwagę na następujące elementy:<br> w wierszu o nazwie „Krzyżowe” wskazujemy rolę poszczególnych pól w kwerendzie<br>krzyżowej: nagłówków kolumn, nagłówków wierszy, wartości uwzględnianych<br>w obliczeniach,<br> w wierszach „Kryteria” kolumny Kategoria wpisane zostały kategorie, do których<br>ograniczone miały być wyniki punktu d) zadania.<br>Przykładowe zadania z rozwiązaniami 61<br>Rozwiązanie 2: arkusz kalkulacyjny (MS Excel)<br>Rozwiązanie zadania w arkuszu kalkulacyjnym rozpoczniemy od wczytania zawartości plików<br>sprzedaz.txt, produkt.txt i kategoria.txt do trzech różnych arkuszy<br>o nazwach sprzedaz, produkt i kategoria z takimi nagłówkami kolumn, jak podane<br>w treści zadania. Możemy to zrobić, importując odpowiednie pliki tekstowe w MS Excel<br>(Dane  Importuj dane zewnętrzne  Importuj dane w MS Office 2003 lub Dane  Dane<br>zewnętrzne  Z tekstu w MS Office 2007), każdy do innego arkusza.<br>Rozwiązując kolejne podpunkty zadania, tworzyć będziemy tabele przestawne w oparciu<br>o dane z zaimportowanych tabel. Aby utworzyć tabelę przestawną, wskazujemy:</p>\n<ol><li>kolumny względem których grupowane będą dane,</li><li>kolumnę, z której brane będą wartości do obliczeń,</li><li>funkcję, którą stosować będziemy na wartościach z kolumny podanej w 2.</li></ol>\n<p>Powyższe parametry ustalamy w projekcie tabeli przestawnej, ustalając wartości obszarów<br>Etykiety wierszy, Etykiety kolumn i Wartości (terminy takie stosowane są w MS Office 2007;<br>ich odpowiednikami w MS Office 2003 są obszary Wiersz, Kolumna i Dane). Obszary Etykiety<br>wierszy i Etykiety kolumn odpowiadają kryteriom grupowania (jeśli stosujemy tylko jedno<br>kryterium, obszar Etykiety wierszy lub Etykiety kolumn pozostaje pusty). W obszarze Wartości<br>umieszczamy pole do obliczeń, wybieramy również odpowiednią funkcję (np. suma, średnia,<br>licznik).<br>62 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Podpunkt a<br>Aby rozwiązać podpunkt a), dodamy do zestawienia kolumnę Miesiąc, w której wyznaczymy<br>miesiąc każdej sprzedaży, korzystając z funkcji wbudowanej (=MIESIĄC(C2)). Następnie<br>tworzymy i sortujemy tabelę przestawną dla tabeli sprzedaz, grupującą dane wg miesięcy<br>i sumującą liczbę zakupów w każdym miesiącu. Poniżej prezentujemy projekt układu dla<br>tworzonej tabeli:<br>Podpunkty b - d<br>Ponieważ podpunkty b - d zadania wymagają powiązań między poszczególnymi tabelami,<br>spróbujemy zbudować jedną tabelę kumulującą wszystkie te powiązania. W tym celu<br>tworzymy kopię tabeli sprzedaz w nowym arkuszu (B) i dodajemy do niej kolumny:<br>Produkt_nazwa, Id_kategorii, Cena, Kategoria_nazwa, Wartość.<br>Poszczególne pola uzupełniamy korzystając z następujących zależności:<br>Przykładowe zadania z rozwiązaniami 63<br> wartości Produkt_nazwa, Kategoria i Cena można odczytać z tabeli produkt,<br>w oparciu o Id_produktu,<br> wartość Kategoria_nazwa można odczytać z tabeli kategoria, po wyznaczeniu<br>Id_kategorii,<br> pole Wartość jest równe iloczynowi pól Ilosc i Cena.<br>Docelowo chcielibyśmy uzyskać poniższy efekt:<br>Aby możliwe było utworzenia opisanej powyżej tabeli, potrzebna jest nam metoda na<br>wyszukiwanie w tabeli wierszy z ustaloną wartością pewnego pola i wybieranie z takich<br>wierszy wartości innych pól. Wykorzystaliśmy do tego funkcję WYSZUKAJ.PIONOWO<br>o czterech parametrach:<br> pierwszy określa wyszukiwaną wartość,<br> drugi definiuje obszar przeszukiwania (wartość szukana jest w pierwszej kolumnie<br>obszaru),<br> trzeci parametr wskazuje, z której kolumny obszaru należy pobrać wynikową wartość,<br> czwarty parametr określa czy wyszukiwanie ma być dokładne czy też przedziałowe<br>(w naszym przypadku wpisujemy wartość FAŁSZ oznaczającą dokładne wyszukiwanie).<br>Działanie funkcji zilustrujemy na przykładzie. Załóżmy, że w kolumnie B znajdują się wartości<br>Id_produktu z kolejnych wierszy tabeli sprzedaz. Aby w kolumnie C uzyskać nazwę<br>produktu, wpisujemy następujące parametry funkcji WYSZUKAJ.PIONOWO (w wierszu 2):<br> B2 jako wyszukiwaną wartość;<br> obszar zajmowany przez tabelę produktów (w naszym przykładzie<br>produkt!<math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>A</mi></mrow></math>2:<math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>E</mi></mrow></math>100); stosujemy adresowanie bezpośrednie, aby obszar nie<br>zmieniał się przy kopiowaniu;<br> liczbę 2 jako trzeci parametr, gdyż nazwy produktów znajdują się w drugiej kolumnie<br>tabeli produkt.<br>Poniżej załączamy ilustrację tego przykładu:<br>64 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Mając dostęp do tabeli, w której wiersze z tabeli sprzedaz uzupełnione są o powiązane<br>z nimi informacje z tabel produkt i kategoria, punkty b), c) i d), możemy rozwiązać,<br>stosując tabele przestawne w powiązaniu z sortowaniem i filtrowaniem danych.<br>Podpunkt b<br>Stosujemy grupowanie wg nazwy kategorii przeciągając Kategoria_nazwa jako pole<br>wierszy.<br>W obszarze wartości umieszczamy sumę pola Wartość (przeciągamy nazwę pola do<br>odpowiedniego obszaru).<br>Podpunkt c<br>Sortujemy dane malejąco względem nazwy kategorii, co spowoduje, że „wyroby_korkowe”<br>pojawią się w początkowym bloku tabeli. Tabelę przestawną tworzymy tylko dla tego<br>fragmentu tabeli. Wybieramy Produkt_nazwa jako pole wierszy, a w obszarze wartości<br>umieszczamy sumę pola Ilość (i wg niej sortujemy).<br>Podpunkt d<br>Aby ograniczyć analizę do podanych kategorii, najpierw sortujemy dane wg nazwy kategorii<br>i usuwamy wiersze z innych kategorii niż parkiet_korkowy i panele_korkowe. Za pole wierszy<br>przyjmujemy Produkt_nazwa, pole kolumn to Kategoria_nazwa, a w obszarze<br>wartości umieszczamy sumę pola Ilość.<br>Zapalonym programistom zalecić warto lepsze poznanie języka SQL, w którym można<br>samodzielnie formułować zapytania do bazy danych lub modyfikować zapytania utworzone za<br>pomocą interaktywnych narzędzi do tworzenia kwerend. Pozwoli to rozwiązywać zadania<br>tego typu z wykorzystaniem bardzo elastycznego języka, unikając ograniczeń bądź<br>niedogodności interaktywnego tworzenia kwerend w MS Access.<br>Rozwiązania bazodanowe dla podpunktów a) - c) uzyskać można, tworząc dość standardowe<br>kwerendy wybierające z zastosowaniem grupowania. Po utworzeniu relacji łączących<br>wszystkie trzy tabele, punkty te nie powinny nastręczać większych trudności wprawnym<br>użytkownikom MS Access lub innych systemów bazodanowych. W rozwiązaniu podpunktu d)<br>zaprezentowaliśmy potencjał kwerend krzyżowych, choć punkt ten można również rozwiązać<br>w sposób bardziej standardowy, korzystając z faktu, że wynik należy uzyskać tylko dla dwóch<br>kategorii produktów (można na przykład utworzyć dwie kwerendy - jedną dla kategorii<br>parkiet_korkowy, a drugą dla kategorii panele_korkowe).<br>Odnośnie zaprezentowanego rozwiązania zadania w arkuszu kalkulacyjnym należy zaznaczyć,<br>że wiązanie tabel poprzez funkcję WYSZUKAJ.PIONOWO jest nieefektywne dla dużych<br>zbiorów danych oraz niewygodne przy aktualizacji danych. Zaprezentowaliśmy to<br>rozwiązanie, aby podkreślić uniwersalność różnych narzędzi i zwrócić uwagę, że maturzysta<br>samodzielnie podejmuje decyzję o wyborze narzędzia do rozwiązania zadania (uwzględniając<br>czas dostępny w trakcie egzaminu maturalnego).<br>Przykładowe zadania z rozwiązaniami 65</p>","solutions":[]}