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 16 z 20.

Do czego służą komentarze w kodzie źródłowym?

Komentarze opisują działanie kodu i ułatwiają jego zrozumienie. Nie są wykonywane przez program ani kompilowane jako instrukcje.

Jak zapisać komentarz jednoliniowy w Javie?

Komentarz jednoliniowy w Javie zaczyna się od `//` i obowiązuje do końca linii.

Jak zapisać komentarz wieloliniowy w Javie?

Komentarz wieloliniowy rozpoczyna się od `/*`, a kończy znakami `*/`. Może obejmować kilka linii kodu.

Czym różni się komentarz wieloliniowy od komentarza dokumentacyjnego Javadoc?

Komentarz wieloliniowy ma postać `/* ... */` i służy do zwykłego opisu kodu. Komentarz Javadoc ma postać `/** ... */` i może być użyty do generowania dokumentacji.

Czy komentarze wpływają na działanie programu w Javie?

Nie. Komentarze są ignorowane przez kompilator, więc nie zmieniają działania programu.

Czym różnią się typy całkowite od zmiennoprzecinkowych?

Typy całkowite, np. `int`, `short`, `long`, przechowują liczby bez części ułamkowej. Typy zmiennoprzecinkowe, np. `float` i `double`, przechowują liczby rzeczywiste, ale mogą mieć błędy zaokrągleń.

Dlaczego odpowiedź `float, double` nie jest poprawna w tym pytaniu?

`float` i `double` są typami zmiennoprzecinkowymi, a nie klasycznymi typami całkowitymi o stałej precyzji. Służą do przechowywania liczb z częścią ułamkową.

Do czego służy typ `int` w C++?

`int` służy do przechowywania liczb całkowitych, np. `-5`, `0`, `120`. Jest najczęściej używanym podstawowym typem całkowitym.

Czy `long long` jest typem całkowitym?

Tak, `long long` jest typem całkowitym i przechowuje liczby bez części ułamkowej. W podanym pytaniu odpowiedź z `long long` jest jednak błędna, ponieważ zawiera także `long double`, czyli typ zmiennoprzecinkowy.

Dlaczego odpowiedź z `bool`, `char` i `string` nie pasuje do pytania?

`bool` jest typem logicznym, `char` zwykle przechowuje znak, a `string` przechowuje tekst. Nie jest to grupa typowych typów numerycznych takich jak `int`, `short`, `long`.

Czy rozmiar typów `short`, `int` i `long` zawsze jest taki sam?

Nie zawsze. Dokładny rozmiar może zależeć od kompilatora i platformy, ale standard C++ określa relacje między ich minimalnymi zakresami.

Czym różni się język kompilowany od interpretowanego?

Język kompilowany jest przed uruchomieniem tłumaczony na kod wynikowy, często maszynowy. Język interpretowany jest wykonywany instrukcja po instrukcji przez interpreter.

Dlaczego poprawną odpowiedzią w tym pytaniu jest C++?

C++ jest typowym językiem kompilowanym do kodu maszynowego konkretnej architektury procesora. Program w C++ przed uruchomieniem zwykle wymaga kompilacji.

Dlaczego Java nie jest najlepszą odpowiedzią w tym pytaniu?

Java jest kompilowana głównie do bajtkodu, który uruchamia maszyna wirtualna JVM. Nie jest to bezpośrednio kod maszynowy konkretnego procesora.

Czy PHP i Perl wymagają kompilacji do kodu maszynowego przed uruchomieniem?

Zwykle nie. PHP i Perl są najczęściej wykonywane przez interpreter, dlatego nie wymagają klasycznej kompilacji do natywnego kodu maszynowego przed uruchomieniem.

Co oznacza, że kod maszynowy jest zależny od architektury procesora?

Oznacza to, że kod przygotowany dla jednej architektury, np. x64, może nie działać na innej, np. ARM. W takiej sytuacji program trzeba ponownie skompilować.

Jaką rolę pełni kompilator w C++?

Kompilator tłumaczy kod źródłowy C++ na kod wynikowy, najczęściej plik wykonywalny zawierający kod maszynowy. Dzięki temu program może zostać uruchomiony przez system operacyjny.

Na czym polega programowanie obiektowe?

Programowanie obiektowe polega na tworzeniu programu jako zbioru współpracujących obiektów. Obiekty są instancjami klas i zawierają dane oraz metody operujące na tych danych.

Czym jest obiekt w programowaniu obiektowym?

Obiekt to konkretny egzemplarz klasy, czyli instancja. Ma własny stan zapisany w polach oraz zachowanie opisane metodami.

Dlaczego poprawna odpowiedź mówi o instancjach klas?

W programowaniu obiektowym program nie jest zbiorem samych funkcji, lecz zbiorem obiektów. Obiekty powstają na podstawie klas i współpracują ze sobą, wykonując zadania aplikacji.

Czym różni się klasa od obiektu?

Klasa jest wzorcem opisującym cechy i zachowania. Obiekt jest konkretnym elementem utworzonym na podstawie tej klasy.

Dlaczego odpowiedź z funkcjami i zmiennymi globalnymi nie pasuje do programowania obiektowego?

Funkcje i zmienne globalne są charakterystyczne raczej dla podejścia proceduralnego lub strukturalnego. W programowaniu obiektowym dane i operacje powinny być grupowane w obiektach.

Czy programowanie zdarzeniowe i obiektowe mogą występować razem?

Tak. Na przykład aplikacje okienkowe często są obiektowe, bo używają klas i obiektów, oraz zdarzeniowe, bo reagują na kliknięcia i inne akcje użytkownika.

Co oznacza współpraca obiektów w aplikacji?

Obiekty mogą wywoływać swoje metody, przekazywać sobie dane i realizować wspólnie większe zadania. Dzięki temu aplikacja jest podzielona na logiczne części.

Na czym polega główna różnica między frameworkiem a biblioteką?

Biblioteka dostarcza funkcje, które programista sam wywołuje. Framework narzuca strukturę aplikacji i często sam wywołuje kod programisty.

Dlaczego poprawną odpowiedzią jest stwierdzenie, że framework określa strukturę aplikacji?

Framework zwykle definiuje sposób organizacji projektu, przepływ działania programu oraz miejsce, w którym programista dopisuje własną logikę.

Czy biblioteka może oferować wiele gotowych funkcji?

Tak. Biblioteka jest właśnie zbiorem gotowych funkcji, klas lub modułów, które można wykorzystać w programie.

Co oznacza określenie, że framework jest fundamentem aplikacji?

Oznacza to, że aplikacja jest budowana według zasad i struktury narzuconej przez framework, np. podziału na kontrolery, widoki, komponenty lub moduły.

Jakie są przykłady frameworków programistycznych?

Przykładami frameworków są Angular, Django, Symfony, ASP.NET Core czy Spring. Każdy z nich narzuca określony sposób tworzenia aplikacji.

Dlaczego odpowiedź o zbiorze funkcji bardziej pasuje do biblioteki niż do frameworka?

Ponieważ biblioteka jest używana jako zestaw narzędzi wywoływanych przez programistę. Framework pełni szerszą rolę: organizuje całą aplikację.

Co oznacza zasada „framework wywołuje twój kod”?

Oznacza to odwrócenie sterowania: programista pisze fragmenty logiki, a framework uruchamia je w odpowiednim momencie, np. po kliknięciu, żądaniu HTTP lub zmianie stanu aplikacji.

Do czego służy diagram Gantta w zarządzaniu projektem?

Diagram Gantta pokazuje zadania projektu na osi czasu. Umożliwia planowanie terminów, kontrolę postępu oraz sprawdzanie, kto odpowiada za dane zadanie.

