Zadanie semestralne – wyjaśnienie

W związku z powtarzającymi się pytaniami dotyczącymi schematu działania programu podanego w opisie zadania semestralnego:

Wczytanie danych z pliku do tablicy;
while (!koniec_pracy)
Operacje na danych zapisanych w tablicy;
Zapisanie danych z tablicy do pliku.

o użyte w schemacie słowo „tablica”, wyjaśniam, że zostało ono użyte w kontekście ogólnym, jako sekwencja, tj. uporządkowana seria danych. Być może należało je zastąpić słowem „tabela”, tak aby nie kojarzyło się niepotrzebnie ze strukturą danych istniejącą w C i C++ zwaną tablicą. Wspomniana w schemacie „tablica”, bądź – trafniej ujmując – „tabela”, składa się z wierszy (rekordów) reprezentujących pojedyncze paczki danych o identycznej strukturze, ale oczywiście różnej treści. Każda paczka (zwana też encją) to reprezentacja jednego obiektu (pracownika, komputera, faktury, książki, etc.) i składa się z listy wartości pól tego obiektu.

Praktyczna realizacja tabeli w kodzie programu może polegać zarówno na zadeklarowaniu tablicy rekordów jak i listy dynamicznej rekordów (jedno- lub dwukierunkowej). Każde z tych rozwiązań będzie uważane za poprawne, o ile będzie też spełniało wymagania funkcjonalne opisane w zadaniu. W szczególności zwracam Państwa uwagę, aby unikać rozwiązania, w którym zakładane jest górne ograniczenie maksymalnej liczby rekordów przechowywanych w bazie danych, np. poprzez deklarację tablicy o ustalonym rozmiarze. Takie rozwiązanie będzie uważane za błędne. Jedynym ograniczeniem dla programu na rozmiar wczytywanych danych może być wyłącznie rozmiar dostępnej pamięci. Obejście tego ograniczenia w przypadku tablic wymaga realokowania nowego bloku danych w przypadku, kiedy dotychczas używany zostanie zapełniony. W przypadku list dynamicznych ten problem w ogóle nie istnieje, co wynika z samej budowy listy.