Witam w kolejnym poście!!! Ostatnio dowiedziałeś się między innymi co to jest stała, jak nazywać zmienne oraz do czego nam służy biblioteka Math. Dziś dowiemy się co to jest pętla i do czego ją wykorzystujemy.
public class New{
public static void main(String[] args){
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
if(garnekNieJestPelen==true)//Fikcyjna zmienna która przechowuje stan garnka
{
wezZiemniaka();//Komendy wyssane prze ze mnie z palca
obierajZiemniaka();
}
}
}
Oczywiście ten kod nie będzie działał bo nie istnieje a ni zmienna garnekJestPelen, ani polecenie wezZiemnika, ale ten kod w pełni oddaje o co chodzi. Przecież takie rozwiązanie jest głupie i kompletnie nie praktyczne powiedzmy że mamy nieco większy taki kod jak na górze napisałem i powiedzmy, że to samo działanie wykonuje się 100 razy. Ale mamy wielki gar w którym się zmieści więcej niż sto ziemniaków i co wtedy??? I tu z pomocą przychodzą nam pętle. Dzięki nim możemy wykonywać te same działania przez okres w którym jakiś warunek jest prawdziwy(coś takiego jak if) bądź określoną liczbę powtórzeń. W programowaniu mamy 3 podstawowe typy pętli while, do-while i for.
public class New{
public static void main(String[] args){
while(/*warunek*/){
//dopóki warunek prawdziwy zawartość klamerek będzie się wykonywać
}
}
}
Można zobaczyć, że while to jest coś takiego jak if tylko zawartość whila jest powtarzana dopóki warunek jest prawdziwy.
public class New{
public static void main(String[] args){
double liczbaPseudolosowa = Math.Random();
System.out.println(liczbaPseudolosowa);
}
}
A teraz stwórzmy program który przerwie swoje działanie w momencie wylosowania liczby 5. Ponadto wartość wylosowaną zapiszemy w incie.
public class New{
public static void main(String[] args){
int wylosowanaLiczba = 0;
while(wylosowanaLiczba!=5)//Wykonuj póki wylosowana liczba jest != 5
{
wylosowanaLiczba = (int)(1+Math.random()*10);//losuj z zakresu liczb 1-10
System.out.println(wylosowanaLiczba);
}
}
}
Wyjaśnijmy co oznacza (int)(1+Math.random()10). Najpierw (1+Math.random()10). Komenda Math.random losuje nam wartość w double mniejszą od 1. Do wylosowanej wartości dodajemy 1 czyli ustalamy, że minimalną wartością jest 1. Jeżeli byśmy dodali np. 3 to minimalną wartością byłaby liczba 3. A teraz co oznacza * 10. Ustalamy wartość maksymalną. Teraz rozważmy taki zestaw liczb minimalną liczbą będzie 1, maksymalna 10, a liczbą wylosowaną będzie 0.999. Czyli wzór będzie wyglądał tak 1+0.99910(Pamiętajmy kolejność wykonywania działań).
No to rozwiążmy to:
1 + 0.999 * 10=1+9.99 = 10.99
Zaraz, zaraz czemu 10.99 przecież maksymalną liczbą powinna być 10. Więc teraz przejdźmy do (int) bo w tym właśnie leży rozwiązanie zagadki. Tym czymś mówimy żeby wynik który powstał traktową jako inta czyli logicznie by było żeby 10.99 jako int wynosiło 11. Ale nie pisząc (int) komputer ucina nam końcówkę i wychodzi 10. Trochę to skomplikowane, ale nie trzeba tego do końca rozumieć :) . Tak już w programowaniu jest, że przychodzi taka chwila oświecenia i coś czego nie rozumiałeś staje się jasne.
public class New{
public static void main(String[] args){
int wylosowanaLiczba = 5;
do//powtórzy raz kod w klamerkach
{
wylosowanaLiczba = (int)(1+Math.random()*10);
System.out.println(wylosowanaLiczba);
}while(wylosowanaLiczba!=5);//I będzie powtarzał dopóki warunek jest prawdziwy
}
}
Rzeczy w klamerkach zostaną wykonana minimum raz. I będą powtarzane tak jak w whilu. I tyle.
for(/*zmienna do kontroli pętli*/;/*warunek*/;/*I operacja po wykonaniu jednego przejścia przez pętlę)
{
//Jeżeli warunek będzie spełniony zawartość pętli zostanie wykonana
}
Trochę tego dużo ale napiszemy kod który będzie odliczał od 1 do 10.
public class New{
public static void main(String[] args){
for(int i = 1;i<=10;i++)
{
System.out.println(i);
}
}
}
O co tu w ogóle biega??? O tuż gdy komputer dochodzi do pętli na samym początku tworzy zmienną "i" oraz przypisuje jej wartość 1. Jeżeli warunek jest prawdziwy wykonuje zawartość klamerek. Po wykonaniu wszystkich komend z klamerek(jednej iteracji) zostaje zmieniona wartość zmiennej i.