Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawy programowania PP – LAB5 Wojciech Pieprzyca.

Podobne prezentacje


Prezentacja na temat: "Podstawy programowania PP – LAB5 Wojciech Pieprzyca."— Zapis prezentacji:

1 Podstawy programowania PP – LAB5 Wojciech Pieprzyca

2 Tablice (1) Tablica jest ciągiem danych złożonym z elementów tego samego typu. Kolejne elementy tablicy zajmują kolejne komórki w pamięci operacyjnej. Elementy tablicy numerowane są od zera (0) !!! Deklaracja typu tablicowego: typ nazwa[liczba_elementow]; Przykłady deklaracji: int liczby[5]; char znaki[10]; float tab[12];

3 Tablice (2) Sama deklaracja tablicy danych nie przyporządkowuje jej żadnych konkretnych wartości, a jedynie rezerwuje odpowiednio wielki obszar pamięci operacyjnej na te dane. Tablice mogą być tworzone z następujących elem. : typów podstawowych (int, float, double, char, itp.), typów wyliczeniowych, wskaźników, innych tablic, klas obiektów,

4 Tablice (3) Tablica zadeklarowana jako: int liczby[5]; składa się z 5 elementów zawierających wartości typu całkowitego tj. int. Do poszczególnych elementów możemy odnieść się przy użyciu indeksów: liczby[0] – pierwszy element tablicy, liczby[1] – drugi element tablicy, liczby[2] – trzeci element tablicy, liczby[3] – czwarty element tablicy, liczby[4] – piąty element tablicy. Jak widzimy, dla tablicy pięcioelementowej, pierwszy element tablicy ma indeks 0, a ostatni indeks 4.

5 Tablice (4) Wartości poszczególnym elementom tablicy możemy nadać poprzez zwykły operator przypisania: liczby[0] = 10; liczby[1] = 13; liczby[2] = 7; liczby[3] = 13; liczby[4] = 2; W szczególności już w czasie deklaracji typu tablicowego możemy dokonać jednoczesnego przypisania danych do tablicy: Int liczby[5] = {10, 13, 7, 13, 2}

6 Tablice (5) Operacje tablicowe wykonywane są często z użyciem pętli for. Wynika to z tego, że zazwyczaj znana jest liczba elementów tablicy, a zatem pętla for doskonale nadaje się do tego typu zadań. Przykład wyświetlający 10 elementów tablicy liczbowej: int tab[10] = {2,4,6,8,11,13,15,17,19,21}; for (int i=0; i<10; i++) cout << Element << i << = << tab[i] << endl;

7 Tablice (6) Przykład wyświetlający 10 elementów tablicy liczbowej w odwrotnej kolejności: int tab[10] = {2,4,6,8,11,13,15,17,19,21}; for (int i=9 i>=0; i--) cout << Element << i << = << tab[i] << endl; Przykład wyświetlający co drugi element tablicy liczbowej: int tab[10] = {2,4,6,8,11,13,15,17,19,21}; for (int i=0; i<10; i=i+2) cout << Element << i << = << tab[i] << endl;

8 Tablice (7) Tak jak wspomnieliśmy na początku, elementy tablicy umieszczone są jako kolejne komórki pamięci. Rozmiar tych komórek jest uzależniony od typu danych umieszczonych w tablicy. Przykładowo rozmiar jednego elementu typu całkowitego int wynosi 4 bajty. 10 elementowa tablica liczb zajmować będzie zatem 40 bajtów. Przy założeniu, że komórki zajmować będą miejsce w pamięci od adresu x, ich rozmieszczenie będzie następujące: adres x – pierwsza komórka z elementem tab[0] x+4 – druga komórka z elementem tab[1] x+8 – trzecia komórka z elementem tab[2] … x+36 – dziesiątą komórka z elementem tab[9] Podobnie byłoby w przypadku innych typów danych, należałoby jedynie zmienić rozmiar komórek.

9 Tablice (8) Poniższy program wyświetla adresy kolejnych komórek pamięci w których umieszczono elementy tablicy zawierającej 10 liczb całkowitych. int tab[10] = {2,4,6,8,11,13,15,17,19,21}; for (int i=0; i<10; i++) cout << Element << i << = << (long)&tab[i] << endl; Adres elementu wyznaczany jest za pomocą operatora &. Ponieważ domyślnie zwracana jest liczba w notacji szesnastkowej (heksadecymalnej) dodatkowo dokonujemy konwersji na typ long.

