pętla While dla początkujecego :)

0

Witam, dzisiaj dostałem książkę Rusz Głową - JAVA i zacząłem swoją przygodę z programowaniem, natomiast nie rozumiem warunków przy funkcji while. Czy znacie jakieś szczegółowo opisane materiały które mi wszystko dokładnie wytłumaczą?

przy zad.

int x = 0;
int y = 0;
while ( x < 5 ) {
x = x+1;
y = y+x;

System.out.printIn(x + " " + y + +" ");
x = x + 1;

strasznie jest dużo tych warunków, na jakie mam zwracać uwagę, w jakiej kolejności? w książce nie było szczegółowo rozpisanego przykładu z adnotacjami niestety, dlatego będę was nękał tutaj :P ale chętniej bym dobrał się do jakiegoś b. dobrego poradnika Javy.. zawsze to lepiej mieć kilka źródeł wiedzy :)

z góry bardzo dziękuje za pomoc i przepraszam, za tak banalne pytanie :)

2

Jest tu tylko 1 warunek: x musi być mniejsze niż 5. Pętla while sprawdza warunek w nawiasie i jeżeli jest spełniony to wykonuje instrukcje w klamerkach { } - w Twoim przykładzie nie ma klamry zamykającej, gdzieś zgubiłeś. Klamra otwierająca jest zawsze po nawiasie z warunkiem - w tej samej linii, lub następnej. Po zakończeniu wszystkich instrukcji w bloku (w klamrach), sprawdza jeszcze raz, czy x jest mniejsze niż 5 i znów wykonuje kod w klamrach i tak w koło Macieju. Kiedy warunek nie będzie spełniony to kod w klamrach się nie wykona i zaczną się wykonywać instrukcje następujące po klamrze zamykającej.

Nie znam zbyt dobrze Javy, ale te 2 plusy obok siebie wyglądają podejrzanie:

System.out.printIn(x + " " + y + +" ");

0

Tak jak przedmówca napisał, brakuje Ci klamry zamykającej, a to gdzie byłaby umieszczona ma ogromny wpływ na ostateczny wynik działania programu.
Korekty wymagają dwie rzeczy. Pierwsza, pętla while jest instrukcją, a nie funkcją. Druga, w pętlach i warunkach wykonywana jest instrukcja bezpośrenio za warunkiem. Np.

if ( <tutaj jakis="jakis" warunek="warunek">)
<tutaj instrukcja, która zostanie wykonana jeżeli powyższy warunek jest spełniony>

albo for:

for ( <tutaj warunki pętli for> )
<tutaj instrukcja, która zostanie wykonana jeżeli powyższy warunek jest spełniony>

i while podobnie. I teraz jaką formę może mieć właśnie ta instrukcja <tutaj instrukcja, która zostanie wykonana jeżeli powyższy warunek jest spełniony>? Dwojaką,
(poprawiam przedmówcę) w javie, podobnie jak w C czy C++, tak naprawdę blok instrukcji zawartych między nawiasami klamrowymi, czyli '{' oraz '}' jest traktowany jako jedna instrukcja. Czyli jeżeli chcemy w warunku if lub jakiejś pętli wykonać kilka instrukcji to musimy je zawrzeć w nawiasach klamrowych. Jeżeli chcemy wykonać tylko jedną instrukcję to możemy nawiasy klamrowe pominąć całkowicie. Np.:

import java.util.*;

public class PetlaWhile
{
    public static void main(String a[])
    {
        int x = 0;

        while (x < 5)
            System.out.println("x = " + x++);
    }
}

zadziała tak samo jak:

import java.util.*;

public class PetlaWhile
{
    public static void main(String a[])
    {
        int x = 0;

        while (x < 5)
        {
            System.out.println("x = " + x++);
        }
    }
}

Jestem zupełnie początkujący, jeżeli się pomyliłem to proszę bardziej doświadczonych o korektę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1