profil

Tablice w jezyku C++

poleca 83% 2943 głosów

Treść
Grafika
Filmy
Komentarze

Tablice

W języku C++ jeśli mamy do czynienia z grupą zmiennych to możemy z nich zrobić tablicę.Tablica (ang. Array) jest strukturą, złożoną z określonej liczby elementów tego samego typu, które zajmują ciągły obszar w pamięci. Tablica składa się z elementów. Elementy tablicy mogą być typu: int, float, char, long, short, wskaźnikowego, mogą być również tablicami oraz klasami. Definicja tablicy składa się z typu, identyfikatora i wymiaru. Wymiar tablicy, który określa liczbę elementów zawartych w tablicy, jest ujęty w parę nawiasów prostokątnych ( [ ] ) i musi być większy lub równy jedności. Jego wartość musi być wyrażeniem stałym typu całkowitego, możliwym do obliczenia w fazie kompilacji (oznacza to, że nie wolno używać zmiennej do określenia wymiaru tablicy). Tablica jest to uporządkowany zbiór wielu zmiennych jednego typu. Typ tych zmiennych określa typ tablicy. Na przykład, jeśli w tablicy będziemy przechowywać liczby typu int, to tablica też jest typu int. Uporządkowanie tablicy oznacza, że jej elementy nie są przechowywane w niej ot tak, lecz każdy ma swoje miejsce.
Tablice są typem pochodnym. Znaczy to ,że bierze się jakiś typ danych np. int i z elementów takiego typu buduje się tablicę. Jest to wtedy tablica elementów typu int.
Jeśli występuje 20 zmiennych typu int, to można z nich zbudować tablicę:

int a[20];

Ta definicja rezerwuje w pamięci miejsce dla 20 liczb typu int. Rozmiar tak definiowanej tablicy musi być stałą, znaną już w trakcie kompilacji. Kompilator musi wiedzieć ile miejsca ma zarezerwować na daną tablicę.Do elementów tablicy dostajemy się przez nazwę tablicy albo obliczenie ich położenia w tablicy. Taka postać dostępu jest nazywana indeksowaniem, np. zapis:

int liczby[5];

deklaruje tablicę typu int, gdzie liczby[i] są nazywane zmiennymi indeksowanymi. Zmienne indeksowane są numerowane od zera, dlatego pierwszy element tablicy jest zawsze nazwany Tablica[0]. W zadeklarowanej wcześnie tablicy liczby pierwszym elementem jest liczba[0],drugim liczba [1]. Ogólnie mówiąc, Tablica [n] ma n elementów numerowanych odpowiednio od Tablica[0] do Tablica[n-1]:

t [0] t [1] t[2] t[3] t[4] .........t [n-1]

Każdy obiekt, niezależnie czy jest on standardowym typem C++ czy też został stworzony przez użytkownika, może być umieszczony w tablicy. Kiedy deklaruje się tablice to podajesz typ jej elementów i rozmiar tablicy. Kompilator, bazując na deklaracji klasy, oblicza ile musi zarezerwować dla deklarowanej tablicy. Klasa musi posiadać konstruktor domyślny, nie posiadający żadnych parametrów, gdyż jest on niezbędny w momencie definiowania klasy.

Dlatego tablica w powyższym przykładzie jest tablicą pięcioelementową, zawiera bowiem elementy o numerach: 0,1,2,3,4. Elementy te można wczytać z klawiatury dzięki funkcji scanf() lub też przypisać im wartość w kodzie programu. Ponieważ wszystkie elementy tablicy są typu int, zatem tablica ta też jest typu int. Nie może się zdarzyć, że jeden z elementów byłby innego typu
Deklarując po raz pierwszy prostą tablicę wbudowanych typów, takich jak int czy char, możemy ją zainicjalizować. Po nazwie tablicy umieść znak równości (=) oraz ujętą w nawiasy klamrowe listę rozdzielonych przecinkami wartości. Na przykład

