menu

darmowe eBooki

Programuję w Delphi i C++ Builder

okładka

Jak szybko nauczyć się programowania w dwóch różnych językach?

Sprawdź sam, czytając darmowy fragment eBooka Programuję w Delphi i C++ Builder.

Czy ta wiedza okazała się dla Ciebie przydatna? Chcesz wiedzieć więcej? Zobacz tutaj.

Google Adsense

migawka z forum

Dowcipy o programistach/informatykach

Witam, grunt to potrafić śmiać sie z samego siebie  ;DPrzychodzi informatyk do domu po pra...

Rysiek z "Klanu"

W związku z ogromnym poruszeniem we wszystkich mediach w naszym kraju, dotyczącym tak kultowej postaci jak Rysiek z &quo...

Propozycje zmian w serwisie Guide C++

Witam, ze względu na to że nie znalazłem podobnego tematu na forum, a mam kilka sugestii   ;) postanowiłem je ...

buttony

SDJ
vortal programistów
Vademecum sieci komputerowych
Soldiers'04 - fan klub Legii Warszawa
www.katalog.bajery.pl
katalog stron
katalog najlepszych stron
jestem w katalogu
Wszystko o C++
[zamknij]

Korzystamy z plików cookies i umożliwiamy zamieszczanie ich osobom trzecim. Pliki cookie pozwalają na poznanie twoich preferencji na podstawie zachowań w serwisie.
Uznajemy, że jeżeli kontynuujesz korzystanie z serwisu, wyrażasz na to zgodę.

jesteś w: Kurs C++ / Tablice
Szkoła Hakerów - Kurs Hackingu Bez Cenzury

Tablice

Tablice to kolenja rzecz, która może uprzyjemnić programowanie. Tablica to zbiór określonej liczby obiektów powiązanych w pewien logiczny związek. Wszystkie takie obiekty muszą być tego samego rodzaju. Nie można w tablicy umieścić kilku różnych zmiennych. Zaczniemy od najprostrzych tablic zawierających liczby. Oto przykład:

  1. int tablica_liczb [10];

To jest właśnie nasza tablica. Wystarczyło dodać tylko dwie klamerki oraz liczbę elementów, aby osiągnąć cel. Zwróć uwagę, że tablica taka, podobnie, jak zmienne nowo definiowane zawiera śmieci. Jeśli tylko chcemy to możemy dokonać inicjalizacji tablicy razem z definicją. Robi się to w taki sposób:

  1. int tablica [6] = {3,5,2,1};

Zauważ, że tablica jest sześcio elementowa. My podaliśmy jedynie cztery. W takiej sytuacji kompilator zakłada, że pozostałe dwa elementy mają zostać wyzerowane. Zatem zapis: int tablica[6] = {3,5,2,1}; jest jednoznaczny z: int tablica[6] = {3,5,2,1,0,0};. Idąc dalej tym tropem okaże się, że w prosty sposób możemy wyczyścić całą tablicę już przy definicji. Piszemy tak:

  1. int tablica [6] = {0};

Tym sposobem mamy sześcio elementową tablicę zawierającą liczby typu int. Dodatkowo wszystkie te liczby posiadają wartość zero. Jeśli korzystamy z takiej formy inicjalizacji tablic to możemy całkowicie pominąć jej rozmiar. Konkretniej:

  1. int tablica [] = {2,4,8,16};

Spowoduje, że otrzymamy cztero elementową tablicę wypełnioną odpowiednimi wartościami. Zauwż, że jawnie nie podaliśmy rozmiaru naszej tablicy, a jedynie wartości poszczególnych jej elementów. Kompilator wówczas przyjmie, że tablica ma posiadać tyle elementów, ile chcemy zainicjalizować, czyli cztery. Zobacz teraz, w jaki sposób można odnosić się do konkretnych elementów tablicy:

  1. int tablica_liczb [4] = {0}; //tablica zawiera same zera
  2. tablica_liczb [0] = 34; //zapisanie wartości 34 pod indexem 0
  3. tablica_liczb [1]++;//inkrementacja wartości spod indexu 1
  4. tablica_liczb [2] -= 23; //zmniejszenie wartości zapisanej pod indexem 2 o 23
  5. tablica_liczb [3] = tablica_liczb [0] + 7; //pod indexem 3 umieszczamy wartość elementu z indexu 0 powiększonego o 7
  6. //tablica_liczb [4] = 34; UWAGA!! tablica zawiera tylko 4 elementy!

Najpierw oczywiście definicja naszej cztero elementowej tablicy. Dla wygody zerujemy wszystkie elementy. Następnie kilka przykładowych operacji na elementach tablicy. Dostęp do elementów uzyskujemy dzieki operatorowi [] oraz podaniu odpowiedniego indexu. Zwróć uwagę na bardzo istotną rzecz! Elementy tablicy numerowane są od zera! Dlatego pierwszy element ma index [0], drugi - [1], trzeci - [2], czwarty - [3]. To koniec, więcej elementów nie ma. Zatem ostatnia linijka została opatrzona komentarzem. Należy o tym pamiętać i nie przekraczać zakresu tablicy, bo może to zaowocować nawet załamaniem programu!

