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: 1799.
Strona 19 z 20.

Dlaczego podparcie lordozy lędźwiowej jest ważne podczas pracy przy komputerze?

Podparcie lordozy lędźwiowej pomaga utrzymać naturalne wygięcie dolnego odcinka kręgosłupa. Zmniejsza to napięcie mięśni pleców i ryzyko bólu kręgosłupa.

Jak powinny być ustawione stopy podczas siedzenia przy komputerze?

Stopy powinny spoczywać płasko na podłodze lub na podnóżku. Nie powinny zwisać ani być stale podkurczone.

Jak ustawić wysokość fotela do pracy przy biurku?

Fotel należy ustawić tak, aby kolana były zgięte mniej więcej pod kątem prostym, a przedramiona mogły swobodnie pracować przy blacie. Pozycja nie powinna wymuszać unoszenia barków.

Jaką rolę pełnią podłokietniki w ergonomicznym fotelu?

Podłokietniki odciążają barki i przedramiona, jeśli są ustawione na właściwej wysokości. Nie powinny znajdować się ani zbyt nisko, ani zbyt wysoko względem blatu.

Dlaczego nienaturalne pochylenie oparcia przy szyi nie jest dobrą cechą fotela?

Zbyt mocne wymuszenie położenia szyi może prowadzić do napięcia mięśni karku i bólu. Ergonomiczne oparcie ma wspierać naturalną postawę, a nie ją zniekształcać.

Jak powinien być ustawiony monitor na stanowisku komputerowym?

Górna krawędź ekranu powinna znajdować się na wysokości oczu lub nieco poniżej. Monitor powinien być ustawiony tak, aby nie trzeba było stale pochylać głowy.

Dlaczego sortowanie bąbelkowe ma złożoność O(n²)?

Ponieważ porównuje elementy tablicy wielokrotnie, zwykle za pomocą dwóch zagnieżdżonych pętli. Dla n elementów liczba porównań rośnie w przybliżeniu proporcjonalnie do n².

Jaką złożoność ma wypisanie wszystkich elementów tablicy?

Wypisanie wszystkich elementów tablicy ma złożoność O(n), ponieważ każdy element trzeba odwiedzić dokładnie raz.

Jaką złożoność ma wyszukiwanie binarne?

Wyszukiwanie binarne ma złożoność O(log n), ponieważ w każdym kroku odrzuca połowę pozostałych elementów. Wymaga jednak posortowanej tablicy.

Czy sortowanie szybkie zawsze ma złożoność O(n log n)?

Nie. Średnio sortowanie szybkie ma złożoność O(n log n), ale w najgorszym przypadku może mieć O(n²), np. przy bardzo niekorzystnym wyborze pivota.

Co oznacza zapis O(n²) w praktyce?

Oznacza, że czas działania algorytmu rośnie kwadratowo względem liczby danych. Dwukrotne zwiększenie liczby elementów może dać około czterokrotnie więcej operacji.

Jak rozpoznać algorytm o złożoności kwadratowej w kodzie?

Często widać dwie pętle zagnieżdżone, z których każda zależy od liczby elementów n. Przykładem jest porównywanie wielu par elementów tablicy.

Dlaczego w pytaniu poprawną odpowiedzią nie jest sortowanie szybkie?

W typowym ujęciu egzaminacyjnym sortowanie szybkie ma średnią złożoność O(n log n). O(n²) jest możliwe tylko w najgorszym przypadku, natomiast klasycznym przykładem O(n²) jest sortowanie bąbelkowe.

Dlaczego dokumentacja kodu jest ważna w pracy zespołowej?

Ułatwia innym programistom zrozumienie działania aplikacji i ogranicza zależność od jednej osoby. Dzięki niej zespół może szybciej rozwijać i poprawiać projekt.

Czym różni się dokumentacja kodu od komentarzy w kodzie?

Komentarze są częścią dokumentacji, ale dokumentacja kodu może obejmować też opisy funkcji, klas, strukturę projektu, instrukcję uruchomienia i zasady konfiguracji.

Jakie informacje warto umieścić w opisie funkcji?

