Kris Jamsa Wygraj Z C++ lekcja17


Lekcja 16LEKCJA 16
Przechowywanie wielu wartości w tablicach
Programy podczas wykonywania się przechowują informacje jako zmienne. W
przedstawionych dotychczas programach zmienne przechowywały w jednej chwili
tylko jedną wartość. Jednak w wielu wypadkach programom będzie potrzebne
przechowywanie wielu wartości, np. 50 wyników egzaminu, 100 tytułów książek czy
1000 nazw plików. Do tego służy specjalna struktura danych, nosząca nazwę
tablicy. Aby zadeklarować w programie tablicę, musisz podać typ wartości, jakie
ma przechowywać tablica, nazwę tablicy i liczbę jej elementów. Pod koniec tej
lekcji będziesz rozumiał następujące zagadnienia podstawowe:
Tablica jest strukturą danych, dzięki której jedna zmienna może przechowywać
wiele wartości.
W deklaracji tablicy musisz określić typ wartości, jakie ma przechowywać
tablica, a także liczbę jej elementów.
Wszystkie elementy w tablicy są tego samego typu, np. int, float czy char.
Aby wstawić element do tablicy, musisz podać numer indeksu w tablicy, pod
którym dana wartość ma być umieszczona.
Aby uzyskać dostęp do wartości przechowywanej w tablicy, podajesz w programie
nazwę tablicy i numer elementu.
Deklarując tablicę w programie można przy użyciu operatora przypisania nadać
wartości początkowe jej elementom.
Można w programach przekazywać tablice funkcjom, tak jak inne parametry.
Programy w C++ szeroko wykorzystują tablice. Gdy podczas lekcji 17 zaczniesz
operować na ciągach znaków (takich jak tytuł książki, nazwa pliku itd.),
będziesz mieć do czynienia z tablicami znaków.


Deklarowanie tablicy
Tablica to zmienna, która może przechowywać jedną lub więcej wartości. Tak jak
wszystkie zmienne, których używaliśmy w utworzonych dotychczas programach,
tablica musi być określonego typu (np. int, float czy char) i mieć
niepowtarzalną nazwę. Oprócz tego musisz podać liczbę wartości, jakie tablica
może przechowywać. Wszystkie elementy przechowywane w tablicy muszą być tego
samego typu. Innymi słowy, twój program nie może umieszczać w tej samej tablicy
wartości typu float, char i int. Poniższa deklaracja tworzy tablicę pod nazwą
wyniki_egzaminu, która może przechowywać 100 wyników z egzaminu, będących
liczbami całkowitymi:


Gdy kompilator C++ napotka taką deklarację, to przydzieli zmiennej
wyniki_egzaminu tyle pamięci, by mogła przechowywać 100 liczb typu int. Wartości
przechowywane w tablicy noszą nazwę elementów tablicy.
Tablice przechowują wiele wartości tego samego typu
Przy pisaniu bardziej złożonych programów możesz operować na wielu wartościach
tego samego typu. Na przykład twój program może przechowywać ceny 50 artykułów,
wiek 100 pracowników czy ceny hurtowe 25 towarów. Zamiast używać w programie 50,
100 czy 25 niepowtarzalnych nazw zmiennych możesz w C++ definiować jedną
zmienną, tablicę, która może przechowywać wiele powiązanych wartości
Aby zadeklarować tablicę, musisz podać jej typ, niepowtarzalną nazwę i liczbę
elementów, które tablica ma przechowywać. Na przykład poniższe instrukcje
deklarują trzy różne tablice:
float cena [50];
int wiek_pracownika [100];
float cena_hurtowa [25];


Dostęp do elementów tablicy
Jak już wiesz, tablica pozwala programom przechowywać wiele wartości pod tą samą
zmienną. Dostęp do konkretnej wartości w tablicy jest realizowany za
pośrednictwem indeksu, który wskazuje na dany element. Na przykład, aby uzyskać
dostęp do pierwszego elementu tablicy wyniki_egzaminu, powinieneś podać indeks
0. Drugi element jest dostępny poprzez indeks 1, a trzeci ma indeks równy 2. Jak
widać na rysunku 4, pierwszy element tablicy ma zawsze indeks równy 0, a ostatni
element ma indeks równy rozmiarowi tablicy minus 1.
Rysunek 4.
Jak C++ indeksuje elementy tablicy



Musisz zapamiętać, że w C++ zawsze pierwszy element ma indeks równy 0, a ostatni
ma indeks równy rozmiarowi tablicy minus 1. Przedstawiony poniżej program
TABLICA.CPP tworzy tablicę pod nazwą liczby przechowującą pięć wartości
całkowitych, a następnie przypisuje jej elementom liczby 100, 200, 300,400 i
500.
#include