Dlaczego diagram Gantta pasuje do śledzenia pracy członków zespołu?

Ponieważ pozwala przypisać zadania konkretnym osobom i obserwować ich realizację w czasie. Dzięki temu kierownik projektu widzi opóźnienia i zależności między zadaniami.

Czym diagram Gantta różni się od diagramu Venna?

Diagram Gantta służy do planowania i monitorowania zadań w czasie. Diagram Venna pokazuje relacje między zbiorami, np. część wspólną dwóch grup.

Czym diagram Gantta różni się od diagramu związków encji?

Diagram związków encji, czyli ERD, służy do projektowania struktury bazy danych. Diagram Gantta dotyczy harmonogramu projektu i realizacji zadań.

Czym diagram Gantta różni się od diagramu aktywności UML?

Diagram aktywności UML przedstawia przebieg procesu, decyzje i kolejność działań w systemie. Diagram Gantta przedstawia zadania projektu na osi czasu.

Jakie informacje najczęściej znajdują się na diagramie Gantta?

Najczęściej są to nazwy zadań, daty rozpoczęcia i zakończenia, czas trwania, zależności między zadaniami, osoby odpowiedzialne oraz stopień wykonania.

W jakich narzędziach można tworzyć lub śledzić diagram Gantta?

Diagramy Gantta można tworzyć m.in. w Microsoft Project, Excelu, Jira z dodatkami, ClickUp, Asanie, GanttProject lub innych narzędziach do zarządzania projektami.

Dlaczego długotrwałe korzystanie z klawiatury i myszki może powodować problemy z nadgarstkiem?

Powtarzalne ruchy dłoni i nieprawidłowe ułożenie nadgarstka mogą prowadzić do przeciążenia tkanek. W efekcie może dojść do ucisku nerwu pośrodkowego.

Których palców najczęściej dotyczą objawy zespołu cieśni kanału nadgarstka?

Najczęściej objawy dotyczą kciuka, palca wskazującego i palca środkowego, czyli palców 1-3. Może występować ból, drętwienie, mrowienie i zaburzenia czucia.

Jak odróżnić zespół cieśni kanału nadgarstka od zespołu suchego oka?

Zespół cieśni dotyczy nadgarstka i palców ręki. Zespół suchego oka dotyczy narządu wzroku i objawia się pieczeniem, suchością oraz zmęczeniem oczu.

Jakie elementy stanowiska pracy pomagają zmniejszyć ryzyko dolegliwości nadgarstka?

Pomaga ergonomiczna klawiatura i mysz, odpowiednia wysokość biurka, właściwe ustawienie krzesła oraz podparcie przedramion. Ważne jest też utrzymywanie nadgarstków w neutralnej pozycji.

Jakie przerwy warto stosować podczas wielogodzinnej pracy przy komputerze?

Warto robić krótkie, regularne przerwy na rozluźnienie dłoni, nadgarstków, ramion i pleców. Nawet kilkadziesiąt sekund ruchu co pewien czas zmniejsza przeciążenie.

Czym różni się kifoza od zespołu cieśni kanału nadgarstka?

Kifoza to wada lub nadmierne wygięcie kręgosłupa w odcinku piersiowym. Zespół cieśni kanału nadgarstka dotyczy ucisku nerwu w nadgarstku i objawów w dłoni.

Dlaczego zespół cieśni kanału nadgarstka jest przykładem ryzyka zawodowego programisty?

Programista często wykonuje powtarzalne ruchy dłoni i długo pracuje w jednej pozycji. Takie warunki pracy mogą zwiększać ryzyko przeciążeń układu mięśniowo-szkieletowego.

Dlaczego licznik instancji klasy powinien być polem statycznym?

Pole statyczne jest wspólne dla wszystkich obiektów danej klasy. Dzięki temu każda nowa instancja może zwiększać ten sam licznik, zamiast tworzyć własną kopię licznika.

Czym różni się pole statyczne od zwykłego pola obiektu?

