wtorek, 22 marca 2016

LEKCJA 3 - INSTRUKCJE WARUNKOWE

Autor: Faradaj

Wiemy już, co to są zmienne, więc czas się wziąć za sposoby za pomocą, których komputer będzie reagował na wprowadzane przez nas dane zamiast tylko powtarzać je lub edytować wg jednej reguły.
Do tego właśnie służą instrukcje warunkowe.  Są to jedne z najbardziej intuicyjnych spraw w cpp.
Zacznijmy od krótkiego przykładu prostego programu:
Program prosi nas o padanie liczby, a następnie odpowiada, czy liczba jest 1 czy nie.
I właśnie tu widzimy, czym jest instrukcja warunkowa.
Instrukcje warunkowe w cpp przybierają następującą formę:
if(warunek)
{
//polecenia jeśli warunek jest spełniony
}
else
{
// polecenia w przeciwnym wypadku
}
Więc w naszym przypadku program będzie wyglądał tak:

Zapewne, wiele osób zwróci uwagę, czemu są dwa znaki równa się ;) Już tłumaczę. W języku cpp pojedynczy znak równa się jest zarezerwowany dla operacji przypisania (np. int i=0; Tworzę zmienną i, której przypisuję wartość 0), podczas gdy dwa znaki równa się znaczą ma równą wartość. Operatory porównania w C++:
Operator
Znaczenie
==
Jest sobie równe
> 
Jest większe niż
< 
Jest mniejsze niż
!=
Jest różne od

Zrobiliśmy –więc- program, który ma jeden warunek. Nasuwa się teraz pytanie, jak dodać więcej warunków. Logicznie rzecz ujmując, skoro if znaczy jeżeli a else w przeciwnym razie, można stworzyć operator else if() i rzeczywiście można.  Poniżej można zobaczyć, standardowy szablon, jak korzystać z wielu instrukcji warunkowych:

Warto pamiętać, że cpp jest bardzo przyjaznym językiem i zawsze stara się zrozumieć nadawcę poleceń, dlatego wychodzi do nas z bardzo kuszącą ofertą:
W przypadku, gdy warunek jest spełniony i chcemy wykonać tylko jedno polecenie np. coutować jedynkę ;), możemy opuścić klamry, tzn. napisać:
if(liczba==1)
cout<<”jeden”;
Udogodnienie działa również dla else, else if i wielu innych poleceń, których wkrótce się nauczymy. To:
else if(liczba==2)
cout<<”dwojka”;
else
cout<<”nie jeden nie dwa”;
Znaczy to samo co to:
else if(liczba==2)
{
cout<<”dwojka”;
}
else
{
cout<<”nie jeden nie dwa”;
}

Warto jednak wiedzieć jeszcze jedną rzecz. Co jeśli mamy więcej niż jeden warunek do umieszczenia w ifie? Nic trudniejszego możemy to zrobić za pomocą specjalnych operatorów:

Operator
Użycie
Znaczenie
&&
if(a>2&&a<7 o:p="">
Jeżeli a większe od dwóch ORAZ mniejsze od 7. Tylko gdy oba warunki są spełnione.
||
if(a>7||a<4 o:p="">
Jeżeli a większe od siedmiu LUB mniejsze od 4. Jeśli spełniony choć jeden warunek.

Ogarniamy już ify i elsy, więc przejdźmy do kolejnych poleceń warunkowych, których możliwość użycia daje na cpp – a mianowicie do instrukcji switch(wybór). Jego składnia wygląda następująco:

W wykorzystaniu zamiast wybor wstawia się nazwę wcześniej utworzonej i podanej zmiennej dowolnego typu. A więc nasz poprzedni program mógłby wyglądać tak:

Widzimy przy okazji wadę tego rozwiązania. Możemy utworzyć mnóstwo wyborów, ale nie ma przeciwnego wypadku. Tak samo można wykorzystywać zamiast liczb: znaki czy wyrazy. Np. mini kalkulator na caseach:
#include
#include

using namespace std;

int main()
{
    int liczba,liczba2;
    float wynik=0;
    char znak;
    cin>>liczba;
    cin>>znak;
    cin>>liczba2;
    switch(znak)
    {
    case '+':
        wynik=liczba+liczba2;
    break;
    case '-':
        wynik=liczba-liczba2;
    break;
    case 'x':
        wynik=liczba*liczba2;
    break;
    case '*':
        wynik=liczba*liczba2;
    break;
    case '/':
        wynik=liczba/liczba2;
    break;
    case ':':
        wynik=liczba/liczba2;
    break;
    }
    cout<<" = "<

    getchar();
    return 0;
}

Zwracajmy zawsze uwagę czy po case daliśmy apostrofy, cudzysłowy czy nic w zależności od typu zmiennej. Przypomnienie: zmienne liczbowe – nic , łańcuchy znaków –cudzysłowy, pojedyncze znaki apostrofy. Uczniowie często zapominają o tym, a następnie doszukują się błędów. Unikajmy tego.

Zadanie:
1.       Napisz kalkulator, w którym znak mnożenia jest zastąpiony wyrazem: razy, znak dzielenia: przez, znak dodawania: plus, znak odejmowania: minus, znak potęgowania do.
2.       Napisz program, który sprawdzi: czy dana liczba jest parzysta, nieparzysta, podzielna przez 3 i większa od 21.

3.       Napisz program, w którym sprawdzisz która liczba jest większa i podasz odpowiedź: pierwsza lub druga. 

Brak komentarzy:

Prześlij komentarz