Więcej zmiennych i nowa pętla

Tablice i ostatnia pętla - for

Posted by Mrozo on February 13, 2015

Tablice

Tablica to nic innego jak zbiór zmiennych tego samego typu. Można ją sobie wyobrazić jako pojemnik, który przechowuje zmienne od lewej do prawej strony:

Tablice1.png

Każdy "pojemnik" to tak naprawdę komórka pamięci RAM. Każda z nich posiada własny, niepowtarzalny adres przedstawiany w postaci liczby w systemie szesnastkowym. Tablice "rezerwują" wskazaną ilość takich komórek. Po co? Załóżmy, że mamy 200 liczb i chcemy je gdzieś zapisać. Oznacza to, że będziemy musieli stworzyć 200 zmiennych int:

int liczba1 = 10;
int liczba2 = 15;
int liczba3 = 20;
int liczba4 = 25;
int liczba5 = 30;
... //i tak do 200!

Masakra. Ktoś mądry wpadł kiedyś na świetny pomysł i wymyślił tablice:

int liczba[200];

Właśnie stoworzyliśmy 200 zmiennych int. Mamy tablicę int o nazwie liczba, ale jak możemy dostać się do poszczególnych komórek? Nic prostszego:

//chcę zapisać wartość w pierwszej komórce:
liczba[0] = 10;
//chcę zapisać wartość w drugiej komórce:
liczba[1] = 15;
//chcę odczytać wartość z 150 komórki:
cout << liczba[149];
//ostatnia, dwusetna komórka to:
liczba[199]

Pamiętaj, że w tablicy zawsze liczymy elementy od 0!

w miejsce liczby możemy wpisać zmienną lub wykonać przeróżne obliczenia:

int x = 2;
liczba[x] = 10;
liczba[x+1] = 15;
cout << liczba[x];          //liczba[2]=10

Tablice - pomysł iście wspaniały, jednak aby zdeklarować zmienne w takiej tablicy i tak musimy wypisywać wszystkie jej elementy. To samo tyczy się odczytu wartości. Z pomocą nadchodzi pętla for.

Pętla for

Bardzo często potrzebowaliśmy powtórzyć jakiś fragment kodu okrśloną ilość razy. Używając pętli while można to zrobić w taki sposób:

int i = 0;
while(i<10)
{
  //kod
  i++
}

Skróty ułatwiające życie:

i++                               i=i+1

i--                               i=i-1

liczba += 10               liczba = liczba + 10

liczba -= 10               liczba = liczba - 10               

iczba *= 10                liczba = liczba * 10

liczba /= 10              liczba = liczba / 10

Pętla for powstała po to, aby nie deklarować niepotrzebnie zmiennej, której użyjemy tylko do określenia ilości powtórzeń kodu.

for(int i=0; i<10; i++)
{
  //kod
  x = x+1;
}

Wszystkie pętle są do siebie bardzo podobne, ta posiada wbudowany iterator. Iterator to zmienna, która decyduje ile razy powtórzy (ziteruje) się pętla. To właśnie od niego wzięła się nazwa zmiennej "i". W miejsce i++ możemy wykonywać inne działąnia np i += 5.

Teraz możemy w pełni zautomatyzować np wpisywanie wartości do tablicy:

int liczba[200];
for(int i=0; i<200; i++)
{
  cout << "Liczba" << i+1 << ":";
  cin >> liczba[i];
}

Efekt końcowy:

Liczba1:  //wpisujemy wartość
Liczba2:  //wpisujemy wartość
Liczba3:  //wpisujemy wartość
Liczba4:  //wpisujemy wartość
//i tak do 200 :D

Zadania

1. Stwórz tablicę int o rozmiarze 500. Program ma pokazywać dzielenie kolejnych liczb przez 2 zaczynając od 0. W każdej komórce ma znajdować się reszta z dzielenia numeru tablicy przez 2.
Przykład:

1. 0/2 = 0 reszta 0       //tab[0]=0
2. 1/2 = 0 reszta 1       //tab[1]=1
3. 2/2 = 1 reszta 0       //tab[2]=0
//i tak do 500 :D

2. Ulepsz swój kalkulator o opcję wyświetlenia ostatnich 10 wyników. Wykorzystaj do tego celu tablice i pętle for.

Wesołych ferii ;)