If you're seeing this message, it means we're having trouble loading external resources on our website.

Om du är bakom en brandvägg eller liknande filter, vänligen se till att domänerna *. kastatic.org och *. kasandbox.org inte är blockerade.

Huvudinnehåll

Sammanfattning: Logik och if-satser

Det här är en översikt över vad vi gick genom om logik och If satser.
Vi vill ofta kunna göra saker "villkorligt" i våra program - vi vill kunna säga "om det här är sant, gör X, men om den här andra saken är sann, så gör Y." Det är som när vi vaknar på morgonen - "Om det regnar ute, så tar vi ett paraply, men om det är soligt så plockar vi ett par solglasögon." Vi kan göra saker villkorligt i våra program också, genom att använda if satser och if/else satser tillsammans med villkorsuttryck.
En if sats berättar för programmet att det ska köra ett kodblock beroende på om ett villkor är sant. I koden nedan skriver vi bara ut ett meddelande om x är större än 0:
var x = 5;

if (x > 0) {
  text('x is a positive number!', 200, 200);
}
Eftersom x är 5, som är större än 0, så vi ser meddelandet på duken. Om vi ​​ändrade x till -1 så skulle inte meddelandet visas alls, eftersom x inte är större än 0.
X> 0 är vad som kallas ett betingat uttryck - vilket betyder att det är ett uttryck som är antingen true eller false. När ett värde är antingen true eller false, kallar vi det för en boolean (i motsats till ett tal eller en sträng). Vi kan till exempel visa det betingade uttrycket:
text(x > 0, 200, 200); // Visar "true"
Vi kan också lagra den i en variabel och visa den sedan:
var isPositive = x > 0;
text(isPositive, 200, 200);
Här kan vi säga att isPositive lagrar ett booleskt värde, eftersom det är antingen true eller false, beroende på vad vi satt x till.
Det finns många sätt formulera betingade uttryck som kan utvärderas till true eller false, eftersom vi har många jämförelseoperatörer. Här är de mest populära eller vanligaste:
Här har vi en variabel och de vanligaste jämförelseoperatörerna och uttrycken med dem som skulle vara sanna i det här fallet:
var myAge = 28;
OperatörBetydelseSanna uttryck
===Strikt jämlikhetmyAge === 28
!==Strikt olikhetmyAge! == 29 28 !== 29
>Större änmyAge > 2528 > 25
>=Större än eller lika medmyAge >= 2828 >= 28
<Mindre änmyAge < 3028 < 30
<=Mindre än eller lika medmyAge <= 2828 <= 28
Det är väldigt lätt att blanda ihop tilldelnings-operatören (=) med likhetsoperatören (===), eftersom de båda använder samma tecken, men de fungerar helt olika. Tilldelnings-operatören ändrar värdet på variabeln, medan likhetsoperatören bara kommer att läsa av värdet på variabeln och se om det är lika med någonting. Till exempel:
var x = 2 + 2; // Sätter x till 4

if (x === 4) { // Ställer fråga; "är x lika med 4?"
   text("yep, 2 + 2 = 4!", 200, 200);
}
Vi vill ibland göra flera jämförelser tillsammans i ett och samma uttryck, och det är det vi har logiska operatörer till. Dessa operatörer låter oss uttrycka oss i stil med "om både x OCH y är sanna" eller "om ANTINGEN x eller y är sanna" i våra program.
Om vi ​​vill kräva att två villkor båda är sanna kan vi använda && operatören (som motsvarar "och"):
var graderOutside = 70;
var numberOfClouds = 50;
if (graderOutside > 70 && numberOfClouds < 5) {
  text("Wear sun screen!", 200, 200);
}
Vi använder det ofta i våra program här för att kontrollera att en användares musposition ligger inuti en rektangel (som en knapp), och då behöver vi flera && operatörer:
rect(100, 50, 100, 100); 

mousePressed = function() {
    if (mouseX > 100 && mouseX < 200 && mouseY > 50 && mouseY < 150) {
      text("You pressed it!", 80, 75);
    }
};
Om vi ​​bara bryr oss om att minst ett av alla villkor är sant kan vi använda operatören || (som motsvarar "eller"):
var graderOutside = 70;
var numberOfClouds = 50;
if (graderOutside > 70 || numberOfClouds < 5) {
  text("Wear sun screen if it's hot outside or there aren't many clouds!", 200, 200);
}
Vi kan använda både && och || i samma uttryck, om vi har ett mycket komplext tillstånd att kontrollera. Använd bara parentes till grupputtryck så att programmet inte är förvirrat om vilken ordning du vill utvärdera dem:
var myAge = 28;
if ((myAge >= 0 && myAge < 3) || myAge > 90) {
  println('You\'re not quite in your peak.');
}
Låt oss nu återvända till if satser. Vi vill ofta köra ett särskilt kodblock ifall ett villkor inte var sant - i så fall lägger vi till en else sats.
var age = 28;
if (age > 16) {
  println('Yay, you can drive!');
} else {
  println('Sorry, but you have ' + (16 - age) + ' years until you can drive.');
}
Ibland vill vi kolla flera villkor och göra olika saker baserade på olika värden, då kan vi använda else if:
var age = 20;
if (age >= 35) {
  println('You can vote AND hold any place in government!');
} else if (age >= 30) {
  println('You can vote AND run for the Senate!');
} else if (age >= 18) {
  println('You can vote!');
} else {
  println('You have no voice in government!');
}
Du kan kontrollera hur många villkor du vill - se bara till att alla dina villkor är nåbara. Testa koden genom att ändra variabler tills alla blocken har körts någon någon så att du vet att allt fungerar.
Som vi kan se så är villkor en viktig del av programmeringen och låter oss skapa mycket kraftfullare och flexibla program.

Vill du gå med i konversationen?

Inga inlägg än.
Förstår du engelska? Klicka här för att se fler diskussioner på Khan Academys engelska webbplats.