Należy opisać cel funkcji, znaczenie parametrów, wartość zwracaną oraz ewentualne sytuacje wyjątkowe. Dobrze, jeśli opis pomaga użyć funkcji bez analizowania całej implementacji.

Czy przygotowanie repozytorium projektu jest zadaniem zespołowym?

Repozytorium służy całemu zespołowi, ale jego techniczne utworzenie i konfigurację często wykonuje jedna wyznaczona osoba. Zespół powinien jednak ustalić zasady pracy z repozytorium.

Jaka jest różnica między dokumentacją kodu a testem jednostkowym?

Dokumentacja opisuje, jak działa kod i jak go używać. Test jednostkowy sprawdza automatycznie, czy konkretna funkcja działa zgodnie z oczekiwaniami.

Jak przegląd kodu może pomóc w utrzymaniu dokumentacji?

Podczas przeglądu kodu zespół może sprawdzić, czy nowe funkcje są opisane, a istniejąca dokumentacja jest nadal aktualna. To zmniejsza ryzyko powstania nieczytelnego kodu.

Co oznacza spójność dokumentacji w projekcie?

Spójność oznacza stosowanie podobnego stylu opisu, nazewnictwa i formatu w całym projekcie. Dzięki temu dokumentacja jest łatwiejsza do czytania i utrzymania.

Co robi funkcja fun1 przedstawiona w pytaniu?

Funkcja zwraca wartość bezwzględną argumentu. Jeśli liczba jest ujemna, mnoży ją przez -1, a jeśli jest dodatnia lub równa zero, zwraca ją bez zmian.

Dlaczego dla argumentu dodatniego 2 poprawnym wynikiem funkcji fun1 jest 2?

Warunek `number < 0` nie jest spełniony, więc funkcja nie zmienia wartości argumentu. Zwracana jest ta sama liczba, czyli `2`.

Jaką rolę pełni funkcja expect w teście automatycznym?

`expect` służy do zapisania oczekiwania wobec wyniku testu. W połączeniu z `toBe()` sprawdza, czy otrzymana wartość jest dokładnie taka, jak zakładano.

Dlaczego odpowiedź C jest poprawnym testem dla liczby dodatniej?

Wywołuje `fun1(2)` i sprawdza, czy wynik jest równy `2`. To odpowiada działaniu funkcji dla argumentów dodatnich.

Dlaczego odpowiedzi B i D są błędne?

Zakładają, że dla dodatniego argumentu funkcja zwróci liczbę ujemną. Funkcja `fun1` nie zmienia znaku liczb dodatnich.

Dlaczego odpowiedź A nie jest poprawnym testem?

Sprawdza warunek `result === result + 1`, który dla zwykłych liczb jest fałszywy. Test nie opisuje poprawnego oczekiwanego wyniku funkcji.

Czym jest test jednostkowy funkcji?

Test jednostkowy sprawdza mały fragment programu, np. pojedynczą funkcję. W tym przypadku testowana jest funkcja `fun1` dla konkretnych danych wejściowych.

Czym jest parafrazowanie w rozmowie z klientem?

Parafrazowanie polega na powtórzeniu sensu wypowiedzi klienta własnymi słowami. Służy sprawdzeniu, czy dobrze zrozumiano jego potrzeby.

Dlaczego odpowiedź D jest przykładem parafrazy?

Bo nie zadaje nowego pytania ani nie interpretuje emocji, tylko oddaje sens wypowiedzi klienta innymi słowami. Klient mówi o szybkim działaniu przy różnej liczbie użytkowników, a odpowiedź D ujmuje to jako efektywną obsługę różnych obciążeń.

Czym różni się parafrazowanie od zadawania pytań doprecyzowujących?

Parafrazowanie sprawdza zrozumienie już usłyszanej wypowiedzi. Pytania doprecyzowujące służą zdobyciu dodatkowych informacji, np. o liczbie użytkowników lub oczekiwanym czasie reakcji aplikacji.

Jakie wymaganie klient opisuje w zdaniu o szybkim działaniu aplikacji dla kilku i tysięcy użytkowników?

