Indeksowanie tablic na maturze z informatyki - od 0 czy od 1?

Opublikowano

Czy na maturze z informatyki indeksujemy od 0 czy od 1? Przykłady z arkuszy CKE, konsekwencje dla Pythona/C++ i oficjalna odpowiedź od CKE. Jak pisać, by nie tracić punktów.

Całe nagranie: ok. 7 min.


Każdy maturzysta przygotowujący się do egzaminu z informatyki prędzej czy później napotyka na problem, który może wywołać niemałe zamieszanie. W zadaniach algorytmicznych, które są stałym elementem arkuszy maturalnych, często mamy do czynienia z tablicami i napisami. I właśnie tutaj pojawia się kłopotliwa rozbieżność między specyfikacją zadań a rzeczywistością języków programowania.

Jeśli po tym tekście chcesz przećwiczyć więcej podobnych pułapek, zobacz też poradnik o funkcjach wbudowanych na maturze z informatyki oraz listę algorytmów na maturę z informatyki.

Problem w specyfikacji

W specyfikacjach zadań maturalnych regularnie spotykamy zapis wskazujący, że tablice czy napisy wejściowe powinny być indeksowane od 1 do n, gdzie n oznacza liczbę elementów.

Specyfikacja zadania maturalnego z informatyki z indeksowaniem od 1 do n

Weźmy prosty przykład: jeśli mamy napis „Mama”, to zgodnie ze specyfikacją pierwsze „M” znajduje się na indeksie 1, drugie „a” na indeksie 2, a ostatnie „a” na indeksie 4.

Przykład indeksowania napisu „Mama” od 1 zgodnie ze specyfikacją zadania

Brzmi logicznie, prawda? Problem w tym, że w językach programowania dostępnych na maturze - C++, Java i Python - domyślnie indeksuje się tablice i napisy od 0 do n-1. W tych językach dla tego samego napisu „Mama” pierwsze „M” znajduje się na indeksie 0, drugie „a” na indeksie 1, a ostatnie „a” na indeksie 3.

Przykład indeksowania napisu „Mama” od 0 w języku programowania

Dylemat maturzysty

Ta rozbieżność rodzi fundamentalne pytanie: czy, rozwiązując zadanie maturalne, należy indeksować zgodnie ze specyfikacją (od 1), czy wykorzystać naturalną konwencję języka programowania (od 0)? A może jeszcze ważniejsze: czy niezgodność z zapisem w specyfikacji może skutkować utratą punktów?
Przyjrzyjmy się konkretnemu przykładowi z matury z czerwca 2023 roku.

Zadanie 2.3 z matury z informatyki z czerwca 2023 z notacją s[1...n]

W zadaniu 2.3 znalazł się zapis: „Dana jest dodatnia liczba całkowita n oraz słowo s[1…n]”. Notacja 1…n jednoznacznie wskazuje na indeksowanie od 1, ale przecież w językach programowania słowa mają indeksy od 0.

Praktyczne konsekwencje problemu

Aby dostosować się do specyfikacji w języku programowania, maturzysta musiałby:

1. Stworzyć tablicę o jeden element większą - co rodzi pytanie, co zrobić z niewykorzystanym elementem na indeksie 0?

Tablica większa o jeden element używana do indeksowania od 1

2. W przypadku napisów dodać pusty znak na początku - co wydaje się całkowicie sztuczne i niepotrzebnie komplikuje kod.

Lista z pustym elementem na początku jako sposób na indeksowanie od 1 w Pythonie

Gdyby w arkuszach było wszędzie napisane, że indeksujemy od 0 do n-1, problemu w ogóle by nie było. To tym bardziej dziwne, że na maturze mamy dostępne właśnie te trzy języki, które naturalnie indeksują od zera.

Nasze stanowisko w sprawie indeksowania

Dotychczas zalecaliśmy uczniom „sztuczne” indeksowanie od 1, traktując to jako bezpieczniejszą opcję. Argumentowaliśmy, że zgodność ze specyfikacją chroni przed ewentualnymi zarzutami egzaminatora, który mógłby uznać indeksowanie od 0 za niedostosowanie się do wymagań zadania.

