Странице

недеља, 26. јануар 2014.

Programiranje 103: Biti ili ne biti?

Kaže žena programeru: "Idi u prodavnicu i kupi flašu mleka. Ako imaju jaja kupi deset"
Programer se vraća kući sa deset flaša mleka i kaže: "Imali su jaja".

Znate li kako ste došli na ovu stranicu? Da klikom na dugme, ali šta se tu desilo? Vaš računar je prvo proverio gde se nalazi vaš miš, a onda proveri da li je dugme na mišu pritisnuto. Kada su oba uslova ispunjila vi ste se našli na ovoj stranici (naravno, sačekali ste malod a se učita stranica)!
Za sada nećemo tražiti položaj miša već će mo za neki broj koji pretstavljaja koordinate vašeg miša  u jednoj dimenziji proveriti šta se nalazi na tom mestu. Dakle ako se "miš" nalazi na nekom polju da ispiše određeni tekst. Ovo je veoma jednostavno sa if-om. if (eng. ako) se koristi na sledeći način:

if(uslov)
{


}

else
{


}


Vrlo je lako zaključiti kako ovo radi, ali hajde da prodjemo. U zagradi se nalazi "uslov", on je tačan kad god promenljiva koja se nalazi tu nije jednaka nuli onda se odvija deo koda unutar vitičastih zagrada, u suprotnom se taj deo preskače i prelazi se na deo izmedju drugih vitičastih zagrada. Uzmimo primer da je učitan neki broj mousex. Želimo da nam ispisuje "Tu je" ako se mousex nalazi na koordinati 4, a u suprotnom da nam ispisuje "Nije tu". 

#include<iostream>

#include<stdlib.h>
using namespace std;


int main()
{

    int mousex;
    cin>>mousex;
    if(mousex==4)
    {
        cout<<"Tu je!\n";
    }

    else
    {

        cout<<"Nije tu :(\n";

    }
    getch();
    return 0;
}


Pomenuo sam da je uslov promenljiva, jedan od bitnih promenljivih jeste bool, to je promenljiva koja ima samo dva stanje, true (1) i false(0). Sada možete primetiti i znak ==, on pretstavlja jednakost u C++-u. Kada je leva strana jednaka desnoj oda će taj izraz imati vrednost 1 u suprotnom će imati vrednost 0.

Recimo da imamo ovaj problem: ako je mousex 1 da ispiše "File", ako je 2 da ispiše "Edit", ako je 3 da ispiše "View" u suprotnom da ispiše "Nothing". to se radi tako što se nakon else napiše novi if i novi uslov. Za ovaj primer do bi izgledalo ovako:

if(mousex==1)
{

    cout<<"File\n";
}

else if(mousex==2)
{

    cout<<"Edit\n";
}


else if(mousex==3)
{


    cout<<"View\n"
}

else
{

    cout<<"Nothing\n";
}


Ovo izgleda veoma dugo i lako za grešku, zato C++ ima Switch naredbu. Ona radi isto kao prethodan kod samo što ima drugačiji zapis i koristi se ovako (bez "..."):

switch(promenljiva)
{
case vrednost1:
    kod1;
    break;
case vrednost2:
    kod2;
    break;
...
default:
    kodd;

    break;
}


Prođimo i kroz ovaj kod. "promenljiva" je promenljiva čiju vrednost hoćemo da uporedimo, to nam kaže switch. "case" proverava da li je ona jednaka vrednosti "vrednost1". Kod je ono što se desi ako je vrednost promenljive jednak vrednosti vrednost1. "break" je tu da prekine pretragu, pošto switch prolazi kroz svaki case i proverava, break ga prekida u tom proveravanju ukoliko je našao ono što traži. Nakon toga se dešava isto za vrednost2 i naravno može da ima onoliko vrednosti koliko može variabla da ima. Na kraju se stavlja default, koje služi kao poslednje else u skupu if-ova, ako promenljiva nije jednaka nijednoj od vrednosti. Pogledajte kako izgleda prethodni kod sa if-ovima preko switch-a:

switch(mousex)
{
case 1:
    cout<<"File\n";
    break;
case 2:
    cout<<"Edit\n";
    break;
case 3:
    cout<<"View\n";
    break;
default:
    cout<<"Nothing\n";
    break;
}

U dužim kodovima sa više slučajeva i više linija koda za svaki od slučajeva ovo može da pomogone. Pri korišćenju if-ova nisu potrebne vitičaste zagrade ukoliko se radi samo o jednoj linij, tako da se prethodni primer može čak i lepše zapisati sa if-ovima:

if(mousex==1)cout<<"File\n";
else if(mousex==2)cout<<"Edit\n";
else if(mousex==3)cout<<"View\n";
else cout<<"Nothing";

To je bilo najbitnije o uslovima u C++-u. Probajte da sklopite kod zajedno ukoliko nemožete pogledajte kod ovde:

#include<iostream>

#include<stdlib.h>
using namespace std;


int main()
{

    int mousex;
    cin>>mousex;
    if(mousex==1)cout<<"File\n";
    else if(mousex==2)cout<<"Edit\n";
    else if(mousex==3)cout<<"View\n";
    else cout<<"Nothing";
    getch();
    return 0;


}

Нема коментара:

Постави коментар