Podstawy
programowania I
Wykład nr 6 Tablice statyczne
autor: dr inż. Michał Łabowski
▪ michal.labowski@wat.edu.pl
▪ www.mlabowski.wel.wat.edu.pl
wersja 1.0
definicja Tablice:
• złożony typ danych (tablica jest tworzona na bazie innego typu)
• zbiór elementów tego samego typu, zajmujący ciągły obszar pamięci (elementy zapisywane są w pamięci jeden po drugim)
• deklaracja tablicy składa się z 3 elementów:
typ nazwa_tablicy[liczba_elem];
przykład – tablica 1000 elementów typu float o nazwie pomiary:
float pomiary[1000];
Numeracja elementów tablicy rozpoczyna się od zera!
Definiując w programie zmienne: float pomiary[5], float obwod_2, float obwod_1 ich reprezentacja w pamięci komputera może wyglądać w sposób następujący:
obwod_1
pomiary[0] pomiary[1] pomiary[2] pomiary[3] pomiary[4]
obwod_2
definicja
3
W przypadku tablic statycznych rozmiar tablicy musi być liczbą całkowitą, dodatnią i znaną w momencie kompilacji (co oznacza, że nie można go określić dopiero w trakcie działania programu, rozmiar zadajemy z góry).
Przykłady definicji tablic:
char litery[10]; tablica 10 elementów typu char o nazwie litery int liczby[5]; tablica 5 elementów typu int o nazwie liczby
Numeracja elementów tablicy:
• zaczyna się od zera
• tablica N-elementowa ma elementy o indeksach od 0 do N – 1,
• próba wpisania czegoś do nieistniejącego elementu o indeksie N nie wygeneruje błędu, spowoduje zniszczenie w pamięci czegoś, co znajdowało się w pamięci bezpośrednio za tablicą
tab[0] tab[1] tab[2] tab[3] inna_zmienna
element tab[4] nie istnieje, zatem wpisanie czegoś do tab[4] nadpiszę wartość zmiennej inna_zmienna
float tab[4];
0 1 2 3 indeksy
Element pierwszy
Element drugi
Element
trzeci Element
czwarty
inicjalizacja tablic Inicjalizacja zmiennej to nadanie jej początkowych wartości w momencie jej definiowania (tworzenia).
Tablica zdefiniowana jako zmienna globalna inicjowana jest zerami, tablica lokalna zawiera przypadkowe wartości.
Nr linii Opis
6 tablica 4 elementów typu int, o nazwie wyniki, w nawiasach klamrowych podane są wartości kolejnych elementów tablicy, zatem wyniki[0] = 2, wyniki[1] = 5 itd.
7 tablica 10 elementów typu int, w nawiasach klamrowych jest za mało
liczb, zatem żądane wartości początkowe zostaną nadane dwóm
pierwszym elementom tablicy, reszta zainicjowana zostanie zerami.
dostęp do elementów tablicy
5
Uzyskiwanie wartości przechowywanej w i-tym elemencie tablicy – w nawias kwadratowy wpisujemy numer elementu. Przypisanie tej wartości do zmiennej:
zmienna = tab[i];
Oczywiście wcześniej należy zdefiniować tę zmienną i tablicę, zmienna i elementy tablicy powinny być tego samego typu.
Przypisanie wartości do i-tego elementu tablicy – w nawias kwadratowy wpisujemy numer elementu:
tab[i] = wartosc;
Zadanie. Napisz program, który utworzy statyczną tablicę o nazwie tab, 11
elementów typu int, za pomocą pętli for przypisze każdemu i-temu elementowi
wartość 10 * i, za pomocą kolejnej pętli for wyświetli wartość każdego i-tego
elementu tablicy (treść komunikatu: Element nr … ma wartość …). Numer elementu
wyświetl w polu o szerokości 2 znaków, zaś jego wartość w polu o szerokości 3
znaków.
dostęp do elementów tablicy
Nr linii Opis
3 dyrektywa preprocesora powodująca zastąpienie w kodzie tekstu
ROZMIAR przez wartość 11 – zyskujemy elastyczność zmiany tej wartości
dostęp do elementów tablicy
7
Nr linii Opis
11 początek pętli for, licznik pętli (iterator) zmienia się od 0 do ROZMIAR-1 (dla i równego ROZMIAR warunek i < ROZMIAR nie jest spełniony, zatem ostatnia poprawna wartość i to 99), po każdym obiegi zmienna i jest inkrementowana, co pozwala przejść do kolejnego elementu tablicy
13 przypisanie i-temu elementowi tablicy wartości 10 * i
16 pętla for wykorzystana do wyświetlenia wartości elementów tablicy
18-19 Wypisanie wartości elementu tab[i]
tablice dwuwymiarowe Tablica dwuwymiarowa to tablica jednowymiarowa, której elementami są tablice jednoelementowe. Przykładowa tablica o 4 wierszach i 3 kolumnach (jest to tablica 4-elementowa, której elementy są tablicami 3-elementowymi) – int tab[4][3]:
tab[0][0] tab[0][1] tab[0][2]
tab[1][0] tab[1][1] tab[1][2]
tab[2][0] tab[2][1] tab[2][2]
tab[3][0] tab[3][1] tab[3][2]
• składnia: typ nazwa_tablicy[liczba_wierszy][liczba_kolumn]
• inicjalizacja tablicy dwuwymiarowej:
wiersz nr 0 wiersz nr 1
wiersz nr 2 wiersz nr 3
kolumna nr 0 kolumna nr 1 kolumna nr 2
tablice dwuwymiarowe
9
Dostęp do elementu w i-tym wierszu oraz j-tej kolumnie tablicy dwuwymiarowej:
• zapis:
tab[i][j] = wartość; np. tab[0][4] = 5;
interpretacja: przypisanie wartości 5 elementowi w zerowym wierszu i czwartej kolumnie tablicy.
• odczyt:
zmienna = tab[i][j]; np. int wyn = tab[0][4];
interpretacja: odczyt wartości przechowywanej w elemencie tablicy znajdującym się w zerowym wierszu i czwartej kolumnie i przypisanie tej wartości zmiennej wyn.
Zadanie 2. Utwórz tablicę 3x4 elementów typu int i przypisz kolejnym jej
elementom wartości będące wynikiem iloczynu numeru aktualnego wiersza i
aktualnej kolumny. Wyświetl rezultaty w formie:
tablice dwuwymiarowe
Nr linii Opis
7 definicja tablicy o nazwie tab, elementów typu int, posiadającej 4 wiersze i 3 kolumny.
9-17 Pętla for odpowiedzialna za przetwarzanie wierszy
tablice dwuwymiarowe
11