Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych Algorytmy i podstawy informatyki

W strukturalnych językach programowania w celu przechowania informacji o 50 uczniach (ich imionach, nazwiskach, średniej ocen) należy użyć

A. struktury 50 elementów o składowych typu tablicowego.
B. klasy 50 elementów typu tablicowego.
C. tablicy 50 elementów o składowych strukturalnych.
D. tablicy 50 elementów o składowych łańcuchowych.

Pytanie z egzaminu CKE, czerwiec 2015 (arkusz E.14-X-15.05).

Najlepszym rozwiązaniem jest tablica 50 elementów, w której każdy element jest strukturą opisującą jednego ucznia. W praktyce wygląda to tak: tworzymy typ strukturalny, np. Uczen, a w nim pola: imie jako łańcuch znaków, nazwisko jako łańcuch znaków oraz srednia jako liczba rzeczywista, np. float albo double. Potem deklarujemy tablicę: klasa[50]. Dzięki temu klasa[0] oznacza jednego konkretnego ucznia, klasa[1] następnego i tak dalej. To jest bardzo czytelne i zgodne z dobrymi praktykami programowania strukturalnego, bo dane logicznie należące do jednej osoby są trzymane razem. Moim zdaniem to jedna z najważniejszych intuicji przy strukturach: nie rozrzucamy informacji po osobnych miejscach, tylko modelujemy obiekt z rzeczywistości jako rekord danych. Łatwo wtedy sortować uczniów po średniej, wyszukiwać po nazwisku, wypisywać listę klasy albo przekazywać dane jednego ucznia do funkcji. W językach takich jak C użyto by struct, w Pascalu record, ale idea jest ta sama: tablica przechowuje wiele rekordów, a każdy rekord ma pola różnych typów.
W tym pytaniu łatwo pomylić dwie rzeczy: przechowywanie wielu wartości tego samego typu oraz opisanie jednego obiektu, który ma kilka różnych cech. Uczeń nie jest tylko napisem ani tylko liczbą. Ma imię, nazwisko i średnią ocen, czyli zestaw powiązanych danych, najczęściej różnych typów. Dlatego sama tablica łańcuchów znakowych nie wystarcza, bo dobrze przechowa np. imiona albo nazwiska, ale nie opisze pełnego rekordu ucznia razem ze średnią liczbową. Można oczywiście kombinować i zapisywać wszystko jako tekst, ale to słaba praktyka: średniej nie da się wtedy wygodnie porównywać, sortować ani obliczać na niej statystyk bez konwersji. Konstrukcja oparta na jednej strukturze zawierającej tablice pól też bywa spotykana, np. osobna tablica imion, osobna nazwisk i osobna średnich, ale w klasycznym programowaniu strukturalnym przy takim zadaniu jest to mniej naturalne i łatwiej o pomyłkę indeksów. Jeśli imiona[7], nazwiska[7] i srednie[7] przypadkiem się rozjadą, dane ucznia przestają być spójne. Klasa natomiast kojarzy się z programowaniem obiektowym, a pytanie dotyczy języków strukturalnych i typów rekordowych. W takim kontekście nie tworzy się klasy 50 elementów typu tablicowego, tylko definiuje strukturę pojedynczego ucznia, a następnie tworzy tablicę 50 takich struktur. To prostsze, czytelniejsze i bliższe temu, jak takie dane projektuje się w normalnym kodzie.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.