1.if … else (jeśli)
Konstrukcja:
/////////////////////////////////////////////////
if(warunek){
Blok instrukcji
}
/////////////////////////////////////////////////
if(warunek){
Blok instrukcji
}
else{
Blok instrukcji
}
/////////////////////////////////////////////////
if(warunek){
Blok instrukcji
} else if(warunek){
Blok instrukcji
} else{
Blok instrukcji
}
Warunek jest to wyrażenie, które może być prawdziwe, wtedy wykonują się instrukcje po if lub fałszywy. Wtedy program opuszcza blok instrukcji po if i „idzie” dalej lub wykonuje się bloki instrukcji po else. Teraz trochę o samym warunku. Warunek może być pojedynczy (x<5) lub złożony (x<5 && x>0). Warunki łączymy w jeden na tej samej zasadzie jak w matematyce, czyli mam do dyspozycji: nawiasy() oraz działania, jak alternatywę, koniunkcję i równość (zapis w C: == ), różność (zapis w C: != ) i negację (zapis w C: ! ). Wiem, że znasz lepsze spędzenie wieczorów niż z matematyką, więc mam tu drobną podpowiedź: :)
alternatywa / suma / „lub” / OR (zapis w C: || )
Blok instrukcji
}
/////////////////////////////////////////////////
if(warunek){
Blok instrukcji
} else if(warunek){
Blok instrukcji
} else{
Blok instrukcji
}
Warunek jest to wyrażenie, które może być prawdziwe, wtedy wykonują się instrukcje po if lub fałszywy. Wtedy program opuszcza blok instrukcji po if i „idzie” dalej lub wykonuje się bloki instrukcji po else. Teraz trochę o samym warunku. Warunek może być pojedynczy (x<5) lub złożony (x<5 && x>0). Warunki łączymy w jeden na tej samej zasadzie jak w matematyce, czyli mam do dyspozycji: nawiasy() oraz działania, jak alternatywę, koniunkcję i równość (zapis w C: == ), różność (zapis w C: != ) i negację (zapis w C: ! ). Wiem, że znasz lepsze spędzenie wieczorów niż z matematyką, więc mam tu drobną podpowiedź: :)
alternatywa / suma / „lub” / OR (zapis w C: || )
OR
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
Koniunkcja / iloczyn / „i” / AND (zapis w C: && )
AND
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
1
|
W C za warunek może robić również sama liczba lub adres(w sumie to też liczba), czyli np.:
if(1){
printf(„Warunek
zawsze prawdziwy ”);
}
/////////////////////////////////////////////////
if(5)
printf(„Tak
też może być”);
// Blok instrukcji który ma tylko jedną instrukcję nie musi mieć klamer
// Blok instrukcji który ma tylko jedną instrukcję nie musi mieć klamer
/////////////////////////////////////////////////
int x=12;
if(x)
printf(„Warunek
również prawdziwy”);
/////////////////////////////////////////////////
int x=0;
if(x)
printf(„Warunek
ZAWSZE
nie spełniony”);
/////////////////////////////////////////////////
int *p=NULL;
// wskaźnik ale o tym później
if(!p) printf(„TEN
WARUNEK SIĘ WYKONA”);
/////////////////////////////////////////////////
!!! Uwaga praktyczna !!!
int
x=5;
if(x=0)
printf(„Warunek
ZAWSZE
nie
spełniony”);
else
printf(„%d”,x);//
na ekran konsola wyświetli 0,
dlaczego?
Podpowiedź: (=) != (==).
Jeśli chcemy by wyrażenie
zawsze było prawdziwe możemy wpisać: true lub 1,
jeśli ma być zawsze fałszywe false lub 0.
Trzeba zwrócić jeszcze
uwagę na to, jak te warunki są sprawdzane. Chodzi o to, że (1 &&
0) to nie zawsze to samo co (0 && 1), choć wynik daje
taki sam.
Sprawdzamy pierwszy warunek i
jeśli mam koniunkcje (&&), a ten warunek daje 1
(true) to sprawdzamy drugi warunek, natomiast jeśli ten
pierwszy warunek daje nam 0 (false), to drugi warunek
już nie jest sprawdzany, bo wiadomo że całość da 0.
Dzieje się tak ponieważ wystarczy jedno 0 aby koniunkcja
dała 0. Natomiast jeśli mamy alternatywę (||) dzieje
się odwrotnie wystarczy jedna 1 i reszta warunków jest już
nie sprawdzana, bo wynik i tak będzie 1.
Niby to takie nic, ale jednak
bardzo się przydaje, ponieważ jak pierwszy warunek daje 0 to
ten drugi może być już nie sprawdzalny i mamy błąd pamięci. A
tak unikamy takiej sytuacji i wszystko działa jak powinno. Później
będziemy z tego często korzystać.
2.
switch … case (rozbudowany
if)
Konstrukcja:
/////////////////////////////////////////////////
switch (wyrażenie){
case
wartosc1: { //
wykona się jeśli
wartosc1 == wyrażenie
Blok instrukcji
}
case
wartosc2: { // wykona
się jeśli wartosc2 == wyrażenie
Blok instrukcji
}
default:{ //
wykona się jeśli
nic się nie spełni wyżej
Blok instrukcji;
}
}
/////////////////////////////////////////////////
jeśli [wartosc1 ==
wyrażenie] to wykona się pierwszy case, ALEi reszta też
się wykona do samego dołu, czyli również z default. Aby
tego uniknąć należy dać instrukcję break na końcu bloku
instrukcji, wtedy program przerwie wykonywanie switch i
„pójdzie” dalej.
np.:
int x=3;
switch(x){
case 1: printf(„nie
wykona się ”);
case 3:
printf(„wykona się ”);
case 5: {
printf(„też
się wykona ”);
break;
}
case 14: printf(„już
się nie wykona ”);
}
Brak komentarzy:
Prześlij komentarz