int IntegerArray[5] = { 10, 20, 30, 40, 50 };

deklaruje IntegerArray jako tablicę pięciu wartości całkowitych. Przypisuje elementowi IntegerArray[0] wartość 10, elementowi IntegerArray[1] wartość 20, i tak dalej.
Gdy pominiemy rozmiar tablicy, zostanie stworzona tablica na tyle duża, by mogła pomieścić inicjalizujące je elementy. Jeśli napiszemy:

int IntegerArray[] = { 10, 20, 30, 40, 50 };

stworzymy taką samą tablicę, jak w poprzednim przykładzie.
Jeśli chcemy znać rozmiar tablicy, kompilator moż go obliczyć, aby go. Na przykład

const USHORT IntegerArrayLength = sizeof(IntegerArray) /
sizeof(IntegerArray[0]);

przypisuje stałej IntegerArrayLength typu USHORT wynik dzielenia rozmiaru całej tablicy przez rozmiar pojedynczego jej elementu. Wynik ten odpowiada ilości elementów w tablicy. Nie można inicjalizować więcej elementów niż wynosi rozmiar tablicy. Tak więc zapis

int IntegerArray[5] = { 10, 20, 30, 40, 50, 60 };

spowoduje błąd kompilacji, gdyż została zadeklarowana tablica pięcioelementowa, a my próbujemy zainicjalizować sześć elementów. Można natomiast napisać

int IntegerArray = {10, 20};

Dostęp do danych w tablicy jest dwustopniowy. Najpierw trzeba określić numer elementu w tablicy za pomocą operatora indeksowego ([ ]), a następnie za pomocą operatora kropka (.) odwołać się do odpowiedniej zmiennej lub funkcji wewnętrznej obiektu. Tablicę można już zainicjować w momencie deklaracji. Po nazwie tablicy należy postawić znak przypisania (=), a następnie w klamrach ({ }) podać wartość kolejnych elementów tablicy, np.:

int liczby[5]={5,10,15,20,25};

Tak wygląda przykładowa deklaracja i inicjalizacja pięcioelementowej tablicy liczb typu int. Elementowi liczby[0] zostaje przypisana wartość 5, elementowi liczby[1] wartość 10 itd.
Tablica może mieć dowolną nazwę, zgodną z zasadami nazywania zmiennych, ale nie może mieć takiej samej nazwy jak zmienna lub inna tablica wewnątrz danego zakresu. Dlatego nie można mieć jednocześnie tablicy o nazwie liczby[5] oraz zmiennej o nazwie liczby.
Opisywane wyżej tablice noszą nazwę tablic jednowymiarowych. W języku C++ występuje jeszcze pojęcie tablic wielowymiarowych, którą w razie potrzeby możemy zdefiniować. Wtedy dopisujemy przy definicji kolejną parę nawiasów kwadratowych i wpisujemy w nie kolejny rozmiar. Rozmiar musi być liczbą stałą, ewentualnie zmienną typu const. Można również tworzyć tablice dwu- i więcej wymiarowe. Są to tablice, których elementami są inne tablice. Deklaracja t1ablicy dwuwymiarowej może wyglądać tak:

int tablica[9][9];

Definicje tę, która jest deklaracją czytamy tak: jest to tablica 9 elementowa, z których każda. Jest dziewięcioelementową tablicą liczb typu int. Znaczy to, że tablica ma w sumie 100 elementów (np. 10 wierszy i 10 kolumn). Odwołanie do któregoś z elementów tej tablicy zapisujemy np.:

tablica[nr_kolumny][nr_wiersza];

