![]() |
![]() ![]() ![]() ![]() ![]() Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek |
Instrukcja warunkowa (ang. conditional instruction) służy do tworzenia rozgałęzień w programach. Instrukcja ta posiada następującą składnię:
if
(warunek) instrukcja1; else
instrukcja2;
warunek | - | jest wyrażeniem, które może przyjmować wartość 0 - wtedy
jest traktowane jako niespełnione, fałszywe, albo wartość różną od 0 - wtedy
jest traktowane jako spełnione, prawdziwe. W warunkach często stosuje się
operatory porównań: < <= == >= > != - różny Operatory porównań zwracają wartość 0, jeśli porównanie jest negatywne, lub wartość 1, jeśli porównanie jest pozytywne. Wartości 0 i 1 w języku C++ mogą być reprezentowane stałymi false (0) i true (1). Przykłady:
|
instrukcja1 | - | instrukcja wykonywana, gdy warunek ma wartość różną od 0, czyli gdy jest prawdziwy (true) |
instrukcja2 | - | instrukcja wykonywana, gdy warunek ma wartość równą 0,
czyli gdy jest fałszywy (false). Człon z else może być pominięty, jeśli nasz
algorytm nie przewiduje wykonania żadnej operacji przy fałszywym warunku.
Wtedy instrukcja warunkowa upraszcza się do postaci: if(warunek) instrukcja; |
Jeśli w instrukcji warunkowej if musimy wykonać więcej niż jedną operację, to stosujemy tzw. instrukcję złożoną, czyli grupę instrukcji objętych klamrami:
{
inst1;
inst2;
...;
}
Składnia instrukcji if będzie następująca:
if
(warunek)
{
instrukcje wykonywane, gdy warunek jest różny od zera
}
else
{
instrukcje wykonywane, gdy warunek jest równy zero
}
Poniżej przedstawiamy kilka prostych przykładów użycia instrukcji warunkowej.
// Większa z dwóch liczb // (C) I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a,b; cout << "Wyszukiwanie wiekszej z dwoch liczb\n" "-----------------------------------\n\n"; // odczytujemy liczby a i b cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << endl; // na wyjście wyprowadzamy większą liczbę cout << "Wieksze jest "; if(a > b) cout << "a = " << a; else cout << "b = " << b; cout << endl << endl; system("pause"); return 0; } |
Wyszukiwanie wiekszej z dwoch liczb ----------------------------------- a = 3 b = 10 Wieksze jest b = 10 Aby kontynuować, naciśnij dowolny klawisz . . . |
// Badanie znaku liczby // (C) I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a; cout << "Badanie znaku liczby calkowitej\n" "-------------------------------\n\n"; // odczytujemy liczbę a cout << "a = "; cin >> a; cout << endl; // badamy znak liczby a if(a == 0) cout << "a = 0"; else if(a < 0) cout << "a < 0"; else cout << "a > 0"; cout << endl << endl; system("pause"); return 0; } |
Badanie znaku liczby calkowitej ------------------------------- a = -13421 a < 0 Aby kontynuować, naciśnij dowolny klawisz . . . |
// Porządkowanie dwóch liczb // (C) I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a,b,x; cout << "Porzadkowanie dwoch liczb\n" "-------------------------\n\n"; // odczytujemy liczby a i b cout << "Wpisz dwie dowolne liczby\n\n"; cin >> a >> b; cout << endl; // Jeśli liczby a i b są w złej kolejności, zamieniamy je if(a > b) { x = b; b = a; a = x; } cout << a << " " << b << endl << endl; system("pause"); return 0; } |
Porzadkowanie dwoch liczb ------------------------- Wpisz dwie dowolne liczby 32 18 18 32 Aby kontynuować, naciśnij dowolny klawisz . . . |
Instrukcja wyboru służy do warunkowego wykonywania operacji w zależności od wartości pewnego wyrażenia. Składnia jest następująca:
switch
(wyrażenie)
{
case w_1: inst;
inst;
...;
case w_2: inst;
inst;
...;
...
...
...
case w_n: inst;
inst;
...;
default: inst;
inst;
...;
}
wyrażenie | - | jest wyrażeniem dającym w wyniku liczbę całkowitą |
w_i | - | liczby całkowite, etykiety, które mogą być wartością wyrażenia |
inst; | - | instrukcje wykonywane wewnątrz instrukcji switch. |
Instrukcja switch działa w sposób następujący:
Komputer oblicza wartość wyrażenia umieszczonego w nawiasach instrukcji switch. Następnie sprawdza, któraś z opcji case w_i posiada etykietę w_i o takiej wartości. Jeśli tak, to następuje wykonanie instrukcji umieszczonych za dwukropkiem etykiety. Jeśli żadna z etykiet nie odpowiada wartości wyrażenia, to zostają wykonane instrukcje umieszczone za dwukropkiem opcji default.
Instrukcje wewnątrz switch są wykonywane jedna za drugą. Na końcu zwykle umieszcza się instrukcję break, która powoduje przerwanie wykonywania instrukcji w swich - jeśli tego nie zrobimy, to wykonanie przejdzie do kolejnego bloku case (czasem jest to potrzebne).
Przykład:
switch(a)
{
case 1: b++; break;
case 2: b--; break;
case 3: b += 2; break;
case 4: b -= 2; break;
default: b = 0;
}
W powyższym przykładzie wykonywane są różne operacje w zależności od zawartości zmiennej a:
jeśli a = 1, to b zostaje zwiększone o 1
jeśli a = 2, to b zostaje zmniejszone o 1
jeśli a = 3, to b zostaje zwiększone o 2
jeśli a = 4, to b zostaje zmniejszone o 2
dla każdej innej wartości a zmienna b jest zerowana
Instrukcję wyboru switch w całości można zrealizować za pomocą odpowiednich instrukcji warunkowych if. Na przykład powyższa konstrukcja może być zrealizowana następująco:
if(a == 1) b++;
else if(a == 2) b--;
else if(a == 3) b += 2;
else if(a == 4) b -= 2;
else b
= 0;
Jednakże przyznasz, iż switch jest w takich wypadkach bardziej czytelne.
Instrukcję switch często wykorzystuje się do reakcji na wybór opcji dokonany przez użytkownika. Poniższy program jest prostym kalkulatorem 4 działaniowym.
// Kalkulator // (C) I LO w Tarnowie //------------------------ #include <iostream> #include <iomanip> using namespace std; int main() { int w; double a = 0,b = 0; cout << setprecision(4) << fixed; do { cout << "Kalkulator (C)2008 I-LO\n" "-----------------------\n\n" "a = " << setw(15) << a << endl << "b = " << setw(15) << b << endl << endl << "Opcje:\n" "------\n" "0 - koniec\n" "1 - nowe a i b\n" "2 - a + b\n" "3 - a - b\n" "4 - a * b\n" "5 - a / b\n\n" "Twoj wybor (0...5) : "; cin >> w; cout << endl; switch(w) { case 1: cout << "a = "; cin >> a; cout << "b = "; cin >> b; break; case 2: cout << "a + b = " << a + b << endl; break; case 3: cout << "a - b = " << a - b << endl; break; case 4: cout << "a * b = " << a * b << endl; break; case 5: cout << "a / b = " << a / b << endl; break; } cout << endl << endl; } while(w); return 0; } |
Kalkulator (C)2008 I-LO ----------------------- a = 234.0000 b = 33.4500 Opcje: ------ 0 - koniec 1 - nowe a i b 2 - a + b 3 - a - b 4 - a * b 5 - a / b Twoj wybor (0...5) : 5 a / b = 6.9955 |
![]() | I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe