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 2 z 11.
Po czym rozpoznać, że algorytm odwraca ciąg znaków?
Najczęściej pętla zaczyna się od indeksu `length() - 1`, kończy na `0` i zmniejsza indeks (`i--`). Kolejne znaki są dopisywane do zmiennej wynikowej.
Jak działa metoda odwracająca ciąg znaków pokazana w zadaniu?
Pętla zaczyna od ostatniego znaku napisu i przechodzi do pierwszego. Każdy znak jest dopisywany do zmiennej wynikowej, dzięki czemu powstaje napis w odwrotnej kolejności.
Jak działa przedstawiona metoda krok po kroku?
Metoda przechodzi po znakach napisu od ostatniego do pierwszego i dopisuje je do zmiennej output. W efekcie zwraca napis w odwróconej kolejności.
Dlaczego ostatni znak ciągu w Javie ma indeks `length() - 1`?
Indeksowanie w Javie zaczyna się od `0`. Dla tekstu o długości `n` pierwszy znak ma indeks `0`, a ostatni `n - 1`.
Dlaczego poprawną odpowiedzią nie jest sprawdzanie palindromu?
Kod tylko tworzy odwrócony napis i go zwraca. Nie porównuje napisu wejściowego z jego odwróceniem, więc nie sprawdza, czy tekst jest palindromem.
Jak działa pętla for w pokazanej metodzie?
Pętla startuje od indeksu str.length()-1, czyli od końca napisu, i zmniejsza i aż do 0. Dzięki temu znaki są pobierane od końca do początku.
Do czego służy metoda `charAt()` w Javie?
Metoda `charAt(index)` zwraca znak znajdujący się pod wskazanym indeksem w ciągu znaków. Na przykład `"abc".charAt(1)` zwróci znak `'b'`.
Jaką rolę pełni w tym algorytmie pętla for?
Steruje przechodzeniem po kolejnych indeksach napisu od końca do początku. Dzięki temu znaki są pobierane w odwrotnej kolejności.
Jaką rolę pełni pętla for w tym algorytmie?
Steruje przechodzeniem po indeksach napisu od końca do początku. Dzięki temu znaki są pobierane w odwrotnej kolejności.
Jaką rolę pełni metoda charAt(i) w tym algorytmie?
Metoda charAt(i) zwraca znak znajdujący się na pozycji i w napisie. W tym zadaniu służy do pobierania kolejnych znaków od końca tekstu.
Czym różni się odwracanie ciągu od sprawdzania palindromu?
Odwracanie tworzy nowy tekst w odwrotnej kolejności. Sprawdzanie palindromu polega na ustaleniu, czy tekst czytany od przodu i od tyłu jest taki sam, np. `kajak`.
Do czego służy metoda charAt(i) w Javie?
Metoda charAt(i) zwraca pojedynczy znak z napisu o indeksie i. W tym zadaniu pobiera kolejne znaki od końca napisu.
Dlaczego ten algorytm nie sprawdza, czy napis jest palindromem?
Algorytm tylko tworzy odwróconą wersję napisu, ale nie porównuje jej z napisem wejściowym. Do sprawdzenia palindromu potrzebne byłoby porównanie obu ciągów.
Czy pokazany algorytm sortuje znaki w ciągu?
Nie. Algorytm nie porównuje znaków ani nie ustawia ich według wartości kodów ASCII/Unicode, tylko przepisuje je od końca do początku.
Jaka jest złożoność czasowa tego algorytmu?
Przejście po napisie odbywa się dla wszystkich jego znaków, więc podstawowo jest to O(n). W praktyce wielokrotne łączenie Stringów może być mniej wydajne, bo tworzy nowe obiekty.
Jaka jest różnica między odwracaniem ciągu a wyszukiwaniem znaku w ciągu?
Odwracanie zmienia kolejność wszystkich znaków w napisie. Wyszukiwanie polega na sprawdzeniu, czy konkretny znak występuje i ewentualnie na jakiej pozycji.
Jaki wynik zwróci funkcja odwracająca dla tekstu `program`?
Wynikiem będzie `margorp`, ponieważ znaki zostaną odczytane od ostatniego do pierwszego.
Jaki błąd lub niedoskonałość można zauważyć w przedstawionej metodzie?
Zmiennej output przypisano na początku pojedynczą spację, więc wynik będzie zaczynał się od spacji. Jeśli celem jest czyste odwrócenie napisu, powinno tam być pusty napis "".
Jaki błąd lub niedoskonałość można zauważyć w tej metodzie?
Zmiennej output przypisano na początku pojedynczą spację, więc wynik będzie zaczynał się od spacji. Jeśli celem jest czyste odwrócenie napisu, powinno być użyte pusty napis "".
Jakie znaczenie ma użycie typu String jako parametru i wyniku metody?
Metoda przyjmuje napis wejściowy i zwraca nowy napis jako wynik działania algorytmu. Nie modyfikuje bezpośrednio oryginalnego tekstu, tylko buduje nowy ciąg.
Dlaczego w praktyce do odwracania długich tekstów lepiej użyć `StringBuilder` niż konkatenacji `+=`?
Obiekty `String` w Javie są niemodyfikowalne, więc każda konkatenacja tworzy nowy obiekt. `StringBuilder` pozwala efektywniej budować wynikowy tekst.
Czym różni się odwracanie ciągu od wyszukiwania litery w ciągu?
Odwracanie zmienia kolejność wszystkich znaków w napisie. Wyszukiwanie litery polega na sprawdzeniu, czy dany znak występuje i ewentualnie na jakiej pozycji.
Jak krok po kroku prześledzić działanie tej metody dla napisu "kot"?
Pętla pobierze kolejno znaki: 't', potem 'o', potem 'k'. Po ich dopisaniu do wyniku otrzymamy napis "tok".
Dlaczego asertywność jest ważna w negocjacjach?
Asertywność pozwala jasno przedstawić swoje potrzeby i granice, nie atakując drugiej strony. Dzięki temu negocjator nie jest ani uległy, ani agresywny.
Jak cierpliwość wpływa na przebieg negocjacji?
Cierpliwość pomaga zachować spokój, analizować argumenty i nie podejmować pochopnych decyzji. Jest szczególnie ważna, gdy rozmowy są trudne lub trwają długo.
W jaki sposób cierpliwość wpływa na skuteczność negocjatora?
Cierpliwość pomaga spokojnie wysłuchać argumentów, nie podejmować pochopnych decyzji i dążyć do porozumienia krok po kroku. To szczególnie ważne w trudnych lub długich rozmowach.
Na czym polega intuicja negocjatora?
Intuicja to umiejętność wyczuwania nastroju, intencji i reakcji drugiej strony. Pomaga dobrać odpowiedni sposób komunikacji i moment na przedstawienie argumentów.
Co oznacza intuicja w pracy negocjatora?
Intuicja to umiejętność szybkiego wyczuwania intencji, nastroju i możliwych reakcji rozmówcy. Nie zastępuje wiedzy, ale pomaga lepiej ocenić sytuację i dobrać sposób działania.
Jakich cech powinien unikać negocjator?
Negocjator powinien unikać porywczości, buty, nadmiernej nieśmiałości i pesymizmu. Takie cechy utrudniają osiągnięcie porozumienia i mogą zaostrzać konflikt.
Jakie cechy utrudniają prowadzenie skutecznych negocjacji?
Przeszkadzają m.in. porywczość, buta, nieśmiałość i skrajny pesymizm. Takie postawy utrudniają komunikację, osłabiają zaufanie i mogą prowadzić do konfliktu zamiast porozumienia.
Dlaczego dobre przygotowanie jest ważne przed negocjacjami?
Przygotowanie pozwala znać swoje cele, argumenty, możliwe ustępstwa i granice. Dzięki temu negocjator podejmuje decyzje na podstawie faktów, a nie emocji.
Jak komunikacja werbalna i niewerbalna wspiera negocjacje?
Słowa przekazują argumenty i warunki, a mowa ciała pokazuje nastawienie, pewność siebie i otwartość. Spójność obu form komunikacji zwiększa wiarygodność negocjatora.
Jak skuteczny negocjator powinien reagować na konflikt?
Powinien zachować spokój, wysłuchać drugiej strony i skupić się na rozwiązaniu problemu. Ważne jest oddzielenie emocji od faktów.
Czy skuteczny negocjator powinien zawsze dążyć do wygranej za wszelką cenę?
Nie, celem negocjacji jest osiągnięcie możliwie korzystnego i trwałego porozumienia. Zbyt agresywne podejście może zniszczyć relacje i utrudnić dalszą współpracę.
Na czym polega hermetyzacja w programowaniu obiektowym?
Hermetyzacja polega na ukrywaniu danych i szczegółów implementacji klasy przed kodem zewnętrznym. Dostęp do nich odbywa się przez określone metody klasy.
Dlaczego pola klasy często oznacza się jako private?
Pola `private` nie mogą być bezpośrednio modyfikowane spoza klasy. Dzięki temu klasa może kontrolować poprawność zmian danych.
Jaką rolę w hermetyzacji pełnią modyfikatory dostępu?
Modyfikatory dostępu określają, które pola i metody są widoczne z zewnątrz klasy. Dzięki nim można ukryć elementy wewnętrzne, np. oznaczając je jako private.
Czym różni się hermetyzacja od dziedziczenia?
Hermetyzacja dotyczy ukrywania danych i kontroli dostępu do elementów klasy. Dziedziczenie pozwala tworzyć nowe klasy na podstawie już istniejących.
Dlaczego pola klasy często oznacza się jako prywatne?
Prywatne pola chronią dane przed niekontrolowaną zmianą z zewnątrz. Dostęp do nich odbywa się wtedy przez metody, które mogą sprawdzać poprawność danych.
Czym różni się hermetyzacja od polimorfizmu?
Hermetyzacja chroni wnętrze obiektu, a polimorfizm pozwala używać obiektów różnych klas przez wspólny interfejs. Są to różne zasady programowania obiektowego.
Do czego służą gettery i settery?
Gettery służą do odczytu wartości pól, a settery do ich kontrolowanej zmiany. Pozwalają zachować hermetyzację, zamiast udostępniać pola bezpośrednio.
Co oznacza funkcja zaprzyjaźniona w C++?
Funkcja zaprzyjaźniona, oznaczona słowem `friend`, może mieć dostęp do prywatnych i chronionych elementów klasy. Jest wyjątkiem od standardowego ograniczenia dostępu.
Dlaczego odpowiedź „wyjątki” nie pasuje do tego pytania?
Wyjątki służą do obsługi błędów i sytuacji wyjątkowych w programie. Nie są zasadą programowania obiektowego związaną z ukrywaniem elementów klasy.
Jakie są korzyści z ukrywania szczegółów implementacji klasy?
Ukrywanie implementacji zmniejsza ryzyko błędów i ułatwia późniejsze zmiany w kodzie. Użytkownik klasy korzysta z jej publicznego interfejsu, nie znając szczegółów działania.
Co oznacza modyfikator dostępu protected?
`protected` oznacza, że metoda lub pole jest dostępne wewnątrz klasy, w której zostało zdefiniowane, oraz w klasach po niej dziedziczących. Nie jest dostępne jak element publiczny z dowolnego miejsca programu.
Co oznacza modyfikator dostępu protected przy metodzie w klasie?
Metoda oznaczona jako protected jest dostępna wewnątrz tej klasy oraz w klasach, które po niej dziedziczą. Nie można jej zwykle wywołać bezpośrednio z kodu zewnętrznego na zwykłej instancji.
Czym różni się protected od public?
`public` pozwala korzystać z elementu z każdego miejsca programu, np. przez instancję klasy. `protected` ogranicza dostęp do samej klasy i klas pochodnych.
Czym różni się protected od public w programowaniu obiektowym?
public udostępnia metodę wszystkim fragmentom programu, a protected ogranicza dostęp do klasy bazowej i klas pochodnych. protected lepiej wspiera hermetyzację.
Czym różni się protected od private?
`private` pozwala na dostęp tylko wewnątrz tej samej klasy. `protected` dodatkowo umożliwia dostęp w klasach dziedziczących.
Dlaczego odpowiedź mówiąca o wywołaniu metody protected w programie głównym na instancji klasy jest błędna?
Bo protected nie daje dostępu z dowolnego miejsca w programie. Taka metoda nie jest przeznaczona do publicznego użycia przez kod zewnętrzny.
Czy metodę protected można wywołać bezpośrednio w programie głównym na obiekcie klasy?
Zwykle nie. Jeśli metoda jest `protected`, nie można jej wywołać tak jak metody publicznej, np. `obiekt.Metoda()`, spoza klasy lub klasy dziedziczącej.
Jaką rolę pełni metoda protected w klasie bazowej?
Pozwala udostępnić pewne mechanizmy klasom dziedziczącym bez wystawiania ich na zewnątrz. To częsty sposób budowania rozszerzalnych klas bazowych.
Jaki związek ma modyfikator protected z dziedziczeniem?
`protected` jest szczególnie używany przy dziedziczeniu, ponieważ pozwala klasom pochodnym korzystać z wybranych elementów klasy bazowej bez udostępniania ich całemu programowi.
Jak modyfikatory dostępu wpływają na hermetyzację klasy?
Pozwalają kontrolować, które elementy klasy są widoczne na zewnątrz, a które pozostają ukryte. Dzięki temu ogranicza się niepożądany dostęp do wnętrza obiektu.
Po co stosuje się modyfikatory dostępu w programowaniu obiektowym?
Służą do kontrolowania dostępu do elementów klasy. Pomagają realizować enkapsulację, czyli ukrywanie szczegółów implementacji i udostępnianie tylko potrzebnych operacji.
Jakie są najczęściej używane modyfikatory dostępu metod w językach obiektowych?
Najczęściej spotyka się public, private i protected, czasem także internal lub protected internal zależnie od języka. Każdy z nich określa inny poziom widoczności metody.
Czym jest środowisko IDE?
IDE to zintegrowane środowisko programistyczne, które łączy edytor kodu, narzędzia uruchamiania, debugowania i zarządzania projektem. Ułatwia tworzenie aplikacji.
Czym jest środowisko IDE i do czego służy programiście?
IDE to zintegrowane środowisko programistyczne, które łączy edytor kodu, kompilację, uruchamianie i debugowanie. Ułatwia tworzenie, testowanie i rozwijanie aplikacji.
Z jakim językiem programowania najczęściej kojarzą się IntelliJ IDEA, Eclipse i NetBeans?
Te środowiska IDE najczęściej kojarzą się z językiem Java. Szczególnie Eclipse i NetBeans są klasycznymi środowiskami używanymi do nauki i pracy z Javą.
Dlaczego IntelliJ IDEA, Eclipse i NetBeans są kojarzone przede wszystkim z językiem Java?
Te środowiska powstały głównie z myślą o programowaniu w Javie i mają bardzo dobre wsparcie dla tego języka. Umożliwiają wygodne tworzenie projektów Java, zarządzanie bibliotekami i debugowanie.
Dlaczego Visual Studio nie jest najlepszą odpowiedzią w tym pytaniu?
Visual Studio jest środowiskiem silnie kojarzonym z C#, C++ oraz platformą .NET. W pytaniu podano IntelliJ IDEA, Eclipse i NetBeans, które typowo wskazują na Javę.
Czy IntelliJ IDEA, Eclipse i NetBeans obsługują tylko Javę?
Nie, mogą obsługiwać także inne języki, często przez wtyczki lub dodatkowe moduły. Jednak ich podstawowe i najbardziej charakterystyczne zastosowanie dotyczy Javy.
Do czego służy maszyna wirtualna JVM?
JVM, czyli Java Virtual Machine, uruchamia bytecode wygenerowany z kodu Javy. Dzięki temu programy Java mogą działać na różnych systemach operacyjnych.
Jakie funkcje IDE są szczególnie przydatne podczas nauki i pracy w Javie?
Najważniejsze to podpowiadanie składni, automatyczne uzupełnianie kodu, wykrywanie błędów, debuger i refaktoryzacja. Dzięki nim programista szybciej pisze poprawny kod.
Jakie funkcje IDE są szczególnie przydatne podczas pisania programu w Javie?
Przydatne są podpowiedzi składni, automatyczne importy, wykrywanie błędów, uruchamianie programu i debugger. IDE pomaga też zarządzać klasami, pakietami i bibliotekami.
Czym różni się IDE od zwykłego edytora tekstu?
Edytor tekstu służy głównie do pisania kodu, a IDE oferuje dodatkowo narzędzia do kompilacji, uruchamiania, testowania i analizy programu. IDE jest więc bardziej kompleksowym środowiskiem pracy.
Czy IntelliJ IDEA, Eclipse i NetBeans obsługują wyłącznie Javę?
Nie, wiele IDE można rozszerzać i używać do różnych języków. Jednak ich podstawowe i najbardziej typowe zastosowanie w kontekście egzaminacyjnym to programowanie w Javie.
Jak rozpoznać w zadaniu egzaminacyjnym, że chodzi o Javę, a nie o inny język?
Wskazówką są nazwy środowisk takich jak IntelliJ IDEA, Eclipse i NetBeans, które najczęściej występują w kontekście Javy. Jeśli pytanie dotyczy ich podstawowego przeznaczenia, poprawną odpowiedzią zwykle jest Java.
Jak odczytać składowe RGB z zapisu koloru w formacie #RRGGBB?
Należy podzielić sześć znaków po znaku # na trzy pary: pierwsza para to R, druga to G, trzecia to B. Na przykład #AA41FF oznacza R=AA, G=41, B=FF.
Jak odczytuje się kolor zapisany w postaci #RRGGBB?
Zapis składa się z trzech par cyfr szesnastkowych: RR oznacza czerwony, GG zielony, a BB niebieski. Każda para opisuje natężenie danej składowej w zakresie od 00 do FF.
Jak przeliczyć dwucyfrową liczbę szesnastkową na system dziesiętny?
Pierwszą cyfrę mnoży się przez 16, a następnie dodaje wartość drugiej cyfry. Przykład: 41 hex to 4 × 16 + 1 = 65.
Jak przeliczyć wartość szesnastkową AA na system dziesiętny?
A w systemie szesnastkowym ma wartość 10, więc AA to 10×16 + 10 = 170. Dlatego składowa czerwieni wynosi 170.
Jakie wartości dziesiętne odpowiadają literom A-F w systemie szesnastkowym?
Litery oznaczają wartości od 10 do 15: A=10, B=11, C=12, D=13, E=14, F=15.
Jak przeliczyć wartość 41 z systemu szesnastkowego na dziesiętny?
Cyfra 4 stoi na pozycji szesnastek, a 1 na pozycji jedności, więc 4×16 + 1 = 65. To wartość składowej zielonej.
Dlaczego pojedyncza składowa RGB mieści się w zakresie od 0 do 255?
Jedna składowa RGB jest zwykle zapisywana na 8 bitach. 8 bitów pozwala zapisać 256 wartości, czyli od 0 do 255.
Dlaczego FF w zapisie koloru odpowiada wartości 255?
F to 15 w systemie szesnastkowym, więc FF to 15×16 + 15 = 255. Jest to maksymalna wartość jednej składowej RGB w 8-bitowym zapisie.
Jak zapisać kolor #AA41FF w funkcji CSS rgb()?
Po przeliczeniu składowych otrzymujemy AA=170, 41=65 i FF=255. Zapis CSS to rgb(170, 65, 255).
Jakie są dziesiętne składowe koloru #AA41FF?
AA to 170, 41 to 65, a FF to 255. Zatem kolor ma składowe RGB równe 170, 65, 255.
Jaka jest największa możliwa wartość dwucyfrowej liczby szesnastkowej?
Największa dwucyfrowa liczba szesnastkowa to FF. Po przeliczeniu daje 15 × 16 + 15 = 255.
Jakie błędy najczęściej pojawiają się przy zamianie koloru HEX na RGB?
Najczęstsze błędy to mylenie liter A-F z cyframi dziesiętnymi, zła kolejność składowych oraz pomijanie wartości pozycyjnej 16. Często też błędnie uznaje się, że 41 to 41 dziesiętnie, zamiast 65.
Jaką składnię ma tworzenie procedury składowej w MS SQL?
Podstawowa składnia to `CREATE PROCEDURE nazwa_procedury AS BEGIN ... END`. Najpierw podaje się polecenie `CREATE PROCEDURE`, a następnie nazwę procedury.
Jak poprawnie rozpocząć definicję procedury składowej w MS SQL?
Należy użyć składni `CREATE PROCEDURE nazwa_procedury`. W podanym pytaniu poprawny początek to `CREATE PROCEDURE dodajUsera`.
Do czego służy procedura składowa w MS SQL Server?
Procedura składowa przechowuje zestaw instrukcji SQL, które można wielokrotnie uruchamiać. Ułatwia organizację logiki bazy danych i automatyzuje operacje.
Dlaczego odpowiedź `create procedure dodajUsera` jest poprawna?
Ponieważ w MS SQL procedurę składową tworzy się poleceniem `CREATE PROCEDURE`, po którym następuje nazwa procedury. W tym przypadku nazwą jest `dodajUsera`.
Dlaczego kolejność słów kluczowych `CREATE PROCEDURE` ma znaczenie w SQL Server?
SQL Server wymaga ścisłej składni poleceń. Zapis `CREATE dodajUsera PROCEDURE` lub użycie `ADD` jest niepoprawne składniowo.
Jak wygląda podstawowa składnia tworzenia procedury składowej w SQL Server?
Podstawowy zapis to `CREATE PROCEDURE nazwa AS BEGIN ... END`. Najważniejsze jest zachowanie poprawnej kolejności słów kluczowych.
Dlaczego odpowiedź `create procedure dodajUsera` jest poprawna, a pozostałe nie?
W T-SQL obowiązuje kolejność słów kluczowych `CREATE PROCEDURE`, a dopiero potem nazwa procedury. Polecenie `ADD` nie służy do tworzenia procedur składowych.
Czy polecenie `ADD PROCEDURE` służy do tworzenia procedury składowej?
Nie. W MS SQL do tworzenia procedury używa się `CREATE PROCEDURE`, a nie `ADD PROCEDURE`.
Do czego służy procedura składowa w bazie danych?
Procedura składowa przechowuje zestaw instrukcji SQL wykonywanych pod jedną nazwą. Ułatwia automatyzację operacji, porządkuje logikę i może zwiększać bezpieczeństwo dostępu do danych.
Dlaczego zapis `create dodajUsera procedure` jest błędny?
W SQL Server po słowie `CREATE` musi wystąpić typ obiektu, czyli `PROCEDURE`, a dopiero potem jego nazwa. Zła kolejność powoduje błąd składni.
Jak uruchomić istniejącą procedurę składową w MS SQL?
Procedurę uruchamia się poleceniem `EXEC` albo `EXECUTE`, np. `EXEC dodajUsera;`.
Jak może wyglądać najprostsza procedura składowa w MS SQL?
Przykładowo: `CREATE PROCEDURE dodajUsera AS BEGIN SELECT 'OK' END`. Taka procedura po uruchomieniu wykona zapisane w niej instrukcje.
Jak uruchamia się wcześniej utworzoną procedurę składową?
Procedurę uruchamia się zwykle poleceniem `EXEC` lub `EXECUTE`, np. `EXEC dodajUsera`. Jeśli ma parametry, podaje się je po nazwie procedury.
Jak może wyglądać prosta procedura `dodajUsera` w MS SQL?
Przykładowo: `CREATE PROCEDURE dodajUsera AS BEGIN SELECT 'OK' END`. W praktyce procedura zwykle zawiera parametry i instrukcje `INSERT`, `UPDATE` lub `SELECT`.
Do czego służą parametry w procedurze składowej?
Parametry pozwalają przekazywać do procedury dane, np. login, hasło lub adres e-mail użytkownika. Dzięki temu jedna procedura może działać dla różnych wartości.
Czym różni się tworzenie procedury od jej uruchamiania w MS SQL?
Tworzenie odbywa się przez `CREATE PROCEDURE`, czyli zapisanie definicji w bazie. Uruchamianie wykonuje się zwykle poleceniem `EXEC nazwa_procedury`.
Czym różni się `CREATE PROCEDURE` od `ALTER PROCEDURE`?
`CREATE PROCEDURE` tworzy nową procedurę, a `ALTER PROCEDURE` modyfikuje już istniejącą. Użycie niewłaściwego polecenia może zakończyć się błędem.
Jaka jest różnica między procedurą składową a zwykłym zapytaniem SQL?
Zwykłe zapytanie wykonuje się bezpośrednio, natomiast procedura jest zapisana w bazie i może być wielokrotnie wywoływana po nazwie. Procedura może zawierać wiele instrukcji SQL.
Jakie błędy najczęściej pojawiają się przy zapisie polecenia tworzenia procedury?
Najczęstsze błędy to zła kolejność słów kluczowych, użycie nieistniejącego polecenia `ADD`, brak nazwy procedury albo pominięcie części z instrukcjami wewnątrz procedury.
Po co w procedurze stosuje się bloki `BEGIN` i `END`?
Bloki `BEGIN` i `END` grupują instrukcje należące do procedury. Dzięki temu kod jest czytelniejszy i łatwiejszy do rozbudowy.
Jak uruchamia się wcześniej utworzoną procedurę składową w MS SQL?
Najczęściej używa się polecenia `EXEC` lub `EXECUTE`, np. `EXEC dodajUsera`. Jeśli procedura ma parametry, podaje się je przy wywołaniu.
Na czym polega zasada LIFO w stosie?
LIFO oznacza Last In, First Out, czyli ostatni dodany element jest usuwany jako pierwszy. To podstawowa cecha stosu.
Po czym rozpoznać, że opisana struktura danych to stos?
Wskazuje na to zestaw operacji push, pop, peek i isEmpty. Charakterystyczne jest też usuwanie ostatnio dodanego elementu, czyli zasada LIFO.
Czym różni się metoda pop() od peek()?
`pop()` usuwa element ze szczytu stosu, a `peek()` tylko go odczytuje. Po `peek()` zawartość stosu się nie zmienia.
Co oznacza zasada LIFO w kontekście stosu?
LIFO oznacza Last In, First Out. Element dodany jako ostatni zostanie usunięty jako pierwszy.
Dlaczego podane metody wskazują właśnie na stos?
Metody `push`, `pop`, `peek` i `isEmpty` są typowym zestawem operacji stosu. Szczególnie ważne jest to, że `pop()` usuwa ostatnio dodany element.
Jaką rolę pełni metoda peek() i czym różni się od pop()?
peek() tylko odczytuje element ze szczytu stosu bez usuwania go. pop() zwraca ten element i jednocześnie usuwa go ze struktury.
Czym stos różni się od kolejki?
Stos działa według zasady LIFO, czyli usuwa najpierw ostatnio dodany element. Kolejka działa według FIFO, czyli usuwa najpierw element dodany jako pierwszy.
Dlaczego kolejka nie pasuje do podanych metod?
Kolejka działa zwykle według zasady FIFO, czyli pierwszy wszedł, pierwszy wyszedł. W pytaniu usuwany jest ostatnio dodany element, więc to nie kolejka.
Do czego można wykorzystać stos w programowaniu?
Stos stosuje się m.in. do obsługi wywołań funkcji, cofania operacji, odwracania danych oraz sprawdzania poprawności nawiasów w wyrażeniach.
Czy tablica i stos to to samo?
Nie. Tablica to sposób przechowywania danych, a stos to abstrakcyjna struktura danych z określonymi operacjami i zasadą działania.
Jakie są typowe zastosowania stosu w programowaniu?
Stos jest używany m.in. do obsługi wywołań funkcji, cofania operacji, sprawdzania nawiasów i przechodzenia rekurencyjnego przez dane.
Co sprawdza metoda isEmpty() i kiedy jest szczególnie potrzebna?
isEmpty() sprawdza, czy stos zawiera jakiekolwiek elementy. Jest ważna przed wykonaniem pop() lub peek(), aby uniknąć błędu odczytu z pustej struktury.
Co oznacza zapis List<int> w języku C#?
Oznacza listę, której elementami są wartości typu `int`, czyli liczby całkowite. Do takiej listy nie można dodać np. tekstu ani liczby rzeczywistej bez konwersji.
Co oznacza zapis `List<int>` w języku C#?
Oznacza listę generyczną, której elementy mają typ `int`. Taka kolekcja przechowuje liczby całkowite.
Czym różni się List<int> od List<double>?
`List<int>` przechowuje liczby całkowite, np. `1`, `25`, `-4`. `List<double>` przechowuje liczby rzeczywiste, np. `3.14` lub `2.5`.
Dlaczego do `List<int>` nie można dodać napisu lub liczby zmiennoprzecinkowej?
Ponieważ typ elementów został określony jako `int`. C# kontroluje zgodność typów już na etapie kompilacji.
Do czego służy metoda Add() w kolekcji List<T>?
Metoda `Add()` dodaje nowy element na koniec listy. Dodawany element musi być zgodny z typem określonym w `List<T>`.
Jak zmieni się znaczenie listy po użyciu `List<double>` zamiast `List<int>`?
Lista będzie wtedy przechowywać wartości typu `double`, czyli liczby rzeczywiste. Typ w nawiasach ostrych określa rodzaj danych w kolekcji.
Co oznacza litera T w zapisie List<T>?
`T` oznacza parametr typu w kolekcji generycznej. W konkretnym użyciu zastępuje się go typem, np. `int`, `string` albo `double`.
Jaką rolę pełnią nawiasy ostre w zapisie `List<T>`?
Służą do podania typu generycznego. To właśnie tam określa się, jakiego typu elementy będą przechowywane w liście.
Czym lista List<T> różni się od zwykłej tablicy w C#?
Tablica ma zwykle stały rozmiar po utworzeniu, a `List<T>` może dynamicznie zwiększać liczbę elementów. Lista udostępnia też wygodne metody, np. `Add()`, `Remove()` i `Contains()`.
Jakie są zalety używania kolekcji generycznych w C#?
Zapewniają bezpieczeństwo typów, czytelniejszy kod i mniej błędów. Nie wymagają też ręcznego rzutowania elementów.
Jak odczytać pierwszy element listy w C#?
Pierwszy element odczytuje się przez indeks `0`, np. `liczby[0]`. Indeksowanie w C# zaczyna się od zera.
Czym różni się `List<int>` od tablicy `int[]`?
Obie przechowują liczby całkowite, ale `List<int>` ma dynamiczny rozmiar i wygodne metody, np. `Add` czy `Remove`. Tablica ma zwykle stały rozmiar po utworzeniu.
Co oznacza zapis random.Next(0, dlPuli) w C#?
Losuje liczbę całkowitą z zakresu od 0 do dlPuli - 1. Górna granica podana jako drugi argument nie jest wliczana.
Jakie znaki mogą pojawić się w haśle tworzonym przez ten program?
Hasło może zawierać małe litery, wielkie litery oraz cyfry, ponieważ tylko takie znaki znajdują się w zmiennej `pulaZnakow`. Nie ma tam symboli specjalnych.
Dlaczego hasło z podanego kodu ma dokładnie 8 znaków?
Pętla `for` wykonuje się dla wartości `i` od 0 do 7, czyli łącznie 8 razy. W każdym obiegu do wyniku dopisywany jest jeden znak.
Ile znaków będzie miało wygenerowane hasło?
Dokładnie 8 znaków, bo pętla `for` wykonuje się dla `i` od 0 do 7, czyli łącznie 8 razy.
Czy podany kod gwarantuje, że hasło będzie zawierać małą literę, wielką literę i cyfrę?
Nie. Te znaki są dostępne w puli, więc mogą się pojawić, ale losowanie nie gwarantuje wystąpienia każdego rodzaju znaku.
Dlaczego odpowiedź mówiąca o symbolach specjalnych jest błędna?
W łańcuchu `pulaZnakow` nie ma znaków takich jak `!`, `@`, `#` czy `%`. Program losuje wyłącznie spośród znaków zapisanych w tej zmiennej.
Dlaczego odpowiedź o symbolach jest nieprawdziwa?
Pula znaków zawiera tylko litery i cyfry. Nie ma w niej symboli, więc kod nie może ich wylosować.
Dlaczego stwierdzenie „ma co najmniej 8 znaków” nie jest precyzyjne?
Program nie tworzy hasła o zmiennej długości, tylko zawsze dokładnie 8-znakowe. Sformułowanie „co najmniej” sugeruje możliwość dłuższego hasła, której tu nie ma.
Jaki błąd występuje w obliczaniu zakresu losowania w tym kodzie?
Zmienna `dlPuli` ma wartość `pulaZnakow.Length - 1`, a metoda `Next` nie wlicza górnej granicy. W efekcie ostatni znak puli nigdy nie zostanie wylosowany.
Jak działa metoda `Random.Next(0, dlPuli)` w tym kodzie?
Losuje indeks znaku z określonego zakresu, przy czym górna granica nie jest wliczana. To oznacza, że nie każdy znak z puli musi być faktycznie osiągalny, jeśli zakres ustawiono błędnie.
Jak poprawnie losować indeks znaku z całej puli znaków?
Należy użyć `random.Next(0, pulaZnakow.Length)`. Wtedy możliwe indeksy obejmują zakres od 0 do `Length - 1`.
Jaki błąd logiczny występuje w obliczeniu długości puli znaków?
Ustawiono `dlPuli = pulaZnakow.Length - 1`, a potem użyto tej wartości jako wyłącznej górnej granicy w `Next()`. W efekcie ostatni znak z puli nigdy nie zostanie wylosowany.
Jaka jest różnica między stwierdzeniem „hasło zawiera cyfry” a „hasło może zawierać cyfry”?
„Zawiera” oznacza pewność wystąpienia cyfry w wyniku. „Może zawierać” oznacza jedynie, że cyfra jest dostępna w puli znaków i może zostać wylosowana.
Jak poprawić kod, aby losował znaki z całej puli?
Należy użyć `pulaZnakow.Length` jako górnej granicy w `Random.Next()`, bez odejmowania 1. Wtedy losowanie obejmie wszystkie znaki zapisane w napisie.