Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
Pętle FOR i macierze PDF Drukuj Email
Ocena użytkowników: / 4
SłabyŚwietny 
Instrukcje dodatkowe - Programowanie w języku JAVA
Wpisany przez Administrator   

Z tej lekcji dowiesz się:

  • co to są macierze
  • kiedy stosujemy macierze
  • co to są pętle (iteracje)
  • kiedy stosujemy pętle
  • jak stosować pętlę "for"

Nauczysz się:

  • stosować macierze w języku Java
  • stosować pętle "for" w języku Java

 

 

Co to są macierze?

Zobacz poniższy przykład:

 

5  7  3  4  5  8  0  1  3  2  1

 

To, co wypisane jest powyżej to zbiór cyfr. Co więcej, zbiór ten jest uporządkowany, czyli każdy element tego zbioru ma swoją wartość ale także ma swoje miejsce w kolejności.

Np. element o indeksie 6 (indeks to numer obiektu) ma wartość 8.

 

 

Rozmiar tej macierzy wynosi 11 (tyle elementów ona zmieści)

Jest to przykład macierzy 1-wymiarowej.

 

Skoro jest macierz 1-wymiarowa to pewnie jest też 2-wymiarowa. Poniżej przedstawiam przykład:

 

6  3  6  3  7  1  3  9  6

3  4  8  3  4  6  1  8  9

6  8  0  3  5  6  7  8  9

1  7  9  3  6  8  9  1  0

 

Poniższa macierz ma wymiary 9 na 4  (9 elementów w rzędzie razy cztery rzędy.

Każdy z elementów można wskazać podając jego współrzędne, np element o współrzędnych [5,3] ma wartość 5.

 

Zauważ, że w macierzy 2-wymiarowej potrzebne są aż 2 indeksy. (indeks kolumny i indeks wiersza lub odwrotnie, zależnie od przyjętego kanonu)

Zauważ też, że macierz 2 wymiarowa musi być regularna tzn., że wszystkie wiersze muszą być tej samej długości.

Macierze wykorzystywane są do przechowywania zbioru danych tego samego typu (u nas są to liczby całkowite) w sposób uporządkowany (czyli taki, gdzie każdy element ma swoje miejsce, swój adres czy swoje współrzędne).

 

W programowaniu macierze wykorzystywane są bardzo często, jednym z najbardziej rozpoznawalnych przykładów może być arkusz kalkulacyjny, którego działanie opiera się na macierzy.

Obsługa macierzy (szczególnie tych dużych, które nieraz liczą tysiące elementów mogłaby być bardzo żmudna i podatna na błędy.

Wyobraź sobie sytuację, w której macierz 10-elementową musisz wyzerować (wypełnić elementami o wartości 0). Pisząc kod "na piechotę" musielibyśmy napisać 10 linijek kodu, w każdej linijce kolejny element byłby zerowany. Zobaczmy to na przykładzie:

 

Uruchom program NetBeans

Klikamy kolejno File > New Project

W oknie wybieramy Odpowiednio Java oraz Java Application

Klikamy na Next

Podajemy nazwę programu: matrix i klikamy na Finish

 

W głównej klasie programu wpisujemy następujący kod:

 

Własnie nauczyliśmy się deklarować zmianną tablicową (linijka 18) oraz odwoływać do poszczególnych elementów tablicy (linijki 19028).

Oczywiście zamiast liczb całkowitych (int) tablica może zawierać elementy innego typu (np.: liczby zmiennoprzecinkowe (float) lub ciągi znaków (napisy: String), lub choćby nawet inne tablice, ale o tym kiedy indziej.

Teraz sprawdźmy, czy program działa; każmy mu wyświetlić wartość dowolnego elementu,, np. element 7 w kolejności:

W tym celu:

1) W linijce nr 30 wpisujemy komendę wyświetlającą informację o elemencie o indeksie 6 (licząc z zerem jest to siódmy element)

2) Klikamy na zieloną strzałkę, która uruchamia program

3) Zaprogramowany komunikat pojawia się w dolnej części okna

Aby kod programu zajmował mniej miejsca usuwamy komentarze ("wyszarzone" napisy znajdujące się między znakami /*  a  */)

Ilość kodu zmniejszyła się do 21 linijek. Teraz spróbujemy napisać ten program używając tzw. pętli, czyli powtarzających się instrukcji wykonujących podobne zadania:

Program "robi" dokładnie to samo z tym, że zajmuje tylko 14 linijek (różnica 7 linijek no i eliminacja wielu potencjalnych literówek). Wyobraź sobie jaki zysk byłby przy pisaniu programu dla tablicy 1000 elementowej! W przypadku pętli program liczyłby... nadal 14 linijek, natomiast pisząc go na piechotę liczyłby, na oko około 1011 linijek. (w tym 1000 linijek na podstawianie wartości zero dla każdego elementu).

Przyjrzyjmy się jednak samej konstrukcji pętli:

for (int=0; i<10; i++) { << czytamy to jako: dla każdego elementu o indeksie i liczącym od zero dopóki i jest mniejsze od 10, przy czym za każdym razem i zwiększa się o 1 wykonuj następujące operacje:

matrix[i] = 0; <<  czytamy jako:za  element o indeksie równym i (czyli dla kolejnym przebiegów: i=0, i=1, i=2 itd.) podstaw zero

} << koniec bloku pętli (nieraz pętla ma wiele linijek kodu, ale na końcu blok linijek kodu "zamykany" jest takim nawiasem

 

Mało tego: używając pętli sprawimy, że program wyświetli wartość wszystkich elementów po kolei. W tym celu zmodyfikujemy 10 linijkę i w miejsce tego zapisu wpiszmy:

 

Zadania do przećwiczenia nowych umiejętności:

 

1) Zmodyfikuj program tak, aby rozmiar tablicy wynosił 1000.

2) Zmodyfikuj program, aby każdy element miał wartość o 1 większą, więc: matrix1[0] = 0, matrix1[1]=1 itd. az do 1000-go elementu.

3) Zmodyfikuj program tak, aby każdy kolejny element był dwa razy większy (poczynając od matrix[0]=1, a więc matrix1[1] = 2, matrix1[2] = 4 itd.

4) Napisz program, który:

a) tworzy 10-elementową tablicę znaków (char)

b) wypełnia ją znakiem "r"

c) za pomocą pętli wyświetla wszystkie znaki

 

5) Zadanie dla ambitnych (na 6 z aktywności z informatyki): Napisz program, który:

a) tworzy macierz dwuwymiarową 5x5 liczb całkowitych

b) wypełnia tą macierz liczbą "27"

c) wyświetla po kolei wszystkie elementy