Aleksander Skała
Kraków 27 kwietnia 2010 r.
Zadania – pętla
for
:
Napisać program na odliczanie od 1 co trzecią liczbę,
przez 30 razy, na koncu komunikat 'koniec'
Wykorzystać do iteracji pętlę
for
public static void main(String[] args)
{
//odliczanie od 1 co trzecią liczbę, przez 30 razy, na
końcu komunikat 'koniec'
for(int i=1, k=1; k<=30; k++, i=i+3)
{
System.out.println(i);
}
System.out.println("
koniec
");
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Pętla for
Jest to pętla policzalna, czyli taka o której możemy
powiedzieć iż wykona się określoną liczbę razy. Ogólna
składnia pętli for wygląda w następujący sposób:
for
(int i = 0; warunek; krok){
//instrukcja
}
Uwagi:
Zmienną
i
nazywamy Indeksem Pętli
Indeks może być dowolnym typem prostym poza boolean. Typ char
ograniczony jest do 65535
Warunek może być dowolnym zdaniem logicznym, należy jednak
zwrócić uwagę by nie była to tautologia. Otrzymamy wtedy pętle
nieskończoną
Krok pętli może być dowolny jednak tak samo jak w przypadku
warunku trzeba uważać na zapętlenie się programu.
Pętla
for
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Gdzie należy używać pętli for?
Pętla ta najlepiej sprawdza się gdy chcemy wykonać jakąś
operację na wszystkich elementach tablicy. Jest naturalną
i najbardziej czytelną dla tego typu problemów:
int[] a = new int[] { 1, 2, 3 };
for
(int i = 0; i < a.length; i++) {
System
.out.println(a[i]);
}
Pętla
for
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Zadania – pętla
while
:
Napisać program na odliczanie od 1 co trzecią liczbę, przez 30 razy, na
koncu komunikat 'koniec'
Wykorzystać pętlę
while
public static void main(String[] args)
{
//odliczanie od 1 co trzecią liczbę, przez 30 razy, na końcu
komunikat 'koniec'
int k=30;
int i=1;
while(k>0)
{
System.out.println(i);
i = i+3;
k--;
}
System.out.println("
koniec
");
}
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Pętle while i do while
Pętle niepoliczalne, czyli takie o których nie
możemy powiedzieć ile razy się wykonają.
Ich składnia jest następująca:
while
(warunekLogiczny){
//instrukcja
}
/*---------*/
do
{
//instrukcja
}
while
(warunekLogiczny)
Uwagi:
warunek musi być zmienną boolean lub obiektem
klasy java.lang.Boolean.
Pętla
while
i
do while
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Obie te konstrukcje są bardzo podobne do siebie. Główna różnica
polega na tym iż w pętli
while
warunek jest sprawdzany przed
wykonaniem instrukcji, a w pętli
do while
po wykonaniu
instrukcji. Oznacza to, że pętla do while wykona się co najmniej
jeden raz. Poniższy przykład ilustruje różnicę:
int i = 0;
while
(i < 1) {
System
.out.println("while " + i);
i++;
}
do
{
System
.out.println("do while " + i);
i++;
}
while
(i < 1);
Pętla
while
i
do while
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Druga pętla wykona się pomimo iż warunek, 1 < 1, nie jest
prawdziwy.
Kiedy używać? Najczęściej pętla while jest wykorzystywana do
nasłuchiwania.
Polega to na stworzeniu nieskończonej pętli, najczęściej podając
jako argument słowo true, której zadaniem jest wykonywanie
danego kodu nasłuchującego. Prosty szablon animacji:
(animuj){
//kod animacji
}
Dopóki flaga animuj jest prawdziwa wykonywana jest animacja.
Podobnie ma się sprawa z prostymi serwerami które nasłuchują
w ten sposób na portach.
Pętla
while
i
do while
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public class KlasaA
{
public static void main(String[] args)
{
//program drukuje zadany napis
System.out.print("
Witaj na zajęciach z JAVY
");
}
}
Zadania – drukowanie napisu
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public class KlasaA
{
public static void main(String[] args)
{
//program który sprawdza czy podane imie jest zgodne z wzorcem
System.out.print("
Podaj imie:
");
Scanner wejscie1 = new Scanner(System.in);
String imie = wejscie1.nextLine();
System.out.println(imie.length());
if
(imie.toLowerCase().equals("olek"))
{
System.out.println("OK");
}
else
{
System.out.println("zle");
}
}
Zadania – sprawdzanie wzorca
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Instrukcje sterujące
W momencie gdy chcemy, aby program dokonał wyboru jednej z
dróg na podstawie prawdziwości jakiegoś warunku logicznego
możemy użyć jednej z dwóch instrukcji sterujących. Jeżeli chcemy,
aby wybór został dokonany na podstawie stanu obiektu możemy użyć
przełącznika - switch.
Instrukcja
if
/
if else
Najprostszą instrukcją warunkową jest instrukcja if:
if
(warunek_logiczny){
//instrukcje wykonane jeżeli warunek jest PRAWDZIWY
}
odmianą tej instrukcji jest instrukcja
if else
:
if(warunek_logiczny){
//instrukcje wykonane jeżeli warunek jest PRAWDZIWY
}
else{
//instrukcje wykonane jeżeli warunek jest FAŁSZYWY
}
Instrukcje sterujące
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Napisać program obliczający „podatek”
Sekwencja programu:
pobranie liczby od użytkownika:
jeżeli mniej niż 6000 to zwraca 0
podatek w przedziale 6000 - 20000 - 10%
w przedziale 20000-40000 - 20%
powyżej 40000 - 40%
Program – „podatki”
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public static void main(String[] args)
{
while
(true)
{
System.out.print("Podaj liczbe: ");
Scanner wejscie1 = new Scanner(System.in);
double zarobki = wejscie1.nextFloat();
if
(zarobki < 6000)
{
System.out.println("0");
}
else if
(zarobki < 20000)
{
double podatek = (zarobki - 6000)*0.2;
System.out.println(podatek);
}
else if
(zarobki < 40000)
{
double podatek = (zarobki - 20000)*0.3;
System.out.println(podatek);
}
else
{
double podatek = (zarobki - 40000)*0.4;
System.out.println(podatek);
}
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Napisać program sprawdzający
zakres liczby podanej przez
użytkownika
Sekwencja programu:
pobranie liczby od użytkownika:
jeżeli jest od 0 do 10 to napisać:
'ok'
jeżeli mniejsza od 0 to napisać:
'za malo'
jeżeli większa od 10:
'za duzo‘
jeżeli nie podano liczby -
'podaj liczbe'
Program – „sprawdzanie liczby”
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public static void main(String[] args)
{
boolean koniec=true;
while
(koniec)
{
System.out.print("Podaj liczbe: ");
Scanner wejscie1 = new Scanner(System.in);
String wej = wejscie1.nextLine();
int liczba = Integer.parseInt(wej);
if
(liczba < 0)
{
System.out.println("Za malo");
}
else
if(liczba < 10)
{
System.out.println("OK");
koniec = false;
}
else
{
System.out.println("Za duzo");
}
}
}