void main(void)
{
int liczby [5]; //Deklaracja tablicy

liczby [0] = 100;
liczby [1] = 200;
liczby [2] = 300;
liczby [3] = 400;
liczby [4] = 500;

cout << "Tablica zawiera następujące wartości:" << endl;
cout << liczby [0] << ' ' << liczby [1] << ' ' << liczby [2]
<< ' ' << liczby [3] << ' ' << liczby [4] << endl;
}

Jak widzimy, program przypisuje pierwszą wartość elementowi 0 (liczby[0]), a
ostatnią wartość elementowi 4 (rozmiar tablicy (5) minus 1).
Masz dostęp do elementów tablicy poprzez wartość indeksu
Tablica pozwala przechowywać w programach wiele wartości pod jedną zmienną. Aby
uzyskać dostęp do konkretnego elementu tablicy, należy podać jego indeks. Krótko
mówiąc, wartość indeksu określa odpowiedni element tablicy. Wszystkie tablice
C++ są indeksowane od zera. Na przykład poniższa instrukcja przypisuje wartość
100 pierwszemu elementowi tablicy pod nazwą wyniki_egzaminu:
wyniki_egzaminu [0] = 100;
Program deklarując tablicę określa liczbę elementów, które tablica może
przechowywać. Na przykład następująca instrukcja deklaruje tablicę, która może
przechowywać 100 wartości typu int:
int wyniki_egzaminu [100];
Elementami tej tablicy będą wyniki_egzaminu [0] do wyniki_egzaminu [99].


Używanie zmiennej indeksowej
Typową operacją w programach używających tablic jest realizowanie dostępu do
elementów tablicy za pomocą zmiennej indeksowej. Na przykład, przy założeniu, że
zmienna i zawiera wartość 3, następująca instrukcja przypisuje liczbę 400
elementowi liczby[3]:
liczby[i] = 400;

Przedstawiony poniżej program PISZPARA.CPP przy użyciu zmiennej indeksowej i
wyświetla w pętli for elementy tablicy. Zmienna i jest inicjalizowana w pętli na
0, tak że odnosi się do elementu liczby[0]. Przetwarzanie pętli zostaje
zakończone, gdy i jest większe od 4 (indeksu ostatniego elementu tablicy):
#include

void main(void)
{
int liczby [5]; //Deklaracja tablicy
int i;

liczby [0] = 100;
liczby [1] = 200;
liczby [2] = 300;
liczby [3] = 400;
liczby [4] = 500;

cout << "Tablica zawiera następujące wartości:" << endl;

for (i = 0; i < 5; i++)
cout << liczby [i] << ' ';
}

Przy każdym zwiększaniu zmiennej i w pętli program ma dostęp do następnego
elementu tablicy. A teraz zrób eksperyment i zmień pętlę w programie na
następującą:
for (i = 4; i >= 0; i--)
cout << liczby [i] << ' ';

W tej pętli program będzie wyświetlać elementy tablicy od ostatniego do
pierwszego.


Inicjalizowanie tablicy przy deklaracji
Jak już wiesz, możesz w C++ nadawać zmiennym wartość początkową przy deklaracji.
Ta sama zasada ma zastosowanie dla tablic. Gdy deklarujesz tablicę, to możesz
określić jej wartości początkowe umieszczając je między lewą i prawą klamerką za
znakiem równości. Na przykład następująca instrukcja deklaruje i inicjalizuje
tablicę liczby:
int liczby[5] = {100, 200, 300, 400, 500};

W analogiczny sposób poniższa instrukcja deklaruje i inicjalizuje tablicę liczb
rzeczywistych pod nazwą zarobki:
float zarobki[3] = { 25000.0, 35000.0, 50000.0 };

Jeśli nie podasz wartości początkowych dla wszystkich elementów tablicy, to
większość kompilatorów języka C++ zainicjalizuje je na o. Na przykład poniższa
instrukcja nadaje wartości początkowe trzem elementom pięcioelementowej tablicy:
int liczby[5] = { 100, 200, 300 };

Program nie zainicjalizował elementów liczby[3] i liczby [4]. Niektóre
kompilatory nadadzą im wartość 0. Jeśli nie podasz w deklaracji rozmiaru
tablicy, którą inicjalizujesz, to C++ przydzieli jej tyle pamięci, aby mogła
przechowywać podane elementy. Na przykład następująca deklaracja tworzy tablicę,
która może przechowywać cztery liczby całkowite:
int liczby[] = {1, 2, 3, 4};



Przekazywanie tablic funkcjom
Podobnie jak dla większości zmiennych, możesz w swoich programach przekazywać
tablice funkcjom. Funkcja może nadawać tablicy wartości początkowe, dodawać
wartości umieszczone w tablicy czy wyświetlać elementy tablicy na ekranie. Jeśli
przekazujesz tablicę jako parametr funkcji, to w definicji funkcji musisz
określić typ tablicy, ale nie jest konieczne byś przy typie podawał jej rozmiar.
Liczbę elementów tablicy podajesz jako drugi parametr funkcji, np.
liczba_elementów (Uważaj, by przy wywołaniu podawać poprawnie rozmiar tablicy,
bo jeśli go przekroczysz, to program będzie pobierać losowe "śmieci" z pamięci):
void pewna_funkcja (int tablica[], int liczba_elementow)