Oficjalna odpowiedź CKE - więcej pytań niż odpowiedzi

Postanowiliśmy zapytać Centralną Komisję Egzaminacyjną o oficjalne stanowisko w tej sprawie. Napisaliśmy następującą wiadomość:

„W specyfikacjach wielu zadań maturalnych (przykładowo zadanie 2.3 z czerwca 2023 r.) tablice są opisywane z użyciem indeksów od 1 do n (np. s[1…n], T[1…n]).
W przypadku implementacji rozwiązania w językach programowania, takich jak Python, C++ czy Java, standardowo stosowane jest indeksowanie od 0.
W związku z tym nasuwają się następujące pytania:
  1. Czy zapisanie elementów tablicy przez zdającego na indeksach od 0 do n-1, zgodnie z naturalną konwencją języka programowania, będzie uznane za niedostosowanie się do treści polecenia?
  2. Czy zdający powinien celowo zainicjalizować element tablicy pod indeksem 0 dowolną wartością, aby spełnić warunek indeksowania przedstawiony w zadaniu?
  3. W przypadku implementacji w Pythonie (który jest często wybieranym językiem przez maturzystów), aby zapisać wartości na indeksach od 1 do n zgodnie z poleceniem, konieczne jest zadeklarowanie tablicy o rozmiarze n+1 (ze względu na dodatkowy, niewykorzystany element pod indeksem 0). Czy taka forma implementacji jest wymagana i uważana za poprawną z punktu widzenia Centralnej Komisji Egzaminacyjnej?
Dodatkowo, jeżeli dysponują Państwo takimi informacjami, ciekawi nas również powód stosowania indeksowania tablic od jedynki zamiast od zera w treściach zadań maturalnych.”

Odpowiedź CKE okazała się zaskakująca

„Zdający powinien napisać rozwiązanie zgodne ze specyfikacją. Jeśli użyto pseudokodu nie ma problemu indeksowania tablic. W przypadku języków programowania można wykorzystać obydwa podejścia takie jak: zastosować tablicę o 1 większą, aby korzystać z indeksów od 1 do n, albo n-elementową tablicę i korzystać z indeksów od 0 do n-1, należy jednak pamiętać, aby wyniki były zgodne ze specyfikacją.”

Sprzeczność w odpowiedzi

Zauważcie paradoks: CKE stwierdza, że „zdający powinien napisać rozwiązanie zgodne ze specyfikacją”, a jednocześnie akceptuje oba podejścia do indeksowania. Jeśli w specyfikacji jasno napisano o indeksowaniu od 1 do n, to jak może być akceptowalne indeksowanie od 0?
Ta odpowiedź budzi więcej wątpliwości niż rozwiewa:

  • Czy wszyscy egzaminatorzy wiedzą o akceptacji obu podejść?
  • Co się stanie, jeśli egzaminator nie uzna rozwiązania z indeksowaniem od 0?
  • Czy w przypadku odwołania się do wyniku, punkty zostaną przyznane?

Proste rozwiązanie problemu

Od ponad 15 lat na maturze z informatyki występuje indeksowanie od 1 do n. Rozwiązaniem wszystkich problemów byłaby zmiana tej konwencji na indeksowanie od 0 do n-1. Taka modyfikacja:

  • Wyeliminowałaby rozbieżność między specyfikacją a językami programowania
  • Zakończyła niepewność uczniów co do poprawnego podejścia
  • Uprościła kod rozwiązań

Argument o pseudokodzie, który często indeksuje od 1, nie jest przekonujący - nic nie stoi na przeszkodzie, aby również w pseudokodzie stosować indeksowanie od 0.

Ten problem dotyczy szerszego zestawu zadań algorytmicznych. Jeśli układasz plan powtórki, zacznij od najczęściej powtarzających się schematów z artykułu algorytmy na maturę z informatyki, a potem sprawdzaj konkretne arkusze pod kątem przesunięcia indeksów o 1.

Konsekwencje obecnego stanu rzeczy

