Pytania pomocnicze - INF.04
Projektowanie, programowanie i testowanie aplikacji
Pytania pomocnicze rozwijające tematy z pytań egzaminacyjnych. Każde pytanie ma krótką odpowiedź, która pomaga utrwalić wiedzę i przygotować się do egzaminu. Łącznie: 1207.
Strona 1 z 11.
Na czym polega przeciążanie metod?
Polega na utworzeniu kilku metod o tej samej nazwie w jednej klasie, ale z różnymi parametrami. Kompilator wybiera właściwą metodę na podstawie przekazanych argumentów.
Czy metody przeciążone muszą mieć różne nazwy?
Nie. Właśnie mają tę samą nazwę, ale muszą różnić się listą parametrów, np. ich liczbą lub typami.
Dlaczego metody Move w klasie Point nie są konstruktorami?
Konstruktor musi mieć nazwę identyczną jak klasa, czyli w tym przypadku `Point`. Metody mają nazwę `Move` i dodatkowo posiadają typ zwracany `void`.
Czym może różnić się lista parametrów metod przeciążonych?
Może różnić się liczbą parametrów, typami parametrów albo kolejnością typów parametrów. Sama zmiana nazw parametrów nie wystarcza.
Czy zmiana tylko typu zwracanego pozwala przeciążyć metodę?
Nie. Dwie metody o tej samej nazwie i tych samych parametrach nie mogą różnić się wyłącznie typem zwracanym.
Czym różni się przeciążanie metod od przeciążania operatorów?
Przeciążanie metod dotyczy wielu wersji metody o tej samej nazwie. Przeciążanie operatorów dotyczy definiowania działania operatorów, np. `+` lub `==`, dla własnych typów danych.
Do jakiego zdarzenia służy metoda setOnClickListener w Androidzie?
Metoda `setOnClickListener` służy do obsługi kliknięcia elementu interfejsu, najczęściej przycisku. Kod umieszczony w metodzie `onClick()` wykona się po naciśnięciu tego elementu.
Jaką rolę pełni metoda findViewById w aplikacji Android?
`findViewById` odszukuje element interfejsu na podstawie jego identyfikatora z zasobów `R.id`. Dzięki temu można w kodzie Javy lub Kotlina odwołać się np. do przycisku zdefiniowanego w pliku XML.
Co oznacza zapis R.id.yes_button?
`R.id.yes_button` to odwołanie do identyfikatora elementu interfejsu zdefiniowanego w pliku layoutu. Nazwa `yes_button` jest zwykle ustawiana w XML za pomocą atrybutu `android:id`.
Czym jest metoda onClick w interfejsie OnClickListener?
`onClick` to metoda wywoływana automatycznie po kliknięciu elementu, do którego przypisano listener. W jej wnętrzu umieszcza się instrukcje reagujące na kliknięcie.
Jakiego listenera używa się do obsługi zmiany stanu kontrolki Switch?
Do obsługi zmiany stanu kontrolki `Switch` używa się zwykle `setOnCheckedChangeListener`. Reaguje on na zmianę wartości zaznaczenia, np. z `false` na `true`.
Jakiego mechanizmu używa się do reagowania na zmianę tekstu w polu EditText?
Do monitorowania zmian tekstu w `EditText` stosuje się `TextWatcher`. Udostępnia on metody wywoływane przed zmianą, w trakcie zmiany i po zmianie tekstu.
Do czego służy kontrolka Switch w XAML?
Kontrolka `Switch` służy do wyboru jednej z dwóch wartości: włączone lub wyłączone. Reprezentuje wartość logiczną `true` albo `false`.
Co oznacza właściwość IsToggled w kontrolce Switch?
`IsToggled` określa aktualny stan przełącznika. Wartość `true` oznacza stan włączony, a `false` stan wyłączony.
Jak wizualnie rozpoznać kontrolkę Switch w aplikacji iOS?
W iOS `Switch` wygląda jak mały przełącznik suwakowy. Gdy jest włączony, zwykle ma zielone tło i uchwyt przesunięty w prawo.
Czym różni się Switch od Slidera?
`Switch` ma tylko dwa stany: włączony i wyłączony. `Slider` pozwala wybrać wartość liczbową z określonego zakresu, np. od 0 do 255.
Czym różni się Switch od Steppera?
`Switch` zmienia stan logiczny, natomiast `Stepper` zwiększa lub zmniejsza wartość liczbową o określony krok, np. o 1.
Czym różni się Switch od Entry?
`Entry` to pole do wpisywania tekstu, np. loginu lub hasła. `Switch` nie służy do wpisywania danych, tylko do przełączania opcji.
Dlaczego algorytm o złożoności O(n) jest zwykle lepszy od O(n²) dla dużych zbiorów danych?
W O(n) liczba operacji rośnie liniowo wraz z liczbą elementów. W O(n²) rośnie kwadratowo, więc dla dużego n czas działania zwiększa się znacznie szybciej.
Co oznacza zapis O(n log n) w kontekście sortowania?
Oznacza, że liczba operacji rośnie szybciej niż liniowo, ale znacznie wolniej niż kwadratowo. Taka złożoność jest typowa dla wydajnych algorytmów sortowania porównawczego, np. sortowania przez scalanie.
Kiedy sortowanie przez zliczanie jest szczególnie efektywne?
Jest efektywne, gdy sortowane są liczby całkowite z niewielkiego, znanego zakresu. Wtedy można szybko zliczyć wystąpienia każdej wartości i odtworzyć wynik.
Dlaczego sortowanie przez zliczanie nie zawsze jest najlepszym wyborem w praktyce?
Wymaga dodatkowej pamięci zależnej od zakresu wartości. Jeśli zakres jest bardzo duży, tablica zliczeń może być nieopłacalna pamięciowo.
Jak porównać algorytmy sortowania na podstawie tabeli złożoności?
Należy wybrać algorytm o najwolniej rosnącej złożoności dla dużego n. W typowym porządku O(n) jest lepsze niż O(n log n), a O(n log n) lepsze niż O(n²).
Czym różni się sortowanie przez scalanie od sortowania przez zliczanie?
Sortowanie przez scalanie porównuje elementy i ma złożoność O(n log n). Sortowanie przez zliczanie opiera się na liczbie wystąpień wartości i może osiągać O(n), ale wymaga ograniczonego zakresu danych.
Dlaczego sortowanie bąbelkowe jest niezalecane dla dużych zbiorów danych?
Ma złożoność O(n²), więc liczba operacji szybko rośnie wraz z liczbą elementów. Sprawdza się głównie jako prosty przykład dydaktyczny, a nie jako wydajna metoda dla dużych danych.
Dlaczego analizowany kod wypisuje liczby pierwsze?
Dla każdej liczby od 2 do 20 program sprawdza, czy istnieje jej dzielnik z zakresu od 2 do liczby o jeden mniejszej. Jeśli takiego dzielnika nie znajdzie, zmienna check pozostaje true i liczba zostaje wypisana.
Jaką rolę pełni zmienna check w tym algorytmie?
Zmienna check jest znacznikiem logicznym informującym, czy badana liczba nadal może być uznana za pierwszą. Jeśli zostanie znaleziony dzielnik, check przyjmuje wartość false.
Co oznacza warunek number % test === 0?
Oznacza, że liczba number dzieli się przez test bez reszty. W takim przypadku test jest dzielnikiem liczby number.
Dlaczego w wewnętrznej pętli zmienna test zaczyna się od wartości 2?
Każda liczba naturalna dzieli się przez 1, więc sprawdzanie dzielnika 1 nie pomogłoby odróżnić liczby pierwszej od złożonej. Testowanie zaczyna się od 2, czyli najmniejszego możliwego dzielnika większego od 1.
Dlaczego wewnętrzna pętla działa tylko do test < number?
Każda liczba dzieli się przez samą siebie, więc nie należy tego traktować jako dowodu, że liczba jest złożona. Szukane są tylko dzielniki większe od 1 i mniejsze od badanej liczby.
Jakie liczby zostaną wypisane przez podany kod?
Kod wypisze: 2, 3, 5, 7, 11, 13, 17, 19. Są to liczby pierwsze z zakresu od 2 do 20.
Po co w kodzie użyto instrukcji break?
Instrukcja break przerywa wewnętrzną pętlę po znalezieniu pierwszego dzielnika. Dalsze sprawdzanie nie jest potrzebne, ponieważ wiadomo już, że liczba nie jest pierwsza.
Czym różni się liczba pierwsza od liczby parzystej?
Liczba pierwsza ma dokładnie dwa dzielniki: 1 i samą siebie. Liczba parzysta to liczba podzielna przez 2; większość liczb parzystych większych od 2 nie jest pierwsza.
Co oznacza zasada postrzegalności w WCAG 2.0?
Oznacza, że informacje i elementy interfejsu muszą być przedstawione tak, aby użytkownik mógł je odebrać zmysłami, np. wzrokiem lub słuchem, albo za pomocą technologii wspomagających.
Dlaczego prezentacja elementów interfejsu jest związana z percepcją?
Percepcja dotyczy sposobu odbierania informacji przez użytkownika. Jeśli elementy interfejsu są źle zaprezentowane, np. mają niski kontrast, użytkownik może ich nie zauważyć lub nie zrozumieć.
Czym różni się postrzegalność od operowalności w WCAG?
Postrzegalność dotyczy tego, czy użytkownik może odebrać treść lub element interfejsu. Operowalność dotyczy tego, czy może z niego skorzystać, np. obsłużyć stronę klawiaturą.
Do której zasady WCAG należy obsługa strony za pomocą klawiatury?
Obsługa za pomocą klawiatury należy do zasady operowalności, ponieważ dotyczy sposobu wykonywania działań w interfejsie.
Do której zasady WCAG należy jasność i dokładność treści?
Jasność i dokładność treści wiąże się głównie z zasadą zrozumiałości, ponieważ użytkownik powinien łatwo rozumieć informacje i sposób działania strony.
Jakie są cztery główne zasady WCAG 2.0?
Są to: postrzegalność, operowalność, zrozumiałość i solidność. Razem opisują podstawowe wymagania dostępności stron i aplikacji internetowych.
Czym jest IDE w programowaniu?
IDE to zintegrowane środowisko programistyczne, które łączy edytor kodu, kompilator, debugger i narzędzia do zarządzania projektem. Przykładem IDE jest MS Visual Studio.
Dlaczego Visual Studio jest właściwym wyborem dla aplikacji w C#?
Visual Studio jest środowiskiem Microsoftu, podobnie jak język C# i platforma .NET. Zapewnia gotowe szablony, debugger, IntelliSense i narzędzia do tworzenia aplikacji desktopowych.
Jakie typy aplikacji desktopowych można tworzyć w C#?
W C# można tworzyć m.in. aplikacje Windows Forms oraz WPF. Oba typy są przeznaczone do tworzenia programów okienkowych dla systemu Windows.
Czym różni się Visual Studio od Visual Studio Code?
Visual Studio to pełne IDE, szczególnie rozbudowane dla C# i .NET. Visual Studio Code to lżejszy edytor kodu, który wymaga rozszerzeń do pracy z wieloma technologiami.
Z jakimi językami najczęściej kojarzą się Eclipse, NetBeans i PyCharm?
Eclipse i NetBeans są najczęściej kojarzone z Javą, choć obsługują też inne technologie. PyCharm jest środowiskiem przeznaczonym głównie do programowania w Pythonie.
Po czym rozpoznać w schemacie blokowym pętlę?
Pętlę rozpoznaje się po strzałce powrotnej do wcześniejszego warunku lub instrukcji. Oznacza to, że fragment algorytmu może być wykonywany wielokrotnie.
Dlaczego w tym algorytmie pasuje instrukcja while?
Warunek `numer != 10` jest sprawdzany przed wykonaniem instrukcji `numer += 2`. Taki sposób działania odpowiada pętli `while`.
Jakie wartości przyjmuje zmienna numer w pokazanym algorytmie?
Zmienna zaczyna od wartości `2`, a następnie zwiększa się o `2`: `4`, `6`, `8`, `10`. Po osiągnięciu `10` pętla się kończy.
Czym różni się instrukcja if od pętli while?
`if` sprawdza warunek i wykonuje blok kodu co najwyżej raz. `while` może wykonywać blok kodu wielokrotnie, dopóki warunek jest prawdziwy.
Dlaczego odpowiedź switch nie pasuje do tego algorytmu?
`switch` służy do wyboru jednej z wielu gałęzi na podstawie wartości zmiennej. Nie służy bezpośrednio do powtarzania instrukcji.
Kiedy pętla while może się nie wykonać ani razu?
Gdy jej warunek jest fałszywy już przy pierwszym sprawdzeniu. Ponieważ `while` sprawdza warunek przed wejściem do pętli, blok kodu może zostać pominięty.
Co oznacza zapis numer += 2 w Javie?
Jest to skrócony zapis przypisania `numer = numer + 2`. Zwiększa wartość zmiennej `numer` o 2.
Czym jest słownik w Pythonie?
Słownik to struktura danych przechowująca pary klucz-wartość. Pozwala szybko odczytać wartość na podstawie podanego klucza.
Dlaczego zapis w nawiasach klamrowych z dwukropkami oznacza słownik?
W Pythonie pary zapisane jako `klucz: wartość` wewnątrz `{}` tworzą słownik. Dwukropek oddziela klucz od przypisanej mu wartości.
Czym różni się słownik od listy w Pythonie?
Lista używa indeksów liczbowych, np. `lista[0]`, a słownik używa kluczy, np. `pierwiastki["N"]`. Słownik lepiej nadaje się do danych opisanych etykietami.
Co oznacza termin tablica asocjacyjna?
Tablica asocjacyjna to struktura danych, w której wartości są kojarzone z kluczami. W Pythonie taką strukturą jest słownik `dict`.
Czy słownik w Pythonie jest stosem albo kolejką?
Nie. Stos i kolejka opisują sposób dodawania oraz pobierania elementów, natomiast słownik służy do przechowywania danych w parach klucz-wartość.
Jak odczytać wartość ze słownika w Pythonie?
Należy podać klucz w nawiasach kwadratowych, np. `pierwiastki["O"]`. Wynikiem będzie wartość przypisana do tego klucza, np. `"Tlen"`.
Na czym polega wzorzec projektowy Obserwator?
Polega na tym, że obiekt obserwowany powiadamia zarejestrowane obiekty obserwujące o zmianie swojego stanu. Dzięki temu obserwatorzy mogą automatycznie zareagować na zmianę.
Jaką rolę pełni obiekt obserwowany w tym wzorcu?
Obiekt obserwowany przechowuje listę obserwatorów i wysyła do nich powiadomienia, gdy nastąpi zmiana jego stanu.
Kim jest obserwator w tym wzorcu?
Obserwator to obiekt, który subskrybuje zmiany innego obiektu i wykonuje określoną akcję po otrzymaniu powiadomienia.
Dlaczego wzorzec Obserwator jest często używany w aplikacjach WEB?
Aplikacje WEB często reagują na zdarzenia i zmiany danych, np. kliknięcia, formularze lub aktualizacje widoku. Obserwator ułatwia powiadamianie komponentów o takich zmianach.
Jaki jest przykład zastosowania wzorca Obserwator w interfejsie użytkownika?
Przykładem jest nasłuchiwanie kliknięcia przycisku. Gdy użytkownik kliknie przycisk, zarejestrowana funkcja lub obiekt zostaje powiadomiony i wykonuje odpowiednią akcję.
Czym wzorzec Obserwator różni się od ręcznego sprawdzania zmian w pętli?
W Obserwatorze obiekty są powiadamiane automatycznie po zmianie stanu. Nie trzeba cyklicznie sprawdzać, czy dane się zmieniły.
Czy wzorzec Obserwator służy do generowania wyjątków?
Nie. Wyjątki dotyczą obsługi błędów, a Obserwator służy do powiadamiania obiektów o zmianach stanu lub zdarzeniach.