Kolokwia i egzaminy
Co wypisze program? Jak ćwiczyć to zadanie z Javy na kolokwium
Opublikowano 22 października 20265 min czytania
Na kartce z kolokwium jest krótki program w Javie, a pod nim pytanie: „Co wypisze program?”. Czytasz kod, wygląda niewinnie, a mimo to na końcu jedna linijka się nie zgadza. To zadanie wraca na sprawdzianach w szkole, w technikum i na kolokwiach na studiach. Tutaj nauczysz się rozwiązywać je krok po kroku, poznasz pułapki, które prawie zawsze się w nim kryją, i dowiesz się, jak je celowo ćwiczyć.
Dlaczego to zadanie kosztuje tyle punktów
Gdy programujesz przy komputerze, to komputer mówi ci, jaki jest wynik. Na kolokwium to ty jesteś komputerem. To inna umiejętność niż pisanie kodu: musisz wykonać każdą linijkę dokładnie tak, jak wykonuje ją Java, a nie tak, jak byś chciał.
Większość błędów nie bierze się z tego, że ktoś nie rozumie pętli. Bierze się ze skrótów w głowie. „Widzisz”, że pętla wykona się cztery razy, i nie liczysz już ostatniego przebiegu. Albo przeoczysz, że 7 / 2 w Javie daje 3. Właśnie te szczegóły sprawdza to zadanie.
Jak to robić: krok po kroku
- Zacznij od
main. Tam startuje program. Metody nad nim wykonują się dopiero wtedy, gdy ktoś je wywoła. - Narysuj tabelę śledzenia. Każda zmienna dostaje kolumnę, każda zmiana nowy wiersz.
- Wykonuj każdą linijkę osobno. Bez skrótów, także przy trzecim przebiegu pętli.
- Od razu zapisuj wynik. Uważaj na
print(bez przejścia do nowej linii) iprintln(z przejściem). - Na końcu sprawdź spacje i linie. Brakująca spacja w
i + " " + jmoże kosztować punkt.
Przykład z tabelą śledzenia
public class Main { public static void main(String[] args) { int x = 1; for (int i = 0; i < 4; i++) { x = x * 2 + i; } System.out.println(x); }}
Tak wygląda tabela. Warunek i < 4 sprawdzasz przed każdym przebiegiem:
| i | i < 4? | x po przebiegu |
|---|---|---|
| – | – | 1 |
| 0 | tak | 1 · 2 + 0 = 2 |
| 1 | tak | 2 · 2 + 1 = 5 |
| 2 | tak | 5 · 2 + 2 = 12 |
| 3 | tak | 12 · 2 + 3 = 27 |
| 4 | nie | koniec pętli |
27
Na początku tabela wydaje się powolna. Na kolokwium jest szybsza niż druga próba, bo błąd znajdujesz od razu. Jeśli przebieg pętli for i while nie jest dla ciebie jeszcze oczywisty, najpierw przeczytaj artykuł o pętlach w Javie.
Pułapki, które prawie zawsze się pojawiają
Autorzy zadań lubią wstawiać miejsca, w których kod działa inaczej, niż wygląda. Większość należy do jednej z tych grup.
Dzielenie całkowite i łączenie Stringów
public class Main { public static void main(String[] args) { int a = 7; int b = 2; System.out.println(a / b); System.out.println(a % b); System.out.println(a / 2.0); System.out.println("Sum: " + a + b); System.out.println(a + b + " is the sum"); }}
3 1 3.5 Sum: 72 9 is the sum
7 / 2na dwóchintobcina część ułamkową i daje3. Dopiero z2.0Java liczy na liczbach zmiennoprzecinkowych.+jest obliczany od lewej do prawej. Jeśli po lewej stoi już String, wszystko dalej jest doklejane:"Sum: " + 7daje"Sum: 7", potem dochodzi2. W ostatniej linijce Java najpierw liczy7 + 2, bo po lewej nie ma jeszcze Stringa.
Stringi się nie zmieniają, tablice tak
public class Main { static void change(int n, int[] values) { n = 99; values[0] = 99; }
public static void main(String[] args) { String s = "Java"; s.toUpperCase(); System.out.println(s);
int i = 5; int j = i++ + ++i; System.out.println(i + " " + j);
int n = 1; int[] values = {1, 2}; change(n, values); System.out.println(n + " " + values[0]); }}
Java 7 12 1 99
s.toUpperCase()zwraca nowy String, asdalej jest"Java". Więcej w artykule o Stringach w Javie.i++najpierw zwraca starą wartość (5), a potem zwiększa do 6.++inajpierw zwiększa do 7 i zwraca 7. Czylij = 5 + 7 = 12, ai = 7.- Metoda dostaje przy
intkopię wartości. Przy tablicy dostaje referencję do tej samej tablicy. Dlategonzostaje 1, avalues[0]zmienia się na 99. Jak dokładnie działają parametry, opisuje artykuł o metodach i rekurencji.
Inne klasyki
- Granice pętli:
i < 5czyi <= 5? Zawsze policz pierwszy i ostatni przebieg. - Warunki bez klamer: po
if (x > 3)bez nawiasów klamrowych doifnależy tylko następna instrukcja. Zobacz instrukcje warunkowe w Javie. - switch bez break: jeśli brakuje
break, kod przechodzi dalej do kolejnych przypadków. - Rekurencja: każde wywołanie zapisz w osobnym wierszu i licz z powrotem od dołu do góry.
Jak dobrze ćwiczyć
Samo czytanie kodu nie wystarczy. Działa stały schemat:
- Najpierw przewiduj. Zapisz cały wynik, zanim cokolwiek uruchomisz.
- Potem porównaj. Uruchom program i porównaj linijka po linijce.
- Nazwij błąd. Dzielenie całkowite, jeden przebieg za dużo,
i++? Zanotuj to. Po kilku zadaniach zobaczysz, która pułapka łapie cię najczęściej. - Zmieniaj kod. Zamień
<na<=alboi++na++ii przewidź nowy wynik. - Ćwicz na papierze. Na kolokwium nie masz komputera. Jak się do tego przygotować, opisuje wpis Kolokwium z Javy na kartce.
Kolejność jest kluczowa. Kto najpierw uruchamia, a potem „analizuje”, trenuje tylko rozpoznawanie. ChatGPT może ci wyjaśnić wynik, ale przewidzieć musisz go sam. Jak sensownie używać przy tym AI, przeczytasz we wpisie Nauka Javy z ChatGPT.
Zadania „Co wypisze program?” w Jario
W Jario są osobne zadania typu „Co wypisze program?”. Widzisz program, wpisujesz swoją odpowiedź, a potem porównujesz ją z prawdziwym wynikiem. To dokładnie pasuje do schematu powyżej: najpierw myślisz, potem sprawdzasz.
Do tego dochodzi edytor w przeglądarce. Możesz wkleić do niego każdy przykład z tego wpisu, zmienić jedną linijkę i przyciskiem „Uruchom” od razu zobaczyć, co się stanie. Nie musisz niczego instalować. Jeśli nie rozumiesz, dlaczego wynik różni się od oczekiwanego, tutor AI daje wskazówkę małymi krokami, zamiast podawać gotową odpowiedź. Zadania mają poziomy od „Łatwe” do „Trudne”, a pierwsze dwa rozdziały są dostępne z darmowym kontem.
Jakie tematy ćwiczyć i w jakiej kolejności, żeby żadna pułapka cię nie zaskoczyła, pokazuje wpis Nauka Javy w dobrej kolejności.
W skrócie
- Zacznij od
maini wykonuj każdą linijkę osobno. - Używaj tabeli śledzenia, zwłaszcza przy pętlach.
- Uważaj na dzielenie całkowite, łączenie Stringów,
i++i++i, granice pętli i referencje do tablic. - Ćwicz zawsze w tej kolejności: przewiduj, uruchom, porównaj, nazwij błąd.
Powiązane artykuły do nauki
- PętlePętle w Javie w prosty sposób: for, while, do-while, break i continue z przykładami. Do tego typowe błędy, które kosztują punkty na kolokwium.Czytaj artykuł
- StringiStringi w Javie w prosty sposób: substring, charAt, split, equals i StringBuilder z przykładami. Do tego typowe błędy, np. porównywanie przez ==.Czytaj artykuł
- Metody i rekurencjaMetody w Javie w prosty sposób: parametry, return, przeciążanie, varargs i rekurencja z przykładami. Do tego typowe błędy, np. brakujący return.Czytaj artykuł
Więcej wpisów
- Kolokwia i egzaminyMatura z informatyki w JavieMatura z informatyki w Javie za 3 tygodnie: co sprawdzić w komunikacie CKE, plan nauki tydzień po tygodniu i jak ćwiczyć algorytmy, żeby zdobyć punkty.Czytaj dalej
- Kolokwia i egzaminyListy zadań bez zarywania nocyListy zadań i laboratoria z programowania: jak rozłożyć zadania na tydzień, przetestować kod przed oddaniem i dostać pomoc bez plagiatu, by zaliczyć przedmiot.Czytaj dalej
- Kolokwia i egzaminyEgzamin INF.04: programowanieEgzamin zawodowy INF.04 dla technika programisty: jak wygląda część pisemna i praktyczna, w jakich językach piszesz kod i jak się sensownie przygotować.Czytaj dalej