Przedstawiony poniżej program FUNKTABL.CPP przekazuje tablicę funkcji
wypisz_tablice, która w pętli for wyświetla wartości umieszczone w tablicy:
#include

void wypisz_tablice (int tablica[], int liczba_elementow)
{
int i;

for (i = 0; i < liczba_elementow; i++)
cout << tablica[i] << ' ';

cout << endl;
}

void main(void)
{
int male_liczby[5] = {1, 2, 3, 4, 5};
int duze_liczby[3] = {1000, 2000, 3000};

wypisz_tablice (male_liczby, 5);
wypisz_tablice (duze_liczby, 3);
}

Jak widzimy, program po prostu przekazuje funkcji nazwę tablicy i podaje jako
parametr rozmiar tablicy:
wypisz_tablice (male_liczby, 5);

Przedstawiony poniżej program WCZYTAB.CPP przy użyciu funkcji czytaj_liczby
przypisuje elementom tablicy liczby trzy wczytane z klawiatury wartości:
#include

void czytaj_liczby (int tablica[], int liczba_elementow)
{
int i;

for (i = 0; i < liczba_elementow; i++)
{
cout << "Podaj liczbę " << i << ": ";
cin >> tablica [i];
}
}

void main(void)
{
int ilczby[3];

czytaj_liczby (liczby, 3)

cout << "Oto wartości tablicy" << endl;

for (i = 0; i < 3; i++)
cout << liczby [i] << endl;
}

Jak widzimy, program przekazuje funkcji nazwę tablicy. A funkcja przypisuje
wartości elementom tablicy. Z lekcji 10 wiesz, że, o ile funkcja nie przekazuje
funkcji adresu parametru, to nie może ona go zmienić (nadać mu wartości).
Jednak, jak widzimy na przykładzie tego programu, funkcja wczytaj_liczby zmienia
składowe parametru będącego tablicą. Jak dowiesz się z lekcji 20, w
rzeczywistości C++ przekazuje funkcjom tablice przy użyciu wskaźnika. Dzięki
temu funkcja może w odpowiedni sposób zmienić elementy tablicy.


Zapamiętaj
Podczas tej lekcji dowiedziałeś się, że programy mogą przechowywać wiele
wartości tego samego typu w tablicy. W programach w C++ tablice są szeroko
wykorzystywane. Podczas lekcji 17 zobaczysz, w jaki sposób programy w C++ przy
użyciu tablic przechowują ciągi znaków. Zanim jednak przejdziemy do lekcji 17
upewnij się, że opanowałeś już następujące zagadnienia podstawowe:
Tablica jest strukturą danych, dzięki której jedna zmienna może przechowywać
jedną lub więcej wartości tego samego typu.
Aby zadeklarować tablicę, musisz podać typ wartości, nazwę tablicy i liczbę
elementów, jakie tablica ma przechowywać.
Wartości przechowywane w tablicy noszą nazwę elementów tablicy.
Pierwszy element tablicy ma indeks 0 (tablica [0]). Ostatni ma indeks równy
rozmiarowi tablicy minus 1.
Dostęp do elementów tablicy w programach jest często realizowany poprzez
zmienną indeksową.
Gdy tablica jest parametrem funkcji, to w tej funkcji musi być określony typ i
nazwa tablicy, ale nie jej rozmiar.
Gdy program przekazuje funkcji tablicę, to powinien przekazywać również
parametr informujący funkcję o liczbie elementów tablicy.
Ponieważ C++ przekazuje tablice funkcjom przy użyciu adresu tablicy, funkcje
mogą zmieniać wartości przechowywane w tablicy.



WsteczSpis treściDalej



Wyszukiwarka

Podobne podstrony:
Kris Jamsa Wygraj Z C lekcja32
Kris Jamsa Wygraj Z C lekcja 5
Kris Jamsa Wygraj Z C lekcja23
Kris Jamsa Wygraj Z C lekcja38
Kris Jamsa Wygraj Z C lekcja35
Kris Jamsa Wygraj Z C lekcja20
Kris Jamsa Wygraj Z C lekcja27
Kris Jamsa Wygraj Z C lekcja34
Kris Jamsa Wygraj Z C lekcja18
Kris Jamsa Wygraj Z C lekcja25
Kris Jamsa Wygraj Z C lekcja14
Kris Jamsa Wygraj Z C lekcja36
Kris Jamsa Wygraj Z C lekcja 4
Kris Jamsa Wygraj Z C lekcja33
Kris Jamsa Wygraj Z C lekcja 7
Kris Jamsa Wygraj Z C lekcja30
Kris Jamsa Wygraj Z C lekcja12
Kris Jamsa Wygraj Z C lekcja28
Kris Jamsa Wygraj Z C lekcja 6

więcej podobnych podstron