Aktualne podejście CKE generuje dwa poważne problemy:

  • Po pierwsze, utrudnia życie maturzystom. Jeśli zdający chce postępować zgodnie ze specyfikacją, musi tworzyć tablice o jeden element większe, co zwiększa ryzyko pomyłek algorytmicznych i utraty punktów.
  • Po drugie, podważa wiarygodność systemu. Tworzone są zadania ze specyfikacją niezgodną z dozwolonymi językami programowania, a następnie informuje się, że rozwiązanie musi być zgodne ze specyfikacją, jednocześnie akceptując rozwiązania z nią niezgodne.

Podsumowanie

Sytuacja z indeksowaniem tablic na maturze z informatyki wymaga interwencji. Obecny stan rzeczy wprowadza niepotrzebne zamieszanie, utrudnia przygotowania uczniów i podważa spójność systemu egzaminacyjnego.
Liczymy na to, że CKE przemyśli tę kwestię i wprowadzi jednoznaczne zmiany w przyszłych arkuszach maturalnych. Przejście na indeksowanie od 0 do n-1 rozwiązałoby wszystkie opisane problemy i dostosowałoby specyfikacje do rzeczywistości programistycznej.

Do tego czasu pozostaje nam informować uczniów o niejednoznaczności sytuacji i przygotowywać ich na oba scenariusze - choć nie powinno tak być w przypadku egzaminu państwowego.

Praktyczna zasada do zapamiętania: wybierz jedną konwencję indeksowania w rozwiązaniu, sprawdź pierwszy i ostatni element na małym przykładzie, a w odpowiedzi pilnuj zgodności wyniku z treścią zadania. To ogranicza ryzyko błędu o 1, który w zadaniach na napisach potrafi zepsuć całe rozwiązanie.


Komentarze

  • @JustARandomUsername2137
    21 listopada 2025 08:50
    ❤️ 2

    Uwielbiam kiedy oficjalna matura zmusza mnie do używania złych praktyk, jaką jest robienie tablicy o jeden większej co jest marnowaniem pamięci.

    • @mateuszoraczkmi
      21 listopada 2025 09:30

      Zgadzam się. Dlatego właśnie mówimy o tym głośno, z nadzieją, że w końcu zobaczymy na maturze zadanie, gdzie indeksowanie będzie od zera.

  • @WiktoriaG7
    7 sierpnia 2025 06:28
    ❤️ 3

    Wydaję mi się, że w drugiej części odpowiedzi od CKE chodzi o to, że możemy sobie indeksować od 0, ale musimy pamiętać, że gdy np. W zadaniu będą prosić o literę tekst[2] my musimy zwrócić tekst[1]. 🤔 Co nie zmienia faktu, że jest to niepotrzebne utrudnienie 🤷🏻‍♀️ ...

Indeksowanie tablic na maturze z informatyki - najczęściej zadawane pytania

CKE w odpowiedzi cytowanej w artykule dopuszcza oba podejścia: tablicę większą o 1 element i indeksowanie od 1 do n albo naturalne indeksowanie od 0 do n-1. Warunek jest jeden - wyniki muszą być zgodne ze specyfikacją zadania.

Indeksowanie od 1 bywa wygodne, gdy rozwiązujesz zadanie w pseudokodzie albo gdy chcesz przepisać oznaczenia z treści zadania bez dodatkowego tłumaczenia. W kodzie Pythona, C++ i Javy oznacza to zwykle dodatkowy element pod indeksem 0.

Samo indeksowanie od 0 nie powinno być problemem, jeśli program zwraca wyniki zgodne z poleceniem. Ryzyko pojawia się wtedy, gdy przez przesunięcie indeksów o 1 odczytasz zły znak, pominiesz pierwszy element albo wyjdziesz poza zakres tablicy.

Najpierw sprawdź skrajne pozycje: pierwszy znak, ostatni znak i przejście między sąsiednimi elementami. Na przykład dla napisu „Mama” łatwo zobaczyć, czy kod traktuje pierwsze „M” jako pozycję 1 z treści zadania, czy jako indeks 0 w języku programowania.

Powtórz zadania algorytmiczne, w których pojawiają się napisy, listy i ograniczenia funkcji wbudowanych. Pomocne będą artykuły: funkcje wbudowane na maturze z informatyki oraz lista algorytmów na maturę z informatyki.

© 2026 Software Bay. Design with ♥