Klient opisuje wymaganie niefunkcjonalne dotyczące wydajności i skalowalności aplikacji. Chodzi o to, aby system dobrze działał przy małym i dużym obciążeniu.

Dlaczego aktywne słuchanie jest ważne podczas analizy wymagań?

Pomaga uniknąć błędnego zrozumienia potrzeb klienta. Dzięki temu zespół może lepiej określić funkcje, ograniczenia i wymagania jakościowe aplikacji.

Czym różni się odzwierciedlanie emocji od parafrazowania?

Odzwierciedlanie emocji odnosi się do uczuć rozmówcy, np. niepewności lub obaw. Parafrazowanie odnosi się przede wszystkim do treści wypowiedzi i jej znaczenia.

Jak można poprawnie rozpocząć parafrazę w rozmowie biznesowej?

Można użyć zwrotów: „Jeśli dobrze rozumiem...”, „Czyli chodzi o...”, „Innymi słowy...”. Takie sformułowania pokazują, że rozmówca sprawdza poprawność zrozumienia.

Do czego służy typ char w Javie?

Typ `char` służy do przechowywania pojedynczego znaku, np. `'A'`, `'T'`, `'5'` lub `'#'`.

Jaka jest różnica między 'T' a "T" w Javie?

`'T'` to pojedynczy znak typu `char`, a `"T"` to napis typu `String`. W Javie ma to znaczenie, ponieważ są to różne typy danych.

Dlaczego zmienna typu int nie może przechować znaku T wprost?

`int` służy do przechowywania liczb całkowitych. Znak można powiązać z kodem liczbowym, ale bezpośrednio do przechowywania pojedynczego znaku używa się typu `char`.

Jakie wartości może przechowywać typ boolean?

Typ `boolean` może przechowywać tylko dwie wartości: `true` albo `false`. Nie służy do przechowywania liter ani liczb.

Czy char jest typem prostym w Javie?

Tak. `char` jest jednym z typów prostych w Javie, obok m.in. `int`, `float`, `double` i `boolean`.

Który typ w Javie służy do przechowywania tekstu?

Do przechowywania tekstu używa się typu `String`. Nie jest to typ prosty, lecz klasa reprezentująca ciąg znaków.

Co oznacza komunikat java.lang.ArithmeticException: / by zero?

Oznacza błąd arytmetyczny w Javie spowodowany próbą dzielenia przez zero. Dotyczy to także obliczania reszty z dzielenia, np. `x % y`, gdy `y` ma wartość 0.

Dlaczego wyrażenie x = x % y może spowodować wyjątek ArithmeticException?

Operator `%` oblicza resztę z dzielenia. Jeśli dzielnik `y` wynosi 0, Java zgłasza `ArithmeticException`, ponieważ dzielenie przez zero jest niedozwolone.

Czy błąd dzielenia przez zero w Javie pojawia się podczas kompilacji czy działania programu?

Najczęściej pojawia się w czasie działania programu, gdy rzeczywista wartość dzielnika okaże się równa 0. Program może się poprawnie skompilować, ale przerwać działanie podczas wykonywania instrukcji.

Jak można zabezpieczyć program przed dzieleniem przez zero?

Przed wykonaniem dzielenia lub operacji modulo należy sprawdzić, czy dzielnik nie jest równy 0. Można użyć instrukcji `if`, np. `if (y != 0)`.

Jaki wyjątek mogłaby spowodować instrukcja odwołująca się do tablica[6]?

Jeśli indeks 6 wykracza poza rozmiar tablicy, Java zgłosi `ArrayIndexOutOfBoundsException`. To inny błąd niż `ArithmeticException`.

Do czego służy blok try-catch w kontekście wyjątków w Javie?

Blok `try-catch` pozwala przechwycić wyjątek i obsłużyć go bez natychmiastowego zakończenia programu. Można w nim np. wyświetlić własny komunikat błędu.

Dlaczego stos nadaje się do realizacji funkcji undo?

Stos działa według zasady LIFO, czyli ostatni dodany element jest zdejmowany jako pierwszy. Dzięki temu można cofnąć najnowszą operację przed wcześniejszymi.