10 Ćwiczenia (1) 1)Napisz program pobierający z klawiatury 10 liczb całkowitych, a następnie wyświetlający wartość największą i najmniejszą z wczytanych liczb. 2) Napisz program wczytujący z klawiatury 10 liczb całkowitych. Program ma znaleźć drugi co do wielkości wyraz podanego ciągu liczb (czyli liczbę mniejszą od największej liczby występującej w ciągu, ale większą od wszystkich pozostałych). 3) Napisz program pobierający z klawiatury 5 dodatnich liczb rzeczywistych do pierwszej tablicy, a następnie zapisujący do drugiej tablicy kwadraty tych liczb, a do trzeciej tablicy pierwiastki wczytanych liczb. Po zakończeniu przetwarzania należy wyświetlić zawartość wszystkich trzech tablic.

11 Ćwiczenia (2) 4) Wczytać z klawiatury 5 liczb całkowitych, a następnie dokonać zamiany pierwszego z ostatnim elementem (czyli tab[0] z tab[4]). 5) Wczytać z klawiatury 5 liczb całkowitych, a następnie dokonać zamiany kolejności elementów w tablicy na odwrotną tzn. tab[0],tab[1],…,tab[4] na tab[4],tab[3],…,tab[0]. 6) Wczytać z klawiatury 10 liczb całkowitych, a następnie wyświetlić tylko te które są parzyste i znajdują się w przedziale. 7) Zapisz do tablicy 20 elementów ciągu zgodnie z wzorem: S0 = 1, Sn = Sn-1+4. Następnie wyświetl elementy tablicy, ale tylko o parzystych indeksach.

12 Tablice wielowymiarowe (1) Tablice wielowymiarowe w przypadku dwóch wymiarów można porównać do macierzy elementów, które znamy z matematyki albo do współrzędnych dwuwymiarowego układu kartezjańskiego XY. Tablica trójwymiarowa z kolei może być utożsamiona np. z punktem w przestrzeni 3D o współrzędnych (x,y,z). Tablice o więcej niż 3 wymiarach są raczej rzadkością, gdyż korzystanie z nich jest kłopotliwe. Deklaracja tablicy wielowymiarowej ma następującą składnię: typ nazwa[rozmiar_wymiaru_1][rozmiar_wymiaru_2]…[rozmiar_wymiaru_N]; Przykładowo: int tab[2][3] – macierz liczb 2x3, int tab[2][2][2] – trójwymiarowa przestrzeń liczbowa o rozmiarach 2x2x2.

13 Tablice wielowymiarowe (2) Dwuwymiarowa tablica liczb 2x3 (macierz 2x3) x11 x12 x13 x24 x25 x26 Do poszczególnych elementów możemy odwołać się w następujący sposób: tab[0][0] tab[0][1] tab[0][2] tab[1][0] tab[1][1] tab[1][2] Jak widać, pierwszy indeks wskazuje na wiersz w którym znajduje się dany element, a drugi indeks na kolumnę.

14 Tablice wielowymiarowe (3) Przykładowy program będzie wyświetlał zawartość tablicy dwuwymiarowej o rozmiarze 2x3. Wykorzystamy w tym celu zagnieżdżoną pętlę for. Pierwsza z pętli for operująca indeksem i porusza się po wszystkich wierszach (i=0,1). Druga pętla for wykorzystująca indeks j porusza się po wszystkich kolumnach (j=0,1,2). int tab[2][3] = { {1,2,3},{4,5,6} }; for (int i=0; i<2; i++) for (int j=0; j<3; i++) cout << Element [ << i << ][ << j << = << tab[i][j] << endl;

15 Tablice znakowe Tablice znakowe jak wskazuje sama nazwa przechowują ciągi znaków. Tablica znakowa o z góry zadeklarowanym rozmiarze nie zawsze ma wypełnione wszystkie komórki. Koniec tekstu (ciągu znaków) oznaczany jest w tablicy za pomocą wartości NULL. char tekst[20]; W tej tablicy możemy zapisać do 20 znaków. Każda litera tekstu zapisana jest w osobnej komórce tablicy. Oznacza to, że do pierwszej litery możemy odwołać się pisząc tekst[0].

16 Ćwiczenia (3) Napisz program wczytujący zawartość jednej macierzy o rozmiarach 3x3, a następnie wyświetlający sumę wszystkich elementów macierzy oraz element maksymalny i minimalny. Napisz program wczytujący zawartość dwóch macierzy A i B o rozmiarach 2x2 i wpisujący do trzeciej macierzy C sumy poszczególnych elementów macierzy A i B. Napisz program obliczający wyznacznik macierzy o rozmiarze 3x3. Napisz program pytający o dowolny wyraz i wyświetlający 1, 3 i 5 znak tego wyrazu.


Pobierz ppt "Podstawy programowania PP – LAB5 Wojciech Pieprzyca."

Podobne prezentacje


Reklamy Google