Tablice Zmiennych

2016-11-13 22:22
Jacek Labudda
												

Czym są te tablice?

Każda zmienna może przechowywać jedną wartość, co jest często dużą niedogodnością, ponieważ zostajemy zmuszeni do tworzenia dużej liczby nowych zmiennych. Żebym nie musiał się zbytnio rozpisywać, wytłumaczę to na pewnym przykładzie. W procesie tworzenia gry natrafiamy na problem, ponieważ będziemy chcieli, aby w grze było więcej graczy niż 1, np. chcemy 5-ciu graczy. No i każdy z nich musi mieć zapisaną między innymi pozycje do pewnej zmiennej. W takim przypadku potrzebujemy 10-15 zmiennych(w zależności czy gra 2D, czy też 3D). Ale jak by nasz program wyglądał?! Mniej więcej tak:
//przyklad pierwszy int posX1,posY1,posZ1, posX2,posY2,posZ2, posX3,posY3,posZ3, posX4,posY4,posZ4, posX5,posY5,posZ5; //POZYCJE GRACZY NA OSI XYZ
Można w takim przypadku użyć tablic jednowymiarowych lub wielowymiarowych, które spowodują, że nasz kod będzie krótszy i przejrzystszy. Aby utworzyć taką tablicę, podczas deklaracji naszej zmiennej, zaraz po nazwie dodajemy nawias kwadratowy, w który wpisujemy ile chcemy zadeklarować takich zmiennych(zadeklarowana ilość musi być liczbą całkowitą). int zmienna[wielkosc_tablicy];

Tablice jednowymiarowe

Tablice jednowymiarowe pozwalają nam na przypisanie tylko jednej wartości do jednej komórki tablicy. Przykład użycia tablic jednowymiarowych, na podstawie przykładu pierwszego:
//przyklad drugi int posX[5], posY[5], posZ[5]; //POZYCJE GRACZY NA OSI XYZ
Powyżej zadeklarowałem 3 tablice, które przechowują pozycje 5-ciu graczy. Przypisywanie wartości danemu elementowi tablicy wygląda podobnie do przypisywania wartości zwyczajnej zmiennej, z tym że musimy określić do której komórki się odwołujemy. zmienna[numer_komorki] = wartosc; Numerowanie zaczyna się od 0, oznacza to, że gdy zadeklarujemy 10 elementów tablicy, to ostatni element tej tablicy ma numer 9, tj. [n-1];
int zmienna[2]; zmienna[0]=0; zmienna[1]=1; //wypis jest rownie prosty cout << "zmienna[0] = " << zmienna[0] << ", zmienna[1] = " << zmienna[1];

Tablice wielowymiarowe

Działają na tej samej zasadzie co tablice jednowymiarowe z tym, że, w przypadku odwołania do elementu tabeli np. dwuwymiarowej, należy podać jego dwie pozycje. Przykład użycia tablic wielowymiarowych, na podstawie przykładu pierwszego:
//przyklad drugi int pos[5][3]; //[5]-liczba graczy, [3]-pozycje graczy //POZYCJE GRACZY NA OSI XYZ /*pos[0][0] pos[0][1] pos[0][2] pos[1][0] pos[1][1] pos[1][2] etc.*/
Przypisanie wartości wygląda tak samo jak w przypadku tablic jednowymiarowych. zmienna[kolumna][wiersz] = wartosc;

Tablica znaków - ciągi znaków

Teoretycznie zmienna typu char może przyjmować tylko jeden znak. Lecz tablice pozwalają nam na tworzenie ciągów znaków. Nie ma w tym nic magicznego. Każda komórka przyjmuje nadal jeden znak. Ale zbiór danych komórek tworzy nam zbiór, czyli ciąg znaków. Przykład użycia:
char ciag_znakow[]={"Kurs C++ - Tablice Zmiennych"}; cout << ciag_znakow << endl;
Pewnie zauważyłeś, że nie zadeklarowałem ilości elementów tablicy. A to dlatego, że kompilator sam obliczy jaka wielkość jest potrzebna do przechowania danej ilości znaków. Możemy również tworzyć kilka takich ciągów znaków:
char ciagi_znakow[2][100]={"Kurs C++ - Tablice Zmiennych", "Jakis ciag znakow"}; cout << ciagi_znakow[0] << endl; cout << ciagi_znakow[1] << endl; //dwa ciagi znakow o dlugosci maksymalnej stu znakow

Zużycie pamięci

Tworząc tabele należy trochę pomyśleć o naszym biednym PC'tku. Spójrz na przykład: int a = 4 bajty int a[10] = 4*10=40 bajtów int a[10][20] = 4*10*20=800 bajtów int a[10][20][30] = 4*10*20*30=24000 bajtów int a[10][20][30][40] = 4*10*20*30*40=960000 bajtów Takie tworzenie tablic może być pamięciożerne. Zatem należy deklarować odpowiednią maksymalną wielkość tablicy, jaką będziemy potrzebowali.

Użytkownicy
Logowanie:
Zaloguj
Polub nas na facebooku
Wyszukiwanie na stronie