tablice znakowe, czyli.. stringi :)

Do tej pory poznaliśmy jedynie tablice służące do przechowywania liczb. Były to liczby całkowite. Teraz zapoznamy się z tablicami znakowymi, nazywanymi ciągami znakowymi lub najkrócej - stringami. Stringi służa do przechowywania znaków, a co za tym idzie całych słów, fraz, wyrażeń. Jednym słowem wszelkiego rodzaju textu. Tradycyjnie wyjdźmy od przykładu:

  1. char string [30];

Nasz string jest 30-elementową tablicą typu char. Obecnie zawiera on jakieś śmieci, jak wszystko, co nie zostało zainicjalizowane. Aby wstawić do stringu jakiś konkretny text należy podstawić pod każdy z jego indexów odpowiednie znaki. Spójrz:

  1. string [0] = 'd';
  2. string [1] = 'o';
  3. string [2] = 'w';
  4. string [3] = 'o';
  5. string [4] = 'l';
  6. string [5] = 'n';
  7. string [6] = 'y';
  8. string [7] = ' ';
  9. string [8] = 't';
  10. string [9] = 'e';
  11. string [10] = 'x';
  12. string [11] = 't';
  13. string [12] = '\0';//to jest znak kończący string
  14. string [13] = 't';
  15. string [14] = 'e';
  16. string [15] = 'g';
  17. string [16] = 'o';
  18. string [17] = ' ';
  19. string [18] = 'n';
  20. string [19] = 'i';
  21. string [20] = 'e';
  22. string [21] = ' ';
  23. string [22] = 'm';
  24. string [23] = 'a';
  25. string [24] = '\0';

Jak widzisz taka zabawa w podstawianie. Oczywiście takie operacje w normalnych warunkach wykonuje się funkcją strcpy. O funkcjach bibliotecznych kiedy indziej. Ważne jest, abyś wiedział, jak to działa. Pamiętaj, że podstawiane znaki umieszczamy w apostrofach. Nie myl z cudzysłowami! String musi także posiadać znak kończący. Zwróć uwagę, że my wstawiliśmy znak końca stringu na pod indexem 12. W wyniku tego wszystko, co znajduje się za nim praktycznie nie istnieje. Mała wzmianka odnośnie inicjalizacji stringów. Definiując ciąg można od razu go zainicjalizować w taki sposób:

  1. char string [13] = "dowolny text"; //lub tak: char string[] = "dowolny text"

Zauważ, że nasz string mieści 13 znaków, zaś cały text dowolny text to 12 znaków. ten 13 znak to nasz znak kończący. Nie jest on widoczny, ale musi istnieć. Pamiętaj jeszcze, że taki sposób podstawienia textu do tablicy jest możliwy jedynie podczas inicjalizacji. Później tak nie można:

  1. char string [13] = "dowolny text"; //ok
  2. //char string = "inny text"; tak nie wolno!

rozmiar tablicy

Czasem zachodzi potrzeba pobrania rozmiaru tablicy bądź też ilości jej elementów. Można to zrobić korzystając z operatora sizeof

  1. int liczby [4];
  2. int rozmiar_tablicy = sizeof (liczby);//rozmiar tablicy w bajtach
  3. int ilosc_elementow_tablicy = rozmiar_tablicy / sizeof (int);//ilość elementów tablicy

tablice wielowymiarowe

Tablice wielowymiarowe to nic nadzwyczajnego, ale dobrze działa na wyobraźnię ;) Popatrz:

  1. int tabliczka [100] [20] [10];

Potrafisz sobie to wyobrazić? Tablica składa się ze 100 elenentów. Każdy z nich to także tablica zawierająca dodatkowo 20 elementów. Jakby tego było mało każda z 20 tablic zawiera jeszcze po 10 elementów :-/ Żeby było łatwiej powiem tak. Nasza tabliczka to blok mieszkalny, w którym znajduje się 100 wejść [pierwszy wymiar]. W każdej klatce jest oczywiście winda. Dzięki niej możemy się przemieszczać między piętrami. Pięter jest 20 [drugi wymiar]. Na każdym piętrze znajduje się po 10 mieszkań [trzeci wymiar]. Jeśli czegoś nie zrozumiałeś to nic nie szkodzi. Tak naprawdę tablice trójwymiarowe są stosowane sporadycznie. Częściej korzysta się z dwuwymiarowych, ale również rzadko. O ile sobie przypominam to nigdy nie korzystałem z tablic większych, niż dwuwymiarowe.

Podsumowując lekcję. Pamiętaj, że:

  1. Do elementów tablicy odnosimy się przy użyciu klamerek [] oraz indexu
  2. Definiując tablicę można ją łatwo wyzerować pisząc: int tablica[10] = {0};
  3. Elementy tablicy numerowane są od zera
  4. Przekroczenie zakresu tablicy stanowi poważne zagrożenie
  5. Tablice znakowe muszą zawierać znak kończący [ '\0' ]