Tablice, podobnie jak zmienne i funkcje wymagają przed użyciem deklaracji. Upraszczając problem - komputer musi wiedzieć ile miejsca zarezerwować w pamięci i w jaki sposób rozmieścić kolejne obiekty, czyli kolejne elementy tablicy. Obiektem w szerokim znaczeniu tego słowa jest każda liczba, znak, łańcuch znaków itp.. Takimi klasycznymi obiektami języki programowania operowały już od dawien dawna. Prawdziwe programowanie obiektowe w dzisiejszym, węższym znaczeniu rozpoczyna się jednak tam, gdzie obiektem może stać się także coś "nietypowego" - np. rysunek. Jest to jednak właściwy chyba moment, by zwrócić Ci uwagę, że z punktu widzenia komputera obiekt to coś, co zajmuje pewien obszar pamięci i z czym wiadomo jak postępować. Deklaracja:

int A[12];

oznacza: należy zarezerwować 12 KOLEJNYCH komórek pamięci dla 12 liczb całkowitych typu int (po 2 bajty każda). Jednowymiarowa tablica (wektor) będzie się nazywać "A", a jej kolejne elementy zostaną ponumerowane przy pomocy indeksu.
Specjalnym rodzajem tablic są tablice do przechowywania znaków(np.liter). Deklaracja takiej tablicy może mieć postać np.:

Char zdanie[80];

Ta definicja określa, że zdanie jest tablicą 80 elementów będących znakami. W tablicy tej można umieścić tekst, dzięki temu, że każdy z jej elementów nadaje się do przechowywania reprezentacji liczbowej znaków alfanumerycznych
Tablice są przeznaczone do przechowywania większej ilości zmiennych tego samego typu. Deklaracje tablicy wygląda jak deklaracja zmiennej, lecz po niej podajemy w nawiasach kwadratowych ilość elementów. np. tablica liczb całkowitych składająca się z 20 elementów:

int Liczby [20]; // tablica jednowymiarowa
int InneLiczby [10][10][5]; // tablica trójwymiarowa
int KolejneLiczby [3] = { 5, 10, 15 } // tablice inicjujemy podając wartości po przecinku pomiędzy klamrami.
char Tekst [] = "Jakiś tam tekst"; /* tablica znaków - nie podajemy rozmiaru, a kompilator i tak je zliczy wg. tekstu, którym ją zainicjalizowaliśmy */
char InnyTekst [11] = {'W','h','i','t','e','R','A','V','E','N','\0'}; /* jeśli inicjujesz tablicę kolejnymi znakami to pamiętaj o terminatorze NULL czyli znaku "\0" na końcu łańcucha. */

Aby odwołać się do któregoś z elementów tablicy postępujemy analogicznie:
Liczby [10] = 123;
InneLiczby [5][3][0] = 5;

Wykorzystując tablice upraszczamy sobie programowanie bo to właśnie przy ich wykorzystaniu możemy zamiast 12 zmiennych wprowadzić jedną zawierającą te dwunastkę. Jest to bardzo praktyczne rozwiazanie. Tablice są bardzo użyteczne w programowaniu w C++ bardzo ułatwiają życie programistom, dlatego są często wykorzystywane i stosowane.

Poniżej przykład tablicy w którym najpierw program ustala rozmiar tablicy a następnie po wprowadzeniu danych oblicza liczbę elementów dodatnich oraz ustala ich pozycję w tablicy.















Przykład:

#include
#include
#include
main()
{
clrscr();
const NMAX=200;
int i,n,tab[NMAX];
int *wtab;
int licznik=0;
cout<<"Podaj rozmiar tablicy: ";
cin>>n;
wtab=tab; //wtab zawiera adres el. tablicy o indeksie 0
cout<<"Wprowadz elementy tablicy\n";
for (i=0;i cin>>*(wtab+i);
cout< cout<<"Oto elementy tablicy\n";
for (i=0;i cout< cout< for (i=0;i if (*(wtab+i)>0)
{
cout<<"Element dodatni: "<<*(wtab+i)<<" na pozycji "< licznik++;
}
cout<<"Liczba elementow dodatnich "< getch();
return 0;
}

Załączniki:
Czy tekst był przydatny? Tak Nie
Przeczytaj podobne teksty

Czas czytania: 8 minut