07 - Villkorssatser
Villkorssatser
Den här delen handlar om sk villkorssatser, eller if-satser som man också brukar säga.
If är Engelska och betyder "om" på Svenska som du säkert vet. Och det är just detta "om" som villkorssatser går ut på. Om variabeln ett_tal är lika med 7 då ska programmet göra si och så, annars ska det göra något annat.
Vi börjar med en liten kodsnutt som vanligt:
#include<iostream>
using std::cout;
using std::cin;
int main()
{
int ett_tal;
cout << "Skriv ditt favorit tal: ";
cin >> ett_tal;
if (ett_tal == 17)
{
cout << "Du valde det minst slumpmässigt valda talet enligt svenska hackademins ordlista!\n";
}
else
{
cout << "Du valde ett aldeles vanligt tal.\n";
}
return 0;
}
-
Som du ser så behöver man inte skriva using std::if; eftersom if-satser tillhör kärnan i språket och inte är funktioner som tillhör något bibliotek.
Först i main-funktionen så skapar vi en int variabel och ber vi användaren välja ett värde som lagras i denna variabel.
På 14:e raden i main-funktionen så kontrollerar vi om variabeln ett_tal är lika med 17, om den är det så kommer koden mellan klamrarna precis under if att köras, annars kommer koden mellan klamrarna efter else att köras (else betyder "annars" på Engelska).
Glöm inte att det ska vara två stycken likhetstecken (==) annars tror programmet att ett_tal ska tilldelas värdet 17 och det vill vi inte, vi vill göra en jämförelse.
Det finns en hel del andra sk jämförelseoperatorer än just ==. Här kommer en lista:
- == Om värdet till vänster är lika med värdet till höger så körs koden mellan if-klamararna.
- != Om värdet till vänster inte är lika med värdet till höger så körs koden mellan if-klamararna.
- >= Om värdet till vänster är större eller lika med värdet till höger så körs koden mellan if-klamararna.
- <= Om värdet till vänster är mindre eller lika med värdet till höger så körs koden mellan if-klamararna.
Det finns ännu fler med de här är de mest användbara. If-satser kan bli ganska komplexa då man kan ha flera olika villkor i samma sats. Dessutom kan man "nästla" (lägga innuti varandra) if-satser vilket gör det ännu mera komplext, då gäller det att skjuta in texten med mellanslag och tabbar så man ser vad man gör!
Här kommer ett kodexempel med en lite mera komplex if-sats:
#include<iostream>
using std::cout;
using std::cin;
int main()
{
int ett_tal;
cout << "Skriv in ett tal ";
cin >> ett_tal;
if (ett_tal == 42)
{
cout << "Du har kommit fram till svaret på meningen med livet, universum och allting!\n";
}
else if (ett_tal == 4711)
{
cout << "Du valde ett riktigt ovanligt tal din rackare!\n";
}
else
{
cout << "Du valde ett aldeles vanligt tal.\n";
}
return 0;
}
-
Denna kod gör något väldigt snarlikt den förra, fast den har ytterligare ett specialfall. Man precis så många spcialfall man vill, och de gör man genom att lägga till ytterligare "else if"-rader med olika jämförelser.
Villkorssatser med flera uttryck
Här kommer en komplicerad if-sats till:
#include<iostream>
using std::cout;
using std::cin;
int main()
{
int ett_tal;
cout << "Skriv in ditt favorittal: ";
cin >> ett_tal;
if (ett_tal == 7 || ett_tal == 9 || ett_tal == 12)
{
cout << "Jag känner någon som har samma favorittal som du!"</span>;
}
else
{
cout << "Jag känner ingen som har samma favorittal som du.";
}
return 0;
}
-
Som du ser så är if-satsen lite utökad. Det finns flera saker att testa om dom är sanna.
Man kan kombinera flera olika jämförelser i samma if-sats genom att använda olika specialoperatorer.
Operatorn || betyder "eller", om variabeln ett_tal är lika med 7 ELLER om variabeln ett_tal är lika med 9 ELLER om variabeln ett_tal är lika med 12 så kommer koden att köras.
Precis som med jämförelse operatorerna så finns det flera alternativ här, dom två vanligaste är:
Om en if-sats ser ut så här if (ett_tal == 7 && ett_tal_till == 7) så måste både variabeln ett_tal och variabeln ett_tal_till måste vara lika med 7.
Du bör verkligen ta dig lite tid att experimentera runt med de olika operatorerna du lärt dig hittils så du förstår till fullo hur de fungerar. Sätt upp lite olika scenarion och testa hur det fungerar.
Här kommer en liten överkurs i if-satser men som kan vara bra att kunna ändå. Här är en komplicerad if-sats:
#include<iostream>
using std::cout;
using std::cin;
int main()
{
int ett_tal;
int ett_tal_till;
cout << "Skriv in ett tal: ";
cin >> ett_tal;
cout << "Skriv in ett tal till: ";
cin >> ett_tal_till;
if ((ett_tal == 7 || ett_tal == 9) && (ett_tal_till == 11 || ett_tal_till == 13))
{
cout << "Lösenordet är godkänt!";
}
else
{
cout << "Fel lösenord!";
}
return 0;
}
-
Denna kod kommer att godkänna "lösenordet" (dvs de två siffrorna man matade in i början) om den första är antingen 7 eller 9 samt den andra är 11 eller 13.
Som sagt, lek runt lite med if-satser och försök förstå hur det hänger ihop, detta är en mycket grundläggande bit i programmering med C++ och det har otroligt stora användningsområden. Nästan alla program du kommer skriva kommer att använda sig utav if-satser.
Källa: http://blinkenlights.se/