Zwykłe pole należy do konkretnego obiektu i każdy obiekt ma własną wartość. Pole statyczne należy do klasy i jest współdzielone przez wszystkie jej obiekty.

W którym miejscu najczęściej zwiększa się licznik instancji klasy?

Najczęściej robi się to w konstruktorze klasy, ponieważ konstruktor jest wywoływany przy tworzeniu nowego obiektu.

Jak można odczytać wartość pola statycznego?

Pole statyczne zwykle odczytuje się przez nazwę klasy, np. Klasa.licznik. Nie trzeba tworzyć obiektu, aby dostać się do pola statycznego.

Czy metoda statyczna może korzystać bezpośrednio ze zwykłych pól obiektu?

Nie, metoda statyczna nie ma dostępu do konkretnej instancji obiektu. Może bezpośrednio korzystać tylko z innych elementów statycznych klasy.

Dlaczego odpowiedzi register, operator i virtual nie pasują do licznika instancji?

register dotyczy sugestii przechowywania zmiennej w rejestrze, operator wiąże się z operatorami, a virtual z metodami wirtualnymi i polimorfizmem. Do współdzielonego pola klasy służy static.

Do czego służy debugger w pracy programisty?

Debugger służy do analizowania działania programu w czasie jego wykonywania. Pozwala zatrzymać program, sprawdzić wartości zmiennych i wykonywać kod krok po kroku.

Czym jest breakpoint?

Breakpoint, czyli punkt przerwania, to miejsce w kodzie, w którym debugger zatrzymuje wykonywanie programu. Dzięki temu można sprawdzić aktualny stan programu.

Dlaczego debugger jest lepszy od samego wypisywania wartości zmiennych na ekran?

Debugger pozwala analizować program bez dodawania tymczasowych instrukcji wypisujących dane. Umożliwia też krokowe wykonywanie kodu i obserwowanie wielu zmiennych jednocześnie.

Jaka jest różnica między debuggerem a interpreterem?

Interpreter wykonuje kod programu napisanego w języku interpretowanym. Debugger służy do kontrolowania i analizowania działania programu, niezależnie od tego, czy kod jest interpretowany, czy kompilowany.

Co oznacza wykonywanie programu krok po kroku?

Oznacza uruchamianie kolejnych instrukcji programu pojedynczo pod kontrolą debuggera. Pozwala to dokładnie sprawdzić, w którym momencie pojawia się błąd.

Jakie informacje można odczytać podczas debugowania?

Można odczytać między innymi wartości zmiennych, aktualnie wykonywaną linię kodu, wynik warunków logicznych oraz stos wywołań funkcji lub metod.

Czym różni się typ prosty od typu złożonego?

Typ prosty przechowuje pojedynczą wartość, np. `int`, `char` lub `float`. Typ złożony może składać się z wielu elementów albo definiować własną strukturę danych, np. `class`, `struct`, `union`.

Dlaczego `float` nie jest typem złożonym?

`float` jest typem podstawowym służącym do przechowywania liczb zmiennoprzecinkowych. Nie grupuje pól ani nie definiuje własnej struktury danych.

Do czego służy `struct` w C++?

`struct` służy do grupowania kilku pól w jeden typ danych. Przykładowo struktura `Punkt` może zawierać współrzędne `x` i `y`.

Do czego służy `class` w C++?

`class` pozwala definiować własne typy obiektowe zawierające pola i metody. Jest podstawowym elementem programowania obiektowego.

Czym jest `union` w C++?

`union` to typ złożony, którego pola współdzielą ten sam obszar pamięci. W danym momencie sensownie przechowuje zwykle jedną z możliwych wartości.

Dlaczego odpowiedź `class, struct, union` jest poprawna?

Wszystkie trzy elementy są typami złożonymi. Pozostałe odpowiedzi zawierają typy proste, takie jak `float`, `char` lub `unsigned`.