Co oznacza zasada LIFO?

LIFO oznacza Last In, First Out, czyli „ostatni wszedł, pierwszy wyszedł”. Jest to podstawowa zasada działania stosu.

Jakie podstawowe operacje wykonuje się na stosie?

Najważniejsze operacje to push, czyli dodanie elementu na szczyt stosu, oraz pop, czyli zdjęcie elementu ze szczytu stosu. Często występuje też peek/top, czyli podgląd ostatniego elementu bez usuwania.

Jak ograniczyć historię cofania do 20 operacji?

Po dodaniu nowej operacji należy sprawdzić liczbę elementów na stosie. Jeśli przekracza 20, trzeba usunąć najstarszą operację lub zastosować strukturę pomocniczą pozwalającą kontrolować limit.

Czym stos różni się od kolejki?

Stos działa według zasady LIFO, więc obsługuje najpierw ostatnio dodany element. Kolejka działa według zasady FIFO, czyli najpierw obsługuje element dodany najwcześniej.

Co powinno się stać, gdy użytkownik wybierze undo, a stos operacji jest pusty?

Aplikacja nie powinna wykonywać cofania. Może zablokować przycisk undo albo wyświetlić informację, że nie ma operacji do cofnięcia.

Jak działa StackLayout z ustawieniem Orientation="Vertical"?

Układa swoje bezpośrednie elementy potomne jeden pod drugim, od góry do dołu. W podanym kodzie główny StackLayout ustawia pionowo: Label, Image, wewnętrzny StackLayout i drugi Label.

Jak działa StackLayout z ustawieniem Orientation="Horizontal"?

Układa swoje bezpośrednie elementy potomne w jednym wierszu, obok siebie. Dlatego przyciski Like i Share znajdują się poziomo obok siebie.

Dlaczego nie wszystkie elementy w przykładzie są ułożone jeden pod drugim?

Ponieważ przyciski znajdują się wewnątrz zagnieżdżonego StackLayout, który ma Orientation="Horizontal". Tylko główne elementy nadrzędnego StackLayout są ułożone pionowo.

Co oznacza zagnieżdżenie jednego StackLayout wewnątrz drugiego?

Pozwala tworzyć bardziej złożone układy, np. całość pionowo, a wybrany fragment poziomo. W tym przykładzie wewnętrzny StackLayout odpowiada za poziome rozmieszczenie przycisków.

Jakie kontrolki występują w pokazanym kodzie XAML?

W kodzie występują Label do wyświetlania tekstu, Image do wyświetlenia obrazu oraz Button do tworzenia przycisków. Ich rozmieszczenie kontroluje StackLayout.

Co oznacza właściwość Text w kontrolkach Label i Button?

Właściwość Text określa napis widoczny na ekranie. Dla Label jest to wyświetlany tekst, a dla Button podpis przycisku.

Do czego służy właściwość Source w kontrolce Image?

Source wskazuje źródło obrazu, który ma zostać wyświetlony. W przykładzie obraz jest pobierany z pliku obraz.jpg.

Dlaczego Java jest poprawną odpowiedzią w kontekście Android Studio?

Java jest jednym z podstawowych języków używanych do tworzenia aplikacji na Androida. Android Studio obsługuje projekty pisane w Javie.

Do czego służy Android Studio?

Android Studio to zintegrowane środowisko programistyczne przeznaczone głównie do tworzenia aplikacji mobilnych na system Android.

Czy Swift jest używany do tworzenia aplikacji na Androida?

Swift jest kojarzony głównie z tworzeniem aplikacji na systemy Apple, takie jak iOS i macOS, a nie z typowym programowaniem aplikacji w Android Studio.

Czy Objective-C jest językiem używanym w Android Studio?

Objective-C jest językiem stosowanym głównie w starszych aplikacjach na platformy Apple. Nie jest standardowym językiem do tworzenia aplikacji Android w Android Studio.

Jakie języki są najczęściej kojarzone z programowaniem aplikacji Android?

Najczęściej są to Java i Kotlin. Java była przez wiele lat podstawowym językiem programowania aplikacji Android.