[Pascal]Tablica z dziwnymi elementami- o co w niej chodzi?


(M4thy5) #1

Jakiś czas temu natknąłem sie na coś w stylu:

tablica:array[1..k] of ...

Już mnie mózg z myślenia rozbolał, co to może robić? przecież trzeba albo jasno określić rozmiar tablicy np 1..50, albo ewentualnie (jeśli sie tak da) a..k <-tu będzie 11 zmiennych. Ktoś sobie wstawił k by później coś tam dopisać czy taki zapis jest prawidłowy? Jeśli prawdiłowy to co on robi i do czego służy?


([alex]) #2

Owszem prawidłowy o ile wyżej napisano:

const k=25;

lub

const K:Integer=30;

zamiast integer może być również shortint, smallint, longint, byte, word, cardinal


(M4thy5) #3

A gdy nie ma określonego w const typu to jaki domyślnie jest przyjmowany?


([alex]) #4

Domyślnie żaden, to tak jak #define w C/C++


(M4thy5) #5
const K:Integer=30;

W jakim celu określa sie typ danych dla stałych (nie tylko w tym przypadku ale też ogólnie)?


([alex]) #6

Bo w paskalu tak naprawdę to nie jest stała. Można ją w każdej chwili zmienić. Oprócz tego ma swój adres w pamięci więc można ją np zapisać bezpośrednio do pliku.


(Popek010) #7

jak już wcześniej napisano - 'nie trzeba twardo określać' (powiedzmy) ilości elementów tablicy. W tym celu stosujemy stałą (const), którą w każdej chwili można zmienić.


([alex]) #8

Nie wie co miałeś na myśli pisząc ten post, bo ani jedno zdanie w nim nie ma sensu. Ilość elementów tablicy ma być określona na czas kompilacji (no chyba że zastosujemy tablice dynamiczną z paskala obiektowego np var t:array of double;). Owszem wartość "stałej" która ma przypisany typ można zmienić ale tylko jej pierwotna wartość znana podczas kompilacji decyduje o rozmiarze tablicy zadeklarowanej za pomocą tej stałej.


(Popek010) #9

Nie moją winą jest, że nie potrafiłeś dobrze zinterpretować mojego tekstu. Napisałem jak najprościej o tym, że ilość elementów w tablicy moża definiować przy użyciu stałej, którą w rzeczywistości możemy zmienić w kodzie źródłowym, jeszcze przed uruchomieniem programu (co umożliwia nam pewną 'elastyczność').

pozdrawiam